Pokémon in storage no longer recalculate their form

This commit is contained in:
Maruno17
2021-08-30 00:10:31 +01:00
parent 70ef588190
commit c92bb2fb42
6 changed files with 21 additions and 31 deletions

View File

@@ -8,6 +8,7 @@ class Game_Temp
attr_accessor :message_window_showing # message window showing attr_accessor :message_window_showing # message window showing
attr_accessor :common_event_id # common event ID attr_accessor :common_event_id # common event ID
attr_accessor :in_battle # in-battle flag attr_accessor :in_battle # in-battle flag
attr_accessor :in_storage # in-Pokémon storage flag
attr_accessor :battle_abort # battle flag: interrupt attr_accessor :battle_abort # battle flag: interrupt
attr_accessor :battleback_name # battleback file name attr_accessor :battleback_name # battleback file name
attr_accessor :in_menu # menu is open attr_accessor :in_menu # menu is open
@@ -32,6 +33,7 @@ class Game_Temp
@message_window_showing = false @message_window_showing = false
@common_event_id = 0 @common_event_id = 0
@in_battle = false @in_battle = false
@in_storage = false
@battle_abort = false @battle_abort = false
@battleback_name = '' @battleback_name = ''
@in_menu = false @in_menu = false

View File

@@ -50,9 +50,11 @@ end
def pbDayCareDeposit(index) def pbDayCareDeposit(index)
for i in 0...2 for i in 0...2
next if $PokemonGlobal.daycare[i][0] next if $PokemonGlobal.daycare[i][0]
$PokemonGlobal.daycare[i][0] = $Trainer.party[index] pkmn = $Trainer.party[index]
$PokemonGlobal.daycare[i][1] = $Trainer.party[index].level pkmn.heal
$PokemonGlobal.daycare[i][0].heal pkmn.form = 0 if pkmn.isSpecies?(:SHAYMIN)
$PokemonGlobal.daycare[i][0] = pkmn
$PokemonGlobal.daycare[i][1] = pkmn.level
$Trainer.party.delete_at(index) $Trainer.party.delete_at(index)
$PokemonGlobal.daycareEgg = 0 $PokemonGlobal.daycareEgg = 0
$PokemonGlobal.daycareEggSteps = 0 $PokemonGlobal.daycareEggSteps = 0

View File

@@ -190,8 +190,6 @@ class PokemonStorage
else # Copying into box else # Copying into box
pkmn = self[boxSrc,indexSrc] pkmn = self[boxSrc,indexSrc]
raise "Trying to copy nil to storage" if !pkmn raise "Trying to copy nil to storage" if !pkmn
pkmn.time_form_set = nil
pkmn.form = 0 if pkmn.isSpecies?(:SHAYMIN)
pkmn.heal if Settings::HEAL_STORED_POKEMON pkmn.heal if Settings::HEAL_STORED_POKEMON
self[boxDst,indexDst] = pkmn self[boxDst,indexDst] = pkmn
end end
@@ -212,11 +210,7 @@ class PokemonStorage
def pbMoveCaughtToBox(pkmn,box) def pbMoveCaughtToBox(pkmn,box)
for i in 0...maxPokemon(box) for i in 0...maxPokemon(box)
if self[box,i]==nil if self[box,i]==nil
if box>=0 pkmn.heal if box >= 0 && Settings::HEAL_STORED_POKEMON
pkmn.time_form_set = nil if pkmn.time_form_set
pkmn.form = 0 if pkmn.isSpecies?(:SHAYMIN)
pkmn.heal if Settings::HEAL_STORED_POKEMON
end
self[box,i] = pkmn self[box,i] = pkmn
return true return true
end end
@@ -225,11 +219,7 @@ class PokemonStorage
end end
def pbStoreCaught(pkmn) def pbStoreCaught(pkmn)
if @currentBox>=0 pkmn.heal if Settings::HEAL_STORED_POKEMON if @currentBox >= 0
pkmn.time_form_set = nil
pkmn.form = 0 if pkmn.isSpecies?(:SHAYMIN)
pkmn.heal if Settings::HEAL_STORED_POKEMON
end
for i in 0...maxPokemon(@currentBox) for i in 0...maxPokemon(@currentBox)
if self[@currentBox,i]==nil if self[@currentBox,i]==nil
self[@currentBox,i] = pkmn self[@currentBox,i] = pkmn

View File

@@ -137,7 +137,7 @@ class Pokemon
def form def form
return @forced_form if !@forced_form.nil? return @forced_form if !@forced_form.nil?
return @form if $game_temp.in_battle return @form if $game_temp.in_battle || $game_temp.in_storage
calc_form = MultipleForms.call("getForm", self) calc_form = MultipleForms.call("getForm", self)
self.form = calc_form if calc_form != nil && calc_form != @form self.form = calc_form if calc_form != nil && calc_form != @form
return @form return @form

View File

@@ -539,6 +539,7 @@ class PokemonBoxPartySprite < SpriteWrapper
yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2)) yvalues.push(2 + 16 * (i % 2) + 64 * (i / 2))
end end
@pokemonsprites.delete_if { |sprite| sprite && sprite.disposed? } @pokemonsprites.delete_if { |sprite| sprite && sprite.disposed? }
@pokemonsprites.each { |sprite| sprite.refresh if sprite }
for j in 0...Settings::MAX_PARTY_SIZE for j in 0...Settings::MAX_PARTY_SIZE
sprite = @pokemonsprites[j] sprite = @pokemonsprites[j]
if sprite && !sprite.disposed? if sprite && !sprite.disposed?
@@ -1478,6 +1479,7 @@ class PokemonStorageScreen
end end
def pbStartScreen(command) def pbStartScreen(command)
$game_temp.in_storage = true
@heldpkmn = nil @heldpkmn = nil
if command==0 # Organise if command==0 # Organise
@scene.pbStartBox(self,command) @scene.pbStartBox(self,command)
@@ -1636,6 +1638,7 @@ class PokemonStorageScreen
@scene.pbStartBox(self,command) @scene.pbStartBox(self,command)
@scene.pbCloseBox @scene.pbCloseBox
end end
$game_temp.in_storage = false
end end
def pbUpdate # For debug def pbUpdate # For debug
@@ -1724,8 +1727,6 @@ class PokemonStorageScreen
end end
if heldpoke || selected[0]==-1 if heldpoke || selected[0]==-1
p = (heldpoke) ? heldpoke : @storage[-1,index] p = (heldpoke) ? heldpoke : @storage[-1,index]
p.time_form_set = nil
p.form = 0 if p.isSpecies?(:SHAYMIN)
p.heal if Settings::HEAL_STORED_POKEMON p.heal if Settings::HEAL_STORED_POKEMON
end end
@scene.pbStore(selected,heldpoke,destbox,firstfree) @scene.pbStore(selected,heldpoke,destbox,firstfree)
@@ -1770,11 +1771,7 @@ class PokemonStorageScreen
pbDisplay("Please remove the mail.") pbDisplay("Please remove the mail.")
return return
end end
if box>=0 @heldpkmn.heal if Settings::HEAL_STORED_POKEMON if box >= 0
@heldpkmn.time_form_set = nil
@heldpkmn.form = 0 if @heldpkmn.isSpecies?(:SHAYMIN)
@heldpkmn.heal if Settings::HEAL_STORED_POKEMON
end
@scene.pbPlace(selected,@heldpkmn) @scene.pbPlace(selected,@heldpkmn)
@storage[box,index] = @heldpkmn @storage[box,index] = @heldpkmn
if box==-1 if box==-1
@@ -1799,11 +1796,7 @@ class PokemonStorageScreen
pbDisplay("Please remove the mail.") pbDisplay("Please remove the mail.")
return false return false
end end
if box>=0 @heldpkmn.heal if Settings::HEAL_STORED_POKEMON if box >= 0
@heldpkmn.time_form_set = nil
@heldpkmn.form = 0 if @heldpkmn.isSpecies?(:SHAYMIN)
@heldpkmn.heal if Settings::HEAL_STORED_POKEMON
end
@scene.pbSwap(selected,@heldpkmn) @scene.pbSwap(selected,@heldpkmn)
tmp = @storage[box,index] tmp = @storage[box,index]
@storage[box,index] = @heldpkmn @storage[box,index] = @heldpkmn
@@ -1934,6 +1927,7 @@ class PokemonStorageScreen
end end
def pbChoosePokemon(_party=nil) def pbChoosePokemon(_party=nil)
$game_temp.in_storage = true
@heldpkmn = nil @heldpkmn = nil
@scene.pbStartBox(self,1) @scene.pbStartBox(self,1)
retval = nil retval = nil
@@ -1987,6 +1981,7 @@ class PokemonStorageScreen
end end
end end
@scene.pbCloseBox @scene.pbCloseBox
$game_temp.in_storage = false
return retval return retval
end end
end end

View File

@@ -24,9 +24,6 @@ Some abilities have changed effects:
but in earlier Gens they are. but in earlier Gens they are.
Other notes: Other notes:
- In Gen 7+, Shaymin/Hoopa revert their form when withdrawn from storage rather
than when deposited. It still also reverts under other conditions. Shaymin
reverts its form when deposited in the Day Care (all Gens).
- If a battle ends because of Rocky Helmet damage, the side that the Rocky - If a battle ends because of Rocky Helmet damage, the side that the Rocky
Helmet holder is on should lose (Gen 7+) or win (Gen 6-). Helmet holder is on should lose (Gen 7+) or win (Gen 6-).
@@ -164,4 +161,8 @@ What happens to the PP of Iron Head when turned into/from Behemoth Blade/Bash
for Zacian/Zamazenta? It gets decreased to the total PP if it is higher than the for Zacian/Zamazenta? It gets decreased to the total PP if it is higher than the
total PP of the new move, but cannot increase. This is already what happens. total PP of the new move, but cannot increase. This is already what happens.
In Gen 7+, Shaymin/Hoopa revert their form when withdrawn from storage rather
than when deposited. It still also reverts under other conditions. Shaymin
reverts its form when deposited in the Day Care (all Gens).
=end =end