Added class GameData::Target

This commit is contained in:
Maruno17
2021-02-24 21:05:04 +00:00
parent 823e7eb8ec
commit 87285a2a1f
20 changed files with 301 additions and 184 deletions

View File

@@ -99,31 +99,31 @@ class PokeBattle_Battle
@choices[idxBattler][3] = idxTarget # Set target of move
end
# Returns whether the idxTarget will be targeted by a move with targetType
# Returns whether the idxTarget will be targeted by a move with target_data
# used by a battler in idxUser.
def pbMoveCanTarget?(idxUser,idxTarget,targetType)
return false if PBTargets.noTargets?(targetType)
case targetType
when PBTargets::NearAlly
def pbMoveCanTarget?(idxUser,idxTarget,target_data)
return false if target_data.num_targets == 0
case target_data.id
when :NearAlly
return false if opposes?(idxUser,idxTarget)
return false if !nearBattlers?(idxUser,idxTarget)
when PBTargets::UserOrNearAlly
when :UserOrNearAlly
return true if idxUser==idxTarget
return false if opposes?(idxUser,idxTarget)
return false if !nearBattlers?(idxUser,idxTarget)
when PBTargets::NearFoe, PBTargets::AllNearFoes, PBTargets::RandomNearFoe
return false if !opposes?(idxUser,idxTarget)
return false if !nearBattlers?(idxUser,idxTarget)
when PBTargets::Foe
return false if !opposes?(idxUser,idxTarget)
when PBTargets::NearOther, PBTargets::AllNearOthers
return false if !nearBattlers?(idxUser,idxTarget)
when PBTargets::Other
return false if idxUser==idxTarget
when PBTargets::UserAndAllies
when :UserAndAllies
return false if opposes?(idxUser,idxTarget)
when PBTargets::AllFoes
when :NearFoe, :RandomNearFoe, :AllNearFoes
return false if !opposes?(idxUser,idxTarget)
return false if !nearBattlers?(idxUser,idxTarget)
when :Foe
return false if !opposes?(idxUser,idxTarget)
when :AllFoes
return false if !opposes?(idxUser,idxTarget)
when :NearOther, :AllNearOthers
return false if !nearBattlers?(idxUser,idxTarget)
when :Other
return false if idxUser==idxTarget
end
return true
end

View File

@@ -90,8 +90,8 @@ class PokeBattle_Battle
def pbAutoFightMenu(idxBattler); return false; end
def pbChooseTarget(battler,move)
targetType = move.pbTarget(battler)
idxTarget = @scene.pbChooseTarget(battler.index,targetType)
target_data = move.pbTarget(battler)
idxTarget = @scene.pbChooseTarget(battler.index,target_data)
return false if idxTarget<0
pbRegisterTarget(battler.index,idxTarget)
return true

View File

@@ -27,7 +27,7 @@ class PokeBattle_Battle
next if b.fainted? || !b.opposes?(idxSwitcher) # Shouldn't hit an ally
next if b.movedThisRound? || !pbChoseMoveFunctionCode?(b.index,"088") # Pursuit
# Check whether Pursuit can be used
next unless pbMoveCanTarget?(b.index,idxSwitcher,@choices[b.index][2].target)
next unless pbMoveCanTarget?(b.index,idxSwitcher,@choices[b.index][2].pbTarget(b))
next unless pbCanChooseMove?(b.index,@choices[b.index][1],false)
next if b.status == :SLEEP || b.status == :FROZEN
next if b.effects[PBEffects::SkyDrop]>=0