Added effect of Blunder Policy

This commit is contained in:
Maruno17
2021-09-12 20:13:43 +01:00
parent df7c033a9d
commit f9c6e142e5
6 changed files with 34 additions and 6 deletions

View File

@@ -602,6 +602,9 @@ class PokeBattle_Battler
targets.each do |b| targets.each do |b|
next if !b.damageState.missed || b.damageState.magicCoat next if !b.damageState.missed || b.damageState.magicCoat
pbMissMessage(move,user,b) pbMissMessage(move,user,b)
if user.itemActive?
BattleHandlers.triggerUserItemOnMissing(user.item, user, b, move, hitNum, @battle)
end
break if move.pbRepeatHit? # Dragon Darts only shows one failure message break if move.pbRepeatHit? # Dragon Darts only shows one failure message
end end
move.pbCrashDamage(user) move.pbCrashDamage(user)
@@ -642,7 +645,13 @@ class PokeBattle_Battler
end end
# Messages about missed target(s) (relevant for multi-target moves only) # Messages about missed target(s) (relevant for multi-target moves only)
if !move.pbRepeatHit? if !move.pbRepeatHit?
targets.each { |b| pbMissMessage(move, user, b) if b.damageState.missed } targets.each do |b|
next if !b.damageState.missed
pbMissMessage(move, user, b)
if user.itemActive?
BattleHandlers.triggerUserItemOnMissing(user.item, user, b, move, hitNum, @battle)
end
end
end end
# Deal the damage (to all allies first simultaneously, then all foes # Deal the damage (to all allies first simultaneously, then all foes
# simultaneously) # simultaneously)

View File

@@ -556,6 +556,7 @@ class PokeBattle_Battler
miss = true if !move.hitsFlyingTargets? miss = true if !move.hitsFlyingTargets?
end end
end end
target.damageState.invulnerable = true if miss
if !miss if !miss
# Called by another move # Called by another move
return true if skipAccuracyCheck return true if skipAccuracyCheck

View File

@@ -32,6 +32,7 @@ module BattleHandlers
AbilityOnFlinch = AbilityHandlerHash.new # Steadfast AbilityOnFlinch = AbilityHandlerHash.new # Steadfast
MoveBlockingAbility = AbilityHandlerHash.new MoveBlockingAbility = AbilityHandlerHash.new
MoveImmunityTargetAbility = AbilityHandlerHash.new MoveImmunityTargetAbility = AbilityHandlerHash.new
UserItemOnMissing = ItemHandlerHash.new # Blunder Policy
# Move usage # Move usage
MoveBaseTypeModifierAbility = AbilityHandlerHash.new MoveBaseTypeModifierAbility = AbilityHandlerHash.new
# Accuracy calculation # Accuracy calculation
@@ -234,6 +235,10 @@ module BattleHandlers
return (ret!=nil) ? ret : false return (ret!=nil) ? ret : false
end end
def self.triggerUserItemOnMissing(item, user, target, move, hit_num, battle)
UserItemOnMissing.trigger(item, user, target, move, hit_num, battle)
end
#============================================================================= #=============================================================================
def self.triggerMoveBaseTypeModifierAbility(ability,user,move,type) def self.triggerMoveBaseTypeModifierAbility(ability,user,move,type)

View File

@@ -422,6 +422,22 @@ BattleHandlers::PriorityBracketUseItem.add(:QUICKCLAW,
} }
) )
#===============================================================================
# UserItemOnMissing handlers
#===============================================================================
BattleHandlers::PriorityBracketUseItem.add(:BLUNDERPOLICY,
proc { |item, user, target, move, hit_num, battle|
next if hit_num > 0 || target.damageState.invulnerable
next if ["OHKO", "OHKOIce", "OHKOHitsUndergroundTarget"].include?(move.function)
next if !user.pbCanRaiseStatStage?(:SPEED, user)
battle.pbCommonAnimation("UseItem", user)
user.pbRaiseStatStageByCause(:SPEED, 2, user, user.itemName)
battle.pbDisplay(_INTL("The {1} was used up...", user.itemName))
user.pbHeldItemTriggered(item)
}
)
#=============================================================================== #===============================================================================
# AccuracyCalcUserItem handlers # AccuracyCalcUserItem handlers
#=============================================================================== #===============================================================================

View File

@@ -9,6 +9,7 @@ class PokeBattle_DamageState
attr_accessor :fainted # Whether battler was knocked out by the move attr_accessor :fainted # Whether battler was knocked out by the move
attr_accessor :missed # Whether the move failed the accuracy check attr_accessor :missed # Whether the move failed the accuracy check
attr_accessor :invulnerable # If the move missed due to two turn move invulnerability
attr_accessor :calcDamage # Calculated damage attr_accessor :calcDamage # Calculated damage
attr_accessor :hpLost # HP lost by opponent, inc. HP lost by a substitute attr_accessor :hpLost # HP lost by opponent, inc. HP lost by a substitute
attr_accessor :critical # Critical hit flag attr_accessor :critical # Critical hit flag
@@ -29,6 +30,7 @@ class PokeBattle_DamageState
@unaffected = false @unaffected = false
@protected = false @protected = false
@missed = false @missed = false
@invulnerable = false
@magicCoat = false @magicCoat = false
@magicBounce = false @magicBounce = false
@totalHPLost = 0 @totalHPLost = 0

View File

@@ -388,11 +388,6 @@ When holder's stat(s) is lowered, consume item and holder switches out. Not
triggered by Parting Shot, or if a faster mon's Eject Button/Eject Pack triggered by Parting Shot, or if a faster mon's Eject Button/Eject Pack
triggers. triggers.
Blunder Policy
If holder's move fails its accuracy check, consume item and holder gets +2
Speed. Doesn't trigger if move was an OHKO move, or Triple Kick that hit at
least once.
Pokémon Box Link Pokémon Box Link
Key item, unusable. Enables pressing a button while in the party screen to open Key item, unusable. Enables pressing a button while in the party screen to open
the "Organise Boxes" mode of Pokémon storage. This is disabled at certain times, the "Organise Boxes" mode of Pokémon storage. This is disabled at certain times,