Adds double ability triggers

This commit is contained in:
infinitefusion
2023-05-27 13:49:33 -04:00
parent 1182afbea3
commit 7bbb18ac43
16 changed files with 136 additions and 3 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -318,6 +318,10 @@ class PokeBattle_Battler
return @pokemon.isFusionOf(check_species)
end
def isFusion?()
return @pokemon.isFusion?()
end
# Returns the active types of this Pokémon. The array should not include the
# same type more than once, and should not include any invalid type numbers
# (e.g. -1).

View File

@@ -61,8 +61,10 @@ class PokeBattle_Scene
# Ability splash bars
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
@sprites["abilityBar_#{side}"] = AbilitySplashBar.new(side,@viewport)
@sprites["ability2Bar_#{side}"] = AbilitySplashBar.new(side,@viewport,true) if $game_switches[SWITCH_DOUBLE_ABILITIES]
@sprites["ability2Bar_#{side}"].y = @sprites["ability2Bar_#{side}"].y+30
if $game_switches[SWITCH_DOUBLE_ABILITIES]
@sprites["ability2Bar_#{side}"] = AbilitySplashBar.new(side,@viewport,true)
@sprites["ability2Bar_#{side}"].y = @sprites["ability2Bar_#{side}"].y+30
end
end
end
# Player's and partner trainer's back sprite

View File

@@ -0,0 +1,118 @@
module BattleHandlers
#
# Speed calculation
#
def self.triggerSpeedCalcAbility(ability, battler, mult)
ability1 = ability
ability2 = battler.ability2
calculateAbilitySpeedMultiplier(ability1, battler, mult)
if $game_switches[SWITCH_DOUBLE_ABILITIES]
calculateAbilitySpeedMultiplier(ability2, battler, mult)
end
return mult
end
def self.calculateAbilitySpeedMultiplier(ability, battler, mult)
ret = SpeedCalcAbility.trigger(ability, battler, mult)
return (ret != nil) ? ret : mult
end
#
# Weight calculation
#
def self.triggerWeightCalcAbility(ability, battler, w)
ability1 = ability
ability2 = battler.ability2
calculateWeightAbilityMultiplier(ability1, battler, mult)
if $game_switches[SWITCH_DOUBLE_ABILITIES]
calculateWeightAbilityMultiplier(ability2, battler, mult)
end
return mult
end
def self.calculateWeightAbilityMultiplier(ability, battler, w)
ret = WeightCalcAbility.trigger(ability, battler, w)
return (ret != nil) ? ret : w
end
def self.triggerEOREffectAbility(ability,battler,battle)
ability1 = ability
ability2 = battler.ability2
EOREffectAbility.trigger(ability1,battler,battle)
EOREffectAbility.trigger(ability2,battler,battle)
end
def self.triggerEORGainItemAbility(ability,battler,battle)
ability1 = ability
ability2 = battler.ability2
EORGainItemAbility.trigger(ability1,battler,battle)
EORGainItemAbility.trigger(ability2,battler,battle)
end
def self.triggerCertainSwitchingUserAbility(ability,switcher,battle)
ability1 = ability
ability2 = battler.ability2
ret = CertainSwitchingUserAbility.trigger(ability1,switcher,battle) || CertainSwitchingUserAbility.trigger(ability2,switcher,battle)
return (ret!=nil) ? ret : false
end
def self.triggerCertainSwitchingUserAbility(ability,switcher,battle)
ability1 = ability
ability2 = battler.ability2
ret = CertainSwitchingUserAbility.trigger(ability1,switcher,battle) || CertainSwitchingUserAbility.trigger(ability2,switcher,battle)
return (ret!=nil) ? ret : false
end
def self.triggerTrappingTargetAbility(ability,switcher,bearer,battle)
ability1 = ability
ability2 = battler.ability2
ret = TrappingTargetAbility.trigger(ability1,switcher,bearer,battle) || TrappingTargetAbility.trigger(ability2,switcher,bearer,battle)
return (ret!=nil) ? ret : false
end
def self.triggerAbilityOnSwitchIn(ability,battler,battle)
ability1 = ability
ability2 = battler.ability2
AbilityOnSwitchIn.trigger(ability1,battler,battle)
AbilityOnSwitchIn.trigger(ability2,battler,battle)
end
def self.triggerAbilityOnSwitchOut(ability,battler,endOfBattle)
ability1 = ability
ability2 = battler.ability2
AbilityOnSwitchOut.trigger(ability1,battler,endOfBattle)
AbilityOnSwitchOut.trigger(ability2,battler,endOfBattle)
end
def self.triggerAbilityChangeOnBattlerFainting(ability,battler,fainted,battle)
ability1 = ability
ability2 = battler.ability2
AbilityChangeOnBattlerFainting.trigger(ability1,battler,fainted,battle)
AbilityChangeOnBattlerFainting.trigger(ability2,battler,fainted,battle)
end
def self.triggerAbilityOnBattlerFainting(ability,battler,fainted,battle)
ability1 = ability
ability2 = battler.ability2
AbilityOnBattlerFainting.trigger(ability1,battler,fainted,battle)
AbilityOnBattlerFainting.trigger(ability2,battler,fainted,battle)
end
def self.triggerRunFromBattleAbility(ability,battler)
ability1 = ability
ability2 = battler.ability2
ret = RunFromBattleAbility.trigger(ability1,battler) || RunFromBattleAbility.trigger(ability2,battler)
return (ret!=nil) ? ret : false
end
end

View File

@@ -36,7 +36,16 @@ class ExperimentalOptionsScene < PokemonOption_Scene
proc { |value|
$game_switches[SWITCH_NO_LEVELS_MODE] = value == 0
}, "All Pokémon use their base stats, regardless of levels."
)
),
EnumOption.new(_INTL("Double abilities"), [_INTL("On"), _INTL("Off")],
proc {
$game_switches[SWITCH_DOUBLE_ABILITIES] ? 0 : 1
},
proc { |value|
$game_switches[SWITCH_DOUBLE_ABILITIES] = value == 0
}, "Fused Pokémon have two abilities at the same time"
)
]
return options
end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.