mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-10 14:44:58 +00:00
Some more code for Gen 9 abilities
This commit is contained in:
@@ -364,6 +364,61 @@ Battle::AbilityEffects::WeightCalc.add(:LIGHTMETAL,
|
||||
# OnHPDroppedBelowHalf handlers
|
||||
#===============================================================================
|
||||
|
||||
Battle::AbilityEffects::OnHPDroppedBelowHalf.add(:ANGERSHELL,
|
||||
proc { |ability, battler, move_user, battle|
|
||||
next false if !move_user # Not triggered if damage wasn't from a move
|
||||
next false if move_user.index == battler.index # Not triggered by self-injury
|
||||
stat_up = [:ATTACK, 1, :SPECIAL_ATTACK, 1, :SPEED, 1]
|
||||
stat_down = [:DEFENSE, 1, :SPECIAL_DEFENSE, 1]
|
||||
# Check if it will have any effect
|
||||
failed = true
|
||||
(stat_down.length / 2).times do |i|
|
||||
next if !battler.pbCanLowerStatStage?(stat_down[i * 2], battler)
|
||||
failed = false
|
||||
break
|
||||
end
|
||||
(stat_up.length / 2).times do |i|
|
||||
next if !battler.pbCanRaiseStatStage?(stat_up[i * 2], battler)
|
||||
failed = false
|
||||
break
|
||||
end
|
||||
next false if failed
|
||||
# Ability will have an effect; do it
|
||||
battle.pbShowAbilitySplash(battler)
|
||||
# Lower stats
|
||||
show_anim = true
|
||||
(stat_down.length / 2).times do |i|
|
||||
next if !battler.pbCanLowerStatStage?(stat_down[i * 2], battler)
|
||||
if Battle::Scene::USE_ABILITY_SPLASH
|
||||
if battler.pbLowerStatStage(stat_down[i * 2], stat_down[(i * 2) + 1], battler, show_anim)
|
||||
show_anim = false
|
||||
end
|
||||
else
|
||||
if battler.pbLowerStatStageByCause(stat_down[i * 2], stat_down[(i * 2) + 1], battler, battler.abilityName, show_anim)
|
||||
show_anim = false
|
||||
end
|
||||
end
|
||||
end
|
||||
# Raise stats
|
||||
show_anim = true
|
||||
(stat_up.length / 2).times do |i|
|
||||
next if !battler.pbCanRaiseStatStage?(stat_up[i * 2], battler)
|
||||
if Battle::Scene::USE_ABILITY_SPLASH
|
||||
if battler.pbRaiseStatStage(stat_up[i * 2], stat_up[(i * 2) + 1], battler, show_anim)
|
||||
show_anim = false
|
||||
end
|
||||
else
|
||||
if battler.pbRaiseStatStageByCause(stat_up[i * 2], stat_up[(i * 2) + 1], battler, battler.abilityName, show_anim)
|
||||
show_anim = false
|
||||
end
|
||||
end
|
||||
end
|
||||
battle.pbHideAbilitySplash(battler)
|
||||
next false
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
Battle::AbilityEffects::OnHPDroppedBelowHalf.add(:EMERGENCYEXIT,
|
||||
proc { |ability, battler, move_user, battle|
|
||||
next false if battler.effects[PBEffects::SkyDrop] >= 0 ||
|
||||
|
||||
@@ -1591,20 +1591,7 @@ Battle::ItemEffects::AfterMoveUseFromTarget.add(:REDCARD,
|
||||
battle.pbDisplay(_INTL("{1} held up its {2} against {3}!",
|
||||
battler.pbThis, battler.itemName, user.pbThis(true)))
|
||||
battler.pbConsumeItem
|
||||
if user.hasActiveAbility?(:SUCTIONCUPS) && !user.being_mold_broken?
|
||||
battle.pbShowAbilitySplash(user)
|
||||
if Battle::Scene::USE_ABILITY_SPLASH
|
||||
battle.pbDisplay(_INTL("{1} anchors itself!", user.pbThis))
|
||||
else
|
||||
battle.pbDisplay(_INTL("{1} anchors itself with {2}!", user.pbThis, user.abilityName))
|
||||
end
|
||||
battle.pbHideAbilitySplash(user)
|
||||
next
|
||||
end
|
||||
if user.effects[PBEffects::Ingrain]
|
||||
battle.pbDisplay(_INTL("{1} anchored itself with its roots!", user.pbThis))
|
||||
next
|
||||
end
|
||||
next if !user.canBeForcedOutOfBattle?
|
||||
battle.pbRecallAndReplace(user.index, newPkmn, true)
|
||||
battle.pbDisplay(_INTL("{1} was dragged out!", user.pbThis))
|
||||
battle.pbClearChoice(user.index) # Replacement Pokémon does nothing this round
|
||||
|
||||
Reference in New Issue
Block a user