mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Fixed form changing being able to leave a Pokémon knowing the same move twice
This commit is contained in:
@@ -236,13 +236,14 @@ MultipleForms.register(:ROTOM, {
|
|||||||
new_move_id = nil if !GameData::Move.exists?(new_move_id)
|
new_move_id = nil if !GameData::Move.exists?(new_move_id)
|
||||||
raise _INTL("Rotom is trying to forget its last move, but there isn't another move to replace it with.") if new_move_id.nil?
|
raise _INTL("Rotom is trying to forget its last move, but there isn't another move to replace it with.") if new_move_id.nil?
|
||||||
end
|
end
|
||||||
|
new_move_id = nil if pkmn.hasMove?(new_move_id)
|
||||||
# Forget a known move (if relevant) and learn a new move (if relevant)
|
# Forget a known move (if relevant) and learn a new move (if relevant)
|
||||||
if old_move_index >= 0
|
if old_move_index >= 0
|
||||||
old_move_name = pkmn.moves[old_move_index].name
|
old_move_name = pkmn.moves[old_move_index].name
|
||||||
if new_move_id.nil?
|
if new_move_id.nil?
|
||||||
# Just forget the old move
|
# Just forget the old move
|
||||||
pkmn.forget_move_at_index(old_move_index)
|
pkmn.forget_move_at_index(old_move_index)
|
||||||
pbMessage(_INTL("{1} forgot {2}...\1", pkmn.name, old_move_name))
|
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, old_move_name))
|
||||||
else
|
else
|
||||||
# Replace the old move with the new move (keeps the same index)
|
# Replace the old move with the new move (keeps the same index)
|
||||||
pkmn.moves[old_move_index].id = new_move_id
|
pkmn.moves[old_move_index].id = new_move_id
|
||||||
@@ -333,23 +334,46 @@ MultipleForms.register(:KYUREM, {
|
|||||||
"onSetForm" => proc { |pkmn, form, oldForm|
|
"onSetForm" => proc { |pkmn, form, oldForm|
|
||||||
case form
|
case form
|
||||||
when 0 # Normal
|
when 0 # Normal
|
||||||
pkmn.moves.each do |move|
|
pkmn.moves.each_with_index do |move, i|
|
||||||
if [:ICEBURN, :FREEZESHOCK].include?(move.id) && GameData::Move.exists?(:GLACIATE)
|
case move.id
|
||||||
move.id = :GLACIATE
|
when :ICEBURN, :FREEZESHOCK
|
||||||
end
|
next if !GameData::Move.exists?(:GLACIATE)
|
||||||
if [:FUSIONFLARE, :FUSIONBOLT].include?(move.id) && GameData::Move.exists?(:SCARYFACE)
|
if pkmn.hasMove?(:GLACIATE)
|
||||||
move.id = :SCARYFACE
|
pkmn.moves[i] = nil
|
||||||
|
else
|
||||||
|
move.id = :GLACIATE
|
||||||
|
end
|
||||||
|
when :FUSIONFLARE, :FUSIONBOLT
|
||||||
|
next if !GameData::Move.exists?(:SCARYFACE)
|
||||||
|
if pkmn.hasMove?(:SCARYFACE)
|
||||||
|
pkmn.moves[i] = nil
|
||||||
|
else
|
||||||
|
move.id = :SCARYFACE
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
pkmn.moves.compact!
|
||||||
end
|
end
|
||||||
when 1 # White
|
when 1 # White
|
||||||
pkmn.moves.each do |move|
|
pkmn.moves.each do |move|
|
||||||
move.id = :ICEBURN if move.id == :GLACIATE && GameData::Move.exists?(:ICEBURN)
|
case move.id
|
||||||
move.id = :FUSIONFLARE if move.id == :SCARYFACE && GameData::Move.exists?(:FUSIONFLARE)
|
when :GLACIATE
|
||||||
|
next if !GameData::Move.exists?(:ICEBURN) || pkmn.hasMove?(:ICEBURN)
|
||||||
|
move.id = :ICEBURN
|
||||||
|
when :SCARYFACE
|
||||||
|
next if !GameData::Move.exists?(:FUSIONFLARE) || pkmn.hasMove?(:FUSIONFLARE)
|
||||||
|
move.id = :FUSIONFLARE
|
||||||
|
end
|
||||||
end
|
end
|
||||||
when 2 # Black
|
when 2 # Black
|
||||||
pkmn.moves.each do |move|
|
pkmn.moves.each do |move|
|
||||||
move.id = :FREEZESHOCK if move.id == :GLACIATE && GameData::Move.exists?(:FREEZESHOCK)
|
case move.id
|
||||||
move.id = :FUSIONBOLT if move.id == :SCARYFACE && GameData::Move.exists?(:FUSIONBOLT)
|
when :GLACIATE
|
||||||
|
next if !GameData::Move.exists?(:FREEZESHOCK) || pkmn.hasMove?(:FREEZESHOCK)
|
||||||
|
move.id = :FREEZESHOCK
|
||||||
|
when :SCARYFACE
|
||||||
|
next if !GameData::Move.exists?(:FUSIONBOLT) || pkmn.hasMove?(:FUSIONBOLT)
|
||||||
|
move.id = :FUSIONBOLT
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
@@ -543,21 +567,15 @@ MultipleForms.register(:NECROZMA, {
|
|||||||
:SUNSTEELSTRIKE, # Dusk Mane (with Solgaleo) (form 1)
|
:SUNSTEELSTRIKE, # Dusk Mane (with Solgaleo) (form 1)
|
||||||
:MOONGEISTBEAM # Dawn Wings (with Lunala) (form 2)
|
:MOONGEISTBEAM # Dawn Wings (with Lunala) (form 2)
|
||||||
]
|
]
|
||||||
if form == 0
|
if form == 0 # Normal
|
||||||
# Turned back into the base form; forget form-specific moves
|
# Turned back into the base form; forget form-specific moves
|
||||||
move_index = -1
|
form_moves.each do |move|
|
||||||
pkmn.moves.each_with_index do |move, i|
|
next if !pkmn.hasMove?(move)
|
||||||
next if !form_moves.any? { |m| m == move.id }
|
pkmn.forget_move(move)
|
||||||
move_index = i
|
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, GameData::Move.get(move).name))
|
||||||
break
|
|
||||||
end
|
end
|
||||||
if move_index >= 0
|
pbLearnMove(pkmn, :CONFUSION) if pkmn.numMoves == 0
|
||||||
move_name = pkmn.moves[move_index].name
|
else # Dusk Mane, Dawn Wings
|
||||||
pkmn.forget_move_at_index(move_index)
|
|
||||||
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, move_name))
|
|
||||||
pbLearnMove(pkmn, :CONFUSION) if pkmn.numMoves == 0
|
|
||||||
end
|
|
||||||
else
|
|
||||||
# Turned into an alternate form; try learning that form's unique move
|
# Turned into an alternate form; try learning that form's unique move
|
||||||
new_move_id = form_moves[form - 1]
|
new_move_id = form_moves[form - 1]
|
||||||
pbLearnMove(pkmn, new_move_id, true)
|
pbLearnMove(pkmn, new_move_id, true)
|
||||||
@@ -687,21 +705,20 @@ MultipleForms.register(:URSHIFU, {
|
|||||||
|
|
||||||
MultipleForms.register(:CALYREX, {
|
MultipleForms.register(:CALYREX, {
|
||||||
"onSetForm" => proc { |pkmn, form, oldForm|
|
"onSetForm" => proc { |pkmn, form, oldForm|
|
||||||
case form
|
form_moves = [
|
||||||
when 0 # Normal
|
:GLACIALLANCE, # Ice Rider (with Glastrier) (form 1)
|
||||||
if pkmn.hasMove?(:GLACIALLANCE)
|
:ASTRALBARRAGE # Shadow Rider (with Spectrier) (form 2)
|
||||||
pkmn.forget_move(:GLACIALLANCE)
|
]
|
||||||
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, GameData::Move.get(:GLACIALLANCE).name))
|
if form == 0 # Normal
|
||||||
end
|
form_moves.each do |move|
|
||||||
if pkmn.hasMove?(:ASTRALBARRAGE)
|
next if !pkmn.hasMove?(move)
|
||||||
pkmn.forget_move(:ASTRALBARRAGE)
|
pkmn.forget_move(move)
|
||||||
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, GameData::Move.get(:ASTRALBARRAGE).name))
|
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, GameData::Move.get(move).name))
|
||||||
end
|
end
|
||||||
pbLearnMove(pkmn, :CONFUSION) if pkmn.numMoves == 0
|
pbLearnMove(pkmn, :CONFUSION) if pkmn.numMoves == 0
|
||||||
when 1 # Ice Rider
|
else # Ice Rider, Shadow Rider
|
||||||
pbLearnMove(pkmn, :GLACIALLANCE, true)
|
new_move = form_moves[form - 1]
|
||||||
when 2 # Shadow Rider
|
pbLearnMove(pkmn, new_move, true)
|
||||||
pbLearnMove(pkmn, :ASTRALBARRAGE, true)
|
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user