Implemented GameData::Move

This commit is contained in:
Maruno17
2020-11-19 21:00:29 +00:00
parent 52ffae9e8a
commit 3cd8d59918
71 changed files with 1443 additions and 1584 deletions

View File

@@ -270,48 +270,48 @@ MultipleForms.register(:CHERRIM,{
})
MultipleForms.register(:ROTOM,{
"onSetForm" => proc { |pkmn,form,oldForm|
formMoves = [
"onSetForm" => proc { |pkmn, form, oldForm|
form_moves = [
:OVERHEAT, # Heat, Microwave
:HYDROPUMP, # Wash, Washing Machine
:BLIZZARD, # Frost, Refrigerator
:AIRSLASH, # Fan
:LEAFSTORM # Mow, Lawnmower
]
idxMoveToReplace = -1
pkmn.moves.each_with_index do |move,i|
next if !move
formMoves.each do |newMove|
next if !isConst?(move.id,PBMoves,newMove)
idxMoveToReplace = i
break
end
break if idxMoveToReplace>=0
move_index = -1
pkmn.moves.each_with_index do |move, i|
next if !form_moves.any? { |m| move == m }
move_index = i
break
end
if form==0
if idxMoveToReplace>=0
moveName = PBMoves.getName(pkmn.moves[idxMoveToReplace].id)
pkmn.pbDeleteMoveAtIndex(idxMoveToReplace)
pbMessage(_INTL("{1} forgot {2}...",pkmn.name,moveName))
pkmn.pbLearnMove(:THUNDERSHOCK) if pkmn.numMoves==0
if form == 0
# Turned back into the base form; forget form-specific moves
if move_index >= 0
move_name = pkmn.moves[move_index].name
pkmn.pbDeleteMoveAtIndex(move_index)
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, move_name))
pkmn.pbLearnMove(:THUNDERSHOCK) if pkmn.numMoves == 0
end
else
newMove = getConst(PBMoves,formMoves[form-1])
if idxMoveToReplace>=0
oldMoveName = PBMoves.getName(pkmn.moves[idxMoveToReplace].id)
if newMove && newMove>0
newMoveName = PBMoves.getName(newMove)
pkmn.moves[idxMoveToReplace].id = newMove
# Turned into an alternate form; try learning that form's unique move
new_move_id = form_moves[form - 1]
if move_index >= 0
# Knows another form's unique move; replace it
old_move_name = pkmn.moves[move_index].name
if GameData::Move.exists?(new_move_id)
pkmn.moves[move_index].id = new_move_id
new_move_name = pkmn.moves[move_index].name
pbMessage(_INTL("1,\\wt[16] 2, and\\wt[16]...\\wt[16] ...\\wt[16] ... Ta-da!\\se[Battle ball drop]\1"))
pbMessage(_INTL("{1} forgot how to use {2}.\\nAnd...\1",pkmn.name,oldMoveName))
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]",pkmn.name,newMoveName))
pbMessage(_INTL("{1} forgot how to use {2}.\\nAnd...\1", pkmn.name, old_move_name))
pbMessage(_INTL("\\se[]{1} learned {2}!\\se[Pkmn move learnt]", pkmn.name, new_move_name))
else
pkmn.pbDeleteMoveAtIndex(idxMoveToReplace)
pbMessage(_INTL("{1} forgot {2}...",pkmn.name,oldMoveName))
pkmn.pbLearnMove(:THUNDERSHOCK) if pkmn.numMoves==0
pkmn.pbDeleteMoveAtIndex(move_index)
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, old_move_name))
pkmn.pbLearnMove(:THUNDERSHOCK) if pkmn.numMoves == 0
end
elsif newMove && newMove>0
pbLearnMove(pkmn,newMove,true)
else
# Just try to learn this form's unique move
pbLearnMove(pkmn, new_move_id, true)
end
end
}
@@ -396,39 +396,26 @@ MultipleForms.register(:KYUREM,{
"getFormOnLeavingBattle" => proc { |pkmn,battle,usedInBattle,endBattle|
next pkmn.form-2 if pkmn.form>=3 # Fused forms stop glowing
},
"onSetForm" => proc { |pkmn,form,oldForm|
"onSetForm" => proc { |pkmn, form, oldForm|
case form
when 0 # Normal
pkmn.moves.each do |move|
next if !move
if (isConst?(move.id,PBMoves,:ICEBURN) ||
isConst?(move.id,PBMoves,:FREEZESHOCK)) && hasConst?(PBMoves,:GLACIATE)
move.id = getConst(PBMoves,:GLACIATE)
if [:ICEBURN, :FREEZESHOCK].include?(move.id)
move.id = :GLACIATE if GameData::Move.exists?(:GLACIATE)
end
if (isConst?(move.id,PBMoves,:FUSIONFLARE) ||
isConst?(move.id,PBMoves,:FUSIONBOLT)) && hasConst?(PBMoves,:SCARYFACE)
move.id = getConst(PBMoves,:SCARYFACE)
if [:FUSIONFLARE, :FUSIONBOLT].include?(move.id)
move.id = :SCARYFACE if GameData::Move.exists?(:SCARYFACE)
end
end
when 1 # White
pkmn.moves.each do |move|
next if !move
if isConst?(move.id,PBMoves,:GLACIATE) && hasConst?(PBMoves,:ICEBURN)
move.id = getConst(PBMoves,:ICEBURN)
end
if isConst?(move.id,PBMoves,:SCARYFACE) && hasConst?(PBMoves,:FUSIONFLARE)
move.id = getConst(PBMoves,:FUSIONFLARE)
end
move.id = :ICEBURN if move == :GLACIATE && GameData::Move.exists?(:ICEBURN)
move.id = :FUSIONFLARE if move == :SCARYFACE && GameData::Move.exists?(:FUSIONFLARE)
end
when 2 # Black
pkmn.moves.each do |move|
next if !move
if isConst?(move.id,PBMoves,:GLACIATE) && hasConst?(PBMoves,:FREEZESHOCK)
move.id = getConst(PBMoves,:FREEZESHOCK)
end
if isConst?(move.id,PBMoves,:SCARYFACE) && hasConst?(PBMoves,:FUSIONBOLT)
move.id = getConst(PBMoves,:FUSIONBOLT)
end
move.id = :FREEZESHOCK if move == :GLACIATE && GameData::Move.exists?(:FREEZESHOCK)
move.id = :FUSIONBOLT if move == :SCARYFACE && GameData::Move.exists?(:FUSIONBOLT)
end
end
}
@@ -629,34 +616,30 @@ MultipleForms.register(:NECROZMA,{
# Fused forms are 1 and 2, Ultra form is 3 or 4 depending on which fusion
next pkmn.form-2 if pkmn.form>=3 && (pkmn.fainted? || endBattle)
},
"onSetForm" => proc { |pkmn,form,oldForm|
next if form>2 || oldForm>2 # Ultra form changes don't affect moveset
formMoves = [
"onSetForm" => proc { |pkmn, form, oldForm|
next if form > 2 || oldForm > 2 # Ultra form changes don't affect moveset
form_moves = [
:SUNSTEELSTRIKE, # Dusk Mane (with Solgaleo) (form 1)
:MOONGEISTBEAM # Dawn Wings (with Lunala) (form 2)
]
if form==0
idxMoveToReplace = -1
pkmn.moves.each_with_index do |move,i|
next if !move
formMoves.each do |newMove|
next if !isConst?(move.id,PBMoves,newMove)
idxMoveToReplace = i
break
end
break if idxMoveToReplace>=0
if form == 0
# Turned back into the base form; forget form-specific moves
move_index = -1
pkmn.moves.each_with_index do |move, i|
next if !form_moves.any? { |m| move == m }
move_index = i
break
end
if idxMoveToReplace>=0
moveName = PBMoves.getName(pkmn.moves[idxMoveToReplace].id)
pkmn.pbDeleteMoveAtIndex(idxMoveToReplace)
pbMessage(_INTL("{1} forgot {2}...",pkmn.name,moveName))
pkmn.pbLearnMove(:CONFUSION) if pkmn.numMoves==0
if move_index >= 0
move_name = pkmn.moves[move_index].name
pkmn.pbDeleteMoveAtIndex(move_index)
pbMessage(_INTL("{1} forgot {2}...", pkmn.name, move_name))
pkmn.pbLearnMove(:CONFUSION) if pkmn.numMoves == 0
end
else
newMove = getConst(PBMoves,formMoves[form-1])
if newMove && newMove>0
pbLearnMove(pkmn,newMove,true)
end
# Turned into an alternate form; try learning that form's unique move
new_move_id = form_moves[form - 1]
pbLearnMove(pkmn, new_move_id, true)
end
}
})