diff --git a/Data/Actors.rxdata b/Data/Actors.rxdata index 7967a5432..41edc8e26 100644 Binary files a/Data/Actors.rxdata and b/Data/Actors.rxdata differ diff --git a/Data/Animations.rxdata b/Data/Animations.rxdata index 8e67182ba..826e1e8a6 100644 Binary files a/Data/Animations.rxdata and b/Data/Animations.rxdata differ diff --git a/Data/Armors.rxdata b/Data/Armors.rxdata index 2249bec14..901f2bb2b 100644 Binary files a/Data/Armors.rxdata and b/Data/Armors.rxdata differ diff --git a/Data/CommonEvents.rxdata b/Data/CommonEvents.rxdata index b48f96eaf..907609ba6 100644 Binary files a/Data/CommonEvents.rxdata and b/Data/CommonEvents.rxdata differ diff --git a/Data/Enemies.rxdata b/Data/Enemies.rxdata index 004ee903d..be622f513 100644 Binary files a/Data/Enemies.rxdata and b/Data/Enemies.rxdata differ diff --git a/Data/Items.rxdata b/Data/Items.rxdata index 3e62ba6d2..fe767fa0b 100644 Binary files a/Data/Items.rxdata and b/Data/Items.rxdata differ diff --git a/Data/MapInfos.rxdata b/Data/MapInfos.rxdata index 7fe1dc91c..119d9912c 100644 Binary files a/Data/MapInfos.rxdata and b/Data/MapInfos.rxdata differ diff --git a/Data/Scripts/018_Alternate battle modes/001_Battle Frontier/005_UI_BattleSwap.rb b/Data/Scripts/018_Alternate battle modes/001_Battle Frontier/005_UI_BattleSwap.rb index 7bc490dcb..b978f15c9 100644 --- a/Data/Scripts/018_Alternate battle modes/001_Battle Frontier/005_UI_BattleSwap.rb +++ b/Data/Scripts/018_Alternate battle modes/001_Battle Frontier/005_UI_BattleSwap.rb @@ -7,7 +7,7 @@ class BattleSwapScene @sprites = {} addBackgroundPlane(@sprites, "bg", "rentbg", @viewport) @sprites["title"] = Window_UnformattedTextPokemon.newWithSize( - _INTL("RENTAL POKéMON"), 0, 0, Graphics.width, 64, @viewport) + _INTL("RENTAL POKÉMON"), 0, 0, Graphics.width, 64, @viewport) @sprites["list"] = Window_AdvancedCommandPokemonEx.newWithSize( [], 0, 64, Graphics.width, Graphics.height - 128 , @viewport) @sprites["help"] = Window_UnformattedTextPokemon.newWithSize("", @@ -29,7 +29,7 @@ class BattleSwapScene @sprites = {} addBackgroundPlane(@sprites, "bg", "swapbg", @viewport) @sprites["title"] = Window_UnformattedTextPokemon.newWithSize( - _INTL("POKéMON SWAP"), 0, 0, Graphics.width, 64, @viewport) + _INTL("POKÉMON SWAP"), 0, 0, Graphics.width, 64, @viewport) @sprites["list"] = Window_AdvancedCommandPokemonEx.newWithSize( [], 0, 64, Graphics.width, Graphics.height - 128, @viewport) @sprites["help"] = Window_UnformattedTextPokemon.newWithSize( diff --git a/Data/Scripts/050_AddOns/DoubleAbilities.rb b/Data/Scripts/050_AddOns/DoubleAbilities.rb index 691b48871..92cec6dfa 100644 --- a/Data/Scripts/050_AddOns/DoubleAbilities.rb +++ b/Data/Scripts/050_AddOns/DoubleAbilities.rb @@ -161,19 +161,25 @@ class Pokemon @ability2 = (value) ? GameData::Ability.get(value).id : value end - def ability2_id - if !@ability2 + + def ability_id + if !@ability sp_data = species_data - abil_index = ability2_index() + abil_index = ability_index if abil_index >= 2 # Hidden ability - @ability2 = sp_data.hidden_abilities[abil_index - 2] - abil_index = (@personalID & 1) if !@ability2 + @ability = sp_data.hidden_abilities[abil_index - 2] + abil_index = (@personalID & 1) if !@ability end - if !@ability2 # Natural ability or no hidden ability defined - @ability2 = sp_data.abilities[abil_index] || sp_data.abilities[0] + if !@ability # Natural ability or no hidden ability defined + if $game_switches[SWITCH_NO_LEVELS_MODE] + @ability = sp_data.abilities[0] || sp_data.abilities[0] + @ability2 = sp_data.abilities[1] || sp_data.abilities[0] + else + @ability = sp_data.abilities[abil_index] || sp_data.abilities[0] + end end end - return @ability2 + return @ability end def ability2_id diff --git a/Data/Scripts/050_AddOns/DoubleAbilitiesHandlersOverrides.rb b/Data/Scripts/050_AddOns/DoubleAbilitiesHandlersOverrides.rb index 9fa1be0be..181b70cf3 100644 --- a/Data/Scripts/050_AddOns/DoubleAbilitiesHandlersOverrides.rb +++ b/Data/Scripts/050_AddOns/DoubleAbilitiesHandlersOverrides.rb @@ -15,29 +15,20 @@ module BattleHandlers end def self.calculateAbilitySpeedMultiplier(ability, battler, mult) - ret = SpeedCalcAbility.trigger(ability, battler, mult) + ability1 = ability + ability2 = battler.ability2 + ret = SpeedCalcAbility.trigger(ability1, battler, mult) || SpeedCalcAbility.trigger(ability2, battler, mult) return (ret != nil) ? ret : mult end - # - # Weight calculation - # - def self.triggerWeightCalcAbility(ability, battler, w) + 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 - + ret = WeightCalcAbility.trigger(ability1,battler,w) || WeightCalcAbility.trigger(ability2,battler,w) + return (ret!=nil) ? ret : w 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) @@ -115,4 +106,284 @@ module BattleHandlers ret = RunFromBattleAbility.trigger(ability1,battler) || RunFromBattleAbility.trigger(ability2,battler) return (ret!=nil) ? ret : false end + ######## + # FROM HERE + # + + def self.triggerAbilityOnHPDroppedBelowHalf(ability,user,battle) + ability1 = ability + ability2 = user.ability2 + ret = AbilityOnHPDroppedBelowHalf.trigger(ability1,user,battle) || AbilityOnHPDroppedBelowHalf.trigger(ability2,user,battle) + return (ret!=nil) ? ret : false + end + + def self.triggerStatusCheckAbilityNonIgnorable(ability,battler,status) + ability1 = ability + ability2 = battler.ability2 + ret = StatusCheckAbilityNonIgnorable.trigger(ability1,battler,status) || StatusCheckAbilityNonIgnorable.trigger(ability2,battler,status) + return (ret!=nil) ? ret : false + end + + def self.triggerStatusImmunityAbility(ability,battler,status) + ability1 = ability + ability2 = battler.ability2 + ret = StatusImmunityAbility.trigger(ability1,battler,status) || StatusImmunityAbility.trigger(ability2,battler,status) + return (ret!=nil) ? ret : false + end + + def self.triggerStatusImmunityAbilityNonIgnorable(ability,battler,status) + ability1 = ability + ability2 = battler.ability2 + ret = StatusImmunityAbilityNonIgnorable.trigger(ability1,battler,status) || StatusImmunityAbilityNonIgnorable.trigger(ability2,battler,status) + return (ret!=nil) ? ret : false + end + + def self.triggerStatusImmunityAllyAbility(ability,battler,status) + ability1 = ability + ability2 = battler.ability2 + ret = StatusImmunityAllyAbility.trigger(ability1,battler,status) || StatusImmunityAllyAbility.trigger(ability2,battler,status) + return (ret!=nil) ? ret : false + end + + def self.triggerAbilityOnStatusInflicted(ability,battler,user,status) + ability1 = ability + ability2 = battler.ability2 + AbilityOnStatusInflicted.trigger(ability1,battler,user,status) + AbilityOnStatusInflicted.trigger(ability2,battler,user,status) + end + + def self.triggerStatusCureAbility(ability,battler) + ability1 = ability + ability2 = battler.ability2 + ret = StatusCureAbility.trigger(ability1,battler) || StatusCureAbility.trigger(ability2,battler) + return (ret!=nil) ? ret : false + end + + + def self.triggerStatLossImmunityAbility(ability,battler,stat,battle,showMessages) + ability1 = ability + ability2 = battler.ability2 + ret = StatLossImmunityAbility.trigger(ability1,battler,stat,battle,showMessages) || StatLossImmunityAbility.trigger(ability2,battler,stat,battle,showMessages) + return (ret!=nil) ? ret : false + end + + def self.triggerStatLossImmunityAbilityNonIgnorable(ability,battler,stat,battle,showMessages) + ability1 = ability + ability2 = battler.ability2 + ret = StatLossImmunityAbilityNonIgnorable.trigger(ability1,battler,stat,battle,showMessages) || StatLossImmunityAbilityNonIgnorable.trigger(ability2,battler,stat,battle,showMessages) + return (ret!=nil) ? ret : false + end + + def self.triggerStatLossImmunityAllyAbility(ability,bearer,battler,stat,battle,showMessages) + ability1 = ability + ability2 = battler.ability2 + ret = StatLossImmunityAllyAbility.trigger(ability1,bearer,battler,stat,battle,showMessages) || StatLossImmunityAllyAbility.trigger(ability2,bearer,battler,stat,battle,showMessages) + return (ret!=nil) ? ret : false + end + + def self.triggerAbilityOnStatGain(ability,battler,stat,user) + ability1 = ability + ability2 = battler.ability2 + AbilityOnStatGain.trigger(ability1,battler,stat,user) + AbilityOnStatGain.trigger(ability2,battler,stat,user) + end + + def self.triggerAbilityOnStatLoss(ability,battler,stat,user) + ability1 = ability + ability2 = battler.ability2 + AbilityOnStatLoss.trigger(ability1,battler,stat,user) + AbilityOnStatLoss.trigger(ability2,battler,stat,user) + end + + #============================================================================= + + + def self.triggerPriorityChangeAbility(ability,battler,move,pri) + ability1 = ability + ability2 = battler.ability2 + ret = PriorityChangeAbility.trigger(ability1,battler,move,pri) || PriorityChangeAbility.trigger(ability2,battler,move,pri) + return (ret!=nil) ? ret : pri + end + + def self.triggerPriorityBracketChangeAbility(ability,battler,subPri,battle) + ability1 = ability + ability2 = battler.ability2 + ret = PriorityBracketChangeAbility.trigger(ability1,battler,subPri,battle) || PriorityBracketChangeAbility.trigger(ability2,battler,subPri,battle) + return (ret!=nil) ? ret : subPri + end + + def self.triggerPriorityBracketUseAbility(ability,battler,battle) + ability1 = ability + ability2 = battler.ability2 + PriorityBracketUseAbility.trigger(ability1,battler,battle) + PriorityBracketUseAbility.trigger(ability2,battler,battle) + end + + #============================================================================= + + def self.triggerAbilityOnFlinch(ability,battler,battle) + ability1 = ability + ability2 = battler.ability2 + AbilityOnFlinch.trigger(ability1,battler,battle) + AbilityOnFlinch.trigger(ability2,battler,battle) + end + + def self.triggerMoveBlockingAbility(ability,bearer,user,targets,move,battle) + ability1 = ability + ability2 = bearer.ability2 + ret = MoveBlockingAbility.trigger(ability1,bearer,user,targets,move,battle) || MoveBlockingAbility.trigger(ability2,bearer,user,targets,move,battle) + return (ret!=nil) ? ret : false + end + + def self.triggerMoveImmunityTargetAbility(ability,user,target,move,type,battle) + ability1 = ability + ability2 = user.ability2 + ret = MoveImmunityTargetAbility.trigger(ability1,user,target,move,type,battle) || MoveImmunityTargetAbility.trigger(ability2,user,target,move,type,battle) + return (ret!=nil) ? ret : false + end + + #============================================================================= + + def self.triggerMoveBaseTypeModifierAbility(ability,user,move,type) + ability1 = ability + ability2 = user.ability2 + ret = MoveBaseTypeModifierAbility.trigger(ability1,user,move,type) || MoveBaseTypeModifierAbility.trigger(ability2,user,move,type) + return (ret!=nil) ? ret : type + end + + #============================================================================= + + def self.triggerAccuracyCalcUserAbility(ability,mods,user,target,move,type) + ability1 = ability + ability2 = user.ability2 + AccuracyCalcUserAbility.trigger(ability1,mods,user,target,move,type) + AccuracyCalcUserAbility.trigger(ability2,mods,user,target,move,type) + end + + def self.triggerAccuracyCalcUserAllyAbility(ability,mods,user,target,move,type) + ability1 = ability + ability2 = user.ability2 + AccuracyCalcUserAllyAbility.trigger(ability1,mods,user,target,move,type) + AccuracyCalcUserAllyAbility.trigger(ability2,mods,user,target,move,type) + end + + def self.triggerAccuracyCalcTargetAbility(ability,mods,user,target,move,type) + ability1 = ability + ability2 = user.ability2 + AccuracyCalcTargetAbility.trigger(ability1,mods,user,target,move,type) + AccuracyCalcTargetAbility.trigger(ability2,mods,user,target,move,type) + end + #============================================================================= + + def self.triggerDamageCalcUserAbility(ability,user,target,move,mults,baseDmg,type) + ability1 = ability + ability2 = user.ability2 + DamageCalcUserAbility.trigger(ability1,user,target,move,mults,baseDmg,type) + DamageCalcUserAbility.trigger(ability2,user,target,move,mults,baseDmg,type) + end + + def self.triggerDamageCalcUserAllyAbility(ability,user,target,move,mults,baseDmg,type) + ability1 = ability + ability2 = target.ability2 + DamageCalcUserAllyAbility.trigger(ability1,user,target,move,mults,baseDmg,type) + DamageCalcUserAllyAbility.trigger(ability2,user,target,move,mults,baseDmg,type) + end + + def self.triggerDamageCalcTargetAbility(ability,user,target,move,mults,baseDmg,type) + ability1 = ability + ability2 = target.ability2 + DamageCalcTargetAbility.trigger(ability1,user,target,move,mults,baseDmg,type) + DamageCalcTargetAbility.trigger(ability2,user,target,move,mults,baseDmg,type) + end + + def self.triggerDamageCalcTargetAbilityNonIgnorable(ability,user,target,move,mults,baseDmg,type) + ability1 = ability + ability2 = target.ability2 + DamageCalcTargetAbilityNonIgnorable.trigger(ability1,user,target,move,mults,baseDmg,type) + DamageCalcTargetAbilityNonIgnorable.trigger(ability2,user,target,move,mults,baseDmg,type) + end + + def self.triggerDamageCalcTargetAllyAbility(ability,user,target,move,mults,baseDmg,type) + ability1 = ability + ability2 = target.ability2 + DamageCalcTargetAllyAbility.trigger(ability1,user,target,move,mults,baseDmg,type) + DamageCalcTargetAllyAbility.trigger(ability2,user,target,move,mults,baseDmg,type) + end + + #============================================================================= + + def self.triggerCriticalCalcUserAbility(ability,user,target,c) + ability1 = ability + ability2 = user.ability2 + ret = CriticalCalcUserAbility.trigger(ability1,user,target,c) || CriticalCalcUserAbility.trigger(ability2,user,target,c) + return (ret!=nil) ? ret : c + end + + def self.triggerCriticalCalcTargetAbility(ability,user,target,c) + ability1 = ability + ability2 = target.ability2 + ret = CriticalCalcTargetAbility.trigger(ability1,user,target,c) || CriticalCalcTargetAbility.trigger(ability2,user,target,c) + return (ret!=nil) ? ret : c + end + #============================================================================= + + def self.triggerTargetAbilityOnHit(ability,user,target,move,battle) + ability1 = ability + ability2 = target.ability2 + TargetAbilityOnHit.trigger(ability1,user,target,move,battle) + TargetAbilityOnHit.trigger(ability2,user,target,move,battle) + end + + def self.triggerUserAbilityOnHit(ability,user,target,move,battle) + ability1 = ability + ability2 = user.ability2 + UserAbilityOnHit.trigger(ability1,user,target,move,battle) + UserAbilityOnHit.trigger(ability2,user,target,move,battle) + end + #============================================================================= + + def self.triggerUserAbilityEndOfMove(ability,user,targets,move,battle) + ability1 = ability + ability2 = user.ability2 + UserAbilityEndOfMove.trigger(ability1,user,targets,move,battle) + UserAbilityEndOfMove.trigger(ability2,user,targets,move,battle) + end + + def self.triggerTargetAbilityAfterMoveUse(ability,target,user,move,switched,battle) + ability1 = ability + ability2 = target.ability2 + TargetAbilityAfterMoveUse.trigger(ability1,target,user,move,switched,battle) + TargetAbilityAfterMoveUse.trigger(ability2,target,user,move,switched,battle) + end + + #============================================================================= + + def self.triggerEORWeatherAbility(ability,weather,battler,battle) + ability1 = ability + ability2 = battler.ability2 + EORWeatherAbility.trigger(ability1,weather,battler,battle) + EORWeatherAbility.trigger(ability2,weather,battler,battle) + end + + def self.triggerEORHealingAbility(ability,battler,battle) + ability1 = ability + ability2 = battler.ability2 + EORHealingAbility.trigger(ability1,battler,battle) + EORHealingAbility.trigger(ability2,battler,battle) + 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 + end \ No newline at end of file diff --git a/Data/Skills.rxdata b/Data/Skills.rxdata index 61cba7ea2..a45219f5e 100644 Binary files a/Data/Skills.rxdata and b/Data/Skills.rxdata differ diff --git a/Data/States.rxdata b/Data/States.rxdata index 0f9b4ae5d..868d49e59 100644 Binary files a/Data/States.rxdata and b/Data/States.rxdata differ diff --git a/Data/System.rxdata b/Data/System.rxdata index 70cebe0fa..aa2f52faf 100644 Binary files a/Data/System.rxdata and b/Data/System.rxdata differ diff --git a/Data/Tilesets.rxdata b/Data/Tilesets.rxdata index 0ce401add..b5372acec 100644 Binary files a/Data/Tilesets.rxdata and b/Data/Tilesets.rxdata differ diff --git a/Data/Weapons.rxdata b/Data/Weapons.rxdata index d9bd35260..c7ea19a7a 100644 Binary files a/Data/Weapons.rxdata and b/Data/Weapons.rxdata differ