mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-10 22:54:59 +00:00
update 6.7
This commit is contained in:
@@ -0,0 +1,259 @@
|
||||
class PokeBattle_Battler
|
||||
attr_accessor :ability_id
|
||||
attr_accessor :ability2_id
|
||||
|
||||
#Primary ability utility methods for battlers class
|
||||
def ability
|
||||
return GameData::Ability.try_get(@ability_id)
|
||||
end
|
||||
|
||||
def ability=(value)
|
||||
new_ability = GameData::Ability.try_get(value)
|
||||
@ability_id = (new_ability) ? new_ability.id : nil
|
||||
end
|
||||
|
||||
def abilityName
|
||||
abil = self.ability
|
||||
return (abil) ? abil.name : ""
|
||||
end
|
||||
|
||||
#Secondary ability utility methods for battlers class
|
||||
def ability2
|
||||
return nil if !$game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
return GameData::Ability.try_get(@ability2_id)
|
||||
end
|
||||
|
||||
def ability2=(value)
|
||||
return if !$game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
new_ability = GameData::Ability.try_get(value)
|
||||
@ability2_id = (new_ability) ? new_ability.id : nil
|
||||
end
|
||||
|
||||
def ability2Name
|
||||
abil = self.ability2
|
||||
return (abil) ? abil.name : ""
|
||||
end
|
||||
|
||||
#Ability logic overrides
|
||||
|
||||
def hasActiveAbility?(check_ability, ignore_fainted = false)
|
||||
return hasActiveAbilityDouble?(check_ability, ignore_fainted) if $game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
return false if !abilityActive?(ignore_fainted)
|
||||
return check_ability.include?(@ability_id) if check_ability.is_a?(Array)
|
||||
return self.ability == check_ability
|
||||
end
|
||||
|
||||
def hasActiveAbilityDouble?(check_ability, ignore_fainted = false)
|
||||
return false if !$game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
return false if !abilityActive?(ignore_fainted)
|
||||
if check_ability.is_a?(Array)
|
||||
return check_ability.include?(@ability_id) || check_ability.include?(@ability2_id)
|
||||
end
|
||||
return self.ability == check_ability || self.ability2 == check_ability
|
||||
end
|
||||
|
||||
def triggerAbilityEffectsOnHit(move, user, target)
|
||||
# Target's ability
|
||||
if target.abilityActive?(true)
|
||||
oldHP = user.hp
|
||||
BattleHandlers.triggerTargetAbilityOnHit(target.ability, user, target, move, @battle)
|
||||
BattleHandlers.triggerTargetAbilityOnHit(target.ability2, user, target, move, @battle) if $game_switches[SWITCH_DOUBLE_ABILITIES] && target.ability2
|
||||
user.pbItemHPHealCheck if user.hp < oldHP
|
||||
end
|
||||
# User's ability
|
||||
if user.abilityActive?(true)
|
||||
BattleHandlers.triggerUserAbilityOnHit(user.ability, user, target, move, @battle)
|
||||
BattleHandlers.triggerUserAbilityOnHit(user.ability2, user, target, move, @battle) if $game_switches[SWITCH_DOUBLE_ABILITIES] && user.ability2
|
||||
user.pbItemHPHealCheck
|
||||
end
|
||||
end
|
||||
|
||||
def pbCheckDamageAbsorption(user, target)
|
||||
# Substitute will take the damage
|
||||
if target.effects[PBEffects::Substitute] > 0 && !ignoresSubstitute?(user) &&
|
||||
(!user || user.index != target.index)
|
||||
target.damageState.substitute = true
|
||||
return
|
||||
end
|
||||
# Disguise will take the damage
|
||||
if !@battle.moldBreaker && target.isFusionOf(:MIMIKYU) &&
|
||||
target.form == 0 && (target.ability == :DISGUISE || target.ability2 == :DISGUISE)
|
||||
target.damageState.disguise = true
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
# Called when a Pokémon (self) enters battle, at the end of each move used,
|
||||
# and at the end of each round.
|
||||
def pbContinualAbilityChecks(onSwitchIn = false)
|
||||
# Check for end of primordial weather
|
||||
@battle.pbEndPrimordialWeather
|
||||
# Trace
|
||||
if $game_switches[SWITCH_DOUBLE_ABILITIES] && onSwitchIn
|
||||
displayOpponentDoubleAbilities()
|
||||
else
|
||||
if hasActiveAbility?(:TRACE)
|
||||
# NOTE: In Gen 5 only, Trace only triggers upon the Trace bearer switching
|
||||
# in and not at any later times, even if a traceable ability turns
|
||||
# up later. Essentials ignores this, and allows Trace to trigger
|
||||
# whenever it can even in the old battle mechanics.
|
||||
choices = []
|
||||
@battle.eachOtherSideBattler(@index) do |b|
|
||||
next if b.ungainableAbility? ||
|
||||
[:POWEROFALCHEMY, :RECEIVER, :TRACE].include?(b.ability_id)
|
||||
choices.push(b)
|
||||
end
|
||||
if choices.length > 0
|
||||
choice = choices[@battle.pbRandom(choices.length)]
|
||||
@battle.pbShowAbilitySplash(self)
|
||||
self.ability = choice.ability
|
||||
@battle.pbDisplay(_INTL("{1} traced {2}'s {3}!", pbThis, choice.pbThis(true), choice.abilityName))
|
||||
@battle.pbHideAbilitySplash(self)
|
||||
if !onSwitchIn && (unstoppableAbility? || abilityActive?)
|
||||
BattleHandlers.triggerAbilityOnSwitchIn(self.ability, self, @battle)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def displayOpponentDoubleAbilities()
|
||||
@battle.eachOtherSideBattler(@index) do |battler|
|
||||
@battle.pbShowPrimaryAbilitySplash(battler,true)
|
||||
@battle.pbShowSecondaryAbilitySplash(battler,true) if battler.isFusion?()
|
||||
@battle.pbHideAbilitySplash(battler)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
class Pokemon
|
||||
attr_writer :ability_index
|
||||
attr_writer :ability2_index
|
||||
|
||||
#Primary ability utility methods for pokemon class
|
||||
def ability_index
|
||||
@ability_index = (@personalID & 1) if !@ability_index
|
||||
return @ability_index
|
||||
end
|
||||
|
||||
def ability
|
||||
return GameData::Ability.try_get(ability_id())
|
||||
end
|
||||
|
||||
def ability=(value)
|
||||
return if value && !GameData::Ability.exists?(value)
|
||||
@ability = (value) ? GameData::Ability.get(value).id : value
|
||||
end
|
||||
|
||||
#Secondary ability utility methods for pokemon class
|
||||
def ability2_index
|
||||
return nil if !$game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
@ability2_index = (@personalID & 1) if !@ability2_index
|
||||
return @ability2_index
|
||||
end
|
||||
|
||||
def ability2
|
||||
return nil if !$game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
return GameData::Ability.try_get(ability2_id())
|
||||
end
|
||||
|
||||
def ability2=(value)
|
||||
return if !$game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
return if value && !GameData::Ability.exists?(value)
|
||||
@ability2 = (value) ? GameData::Ability.get(value).id : value
|
||||
end
|
||||
|
||||
|
||||
def ability_id
|
||||
if !@ability
|
||||
sp_data = species_data
|
||||
abil_index = ability_index
|
||||
#echoln abil_index
|
||||
if abil_index >= 2 # Hidden ability
|
||||
@ability = sp_data.hidden_abilities[abil_index - 2]
|
||||
abil_index = (@personalID & 1) if !@ability
|
||||
end
|
||||
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 @ability
|
||||
end
|
||||
|
||||
def ability2_id
|
||||
return nil if !$game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
if !@ability2
|
||||
sp_data = species_data
|
||||
abil_index = ability_index
|
||||
if abil_index >= 2 # Hidden ability
|
||||
@ability2 = sp_data.hidden_abilities[abil_index - 2]
|
||||
abil_index = (@personalID & 1) if !@ability2
|
||||
end
|
||||
if !@ability2 # Natural ability or no hidden ability defined
|
||||
@ability2 = sp_data.abilities[abil_index] || sp_data.abilities[0]
|
||||
end
|
||||
end
|
||||
return @ability2
|
||||
end
|
||||
|
||||
def adjustHPForWonderGuard(stats)
|
||||
return self.ability == :WONDERGUARD ? 1 : stats[:HP] || ($game_switches[SWITCH_DOUBLE_ABILITIES] && self.ability2 == :WONDERGUARD)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
class PokemonFusionScene
|
||||
|
||||
def pbChooseAbility(ability1Id,ability2Id)
|
||||
ability1 = GameData::Ability.get(ability1Id)
|
||||
ability2 = GameData::Ability.get(ability2Id)
|
||||
availableNatures = []
|
||||
availableNatures << @pokemon1.nature
|
||||
availableNatures << @pokemon2.nature
|
||||
|
||||
setAbilityAndNatureAndNickname([ability1,ability2], availableNatures)
|
||||
end
|
||||
|
||||
|
||||
def setAbilityAndNatureAndNickname(abilitiesList, naturesList)
|
||||
clearUIForMoves
|
||||
if $game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
scene = FusionSelectOptionsScene.new(nil, naturesList, @pokemon1, @pokemon2)
|
||||
screen = PokemonOptionScreen.new(scene)
|
||||
screen.pbStartScreen
|
||||
|
||||
@pokemon1.ability = abilitiesList[0]
|
||||
@pokemon1.ability2 = abilitiesList[1]
|
||||
else
|
||||
scene = FusionSelectOptionsScene.new(abilitiesList, naturesList, @pokemon1, @pokemon2)
|
||||
screen = PokemonOptionScreen.new(scene)
|
||||
screen.pbStartScreen
|
||||
|
||||
selectedAbility = scene.selectedAbility
|
||||
@pokemon1.body_original_ability_index = @pokemon1.ability_index
|
||||
@pokemon1.head_original_ability_index = @pokemon2.ability_index
|
||||
|
||||
@pokemon1.ability = selectedAbility
|
||||
@pokemon1.ability_index = getAbilityIndexFromID(selectedAbility.id,@pokemon1)
|
||||
end
|
||||
|
||||
@pokemon1.nature = scene.selectedNature
|
||||
if scene.hasNickname
|
||||
@pokemon1.name = scene.nickname
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
@@ -0,0 +1,389 @@
|
||||
#
|
||||
# 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)
|
||||
# ability1 = ability
|
||||
# ability2 = battler.ability2
|
||||
# ret = SpeedCalcAbility.trigger(ability1, battler, mult) || SpeedCalcAbility.trigger(ability2, battler, mult)
|
||||
# return (ret != nil) ? ret : mult
|
||||
# end
|
||||
#
|
||||
# def self.triggerWeightCalcAbility(ability,battler,w)
|
||||
# ability1 = ability
|
||||
# ability2 = battler.ability2
|
||||
# ret = WeightCalcAbility.trigger(ability1,battler,w) || WeightCalcAbility.trigger(ability2,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 = switcher.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 = switcher.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 = switcher.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
|
||||
# ########
|
||||
# # 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
|
||||
@@ -0,0 +1,130 @@
|
||||
#
|
||||
# class AbilitySplashBar < SpriteWrapper
|
||||
# def refresh
|
||||
# self.bitmap.clear
|
||||
# return if !@battler
|
||||
# textPos = []
|
||||
# textX = (@side==0) ? 10 : self.bitmap.width-8
|
||||
# # Draw Pokémon's name
|
||||
# textPos.push(["{1}'s",@battler.name,textX,-4,@side==1,
|
||||
# TEXT_BASE_COLOR,TEXT_SHADOW_COLOR,true])
|
||||
# # Draw Pokémon's ability
|
||||
# textPos.push([@battler.abilityName,textX,26,@side==1,
|
||||
# TEXT_BASE_COLOR,TEXT_SHADOW_COLOR,true])
|
||||
# pbDrawTextPositions(self.bitmap,textPos)
|
||||
#
|
||||
# #2nd ability
|
||||
# if $game_switches[SWITCH_DOUBLE_ABILITIES]
|
||||
# textPos.push([@battler.ability2Name,textX,26,@side==1,
|
||||
# TEXT_BASE_COLOR,TEXT_SHADOW_COLOR,true])
|
||||
# pbDrawTextPositions(self.bitmap,textPos)
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
|
||||
|
||||
class AbilitySplashDisappearAnimation < PokeBattle_Animation
|
||||
def initialize(sprites,viewport,side)
|
||||
@side = side
|
||||
super(sprites,viewport)
|
||||
end
|
||||
|
||||
def createProcesses
|
||||
return if !@sprites["abilityBar_#{@side}"]
|
||||
bar = addSprite(@sprites["abilityBar_#{@side}"])
|
||||
bar2 = addSprite(@sprites["ability2Bar_#{@side}"]) if @sprites["ability2Bar_#{@side}"]
|
||||
|
||||
dir = (@side==0) ? -1 : 1
|
||||
bar.moveDelta(0,8,dir*Graphics.width/2,0)
|
||||
bar2.moveDelta(0,8,dir*Graphics.width/2,0) if bar2
|
||||
|
||||
bar.setVisible(8,false)
|
||||
bar2.setVisible(8,false) if bar2
|
||||
end
|
||||
end
|
||||
|
||||
class PokeBattle_Scene
|
||||
def pbShowAbilitySplash(battler,secondAbility=false, abilityName=nil)
|
||||
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
|
||||
side = battler.index%2
|
||||
if secondAbility
|
||||
pbHideAbilitySplash(battler) if @sprites["ability2Bar_#{side}"].visible
|
||||
else
|
||||
pbHideAbilitySplash(battler) if @sprites["abilityBar_#{side}"].visible
|
||||
end
|
||||
if abilityName
|
||||
@sprites["abilityBar_#{side}"].ability_name = abilityName if !secondAbility
|
||||
@sprites["ability2Bar_#{side}"].ability_name = abilityName if secondAbility
|
||||
end
|
||||
|
||||
|
||||
@sprites["abilityBar_#{side}"].battler = battler
|
||||
@sprites["ability2Bar_#{side}"].battler = battler if @sprites["ability2Bar_#{side}"]
|
||||
|
||||
abilitySplashAnim = AbilitySplashAppearAnimation.new(@sprites,@viewport,side,secondAbility)
|
||||
loop do
|
||||
abilitySplashAnim.update
|
||||
pbUpdate
|
||||
break if abilitySplashAnim.animDone?
|
||||
end
|
||||
abilitySplashAnim.dispose
|
||||
end
|
||||
end
|
||||
|
||||
class PokeBattle_Battle
|
||||
|
||||
def pbShowSecondaryAbilitySplash(battler,delay=false,logTrigger=true)
|
||||
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
|
||||
@scene.pbShowAbilitySplash(battler,true)
|
||||
if delay
|
||||
Graphics.frame_rate.times { @scene.pbUpdate } # 1 second
|
||||
end
|
||||
end
|
||||
|
||||
def pbShowPrimaryAbilitySplash(battler,delay=false,logTrigger=true)
|
||||
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
|
||||
@scene.pbShowAbilitySplash(battler,false)
|
||||
if delay
|
||||
Graphics.frame_rate.times { @scene.pbUpdate } # 1 second
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
class FusionSelectOptionsScene < PokemonOption_Scene
|
||||
def pbGetOptions(inloadscreen = false)
|
||||
|
||||
options = []
|
||||
if shouldSelectNickname
|
||||
options << EnumOption.new(_INTL("Nickname"), [_INTL(@pokemon1.name), _INTL(@pokemon2.name)],
|
||||
proc { 0 },
|
||||
proc { |value|
|
||||
if value ==0
|
||||
@nickname = @pokemon1.name
|
||||
else
|
||||
@nickname = @pokemon2.name
|
||||
end
|
||||
}, _INTL("Select the Pokémon's nickname"))
|
||||
end
|
||||
|
||||
if @abilityList != nil
|
||||
options << EnumOption.new(_INTL("Ability"), [_INTL(getAbilityName(@abilityList[0])), _INTL(getAbilityName(@abilityList[1]))],
|
||||
proc { 0 },
|
||||
proc { |value|
|
||||
@selectedAbility=@abilityList[value]
|
||||
}, [getAbilityDescription(@abilityList[0]), getAbilityDescription(@abilityList[1])]
|
||||
)
|
||||
end
|
||||
|
||||
options << EnumOption.new(_INTL("Nature"), [_INTL(getNatureName(@natureList[0])), _INTL(getNatureName(@natureList[1]))],
|
||||
proc { 0 },
|
||||
proc { |value|
|
||||
@selectedNature=@natureList[value]
|
||||
}, [getNatureDescription(@natureList[0]), getNatureDescription(@natureList[1])]
|
||||
)
|
||||
return options
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user