Renamed all battle-related classes and modules

This commit is contained in:
Maruno17
2021-11-16 23:05:16 +00:00
parent 6dacd6a139
commit 1c4819e5f0
79 changed files with 1270 additions and 1310 deletions

View File

@@ -171,3 +171,8 @@ end
def nil_or_empty?(string)
return string.nil? || !string.is_a?(String) || string.size == 0
end
#===============================================================================
# This is only here to make the battle classes easier to define later.
#===============================================================================
class Battle; end

View File

@@ -1,4 +1,4 @@
module PokeBattle_BattleCommon
module Battle::Common
#=============================================================================
# Store caught Pokémon
#=============================================================================

View File

@@ -17,7 +17,7 @@
# to edit some code. Mainly this is to change/add coordinates for the
# sprites, describe the relationships between Pokémon and trainers, and to
# change messages. The methods that will need editing are as follows:
# class PokeBattle_Battle
# class Battle
# def setBattleMode
# def pbGetOwnerIndexFromBattlerIndex
# def pbGetOpposingIndicesInOrder
@@ -26,18 +26,18 @@
# def pbEORShiftDistantBattlers
# def pbCanShift?
# def pbEndOfRoundPhase
# class TargetMenuDisplay
# class Battle::Scene::TargetMenu
# def initialize
# class PokemonDataBox
# class Battle::Scene::PokemonDataBox
# def initializeDataBoxGraphic
# module PokeBattle_SceneConstants
# class Battle::Scene
# def self.pbBattlerPosition
# def self.pbTrainerPosition
# class Game_Temp
# def add_battle_rule
# (There is no guarantee that this list is complete.)
class PokeBattle_Battle
class Battle
attr_reader :scene # Scene object for this battle
attr_reader :peer
attr_reader :field # Effects common to the whole of a battle
@@ -87,7 +87,7 @@ class PokeBattle_Battle
attr_accessor :moldBreaker # True if Mold Breaker applies
attr_reader :struggle # The Struggle move
include PokeBattle_BattleCommon
include Battle::Common
def pbRandom(x); return rand(x); end
@@ -101,11 +101,11 @@ class PokeBattle_Battle
raise ArgumentError.new(_INTL("Party 2 has no Pokémon."))
end
@scene = scene
@peer = PokeBattle_BattlePeer.create
@battleAI = PokeBattle_AI.new(self)
@field = PokeBattle_ActiveField.new # Whole field (gravity/rooms)
@sides = [PokeBattle_ActiveSide.new, # Player's side
PokeBattle_ActiveSide.new] # Foe's side
@peer = Peer.new
@battleAI = AI.new(self)
@field = ActiveField.new # Whole field (gravity/rooms)
@sides = [ActiveSide.new, # Player's side
ActiveSide.new] # Foe's side
@positions = [] # Battler positions
@battlers = []
@sideSizes = [1,1] # Single battle, 1v1
@@ -165,9 +165,9 @@ class PokeBattle_Battle
@runCommand = 0
@nextPickupUse = 0
if GameData::Move.exists?(:STRUGGLE)
@struggle = PokeBattle_Move.from_pokemon_move(self, Pokemon::Move.new(:STRUGGLE))
@struggle = Move.from_pokemon_move(self, Pokemon::Move.new(:STRUGGLE))
else
@struggle = PokeBattle_Struggle.new(self, nil)
@struggle = Move::Struggle.new(self, nil)
end
end
@@ -651,7 +651,7 @@ class PokeBattle_Battle
def pbSetSeen(battler)
return if !battler || !@internalBattle
if battler.is_a?(PokeBattle_Battler)
if battler.is_a?(Battler)
pbPlayer.pokedex.register(battler.displaySpecies, battler.displayGender,
battler.displayForm, battler.shiny?)
else
@@ -661,7 +661,7 @@ class PokeBattle_Battle
def pbSetCaught(battler)
return if !battler || !@internalBattle
if battler.is_a?(PokeBattle_Battler)
if battler.is_a?(Battler)
pbPlayer.pokedex.register_caught(battler.displaySpecies)
else
pbPlayer.pokedex.register_caught(battler.species)
@@ -670,7 +670,7 @@ class PokeBattle_Battle
def pbSetDefeated(battler)
return if !battler || !@internalBattle
if battler.is_a?(PokeBattle_Battler)
if battler.is_a?(Battler)
pbPlayer.pokedex.register_defeated(battler.displaySpecies)
else
pbPlayer.pokedex.register_defeated(battler.species)
@@ -819,7 +819,7 @@ class PokeBattle_Battle
def pbShowAbilitySplash(battler,delay=false,logTrigger=true)
PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}") if logTrigger
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
return if !Scene::USE_ABILITY_SPLASH
@scene.pbShowAbilitySplash(battler)
if delay
Graphics.frame_rate.times { @scene.pbUpdate } # 1 second
@@ -827,12 +827,12 @@ class PokeBattle_Battle
end
def pbHideAbilitySplash(battler)
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
return if !Scene::USE_ABILITY_SPLASH
@scene.pbHideAbilitySplash(battler)
end
def pbReplaceAbilitySplash(battler)
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
return if !Scene::USE_ABILITY_SPLASH
@scene.pbReplaceAbilitySplash(battler)
end
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
class BattleAbortedException < Exception; end
def pbAbort
@@ -106,10 +106,10 @@ class PokeBattle_Battle
if !@battlers[idxBattler].nil?
raise _INTL("Battler index {1} already exists",idxBattler)
end
@battlers[idxBattler] = PokeBattle_Battler.new(self,idxBattler)
@positions[idxBattler] = PokeBattle_ActivePosition.new
@battlers[idxBattler] = Battler.new(self,idxBattler)
@positions[idxBattler] = ActivePosition.new
pbClearChoice(idxBattler)
@successStates[idxBattler] = PokeBattle_SuccessState.new
@successStates[idxBattler] = SuccessState.new
@battlers[idxBattler].pbInitialize(pkmn,idxParty)
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Gaining Experience
#=============================================================================
@@ -240,7 +240,7 @@ class PokeBattle_Battle
pkmn.learn_move(newMove)
pbDisplay(_INTL("{1} learned {2}!",pkmnName,moveName)) { pbSEPlay("Pkmn move learnt") }
if battler
battler.moves.push(PokeBattle_Move.from_pokemon_move(self, pkmn.moves.last))
battler.moves.push(Move.from_pokemon_move(self, pkmn.moves.last))
battler.pbCheckFormOnMovesetChange
end
return
@@ -254,7 +254,7 @@ class PokeBattle_Battle
if forgetMove>=0
oldMoveName = pkmn.moves[forgetMove].name
pkmn.moves[forgetMove] = Pokemon::Move.new(newMove) # Replaces current/total PP
battler.moves[forgetMove] = PokeBattle_Move.from_pokemon_move(self, pkmn.moves[forgetMove]) if battler
battler.moves[forgetMove] = Move.from_pokemon_move(self, pkmn.moves[forgetMove]) if battler
pbDisplayPaused(_INTL("1, 2, and... ... ... Ta-da!")) { pbSEPlay("Battle ball drop") }
pbDisplayPaused(_INTL("{1} forgot how to use {2}. And...",pkmnName,oldMoveName))
pbDisplay(_INTL("{1} learned {2}!",pkmnName,moveName)) { pbSEPlay("Pkmn move learnt") }

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Choosing a move/target
#=============================================================================
@@ -45,7 +45,7 @@ class PokeBattle_Battle
encoreMove = battler.moves[idxEncoredMove]
@choices[idxBattler][0] = :UseMove # "Use move"
@choices[idxBattler][1] = idxEncoredMove # Index of move to be used
@choices[idxBattler][2] = encoreMove # PokeBattle_Move object
@choices[idxBattler][2] = encoreMove # Battle::Move object
@choices[idxBattler][3] = -1 # No target chosen yet
return true if singleBattle?
if pbOwnedByPlayer?(idxBattler)
@@ -62,7 +62,7 @@ class PokeBattle_Battle
end
@choices[idxBattler][0] = :UseMove # "Use move"
@choices[idxBattler][1] = -1 # Index of move to be used
@choices[idxBattler][2] = @struggle # Struggle PokeBattle_Move object
@choices[idxBattler][2] = @struggle # Struggle Battle::Move object
@choices[idxBattler][3] = -1 # No target chosen yet
return true
end
@@ -73,7 +73,7 @@ class PokeBattle_Battle
return false if !pbCanChooseMove?(idxBattler,idxMove,showMessages)
@choices[idxBattler][0] = :UseMove # "Use move"
@choices[idxBattler][1] = idxMove # Index of move to be used
@choices[idxBattler][2] = move # PokeBattle_Move object
@choices[idxBattler][2] = move # Battle::Move object
@choices[idxBattler][3] = -1 # No target chosen yet
return true
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Choosing Pokémon to switch
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Choosing to use an item
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Running from battle
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Shifting a battler to another position in a battle larger than double
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Clear commands
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Attack phase actions
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battle
class Battle
#=============================================================================
# Decrement effect counters
#=============================================================================
@@ -224,7 +224,7 @@ class PokeBattle_Battle
party = pbParty(pos.effects[PBEffects::FutureSightUserIndex])
pkmn = party[pos.effects[PBEffects::FutureSightUserPartyIndex]]
if pkmn && pkmn.able?
moveUser = PokeBattle_Battler.new(self,pos.effects[PBEffects::FutureSightUserIndex])
moveUser = Battler.new(self,pos.effects[PBEffects::FutureSightUserIndex])
moveUser.pbInitDummyPokemon(pkmn,pos.effects[PBEffects::FutureSightUserPartyIndex])
end
end
@@ -360,7 +360,7 @@ class PokeBattle_Battle
pbCommonAnimation(anim_name, b) if anim_name
pbShowAbilitySplash(b)
b.pbRecoverHP(b.totalhp/8)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Scene::USE_ABILITY_SPLASH
pbDisplay(_INTL("{1}'s HP was restored.",b.pbThis))
else
pbDisplay(_INTL("{1}'s {2} restored its HP.",b.pbThis,b.abilityName))

View File

@@ -1,186 +0,0 @@
begin
module PBEffects
#===========================================================================
# These effects apply to a battler
#===========================================================================
AquaRing = 0
Attract = 1
BanefulBunker = 2
BeakBlast = 3
Bide = 4
BideDamage = 5
BideTarget = 6
BurnUp = 7
Charge = 8
ChoiceBand = 9
Confusion = 10
Counter = 11
CounterTarget = 12
Curse = 13
Dancer = 14
DefenseCurl = 15
DestinyBond = 16
DestinyBondPrevious = 17
DestinyBondTarget = 18
Disable = 19
DisableMove = 20
Electrify = 21
Embargo = 22
Encore = 23
EncoreMove = 24
Endure = 25
FirstPledge = 26
FlashFire = 27
Flinch = 28
FocusEnergy = 29
FocusPunch = 30
FollowMe = 31
Foresight = 32
FuryCutter = 33
GastroAcid = 34
GemConsumed = 35
Grudge = 36
HealBlock = 37
HelpingHand = 38
HyperBeam = 39
Illusion = 40
Imprison = 41
Ingrain = 42
Instruct = 43
Instructed = 44
JawLock = 994
KingsShield = 45
LaserFocus = 46
LeechSeed = 47
LockOn = 48
LockOnPos = 49
MagicBounce = 50
MagicCoat = 51
MagnetRise = 52
MeanLook = 53
MeFirst = 54
Metronome = 55
MicleBerry = 56
Minimize = 57
MiracleEye = 58
MirrorCoat = 59
MirrorCoatTarget = 60
MoveNext = 61
MudSport = 62
Nightmare = 63
NoRetreat = 990
Obstruct = 992
Octolock = 993
Outrage = 64
ParentalBond = 65
PerishSong = 66
PerishSongUser = 67
PickupItem = 68
PickupUse = 69
Pinch = 70 # Battle Palace only
Powder = 71
PowerTrick = 72
Prankster = 73
PriorityAbility = 74
PriorityItem = 75
Protect = 76
ProtectRate = 77
Pursuit = 78
Quash = 79
Rage = 80
RagePowder = 81 # Used along with FollowMe
Rollout = 82
Roost = 83
ShellTrap = 84
SkyDrop = 85
SlowStart = 86
SmackDown = 87
Snatch = 88
SpikyShield = 89
Spotlight = 90
Stockpile = 91
StockpileDef = 92
StockpileSpDef = 93
Substitute = 94
TarShot = 991
Taunt = 95
Telekinesis = 96
ThroatChop = 97
Torment = 98
Toxic = 99
Transform = 100
TransformSpecies = 101
Trapping = 102 # Trapping move
TrappingMove = 103
TrappingUser = 104
Truant = 105
TwoTurnAttack = 106
Type3 = 107
Unburden = 108
Uproar = 109
WaterSport = 110
WeightChange = 111
Yawn = 112
#===========================================================================
# These effects apply to a battler position
#===========================================================================
FutureSightCounter = 0
FutureSightMove = 1
FutureSightUserIndex = 2
FutureSightUserPartyIndex = 3
HealingWish = 4
LunarDance = 5
Wish = 6
WishAmount = 7
WishMaker = 8
#===========================================================================
# These effects apply to a side
#===========================================================================
AuroraVeil = 0
CraftyShield = 1
EchoedVoiceCounter = 2
EchoedVoiceUsed = 3
LastRoundFainted = 4
LightScreen = 5
LuckyChant = 6
MatBlock = 7
Mist = 8
QuickGuard = 9
Rainbow = 10
Reflect = 11
Round = 12
Safeguard = 13
SeaOfFire = 14
Spikes = 15
StealthRock = 16
StickyWeb = 17
Swamp = 18
Tailwind = 19
ToxicSpikes = 20
WideGuard = 21
#===========================================================================
# These effects apply to the battle (i.e. both sides)
#===========================================================================
AmuletCoin = 0
FairyLock = 1
FusionBolt = 2
FusionFlare = 3
Gravity = 4
HappyHour = 5
IonDeluge = 6
MagicRoom = 7
MudSportField = 8
PayDay = 9
TrickRoom = 10
WaterSportField = 11
WonderRoom = 12
end
rescue Exception
if $!.is_a?(SystemExit) || "#{$!.class}"=="Reset"
raise $!
end
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
# Fundamental to this object
attr_reader :battle
attr_accessor :index
@@ -517,7 +517,7 @@ class PokeBattle_Battler
if hasActiveAbility?(:MAGICGUARD)
if showMsg
@battle.pbShowAbilitySplash(self)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!",pbThis))
else
@battle.pbDisplay(_INTL("{1} is unaffected because of its {2}!",pbThis,abilityName))
@@ -571,7 +571,7 @@ class PokeBattle_Battler
if hasActiveAbility?(:OVERCOAT) && !@battle.moldBreaker
if showMsg
@battle.pbShowAbilitySplash(self)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!",pbThis))
else
@battle.pbDisplay(_INTL("{1} is unaffected because of its {2}!",pbThis,abilityName))

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Creating a battler
#=============================================================================
@@ -9,7 +9,7 @@ class PokeBattle_Battler
@dummy = false
@stages = {}
@effects = []
@damageState = PokeBattle_DamageState.new
@damageState = Battle::DamageState.new
pbInitBlank
pbInitEffects(false)
end
@@ -95,7 +95,7 @@ class PokeBattle_Battler
@participants = [] # Participants earn Exp. if this battler is defeated
@moves = []
pkmn.moves.each_with_index do |m,i|
@moves[i] = PokeBattle_Move.from_pokemon_move(@battle,m)
@moves[i] = Battle::Move.from_pokemon_move(@battle,m)
end
@iv = {}
GameData::Stat.each_main { |s| @iv[s.id] = pkmn.iv[s.id] }

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Change HP
#=============================================================================
@@ -122,7 +122,7 @@ class PokeBattle_Battler
# Change type
#=============================================================================
def pbChangeTypes(newType)
if newType.is_a?(PokeBattle_Battler)
if newType.is_a?(Battle::Battler)
newTypes = newType.pbTypes
newTypes.push(:NORMAL) if newTypes.length == 0
newType3 = newType.effects[PBEffects::Type3]
@@ -313,7 +313,7 @@ class PokeBattle_Battler
end
@moves.clear
target.moves.each_with_index do |m,i|
@moves[i] = PokeBattle_Move.from_pokemon_move(@battle, Pokemon::Move.new(m.id))
@moves[i] = Battle::Move.from_pokemon_move(@battle, Pokemon::Move.new(m.id))
@moves[i].pp = 5
@moves[i].total_pp = 5
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Generalised checks for whether a status problem can be inflicted
#=============================================================================
@@ -121,7 +121,7 @@ class PokeBattle_Battler
if showMessages
@battle.pbShowAbilitySplash(immAlly || self)
msg = ""
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
case newStatus
when :SLEEP then msg = _INTL("{1} stays awake!", pbThis)
when :POISON then msg = _INTL("{1} cannot be poisoned!", pbThis)
@@ -458,7 +458,7 @@ class PokeBattle_Battler
if hasActiveAbility?(:OWNTEMPO)
if showMessages
@battle.pbShowAbilitySplash(self)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} doesn't become confused!",pbThis))
else
@battle.pbDisplay(_INTL("{1}'s {2} prevents confusion!",pbThis,abilityName))
@@ -520,7 +520,7 @@ class PokeBattle_Battler
if hasActiveAbility?([:AROMAVEIL,:OBLIVIOUS])
if showMessages
@battle.pbShowAbilitySplash(self)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!",pbThis))
else
@battle.pbDisplay(_INTL("{1}'s {2} prevents romance!",pbThis,abilityName))
@@ -533,7 +533,7 @@ class PokeBattle_Battler
next if !b.hasActiveAbility?(:AROMAVEIL)
if showMessages
@battle.pbShowAbilitySplash(self)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!",pbThis))
else
@battle.pbDisplay(_INTL("{1}'s {2} prevents romance!",b.pbThis,b.abilityName))

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Increase stat stages
#=============================================================================
@@ -97,8 +97,8 @@ class PokeBattle_Battler
return false if fainted?
ret = false
@battle.pbShowAbilitySplash(user) if splashAnim
if pbCanRaiseStatStage?(stat,user,nil,PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if pbCanRaiseStatStage?(stat,user,nil,Battle::Scene::USE_ABILITY_SPLASH)
if Battle::Scene::USE_ABILITY_SPLASH
ret = pbRaiseStatStage(stat,increment,user)
else
ret = pbRaiseStatStageByCause(stat,increment,user,user.abilityName)
@@ -194,7 +194,7 @@ class PokeBattle_Battler
user && user.index != @index && !statStageAtMin?(stat)
if mirrorArmorSplash < 2
@battle.pbShowAbilitySplash(self)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1}'s {2} activated!", pbThis, abilityName))
end
end
@@ -234,7 +234,7 @@ class PokeBattle_Battler
if hasActiveAbility?(:MIRRORARMOR) && !ignoreMirrorArmor &&
user && user.index != @index && !statStageAtMin?(stat)
@battle.pbShowAbilitySplash(self)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1}'s {2} activated!", pbThis, abilityName))
end
ret = false
@@ -272,9 +272,9 @@ class PokeBattle_Battler
def pbLowerStatStageByAbility(stat,increment,user,splashAnim=true,checkContact=false)
ret = false
@battle.pbShowAbilitySplash(user) if splashAnim
if pbCanLowerStatStage?(stat,user,nil,PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
(!checkContact || affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH))
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if pbCanLowerStatStage?(stat,user,nil,Battle::Scene::USE_ABILITY_SPLASH) &&
(!checkContact || affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH))
if Battle::Scene::USE_ABILITY_SPLASH
ret = pbLowerStatStage(stat,increment,user)
else
ret = pbLowerStatStageByCause(stat,increment,user,user.abilityName)
@@ -288,7 +288,7 @@ class PokeBattle_Battler
return false if fainted?
# NOTE: Substitute intentially blocks Intimidate even if self has Contrary.
if @effects[PBEffects::Substitute]>0
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is protected by its substitute!",pbThis))
else
@battle.pbDisplay(_INTL("{1}'s substitute protected it from {2}'s {3}!",
@@ -298,7 +298,7 @@ class PokeBattle_Battler
end
if Settings::MECHANICS_GENERATION >= 8 && hasActiveAbility?([:OBLIVIOUS, :OWNTEMPO, :INNERFOCUS, :SCRAPPY])
@battle.pbShowAbilitySplash(self)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1}'s {2} cannot be lowered!", pbThis, GameData::Stat.get(:ATTACK).name))
else
@battle.pbDisplay(_INTL("{1}'s {2} prevents {3} loss!", pbThis, abilityName,
@@ -307,7 +307,7 @@ class PokeBattle_Battler
@battle.pbHideAbilitySplash(self)
return false
end
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
return pbLowerStatStageByAbility(:ATTACK,1,user,false)
end
# NOTE: These checks exist to ensure appropriate messages are shown if

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Ability effects
#=============================================================================
@@ -185,7 +185,7 @@ class PokeBattle_Battler
next if !b.item || b.unlosableItem?(b.item)
next if unlosableItem?(b.item)
@battle.pbShowAbilitySplash(b)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} shared its {2} with {3}!",
b.pbThis,b.itemName,pbThis(true)))
else
@@ -208,7 +208,7 @@ class PokeBattle_Battler
if hasActiveAbility?(:CHEEKPOUCH) && GameData::Item.get(item_to_use).is_berry? && canHeal?
@battle.pbShowAbilitySplash(self)
pbRecoverHP(@totalhp / 3)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1}'s HP was restored.", pbThis))
else
@battle.pbDisplay(_INTL("{1}'s {2} restored its HP.", pbThis, abilityName))

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Turn processing
#=============================================================================
@@ -125,7 +125,7 @@ class PokeBattle_Battler
def pbConfusionDamage(msg)
@damageState.reset
confusionMove = PokeBattle_Confusion.new(@battle,nil)
confusionMove = Battle::Move::Confusion.new(@battle,nil)
confusionMove.calcType = confusionMove.pbCalcType(self) # nil
@damageState.typeMod = confusionMove.pbCalcTypeMod(confusionMove.calcType,self,self) # 8
confusionMove.pbCheckDamageAbsorption(self,self)
@@ -151,7 +151,7 @@ class PokeBattle_Battler
if idxMove>=0
choice[2] = @moves[idxMove]
else
choice[2] = PokeBattle_Move.from_pokemon_move(@battle, Pokemon::Move.new(moveID))
choice[2] = Battle::Move.from_pokemon_move(@battle, Pokemon::Move.new(moveID))
choice[2].pp = -1
end
choice[3] = target # Target (-1 means no target yet)
@@ -170,7 +170,7 @@ class PokeBattle_Battler
pbBeginTurn(choice)
# Force the use of certain moves if they're already being used
if usingMultiTurnAttack?
choice[2] = PokeBattle_Move.from_pokemon_move(@battle, Pokemon::Move.new(@currentMove))
choice[2] = Battle::Move.from_pokemon_move(@battle, Pokemon::Move.new(@currentMove))
specialUsage = true
elsif @effects[PBEffects::Encore]>0 && choice[1]>=0 &&
@battle.pbCanShowCommands?(@index)
@@ -555,7 +555,7 @@ class PokeBattle_Battler
preTarget = user.index if nextUser.opposes?(user) || !nextUser.opposes?(preTarget)
@battle.pbShowAbilitySplash(nextUser,true)
@battle.pbHideAbilitySplash(nextUser)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} kept the dance going with {2}!",
nextUser.pbThis,nextUser.abilityName))
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Get move's user
#=============================================================================
@@ -156,7 +156,7 @@ class PokeBattle_Battler
@battle.pbShowAbilitySplash(b)
targets.clear
pbAddTarget(targets,user,b,move,nearOnly)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} took the attack!",b.pbThis))
else
@battle.pbDisplay(_INTL("{1} took the attack with its {2}!",b.pbThis,b.abilityName))

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Decide whether the trainer is allowed to tell the Pokémon to use the given
# move. Called when choosing a command for the round.
@@ -455,7 +455,7 @@ class PokeBattle_Battler
if target.hasActiveAbility?(:LEVITATE) && !@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} avoided the attack!", target.pbThis))
else
@battle.pbDisplay(_INTL("{1} avoided the attack with {2}!", target.pbThis, target.abilityName))
@@ -488,7 +488,7 @@ class PokeBattle_Battler
if target.hasActiveAbility?(:OVERCOAT) && !@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
else
@battle.pbDisplay(_INTL("It doesn't affect {1} because of its {2}.", target.pbThis(true), target.abilityName))

View File

@@ -1,4 +1,4 @@
class PokeBattle_Battler
class Battle::Battler
#=============================================================================
# Effect per hit
#=============================================================================
@@ -18,7 +18,7 @@ class PokeBattle_Battler
# target Cramorant attacking the user) and the ability splash
# shouldn't be shown.
@battle.pbShowAbilitySplash(target)
if user.takesIndirectDamage?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.takesIndirectDamage?(Battle::Scene::USE_ABILITY_SPLASH)
@battle.scene.pbDamageAnimation(user)
user.pbReduceHP(user.totalhp / 4, false)
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Move
class Battle::Move
attr_reader :battle
attr_reader :realMove
attr_accessor :id
@@ -44,17 +44,21 @@ class PokeBattle_Move
@snatched = false
end
# This is the code actually used to generate a PokeBattle_Move object. The
# This is the code actually used to generate a Battle::Move object. The
# object generated is a subclass of this one which depends on the move's
# function code (found in the script section PokeBattle_MoveEffect).
def PokeBattle_Move.from_pokemon_move(battle, move)
# function code.
def self.from_pokemon_move(battle, move)
validate move => Pokemon::Move
moveFunction = move.function_code || "None"
className = sprintf("PokeBattle_Move_%s", moveFunction)
if Object.const_defined?(className)
return Object.const_get(className).new(battle, move)
code = move.function_code || "None"
if code[/^\d/] # Begins with a digit
class_name = sprintf("Battle::Move::Effect%s", code)
else
class_name = sprintf("Battle::Move::%s", code)
end
return PokeBattle_UnimplementedMove.new(battle, move)
if Object.const_defined?(class_name)
return Object.const_get(class_name).new(battle, move)
end
return Battle::Move::Unimplemented.new(battle, move)
end
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_Move
class Battle::Move
#=============================================================================
# Effect methods per move usage
#=============================================================================
@@ -127,7 +127,7 @@ class PokeBattle_Move
if target.hasActiveAbility?(:AROMAVEIL)
if showMessage
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!",target.pbThis))
else
@battle.pbDisplay(_INTL("{1} is unaffected because of its {2}!",
@@ -141,7 +141,7 @@ class PokeBattle_Move
next if !b.hasActiveAbility?(:AROMAVEIL)
if showMessage
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!",target.pbThis))
else
@battle.pbDisplay(_INTL("{1} is unaffected because of {2}'s {3}!",
@@ -317,7 +317,7 @@ class PokeBattle_Move
def pbEndureKOMessage(target)
if target.damageState.disguise
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("Its disguise served it as a decoy!"))
else
@battle.pbDisplay(_INTL("{1}'s disguise served it as a decoy!",target.pbThis))
@@ -327,7 +327,7 @@ class PokeBattle_Move
target.pbReduceHP(target.totalhp / 8, false) if Settings::MECHANICS_GENERATION >= 8
elsif target.damageState.iceFace
@battle.pbShowAbilitySplash(target)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1}'s {2} activated!", target.pbThis, target.abilityName))
end
target.pbChangeForm(1, _INTL("{1} transformed!", target.pbThis))
@@ -336,7 +336,7 @@ class PokeBattle_Move
@battle.pbDisplay(_INTL("{1} endured the hit!",target.pbThis))
elsif target.damageState.sturdy
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} endured the hit!",target.pbThis))
else
@battle.pbDisplay(_INTL("{1} hung on with Sturdy!",target.pbThis))

View File

@@ -1,4 +1,4 @@
class PokeBattle_Move
class Battle::Move
#=============================================================================
# Move's type calculation
#=============================================================================
@@ -335,7 +335,7 @@ class PokeBattle_Move
if user.effects[PBEffects::MeFirst]
multipliers[:base_damage_multiplier] *= 1.5
end
if user.effects[PBEffects::HelpingHand] && !self.is_a?(PokeBattle_Confusion)
if user.effects[PBEffects::HelpingHand] && !self.is_a?(Battle::Move::Confusion)
multipliers[:base_damage_multiplier] *= 1.5
end
if user.effects[PBEffects::Charge]>0 && type == :ELECTRIC
@@ -420,7 +420,7 @@ class PokeBattle_Move
end
end
# Random variance
if !self.is_a?(PokeBattle_Confusion)
if !self.is_a?(Battle::Move::Confusion)
random = 85+@battle.pbRandom(16)
multipliers[:final_damage_multiplier] *= random / 100.0
end

View File

@@ -1,9 +1,13 @@
# DO NOT USE ANY CLASS NAMES IN HERE AS FUNCTION CODES!
# These are base classes for other classes to build on; those other classes are
# named after function codes, so use those instead.
#===============================================================================
# Superclass that handles moves using a non-existent function code.
# Damaging moves just do damage with no additional effect.
# Status moves always fail.
#===============================================================================
class PokeBattle_UnimplementedMove < PokeBattle_Move
class Battle::Move::Unimplemented < Battle::Move
def pbMoveFailed?(user,targets)
if statusMove?
@battle.pbDisplay(_INTL("But it failed!"))
@@ -18,7 +22,7 @@ end
#===============================================================================
# Pseudomove for confusion damage.
#===============================================================================
class PokeBattle_Confusion < PokeBattle_Move
class Battle::Move::Confusion < Battle::Move
def initialize(battle,move)
@battle = battle
@realMove = move
@@ -48,9 +52,8 @@ end
#===============================================================================
# Implements the move Struggle.
# For cases where the real move named Struggle is not defined.
#===============================================================================
class PokeBattle_Struggle < PokeBattle_Move
class Battle::Move::Struggle < Battle::Move
def initialize(battle,move)
@battle = battle
@realMove = nil # Not associated with a move
@@ -87,7 +90,7 @@ end
#===============================================================================
# Generic status problem-inflicting classes.
#===============================================================================
class PokeBattle_SleepMove < PokeBattle_Move
class Battle::Move::SleepMove < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -108,7 +111,7 @@ end
class PokeBattle_PoisonMove < PokeBattle_Move
class Battle::Move::PoisonMove < Battle::Move
def canMagicCoat?; return true; end
def initialize(battle,move)
@@ -134,7 +137,7 @@ end
class PokeBattle_ParalysisMove < PokeBattle_Move
class Battle::Move::ParalysisMove < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -155,7 +158,7 @@ end
class PokeBattle_BurnMove < PokeBattle_Move
class Battle::Move::BurnMove < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -176,7 +179,7 @@ end
class PokeBattle_FreezeMove < PokeBattle_Move
class Battle::Move::FreezeMove < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -200,7 +203,7 @@ end
#===============================================================================
# Other problem-causing classes.
#===============================================================================
class PokeBattle_FlinchMove < PokeBattle_Move
class Battle::Move::FlinchMove < Battle::Move
def flinchingMove?; return true; end
def pbEffectAgainstTarget(user,target)
@@ -216,7 +219,7 @@ end
class PokeBattle_ConfuseMove < PokeBattle_Move
class Battle::Move::ConfuseMove < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -241,7 +244,7 @@ end
#===============================================================================
# Generic user's stat increase/decrease classes.
#===============================================================================
class PokeBattle_StatUpMove < PokeBattle_Move
class Battle::Move::StatUpMove < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -263,7 +266,7 @@ end
class PokeBattle_MultiStatUpMove < PokeBattle_Move
class Battle::Move::MultiStatUpMove < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -305,7 +308,7 @@ end
class PokeBattle_StatDownMove < PokeBattle_Move
class Battle::Move::StatDownMove < Battle::Move
def pbEffectWhenDealingDamage(user,target)
return if @battle.pbAllFainted?(target.idxOwnSide)
showAnim = true
@@ -323,7 +326,7 @@ end
#===============================================================================
# Generic target's stat increase/decrease classes.
#===============================================================================
class PokeBattle_TargetStatDownMove < PokeBattle_Move
class Battle::Move::TargetStatDownMove < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -345,7 +348,7 @@ end
class PokeBattle_TargetMultiStatDownMove < PokeBattle_Move
class Battle::Move::TargetMultiStatDownMove < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -394,7 +397,7 @@ class PokeBattle_TargetMultiStatDownMove < PokeBattle_Move
end
if failed
@battle.pbShowAbilitySplash(target)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1}'s {2} activated!", target.pbThis, target.abilityName))
end
user.pbCanLowerStatStage?(@statDown[0], target, self, true, false, true) # Show fail message
@@ -434,7 +437,7 @@ end
#===============================================================================
# Fixed damage-inflicting move.
#===============================================================================
class PokeBattle_FixedDamageMove < PokeBattle_Move
class Battle::Move::FixedDamageMove < Battle::Move
def pbFixedDamage(user,target); return 1; end
def pbCalcDamage(user,target,numTargets=1)
@@ -449,7 +452,7 @@ end
#===============================================================================
# Two turn move.
#===============================================================================
class PokeBattle_TwoTurnMove < PokeBattle_Move
class Battle::Move::TwoTurnMove < Battle::Move
attr_reader :chargingTurn
def chargingTurnMove?; return true; end
@@ -538,7 +541,7 @@ end
#===============================================================================
# Healing move.
#===============================================================================
class PokeBattle_HealingMove < PokeBattle_Move
class Battle::Move::HealingMove < Battle::Move
def healingMove?; return true; end
def pbHealAmount(user); return 1; end
def canSnatch?; return true; end
@@ -563,7 +566,7 @@ end
#===============================================================================
# Recoil move.
#===============================================================================
class PokeBattle_RecoilMove < PokeBattle_Move
class Battle::Move::RecoilMove < Battle::Move
def recoilMove?; return true; end
def pbRecoilDamage(user,target); return 1; end
@@ -584,7 +587,7 @@ end
#===============================================================================
# Protect move.
#===============================================================================
class PokeBattle_ProtectMove < PokeBattle_Move
class Battle::Move::ProtectMove < Battle::Move
def initialize(battle,move)
super
@sidedEffect = false
@@ -646,7 +649,7 @@ end
#===============================================================================
# Weather-inducing move.
#===============================================================================
class PokeBattle_WeatherMove < PokeBattle_Move
class Battle::Move::WeatherMove < Battle::Move
def initialize(battle,move)
super
@weatherType = :None
@@ -680,7 +683,7 @@ end
#===============================================================================
# Pledge move.
#===============================================================================
class PokeBattle_PledgeMove < PokeBattle_Move
class Battle::Move::PledgeMove < Battle::Move
def pbOnStartUse(user,targets)
@pledgeSetup = false
@pledgeCombo = false

View File

@@ -1,13 +1,13 @@
#===============================================================================
# No additional effect.
#===============================================================================
class PokeBattle_Move_None < PokeBattle_Move
class Battle::Move::None < Battle::Move
end
#===============================================================================
# Does absolutely nothing. Shows a special message. (Celebrate)
#===============================================================================
class PokeBattle_Move_DoesNothingCongratuations < PokeBattle_Move
class Battle::Move::DoesNothingCongratuations < Battle::Move
def pbEffectGeneral(user)
if user.wild?
@battle.pbDisplay(_INTL("Congratulations from {1}!",user.pbThis(true)))
@@ -20,7 +20,7 @@ end
#===============================================================================
# Does absolutely nothing. (Hold Hands)
#===============================================================================
class PokeBattle_Move_DoesNothingFailsIfNoAlly < PokeBattle_Move
class Battle::Move::DoesNothingFailsIfNoAlly < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbMoveFailed?(user,targets)
@@ -35,7 +35,7 @@ end
#===============================================================================
# Does absolutely nothing. (Splash)
#===============================================================================
class PokeBattle_Move_DoesNothingUnusableInGravity < PokeBattle_Move
class Battle::Move::DoesNothingUnusableInGravity < Battle::Move
def unusableInGravity?; return true; end
def pbEffectGeneral(user)
@@ -43,12 +43,6 @@ class PokeBattle_Move_DoesNothingUnusableInGravity < PokeBattle_Move
end
end
#===============================================================================
# Struggle, if defined as a move in moves.txt. Typically it won't be.
#===============================================================================
class PokeBattle_Move_Struggle < PokeBattle_Struggle
end
#===============================================================================
# Scatters coins that the player picks up after winning the battle. (Pay Day)
# NOTE: In Gen 6+, if the user levels up after this move is used, the amount of
@@ -56,7 +50,7 @@ end
# when it used the move. I think this is silly, so I haven't coded this
# effect.
#===============================================================================
class PokeBattle_Move_AddMoneyGainedFromBattle < PokeBattle_Move
class Battle::Move::AddMoneyGainedFromBattle < Battle::Move
def pbEffectGeneral(user)
if user.pbOwnedByPlayer?
@battle.field.effects[PBEffects::PayDay] += 5*user.level
@@ -68,7 +62,7 @@ end
#===============================================================================
# Doubles the prize money the player gets after winning the battle. (Happy Hour)
#===============================================================================
class PokeBattle_Move_DoubleMoneyGainedFromBattle < PokeBattle_Move
class Battle::Move::DoubleMoneyGainedFromBattle < Battle::Move
def pbEffectGeneral(user)
@battle.field.effects[PBEffects::HappyHour] = true if !user.opposes?
@battle.pbDisplay(_INTL("Everyone is caught up in the happy atmosphere!"))
@@ -78,7 +72,7 @@ end
#===============================================================================
# Fails if this isn't the user's first turn. (First Impression)
#===============================================================================
class PokeBattle_Move_FailsIfNotUserFirstTurn < PokeBattle_Move
class Battle::Move::FailsIfNotUserFirstTurn < Battle::Move
def pbMoveFailed?(user,targets)
if user.turnCount > 1
@battle.pbDisplay(_INTL("But it failed!"))
@@ -91,7 +85,7 @@ end
#===============================================================================
# Fails unless user has already used all other moves it knows. (Last Resort)
#===============================================================================
class PokeBattle_Move_FailsIfUserHasUnusedMove < PokeBattle_Move
class Battle::Move::FailsIfUserHasUnusedMove < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
hasThisMove = false
hasOtherMoves = false
@@ -112,7 +106,7 @@ end
#===============================================================================
# Fails unless user has consumed a berry at some point. (Belch)
#===============================================================================
class PokeBattle_Move_FailsIfUserNotConsumedBerry < PokeBattle_Move
class Battle::Move::FailsIfUserNotConsumedBerry < Battle::Move
def pbCanChooseMove?(user,commandPhase,showMessages)
if !user.belched?
if showMessages
@@ -137,7 +131,7 @@ end
# Fails if the target is not holding an item, or if the target is affected by
# Magic Room/Klutz. (Poltergeist)
#===============================================================================
class PokeBattle_Move_FailsIfTargetHasNoItem < PokeBattle_Move
class Battle::Move::FailsIfTargetHasNoItem < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
if !target.item || !target.itemActive?
@battle.pbDisplay(_INTL("But it failed!")) if show_message
@@ -151,7 +145,7 @@ end
#===============================================================================
# Only damages Pokémon that share a type with the user. (Synchronoise)
#===============================================================================
class PokeBattle_Move_FailsUnlessTargetSharesTypeWithUser < PokeBattle_Move
class Battle::Move::FailsUnlessTargetSharesTypeWithUser < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
userTypes = user.pbTypes(true)
targetTypes = target.pbTypes(true)
@@ -172,7 +166,7 @@ end
#===============================================================================
# Fails if user was hit by a damaging move this round. (Focus Punch)
#===============================================================================
class PokeBattle_Move_FailsIfUserDamagedThisTurn < PokeBattle_Move
class Battle::Move::FailsIfUserDamagedThisTurn < Battle::Move
def pbDisplayChargeMessage(user)
user.effects[PBEffects::FocusPunch] = true
@battle.pbCommonAnimation("FocusPunch",user)
@@ -196,7 +190,7 @@ end
# Fails if the target didn't chose a damaging move to use this round, or has
# already moved. (Sucker Punch)
#===============================================================================
class PokeBattle_Move_FailsIfTargetActed < PokeBattle_Move
class Battle::Move::FailsIfTargetActed < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
if @battle.choices[target.index][0]!=:UseMove
@battle.pbDisplay(_INTL("But it failed!")) if show_message
@@ -217,7 +211,7 @@ end
# If attack misses, user takes crash damage of 1/2 of max HP.
# (High Jump Kick, Jump Kick)
#===============================================================================
class PokeBattle_Move_CrashDamageIfFailsUnusableInGravity < PokeBattle_Move
class Battle::Move::CrashDamageIfFailsUnusableInGravity < Battle::Move
def recoilMove?; return true; end
def unusableInGravity?; return true; end
@@ -234,7 +228,7 @@ end
#===============================================================================
# Starts sunny weather. (Sunny Day)
#===============================================================================
class PokeBattle_Move_StartSunWeather < PokeBattle_WeatherMove
class Battle::Move::StartSunWeather < Battle::Move::WeatherMove
def initialize(battle,move)
super
@weatherType = :Sun
@@ -244,7 +238,7 @@ end
#===============================================================================
# Starts rainy weather. (Rain Dance)
#===============================================================================
class PokeBattle_Move_StartRainWeather < PokeBattle_WeatherMove
class Battle::Move::StartRainWeather < Battle::Move::WeatherMove
def initialize(battle,move)
super
@weatherType = :Rain
@@ -254,7 +248,7 @@ end
#===============================================================================
# Starts sandstorm weather. (Sandstorm)
#===============================================================================
class PokeBattle_Move_StartSandstormWeather < PokeBattle_WeatherMove
class Battle::Move::StartSandstormWeather < Battle::Move::WeatherMove
def initialize(battle,move)
super
@weatherType = :Sandstorm
@@ -264,7 +258,7 @@ end
#===============================================================================
# Starts hail weather. (Hail)
#===============================================================================
class PokeBattle_Move_StartHailWeather < PokeBattle_WeatherMove
class Battle::Move::StartHailWeather < Battle::Move::WeatherMove
def initialize(battle,move)
super
@weatherType = :Hail
@@ -276,7 +270,7 @@ end
# prevents Pokémon from falling asleep. Affects non-airborne Pokémon only.
# (Electric Terrain)
#===============================================================================
class PokeBattle_Move_StartElectricTerrain < PokeBattle_Move
class Battle::Move::StartElectricTerrain < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.field.terrain == :Electric
@battle.pbDisplay(_INTL("But it failed!"))
@@ -295,7 +289,7 @@ end
# Pokémon at the end of each round. Affects non-airborne Pokémon only.
# (Grassy Terrain)
#===============================================================================
class PokeBattle_Move_StartGrassyTerrain < PokeBattle_Move
class Battle::Move::StartGrassyTerrain < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.field.terrain == :Grassy
@battle.pbDisplay(_INTL("But it failed!"))
@@ -314,7 +308,7 @@ end
# protects Pokémon from status problems. Affects non-airborne Pokémon only.
# (Misty Terrain)
#===============================================================================
class PokeBattle_Move_StartMistyTerrain < PokeBattle_Move
class Battle::Move::StartMistyTerrain < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.field.terrain == :Misty
@battle.pbDisplay(_INTL("But it failed!"))
@@ -333,7 +327,7 @@ end
# prevents Pokémon from being hit by >0 priority moves. Affects non-airborne
# Pokémon only. (Psychic Terrain)
#===============================================================================
class PokeBattle_Move_StartPsychicTerrain < PokeBattle_Move
class Battle::Move::StartPsychicTerrain < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.field.terrain == :Psychic
@battle.pbDisplay(_INTL("But it failed!"))
@@ -351,7 +345,7 @@ end
# Removes the current terrain. Fails if there is no terrain in effect.
# (Steel Roller)
#===============================================================================
class PokeBattle_Move_RemoveTerrain < PokeBattle_Move
class Battle::Move::RemoveTerrain < Battle::Move
def pbMoveFailed?(user, targets)
if @battle.field.terrain == :None
@battle.pbDisplay(_INTL("But it failed!"))
@@ -378,7 +372,7 @@ end
#===============================================================================
# Entry hazard. Lays spikes on the opposing side (max. 3 layers). (Spikes)
#===============================================================================
class PokeBattle_Move_AddSpikesToFoeSide < PokeBattle_Move
class Battle::Move::AddSpikesToFoeSide < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -400,7 +394,7 @@ end
# Entry hazard. Lays poison spikes on the opposing side (max. 2 layers).
# (Toxic Spikes)
#===============================================================================
class PokeBattle_Move_AddToxicSpikesToFoeSide < PokeBattle_Move
class Battle::Move::AddToxicSpikesToFoeSide < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -421,7 +415,7 @@ end
#===============================================================================
# Entry hazard. Lays stealth rocks on the opposing side. (Stealth Rock)
#===============================================================================
class PokeBattle_Move_AddStealthRocksToFoeSide < PokeBattle_Move
class Battle::Move::AddStealthRocksToFoeSide < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -442,7 +436,7 @@ end
#===============================================================================
# Entry hazard. Lays stealth rocks on the opposing side. (Sticky Web)
#===============================================================================
class PokeBattle_Move_AddStickyWebToFoeSide < PokeBattle_Move
class Battle::Move::AddStickyWebToFoeSide < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -464,7 +458,7 @@ end
# All effects that apply to one side of the field are swapped to the opposite
# side. (Court Change)
#===============================================================================
class PokeBattle_Move_SwapSideEffects < PokeBattle_Move
class Battle::Move::SwapSideEffects < Battle::Move
def initialize(battle, move)
super
@number_effects = [
@@ -526,7 +520,7 @@ end
#===============================================================================
# User turns 1/4 of max HP into a substitute. (Substitute)
#===============================================================================
class PokeBattle_Move_UserMakeSubstitute < PokeBattle_Move
class Battle::Move::UserMakeSubstitute < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -560,7 +554,7 @@ end
# Removes trapping moves, entry hazards and Leech Seed on user/user's side.
# Raises user's Speed by 1 stage (Gen 8+). (Rapid Spin)
#===============================================================================
class PokeBattle_Move_RemoveUserBindingAndEntryHazards < PokeBattle_StatUpMove
class Battle::Move::RemoveUserBindingAndEntryHazards < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPEED, 1]
@@ -606,7 +600,7 @@ end
#===============================================================================
# Attacks 2 rounds in the future. (Doom Desire, Future Sight)
#===============================================================================
class PokeBattle_Move_AttackTwoTurnsLater < PokeBattle_Move
class Battle::Move::AttackTwoTurnsLater < Battle::Move
def targetsPosition?; return true; end
def pbDamagingMove? # Stops damage being dealt in the setting-up turn
@@ -655,7 +649,7 @@ end
#===============================================================================
# User switches places with its ally. (Ally Switch)
#===============================================================================
class PokeBattle_Move_UserSwapsPositionsWithAlly < PokeBattle_Move
class Battle::Move::UserSwapsPositionsWithAlly < Battle::Move
def pbMoveFailed?(user,targets)
numTargets = 0
@idxAlly = -1
@@ -688,7 +682,7 @@ end
# If a Pokémon makes contact with the user before it uses this move, the
# attacker is burned. (Beak Blast)
#===============================================================================
class PokeBattle_Move_BurnAttackerBeforeUserActs < PokeBattle_Move
class Battle::Move::BurnAttackerBeforeUserActs < Battle::Move
def pbDisplayChargeMessage(user)
user.effects[PBEffects::BeakBlast] = true
@battle.pbCommonAnimation("BeakBlast",user)

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Increases the user's Attack by 1 stage.
#===============================================================================
class PokeBattle_Move_RaiseUserAttack1 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserAttack1 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1]
@@ -11,7 +11,7 @@ end
#===============================================================================
# Increases the user's Attack by 2 stages. (Swords Dance)
#===============================================================================
class PokeBattle_Move_RaiseUserAttack2 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserAttack2 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,2]
@@ -22,7 +22,7 @@ end
# If this move KO's the target, increases the user's Attack by 2 stages.
# (Fell Stinger (Gen 6-))
#===============================================================================
class PokeBattle_Move_RaiseUserAttack2IfTargetFaints < PokeBattle_Move
class Battle::Move::RaiseUserAttack2IfTargetFaints < Battle::Move
def pbEffectAfterAllHits(user, target)
return if !target.damageState.fainted
return if !user.pbCanRaiseStatStage?(:ATTACK, user, self)
@@ -33,7 +33,7 @@ end
#===============================================================================
# Increases the user's Attack by 3 stages.
#===============================================================================
class PokeBattle_Move_RaiseUserAttack3 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserAttack3 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:ATTACK, 3]
@@ -44,7 +44,7 @@ end
# If this move KO's the target, increases the user's Attack by 3 stages.
# (Fell Stinger (Gen 7+))
#===============================================================================
class PokeBattle_Move_RaiseUserAttack3IfTargetFaints < PokeBattle_Move
class Battle::Move::RaiseUserAttack3IfTargetFaints < Battle::Move
def pbEffectAfterAllHits(user,target)
return if !target.damageState.fainted
return if !user.pbCanRaiseStatStage?(:ATTACK,user,self)
@@ -56,7 +56,7 @@ end
# Reduces the user's HP by half of max, and sets its Attack to maximum.
# (Belly Drum)
#===============================================================================
class PokeBattle_Move_MaxUserAttackLoseHalfOfTotalHP < PokeBattle_Move
class Battle::Move::MaxUserAttackLoseHalfOfTotalHP < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -91,7 +91,7 @@ end
#===============================================================================
# Increases the user's Defense by 1 stage. (Harden, Steel Wing, Withdraw)
#===============================================================================
class PokeBattle_Move_RaiseUserDefense1 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserDefense1 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:DEFENSE,1]
@@ -101,7 +101,7 @@ end
#===============================================================================
# Increases the user's Defense by 1 stage. User curls up. (Defense Curl)
#===============================================================================
class PokeBattle_Move_RaiseUserDefense1CurlUpUser < PokeBattle_StatUpMove
class Battle::Move::RaiseUserDefense1CurlUpUser < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:DEFENSE,1]
@@ -116,7 +116,7 @@ end
#===============================================================================
# Increases the user's Defense by 2 stages. (Acid Armor, Barrier, Iron Defense)
#===============================================================================
class PokeBattle_Move_RaiseUserDefense2 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserDefense2 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:DEFENSE,2]
@@ -126,7 +126,7 @@ end
#===============================================================================
# Increases the user's Defense by 3 stages. (Cotton Guard)
#===============================================================================
class PokeBattle_Move_RaiseUserDefense3 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserDefense3 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:DEFENSE,3]
@@ -136,7 +136,7 @@ end
#===============================================================================
# Increases the user's Special Attack by 1 stage. (Charge Beam, Fiery Dance)
#===============================================================================
class PokeBattle_Move_RaiseUserSpAtk1 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpAtk1 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPECIAL_ATTACK,1]
@@ -146,7 +146,7 @@ end
#===============================================================================
# Increases the user's Special Attack by 2 stages. (Nasty Plot)
#===============================================================================
class PokeBattle_Move_RaiseUserSpAtk2 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpAtk2 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPECIAL_ATTACK,2]
@@ -156,7 +156,7 @@ end
#===============================================================================
# Increases the user's Special Attack by 3 stages. (Tail Glow)
#===============================================================================
class PokeBattle_Move_RaiseUserSpAtk3 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpAtk3 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPECIAL_ATTACK,3]
@@ -166,7 +166,7 @@ end
#===============================================================================
# Increases the user's Special Defense by 1 stage.
#===============================================================================
class PokeBattle_Move_RaiseUserSpDef1 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpDef1 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:SPECIAL_DEFENSE, 1]
@@ -177,7 +177,7 @@ end
# Increases the user's Special Defense by 1 stage.
# Charges up user's next attack if it is Electric-type. (Charge)
#===============================================================================
class PokeBattle_Move_RaiseUserSpDef1PowerUpElectricMove < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpDef1PowerUpElectricMove < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPECIAL_DEFENSE,1]
@@ -193,7 +193,7 @@ end
#===============================================================================
# Increases the user's Special Defense by 2 stages. (Amnesia)
#===============================================================================
class PokeBattle_Move_RaiseUserSpDef2 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpDef2 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPECIAL_DEFENSE,2]
@@ -203,7 +203,7 @@ end
#===============================================================================
# Increases the user's Special Defense by 3 stages.
#===============================================================================
class PokeBattle_Move_RaiseUserSpDef3 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpDef3 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:SPECIAL_DEFENSE, 3]
@@ -213,7 +213,7 @@ end
#===============================================================================
# Increases the user's Speed by 1 stage. (Flame Charge)
#===============================================================================
class PokeBattle_Move_RaiseUserSpeed1 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpeed1 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPEED,1]
@@ -223,7 +223,7 @@ end
#===============================================================================
# Increases the user's Speed by 2 stages. (Agility, Rock Polish)
#===============================================================================
class PokeBattle_Move_RaiseUserSpeed2 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpeed2 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPEED,2]
@@ -234,7 +234,7 @@ end
# Increases the user's Speed by 2 stages. Lowers user's weight by 100kg.
# (Autotomize)
#===============================================================================
class PokeBattle_Move_RaiseUserSpeed2LowerUserWeight < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpeed2LowerUserWeight < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:SPEED,2]
@@ -252,7 +252,7 @@ end
#===============================================================================
# Increases the user's Speed by 3 stages.
#===============================================================================
class PokeBattle_Move_RaiseUserSpeed3 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserSpeed3 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:SPEED, 3]
@@ -262,7 +262,7 @@ end
#===============================================================================
# Increases the user's accuracy by 1 stage.
#===============================================================================
class PokeBattle_Move_RaiseUserAccuracy1 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserAccuracy1 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:ACCURACY, 1]
@@ -272,7 +272,7 @@ end
#===============================================================================
# Increases the user's accuracy by 2 stages.
#===============================================================================
class PokeBattle_Move_RaiseUserAccuracy2 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserAccuracy2 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:ACCURACY, 2]
@@ -282,7 +282,7 @@ end
#===============================================================================
# Increases the user's accuracy by 3 stages.
#===============================================================================
class PokeBattle_Move_RaiseUserAccuracy3 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserAccuracy3 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:ACCURACY, 3]
@@ -292,7 +292,7 @@ end
#===============================================================================
# Increases the user's evasion by 1 stage. (Double Team)
#===============================================================================
class PokeBattle_Move_RaiseUserEvasion1 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserEvasion1 < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:EVASION,1]
@@ -302,7 +302,7 @@ end
#===============================================================================
# Increases the user's evasion by 2 stages.
#===============================================================================
class PokeBattle_Move_RaiseUserEvasion2 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserEvasion2 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:EVASION, 2]
@@ -312,7 +312,7 @@ end
#===============================================================================
# Increases the user's evasion by 2 stages. Minimizes the user. (Minimize)
#===============================================================================
class PokeBattle_Move_RaiseUserEvasion2MinimizeUser < PokeBattle_StatUpMove
class Battle::Move::RaiseUserEvasion2MinimizeUser < Battle::Move::StatUpMove
def initialize(battle,move)
super
@statUp = [:EVASION,2]
@@ -327,7 +327,7 @@ end
#===============================================================================
# Increases the user's evasion by 3 stages.
#===============================================================================
class PokeBattle_Move_RaiseUserEvasion3 < PokeBattle_StatUpMove
class Battle::Move::RaiseUserEvasion3 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:EVASION, 3]
@@ -337,7 +337,7 @@ end
#===============================================================================
# Increases the user's critical hit rate. (Focus Energy)
#===============================================================================
class PokeBattle_Move_RaiseUserCriticalHitRate2 < PokeBattle_Move
class Battle::Move::RaiseUserCriticalHitRate2 < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -357,7 +357,7 @@ end
#===============================================================================
# Increases the user's Attack and Defense by 1 stage each. (Bulk Up)
#===============================================================================
class PokeBattle_Move_RaiseUserAtkDef1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserAtkDef1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1,:DEFENSE,1]
@@ -367,7 +367,7 @@ end
#===============================================================================
# Increases the user's Attack, Defense and accuracy by 1 stage each. (Coil)
#===============================================================================
class PokeBattle_Move_RaiseUserAtkDefAcc1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserAtkDefAcc1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1,:DEFENSE,1,:ACCURACY,1]
@@ -377,7 +377,7 @@ end
#===============================================================================
# Increases the user's Attack and Special Attack by 1 stage each. (Work Up)
#===============================================================================
class PokeBattle_Move_RaiseUserAtkSpAtk1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserAtkSpAtk1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1,:SPECIAL_ATTACK,1]
@@ -388,7 +388,7 @@ end
# Increases the user's Attack and Sp. Attack by 1 stage each.
# In sunny weather, increases are 2 stages each instead. (Growth)
#===============================================================================
class PokeBattle_Move_RaiseUserAtkSpAtk1Or2InSun < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserAtkSpAtk1Or2InSun < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1,:SPECIAL_ATTACK,1]
@@ -406,7 +406,7 @@ end
# Increases the user's Attack, Speed and Special Attack by 2 stages each.
# (Shell Smash)
#===============================================================================
class PokeBattle_Move_LowerUserDefSpDef1RaiseUserAtkSpAtkSpd2 < PokeBattle_Move
class Battle::Move::LowerUserDefSpDef1RaiseUserAtkSpAtkSpd2 < Battle::Move
def canSnatch?; return true; end
def initialize(battle,move)
@@ -457,7 +457,7 @@ end
#===============================================================================
# Increases the user's Attack and Speed by 1 stage each. (Dragon Dance)
#===============================================================================
class PokeBattle_Move_RaiseUserAtkSpd1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserAtkSpd1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1,:SPEED,1]
@@ -467,7 +467,7 @@ end
#===============================================================================
# Increases the user's Speed by 2 stages, and its Attack by 1 stage. (Shift Gear)
#===============================================================================
class PokeBattle_Move_RaiseUserAtk1Spd2 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserAtk1Spd2 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:SPEED,2,:ATTACK,1]
@@ -477,7 +477,7 @@ end
#===============================================================================
# Increases the user's Attack and accuracy by 1 stage each. (Hone Claws)
#===============================================================================
class PokeBattle_Move_RaiseUserAtkAcc1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserAtkAcc1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1,:ACCURACY,1]
@@ -488,7 +488,7 @@ end
# Increases the user's Defense and Special Defense by 1 stage each.
# (Cosmic Power, Defend Order)
#===============================================================================
class PokeBattle_Move_RaiseUserDefSpDef1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserDefSpDef1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:DEFENSE,1,:SPECIAL_DEFENSE,1]
@@ -498,7 +498,7 @@ end
#===============================================================================
# Increases the user's Sp. Attack and Sp. Defense by 1 stage each. (Calm Mind)
#===============================================================================
class PokeBattle_Move_RaiseUserSpAtkSpDef1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserSpAtkSpDef1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:SPECIAL_ATTACK,1,:SPECIAL_DEFENSE,1]
@@ -509,7 +509,7 @@ end
# Increases the user's Sp. Attack, Sp. Defense and Speed by 1 stage each.
# (Quiver Dance)
#===============================================================================
class PokeBattle_Move_RaiseUserSpAtkSpDefSpd1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserSpAtkSpDefSpd1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:SPECIAL_ATTACK,1,:SPECIAL_DEFENSE,1,:SPEED,1]
@@ -520,7 +520,7 @@ end
# Increases the user's Attack, Defense, Speed, Special Attack and Special Defense
# by 1 stage each. (Ancient Power, Ominous Wind, Silver Wind)
#===============================================================================
class PokeBattle_Move_RaiseUserMainStats1 < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserMainStats1 < Battle::Move::MultiStatUpMove
def initialize(battle,move)
super
@statUp = [:ATTACK,1,:DEFENSE,1,:SPECIAL_ATTACK,1,:SPECIAL_DEFENSE,1,:SPEED,1]
@@ -532,7 +532,7 @@ end
# Speed by 1 stage each, and reduces the user's HP by a third of its total HP.
# Fails if it can't do either effect. (Clangorous Soul)
#===============================================================================
class PokeBattle_Move_RaiseUserMainStats1LoseThirdOfTotalHP < PokeBattle_MultiStatUpMove
class Battle::Move::RaiseUserMainStats1LoseThirdOfTotalHP < Battle::Move::MultiStatUpMove
def initialize(battle, move)
super
@statUp = [
@@ -568,7 +568,7 @@ end
# still switch out if holding Shed Shell or Eject Button, or if affected by a
# Red Card. (No Retreat)
#===============================================================================
class PokeBattle_Move_RaiseUserMainStats1TrapUserInBattle < PokeBattle_Move_RaiseUserMainStats1
class Battle::Move::RaiseUserMainStats1TrapUserInBattle < Battle::Move::RaiseUserMainStats1
def pbMoveFailed?(user, targets)
if user.effects[PBEffects::NoRetreat]
@battle.pbDisplay(_INTL("But it failed!"))
@@ -591,7 +591,7 @@ end
# (Handled in Battler's pbProcessMoveAgainstTarget): Ups rager's Attack by 1
# stage each time it loses HP due to a move.
#===============================================================================
class PokeBattle_Move_StartRaiseUserAtk1WhenDamaged < PokeBattle_Move
class Battle::Move::StartRaiseUserAtk1WhenDamaged < Battle::Move
def pbEffectGeneral(user)
user.effects[PBEffects::Rage] = true
end
@@ -600,7 +600,7 @@ end
#===============================================================================
# Decreases the user's Attack by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerUserAttack1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserAttack1 < Battle::Move::StatDownMove
def initialize(battle, move)
super
@statDown = [:ATTACK, 1]
@@ -610,7 +610,7 @@ end
#===============================================================================
# Decreases the user's Attack by 2 stages.
#===============================================================================
class PokeBattle_Move_LowerUserAttack2 < PokeBattle_StatDownMove
class Battle::Move::LowerUserAttack2 < Battle::Move::StatDownMove
def initialize(battle, move)
super
@statDown = [:ATTACK, 2]
@@ -620,7 +620,7 @@ end
#===============================================================================
# Decreases the user's Defense by 1 stage. (Clanging Scales)
#===============================================================================
class PokeBattle_Move_LowerUserDefense1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserDefense1 < Battle::Move::StatDownMove
def initialize(battle,move)
super
@statDown = [:DEFENSE,1]
@@ -630,7 +630,7 @@ end
#===============================================================================
# Decreases the user's Defense by 2 stages.
#===============================================================================
class PokeBattle_Move_LowerUserDefense2 < PokeBattle_StatDownMove
class Battle::Move::LowerUserDefense2 < Battle::Move::StatDownMove
def initialize(battle, move)
super
@statDown = [:DEFENSE, 2]
@@ -640,7 +640,7 @@ end
#===============================================================================
# Decreases the user's Special Attack by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerUserSpAtk1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserSpAtk1 < Battle::Move::StatDownMove
def initialize(battle, move)
super
@statDown = [:SPECIAL_ATTACK, 1]
@@ -650,7 +650,7 @@ end
#===============================================================================
# Decreases the user's Special Attack by 2 stages.
#===============================================================================
class PokeBattle_Move_LowerUserSpAtk2 < PokeBattle_StatDownMove
class Battle::Move::LowerUserSpAtk2 < Battle::Move::StatDownMove
def initialize(battle,move)
super
@statDown = [:SPECIAL_ATTACK,2]
@@ -660,7 +660,7 @@ end
#===============================================================================
# Decreases the user's Special Defense by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerUserSpDef1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserSpDef1 < Battle::Move::StatDownMove
def initialize(battle, move)
super
@statDown = [:SPECIAL_DEFENSE, 1]
@@ -670,7 +670,7 @@ end
#===============================================================================
# Decreases the user's Special Defense by 2 stages.
#===============================================================================
class PokeBattle_Move_LowerUserSpDef2 < PokeBattle_StatDownMove
class Battle::Move::LowerUserSpDef2 < Battle::Move::StatDownMove
def initialize(battle, move)
super
@statDown = [:SPECIAL_DEFENSE, 2]
@@ -680,7 +680,7 @@ end
#===============================================================================
# Decreases the user's Speed by 1 stage. (Hammer Arm, Ice Hammer)
#===============================================================================
class PokeBattle_Move_LowerUserSpeed1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserSpeed1 < Battle::Move::StatDownMove
def initialize(battle,move)
super
@statDown = [:SPEED,1]
@@ -690,7 +690,7 @@ end
#===============================================================================
# Decreases the user's Speed by 2 stages.
#===============================================================================
class PokeBattle_Move_LowerUserSpeed2 < PokeBattle_StatDownMove
class Battle::Move::LowerUserSpeed2 < Battle::Move::StatDownMove
def initialize(battle, move)
super
@statDown = [:SPEED, 2]
@@ -700,7 +700,7 @@ end
#===============================================================================
# Decreases the user's Attack and Defense by 1 stage each. (Superpower)
#===============================================================================
class PokeBattle_Move_LowerUserAtkDef1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserAtkDef1 < Battle::Move::StatDownMove
def initialize(battle,move)
super
@statDown = [:ATTACK,1,:DEFENSE,1]
@@ -711,7 +711,7 @@ end
# Decreases the user's Defense and Special Defense by 1 stage each.
# (Close Combat, Dragon Ascent)
#===============================================================================
class PokeBattle_Move_LowerUserDefSpDef1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserDefSpDef1 < Battle::Move::StatDownMove
def initialize(battle,move)
super
@statDown = [:DEFENSE,1,:SPECIAL_DEFENSE,1]
@@ -724,7 +724,7 @@ end
# Decreases the user's Defense, Special Defense and Speed by 1 stage each.
# (V-create)
#===============================================================================
class PokeBattle_Move_LowerUserDefSpDefSpd1 < PokeBattle_StatDownMove
class Battle::Move::LowerUserDefSpDefSpd1 < Battle::Move::StatDownMove
def initialize(battle,move)
super
@statDown = [:SPEED,1,:DEFENSE,1,:SPECIAL_DEFENSE,1]
@@ -734,7 +734,7 @@ end
#===============================================================================
# Increases the user's and allies' Attack by 1 stage. (Howl (Gen 8+))
#===============================================================================
class PokeBattle_Move_RaiseTargetAttack1 < PokeBattle_Move
class Battle::Move::RaiseTargetAttack1 < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user, targets)
@@ -771,7 +771,7 @@ end
#===============================================================================
# Increases the target's Attack by 2 stages. Confuses the target. (Swagger)
#===============================================================================
class PokeBattle_Move_RaiseTargetAttack2ConfuseTarget < PokeBattle_Move
class Battle::Move::RaiseTargetAttack2ConfuseTarget < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -800,7 +800,7 @@ end
#===============================================================================
# Increases the target's Special Attack by 1 stage. Confuses the target. (Flatter)
#===============================================================================
class PokeBattle_Move_RaiseTargetSpAtk1ConfuseTarget < PokeBattle_Move
class Battle::Move::RaiseTargetSpAtk1ConfuseTarget < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -829,7 +829,7 @@ end
#===============================================================================
# Increases target's Special Defense by 1 stage. (Aromatic Mist)
#===============================================================================
class PokeBattle_Move_RaiseTargetSpDef1 < PokeBattle_Move
class Battle::Move::RaiseTargetSpDef1 < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -845,7 +845,7 @@ end
#===============================================================================
# Increases one random stat of the target by 2 stages (except HP). (Acupressure)
#===============================================================================
class PokeBattle_Move_RaiseTargetRandomStat2 < PokeBattle_Move
class Battle::Move::RaiseTargetRandomStat2 < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
@statArray = []
GameData::Stat.each_battle do |s|
@@ -867,7 +867,7 @@ end
#===============================================================================
# Increases the target's Attack and Special Attack by 2 stages each. (Decorate)
#===============================================================================
class PokeBattle_Move_RaiseTargetAtkSpAtk2 < PokeBattle_Move
class Battle::Move::RaiseTargetAtkSpAtk2 < Battle::Move
def pbMoveFailed?(user, targets)
failed = true
targets.each do |b|
@@ -896,7 +896,7 @@ end
#===============================================================================
# Decreases the target's Attack by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerTargetAttack1 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetAttack1 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:ATTACK,1]
@@ -906,7 +906,7 @@ end
#===============================================================================
# Decreases the target's Attack by 1 stage. Bypasses target's Substitute. (Play Nice)
#===============================================================================
class PokeBattle_Move_LowerTargetAttack1BypassSubstitute < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetAttack1BypassSubstitute < Battle::Move::TargetStatDownMove
def ignoresSubstitute?(user); return true; end
def initialize(battle,move)
@@ -918,7 +918,7 @@ end
#===============================================================================
# Decreases the target's Attack by 2 stages. (Charm, Feather Dance)
#===============================================================================
class PokeBattle_Move_LowerTargetAttack2 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetAttack2 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:ATTACK,2]
@@ -928,7 +928,7 @@ end
#===============================================================================
# Decreases the target's Attack by 3 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetAttack3 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetAttack3 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:ATTACK, 3]
@@ -938,7 +938,7 @@ end
#===============================================================================
# Decreases the target's Defense by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerTargetDefense1 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetDefense1 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:DEFENSE,1]
@@ -949,7 +949,7 @@ end
# Decreases the target's Defense by 1 stage. Power is doubled if Gravity is in
# effect. (Grav Apple)
#===============================================================================
class PokeBattle_Move_LowerTargetDefense1DoublePowerInGravity < PokeBattle_Move_LowerTargetDefense1
class Battle::Move::LowerTargetDefense1DoublePowerInGravity < Battle::Move::LowerTargetDefense1
def pbBaseDamage(baseDmg, user, target)
baseDmg *= 2 if @battle.field.effects[PBEffects::Gravity] > 0
return baseDmg
@@ -959,7 +959,7 @@ end
#===============================================================================
# Decreases the target's Defense by 2 stages. (Screech)
#===============================================================================
class PokeBattle_Move_LowerTargetDefense2 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetDefense2 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:DEFENSE,2]
@@ -969,7 +969,7 @@ end
#===============================================================================
# Decreases the target's Defense by 3 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetDefense3 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetDefense3 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:DEFENSE, 3]
@@ -979,7 +979,7 @@ end
#===============================================================================
# Decreases the target's Special Attack by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerTargetSpAtk1 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpAtk1 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPECIAL_ATTACK,1]
@@ -989,7 +989,7 @@ end
#===============================================================================
# Decreases the target's Special Attack by 2 stages. (Eerie Impulse)
#===============================================================================
class PokeBattle_Move_LowerTargetSpAtk2 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpAtk2 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPECIAL_ATTACK,2]
@@ -1000,7 +1000,7 @@ end
# Decreases the target's Special Attack by 2 stages. Only works on the opposite
# gender. (Captivate)
#===============================================================================
class PokeBattle_Move_LowerTargetSpAtk2IfCanAttract < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpAtk2IfCanAttract < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPECIAL_ATTACK,2]
@@ -1016,7 +1016,7 @@ class PokeBattle_Move_LowerTargetSpAtk2IfCanAttract < PokeBattle_TargetStatDownM
if target.hasActiveAbility?(:OBLIVIOUS) && !@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!", target.pbThis))
else
@battle.pbDisplay(_INTL("{1}'s {2} prevents romance!", target.pbThis, target.abilityName))
@@ -1038,7 +1038,7 @@ end
#===============================================================================
# Decreases the target's Special Attack by 3 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetSpAtk3 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpAtk3 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:SPECIAL_ATTACK, 3]
@@ -1048,7 +1048,7 @@ end
#===============================================================================
# Decreases the target's Special Defense by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerTargetSpDef1 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpDef1 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPECIAL_DEFENSE,1]
@@ -1058,7 +1058,7 @@ end
#===============================================================================
# Decreases the target's Special Defense by 2 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetSpDef2 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpDef2 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPECIAL_DEFENSE,2]
@@ -1068,7 +1068,7 @@ end
#===============================================================================
# Decreases the target's Special Defense by 3 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetSpDef3 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpDef3 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:SPECIAL_DEFENSE, 3]
@@ -1078,7 +1078,7 @@ end
#===============================================================================
# Decreases the target's Speed by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerTargetSpeed1 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpeed1 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPEED,1]
@@ -1089,7 +1089,7 @@ end
# Decreases the target's Speed by 1 stage. Power is halved in Grassy Terrain.
# (Bulldoze)
#===============================================================================
class PokeBattle_Move_LowerTargetSpeed1WeakerInGrassyTerrain < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpeed1WeakerInGrassyTerrain < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPEED,1]
@@ -1106,7 +1106,7 @@ end
# Fire moves used against the target (this effect does not stack). Fails if
# neither of these effects can be applied. (Tar Shot)
#===============================================================================
class PokeBattle_Move_LowerTargetSpeed1MakeTargetWeakerToFire < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpeed1MakeTargetWeakerToFire < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPEED,1]
@@ -1129,7 +1129,7 @@ end
#===============================================================================
# Decreases the target's Speed by 2 stages. (Cotton Spore, Scary Face, String Shot)
#===============================================================================
class PokeBattle_Move_LowerTargetSpeed2 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpeed2 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:SPEED, 2]
@@ -1139,7 +1139,7 @@ end
#===============================================================================
# Decreases the target's Speed by 3 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetSpeed3 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetSpeed3 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:SPEED, 3]
@@ -1149,7 +1149,7 @@ end
#===============================================================================
# Decreases the target's accuracy by 1 stage.
#===============================================================================
class PokeBattle_Move_LowerTargetAccuracy1 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetAccuracy1 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:ACCURACY,1]
@@ -1159,7 +1159,7 @@ end
#===============================================================================
# Decreases the target's accuracy by 2 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetAccuracy2 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetAccuracy2 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:ACCURACY, 2]
@@ -1169,7 +1169,7 @@ end
#===============================================================================
# Decreases the target's accuracy by 3 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetAccuracy3 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetAccuracy3 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:ACCURACY, 3]
@@ -1179,7 +1179,7 @@ end
#===============================================================================
# Decreases the target's evasion by 1 stage. (Sweet Scent (Gen 5-))
#===============================================================================
class PokeBattle_Move_LowerTargetEvasion1 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetEvasion1 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:EVASION, 1]
@@ -1190,7 +1190,7 @@ end
# Decreases the target's evasion by 1 stage. Ends all barriers and entry
# hazards for the target's side OR on both sides. (Defog)
#===============================================================================
class PokeBattle_Move_LowerTargetEvasion1RemoveSideEffects < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetEvasion1RemoveSideEffects < Battle::Move::TargetStatDownMove
def ignoresSubstitute?(user); return true; end
def initialize(battle,move)
@@ -1290,7 +1290,7 @@ end
#===============================================================================
# Decreases the target's evasion by 2 stages. (Sweet Scent (Gen 6+))
#===============================================================================
class PokeBattle_Move_LowerTargetEvasion2 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetEvasion2 < Battle::Move::TargetStatDownMove
def initialize(battle,move)
super
@statDown = [:EVASION, 2]
@@ -1300,7 +1300,7 @@ end
#===============================================================================
# Decreases the target's evasion by 3 stages.
#===============================================================================
class PokeBattle_Move_LowerTargetEvasion3 < PokeBattle_TargetStatDownMove
class Battle::Move::LowerTargetEvasion3 < Battle::Move::TargetStatDownMove
def initialize(battle, move)
super
@statDown = [:EVASION, 3]
@@ -1310,7 +1310,7 @@ end
#===============================================================================
# Decreases the target's Attack and Defense by 1 stage each. (Tickle)
#===============================================================================
class PokeBattle_Move_LowerTargetAtkDef1 < PokeBattle_TargetMultiStatDownMove
class Battle::Move::LowerTargetAtkDef1 < Battle::Move::TargetMultiStatDownMove
def initialize(battle,move)
super
@statDown = [:ATTACK,1,:DEFENSE,1]
@@ -1320,7 +1320,7 @@ end
#===============================================================================
# Decreases the target's Attack and Special Attack by 1 stage each. (Noble Roar)
#===============================================================================
class PokeBattle_Move_LowerTargetAtkSpAtk1 < PokeBattle_TargetMultiStatDownMove
class Battle::Move::LowerTargetAtkSpAtk1 < Battle::Move::TargetMultiStatDownMove
def initialize(battle,move)
super
@statDown = [:ATTACK,1,:SPECIAL_ATTACK,1]
@@ -1331,7 +1331,7 @@ end
# Decreases the Attack, Special Attack and Speed of all poisoned targets by 1
# stage each. (Venom Drench)
#===============================================================================
class PokeBattle_Move_LowerPoisonedTargetAtkSpAtkSpd1 < PokeBattle_Move
class Battle::Move::LowerPoisonedTargetAtkSpAtkSpd1 < Battle::Move
def canMagicCoat?; return true; end
def initialize(battle,move)
@@ -1367,7 +1367,7 @@ class PokeBattle_Move_LowerPoisonedTargetAtkSpAtkSpd1 < PokeBattle_Move
end
if failed
@battle.pbShowAbilitySplash(target)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1}'s {2} activated!", target.pbThis, target.abilityName))
end
user.pbCanLowerStatStage?(@statDown[0], target, self, true, false, true) # Show fail message
@@ -1399,7 +1399,7 @@ end
# Raises the Attack and Defense of all user's allies by 1 stage each. Bypasses
# protections, including Crafty Shield. Fails if there is no ally. (Coaching)
#===============================================================================
class PokeBattle_Move_RaiseUserAndAlliesAtkDef1 < PokeBattle_Move
class Battle::Move::RaiseUserAndAlliesAtkDef1 < Battle::Move
def ignoresSubstitute?(user); return true; end
def canSnatch?; return true; end
@@ -1448,7 +1448,7 @@ end
# aren't protected by their substitute/ability/etc., but they are in Gen
# 6+). We achieve this by not targeting any battlers in Gen 5, since
# pbSuccessCheckAgainstTarget is only called for targeted battlers.
class PokeBattle_Move_RaisePlusMinusUserAndAlliesAtkSpAtk1 < PokeBattle_Move
class Battle::Move::RaisePlusMinusUserAndAlliesAtkSpAtk1 < Battle::Move
def ignoresSubstitute?(user); return true; end
def canSnatch?; return true; end
@@ -1503,7 +1503,7 @@ end
# aren't protected by their substitute/ability/etc., but they are in Gen
# 6+). We achieve this by not targeting any battlers in Gen 5, since
# pbSuccessCheckAgainstTarget is only called for targeted battlers.
class PokeBattle_Move_RaisePlusMinusUserAndAlliesDefSpDef1 < PokeBattle_Move
class Battle::Move::RaisePlusMinusUserAndAlliesDefSpDef1 < Battle::Move
def ignoresSubstitute?(user); return true; end
def canSnatch?; return true; end
@@ -1551,7 +1551,7 @@ end
# Increases the Attack and Special Attack of all Grass-type Pokémon in battle by
# 1 stage each. Doesn't affect airborne Pokémon. (Rototiller)
#===============================================================================
class PokeBattle_Move_RaiseGroundedGrassBattlersAtkSpAtk1 < PokeBattle_Move
class Battle::Move::RaiseGroundedGrassBattlersAtkSpAtk1 < Battle::Move
def pbMoveFailed?(user,targets)
@validTargets = []
@battle.allBattlers.each do |b|
@@ -1593,7 +1593,7 @@ end
# Increases the Defense of all Grass-type Pokémon on the field by 1 stage each.
# (Flower Shield)
#===============================================================================
class PokeBattle_Move_RaiseGrassBattlersDef1 < PokeBattle_Move
class Battle::Move::RaiseGrassBattlersDef1 < Battle::Move
def pbMoveFailed?(user,targets)
@validTargets = []
@battle.allBattlers.each do |b|
@@ -1623,7 +1623,7 @@ end
#===============================================================================
# User and target swap their Attack and Special Attack stat stages. (Power Swap)
#===============================================================================
class PokeBattle_Move_UserTargetSwapAtkSpAtkStages < PokeBattle_Move
class Battle::Move::UserTargetSwapAtkSpAtkStages < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbEffectAgainstTarget(user,target)
@@ -1646,7 +1646,7 @@ end
#===============================================================================
# User and target swap their Defense and Special Defense stat stages. (Guard Swap)
#===============================================================================
class PokeBattle_Move_UserTargetSwapDefSpDefStages < PokeBattle_Move
class Battle::Move::UserTargetSwapDefSpDefStages < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbEffectAgainstTarget(user,target)
@@ -1669,7 +1669,7 @@ end
#===============================================================================
# User and target swap all their stat stages. (Heart Swap)
#===============================================================================
class PokeBattle_Move_UserTargetSwapStatStages < PokeBattle_Move
class Battle::Move::UserTargetSwapStatStages < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbEffectAgainstTarget(user,target)
@@ -1692,7 +1692,7 @@ end
#===============================================================================
# User copies the target's stat stages. (Psych Up)
#===============================================================================
class PokeBattle_Move_UserCopyTargetStatStages < PokeBattle_Move
class Battle::Move::UserCopyTargetStatStages < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbEffectAgainstTarget(user,target)
@@ -1718,7 +1718,7 @@ end
# and target's positive stat stages become 0, before damage calculation.
# (Spectral Thief)
#===============================================================================
class PokeBattle_Move_UserStealTargetPositiveStatStages < PokeBattle_Move
class Battle::Move::UserStealTargetPositiveStatStages < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbCalcDamage(user,target,numTargets=1)
@@ -1745,7 +1745,7 @@ end
#===============================================================================
# Reverses all stat changes of the target. (Topsy-Turvy)
#===============================================================================
class PokeBattle_Move_InvertTargetStatStages < PokeBattle_Move
class Battle::Move::InvertTargetStatStages < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -1773,7 +1773,7 @@ end
#===============================================================================
# Resets all target's stat stages to 0. (Clear Smog)
#===============================================================================
class PokeBattle_Move_ResetTargetStatStages < PokeBattle_Move
class Battle::Move::ResetTargetStatStages < Battle::Move
def pbEffectAgainstTarget(user,target)
if target.damageState.calcDamage>0 && !target.damageState.substitute &&
target.hasAlteredStatStages?
@@ -1786,7 +1786,7 @@ end
#===============================================================================
# Resets all stat stages for all battlers to 0. (Haze)
#===============================================================================
class PokeBattle_Move_ResetAllBattlersStatStages < PokeBattle_Move
class Battle::Move::ResetAllBattlersStatStages < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.allBattlers.none? { |b| b.hasAlteredStatStages? }
@battle.pbDisplay(_INTL("But it failed!"))
@@ -1804,7 +1804,7 @@ end
#===============================================================================
# For 5 rounds, user's and ally's stat stages cannot be lowered by foes. (Mist)
#===============================================================================
class PokeBattle_Move_StartUserSideImmunityToStatStageLowering < PokeBattle_Move
class Battle::Move::StartUserSideImmunityToStatStageLowering < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -1824,7 +1824,7 @@ end
#===============================================================================
# Swaps the user's Attack and Defense stats. (Power Trick)
#===============================================================================
class PokeBattle_Move_UserSwapBaseAtkDef < PokeBattle_Move
class Battle::Move::UserSwapBaseAtkDef < Battle::Move
def canSnatch?; return true; end
def pbEffectGeneral(user)
@@ -1837,7 +1837,7 @@ end
#===============================================================================
# User and target swap their Speed stats (not their stat stages). (Speed Swap)
#===============================================================================
class PokeBattle_Move_UserTargetSwapBaseSpeed < PokeBattle_Move
class Battle::Move::UserTargetSwapBaseSpeed < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbEffectAgainstTarget(user,target)
@@ -1850,7 +1850,7 @@ end
# Averages the user's and target's Attack.
# Averages the user's and target's Special Attack. (Power Split)
#===============================================================================
class PokeBattle_Move_UserTargetAverageBaseAtkSpAtk < PokeBattle_Move
class Battle::Move::UserTargetAverageBaseAtkSpAtk < Battle::Move
def pbEffectAgainstTarget(user,target)
newatk = ((user.attack+target.attack)/2).floor
newspatk = ((user.spatk+target.spatk)/2).floor
@@ -1864,7 +1864,7 @@ end
# Averages the user's and target's Defense.
# Averages the user's and target's Special Defense. (Guard Split)
#===============================================================================
class PokeBattle_Move_UserTargetAverageBaseDefSpDef < PokeBattle_Move
class Battle::Move::UserTargetAverageBaseDefSpDef < Battle::Move
def pbEffectAgainstTarget(user,target)
newdef = ((user.defense+target.defense)/2).floor
newspdef = ((user.spdef+target.spdef)/2).floor
@@ -1877,7 +1877,7 @@ end
#===============================================================================
# Averages the user's and target's current HP. (Pain Split)
#===============================================================================
class PokeBattle_Move_UserTargetAverageHP < PokeBattle_Move
class Battle::Move::UserTargetAverageHP < Battle::Move
def pbEffectAgainstTarget(user,target)
newHP = (user.hp+target.hp)/2
if user.hp>newHP
@@ -1899,7 +1899,7 @@ end
#===============================================================================
# For 4 rounds, doubles the Speed of all battlers on the user's side. (Tailwind)
#===============================================================================
class PokeBattle_Move_StartUserSideDoubleSpeed < PokeBattle_Move
class Battle::Move::StartUserSideDoubleSpeed < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -1920,7 +1920,7 @@ end
# For 5 rounds, swaps all battlers' base Defense with base Special Defense.
# (Wonder Room)
#===============================================================================
class PokeBattle_Move_StartSwapAllBattlersBaseDefensiveStats < PokeBattle_Move
class Battle::Move::StartSwapAllBattlersBaseDefensiveStats < Battle::Move
def pbEffectGeneral(user)
if @battle.field.effects[PBEffects::WonderRoom]>0
@battle.field.effects[PBEffects::WonderRoom] = 0

View File

@@ -1,13 +1,13 @@
#===============================================================================
# Puts the target to sleep.
#===============================================================================
class PokeBattle_Move_SleepTarget < PokeBattle_SleepMove
class Battle::Move::SleepTarget < Battle::Move::SleepMove
end
#===============================================================================
# Puts the target to sleep. Fails if user is not Darkrai. (Dark Void (Gen 7+))
#===============================================================================
class PokeBattle_Move_SleepTargetIfUserDarkrai < PokeBattle_SleepMove
class Battle::Move::SleepTargetIfUserDarkrai < Battle::Move::SleepMove
def pbMoveFailed?(user,targets)
if !user.isSpecies?(:DARKRAI) && user.effects[PBEffects::TransformSpecies] != :DARKRAI
@battle.pbDisplay(_INTL("But {1} can't use the move!",user.pbThis))
@@ -21,7 +21,7 @@ end
# Puts the target to sleep. Changes the user's form if the user is Meloetta.
# (Relic Song)
#===============================================================================
class PokeBattle_Move_SleepTargetChangeUserMeloettaForm < PokeBattle_SleepMove
class Battle::Move::SleepTargetChangeUserMeloettaForm < Battle::Move::SleepMove
def pbEndOfMoveUsageEffect(user,targets,numHits,switchedBattlers)
return if numHits==0
return if user.fainted? || user.effects[PBEffects::Transform]
@@ -35,7 +35,7 @@ end
#===============================================================================
# Makes the target drowsy; it falls asleep at the end of the next turn. (Yawn)
#===============================================================================
class PokeBattle_Move_SleepTargetNextTurn < PokeBattle_Move
class Battle::Move::SleepTargetNextTurn < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -56,13 +56,13 @@ end
#===============================================================================
# Poisons the target.
#===============================================================================
class PokeBattle_Move_PoisonTarget < PokeBattle_PoisonMove
class Battle::Move::PoisonTarget < Battle::Move::PoisonMove
end
#===============================================================================
# Poisons the target and decreases its Speed by 1 stage. (Toxic Thread)
#===============================================================================
class PokeBattle_Move_PoisonTargetLowerTargetSpeed1 < PokeBattle_Move
class Battle::Move::PoisonTargetLowerTargetSpeed1 < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -85,7 +85,7 @@ end
#===============================================================================
# Badly poisons the target. (Poison Fang, Toxic)
#===============================================================================
class PokeBattle_Move_BadPoisonTarget < PokeBattle_PoisonMove
class Battle::Move::BadPoisonTarget < Battle::Move::PoisonMove
def initialize(battle,move)
super
@toxic = true
@@ -99,14 +99,14 @@ end
#===============================================================================
# Paralyzes the target.
#===============================================================================
class PokeBattle_Move_ParalyzeTarget < PokeBattle_ParalysisMove
class Battle::Move::ParalyzeTarget < Battle::Move::ParalysisMove
end
#===============================================================================
# Paralyzes the target. Doesn't affect target if move's type has no effect on
# it. (Thunder Wave)
#===============================================================================
class PokeBattle_Move_ParalyzeTargetIfNotTypeImmune < PokeBattle_ParalysisMove
class Battle::Move::ParalyzeTargetIfNotTypeImmune < Battle::Move::ParalysisMove
def pbFailsAgainstTarget?(user, target, show_message)
if Effectiveness.ineffective?(target.damageState.typeMod)
@battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true))) if show_message
@@ -120,7 +120,7 @@ end
# Paralyzes the target. Does double damage and has perfect accuracy if target is
# Minimized. (Body Slam (Gen 6+))
#===============================================================================
class PokeBattle_Move_ParalyzeTargetTrampleMinimize < PokeBattle_ParalysisMove
class Battle::Move::ParalyzeTargetTrampleMinimize < Battle::Move::ParalysisMove
def tramplesMinimize?(param=1)
return true if param==1 && Settings::MECHANICS_GENERATION >= 6 # Perfect accuracy
return true if param==2 # Double damage
@@ -132,7 +132,7 @@ end
# Paralyzes the target. Accuracy perfect in rain, 50% in sunshine. Hits some
# semi-invulnerable targets. (Thunder)
#===============================================================================
class PokeBattle_Move_ParalyzeTargetAlwaysHitsInRainHitsTargetInSky < PokeBattle_ParalysisMove
class Battle::Move::ParalyzeTargetAlwaysHitsInRainHitsTargetInSky < Battle::Move::ParalysisMove
def hitsFlyingTargets?; return true; end
def pbBaseAccuracy(user,target)
@@ -149,7 +149,7 @@ end
#===============================================================================
# Paralyzes the target. May cause the target to flinch. (Thunder Fang)
#===============================================================================
class PokeBattle_Move_ParalyzeFlinchTarget < PokeBattle_Move
class Battle::Move::ParalyzeFlinchTarget < Battle::Move
def flinchingMove?; return true; end
def pbAdditionalEffect(user,target)
@@ -166,14 +166,14 @@ end
#===============================================================================
# Burns the target.
#===============================================================================
class PokeBattle_Move_BurnTarget < PokeBattle_BurnMove
class Battle::Move::BurnTarget < Battle::Move::BurnMove
end
#===============================================================================
# Burns the target if any of its stats were increased this round.
# (Burning Jealousy)
#===============================================================================
class PokeBattle_Move_BurnTargetIfTargetStatsRaisedThisTurn < PokeBattle_BurnMove
class Battle::Move::BurnTargetIfTargetStatsRaisedThisTurn < Battle::Move::BurnMove
def pbAdditionalEffect(user, target)
super if target.statsRaisedThisRound
end
@@ -182,7 +182,7 @@ end
#===============================================================================
# Burns the target. May cause the target to flinch. (Fire Fang)
#===============================================================================
class PokeBattle_Move_BurnFlinchTarget < PokeBattle_Move
class Battle::Move::BurnFlinchTarget < Battle::Move
def flinchingMove?; return true; end
def pbAdditionalEffect(user,target)
@@ -199,13 +199,13 @@ end
#===============================================================================
# Freezes the target.
#===============================================================================
class PokeBattle_Move_FreezeTarget < PokeBattle_FreezeMove
class Battle::Move::FreezeTarget < Battle::Move::FreezeMove
end
#===============================================================================
# Freezes the target. Effectiveness against Water-type is 2x. (Freeze-Dry)
#===============================================================================
class PokeBattle_Move_FreezeTargetSuperEffectiveAgainstWater < PokeBattle_FreezeMove
class Battle::Move::FreezeTargetSuperEffectiveAgainstWater < Battle::Move::FreezeMove
def pbCalcTypeModSingle(moveType,defType,user,target)
return Effectiveness::SUPER_EFFECTIVE_ONE if defType == :WATER
return super
@@ -215,7 +215,7 @@ end
#===============================================================================
# Freezes the target. Accuracy perfect in hail. (Blizzard)
#===============================================================================
class PokeBattle_Move_FreezeTargetAlwaysHitsInHail < PokeBattle_FreezeMove
class Battle::Move::FreezeTargetAlwaysHitsInHail < Battle::Move::FreezeMove
def pbBaseAccuracy(user,target)
return 0 if target.effectiveWeather == :Hail
return super
@@ -225,7 +225,7 @@ end
#===============================================================================
# Freezes the target. May cause the target to flinch. (Ice Fang)
#===============================================================================
class PokeBattle_Move_FreezeFlinchTarget < PokeBattle_Move
class Battle::Move::FreezeFlinchTarget < Battle::Move
def flinchingMove?; return true; end
def pbAdditionalEffect(user,target)
@@ -242,7 +242,7 @@ end
#===============================================================================
# Burns, freezes or paralyzes the target. (Tri Attack)
#===============================================================================
class PokeBattle_Move_ParalyzeBurnOrFreezeTarget < PokeBattle_Move
class Battle::Move::ParalyzeBurnOrFreezeTarget < Battle::Move
def pbAdditionalEffect(user,target)
return if target.damageState.substitute
case @battle.pbRandom(3)
@@ -256,7 +256,7 @@ end
#===============================================================================
# User passes its status problem to the target. (Psycho Shift)
#===============================================================================
class PokeBattle_Move_GiveUserStatusToTarget < PokeBattle_Move
class Battle::Move::GiveUserStatusToTarget < Battle::Move
def pbMoveFailed?(user,targets)
if user.status == :NONE
@battle.pbDisplay(_INTL("But it failed!"))
@@ -302,7 +302,7 @@ end
#===============================================================================
# Cures user of burn, poison and paralysis. (Refresh)
#===============================================================================
class PokeBattle_Move_CureUserBurnPoisonParalysis < PokeBattle_Move
class Battle::Move::CureUserBurnPoisonParalysis < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -337,7 +337,7 @@ end
# aren't protected by their substitute/ability/etc., but they are in Gen
# 6+). We achieve this by not targeting any battlers in Gen 5, since
# pbSuccessCheckAgainstTarget is only called for targeted battlers.
class PokeBattle_Move_CureUserPartyStatus < PokeBattle_Move
class Battle::Move::CureUserPartyStatus < Battle::Move
def canSnatch?; return true; end
def worksWithNoTargets?; return true; end
@@ -416,7 +416,7 @@ end
#===============================================================================
# Cures the target's burn. (Sparkling Aria)
#===============================================================================
class PokeBattle_Move_CureTargetBurn < PokeBattle_Move
class Battle::Move::CureTargetBurn < Battle::Move
def pbAdditionalEffect(user,target)
return if target.fainted? || target.damageState.substitute
return if target.status != :BURN
@@ -428,7 +428,7 @@ end
# Safeguards the user's side from being inflicted with status problems.
# (Safeguard)
#===============================================================================
class PokeBattle_Move_StartUserSideImmunityToInflictedStatus < PokeBattle_Move
class Battle::Move::StartUserSideImmunityToInflictedStatus < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -448,14 +448,14 @@ end
#===============================================================================
# Causes the target to flinch.
#===============================================================================
class PokeBattle_Move_FlinchTarget < PokeBattle_FlinchMove
class Battle::Move::FlinchTarget < Battle::Move::FlinchMove
end
#===============================================================================
# Causes the target to flinch. Does double damage and has perfect accuracy if
# the target is Minimized. (Dragon Rush (Gen 6+), Steamroller, Stomp)
#===============================================================================
class PokeBattle_Move_FlinchTargetTrampleMinimize < PokeBattle_FlinchMove
class Battle::Move::FlinchTargetTrampleMinimize < Battle::Move::FlinchMove
def tramplesMinimize?(param=1)
return true if param==1 && Settings::MECHANICS_GENERATION >= 6 # Perfect accuracy
return true if param==2 # Double damage
@@ -466,7 +466,7 @@ end
#===============================================================================
# Causes the target to flinch. Fails if the user is not asleep. (Snore)
#===============================================================================
class PokeBattle_Move_FlinchTargetFailsIfUserNotAsleep < PokeBattle_FlinchMove
class Battle::Move::FlinchTargetFailsIfUserNotAsleep < Battle::Move::FlinchMove
def usableWhenAsleep?; return true; end
def pbMoveFailed?(user,targets)
@@ -482,7 +482,7 @@ end
# Causes the target to flinch. Fails if this isn't the user's first turn.
# (Fake Out)
#===============================================================================
class PokeBattle_Move_FlinchTargetFailsIfNotUserFirstTurn < PokeBattle_FlinchMove
class Battle::Move::FlinchTargetFailsIfNotUserFirstTurn < Battle::Move::FlinchMove
def pbMoveFailed?(user,targets)
if user.turnCount > 1
@battle.pbDisplay(_INTL("But it failed!"))
@@ -496,7 +496,7 @@ end
# Power is doubled if the target is using Bounce, Fly or Sky Drop. Hits some
# semi-invulnerable targets. May make the target flinch. (Twister)
#===============================================================================
class PokeBattle_Move_FlinchTargetDoublePowerIfTargetInSky < PokeBattle_FlinchMove
class Battle::Move::FlinchTargetDoublePowerIfTargetInSky < Battle::Move::FlinchMove
def hitsFlyingTargets?; return true; end
def pbBaseDamage(baseDmg,user,target)
@@ -511,14 +511,14 @@ end
#===============================================================================
# Confuses the target.
#===============================================================================
class PokeBattle_Move_ConfuseTarget < PokeBattle_ConfuseMove
class Battle::Move::ConfuseTarget < Battle::Move::ConfuseMove
end
#===============================================================================
# Confuses the target. Accuracy perfect in rain, 50% in sunshine. Hits some
# semi-invulnerable targets. (Hurricane)
#===============================================================================
class PokeBattle_Move_ConfuseTargetAlwaysHitsInRainHitsTargetInSky < PokeBattle_ConfuseMove
class Battle::Move::ConfuseTargetAlwaysHitsInRainHitsTargetInSky < Battle::Move::ConfuseMove
def hitsFlyingTargets?; return true; end
def pbBaseAccuracy(user,target)
@@ -535,7 +535,7 @@ end
#===============================================================================
# Attracts the target. (Attract)
#===============================================================================
class PokeBattle_Move_AttractTarget < PokeBattle_Move
class Battle::Move::AttractTarget < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -560,7 +560,7 @@ end
#===============================================================================
# Changes user's type depending on the environment. (Camouflage)
#===============================================================================
class PokeBattle_Move_SetUserTypesBasedOnEnvironment < PokeBattle_Move
class Battle::Move::SetUserTypesBasedOnEnvironment < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -637,7 +637,7 @@ end
# Changes user's type to a random one that resists/is immune to the last move
# used by the target. (Conversion 2)
#===============================================================================
class PokeBattle_Move_SetUserTypesToResistLastAttack < PokeBattle_Move
class Battle::Move::SetUserTypesToResistLastAttack < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbMoveFailed?(user, targets)
@@ -678,7 +678,7 @@ end
#===============================================================================
# User copes target's types. (Reflect Type)
#===============================================================================
class PokeBattle_Move_SetUserTypesToTargetTypes < PokeBattle_Move
class Battle::Move::SetUserTypesToTargetTypes < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbMoveFailed?(user,targets)
@@ -715,7 +715,7 @@ end
# already has (even partially), OR changes to the user's first move's type.
# (Conversion)
#===============================================================================
class PokeBattle_Move_SetUserTypesToUserMoveType < PokeBattle_Move
class Battle::Move::SetUserTypesToUserMoveType < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -749,7 +749,7 @@ end
#===============================================================================
# The target's types become Psychic. (Magic Powder)
#===============================================================================
class PokeBattle_Move_SetTargetTypesToPsychic < PokeBattle_Move
class Battle::Move::SetTargetTypesToPsychic < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -771,7 +771,7 @@ end
#===============================================================================
# Target becomes Water type. (Soak)
#===============================================================================
class PokeBattle_Move_SetTargetTypesToWater < PokeBattle_Move
class Battle::Move::SetTargetTypesToWater < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -793,7 +793,7 @@ end
#===============================================================================
# Gives target the Ghost type. (Trick-or-Treat)
#===============================================================================
class PokeBattle_Move_AddGhostTypeToTarget < PokeBattle_Move
class Battle::Move::AddGhostTypeToTarget < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -814,7 +814,7 @@ end
#===============================================================================
# Gives target the Grass type. (Forest's Curse)
#===============================================================================
class PokeBattle_Move_AddGrassTypeToTarget < PokeBattle_Move
class Battle::Move::AddGrassTypeToTarget < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -835,7 +835,7 @@ end
#===============================================================================
# User loses their Fire type. Fails if user is not Fire-type. (Burn Up)
#===============================================================================
class PokeBattle_Move_UserLosesFireType < PokeBattle_Move
class Battle::Move::UserLosesFireType < Battle::Move
def pbMoveFailed?(user,targets)
if !user.pbHasType?(:FIRE)
@battle.pbDisplay(_INTL("But it failed!"))
@@ -855,7 +855,7 @@ end
#===============================================================================
# Target's ability becomes Simple. (Simple Beam)
#===============================================================================
class PokeBattle_Move_SetTargetAbilityToSimple < PokeBattle_Move
class Battle::Move::SetTargetAbilityToSimple < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -889,7 +889,7 @@ end
#===============================================================================
# Target's ability becomes Insomnia. (Worry Seed)
#===============================================================================
class PokeBattle_Move_SetTargetAbilityToInsomnia < PokeBattle_Move
class Battle::Move::SetTargetAbilityToInsomnia < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -923,7 +923,7 @@ end
#===============================================================================
# User copies target's ability. (Role Play)
#===============================================================================
class PokeBattle_Move_SetUserAbilityToTargetAbility < PokeBattle_Move
class Battle::Move::SetUserAbilityToTargetAbility < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbMoveFailed?(user,targets)
@@ -963,7 +963,7 @@ end
#===============================================================================
# Target copies user's ability. (Entrainment)
#===============================================================================
class PokeBattle_Move_SetTargetAbilityToUserAbility < PokeBattle_Move
class Battle::Move::SetTargetAbilityToUserAbility < Battle::Move
def canMagicCoat?; return true; end
def pbMoveFailed?(user,targets)
@@ -1002,7 +1002,7 @@ end
#===============================================================================
# User and target swap abilities. (Skill Swap)
#===============================================================================
class PokeBattle_Move_UserTargetSwapAbilities < PokeBattle_Move
class Battle::Move::UserTargetSwapAbilities < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbMoveFailed?(user,targets)
@@ -1051,7 +1051,7 @@ class PokeBattle_Move_UserTargetSwapAbilities < PokeBattle_Move
@battle.pbReplaceAbilitySplash(user)
@battle.pbReplaceAbilitySplash(target)
end
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} swapped Abilities with its target!",user.pbThis))
else
@battle.pbDisplay(_INTL("{1} swapped its {2} Ability with its target's {3} Ability!",
@@ -1071,7 +1071,7 @@ end
#===============================================================================
# Target's ability is negated. (Gastro Acid)
#===============================================================================
class PokeBattle_Move_NegateTargetAbility < PokeBattle_Move
class Battle::Move::NegateTargetAbility < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -1094,7 +1094,7 @@ end
# Negates the target's ability while it remains on the field, if it has already
# performed its action this round. (Core Enforcer)
#===============================================================================
class PokeBattle_Move_NegateTargetAbilityIfTargetActed < PokeBattle_Move
class Battle::Move::NegateTargetAbilityIfTargetActed < Battle::Move
def pbEffectAgainstTarget(user,target)
return if target.damageState.substitute || target.effects[PBEffects::GastroAcid]
return if target.unstoppableAbility?
@@ -1112,7 +1112,7 @@ end
# Ignores all abilities that alter this move's success or damage.
# (Moongeist Beam, Sunsteel Strike)
#===============================================================================
class PokeBattle_Move_IgnoreTargetAbility < PokeBattle_Move
class Battle::Move::IgnoreTargetAbility < Battle::Move
def pbChangeUsageCounters(user,specialUsage)
super
@battle.moldBreaker = true if !specialUsage
@@ -1122,7 +1122,7 @@ end
#===============================================================================
# For 5 rounds, user becomes airborne. (Magnet Rise)
#===============================================================================
class PokeBattle_Move_StartUserAirborne < PokeBattle_Move
class Battle::Move::StartUserAirborne < Battle::Move
def unusableInGravity?; return true; end
def canSnatch?; return true; end
@@ -1145,7 +1145,7 @@ end
#===============================================================================
# For 3 rounds, target becomes airborne and can always be hit. (Telekinesis)
#===============================================================================
class PokeBattle_Move_StartTargetAirborneAndAlwaysHitByMoves < PokeBattle_Move
class Battle::Move::StartTargetAirborneAndAlwaysHitByMoves < Battle::Move
def unusableInGravity?; return true; end
def canMagicCoat?; return true; end
@@ -1176,7 +1176,7 @@ end
#===============================================================================
# Hits airborne semi-invulnerable targets. (Sky Uppercut)
#===============================================================================
class PokeBattle_Move_HitsTargetInSky < PokeBattle_Move
class Battle::Move::HitsTargetInSky < Battle::Move
def hitsFlyingTargets?; return true; end
end
@@ -1184,7 +1184,7 @@ end
# Grounds the target while it remains active. Hits some semi-invulnerable
# targets. (Smack Down, Thousand Arrows)
#===============================================================================
class PokeBattle_Move_HitsTargetInSkyGroundsTarget < PokeBattle_Move
class Battle::Move::HitsTargetInSkyGroundsTarget < Battle::Move
def hitsFlyingTargets?; return true; end
def pbCalcTypeModSingle(moveType,defType,user,target)
@@ -1215,7 +1215,7 @@ end
# For 5 rounds, increases gravity on the field. Pokémon cannot become airborne.
# (Gravity)
#===============================================================================
class PokeBattle_Move_StartGravity < PokeBattle_Move
class Battle::Move::StartGravity < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.field.effects[PBEffects::Gravity]>0
@battle.pbDisplay(_INTL("But it failed!"))
@@ -1253,7 +1253,7 @@ end
#===============================================================================
# User transforms into the target. (Transform)
#===============================================================================
class PokeBattle_Move_TransformUserIntoTarget < PokeBattle_Move
class Battle::Move::TransformUserIntoTarget < Battle::Move
def pbMoveFailed?(user,targets)
if user.effects[PBEffects::Transform]
@battle.pbDisplay(_INTL("But it failed!"))

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Inflicts a fixed 20HP damage. (Sonic Boom)
#===============================================================================
class PokeBattle_Move_FixedDamage20 < PokeBattle_FixedDamageMove
class Battle::Move::FixedDamage20 < Battle::Move::FixedDamageMove
def pbFixedDamage(user,target)
return 20
end
@@ -10,7 +10,7 @@ end
#===============================================================================
# Inflicts a fixed 40HP damage. (Dragon Rage)
#===============================================================================
class PokeBattle_Move_FixedDamage40 < PokeBattle_FixedDamageMove
class Battle::Move::FixedDamage40 < Battle::Move::FixedDamageMove
def pbFixedDamage(user,target)
return 40
end
@@ -19,7 +19,7 @@ end
#===============================================================================
# Halves the target's current HP. (Nature's Madness, Super Fang)
#===============================================================================
class PokeBattle_Move_FixedDamageHalfTargetHP < PokeBattle_FixedDamageMove
class Battle::Move::FixedDamageHalfTargetHP < Battle::Move::FixedDamageMove
def pbFixedDamage(user,target)
return (target.hp/2.0).round
end
@@ -28,7 +28,7 @@ end
#===============================================================================
# Inflicts damage equal to the user's level. (Night Shade, Seismic Toss)
#===============================================================================
class PokeBattle_Move_FixedDamageUserLevel < PokeBattle_FixedDamageMove
class Battle::Move::FixedDamageUserLevel < Battle::Move::FixedDamageMove
def pbFixedDamage(user,target)
return user.level
end
@@ -37,7 +37,7 @@ end
#===============================================================================
# Inflicts damage between 0.5 and 1.5 times the user's level. (Psywave)
#===============================================================================
class PokeBattle_Move_FixedDamageUserLevelRandom < PokeBattle_FixedDamageMove
class Battle::Move::FixedDamageUserLevelRandom < Battle::Move::FixedDamageMove
def pbFixedDamage(user,target)
min = (user.level/2).floor
max = (user.level*3/2).floor
@@ -48,7 +48,7 @@ end
#===============================================================================
# Inflicts damage to bring the target's HP down to equal the user's HP. (Endeavor)
#===============================================================================
class PokeBattle_Move_LowerTargetHPToUserHP < PokeBattle_FixedDamageMove
class Battle::Move::LowerTargetHPToUserHP < Battle::Move::FixedDamageMove
def pbFailsAgainstTarget?(user, target, show_message)
if user.hp>=target.hp
@battle.pbDisplay(_INTL("But it failed!")) if show_message
@@ -67,7 +67,7 @@ end
#===============================================================================
# OHKO. Accuracy increases by difference between levels of user and target.
#===============================================================================
class PokeBattle_Move_OHKO < PokeBattle_FixedDamageMove
class Battle::Move::OHKO < Battle::Move::FixedDamageMove
def pbFailsAgainstTarget?(user, target, show_message)
if target.level>user.level
@battle.pbDisplay(_INTL("{1} is unaffected!", target.pbThis)) if show_message
@@ -76,7 +76,7 @@ class PokeBattle_Move_OHKO < PokeBattle_FixedDamageMove
if target.hasActiveAbility?(:STURDY) && !@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("But it failed to affect {1}!", target.pbThis(true)))
else
@battle.pbDisplay(_INTL("But it failed to affect {1} because of its {2}!",
@@ -111,7 +111,7 @@ end
# Lower accuracy when used by a non-Ice-type Pokémon. Doesn't affect Ice-type
# Pokémon. (Sheer Cold (Gen 7+))
#===============================================================================
class PokeBattle_Move_OHKOIce < PokeBattle_Move_OHKO
class Battle::Move::OHKOIce < Battle::Move::OHKO
def pbFailsAgainstTarget?(user, target, show_message)
if target.pbHasType?(:ICE)
@battle.pbDisplay(_INTL("But it failed!")) if show_message
@@ -131,14 +131,14 @@ end
# OHKO. Accuracy increases by difference between levels of user and target. Hits
# targets that are semi-invulnerable underground. (Fissure)
#===============================================================================
class PokeBattle_Move_OHKOHitsUndergroundTarget < PokeBattle_Move_OHKO
class Battle::Move::OHKOHitsUndergroundTarget < Battle::Move::OHKO
def hitsDiggingTargets?; return true; end
end
#===============================================================================
# The target's ally loses 1/16 of its max HP. (Flame Burst)
#===============================================================================
class PokeBattle_Move_DamageTargetAlly < PokeBattle_Move
class Battle::Move::DamageTargetAlly < Battle::Move
def pbEffectWhenDealingDamage(user,target)
hitAlly = []
target.allAllies.each do |b|
@@ -164,7 +164,7 @@ end
#===============================================================================
# Power increases with the user's HP. (Eruption, Water Spout)
#===============================================================================
class PokeBattle_Move_PowerHigherWithUserHP < PokeBattle_Move
class Battle::Move::PowerHigherWithUserHP < Battle::Move
def pbBaseDamage(baseDmg,user,target)
return [150*user.hp/user.totalhp,1].max
end
@@ -173,7 +173,7 @@ end
#===============================================================================
# Power increases the less HP the user has. (Flail, Reversal)
#===============================================================================
class PokeBattle_Move_PowerLowerWithUserHP < PokeBattle_Move
class Battle::Move::PowerLowerWithUserHP < Battle::Move
def pbBaseDamage(baseDmg,user,target)
ret = 20
n = 48*user.hp/user.totalhp
@@ -195,7 +195,7 @@ end
#===============================================================================
# Power increases with the target's HP. (Crush Grip, Wring Out)
#===============================================================================
class PokeBattle_Move_PowerHigherWithTargetHP < PokeBattle_Move
class Battle::Move::PowerHigherWithTargetHP < Battle::Move
def pbBaseDamage(baseDmg,user,target)
return [120*target.hp/target.totalhp,1].max
end
@@ -204,7 +204,7 @@ end
#===============================================================================
# Power increases with the user's happiness. (Return)
#===============================================================================
class PokeBattle_Move_PowerHigherWithUserHappiness < PokeBattle_Move
class Battle::Move::PowerHigherWithUserHappiness < Battle::Move
def pbBaseDamage(baseDmg,user,target)
return [(user.happiness*2/5).floor,1].max
end
@@ -213,7 +213,7 @@ end
#===============================================================================
# Power decreases with the user's happiness. (Frustration)
#===============================================================================
class PokeBattle_Move_PowerLowerWithUserHappiness < PokeBattle_Move
class Battle::Move::PowerLowerWithUserHappiness < Battle::Move
def pbBaseDamage(baseDmg,user,target)
return [((255-user.happiness)*2/5).floor,1].max
end
@@ -223,7 +223,7 @@ end
# Power increases with the user's positive stat changes (ignores negative ones).
# (Power Trip, Stored Power)
#===============================================================================
class PokeBattle_Move_PowerHigherWithUserPositiveStatStages < PokeBattle_Move
class Battle::Move::PowerHigherWithUserPositiveStatStages < Battle::Move
def pbBaseDamage(baseDmg,user,target)
mult = 1
GameData::Stat.each_battle { |s| mult += user.stages[s.id] if user.stages[s.id] > 0 }
@@ -235,7 +235,7 @@ end
# Power increases with the target's positive stat changes (ignores negative ones).
# (Punishment)
#===============================================================================
class PokeBattle_Move_PowerHigherWithTargetPositiveStatStages < PokeBattle_Move
class Battle::Move::PowerHigherWithTargetPositiveStatStages < Battle::Move
def pbBaseDamage(baseDmg,user,target)
mult = 3
GameData::Stat.each_battle { |s| mult += target.stages[s.id] if target.stages[s.id] > 0 }
@@ -246,7 +246,7 @@ end
#===============================================================================
# Power increases the quicker the user is than the target. (Electro Ball)
#===============================================================================
class PokeBattle_Move_PowerHigherWithUserFasterThanTarget < PokeBattle_Move
class Battle::Move::PowerHigherWithUserFasterThanTarget < Battle::Move
def pbBaseDamage(baseDmg,user,target)
ret = 40
n = user.pbSpeed/target.pbSpeed
@@ -266,7 +266,7 @@ end
#===============================================================================
# Power increases the quicker the target is than the user. (Gyro Ball)
#===============================================================================
class PokeBattle_Move_PowerHigherWithTargetFasterThanUser < PokeBattle_Move
class Battle::Move::PowerHigherWithTargetFasterThanUser < Battle::Move
def pbBaseDamage(baseDmg,user,target)
return [[(25*target.pbSpeed/user.pbSpeed).floor,150].min,1].max
end
@@ -275,7 +275,7 @@ end
#===============================================================================
# Power increases the less PP this move has. (Trump Card)
#===============================================================================
class PokeBattle_Move_PowerHigherWithLessPP < PokeBattle_Move
class Battle::Move::PowerHigherWithLessPP < Battle::Move
def pbBaseDamage(baseDmg,user,target)
dmgs = [200,80,60,50,40]
ppLeft = [@pp,dmgs.length-1].min # PP is reduced before the move is used
@@ -286,7 +286,7 @@ end
#===============================================================================
# Power increases the heavier the target is. (Grass Knot, Low Kick)
#===============================================================================
class PokeBattle_Move_PowerHigherWithTargetWeight < PokeBattle_Move
class Battle::Move::PowerHigherWithTargetWeight < Battle::Move
def pbBaseDamage(baseDmg,user,target)
ret = 20
weight = target.pbWeight
@@ -309,7 +309,7 @@ end
# Power increases the heavier the user is than the target. (Heat Crash, Heavy Slam)
# Does double damage and has perfect accuracy if the target is Minimized.
#===============================================================================
class PokeBattle_Move_PowerHigherWithUserHeavierThanTarget < PokeBattle_Move
class Battle::Move::PowerHigherWithUserHeavierThanTarget < Battle::Move
def tramplesMinimize?(param=1)
return true if Settings::MECHANICS_GENERATION >= 7 # Perfect accuracy and double damage
return super
@@ -334,7 +334,7 @@ end
#===============================================================================
# Power doubles for each consecutive use. (Fury Cutter)
#===============================================================================
class PokeBattle_Move_PowerHigherWithConsecutiveUse < PokeBattle_Move
class Battle::Move::PowerHigherWithConsecutiveUse < Battle::Move
def pbChangeUsageCounters(user,specialUsage)
oldVal = user.effects[PBEffects::FuryCutter]
super
@@ -354,7 +354,7 @@ end
# Power is multiplied by the number of consecutive rounds in which this move was
# used by any Pokémon on the user's side. (Echoed Voice)
#===============================================================================
class PokeBattle_Move_PowerHigherWithConsecutiveUseOnUserSide < PokeBattle_Move
class Battle::Move::PowerHigherWithConsecutiveUseOnUserSide < Battle::Move
def pbChangeUsageCounters(user,specialUsage)
oldVal = user.pbOwnSide.effects[PBEffects::EchoedVoiceCounter]
super
@@ -373,7 +373,7 @@ end
# Power is chosen at random. Power is doubled if the target is using Dig. Hits
# some semi-invulnerable targets. (Magnitude)
#===============================================================================
class PokeBattle_Move_RandomPowerDoublePowerIfTargetUnderground < PokeBattle_Move
class Battle::Move::RandomPowerDoublePowerIfTargetUnderground < Battle::Move
def hitsDiggingTargets?; return true; end
def pbOnStartUse(user,targets)
@@ -406,7 +406,7 @@ end
#===============================================================================
# Power is doubled if the target's HP is down to 1/2 or less. (Brine)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetHPLessThanHalf < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetHPLessThanHalf < Battle::Move
def pbBaseDamage(baseDmg,user,target)
baseDmg *= 2 if target.hp<=target.totalhp/2
return baseDmg
@@ -417,7 +417,7 @@ end
# Power is doubled if the user is burned, poisoned or paralyzed. (Facade)
# Burn's halving of Attack is negated (new mechanics).
#===============================================================================
class PokeBattle_Move_DoublePowerIfUserPoisonedBurnedParalyzed < PokeBattle_Move
class Battle::Move::DoublePowerIfUserPoisonedBurnedParalyzed < Battle::Move
def damageReducedByBurn?; return Settings::MECHANICS_GENERATION <= 5; end
def pbBaseDamage(baseDmg,user,target)
@@ -429,7 +429,7 @@ end
#===============================================================================
# Power is doubled if the target is asleep. Wakes the target up. (Wake-Up Slap)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetAsleepCureTarget < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetAsleepCureTarget < Battle::Move
def pbBaseDamage(baseDmg,user,target)
if target.asleep? &&
(target.effects[PBEffects::Substitute]==0 || ignoresSubstitute?(user))
@@ -449,7 +449,7 @@ end
#===============================================================================
# Power is doubled if the target is poisoned. (Venoshock)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetPoisoned < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetPoisoned < Battle::Move
def pbBaseDamage(baseDmg,user,target)
if target.poisoned? &&
(target.effects[PBEffects::Substitute]==0 || ignoresSubstitute?(user))
@@ -465,7 +465,7 @@ end
# Power is doubled if the target is paralyzed. Cures the target of paralysis.
# (Smelling Salts)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetParalyzedCureTarget < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetParalyzedCureTarget < Battle::Move
def pbBaseDamage(baseDmg,user,target)
if target.paralyzed? &&
(target.effects[PBEffects::Substitute]==0 || ignoresSubstitute?(user))
@@ -485,7 +485,7 @@ end
#===============================================================================
# Power is doubled if the target has a status problem. (Hex)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetStatusProblem < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetStatusProblem < Battle::Move
def pbBaseDamage(baseDmg,user,target)
if target.pbHasAnyStatus? &&
(target.effects[PBEffects::Substitute]==0 || ignoresSubstitute?(user))
@@ -498,7 +498,7 @@ end
#===============================================================================
# Power is doubled if the user has no held item. (Acrobatics)
#===============================================================================
class PokeBattle_Move_DoublePowerIfUserHasNoItem < PokeBattle_Move
class Battle::Move::DoublePowerIfUserHasNoItem < Battle::Move
def pbBaseDamageMultiplier(damageMult,user,target)
damageMult *= 2 if !user.item || user.effects[PBEffects::GemConsumed]
return damageMult
@@ -509,7 +509,7 @@ end
# Power is doubled if the target is using Dive. Hits some semi-invulnerable
# targets. (Surf)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetUnderwater < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetUnderwater < Battle::Move
def hitsDivingTargets?; return true; end
def pbModifyDamage(damageMult,user,target)
@@ -522,7 +522,7 @@ end
# Power is doubled if the target is using Dig. Power is halved if Grassy Terrain
# is in effect. Hits some semi-invulnerable targets. (Earthquake)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetUnderground < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetUnderground < Battle::Move
def hitsDiggingTargets?; return true; end
def pbModifyDamage(damageMult,user,target)
@@ -536,7 +536,7 @@ end
# Power is doubled if the target is using Bounce, Fly or Sky Drop. Hits some
# semi-invulnerable targets. (Gust)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetInSky < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetInSky < Battle::Move
def hitsFlyingTargets?; return true; end
def pbBaseDamage(baseDmg,user,target)
@@ -551,7 +551,7 @@ end
#===============================================================================
# Power is doubled if Electric Terrain applies. (Rising Voltage)
#===============================================================================
class PokeBattle_Move_DoublePowerInElectricTerrain < PokeBattle_Move
class Battle::Move::DoublePowerInElectricTerrain < Battle::Move
def pbBaseDamage(baseDmg, user, target)
baseDmg *= 2 if @battle.field.terrain == :Electric && target.affectedByTerrain?
return baseDmg
@@ -561,7 +561,7 @@ end
#===============================================================================
# Power is doubled if the user's last move failed. (Stomping Tantrum)
#===============================================================================
class PokeBattle_Move_DoublePowerIfUserLastMoveFailed < PokeBattle_Move
class Battle::Move::DoublePowerIfUserLastMoveFailed < Battle::Move
def pbBaseDamage(baseDmg,user,target)
baseDmg *= 2 if user.lastRoundMoveFailed
return baseDmg
@@ -571,7 +571,7 @@ end
#===============================================================================
# Power is doubled if a user's teammate fainted last round. (Retaliate)
#===============================================================================
class PokeBattle_Move_DoublePowerIfAllyFaintedLastTurn < PokeBattle_Move
class Battle::Move::DoublePowerIfAllyFaintedLastTurn < Battle::Move
def pbBaseDamage(baseDmg,user,target)
lrf = user.pbOwnSide.effects[PBEffects::LastRoundFainted]
baseDmg *= 2 if lrf>=0 && lrf==@battle.turnCount-1
@@ -583,7 +583,7 @@ end
# Power is doubled if the user has lost HP due to the target's move this round.
# (Avalanche, Revenge)
#===============================================================================
class PokeBattle_Move_DoublePowerIfUserLostHPThisTurn < PokeBattle_Move
class Battle::Move::DoublePowerIfUserLostHPThisTurn < Battle::Move
def pbBaseDamage(baseDmg,user,target)
baseDmg *= 2 if user.lastAttacker.include?(target.index)
return baseDmg
@@ -593,7 +593,7 @@ end
#===============================================================================
# Power is doubled if the target has already lost HP this round. (Assurance)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetLostHPThisTurn < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetLostHPThisTurn < Battle::Move
def pbBaseDamage(baseDmg,user,target)
baseDmg *= 2 if target.tookDamageThisRound
return baseDmg
@@ -603,7 +603,7 @@ end
#===============================================================================
# Power is doubled if any of the user's stats were lowered this round. (Lash Out)
#===============================================================================
class PokeBattle_Move_DoublePowerIfUserStatsLoweredThisTurn < PokeBattle_Move
class Battle::Move::DoublePowerIfUserStatsLoweredThisTurn < Battle::Move
def pbBaseDamage(baseDmg, user, target)
baseDmg *= 2 if user.statsLoweredThisRound
return baseDmg
@@ -613,7 +613,7 @@ end
#===============================================================================
# Power is doubled if the target has already moved this round. (Payback)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetActed < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetActed < Battle::Move
def pbBaseDamage(baseDmg,user,target)
if @battle.choices[target.index][0]!=:None &&
((@battle.choices[target.index][0]!=:UseMove &&
@@ -628,7 +628,7 @@ end
# Power is doubled if the user moves before the target, or if the target
# switched in this round. (Bolt Beak, Fishious Rend)
#===============================================================================
class PokeBattle_Move_DoublePowerIfTargetNotActed < PokeBattle_Move
class Battle::Move::DoublePowerIfTargetNotActed < Battle::Move
def pbBaseDamage(baseDmg, user, target)
if @battle.choices[target.index][0] == :None || # Switched in
([:UseMove, :Shift].include?(@battle.choices[target.index][0]) && !target.movedThisRound?)
@@ -641,7 +641,7 @@ end
#===============================================================================
# This attack is always a critical hit. (Frost Breath, Storm Throw)
#===============================================================================
class PokeBattle_Move_AlwaysCriticalHit < PokeBattle_Move
class Battle::Move::AlwaysCriticalHit < Battle::Move
def pbCritialOverride(user,target); return 1; end
end
@@ -649,7 +649,7 @@ end
# Until the end of the next round, the user's moves will always be critical hits.
# (Laser Focus)
#===============================================================================
class PokeBattle_Move_EnsureNextCriticalHit < PokeBattle_Move
class Battle::Move::EnsureNextCriticalHit < Battle::Move
def canSnatch?; return true; end
def pbEffectGeneral(user)
@@ -661,7 +661,7 @@ end
#===============================================================================
# For 5 rounds, foes' attacks cannot become critical hits. (Lucky Chant)
#===============================================================================
class PokeBattle_Move_StartPreventCriticalHitsAgainstUserSide < PokeBattle_Move
class Battle::Move::StartPreventCriticalHitsAgainstUserSide < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -682,14 +682,14 @@ end
# If target would be KO'd by this attack, it survives with 1HP instead.
# (False Swipe, Hold Back)
#===============================================================================
class PokeBattle_Move_CannotMakeTargetFaint < PokeBattle_Move
class Battle::Move::CannotMakeTargetFaint < Battle::Move
def nonLethal?(user,target); return true; end
end
#===============================================================================
# If user would be KO'd this round, it survives with 1HP instead. (Endure)
#===============================================================================
class PokeBattle_Move_UserEnduresFaintingThisTurn < PokeBattle_ProtectMove
class Battle::Move::UserEnduresFaintingThisTurn < Battle::Move::ProtectMove
def initialize(battle,move)
super
@effect = PBEffects::Endure
@@ -703,7 +703,7 @@ end
#===============================================================================
# Weakens Electric attacks. (Mud Sport)
#===============================================================================
class PokeBattle_Move_StartWeakenElectricMoves < PokeBattle_Move
class Battle::Move::StartWeakenElectricMoves < Battle::Move
def pbMoveFailed?(user,targets)
if Settings::MECHANICS_GENERATION >= 6
if @battle.field.effects[PBEffects::MudSportField]>0
@@ -732,7 +732,7 @@ end
#===============================================================================
# Weakens Fire attacks. (Water Sport)
#===============================================================================
class PokeBattle_Move_StartWeakenFireMoves < PokeBattle_Move
class Battle::Move::StartWeakenFireMoves < Battle::Move
def pbMoveFailed?(user,targets)
if Settings::MECHANICS_GENERATION >= 6
if @battle.field.effects[PBEffects::WaterSportField]>0
@@ -762,7 +762,7 @@ end
# For 5 rounds, lowers power of physical attacks against the user's side.
# (Reflect)
#===============================================================================
class PokeBattle_Move_StartWeakenPhysicalDamageAgainstUserSide < PokeBattle_Move
class Battle::Move::StartWeakenPhysicalDamageAgainstUserSide < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -783,7 +783,7 @@ end
#===============================================================================
# For 5 rounds, lowers power of special attacks against the user's side. (Light Screen)
#===============================================================================
class PokeBattle_Move_StartWeakenSpecialDamageAgainstUserSide < PokeBattle_Move
class Battle::Move::StartWeakenSpecialDamageAgainstUserSide < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -805,7 +805,7 @@ end
# For 5 rounds, lowers power of attacks against the user's side. Fails if
# weather is not hail. (Aurora Veil)
#===============================================================================
class PokeBattle_Move_StartWeakenDamageAgainstUserSideIfHail < PokeBattle_Move
class Battle::Move::StartWeakenDamageAgainstUserSideIfHail < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -832,7 +832,7 @@ end
# Ends the opposing side's Light Screen, Reflect and Aurora Break. (Brick Break,
# Psychic Fangs)
#===============================================================================
class PokeBattle_Move_RemoveScreens < PokeBattle_Move
class Battle::Move::RemoveScreens < Battle::Move
def ignoresReflect?; return true; end
def pbEffectGeneral(user)
@@ -863,7 +863,7 @@ end
#===============================================================================
# User is protected against moves with the "B" flag this round. (Detect, Protect)
#===============================================================================
class PokeBattle_Move_ProtectUser < PokeBattle_ProtectMove
class Battle::Move::ProtectUser < Battle::Move::ProtectMove
def initialize(battle,move)
super
@effect = PBEffects::Protect
@@ -875,7 +875,7 @@ end
# makes contact with the user while this effect applies, that Pokémon is
# poisoned. (Baneful Bunker)
#===============================================================================
class PokeBattle_Move_ProtectUserBanefulBunker < PokeBattle_ProtectMove
class Battle::Move::ProtectUserBanefulBunker < Battle::Move::ProtectMove
def initialize(battle,move)
super
@effect = PBEffects::BanefulBunker
@@ -886,7 +886,7 @@ end
# User is protected against damaging moves this round. Decreases the Attack of
# the user of a stopped contact move by 2 stages. (King's Shield)
#===============================================================================
class PokeBattle_Move_ProtectUserFromDamagingMovesKingsShield < PokeBattle_ProtectMove
class Battle::Move::ProtectUserFromDamagingMovesKingsShield < Battle::Move::ProtectMove
def initialize(battle,move)
super
@effect = PBEffects::KingsShield
@@ -899,7 +899,7 @@ end
# Defense of the Pokémon using that move by 2 stages. Contributes to Protect's
# counter. (Obstruct)
#===============================================================================
class PokeBattle_Move_ProtectUserFromDamagingMovesObstruct < PokeBattle_ProtectMove
class Battle::Move::ProtectUserFromDamagingMovesObstruct < Battle::Move::ProtectMove
def initialize(battle, move)
super
@effect = PBEffects::Obstruct
@@ -910,7 +910,7 @@ end
# User is protected against moves that target it this round. Damages the user of
# a stopped contact move by 1/8 of its max HP. (Spiky Shield)
#===============================================================================
class PokeBattle_Move_ProtectUserFromTargetingMovesSpikyShield < PokeBattle_ProtectMove
class Battle::Move::ProtectUserFromTargetingMovesSpikyShield < Battle::Move::ProtectMove
def initialize(battle,move)
super
@effect = PBEffects::SpikyShield
@@ -920,7 +920,7 @@ end
#===============================================================================
# This round, the user's side is unaffected by damaging moves. (Mat Block)
#===============================================================================
class PokeBattle_Move_ProtectUserSideFromDamagingMovesIfUserFirstTurn < PokeBattle_Move
class Battle::Move::ProtectUserSideFromDamagingMovesIfUserFirstTurn < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -941,7 +941,7 @@ end
#===============================================================================
# User's side is protected against status moves this round. (Crafty Shield)
#===============================================================================
class PokeBattle_Move_ProtectUserSideFromStatusMoves < PokeBattle_Move
class Battle::Move::ProtectUserSideFromStatusMoves < Battle::Move
def pbMoveFailed?(user,targets)
if user.pbOwnSide.effects[PBEffects::CraftyShield]
@battle.pbDisplay(_INTL("But it failed!"))
@@ -961,7 +961,7 @@ end
# User's side is protected against moves with priority greater than 0 this round.
# (Quick Guard)
#===============================================================================
class PokeBattle_Move_ProtectUserSideFromPriorityMoves < PokeBattle_ProtectMove
class Battle::Move::ProtectUserSideFromPriorityMoves < Battle::Move::ProtectMove
def canSnatch?; return true; end
def initialize(battle,move)
@@ -975,7 +975,7 @@ end
# User's side is protected against moves that target multiple battlers this round.
# (Wide Guard)
#===============================================================================
class PokeBattle_Move_ProtectUserSideFromMultiTargetDamagingMoves < PokeBattle_ProtectMove
class Battle::Move::ProtectUserSideFromMultiTargetDamagingMoves < Battle::Move::ProtectMove
def canSnatch?; return true; end
def initialize(battle,move)
@@ -988,7 +988,7 @@ end
#===============================================================================
# Ends target's protections immediately. (Feint)
#===============================================================================
class PokeBattle_Move_RemoveProtections < PokeBattle_Move
class Battle::Move::RemoveProtections < Battle::Move
def pbEffectAgainstTarget(user,target)
target.effects[PBEffects::BanefulBunker] = false
target.effects[PBEffects::KingsShield] = false
@@ -1005,7 +1005,7 @@ end
#===============================================================================
# Ends target's protections immediately. (Hyperspace Hole)
#===============================================================================
class PokeBattle_Move_RemoveProtectionsBypassSubstitute < PokeBattle_Move
class Battle::Move::RemoveProtectionsBypassSubstitute < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbEffectAgainstTarget(user,target)
@@ -1025,7 +1025,7 @@ end
# Decreases the user's Defense by 1 stage. Ends target's protections
# immediately. (Hyperspace Fury)
#===============================================================================
class PokeBattle_Move_HoopaRemoveProtectionsBypassSubstituteLowerUserDef1 < PokeBattle_StatDownMove
class Battle::Move::HoopaRemoveProtectionsBypassSubstituteLowerUserDef1 < Battle::Move::StatDownMove
def ignoresSubstitute?(user); return true; end
def initialize(battle,move)
@@ -1060,7 +1060,7 @@ end
#===============================================================================
# User takes recoil damage equal to 1/4 of the damage this move dealt.
#===============================================================================
class PokeBattle_Move_RecoilQuarterOfDamageDealt < PokeBattle_RecoilMove
class Battle::Move::RecoilQuarterOfDamageDealt < Battle::Move::RecoilMove
def pbRecoilDamage(user,target)
return (target.damageState.totalHPLost/4.0).round
end
@@ -1069,7 +1069,7 @@ end
#===============================================================================
# User takes recoil damage equal to 1/3 of the damage this move dealt.
#===============================================================================
class PokeBattle_Move_RecoilThirdOfDamageDealt < PokeBattle_RecoilMove
class Battle::Move::RecoilThirdOfDamageDealt < Battle::Move::RecoilMove
def pbRecoilDamage(user,target)
return (target.damageState.totalHPLost/3.0).round
end
@@ -1079,7 +1079,7 @@ end
# User takes recoil damage equal to 1/3 of the damage this move dealt.
# May paralyze the target. (Volt Tackle)
#===============================================================================
class PokeBattle_Move_RecoilThirdOfDamageDealtParalyzeTarget < PokeBattle_RecoilMove
class Battle::Move::RecoilThirdOfDamageDealtParalyzeTarget < Battle::Move::RecoilMove
def pbRecoilDamage(user,target)
return (target.damageState.totalHPLost/3.0).round
end
@@ -1094,7 +1094,7 @@ end
# User takes recoil damage equal to 1/3 of the damage this move dealt.
# May burn the target. (Flare Blitz)
#===============================================================================
class PokeBattle_Move_RecoilThirdOfDamageDealtBurnTarget < PokeBattle_RecoilMove
class Battle::Move::RecoilThirdOfDamageDealtBurnTarget < Battle::Move::RecoilMove
def pbRecoilDamage(user,target)
return (target.damageState.totalHPLost/3.0).round
end
@@ -1109,7 +1109,7 @@ end
# User takes recoil damage equal to 1/2 of the damage this move dealt.
# (Head Smash, Light of Ruin)
#===============================================================================
class PokeBattle_Move_RecoilHalfOfDamageDealt < PokeBattle_RecoilMove
class Battle::Move::RecoilHalfOfDamageDealt < Battle::Move::RecoilMove
def pbRecoilDamage(user,target)
return (target.damageState.totalHPLost/2.0).round
end
@@ -1120,7 +1120,7 @@ end
# the target. Does double damage and has perfect accuracy if the target is
# Minimized. (Flying Press)
#===============================================================================
class PokeBattle_Move_EffectivenessIncludesFlyingType < PokeBattle_Move
class Battle::Move::EffectivenessIncludesFlyingType < Battle::Move
def tramplesMinimize?(param=1)
return true if param==1 && Settings::MECHANICS_GENERATION >= 6 # Perfect accuracy
return true if param==2 # Double damage
@@ -1143,7 +1143,7 @@ end
# if it is a physical move. Has a different animation depending on the move's
# category. (Shell Side Arm)
#===============================================================================
class PokeBattle_Move_CategoryDependsOnHigherDamagePoisonTarget < PokeBattle_PoisonMove
class Battle::Move::CategoryDependsOnHigherDamagePoisonTarget < Battle::Move::PoisonMove
def initialize(battle, move)
super
@calcCategory = 1
@@ -1189,7 +1189,7 @@ end
# physical if user's Attack is higher than its Special Attack (after applying
# stat stages), and special otherwise. (Photon Geyser)
#===============================================================================
class PokeBattle_Move_CategoryDependsOnHigherDamageIgnoreTargetAbility < PokeBattle_Move_IgnoreTargetAbility
class Battle::Move::CategoryDependsOnHigherDamageIgnoreTargetAbility < Battle::Move::IgnoreTargetAbility
def initialize(battle,move)
super
@calcCategory = 1
@@ -1219,7 +1219,7 @@ end
# are applied normally, applying the user's Attack modifiers and not the user's
# Defence modifiers. (Body Press)
#===============================================================================
class PokeBattle_Move_UseUserBaseDefenseInsteadOfUserBaseAttack < PokeBattle_Move
class Battle::Move::UseUserBaseDefenseInsteadOfUserBaseAttack < Battle::Move
def pbGetAttackStats(user, target)
return user.defense, user.stages[:DEFENSE] + 6
end
@@ -1229,7 +1229,7 @@ end
# Target's Attack is used instead of user's Attack for this move's calculations.
# (Foul Play)
#===============================================================================
class PokeBattle_Move_UseTargetAttackInsteadOfUserAttack < PokeBattle_Move
class Battle::Move::UseTargetAttackInsteadOfUserAttack < Battle::Move
def pbGetAttackStats(user,target)
if specialMove?
return target.spatk, target.stages[:SPECIAL_ATTACK]+6
@@ -1242,7 +1242,7 @@ end
# Target's Defense is used instead of its Special Defense for this move's
# calculations. (Psyshock, Psystrike, Secret Sword)
#===============================================================================
class PokeBattle_Move_UseTargetDefenseInsteadOfTargetSpDef < PokeBattle_Move
class Battle::Move::UseTargetDefenseInsteadOfTargetSpDef < Battle::Move
def pbGetDefenseStats(user,target)
return target.defense, target.stages[:DEFENSE]+6
end
@@ -1252,7 +1252,7 @@ end
# User's attack next round against the target will definitely hit.
# (Lock-On, Mind Reader)
#===============================================================================
class PokeBattle_Move_EnsureNextMoveAlwaysHits < PokeBattle_Move
class Battle::Move::EnsureNextMoveAlwaysHits < Battle::Move
def pbEffectAgainstTarget(user,target)
user.effects[PBEffects::LockOn] = 2
user.effects[PBEffects::LockOnPos] = target.index
@@ -1264,7 +1264,7 @@ end
# Target's evasion stat changes are ignored from now on. (Foresight, Odor Sleuth)
# Normal and Fighting moves have normal effectiveness against the Ghost-type target.
#===============================================================================
class PokeBattle_Move_StartNegateTargetEvasionStatStageAndGhostImmunity < PokeBattle_Move
class Battle::Move::StartNegateTargetEvasionStatStageAndGhostImmunity < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -1278,7 +1278,7 @@ end
# Target's evasion stat changes are ignored from now on. (Miracle Eye)
# Psychic moves have normal effectiveness against the Dark-type target.
#===============================================================================
class PokeBattle_Move_StartNegateTargetEvasionStatStageAndDarkImmunity < PokeBattle_Move
class Battle::Move::StartNegateTargetEvasionStatStageAndDarkImmunity < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -1292,7 +1292,7 @@ end
# This move ignores target's Defense, Special Defense and evasion stat changes.
# (Chip Away, Darkest Lariat, Sacred Sword)
#===============================================================================
class PokeBattle_Move_IgnoreTargetDefSpDefEvaStatStages < PokeBattle_Move
class Battle::Move::IgnoreTargetDefSpDefEvaStatStages < Battle::Move
def pbCalcAccuracyMultipliers(user,target,multipliers)
super
modifiers[:evasion_stage] = 0
@@ -1307,7 +1307,7 @@ end
#===============================================================================
# This move's type is the same as the user's first type. (Revelation Dance)
#===============================================================================
class PokeBattle_Move_TypeIsUserFirstType < PokeBattle_Move
class Battle::Move::TypeIsUserFirstType < Battle::Move
def pbBaseType(user)
userTypes = user.pbTypes(true)
return userTypes[0]
@@ -1317,7 +1317,7 @@ end
#===============================================================================
# Power and type depends on the user's IVs. (Hidden Power)
#===============================================================================
class PokeBattle_Move_TypeDependsOnUserIVs < PokeBattle_Move
class Battle::Move::TypeDependsOnUserIVs < Battle::Move
def pbBaseType(user)
hp = pbHiddenPower(user)
return hp[0]
@@ -1368,7 +1368,7 @@ end
# Power and type depend on the user's held berry. Destroys the berry.
# (Natural Gift)
#===============================================================================
class PokeBattle_Move_TypeAndPowerDependOnUserBerry < PokeBattle_Move
class Battle::Move::TypeAndPowerDependOnUserBerry < Battle::Move
def initialize(battle,move)
super
@typeArray = {
@@ -1465,7 +1465,7 @@ end
#===============================================================================
# Type depends on the user's held Plate. (Judgment)
#===============================================================================
class PokeBattle_Move_TypeDependsOnUserPlate < PokeBattle_Move
class Battle::Move::TypeDependsOnUserPlate < Battle::Move
def initialize(battle,move)
super
@itemTypes = {
@@ -1505,7 +1505,7 @@ end
#===============================================================================
# Type depends on the user's held Memory. (Multi-Attack)
#===============================================================================
class PokeBattle_Move_TypeDependsOnUserMemory < PokeBattle_Move
class Battle::Move::TypeDependsOnUserMemory < Battle::Move
def initialize(battle,move)
super
@itemTypes = {
@@ -1545,7 +1545,7 @@ end
#===============================================================================
# Type depends on the user's held Drive. (Techno Blast)
#===============================================================================
class PokeBattle_Move_TypeDependsOnUserDrive < PokeBattle_Move
class Battle::Move::TypeDependsOnUserDrive < Battle::Move
def initialize(battle,move)
super
@itemTypes = {
@@ -1584,7 +1584,7 @@ end
# form (Electric if Full Belly, Dark if Hangry). Fails if the user is not
# Morpeko (works if transformed into Morpeko). (Aura Wheel)
#===============================================================================
class PokeBattle_Move_TypeDependsOnUserMorpekoFormRaiseUserSpeed1 < PokeBattle_Move_RaiseUserSpeed1
class Battle::Move::TypeDependsOnUserMorpekoFormRaiseUserSpeed1 < Battle::Move::RaiseUserSpeed1
def pbMoveFailed?(user, targets)
if !user.isSpecies?(:MORPEKO) && user.effects[PBEffects::TransformSpecies] != :MORPEKO
@battle.pbDisplay(_INTL("But {1} can't use the move!", user.pbThis))
@@ -1602,7 +1602,7 @@ end
#===============================================================================
# Power is doubled in weather. Type changes depending on the weather. (Weather Ball)
#===============================================================================
class PokeBattle_Move_TypeAndPowerDependOnWeather < PokeBattle_Move
class Battle::Move::TypeAndPowerDependOnWeather < Battle::Move
def pbBaseDamage(baseDmg,user,target)
baseDmg *= 2 if user.effectiveWeather != :None
return baseDmg
@@ -1637,7 +1637,7 @@ end
# Power is doubled if a terrain applies and user is grounded; also, this move's
# type and animation depends on the terrain. (Terrain Pulse)
#===============================================================================
class PokeBattle_Move_TypeAndPowerDependOnTerrain < PokeBattle_Move
class Battle::Move::TypeAndPowerDependOnTerrain < Battle::Move
def pbBaseDamage(baseDmg, user, target)
baseDmg *= 2 if @battle.field.terrain != :None && user.affectedByTerrain?
return baseDmg
@@ -1671,7 +1671,7 @@ end
#===============================================================================
# Target's moves become Electric-type for the rest of the round. (Electrify)
#===============================================================================
class PokeBattle_Move_TargetMovesBecomeElectric < PokeBattle_Move
class Battle::Move::TargetMovesBecomeElectric < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
if target.effects[PBEffects::Electrify]
@battle.pbDisplay(_INTL("But it failed!")) if show_message
@@ -1691,7 +1691,7 @@ end
# All Normal-type moves become Electric-type for the rest of the round.
# (Ion Deluge, Plasma Fists)
#===============================================================================
class PokeBattle_Move_NormalMovesBecomeElectric < PokeBattle_Move
class Battle::Move::NormalMovesBecomeElectric < Battle::Move
def pbMoveFailed?(user,targets)
return false if damagingMove?
if @battle.field.effects[PBEffects::IonDeluge]

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Hits twice.
#===============================================================================
class PokeBattle_Move_HitTwoTimes < PokeBattle_Move
class Battle::Move::HitTwoTimes < Battle::Move
def multiHitMove?; return true; end
def pbNumHits(user,targets); return 2; end
end
@@ -9,7 +9,7 @@ end
#===============================================================================
# Hits twice. May poison the target on each hit. (Twineedle)
#===============================================================================
class PokeBattle_Move_HitTwoTimesPoisonTarget < PokeBattle_PoisonMove
class Battle::Move::HitTwoTimesPoisonTarget < Battle::Move::PoisonMove
def multiHitMove?; return true; end
def pbNumHits(user,targets); return 2; end
end
@@ -18,7 +18,7 @@ end
# Hits twice. Causes the target to flinch. Does double damage and has perfect
# accuracy if the target is Minimized. (Double Iron Bash)
#===============================================================================
class PokeBattle_Move_HitTwoTimesFlinchTarget < PokeBattle_FlinchMove
class Battle::Move::HitTwoTimesFlinchTarget < Battle::Move::FlinchMove
def multiHitMove?; return true; end
def pbNumHits(user,targets); return 2; end
def tramplesMinimize?(param=1); return Settings::MECHANICS_GENERATION <= 7; end
@@ -35,7 +35,7 @@ end
# check in turn). This is considered unimportant, and since correcting it
# would involve extensive code rewrites, it is being ignored.
#===============================================================================
class PokeBattle_Move_HitTwoTimesTargetThenTargetAlly < PokeBattle_Move
class Battle::Move::HitTwoTimesTargetThenTargetAlly < Battle::Move
def pbNumHits(user, targets); return 1; end
def pbRepeatHit?; return true; end
@@ -68,7 +68,7 @@ end
# Hits 3 times. Power is multiplied by the hit number. (Triple Kick)
# An accuracy check is performed for each hit.
#===============================================================================
class PokeBattle_Move_HitThreeTimesPowersUpWithEachHit < PokeBattle_Move
class Battle::Move::HitThreeTimesPowersUpWithEachHit < Battle::Move
def multiHitMove?; return true; end
def pbNumHits(user,targets); return 3; end
@@ -91,7 +91,7 @@ end
# Hits 3 times in a row. If each hit could be a critical hit, it will definitely
# be a critical hit. (Surging Strikes)
#===============================================================================
class PokeBattle_Move_HitThreeTimesAlwaysCriticalHit < PokeBattle_Move
class Battle::Move::HitThreeTimesAlwaysCriticalHit < Battle::Move
def multiHitMove?; return true; end
def pbNumHits(user, targets); return 3; end
def pbCritialOverride(user, target); return 1; end
@@ -100,7 +100,7 @@ end
#===============================================================================
# Hits 2-5 times.
#===============================================================================
class PokeBattle_Move_HitTwoToFiveTimes < PokeBattle_Move
class Battle::Move::HitTwoToFiveTimes < Battle::Move
def multiHitMove?; return true; end
def pbNumHits(user,targets)
@@ -120,7 +120,7 @@ end
# Hits 2-5 times. If the user is Ash Greninja, powers up and hits 3 times.
# (Water Shuriken)
#===============================================================================
class PokeBattle_Move_HitTwoToFiveTimesOrThreeForAshGreninja < PokeBattle_Move_HitTwoToFiveTimes
class Battle::Move::HitTwoToFiveTimesOrThreeForAshGreninja < Battle::Move::HitTwoToFiveTimes
def pbNumHits(user,targets)
return 3 if user.isSpecies?(:GRENINJA) && user.form == 2
return super
@@ -136,7 +136,7 @@ end
# Hits 2-5 times in a row. If the move does not fail, increases the user's Speed
# by 1 stage and decreases the user's Defense by 1 stage. (Scale Shot)
#===============================================================================
class PokeBattle_Move_HitTwoToFiveTimesRaiseUserSpd1LowerUserDef1 < PokeBattle_Move
class Battle::Move::HitTwoToFiveTimesRaiseUserSpd1LowerUserDef1 < Battle::Move
def multiHitMove?; return true; end
def pbNumHits(user, targets)
@@ -167,7 +167,7 @@ end
# Base power of each hit depends on the base Attack stat for the species of that
# hit's participant. (Beat Up)
#===============================================================================
class PokeBattle_Move_HitOncePerUserTeamMember < PokeBattle_Move
class Battle::Move::HitOncePerUserTeamMember < Battle::Move
def multiHitMove?; return true; end
def pbMoveFailed?(user,targets)
@@ -197,7 +197,7 @@ end
#===============================================================================
# Attacks first turn, skips second turn (if successful).
#===============================================================================
class PokeBattle_Move_AttackAndSkipNextTurn < PokeBattle_Move
class Battle::Move::AttackAndSkipNextTurn < Battle::Move
def pbEffectGeneral(user)
user.effects[PBEffects::HyperBeam] = 2
user.currentMove = @id
@@ -207,7 +207,7 @@ end
#===============================================================================
# Two turn attack. Skips first turn, attacks second turn. (Razor Wind)
#===============================================================================
class PokeBattle_Move_TwoTurnAttack < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttack < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user,targets)
@battle.pbDisplay(_INTL("{1} whipped up a whirlwind!",user.pbThis))
end
@@ -217,7 +217,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. (Solar Beam, Solar Blade)
# Power halved in all weather except sunshine. In sunshine, takes 1 turn instead.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackOneTurnInSun < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackOneTurnInSun < Battle::Move::TwoTurnMove
def pbIsChargingTurn?(user)
ret = super
if !user.effects[PBEffects::TwoTurnAttack]
@@ -245,7 +245,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. (Freeze Shock)
# May paralyze the target.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackParalyzeTarget < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackParalyzeTarget < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user,targets)
@battle.pbDisplay(_INTL("{1} became cloaked in a freezing light!",user.pbThis))
end
@@ -260,7 +260,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. (Ice Burn)
# May burn the target.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackBurnTarget < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackBurnTarget < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user,targets)
@battle.pbDisplay(_INTL("{1} became cloaked in freezing air!",user.pbThis))
end
@@ -275,7 +275,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. (Sky Attack)
# May make the target flinch.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackFlinchTarget < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackFlinchTarget < Battle::Move::TwoTurnMove
def flinchingMove?; return true; end
def pbChargingTurnMessage(user,targets)
@@ -292,7 +292,7 @@ end
# Two turn attack. Skips first turn, and increases the user's Special Attack,
# Special Defense and Speed by 2 stages each in the second turn. (Geomancy)
#===============================================================================
class PokeBattle_Move_TwoTurnAttackRaiseUserSpAtkSpDefSpd2 < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackRaiseUserSpAtkSpDefSpd2 < Battle::Move::TwoTurnMove
def pbMoveFailed?(user,targets)
return false if user.effects[PBEffects::TwoTurnAttack] # Charging turn
if !user.pbCanRaiseStatStage?(:SPECIAL_ATTACK,user,self) &&
@@ -324,7 +324,7 @@ end
# Two turn attack. Ups user's Defense by 1 stage first turn, attacks second turn.
# (Skull Bash)
#===============================================================================
class PokeBattle_Move_TwoTurnAttackChargeRaiseUserDefense1 < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackChargeRaiseUserDefense1 < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user,targets)
@battle.pbDisplay(_INTL("{1} tucked in its head!",user.pbThis))
end
@@ -340,7 +340,7 @@ end
# Two-turn attack. On the first turn, increases the user's Special Attack by 1
# stage. On the second turn, does damage. (Meteor Beam)
#===============================================================================
class PokeBattle_Move_TwoTurnAttackChargeRaiseUserSpAtk1 < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackChargeRaiseUserSpAtk1 < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user, targets)
@battle.pbDisplay(_INTL("{1} is overflowing with space power!", user.pbThis))
end
@@ -356,7 +356,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. (Dig)
# (Handled in Battler's pbSuccessCheckPerHit): Is semi-invulnerable during use.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackInvulnerableUnderground < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackInvulnerableUnderground < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user,targets)
@battle.pbDisplay(_INTL("{1} burrowed its way under the ground!",user.pbThis))
end
@@ -366,7 +366,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. (Dive)
# (Handled in Battler's pbSuccessCheckPerHit): Is semi-invulnerable during use.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackInvulnerableUnderwater < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackInvulnerableUnderwater < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user,targets)
@battle.pbDisplay(_INTL("{1} hid underwater!",user.pbThis))
end
@@ -376,7 +376,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. (Fly)
# (Handled in Battler's pbSuccessCheckPerHit): Is semi-invulnerable during use.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackInvulnerableInSky < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackInvulnerableInSky < Battle::Move::TwoTurnMove
def unusableInGravity?; return true; end
def pbChargingTurnMessage(user,targets)
@@ -389,7 +389,7 @@ end
# May paralyze the target.
# (Handled in Battler's pbSuccessCheckPerHit): Is semi-invulnerable during use.
#===============================================================================
class PokeBattle_Move_TwoTurnAttackInvulnerableInSkyParalyzeTarget < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackInvulnerableInSkyParalyzeTarget < Battle::Move::TwoTurnMove
def unusableInGravity?; return true; end
def pbChargingTurnMessage(user,targets)
@@ -408,7 +408,7 @@ end
# Target is also semi-invulnerable during use, and can't take any action.
# Doesn't damage airborne Pokémon (but still makes them unable to move during).
#===============================================================================
class PokeBattle_Move_TwoTurnAttackInvulnerableInSkyTargetCannotAct < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackInvulnerableInSkyTargetCannotAct < Battle::Move::TwoTurnMove
def unusableInGravity?; return true; end
def pbIsChargingTurn?(user)
@@ -471,7 +471,7 @@ end
# Two turn attack. Skips first turn, attacks second turn. Is invulnerable during
# use. Ends target's protections upon hit. (Shadow Force, Phantom Force)
#===============================================================================
class PokeBattle_Move_TwoTurnAttackInvulnerableRemoveProtections < PokeBattle_TwoTurnMove
class Battle::Move::TwoTurnAttackInvulnerableRemoveProtections < Battle::Move::TwoTurnMove
def pbChargingTurnMessage(user,targets)
@battle.pbDisplay(_INTL("{1} vanished instantly!",user.pbThis))
end
@@ -496,7 +496,7 @@ end
# Soundproof. I think this is an oversight, so I've let Soundproof Pokémon
# be unaffected by Uproar waking/non-sleeping effects.
#===============================================================================
class PokeBattle_Move_MultiTurnAttackPreventSleeping < PokeBattle_Move
class Battle::Move::MultiTurnAttackPreventSleeping < Battle::Move
def pbEffectGeneral(user)
return if user.effects[PBEffects::Uproar]>0
user.effects[PBEffects::Uproar] = 3
@@ -514,7 +514,7 @@ end
# User must use this move for 1 or 2 more rounds. At end, user becomes confused.
# (Outrage, Petal Dange, Thrash)
#===============================================================================
class PokeBattle_Move_MultiTurnAttackConfuseUserAtEnd < PokeBattle_Move
class Battle::Move::MultiTurnAttackConfuseUserAtEnd < Battle::Move
def pbEffectAfterAllHits(user,target)
if !target.damageState.unaffected && user.effects[PBEffects::Outrage]==0
user.effects[PBEffects::Outrage] = 2+@battle.pbRandom(2)
@@ -533,7 +533,7 @@ end
# User must use this move for 4 more rounds. Power doubles each round.
# Power is also doubled if user has curled up. (Ice Ball, Rollout)
#===============================================================================
class PokeBattle_Move_MultiTurnAttackPowersUpEachTurn < PokeBattle_Move
class Battle::Move::MultiTurnAttackPowersUpEachTurn < Battle::Move
def pbBaseDamage(baseDmg,user,target)
shift = (5 - user.effects[PBEffects::Rollout]) # 0-4, where 0 is most powerful
shift = 0 if user.effects[PBEffects::Rollout] == 0 # For first turn
@@ -556,7 +556,7 @@ end
# total direct damage it took while biding to the last battler that damaged it.
# (Bide)
#===============================================================================
class PokeBattle_Move_MultiTurnAttackBideThenReturnDoubleDamage < PokeBattle_FixedDamageMove
class Battle::Move::MultiTurnAttackBideThenReturnDoubleDamage < Battle::Move::FixedDamageMove
def pbAddTarget(targets,user)
return if user.effects[PBEffects::Bide]!=1 # Not the attack turn
idxTarget = user.effects[PBEffects::BideTarget]

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Heals user to full HP. User falls asleep for 2 more rounds. (Rest)
#===============================================================================
class PokeBattle_Move_HealUserFullyAndFallAsleep < PokeBattle_HealingMove
class Battle::Move::HealUserFullyAndFallAsleep < Battle::Move::HealingMove
def pbMoveFailed?(user,targets)
if user.asleep?
@battle.pbDisplay(_INTL("But it failed!"))
@@ -25,7 +25,7 @@ end
#===============================================================================
# Heals user by 1/2 of its max HP.
#===============================================================================
class PokeBattle_Move_HealUserHalfOfTotalHP < PokeBattle_HealingMove
class Battle::Move::HealUserHalfOfTotalHP < Battle::Move::HealingMove
def pbHealAmount(user)
return (user.totalhp/2.0).round
end
@@ -35,7 +35,7 @@ end
# Heals user by an amount depending on the weather. (Moonlight, Morning Sun,
# Synthesis)
#===============================================================================
class PokeBattle_Move_HealUserDependingOnWeather < PokeBattle_HealingMove
class Battle::Move::HealUserDependingOnWeather < Battle::Move::HealingMove
def pbOnStartUse(user,targets)
case user.effectiveWeather
when :Sun, :HarshSun
@@ -55,7 +55,7 @@ end
#===============================================================================
# Heals user by 1/2 of its max HP, or 2/3 of its max HP in a sandstorm. (Shore Up)
#===============================================================================
class PokeBattle_Move_HealUserDependingOnSandstorm < PokeBattle_HealingMove
class Battle::Move::HealUserDependingOnSandstorm < Battle::Move::HealingMove
def pbHealAmount(user)
return (user.totalhp * 2 / 3.0).round if user.effectiveWeather == :Sandstorm
return (user.totalhp / 2.0).round
@@ -66,7 +66,7 @@ end
# Heals user by 1/2 of its max HP. (Roost)
# User roosts, and its Flying type is ignored for attacks used against it.
#===============================================================================
class PokeBattle_Move_HealUserHalfOfTotalHPLoseFlyingTypeThisTurn < PokeBattle_HealingMove
class Battle::Move::HealUserHalfOfTotalHPLoseFlyingTypeThisTurn < Battle::Move::HealingMove
def pbHealAmount(user)
return (user.totalhp/2.0).round
end
@@ -81,7 +81,7 @@ end
# Cures the target's permanent status problems. Heals user by 1/2 of its max HP.
# (Purify)
#===============================================================================
class PokeBattle_Move_CureTargetStatusHealUserHalfOfTotalHP < PokeBattle_HealingMove
class Battle::Move::CureTargetStatusHealUserHalfOfTotalHP < Battle::Move::HealingMove
def canSnatch?; return false; end # Because it affects a target
def canMagicCoat?; return true; end
@@ -108,7 +108,7 @@ end
# target's Attack stat (after applying stat stages, before this move decreases
# it). (Strength Sap)
#===============================================================================
class PokeBattle_Move_HealUserByTargetAttackLowerTargetAttack1 < PokeBattle_Move
class Battle::Move::HealUserByTargetAttackLowerTargetAttack1 < Battle::Move
def healingMove?; return true; end
def canMagicCoat?; return true; end
@@ -158,7 +158,7 @@ end
#===============================================================================
# User gains half the HP it inflicts as damage.
#===============================================================================
class PokeBattle_Move_HealUserByHalfOfDamageDone < PokeBattle_Move
class Battle::Move::HealUserByHalfOfDamageDone < Battle::Move
def healingMove?; return Settings::MECHANICS_GENERATION >= 6; end
def pbEffectAgainstTarget(user,target)
@@ -172,7 +172,7 @@ end
# User gains half the HP it inflicts as damage. Fails if target is not asleep.
# (Dream Eater)
#===============================================================================
class PokeBattle_Move_HealUserByHalfOfDamageDoneIfTargetAsleep < PokeBattle_Move
class Battle::Move::HealUserByHalfOfDamageDoneIfTargetAsleep < Battle::Move
def healingMove?; return Settings::MECHANICS_GENERATION >= 6; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -193,7 +193,7 @@ end
#===============================================================================
# User gains 3/4 the HP it inflicts as damage. (Draining Kiss, Oblivion Wing)
#===============================================================================
class PokeBattle_Move_HealUserByThreeQuartersOfDamageDone < PokeBattle_Move
class Battle::Move::HealUserByThreeQuartersOfDamageDone < Battle::Move
def healingMove?; return Settings::MECHANICS_GENERATION >= 6; end
def pbEffectAgainstTarget(user,target)
@@ -206,7 +206,7 @@ end
#===============================================================================
# The user and its allies gain 25% of their total HP. (Life Dew)
#===============================================================================
class PokeBattle_Move_HealUserAndAlliesQuarterOfTotalHP < PokeBattle_Move
class Battle::Move::HealUserAndAlliesQuarterOfTotalHP < Battle::Move
def healingMove?; return true; end
def pbMoveFailed?(user, targets)
@@ -231,7 +231,7 @@ end
# The user and its allies gain 25% of their total HP and are cured of their
# permanent status problems. (Jungle Healing)
#===============================================================================
class PokeBattle_Move_HealUserAndAlliesQuarterOfTotalHPCureStatus < PokeBattle_Move
class Battle::Move::HealUserAndAlliesQuarterOfTotalHPCureStatus < Battle::Move
def healingMove?; return true; end
def pbMoveFailed?(user, targets)
@@ -273,7 +273,7 @@ end
#===============================================================================
# Heals target by 1/2 of its max HP. (Heal Pulse)
#===============================================================================
class PokeBattle_Move_HealTargetHalfOfTotalHP < PokeBattle_Move
class Battle::Move::HealTargetHalfOfTotalHP < Battle::Move
def healingMove?; return true; end
def canMagicCoat?; return true; end
@@ -302,7 +302,7 @@ end
# Heals target by 1/2 of its max HP, or 2/3 of its max HP in Grassy Terrain.
# (Floral Healing)
#===============================================================================
class PokeBattle_Move_HealTargetDependingOnGrassyTerrain < PokeBattle_Move
class Battle::Move::HealTargetDependingOnGrassyTerrain < Battle::Move
def healingMove?; return true; end
def canMagicCoat?; return true; end
@@ -329,7 +329,7 @@ end
# Battler in user's position is healed by 1/2 of its max HP, at the end of the
# next round. (Wish)
#===============================================================================
class PokeBattle_Move_HealUserPositionNextTurn < PokeBattle_Move
class Battle::Move::HealUserPositionNextTurn < Battle::Move
def healingMove?; return true; end
def canSnatch?; return true; end
@@ -352,7 +352,7 @@ end
# Rings the user. Ringed Pokémon gain 1/16 of max HP at the end of each round.
# (Aqua Ring)
#===============================================================================
class PokeBattle_Move_StartHealUserEachTurn < PokeBattle_Move
class Battle::Move::StartHealUserEachTurn < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -373,7 +373,7 @@ end
# Ingrains the user. Ingrained Pokémon gain 1/16 of max HP at the end of each
# round, and cannot flee or switch out. (Ingrain)
#===============================================================================
class PokeBattle_Move_StartHealUserEachTurnTrapUserInBattle < PokeBattle_Move
class Battle::Move::StartHealUserEachTurnTrapUserInBattle < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -393,7 +393,7 @@ end
#===============================================================================
# Target will lose 1/4 of max HP at end of each round, while asleep. (Nightmare)
#===============================================================================
class PokeBattle_Move_StartDamageTargetEachTurnIfTargetAsleep < PokeBattle_Move
class Battle::Move::StartDamageTargetEachTurnIfTargetAsleep < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
if !target.asleep? || target.effects[PBEffects::Nightmare]
@battle.pbDisplay(_INTL("But it failed!")) if show_message
@@ -412,7 +412,7 @@ end
# Seeds the target. Seeded Pokémon lose 1/8 of max HP at the end of each round,
# and the Pokémon in the user's position gains the same amount. (Leech Seed)
#===============================================================================
class PokeBattle_Move_StartLeechSeedTarget < PokeBattle_Move
class Battle::Move::StartLeechSeedTarget < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -442,7 +442,7 @@ end
# The user takes damage equal to 1/2 of its total HP, even if the target is
# unaffected (this is not recoil damage). (Steel Beam)
#===============================================================================
class PokeBattle_Move_UserLosesHalfOfTotalHP < PokeBattle_Move
class Battle::Move::UserLosesHalfOfTotalHP < Battle::Move
def pbEffectAfterAllHits(user, target)
return if !user.takesIndirectDamage?
amt = (user.totalhp / 2.0).ceil
@@ -456,7 +456,7 @@ end
#===============================================================================
# Damages user by 1/2 of its max HP, even if this move misses. (Mind Blown)
#===============================================================================
class PokeBattle_Move_UserLosesHalfOfTotalHPExplosive < PokeBattle_Move
class Battle::Move::UserLosesHalfOfTotalHPExplosive < Battle::Move
def worksWithNoTargets?; return true; end
def pbMoveFailed?(user,targets)
@@ -464,7 +464,7 @@ class PokeBattle_Move_UserLosesHalfOfTotalHPExplosive < PokeBattle_Move
bearer = @battle.pbCheckGlobalAbility(:DAMP)
if bearer!=nil
@battle.pbShowAbilitySplash(bearer)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} cannot use {2}!",user.pbThis,@name))
else
@battle.pbDisplay(_INTL("{1} cannot use {2} because of {3}'s {4}!",
@@ -487,7 +487,7 @@ end
#===============================================================================
# User faints, even if the move does nothing else. (Explosion, Self-Destruct)
#===============================================================================
class PokeBattle_Move_UserFaintsExplosive < PokeBattle_Move
class Battle::Move::UserFaintsExplosive < Battle::Move
def worksWithNoTargets?; return true; end
def pbNumHits(user,targets); return 1; end
@@ -496,7 +496,7 @@ class PokeBattle_Move_UserFaintsExplosive < PokeBattle_Move
bearer = @battle.pbCheckGlobalAbility(:DAMP)
if bearer!=nil
@battle.pbShowAbilitySplash(bearer)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} cannot use {2}!",user.pbThis,@name))
else
@battle.pbDisplay(_INTL("{1} cannot use {2} because of {3}'s {4}!",
@@ -520,7 +520,7 @@ end
# User faints. If Misty Terrain applies, base power is multiplied by 1.5.
# (Misty Explosion)
#===============================================================================
class PokeBattle_Move_UserFaintsPowersUpInMistyTerrainExplosive < PokeBattle_Move_UserFaintsExplosive
class Battle::Move::UserFaintsPowersUpInMistyTerrainExplosive < Battle::Move::UserFaintsExplosive
def pbBaseDamage(baseDmg, user, target)
baseDmg = baseDmg * 3 / 2 if @battle.field.terrain == :Misty
return baseDmg
@@ -531,7 +531,7 @@ end
# Inflicts fixed damage equal to user's current HP. (Final Gambit)
# User faints (if successful).
#===============================================================================
class PokeBattle_Move_UserFaintsFixedDamageUserHP < PokeBattle_FixedDamageMove
class Battle::Move::UserFaintsFixedDamageUserHP < Battle::Move::FixedDamageMove
def pbNumHits(user,targets); return 1; end
def pbOnStartUse(user,targets)
@@ -553,7 +553,7 @@ end
# Decreases the target's Attack and Special Attack by 2 stages each. (Memento)
# User faints (if successful).
#===============================================================================
class PokeBattle_Move_UserFaintsLowerTargetAtkSpAtk2 < PokeBattle_TargetMultiStatDownMove
class Battle::Move::UserFaintsLowerTargetAtkSpAtk2 < Battle::Move::TargetMultiStatDownMove
def canMagicCoat?; return false; end
def initialize(battle,move)
@@ -578,7 +578,7 @@ end
# User faints. The Pokémon that replaces the user is fully healed (HP and
# status). Fails if user won't be replaced. (Healing Wish)
#===============================================================================
class PokeBattle_Move_UserFaintsHealAndCureReplacement < PokeBattle_Move
class Battle::Move::UserFaintsHealAndCureReplacement < Battle::Move
def healingMove?; return true; end
def canSnatch?; return true; end
@@ -602,7 +602,7 @@ end
# User faints. The Pokémon that replaces the user is fully healed (HP, PP and
# status). Fails if user won't be replaced. (Lunar Dance)
#===============================================================================
class PokeBattle_Move_UserFaintsHealAndCureReplacementRestorePP < PokeBattle_Move
class Battle::Move::UserFaintsHealAndCureReplacementRestorePP < Battle::Move
def healingMove?; return true; end
def canSnatch?; return true; end
@@ -625,7 +625,7 @@ end
#===============================================================================
# All current battlers will perish after 3 more rounds. (Perish Song)
#===============================================================================
class PokeBattle_Move_StartPerishCountsForAllBattlers < PokeBattle_Move
class Battle::Move::StartPerishCountsForAllBattlers < Battle::Move
def pbMoveFailed?(user,targets)
failed = true
targets.each do |b|
@@ -659,7 +659,7 @@ end
# If user is KO'd before it next moves, the battler that caused it also faints.
# (Destiny Bond)
#===============================================================================
class PokeBattle_Move_AttackerFaintsIfUserFaints < PokeBattle_Move
class Battle::Move::AttackerFaintsIfUserFaints < Battle::Move
def pbMoveFailed?(user,targets)
if Settings::MECHANICS_GENERATION >= 7 && user.effects[PBEffects::DestinyBondPrevious]
@battle.pbDisplay(_INTL("But it failed!"))
@@ -678,7 +678,7 @@ end
# If user is KO'd before it next moves, the attack that caused it loses all PP.
# (Grudge)
#===============================================================================
class PokeBattle_Move_SetAttackerMovePPTo0IfUserFaints < PokeBattle_Move
class Battle::Move::SetAttackerMovePPTo0IfUserFaints < Battle::Move
def pbEffectGeneral(user)
user.effects[PBEffects::Grudge] = true
@battle.pbDisplay(_INTL("{1} wants its target to bear a grudge!",user.pbThis))

View File

@@ -2,7 +2,7 @@
# User steals the target's item, if the user has none itself. (Covet, Thief)
# Items stolen from wild Pokémon are kept after the battle.
#===============================================================================
class PokeBattle_Move_UserTakesTargetItem < PokeBattle_Move
class Battle::Move::UserTakesTargetItem < Battle::Move
def pbEffectAfterAllHits(user,target)
return if user.wild? # Wild Pokémon can't thieve
return if user.fainted?
@@ -29,7 +29,7 @@ end
# User gives its item to the target. The item remains given after wild battles.
# (Bestow)
#===============================================================================
class PokeBattle_Move_TargetTakesUserItem < PokeBattle_Move
class Battle::Move::TargetTakesUserItem < Battle::Move
def ignoresSubstitute?(user)
return true if Settings::MECHANICS_GENERATION >= 6
return super
@@ -70,7 +70,7 @@ end
# User and target swap items. They remain swapped after wild battles.
# (Switcheroo, Trick)
#===============================================================================
class PokeBattle_Move_UserTargetSwapItems < PokeBattle_Move
class Battle::Move::UserTargetSwapItems < Battle::Move
def pbMoveFailed?(user,targets)
if user.wild?
@battle.pbDisplay(_INTL("But it failed!"))
@@ -94,7 +94,7 @@ class PokeBattle_Move_UserTargetSwapItems < PokeBattle_Move
if target.hasActiveAbility?(:STICKYHOLD) && !@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("But it failed to affect {1}!", target.pbThis(true)))
else
@battle.pbDisplay(_INTL("But it failed to affect {1} because of its {2}!",
@@ -133,7 +133,7 @@ end
#===============================================================================
# User recovers the last item it held and consumed. (Recycle)
#===============================================================================
class PokeBattle_Move_RestoreUserConsumedItem < PokeBattle_Move
class Battle::Move::RestoreUserConsumedItem < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -165,7 +165,7 @@ end
# Target drops its item. It regains the item at the end of the battle. (Knock Off)
# If target has a losable item, damage is multiplied by 1.5.
#===============================================================================
class PokeBattle_Move_RemoveTargetItem < PokeBattle_Move
class Battle::Move::RemoveTargetItem < Battle::Move
def pbBaseDamage(baseDmg,user,target)
if Settings::MECHANICS_GENERATION >= 6 &&
target.item && !target.unlosableItem?(target.item)
@@ -191,7 +191,7 @@ end
#===============================================================================
# Target's berry/Gem is destroyed. (Incinerate)
#===============================================================================
class PokeBattle_Move_DestroyTargetBerryOrGem < PokeBattle_Move
class Battle::Move::DestroyTargetBerryOrGem < Battle::Move
def pbEffectWhenDealingDamage(user,target)
return if target.damageState.substitute || target.damageState.berryWeakened
return if !target.item || (!target.item.is_berry? &&
@@ -207,7 +207,7 @@ end
# item, the item is unlosable, the target has Sticky Hold, or the target is
# behind a substitute. (Corrosive Gas)
#===============================================================================
class PokeBattle_Move_CorrodeTargetItem < PokeBattle_Move
class Battle::Move::CorrodeTargetItem < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -219,7 +219,7 @@ class PokeBattle_Move_CorrodeTargetItem < PokeBattle_Move
if target.hasActiveAbility?(:STICKYHOLD) && !@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} is unaffected!", target.pbThis))
else
@battle.pbDisplay(_INTL("{1} is unaffected because of its {2}!",
@@ -247,7 +247,7 @@ end
# For 5 rounds, the target cannnot use its held item, its held item has no
# effect, and no items can be used on it. (Embargo)
#===============================================================================
class PokeBattle_Move_StartTargetCannotUseItem < PokeBattle_Move
class Battle::Move::StartTargetCannotUseItem < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -268,7 +268,7 @@ end
# For 5 rounds, all held items cannot be used in any way and have no effect.
# Held items can still change hands, but can't be thrown. (Magic Room)
#===============================================================================
class PokeBattle_Move_StartNegateHeldItems < PokeBattle_Move
class Battle::Move::StartNegateHeldItems < Battle::Move
def pbEffectGeneral(user)
if @battle.field.effects[PBEffects::MagicRoom]>0
@battle.field.effects[PBEffects::MagicRoom] = 0
@@ -291,7 +291,7 @@ end
# Room apply. Fails if the user is not holding a berry. This move cannot be
# chosen to be used if the user is not holding a berry. (Stuff Cheeks)
#===============================================================================
class PokeBattle_Move_UserConsumeBerryRaiseDefense2 < PokeBattle_StatUpMove
class Battle::Move::UserConsumeBerryRaiseDefense2 < Battle::Move::StatUpMove
def initialize(battle, move)
super
@statUp = [:DEFENSE, 2]
@@ -337,7 +337,7 @@ end
# and they will not consume their berry. (Teatime)
# TODO: This isn't quite right for the messages shown when a berry is consumed.
#===============================================================================
class PokeBattle_Move_AllBattlersConsumeBerry < PokeBattle_Move
class Battle::Move::AllBattlersConsumeBerry < Battle::Move
def pbMoveFailed?(user, targets)
failed = true
targets.each do |b|
@@ -373,7 +373,7 @@ end
#===============================================================================
# User consumes target's berry and gains its effect. (Bug Bite, Pluck)
#===============================================================================
class PokeBattle_Move_UserConsumeTargetBerry < PokeBattle_Move
class Battle::Move::UserConsumeTargetBerry < Battle::Move
def pbEffectAfterAllHits(user,target)
return if user.fainted? || target.fainted?
return if target.damageState.unaffected || target.damageState.substitute
@@ -390,7 +390,7 @@ end
#===============================================================================
# User flings its item at the target. Power/effect depend on the item. (Fling)
#===============================================================================
class PokeBattle_Move_ThrowUserItemAtTarget < PokeBattle_Move
class Battle::Move::ThrowUserItemAtTarget < Battle::Move
def initialize(battle,move)
super
# 80 => all Mega Stones

View File

@@ -2,7 +2,7 @@
# This round, user becomes the target of attacks that have single targets.
# (Follow Me, Rage Powder)
#===============================================================================
class PokeBattle_Move_RedirectAllMovesToUser < PokeBattle_Move
class Battle::Move::RedirectAllMovesToUser < Battle::Move
def pbEffectGeneral(user)
user.effects[PBEffects::FollowMe] = 1
user.allAllies.each do |b|
@@ -18,7 +18,7 @@ end
# This round, target becomes the target of attacks that have single targets.
# (Spotlight)
#===============================================================================
class PokeBattle_Move_RedirectAllMovesToTarget < PokeBattle_Move
class Battle::Move::RedirectAllMovesToTarget < Battle::Move
def canMagicCoat?; return true; end
def pbEffectAgainstTarget(user,target)
@@ -34,7 +34,7 @@ end
#===============================================================================
# Unaffected by moves and abilities that would redirect this move. (Snipe Shot)
#===============================================================================
class PokeBattle_Move_CannotBeRedirected < PokeBattle_Move
class Battle::Move::CannotBeRedirected < Battle::Move
def cannotRedirect?; return true; end
end
@@ -43,7 +43,7 @@ end
# NOTE: Apparently a Normal Gem should be consumed even if this move will heal,
# but I think that's silly so I've omitted that effect.
#===============================================================================
class PokeBattle_Move_RandomlyDamageOrHealTarget < PokeBattle_Move
class Battle::Move::RandomlyDamageOrHealTarget < Battle::Move
def pbOnStartUse(user,targets)
@presentDmg = 0 # 0 = heal, >0 = damage
r = @battle.pbRandom(100)
@@ -90,7 +90,7 @@ end
# Damages target if target is a foe, or heals target by 1/2 of its max HP if
# target is an ally. (Pollen Puff)
#===============================================================================
class PokeBattle_Move_HealAllyOrDamageFoe < PokeBattle_Move
class Battle::Move::HealAllyOrDamageFoe < Battle::Move
def pbTarget(user)
return GameData::Target.get(:NearFoe) if user.effects[PBEffects::HealBlock]>0
return super
@@ -137,7 +137,7 @@ end
# User is not Ghost: Decreases the user's Speed by 1 stage, and increases the
# user's Attack and Defense by 1 stage each. (Curse)
#===============================================================================
class PokeBattle_Move_CurseTargetOrLowerUserSpd1RaiseUserAtkDef1 < PokeBattle_Move
class Battle::Move::CurseTargetOrLowerUserSpd1RaiseUserAtkDef1 < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbTarget(user)
@@ -202,7 +202,7 @@ end
#===============================================================================
# Effect depends on the environment. (Secret Power)
#===============================================================================
class PokeBattle_Move_EffectDependsOnEnvironment < PokeBattle_Move
class Battle::Move::EffectDependsOnEnvironment < Battle::Move
def flinchingMove?; return [6,10,12].include?(@secretPower); end
def pbOnStartUse(user,targets)
@@ -315,7 +315,7 @@ end
# 1.5 (in addition to Psychic Terrain's multiplier) and it targets all opposing
# Pokémon. (Expanding Force)
#===============================================================================
class PokeBattle_Move_HitsAllFoesAndPowersUpInPsychicTerrain < PokeBattle_Move
class Battle::Move::HitsAllFoesAndPowersUpInPsychicTerrain < Battle::Move
def pbTarget(user)
if @battle.field.terrain == :Psychic && user.affectedByTerrain?
return GameData::Target.get(:AllNearFoes)
@@ -335,7 +335,7 @@ end
# Powders the foe. This round, if it uses a Fire move, it loses 1/4 of its max
# HP instead. (Powder)
#===============================================================================
class PokeBattle_Move_TargetNextFireMoveDamagesTarget < PokeBattle_Move
class Battle::Move::TargetNextFireMoveDamagesTarget < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -356,7 +356,7 @@ end
#===============================================================================
# Power is doubled if Fusion Flare has already been used this round. (Fusion Bolt)
#===============================================================================
class PokeBattle_Move_DoublePowerAfterFusionFlare < PokeBattle_Move
class Battle::Move::DoublePowerAfterFusionFlare < Battle::Move
def pbChangeUsageCounters(user,specialUsage)
@doublePower = @battle.field.effects[PBEffects::FusionFlare]
super
@@ -381,7 +381,7 @@ end
#===============================================================================
# Power is doubled if Fusion Bolt has already been used this round. (Fusion Flare)
#===============================================================================
class PokeBattle_Move_DoublePowerAfterFusionBolt < PokeBattle_Move
class Battle::Move::DoublePowerAfterFusionBolt < Battle::Move
def pbChangeUsageCounters(user,specialUsage)
@doublePower = @battle.field.effects[PBEffects::FusionBolt]
super
@@ -406,7 +406,7 @@ end
#===============================================================================
# Powers up the ally's attack this round by 1.5. (Helping Hand)
#===============================================================================
class PokeBattle_Move_PowerUpAllyMove < PokeBattle_Move
class Battle::Move::PowerUpAllyMove < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -428,7 +428,7 @@ end
# Counters a physical move used against the user this round, with 2x the power.
# (Counter)
#===============================================================================
class PokeBattle_Move_CounterPhysicalDamage < PokeBattle_FixedDamageMove
class Battle::Move::CounterPhysicalDamage < Battle::Move::FixedDamageMove
def pbAddTarget(targets,user)
t = user.effects[PBEffects::CounterTarget]
return if t<0 || !user.opposes?(t)
@@ -454,7 +454,7 @@ end
# Counters a specical move used against the user this round, with 2x the power.
# (Mirror Coat)
#===============================================================================
class PokeBattle_Move_CounterSpecialDamage < PokeBattle_FixedDamageMove
class Battle::Move::CounterSpecialDamage < Battle::Move::FixedDamageMove
def pbAddTarget(targets,user)
t = user.effects[PBEffects::MirrorCoatTarget]
return if t<0 || !user.opposes?(t)
@@ -480,7 +480,7 @@ end
# Counters the last damaging move used against the user this round, with 1.5x
# the power. (Metal Burst)
#===============================================================================
class PokeBattle_Move_CounterDamagePlusHalf < PokeBattle_FixedDamageMove
class Battle::Move::CounterDamagePlusHalf < Battle::Move::FixedDamageMove
def pbAddTarget(targets,user)
return if user.lastFoeAttacker.length==0
lastAttacker = user.lastFoeAttacker.last
@@ -507,7 +507,7 @@ end
# Increases the user's Defense and Special Defense by 1 stage each. Ups the
# user's stockpile by 1 (max. 3). (Stockpile)
#===============================================================================
class PokeBattle_Move_UserAddStockpileRaiseDefSpDef1 < PokeBattle_Move
class Battle::Move::UserAddStockpileRaiseDefSpDef1 < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)
@@ -541,7 +541,7 @@ end
# Power is 100 multiplied by the user's stockpile (X). Resets the stockpile to
# 0. Decreases the user's Defense and Special Defense by X stages each. (Spit Up)
#===============================================================================
class PokeBattle_Move_PowerDependsOnUserStockpile < PokeBattle_Move
class Battle::Move::PowerDependsOnUserStockpile < Battle::Move
def pbMoveFailed?(user,targets)
if user.effects[PBEffects::Stockpile]==0
@battle.pbDisplay(_INTL("But it failed to spit up a thing!"))
@@ -580,7 +580,7 @@ end
# Heals user depending on the user's stockpile (X). Resets the stockpile to 0.
# Decreases the user's Defense and Special Defense by X stages each. (Swallow)
#===============================================================================
class PokeBattle_Move_HealUserDependingOnUserStockpile < PokeBattle_Move
class Battle::Move::HealUserDependingOnUserStockpile < Battle::Move
def healingMove?; return true; end
def canSnatch?; return true; end
@@ -631,7 +631,7 @@ end
# If the move is a combo, power is doubled and causes either a sea of fire or a
# swamp on the opposing side.
#===============================================================================
class PokeBattle_Move_GrassPledge < PokeBattle_PledgeMove
class Battle::Move::GrassPledge < Battle::Move::PledgeMove
def initialize(battle,move)
super
# [Function code to combo with, effect, override type, override animation]
@@ -645,7 +645,7 @@ end
# If the move is a combo, power is doubled and causes either a rainbow on the
# user's side or a sea of fire on the opposing side.
#===============================================================================
class PokeBattle_Move_FirePledge < PokeBattle_PledgeMove
class Battle::Move::FirePledge < Battle::Move::PledgeMove
def initialize(battle,move)
super
# [Function code to combo with, effect, override type, override animation]
@@ -659,7 +659,7 @@ end
# If the move is a combo, power is doubled and causes either a swamp on the
# opposing side or a rainbow on the user's side.
#===============================================================================
class PokeBattle_Move_WaterPledge < PokeBattle_PledgeMove
class Battle::Move::WaterPledge < Battle::Move::PledgeMove
def initialize(battle,move)
super
# [Function code to combo with, effect, override type, override animation]
@@ -671,7 +671,7 @@ end
#===============================================================================
# Uses the last move that was used. (Copycat)
#===============================================================================
class PokeBattle_Move_UseLastMoveUsed < PokeBattle_Move
class Battle::Move::UseLastMoveUsed < Battle::Move
def callsAnotherMove?; return true; end
def initialize(battle,move)
@@ -760,7 +760,7 @@ end
#===============================================================================
# Uses the last move that the target used. (Mirror Move)
#===============================================================================
class PokeBattle_Move_UseLastMoveUsedByTarget < PokeBattle_Move
class Battle::Move::UseLastMoveUsedByTarget < Battle::Move
def ignoresSubstitute?(user); return true; end
def callsAnotherMove?; return true; end
@@ -786,7 +786,7 @@ end
# Uses the move the target was about to use this round, with 1.5x power.
# (Me First)
#===============================================================================
class PokeBattle_Move_UseMoveTargetIsAboutToUse < PokeBattle_Move
class Battle::Move::UseMoveTargetIsAboutToUse < Battle::Move
def ignoresSubstitute?(user); return true; end
def callsAnotherMove?; return true; end
@@ -831,7 +831,7 @@ end
# where it targets the user. It makes more sense for it to target another
# Pokémon.
#===============================================================================
class PokeBattle_Move_UseMoveDependingOnEnvironment < PokeBattle_Move
class Battle::Move::UseMoveDependingOnEnvironment < Battle::Move
def callsAnotherMove?; return true; end
def pbOnStartUse(user,targets)
@@ -891,7 +891,7 @@ end
#===============================================================================
# Uses a random move that exists. (Metronome)
#===============================================================================
class PokeBattle_Move_UseRandomMove < PokeBattle_Move
class Battle::Move::UseRandomMove < Battle::Move
def callsAnotherMove?; return true; end
def initialize(battle,move)
@@ -1006,7 +1006,7 @@ end
#===============================================================================
# Uses a random move known by any non-user Pokémon in the user's party. (Assist)
#===============================================================================
class PokeBattle_Move_UseRandomMoveFromUserParty < PokeBattle_Move
class Battle::Move::UseRandomMoveFromUserParty < Battle::Move
def callsAnotherMove?; return true; end
def initialize(battle,move)
@@ -1120,7 +1120,7 @@ end
#===============================================================================
# Uses a random move the user knows. Fails if user is not asleep. (Sleep Talk)
#===============================================================================
class PokeBattle_Move_UseRandomUserMoveIfAsleep < PokeBattle_Move
class Battle::Move::UseRandomUserMoveIfAsleep < Battle::Move
def usableWhenAsleep?; return true; end
def callsAnotherMove?; return true; end
@@ -1189,7 +1189,7 @@ end
# This round, reflects all moves with the "C" flag targeting the user back at
# their origin. (Magic Coat)
#===============================================================================
class PokeBattle_Move_BounceBackProblemCausingStatusMoves < PokeBattle_Move
class Battle::Move::BounceBackProblemCausingStatusMoves < Battle::Move
def pbEffectGeneral(user)
user.effects[PBEffects::MagicCoat] = true
@battle.pbDisplay(_INTL("{1} shrouded itself with Magic Coat!",user.pbThis))
@@ -1199,7 +1199,7 @@ end
#===============================================================================
# This round, snatches all used moves with the "D" flag. (Snatch)
#===============================================================================
class PokeBattle_Move_StealAndUseBeneficialStatusMove < PokeBattle_Move
class Battle::Move::StealAndUseBeneficialStatusMove < Battle::Move
def pbEffectGeneral(user)
user.effects[PBEffects::Snatch] = 1
@battle.allBattlers.each do |b|
@@ -1214,7 +1214,7 @@ end
# This move turns into the last move used by the target, until user switches
# out. (Mimic)
#===============================================================================
class PokeBattle_Move_ReplaceMoveThisBattleWithTargetLastMoveUsed < PokeBattle_Move
class Battle::Move::ReplaceMoveThisBattleWithTargetLastMoveUsed < Battle::Move
def ignoresSubstitute?(user); return true; end
def initialize(battle,move)
@@ -1254,7 +1254,7 @@ class PokeBattle_Move_ReplaceMoveThisBattleWithTargetLastMoveUsed < PokeBattle_M
user.eachMoveWithIndex do |m,i|
next if m.id!=@id
newMove = Pokemon::Move.new(target.lastRegularMoveUsed)
user.moves[i] = PokeBattle_Move.from_pokemon_move(@battle,newMove)
user.moves[i] = Battle::Move.from_pokemon_move(@battle,newMove)
@battle.pbDisplay(_INTL("{1} learned {2}!",user.pbThis,newMove.name))
user.pbCheckFormOnMovesetChange
break
@@ -1265,7 +1265,7 @@ end
#===============================================================================
# This move permanently turns into the last move used by the target. (Sketch)
#===============================================================================
class PokeBattle_Move_ReplaceMoveWithTargetLastMoveUsed < PokeBattle_Move
class Battle::Move::ReplaceMoveWithTargetLastMoveUsed < Battle::Move
def ignoresSubstitute?(user); return true; end
def initialize(battle,move)
@@ -1302,7 +1302,7 @@ class PokeBattle_Move_ReplaceMoveWithTargetLastMoveUsed < PokeBattle_Move
next if m.id!=@id
newMove = Pokemon::Move.new(target.lastRegularMoveUsed)
user.pokemon.moves[i] = newMove
user.moves[i] = PokeBattle_Move.from_pokemon_move(@battle,newMove)
user.moves[i] = Battle::Move.from_pokemon_move(@battle,newMove)
@battle.pbDisplay(_INTL("{1} learned {2}!",user.pbThis,newMove.name))
user.pbCheckFormOnMovesetChange
break

View File

@@ -1,7 +1,7 @@
#===============================================================================
# User flees from battle. (Teleport (Gen 7-))
#===============================================================================
class PokeBattle_Move_FleeFromBattle < PokeBattle_Move
class Battle::Move::FleeFromBattle < Battle::Move
def pbMoveFailed?(user,targets)
if !@battle.pbCanRun?(user.index)
@battle.pbDisplay(_INTL("But it failed!"))
@@ -20,7 +20,7 @@ end
# User switches out. If user is a wild Pokémon, ends the battle instead.
# (Teleport (Gen 8+))
#===============================================================================
class PokeBattle_Move_SwitchOutUserStatusMove < PokeBattle_Move
class Battle::Move::SwitchOutUserStatusMove < Battle::Move
def pbMoveFailed?(user,targets)
if user.wild?
if !@battle.pbCanRun?(user.index)
@@ -61,7 +61,7 @@ end
# After inflicting damage, user switches out. Ignores trapping moves.
# (U-turn, Volt Switch)
#===============================================================================
class PokeBattle_Move_SwitchOutUserDamagingMove < PokeBattle_Move
class Battle::Move::SwitchOutUserDamagingMove < Battle::Move
def pbEndOfMoveUsageEffect(user,targets,numHits,switchedBattlers)
return if user.fainted? || numHits==0 || @battle.pbAllFainted?(user.idxOpposingSide)
targetSwitched = true
@@ -88,7 +88,7 @@ end
# Decreases the target's Attack and Special Attack by 1 stage each. Then, user
# switches out. Ignores trapping moves. (Parting Shot)
#===============================================================================
class PokeBattle_Move_LowerTargetAtkSpAtk1SwitchOutUser < PokeBattle_TargetMultiStatDownMove
class Battle::Move::LowerTargetAtkSpAtk1SwitchOutUser < Battle::Move::TargetMultiStatDownMove
def initialize(battle,move)
super
@statDown = [:ATTACK,1,:SPECIAL_ATTACK,1]
@@ -120,7 +120,7 @@ end
# User switches out. Various effects affecting the user are passed to the
# replacement. (Baton Pass)
#===============================================================================
class PokeBattle_Move_SwitchOutUserPassOnEffects < PokeBattle_Move
class Battle::Move::SwitchOutUserPassOnEffects < Battle::Move
def pbMoveFailed?(user,targets)
if !@battle.pbCanChooseNonActive?(user.index)
@battle.pbDisplay(_INTL("But it failed!"))
@@ -150,7 +150,7 @@ end
# In trainer battles, target switches out.
# For status moves. (Roar, Whirlwind)
#===============================================================================
class PokeBattle_Move_SwitchOutTargetStatusMove < PokeBattle_Move
class Battle::Move::SwitchOutTargetStatusMove < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -158,7 +158,7 @@ class PokeBattle_Move_SwitchOutTargetStatusMove < PokeBattle_Move
if target.hasActiveAbility?(:SUCTIONCUPS) && !@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("{1} anchors itself!", target.pbThis))
else
@battle.pbDisplay(_INTL("{1} anchors itself with {2}!", target.pbThis, target.abilityName))
@@ -223,7 +223,7 @@ end
# In trainer battles, target switches out.
# For damaging moves. (Circle Throw, Dragon Tail)
#===============================================================================
class PokeBattle_Move_SwitchOutTargetDamagingMove < PokeBattle_Move
class Battle::Move::SwitchOutTargetDamagingMove < Battle::Move
def pbEffectAgainstTarget(user,target)
if @battle.wildBattle? && target.level<=user.level && @battle.canRun &&
(target.effects[PBEffects::Substitute]==0 || ignoresSubstitute?(user))
@@ -254,7 +254,7 @@ end
# Trapping move. Traps for 5 or 6 rounds. Trapped Pokémon lose 1/16 of max HP
# at end of each round.
#===============================================================================
class PokeBattle_Move_BindTarget < PokeBattle_Move
class Battle::Move::BindTarget < Battle::Move
def pbEffectAgainstTarget(user,target)
return if target.fainted? || target.damageState.substitute
return if target.effects[PBEffects::Trapping]>0
@@ -295,7 +295,7 @@ end
# at end of each round. (Whirlpool)
# Power is doubled if target is using Dive. Hits some semi-invulnerable targets.
#===============================================================================
class PokeBattle_Move_BindTargetDoublePowerIfTargetUnderwater < PokeBattle_Move_BindTarget
class Battle::Move::BindTargetDoublePowerIfTargetUnderwater < Battle::Move::BindTarget
def hitsDivingTargets?; return true; end
def pbModifyDamage(damageMult,user,target)
@@ -308,7 +308,7 @@ end
# Target can no longer switch out or flee, as long as the user remains active.
# (Anchor Shot, Block, Mean Look, Spider Web, Spirit Shackle, Thousand Waves)
#===============================================================================
class PokeBattle_Move_TrapTargetInBattle < PokeBattle_Move
class Battle::Move::TrapTargetInBattle < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -344,7 +344,7 @@ end
# At the end of each round, the target's Defense and Special Defense are lowered
# by 1 stage each. (Octolock)
#===============================================================================
class PokeBattle_Move_TrapTargetInBattleLowerTargetDefSpDef1EachTurn < PokeBattle_Move
class Battle::Move::TrapTargetInBattleLowerTargetDefSpDef1EachTurn < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
return false if damagingMove?
if target.effects[PBEffects::Octolock] >= 0
@@ -369,7 +369,7 @@ end
# isn't applied if either Pokémon is already prevented from switching out or
# fleeing. (Jaw Lock)
#===============================================================================
class PokeBattle_Move_TrapUserAndTargetInBattle < PokeBattle_Move
class Battle::Move::TrapUserAndTargetInBattle < Battle::Move
def pbAdditionalEffect(user, target)
return if user.fainted? || target.fainted? || target.damageState.substitute
return if Settings::MORE_TYPE_EFFECTS && target.pbHasType?(:GHOST)
@@ -383,7 +383,7 @@ end
# No Pokémon can switch out or flee until the end of the next round, as long as
# the user remains active. (Fairy Lock)
#===============================================================================
class PokeBattle_Move_TrapAllBattlersInBattleForOneTurn < PokeBattle_Move
class Battle::Move::TrapAllBattlersInBattleForOneTurn < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.field.effects[PBEffects::FairyLock]>0
@battle.pbDisplay(_INTL("But it failed!"))
@@ -403,7 +403,7 @@ end
# is doubled in that case. (Pursuit)
# (Handled in Battle's pbAttackPhase): Makes this attack happen before switching.
#===============================================================================
class PokeBattle_Move_PursueSwitchingFoe < PokeBattle_Move
class Battle::Move::PursueSwitchingFoe < Battle::Move
def pbAccuracyCheck(user,target)
return true if @battle.switching
return super
@@ -419,7 +419,7 @@ end
# Fails if user has not been hit by an opponent's physical move this round.
# (Shell Trap)
#===============================================================================
class PokeBattle_Move_UsedAfterUserTakesPhysicalDamage < PokeBattle_Move
class Battle::Move::UsedAfterUserTakesPhysicalDamage < Battle::Move
def pbDisplayChargeMessage(user)
user.effects[PBEffects::ShellTrap] = true
@battle.pbCommonAnimation("ShellTrap",user)
@@ -447,7 +447,7 @@ end
# Power is doubled if a user's ally has already used this move this round. (Round)
# If an ally is about to use the same move, make it go next, ignoring priority.
#===============================================================================
class PokeBattle_Move_UsedAfterAllyRoundWithDoublePower < PokeBattle_Move
class Battle::Move::UsedAfterAllyRoundWithDoublePower < Battle::Move
def pbBaseDamage(baseDmg,user,target)
baseDmg *= 2 if user.pbOwnSide.effects[PBEffects::Round]
return baseDmg
@@ -468,7 +468,7 @@ end
#===============================================================================
# Target moves immediately after the user, ignoring priority/speed. (After You)
#===============================================================================
class PokeBattle_Move_TargetActsNext < PokeBattle_Move
class Battle::Move::TargetActsNext < Battle::Move
def ignoresSubstitute?(user); return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -498,7 +498,7 @@ end
#===============================================================================
# Target moves last this round, ignoring priority/speed. (Quash)
#===============================================================================
class PokeBattle_Move_TargetActsLast < PokeBattle_Move
class Battle::Move::TargetActsLast < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
return true if pbMoveFailedTargetAlreadyMoved?(target, show_message)
# Target isn't going to use a move
@@ -540,7 +540,7 @@ end
#===============================================================================
# The target uses its most recent move again. (Instruct)
#===============================================================================
class PokeBattle_Move_TargetUsesItsLastUsedMoveAgain < PokeBattle_Move
class Battle::Move::TargetUsesItsLastUsedMoveAgain < Battle::Move
def ignoresSubstitute?(user); return true; end
def initialize(battle,move)
@@ -627,7 +627,7 @@ end
# For 5 rounds, for each priority bracket, slow Pokémon move before fast ones.
# (Trick Room)
#===============================================================================
class PokeBattle_Move_StartSlowerBattlersActFirst < PokeBattle_Move
class Battle::Move::StartSlowerBattlersActFirst < Battle::Move
def pbEffectGeneral(user)
if @battle.field.effects[PBEffects::TrickRoom]>0
@battle.field.effects[PBEffects::TrickRoom] = 0
@@ -647,7 +647,7 @@ end
#===============================================================================
# If Grassy Terrain applies, priority is increased by 1. (Grassy Glide)
#===============================================================================
class PokeBattle_Move_HigherPriorityInGrassyTerrain < PokeBattle_Move
class Battle::Move::HigherPriorityInGrassyTerrain < Battle::Move
def pbPriority(user)
ret = super
ret += 1 if @battle.field.terrain == :Grass && user.affectedByTerrain?
@@ -659,7 +659,7 @@ end
# Decreases the PP of the last attack used by the target by 3 (or as much as
# possible). (Eerie Spell)
#===============================================================================
class PokeBattle_Move_LowerPPOfTargetLastMoveBy3 < PokeBattle_Move
class Battle::Move::LowerPPOfTargetLastMoveBy3 < Battle::Move
def pbFailsAgainstTarget?(user, target, show_message)
last_move = target.pbGetMoveWithID(target.lastRegularMoveUsed)
if !last_move || last_move.pp == 0 || last_move.total_pp <= 0
@@ -681,7 +681,7 @@ end
#===============================================================================
# Target's last move used loses 4 PP. (Spite)
#===============================================================================
class PokeBattle_Move_LowerPPOfTargetLastMoveBy4 < PokeBattle_Move
class Battle::Move::LowerPPOfTargetLastMoveBy4 < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -706,7 +706,7 @@ end
#===============================================================================
# For 5 rounds, disables the last move the target used. (Disable)
#===============================================================================
class PokeBattle_Move_DisableTargetLastMoveUsed < PokeBattle_Move
class Battle::Move::DisableTargetLastMoveUsed < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -742,7 +742,7 @@ end
#===============================================================================
# The target can no longer use the same move twice in a row. (Torment)
#===============================================================================
class PokeBattle_Move_DisableTargetUsingSameMoveConsecutively < PokeBattle_Move
class Battle::Move::DisableTargetUsingSameMoveConsecutively < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -765,7 +765,7 @@ end
#===============================================================================
# For 4 rounds, the target must use the same move each round. (Encore)
#===============================================================================
class PokeBattle_Move_DisableTargetUsingDifferentMove < PokeBattle_Move
class Battle::Move::DisableTargetUsingDifferentMove < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -836,7 +836,7 @@ end
#===============================================================================
# For 4 rounds, disables the target's non-damaging moves. (Taunt)
#===============================================================================
class PokeBattle_Move_DisableTargetStatusMoves < PokeBattle_Move
class Battle::Move::DisableTargetStatusMoves < Battle::Move
def ignoresSubstitute?(user); return true; end
def canMagicCoat?; return true; end
@@ -850,7 +850,7 @@ class PokeBattle_Move_DisableTargetStatusMoves < PokeBattle_Move
!@battle.moldBreaker
if show_message
@battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
@battle.pbDisplay(_INTL("But it failed!"))
else
@battle.pbDisplay(_INTL("But it failed because of {1}'s {2}!",
@@ -873,7 +873,7 @@ end
#===============================================================================
# For 5 rounds, disables the target's healing moves. (Heal Block)
#===============================================================================
class PokeBattle_Move_DisableTargetHealingMoves < PokeBattle_Move
class Battle::Move::DisableTargetHealingMoves < Battle::Move
def canMagicCoat?; return true; end
def pbFailsAgainstTarget?(user, target, show_message)
@@ -895,7 +895,7 @@ end
#===============================================================================
# Target cannot use sound-based moves for 2 more rounds. (Throat Chop)
#===============================================================================
class PokeBattle_Move_DisableTargetSoundMoves < PokeBattle_Move
class Battle::Move::DisableTargetSoundMoves < Battle::Move
def pbAdditionalEffect(user,target)
return if target.fainted? || target.damageState.substitute
@battle.pbDisplay(_INTL("The effects of {1} prevent {2} from using certain moves!",
@@ -907,7 +907,7 @@ end
#===============================================================================
# Disables all target's moves that the user also knows. (Imprison)
#===============================================================================
class PokeBattle_Move_DisableTargetMovesKnownByUser < PokeBattle_Move
class Battle::Move::DisableTargetMovesKnownByUser < Battle::Move
def canSnatch?; return true; end
def pbMoveFailed?(user,targets)

View File

@@ -1,16 +1,77 @@
# Battle scene (the visuals of the battle)
class PokeBattle_Scene
class Battle::Scene
attr_accessor :abortable # For non-interactive battles, can quit immediately
attr_reader :viewport
attr_reader :sprites
USE_ABILITY_SPLASH = (Settings::MECHANICS_GENERATION >= 5)
MESSAGE_PAUSE_TIME = 1.0 # In seconds
# Text colors
MESSAGE_BASE_COLOR = Color.new(80, 80, 88)
MESSAGE_SHADOW_COLOR = Color.new(160, 160, 168)
# The number of party balls to show in each side's lineup.
NUM_BALLS = Settings::MAX_PARTY_SIZE
# Centre bottom of the player's side base graphic
PLAYER_BASE_X = 128
PLAYER_BASE_Y = Settings::SCREEN_HEIGHT - 80
# Centre middle of the foe's side base graphic
FOE_BASE_X = Settings::SCREEN_WIDTH - 128
FOE_BASE_Y = (Settings::SCREEN_HEIGHT * 3 / 4) - 112
# Default focal points of user and target in animations - do not change!
# Is the centre middle of each sprite
FOCUSUSER_X = 128
FOCUSUSER_Y = 224
FOCUSTARGET_X = 384
FOCUSTARGET_Y = 96
# Menu types
BLANK = 0
MESSAGE_BOX = 1
COMMAND_BOX = 2
FIGHT_BOX = 3
TARGET_BOX = 4
MESSAGE_PAUSE_TIME = (Graphics.frame_rate*1.0).floor # 1 second
# Returns where the centre bottom of a battler's sprite should be, given its
# index and the number of battlers on its side, assuming the battler has
# metrics of 0 (those are added later).
def self.pbBattlerPosition(index, sideSize = 1)
# Start at the centre of the base for the appropriate side
if (index & 1) == 0
ret = [PLAYER_BASE_X, PLAYER_BASE_Y]
else
ret = [FOE_BASE_X, FOE_BASE_Y]
end
# Shift depending on index (no shifting needed for sideSize of 1)
case sideSize
when 2
ret[0] += [-48, 48, 32, -32][index]
ret[1] += [ 0, 0, 16, -16][index]
when 3
ret[0] += [-80, 80, 0, 0, 80, -80][index]
ret[1] += [ 0, 0, 8, -8, 16, -16][index]
end
return ret
end
# Returns where the centre bottom of a trainer's sprite should be, given its
# side (0/1), index and the number of trainers on its side.
def self.pbTrainerPosition(side, index = 0, sideSize = 1)
# Start at the centre of the base for the appropriate side
if side == 0
ret = [PLAYER_BASE_X, PLAYER_BASE_Y - 16]
else
ret = [FOE_BASE_X, FOE_BASE_Y + 6]
end
# Shift depending on index (no shifting needed for sideSize of 1)
case sideSize
when 2
ret[0] += [-48, 48, 32, -32][2 * index + side]
ret[1] += [ 0, 0, 0, -16][2 * index + side]
when 3
ret[0] += [-80, 80, 0, 0, 80, -80][2 * index + side]
ret[1] += [ 0, 0, 0, -8, 0, -16][2 * index + side]
end
return ret
end
#=============================================================================
# Updating and refreshing
@@ -102,8 +163,10 @@ class PokeBattle_Scene
return if !@briefMessage
pbShowWindow(MESSAGE_BOX)
cw = @sprites["messageWindow"]
MESSAGE_PAUSE_TIME.times do
timer = 0.0
while timer < MESSAGE_PAUSE_TIME
pbUpdate(cw)
timer += Graphics.delta_s
end
cw.text = ""
cw.visible = false
@@ -119,7 +182,7 @@ class PokeBattle_Scene
cw.setText(msg)
PBDebug.log(msg)
yielded = false
i = 0
timer = 0.0
loop do
pbUpdate(cw)
if !cw.busy?
@@ -133,12 +196,12 @@ class PokeBattle_Scene
@briefMessage = true
break
end
if i>=MESSAGE_PAUSE_TIME # Autoclose after 1 second
if timer >= MESSAGE_PAUSE_TIME # Autoclose after 1 second
cw.text = ""
cw.visible = false
break
end
i += 1
timer += Graphics.delta_s
end
if Input.trigger?(Input::BACK) || Input.trigger?(Input::USE) || @abortable
if cw.busy?
@@ -165,7 +228,7 @@ class PokeBattle_Scene
cw.text = _INTL("{1}\1",msg)
PBDebug.log(msg)
yielded = false
i = 0
timer = 0.0
loop do
pbUpdate(cw)
if !cw.busy?
@@ -174,12 +237,12 @@ class PokeBattle_Scene
yielded = true
end
if !@battleEnd
if i>=MESSAGE_PAUSE_TIME*3 # Autoclose after 3 seconds
if timer >= MESSAGE_PAUSE_TIME * 3 # Autoclose after 3 seconds
cw.text = ""
cw.visible = false
break
end
i += 1
timer += Graphics.delta_s
end
end
if Input.trigger?(Input::BACK) || Input.trigger?(Input::USE) || @abortable

View File

@@ -1,4 +1,4 @@
class PokeBattle_Scene
class Battle::Scene
#=============================================================================
# Create the battle scene and its elements
#=============================================================================
@@ -35,16 +35,16 @@ class PokeBattle_Scene
16,Graphics.height-96+2,Graphics.width-32,96,@viewport)
msgWindow.z = 200
msgWindow.opacity = 0
msgWindow.baseColor = PokeBattle_SceneConstants::MESSAGE_BASE_COLOR
msgWindow.shadowColor = PokeBattle_SceneConstants::MESSAGE_SHADOW_COLOR
msgWindow.baseColor = MESSAGE_BASE_COLOR
msgWindow.shadowColor = MESSAGE_SHADOW_COLOR
msgWindow.letterbyletter = true
@sprites["messageWindow"] = msgWindow
# Create command window
@sprites["commandWindow"] = CommandMenuDisplay.new(@viewport,200)
@sprites["commandWindow"] = CommandMenu.new(@viewport,200)
# Create fight window
@sprites["fightWindow"] = FightMenuDisplay.new(@viewport,200)
@sprites["fightWindow"] = FightMenu.new(@viewport,200)
# Create targeting window
@sprites["targetWindow"] = TargetMenuDisplay.new(@viewport,200,@battle.sideSizes)
@sprites["targetWindow"] = TargetMenu.new(@viewport,200,@battle.sideSizes)
pbShowWindow(MESSAGE_BOX)
# The party lineup graphics (bar and balls) for both sides
for side in 0...2
@@ -53,13 +53,13 @@ class PokeBattle_Scene
partyBar.z = 120
partyBar.mirror = true if side==0 # Player's lineup bar only
partyBar.visible = false
for i in 0...PokeBattle_SceneConstants::NUM_BALLS
for i in 0...NUM_BALLS
ball = pbAddSprite("partyBall_#{side}_#{i}",0,0,nil,@viewport)
ball.z = 121
ball.visible = false
end
# Ability splash bars
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if USE_ABILITY_SPLASH
@sprites["abilityBar_#{side}"] = AbilitySplashBar.new(side,@viewport)
end
end
@@ -137,7 +137,7 @@ class PokeBattle_Scene
bg.z = 0
bg.mirror = true
for side in 0...2
baseX, baseY = PokeBattle_SceneConstants.pbBattlerPosition(side)
baseX, baseY = Battle::Scene.pbBattlerPosition(side)
base = pbAddSprite("base_#{side}",baseX,baseY,
(side==0) ? playerBase : enemyBase,@viewport)
base.z = 1
@@ -156,7 +156,7 @@ class PokeBattle_Scene
else # Partner trainer's sprite
trainerFile = GameData::TrainerType.back_sprite_filename(trainerType)
end
spriteX, spriteY = PokeBattle_SceneConstants.pbTrainerPosition(0,idxTrainer,numTrainers)
spriteX, spriteY = Battle::Scene.pbTrainerPosition(0,idxTrainer,numTrainers)
trainer = pbAddSprite("player_#{idxTrainer+1}",spriteX,spriteY,trainerFile,@viewport)
return if !trainer.bitmap
# Alter position of sprite
@@ -171,7 +171,7 @@ class PokeBattle_Scene
def pbCreateTrainerFrontSprite(idxTrainer,trainerType,numTrainers=1)
trainerFile = GameData::TrainerType.front_sprite_filename(trainerType)
spriteX, spriteY = PokeBattle_SceneConstants.pbTrainerPosition(1,idxTrainer,numTrainers)
spriteX, spriteY = Battle::Scene.pbTrainerPosition(1,idxTrainer,numTrainers)
trainer = pbAddSprite("trainer_#{idxTrainer+1}",spriteX,spriteY,trainerFile,@viewport)
return if !trainer.bitmap
# Alter position of sprite
@@ -182,9 +182,9 @@ class PokeBattle_Scene
def pbCreatePokemonSprite(idxBattler)
sideSize = @battle.pbSideSize(idxBattler)
batSprite = PokemonBattlerSprite.new(@viewport,sideSize,idxBattler,@animations)
batSprite = BattlerSprite.new(@viewport,sideSize,idxBattler,@animations)
@sprites["pokemon_#{idxBattler}"] = batSprite
shaSprite = PokemonBattlerShadowSprite.new(@viewport,sideSize,idxBattler)
shaSprite = BattlerShadowSprite.new(@viewport,sideSize,idxBattler)
shaSprite.visible = false
@sprites["shadow_#{idxBattler}"] = shaSprite
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_Scene
class Battle::Scene
#=============================================================================
# The player chooses a main command for a Pokémon
# Return values: -1=Cancel, 0=Fight, 1=Bag, 2=Pokémon, 3=Run, 4=Call

View File

@@ -1,10 +1,10 @@
class PokeBattle_Scene
class Battle::Scene
#=============================================================================
# Animates the battle intro
#=============================================================================
def pbBattleIntroAnimation
# Make everything appear
introAnim = BattleIntroAnimation.new(@sprites,@viewport,@battle)
introAnim = Animation::Intro.new(@sprites,@viewport,@battle)
loop do
introAnim.update
pbUpdate
@@ -30,12 +30,12 @@ class PokeBattle_Scene
for i in 0...@battle.sideSizes[1]
idxBattler = 2*i+1
next if !@battle.battlers[idxBattler]
dataBoxAnim = DataBoxAppearAnimation.new(@sprites,@viewport,idxBattler)
dataBoxAnim = Animation::DataBoxAppear.new(@sprites,@viewport,idxBattler)
@animations.push(dataBoxAnim)
end
# Set up wild Pokémon returning to normal colour and playing intro
# animations (including cry)
@animations.push(BattleIntroAnimation2.new(@sprites,@viewport,@battle.sideSizes[1]))
@animations.push(Animation::Intro2.new(@sprites,@viewport,@battle.sideSizes[1]))
# Play all the animations
while inPartyAnimation?
pbUpdate
@@ -58,7 +58,7 @@ class PokeBattle_Scene
# Animates a party lineup appearing for the given side
#=============================================================================
def pbShowPartyLineup(side,fullAnim=false)
@animations.push(LineupAppearAnimation.new(@sprites,@viewport,
@animations.push(Animation::LineupAppear.new(@sprites,@viewport,
side,@battle.pbParty(side),@battle.pbPartyStarts(side),fullAnim))
if !fullAnim
while inPartyAnimation?
@@ -74,7 +74,7 @@ class PokeBattle_Scene
#=============================================================================
def pbShowOpponent(idxTrainer)
# Set up trainer appearing animation
appearAnim = TrainerAppearAnimation.new(@sprites,@viewport,idxTrainer)
appearAnim = Animation::TrainerAppear.new(@sprites,@viewport,idxTrainer)
@animations.push(appearAnim)
# Play the animation
while inPartyAnimation?
@@ -99,9 +99,9 @@ class PokeBattle_Scene
# Make all trainers and party lineups disappear (player-side trainers may
# animate throwing a Poké Ball)
if @battle.opposes?(sendOuts[0][0])
fadeAnim = TrainerFadeAnimation.new(@sprites,@viewport,startBattle)
fadeAnim = Animation::TrainerFade.new(@sprites,@viewport,startBattle)
else
fadeAnim = PlayerFadeAnimation.new(@sprites,@viewport,startBattle)
fadeAnim = Animation::PlayerFade.new(@sprites,@viewport,startBattle)
end
# For each battler being sent out, set the battler's sprite and create two
# animations (the Poké Ball moving and battler appearing from it, and its
@@ -112,15 +112,15 @@ class PokeBattle_Scene
pbChangePokemon(b[0],pkmn)
pbRefresh
if @battle.opposes?(b[0])
sendOutAnim = PokeballTrainerSendOutAnimation.new(@sprites,@viewport,
sendOutAnim = Animation::PokeballTrainerSendOut.new(@sprites,@viewport,
@battle.pbGetOwnerIndexFromBattlerIndex(b[0])+1,
@battle.battlers[b[0]],startBattle,i)
else
sendOutAnim = PokeballPlayerSendOutAnimation.new(@sprites,@viewport,
sendOutAnim = Animation::PokeballPlayerSendOut.new(@sprites,@viewport,
@battle.pbGetOwnerIndexFromBattlerIndex(b[0])+1,
@battle.battlers[b[0]],startBattle,i)
end
dataBoxAnim = DataBoxAppearAnimation.new(@sprites,@viewport,b[0])
dataBoxAnim = Animation::DataBoxAppear.new(@sprites,@viewport,b[0])
sendOutAnims.push([sendOutAnim,dataBoxAnim,false])
end
# Play all animations
@@ -159,7 +159,7 @@ class PokeBattle_Scene
def pbRecall(idxBattler)
@briefMessage = false
# Recall animation
recallAnim = BattlerRecallAnimation.new(@sprites,@viewport,idxBattler)
recallAnim = Animation::BattlerRecall.new(@sprites,@viewport,idxBattler)
loop do
recallAnim.update if recallAnim
pbUpdate
@@ -167,7 +167,7 @@ class PokeBattle_Scene
end
recallAnim.dispose
# Data box disappear animation
dataBoxAnim = DataBoxDisappearAnimation.new(@sprites,@viewport,idxBattler)
dataBoxAnim = Animation::DataBoxDisappear.new(@sprites,@viewport,idxBattler)
loop do
dataBoxAnim.update
pbUpdate
@@ -180,11 +180,11 @@ class PokeBattle_Scene
# Ability splash bar animations
#=============================================================================
def pbShowAbilitySplash(battler)
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
return if !USE_ABILITY_SPLASH
side = battler.index%2
pbHideAbilitySplash(battler) if @sprites["abilityBar_#{side}"].visible
@sprites["abilityBar_#{side}"].battler = battler
abilitySplashAnim = AbilitySplashAppearAnimation.new(@sprites,@viewport,side)
abilitySplashAnim = Animation::AbilitySplashAppear.new(@sprites,@viewport,side)
loop do
abilitySplashAnim.update
pbUpdate
@@ -194,10 +194,10 @@ class PokeBattle_Scene
end
def pbHideAbilitySplash(battler)
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
return if !USE_ABILITY_SPLASH
side = battler.index%2
return if !@sprites["abilityBar_#{side}"].visible
abilitySplashAnim = AbilitySplashDisappearAnimation.new(@sprites,@viewport,side)
abilitySplashAnim = Animation::AbilitySplashDisappear.new(@sprites,@viewport,side)
loop do
abilitySplashAnim.update
pbUpdate
@@ -207,7 +207,7 @@ class PokeBattle_Scene
end
def pbReplaceAbilitySplash(battler)
return if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
return if !USE_ABILITY_SPLASH
pbShowAbilitySplash(battler)
end
@@ -232,7 +232,7 @@ class PokeBattle_Scene
def pbDamageAnimation(battler,effectiveness=0)
@briefMessage = false
# Damage animation
damageAnim = BattlerDamageAnimation.new(@sprites,@viewport,battler.index,effectiveness)
damageAnim = Animation::BattlerDamage.new(@sprites,@viewport,battler.index,effectiveness)
loop do
damageAnim.update
pbUpdate
@@ -249,7 +249,7 @@ class PokeBattle_Scene
# Set up animations
damageAnims = []
targets.each do |t|
anim = BattlerDamageAnimation.new(@sprites,@viewport,t[0].index,t[2])
anim = Animation::BattlerDamage.new(@sprites,@viewport,t[0].index,t[2])
damageAnims.push(anim)
@sprites["dataBox_#{t[0].index}"].animateHP(t[1],t[0].hp,t[0].totalhp)
end
@@ -309,8 +309,8 @@ class PokeBattle_Scene
def pbFaintBattler(battler)
@briefMessage = false
# Pokémon plays cry and drops down, data box disappears
faintAnim = BattlerFaintAnimation.new(@sprites,@viewport,battler.index,@battle)
dataBoxAnim = DataBoxDisappearAnimation.new(@sprites,@viewport,battler.index)
faintAnim = Animation::BattlerFaint.new(@sprites,@viewport,battler.index,@battle)
dataBoxAnim = Animation::DataBoxDisappear.new(@sprites,@viewport,battler.index)
loop do
faintAnim.update
dataBoxAnim.update
@@ -326,7 +326,7 @@ class PokeBattle_Scene
#=============================================================================
def pbThrow(ball,shakes,critical,targetBattler,showPlayer=false)
@briefMessage = false
captureAnim = PokeballThrowCaptureAnimation.new(@sprites,@viewport,
captureAnim = Animation::PokeballThrowCapture.new(@sprites,@viewport,
ball,shakes,critical,@battle.battlers[targetBattler],showPlayer)
loop do
captureAnim.update
@@ -350,12 +350,12 @@ class PokeBattle_Scene
end
def pbHideCaptureBall(idxBattler)
# NOTE: It's not really worth writing a whole PokeBattle_Animation class for
# making the capture ball fade out.
# NOTE: It's not really worth writing a whole Battle::Scene::Animation class
# for making the capture ball fade out.
ball = @sprites["captureBall"]
return if !ball
# Data box disappear animation
dataBoxAnim = DataBoxDisappearAnimation.new(@sprites,@viewport,idxBattler)
dataBoxAnim = Animation::DataBoxDisappear.new(@sprites,@viewport,idxBattler)
loop do
dataBoxAnim.update
ball.opacity -= 12*20/Graphics.frame_rate if ball.opacity>0
@@ -367,7 +367,7 @@ class PokeBattle_Scene
def pbThrowAndDeflect(ball,idxBattler)
@briefMessage = false
throwAnim = PokeballThrowDeflectAnimation.new(@sprites,@viewport,
throwAnim = Animation::PokeballThrowDeflect.new(@sprites,@viewport,
ball,@battle.battlers[idxBattler])
loop do
throwAnim.update
@@ -533,10 +533,8 @@ class PokeBattle_Scene
targetHeight = userHeight
end
animPlayer.setLineTransform(
PokeBattle_SceneConstants::FOCUSUSER_X,PokeBattle_SceneConstants::FOCUSUSER_Y,
PokeBattle_SceneConstants::FOCUSTARGET_X,PokeBattle_SceneConstants::FOCUSTARGET_Y,
oldUserX,oldUserY-userHeight/2,
oldTargetX,oldTargetY-targetHeight/2)
FOCUSUSER_X, FOCUSUSER_Y, FOCUSTARGET_X, FOCUSTARGET_Y,
oldUserX, oldUserY - userHeight / 2, oldTargetX, oldTargetY - targetHeight / 2)
# Play the animation
animPlayer.start
loop do

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Base class for all three menu classes below
#===============================================================================
class BattleMenuBase
class Battle::Scene::MenuBase
attr_accessor :x
attr_accessor :y
attr_reader :z
@@ -11,8 +11,8 @@ class BattleMenuBase
attr_reader :mode
# NOTE: Button width is half the width of the graphic containing them all.
BUTTON_HEIGHT = 46
TEXT_BASE_COLOR = PokeBattle_SceneConstants::MESSAGE_BASE_COLOR
TEXT_SHADOW_COLOR = PokeBattle_SceneConstants::MESSAGE_SHADOW_COLOR
TEXT_BASE_COLOR = Battle::Scene::MESSAGE_BASE_COLOR
TEXT_SHADOW_COLOR = Battle::Scene::MESSAGE_SHADOW_COLOR
def initialize(viewport=nil)
@x = 0
@@ -95,7 +95,7 @@ end
#===============================================================================
# Command menu (Fight/Pokémon/Bag/Run)
#===============================================================================
class CommandMenuDisplay < BattleMenuBase
class Battle::Scene::CommandMenu < Battle::Scene::MenuBase
# If true, displays graphics from Graphics/Pictures/Battle/overlay_command.png
# and Graphics/Pictures/Battle/cursor_command.png.
# If false, just displays text and the command window over the graphic
@@ -199,7 +199,7 @@ end
#===============================================================================
# Fight menu (choose a move)
#===============================================================================
class FightMenuDisplay < BattleMenuBase
class Battle::Scene::FightMenu < Battle::Scene::MenuBase
attr_reader :battler
attr_reader :shiftMode
@@ -442,7 +442,7 @@ end
# NOTE: Unlike the command and fight menus, this one doesn't have a textbox-only
# version.
#===============================================================================
class TargetMenuDisplay < BattleMenuBase
class Battle::Scene::TargetMenu < Battle::Scene::MenuBase
attr_accessor :mode
# Lists of which button graphics to use in different situations/types of battle.

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Data box for regular battles
#===============================================================================
class PokemonDataBox < SpriteWrapper
class Battle::Scene::PokemonDataBox < SpriteWrapper
attr_reader :battler
attr_accessor :selected
attr_reader :animatingHP
@@ -379,7 +379,7 @@ end
#===============================================================================
# Splash bar to announce a triggered ability
#===============================================================================
class AbilitySplashBar < SpriteWrapper
class Battle::Scene::AbilitySplashBar < SpriteWrapper
attr_reader :battler
TEXT_BASE_COLOR = Color.new(0,0,0)
@@ -473,7 +473,7 @@ end
#===============================================================================
# Pokémon sprite (used in battle)
#===============================================================================
class PokemonBattlerSprite < RPG::Sprite
class Battle::Scene::BattlerSprite < RPG::Sprite
attr_reader :pkmn
attr_accessor :index
attr_accessor :selected
@@ -542,7 +542,7 @@ class PokemonBattlerSprite < RPG::Sprite
self.z = 50-5*(@index+1)/2
end
# Set original position
p = PokeBattle_SceneConstants.pbBattlerPosition(@index,@sideSize)
p = Battle::Scene.pbBattlerPosition(@index,@sideSize)
@spriteX = p[0]
@spriteY = p[1]
# Apply metrics
@@ -601,7 +601,7 @@ end
#===============================================================================
# Shadow sprite for Pokémon (used in battle)
#===============================================================================
class PokemonBattlerShadowSprite < RPG::Sprite
class Battle::Scene::BattlerShadowSprite < RPG::Sprite
attr_reader :pkmn
attr_accessor :index
attr_accessor :selected
@@ -637,7 +637,7 @@ class PokemonBattlerShadowSprite < RPG::Sprite
pbSetOrigin
self.z = 3
# Set original position
p = PokeBattle_SceneConstants.pbBattlerPosition(@index,@sideSize)
p = Battle::Scene.pbBattlerPosition(@index,@sideSize)
self.x = p[0]
self.y = p[1]
# Apply metrics

View File

@@ -1,4 +1,4 @@
class PokeBattle_Animation
class Battle::Scene::Animation
def initialize(sprites,viewport)
@sprites = sprites
@viewport = viewport
@@ -60,7 +60,7 @@ end
module PokeBattle_BallAnimationMixin
module Battle::Scene::Animation::BallAnimationMixin
# Returns the color that the Pokémon turns when it goes into or out of its
# Poké Ball.
def getBattlerColorFromPokeBall(poke_ball)

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Shows the battle scene fading in while elements slide around into place
#===============================================================================
class BattleIntroAnimation < PokeBattle_Animation
class Battle::Scene::Animation::Intro < Battle::Scene::Animation
def initialize(sprites,viewport,battle)
@battle = battle
super(sprites,viewport)
@@ -63,7 +63,7 @@ end
# Shows wild Pokémon fading back to their normal color, and triggers their intro
# animations
#===============================================================================
class BattleIntroAnimation2 < PokeBattle_Animation
class Battle::Scene::Animation::Intro2 < Battle::Scene::Animation
def initialize(sprites,viewport,sideSize)
@sideSize = sideSize
super(sprites,viewport)
@@ -85,7 +85,7 @@ end
#===============================================================================
# Makes a side's party bar and balls appear
#===============================================================================
class LineupAppearAnimation < PokeBattle_Animation
class Battle::Scene::Animation::LineupAppear < Battle::Scene::Animation
BAR_DISPLAY_WIDTH = 248
def initialize(sprites,viewport,side,party,partyStarts,fullAnim)
@@ -117,7 +117,7 @@ class LineupAppearAnimation < PokeBattle_Animation
bar.y = barY
bar.opacity = 255
bar.visible = false
for i in 0...PokeBattle_SceneConstants::NUM_BALLS
for i in 0...Battle::Scene::NUM_BALLS
ball = sprites["partyBall_#{@side}_#{i}"]
ball.x = ballX
ball.y = ballY
@@ -136,7 +136,7 @@ class LineupAppearAnimation < PokeBattle_Animation
end
# Opposing lineup
# NOTE: This doesn't work well for 4+ opposing trainers.
ballsPerTrainer = PokeBattle_SceneConstants::NUM_BALLS/@partyStarts.length # 6/3/2
ballsPerTrainer = Battle::Scene::NUM_BALLS/@partyStarts.length # 6/3/2
startsIndex = idxBall/ballsPerTrainer
teamIndex = idxBall%ballsPerTrainer
ret = @partyStarts[startsIndex]+teamIndex
@@ -154,7 +154,7 @@ class LineupAppearAnimation < PokeBattle_Animation
bar.setDelta(0,dir*Graphics.width/2,0)
bar.moveDelta(0,8,-dir*Graphics.width/2,0)
delay = bar.totalDuration
for i in 0...PokeBattle_SceneConstants::NUM_BALLS
for i in 0...Battle::Scene::NUM_BALLS
createBall(i,(@fullAnim) ? delay+i*2 : 0,dir)
end
end
@@ -186,7 +186,7 @@ end
#===============================================================================
# Makes a Pokémon's data box appear
#===============================================================================
class DataBoxAppearAnimation < PokeBattle_Animation
class Battle::Scene::Animation::DataBoxAppear < Battle::Scene::Animation
def initialize(sprites,viewport,idxBox)
@idxBox = idxBox
super(sprites,viewport)
@@ -207,7 +207,7 @@ end
#===============================================================================
# Makes a Pokémon's data box disappear
#===============================================================================
class DataBoxDisappearAnimation < PokeBattle_Animation
class Battle::Scene::Animation::DataBoxDisappear < Battle::Scene::Animation
def initialize(sprites,viewport,idxBox)
@idxBox = idxBox
super(sprites,viewport)
@@ -227,7 +227,7 @@ end
#===============================================================================
# Makes a Pokémon's ability bar appear
#===============================================================================
class AbilitySplashAppearAnimation < PokeBattle_Animation
class Battle::Scene::Animation::AbilitySplashAppear < Battle::Scene::Animation
def initialize(sprites,viewport,side)
@side = side
super(sprites,viewport)
@@ -247,7 +247,7 @@ end
#===============================================================================
# Makes a Pokémon's ability bar disappear
#===============================================================================
class AbilitySplashDisappearAnimation < PokeBattle_Animation
class Battle::Scene::Animation::AbilitySplashDisappear < Battle::Scene::Animation
def initialize(sprites,viewport,side)
@side = side
super(sprites,viewport)
@@ -269,7 +269,7 @@ end
# trainer slide off to the right first if it is on-screen.
# Used at the end of battle.
#===============================================================================
class TrainerAppearAnimation < PokeBattle_Animation
class Battle::Scene::Animation::TrainerAppear < Battle::Scene::Animation
def initialize(sprites,viewport,idxTrainer)
@idxTrainer = idxTrainer
super(sprites,viewport)
@@ -286,7 +286,7 @@ class TrainerAppearAnimation < PokeBattle_Animation
end
# Make new trainer sprite move on-screen
if @sprites["trainer_#{@idxTrainer+1}"]
trainerX, trainerY = PokeBattle_SceneConstants.pbTrainerPosition(1)
trainerX, trainerY = Battle::Scene.pbTrainerPosition(1)
trainerX += 64+Graphics.width/4
newTrainer = addSprite(@sprites["trainer_#{@idxTrainer+1}"],PictureOrigin::Bottom)
newTrainer.setVisible(delay,true)
@@ -303,7 +303,7 @@ end
# Shows the player's/partner's throwing animation (if they have one).
# Doesn't show the ball thrown or the Pokémon.
#===============================================================================
class PlayerFadeAnimation < PokeBattle_Animation
class Battle::Scene::Animation::PlayerFade < Battle::Scene::Animation
def initialize(sprites,viewport,fullAnim=false)
@fullAnim = fullAnim # True at start of battle, false when switching
super(sprites,viewport)
@@ -339,7 +339,7 @@ class PlayerFadeAnimation < PokeBattle_Animation
partyBar.setVisible(delay+12,false)
partyBar.setOpacity(delay+12,255)
end
for i in 0...PokeBattle_SceneConstants::NUM_BALLS
for i in 0...Battle::Scene::NUM_BALLS
next if !@sprites["partyBall_0_#{i}"] || !@sprites["partyBall_0_#{i}"].visible
partyBall = addSprite(@sprites["partyBall_0_#{i}"])
partyBall.moveDelta(delay+2*i,16,-Graphics.width,0) if @fullAnim
@@ -356,7 +356,7 @@ end
# Shows the enemy trainer(s) and the enemy party lineup sliding off screen.
# Doesn't show the ball thrown or the Pokémon.
#===============================================================================
class TrainerFadeAnimation < PokeBattle_Animation
class Battle::Scene::Animation::TrainerFade < Battle::Scene::Animation
def initialize(sprites,viewport,fullAnim=false)
@fullAnim = fullAnim # True at start of battle, false when switching
super(sprites,viewport)
@@ -384,7 +384,7 @@ class TrainerFadeAnimation < PokeBattle_Animation
partyBar.setVisible(delay+12,false)
partyBar.setOpacity(delay+12,255)
end
for i in 0...PokeBattle_SceneConstants::NUM_BALLS
for i in 0...Battle::Scene::NUM_BALLS
next if !@sprites["partyBall_1_#{i}"] || !@sprites["partyBall_1_#{i}"].visible
partyBall = addSprite(@sprites["partyBall_1_#{i}"])
partyBall.moveDelta(delay+2*i,16,Graphics.width,0) if @fullAnim
@@ -401,8 +401,8 @@ end
# Shows a Pokémon being sent out on the player's side (including by a partner).
# Includes the Poké Ball being thrown.
#===============================================================================
class PokeballPlayerSendOutAnimation < PokeBattle_Animation
include PokeBattle_BallAnimationMixin
class Battle::Scene::Animation::PokeballPlayerSendOut < Battle::Scene::Animation
include Battle::Scene::Animation::BallAnimationMixin
def initialize(sprites,viewport,idxTrainer,battler,startBattle,idxOrder=0)
@idxTrainer = idxTrainer
@@ -426,7 +426,7 @@ class PokeballPlayerSendOutAnimation < PokeBattle_Animation
col = getBattlerColorFromPokeBall(poke_ball)
col.alpha = 255
# Calculate start and end coordinates for battler sprite movement
ballPos = PokeBattle_SceneConstants.pbBattlerPosition(@battler.index,batSprite.sideSize)
ballPos = Battle::Scene.pbBattlerPosition(@battler.index,batSprite.sideSize)
battlerStartX = ballPos[0] # Is also where the Ball needs to end
battlerStartY = ballPos[1] # Is also where the Ball needs to end + 18
battlerEndX = batSprite.x
@@ -480,8 +480,8 @@ end
# Includes the Poké Ball being "thrown" (although here the Poké Ball just
# appears in the spot where it opens up rather than being thrown to there).
#===============================================================================
class PokeballTrainerSendOutAnimation < PokeBattle_Animation
include PokeBattle_BallAnimationMixin
class Battle::Scene::Animation::PokeballTrainerSendOut < Battle::Scene::Animation
include Battle::Scene::Animation::BallAnimationMixin
def initialize(sprites,viewport,idxTrainer,battler,startBattle,idxOrder)
@idxTrainer = idxTrainer
@@ -503,7 +503,7 @@ class PokeballTrainerSendOutAnimation < PokeBattle_Animation
col = getBattlerColorFromPokeBall(poke_ball)
col.alpha = 255
# Calculate start and end coordinates for battler sprite movement
ballPos = PokeBattle_SceneConstants.pbBattlerPosition(@battler.index,batSprite.sideSize)
ballPos = Battle::Scene.pbBattlerPosition(@battler.index,batSprite.sideSize)
battlerStartX = ballPos[0]
battlerStartY = ballPos[1]
battlerEndX = batSprite.x
@@ -549,8 +549,8 @@ end
#===============================================================================
# Shows a Pokémon being recalled into its Poké Ball
#===============================================================================
class BattlerRecallAnimation < PokeBattle_Animation
include PokeBattle_BallAnimationMixin
class Battle::Scene::Animation::BattlerRecall < Battle::Scene::Animation
include Battle::Scene::Animation::BallAnimationMixin
def initialize(sprites,viewport,idxBattler)
@idxBattler = idxBattler
@@ -566,7 +566,7 @@ class BattlerRecallAnimation < PokeBattle_Animation
col = getBattlerColorFromPokeBall(poke_ball)
col.alpha = 0
# Calculate end coordinates for battler sprite movement
ballPos = PokeBattle_SceneConstants.pbBattlerPosition(@idxBattler,batSprite.sideSize)
ballPos = Battle::Scene.pbBattlerPosition(@idxBattler,batSprite.sideSize)
battlerEndX = ballPos[0]
battlerEndY = ballPos[1]
# Set up battler sprite
@@ -598,7 +598,7 @@ end
#===============================================================================
# Shows a Pokémon flashing after taking damage
#===============================================================================
class BattlerDamageAnimation < PokeBattle_Animation
class Battle::Scene::Animation::BattlerDamage < Battle::Scene::Animation
def initialize(sprites,viewport,idxBattler,effectiveness)
@idxBattler = idxBattler
@effectiveness = effectiveness
@@ -636,7 +636,7 @@ end
#===============================================================================
# Shows a Pokémon fainting
#===============================================================================
class BattlerFaintAnimation < PokeBattle_Animation
class Battle::Scene::Animation::BattlerFaint < Battle::Scene::Animation
def initialize(sprites,viewport,idxBattler,battle)
@idxBattler = idxBattler
@battle = battle
@@ -651,7 +651,7 @@ class BattlerFaintAnimation < PokeBattle_Animation
shadow = addSprite(shaSprite,PictureOrigin::Center)
# Get approx duration depending on sprite's position/size. Min 20 frames.
battlerTop = batSprite.y-batSprite.height
cropY = PokeBattle_SceneConstants.pbBattlerPosition(@idxBattler,
cropY = Battle::Scene.pbBattlerPosition(@idxBattler,
@battle.pbSideSize(@idxBattler))[1]
cropY += 8
duration = (cropY-battlerTop)/8
@@ -680,8 +680,8 @@ end
#===============================================================================
# Shows the player's Poké Ball being thrown to capture a Pokémon
#===============================================================================
class PokeballThrowCaptureAnimation < PokeBattle_Animation
include PokeBattle_BallAnimationMixin
class Battle::Scene::Animation::PokeballThrowCapture < Battle::Scene::Animation
include Battle::Scene::Animation::BallAnimationMixin
def initialize(sprites,viewport,
poke_ball,numShakes,critCapture,battler,showingTrainer)
@@ -700,7 +700,7 @@ class PokeballThrowCaptureAnimation < PokeBattle_Animation
batSprite = @sprites["pokemon_#{@battler.index}"]
shaSprite = @sprites["shadow_#{@battler.index}"]
traSprite = @sprites["player_1"]
ballPos = PokeBattle_SceneConstants.pbBattlerPosition(@battler.index,batSprite.sideSize)
ballPos = Battle::Scene.pbBattlerPosition(@battler.index,batSprite.sideSize)
battlerStartX = batSprite.x
battlerStartY = batSprite.y
ballStartX = -6
@@ -834,8 +834,8 @@ end
#===============================================================================
# Shows the player throwing a Poké Ball and it being deflected
#===============================================================================
class PokeballThrowDeflectAnimation < PokeBattle_Animation
include PokeBattle_BallAnimationMixin
class Battle::Scene::Animation::PokeballThrowDeflect < Battle::Scene::Animation
include Battle::Scene::Animation::BallAnimationMixin
def initialize(sprites,viewport,poke_ball,battler)
@poke_ball = poke_ball
@@ -846,7 +846,7 @@ class PokeballThrowDeflectAnimation < PokeBattle_Animation
def createProcesses
# Calculate start and end coordinates for battler sprite movement
batSprite = @sprites["pokemon_#{@battler.index}"]
ballPos = PokeBattle_SceneConstants.pbBattlerPosition(@battler.index,batSprite.sideSize)
ballPos = Battle::Scene.pbBattlerPosition(@battler.index,batSprite.sideSize)
ballStartX = -6
ballStartY = 246
ballMidX = 190 # Unused in arc calculation

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Used when generating new trainers for battle challenges
#===============================================================================
class PokeBattle_DebugSceneNoLogging
class Battle::DebugSceneNoLogging
def initialize
@battle = nil
@lastCmd = [0,0,0,0]

View File

@@ -17,7 +17,7 @@ end
class PokeBattle_AI
class Battle::AI
def initialize(battle)
@battle = battle
end

View File

@@ -1,4 +1,4 @@
class PokeBattle_AI
class Battle::AI
#=============================================================================
# Decide whether the opponent should use an item on the Pokémon
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_AI
class Battle::AI
#=============================================================================
# Decide whether the opponent should switch Pokémon
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_AI
class Battle::AI
#=============================================================================
# Main move-choosing method (moves with higher scores are more likely to be
# chosen)

View File

@@ -1,4 +1,4 @@
class PokeBattle_AI
class Battle::AI
#=============================================================================
# Get a score for the given move based on its effect
#=============================================================================

View File

@@ -1,4 +1,4 @@
class PokeBattle_AI
class Battle::AI
#=============================================================================
#
#=============================================================================
@@ -294,7 +294,7 @@ class PokeBattle_AI
#=============================================================================
def pbRoughDamage(move,user,target,skill,baseDmg)
# Fixed damage moves
return baseDmg if move.is_a?(PokeBattle_FixedDamageMove)
return baseDmg if move.is_a?(Battle::Move::FixedDamageMove)
# Get the move's type
type = pbRoughType(move,user,skill)
##### Calculate user's attack stat #####

View File

@@ -1,67 +0,0 @@
module PokeBattle_SceneConstants
USE_ABILITY_SPLASH = (Settings::MECHANICS_GENERATION >= 5)
# Text colors
MESSAGE_BASE_COLOR = Color.new(80, 80, 88)
MESSAGE_SHADOW_COLOR = Color.new(160, 160, 168)
# The number of party balls to show in each side's lineup.
NUM_BALLS = Settings::MAX_PARTY_SIZE
# Centre bottom of the player's side base graphic
PLAYER_BASE_X = 128
PLAYER_BASE_Y = Settings::SCREEN_HEIGHT - 80
# Centre middle of the foe's side base graphic
FOE_BASE_X = Settings::SCREEN_WIDTH - 128
FOE_BASE_Y = (Settings::SCREEN_HEIGHT * 3 / 4) - 112
# Returns where the centre bottom of a battler's sprite should be, given its
# index and the number of battlers on its side, assuming the battler has
# metrics of 0 (those are added later).
def self.pbBattlerPosition(index, sideSize = 1)
# Start at the centre of the base for the appropriate side
if (index & 1) == 0
ret = [PLAYER_BASE_X, PLAYER_BASE_Y]
else
ret = [FOE_BASE_X, FOE_BASE_Y]
end
# Shift depending on index (no shifting needed for sideSize of 1)
case sideSize
when 2
ret[0] += [-48, 48, 32, -32][index]
ret[1] += [ 0, 0, 16, -16][index]
when 3
ret[0] += [-80, 80, 0, 0, 80, -80][index]
ret[1] += [ 0, 0, 8, -8, 16, -16][index]
end
return ret
end
# Returns where the centre bottom of a trainer's sprite should be, given its
# side (0/1), index and the number of trainers on its side.
def self.pbTrainerPosition(side, index = 0, sideSize = 1)
# Start at the centre of the base for the appropriate side
if side == 0
ret = [PLAYER_BASE_X, PLAYER_BASE_Y - 16]
else
ret = [FOE_BASE_X, FOE_BASE_Y + 6]
end
# Shift depending on index (no shifting needed for sideSize of 1)
case sideSize
when 2
ret[0] += [-48, 48, 32, -32][2 * index + side]
ret[1] += [ 0, 0, 0, -16][2 * index + side]
when 3
ret[0] += [-80, 80, 0, 0, 80, -80][2 * index + side]
ret[1] += [ 0, 0, 0, -8, 0, -16][2 * index + side]
end
return ret
end
# Default focal points of user and target in animations - do not change!
# Is the centre middle of each sprite
FOCUSUSER_X = 128 # 144
FOCUSUSER_Y = 224 # 188
FOCUSTARGET_X = 384 # 352
FOCUSTARGET_Y = 96 # 108, 98
end

View File

@@ -0,0 +1,179 @@
module PBEffects
#===========================================================================
# These effects apply to a battler
#===========================================================================
AquaRing = 0
Attract = 1
BanefulBunker = 2
BeakBlast = 3
Bide = 4
BideDamage = 5
BideTarget = 6
BurnUp = 7
Charge = 8
ChoiceBand = 9
Confusion = 10
Counter = 11
CounterTarget = 12
Curse = 13
Dancer = 14
DefenseCurl = 15
DestinyBond = 16
DestinyBondPrevious = 17
DestinyBondTarget = 18
Disable = 19
DisableMove = 20
Electrify = 21
Embargo = 22
Encore = 23
EncoreMove = 24
Endure = 25
FirstPledge = 26
FlashFire = 27
Flinch = 28
FocusEnergy = 29
FocusPunch = 30
FollowMe = 31
Foresight = 32
FuryCutter = 33
GastroAcid = 34
GemConsumed = 35
Grudge = 36
HealBlock = 37
HelpingHand = 38
HyperBeam = 39
Illusion = 40
Imprison = 41
Ingrain = 42
Instruct = 43
Instructed = 44
JawLock = 994
KingsShield = 45
LaserFocus = 46
LeechSeed = 47
LockOn = 48
LockOnPos = 49
MagicBounce = 50
MagicCoat = 51
MagnetRise = 52
MeanLook = 53
MeFirst = 54
Metronome = 55
MicleBerry = 56
Minimize = 57
MiracleEye = 58
MirrorCoat = 59
MirrorCoatTarget = 60
MoveNext = 61
MudSport = 62
Nightmare = 63
NoRetreat = 990
Obstruct = 992
Octolock = 993
Outrage = 64
ParentalBond = 65
PerishSong = 66
PerishSongUser = 67
PickupItem = 68
PickupUse = 69
Pinch = 70 # Battle Palace only
Powder = 71
PowerTrick = 72
Prankster = 73
PriorityAbility = 74
PriorityItem = 75
Protect = 76
ProtectRate = 77
Pursuit = 78
Quash = 79
Rage = 80
RagePowder = 81 # Used along with FollowMe
Rollout = 82
Roost = 83
ShellTrap = 84
SkyDrop = 85
SlowStart = 86
SmackDown = 87
Snatch = 88
SpikyShield = 89
Spotlight = 90
Stockpile = 91
StockpileDef = 92
StockpileSpDef = 93
Substitute = 94
TarShot = 991
Taunt = 95
Telekinesis = 96
ThroatChop = 97
Torment = 98
Toxic = 99
Transform = 100
TransformSpecies = 101
Trapping = 102 # Trapping move
TrappingMove = 103
TrappingUser = 104
Truant = 105
TwoTurnAttack = 106
Type3 = 107
Unburden = 108
Uproar = 109
WaterSport = 110
WeightChange = 111
Yawn = 112
#=============================================================================
# These effects apply to a battler position
#=============================================================================
FutureSightCounter = 0
FutureSightMove = 1
FutureSightUserIndex = 2
FutureSightUserPartyIndex = 3
HealingWish = 4
LunarDance = 5
Wish = 6
WishAmount = 7
WishMaker = 8
#=============================================================================
# These effects apply to a side
#=============================================================================
AuroraVeil = 0
CraftyShield = 1
EchoedVoiceCounter = 2
EchoedVoiceUsed = 3
LastRoundFainted = 4
LightScreen = 5
LuckyChant = 6
MatBlock = 7
Mist = 8
QuickGuard = 9
Rainbow = 10
Reflect = 11
Round = 12
Safeguard = 13
SeaOfFire = 14
Spikes = 15
StealthRock = 16
StickyWeb = 17
Swamp = 18
Tailwind = 19
ToxicSpikes = 20
WideGuard = 21
#=============================================================================
# These effects apply to the battle (i.e. both sides)
#=============================================================================
AmuletCoin = 0
FairyLock = 1
FusionBolt = 2
FusionFlare = 3
Gravity = 4
HappyHour = 5
IonDeluge = 6
MagicRoom = 7
MudSportField = 8
PayDay = 9
TrickRoom = 10
WaterSportField = 11
WonderRoom = 12
end

View File

@@ -0,0 +1,88 @@
#===============================================================================
#
#===============================================================================
class Battle::ActiveField
attr_accessor :effects
attr_accessor :defaultWeather
attr_accessor :weather
attr_accessor :weatherDuration
attr_accessor :defaultTerrain
attr_accessor :terrain
attr_accessor :terrainDuration
def initialize
@effects = []
@effects[PBEffects::AmuletCoin] = false
@effects[PBEffects::FairyLock] = 0
@effects[PBEffects::FusionBolt] = false
@effects[PBEffects::FusionFlare] = false
@effects[PBEffects::Gravity] = 0
@effects[PBEffects::HappyHour] = false
@effects[PBEffects::IonDeluge] = false
@effects[PBEffects::MagicRoom] = 0
@effects[PBEffects::MudSportField] = 0
@effects[PBEffects::PayDay] = 0
@effects[PBEffects::TrickRoom] = 0
@effects[PBEffects::WaterSportField] = 0
@effects[PBEffects::WonderRoom] = 0
@defaultWeather = :None
@weather = :None
@weatherDuration = 0
@defaultTerrain = :None
@terrain = :None
@terrainDuration = 0
end
end
#===============================================================================
#
#===============================================================================
class Battle::ActiveSide
attr_accessor :effects
def initialize
@effects = []
@effects[PBEffects::AuroraVeil] = 0
@effects[PBEffects::CraftyShield] = false
@effects[PBEffects::EchoedVoiceCounter] = 0
@effects[PBEffects::EchoedVoiceUsed] = false
@effects[PBEffects::LastRoundFainted] = -1
@effects[PBEffects::LightScreen] = 0
@effects[PBEffects::LuckyChant] = 0
@effects[PBEffects::MatBlock] = false
@effects[PBEffects::Mist] = 0
@effects[PBEffects::QuickGuard] = false
@effects[PBEffects::Rainbow] = 0
@effects[PBEffects::Reflect] = 0
@effects[PBEffects::Round] = false
@effects[PBEffects::Safeguard] = 0
@effects[PBEffects::SeaOfFire] = 0
@effects[PBEffects::Spikes] = 0
@effects[PBEffects::StealthRock] = false
@effects[PBEffects::StickyWeb] = false
@effects[PBEffects::Swamp] = 0
@effects[PBEffects::Tailwind] = 0
@effects[PBEffects::ToxicSpikes] = 0
@effects[PBEffects::WideGuard] = false
end
end
#===============================================================================
#
#===============================================================================
class Battle::ActivePosition
attr_accessor :effects
def initialize
@effects = []
@effects[PBEffects::FutureSightCounter] = 0
@effects[PBEffects::FutureSightMove] = nil
@effects[PBEffects::FutureSightUserIndex] = -1
@effects[PBEffects::FutureSightUserPartyIndex] = -1
@effects[PBEffects::HealingWish] = false
@effects[PBEffects::LunarDance] = false
@effects[PBEffects::Wish] = 0
@effects[PBEffects::WishAmount] = 0
@effects[PBEffects::WishMaker] = -1
end
end

View File

@@ -1,4 +1,7 @@
class PokeBattle_DamageState
#===============================================================================
#
#===============================================================================
class Battle::DamageState
attr_accessor :typeMod # Type effectiveness
attr_accessor :unaffected
attr_accessor :protected

View File

@@ -1,27 +1,7 @@
#===============================================================================
#
#===============================================================================
# Unused class.
class PokeBattle_NullBattlePeer
def pbOnEnteringBattle(battle, battler, pkmn, wild = false); end
def pbOnLeavingBattle(battle,pkmn,usedInBattle,endBattle=false); end
def pbStorePokemon(player,pkmn)
player.party[player.party.length] = pkmn if !player.party_full?
return -1
end
def pbGetStorageCreatorName; return nil; end
def pbCurrentBox; return -1; end
def pbBoxName(box); return ""; end
end
#===============================================================================
#
#===============================================================================
class PokeBattle_RealBattlePeer
class Battle::Peer
def pbStorePokemon(player,pkmn)
if !player.party_full?
player.party[player.party.length] = pkmn
@@ -73,13 +53,19 @@ class PokeBattle_RealBattlePeer
end
end
#===============================================================================
#
# Unused class.
#===============================================================================
class PokeBattle_BattlePeer
def self.create
return PokeBattle_RealBattlePeer.new
class Battle::NullPeer
def pbOnEnteringBattle(battle, battler, pkmn, wild = false); end
def pbOnLeavingBattle(battle,pkmn,usedInBattle,endBattle=false); end
def pbStorePokemon(player,pkmn)
player.party[player.party.length] = pkmn if !player.party_full?
return -1
end
def pbGetStorageCreatorName; return nil; end
def pbCurrentBox; return -1; end
def pbBoxName(box); return ""; end
end

View File

@@ -1,7 +1,7 @@
#===============================================================================
# This script modifies the battle system to implement battle rules
#===============================================================================
class PokeBattle_Battle
class Battle
unless @__clauses__aliased
alias __clauses__pbDecisionOnDraw pbDecisionOnDraw
alias __clauses__pbEndOfRoundPhase pbEndOfRoundPhase
@@ -53,7 +53,7 @@ end
class PokeBattle_Battler
class Battle::Battler
unless @__clauses__aliased
alias __clauses__pbCanSleep? pbCanSleep?
alias __clauses__pbCanSleepYawn? pbCanSleepYawn?
@@ -102,7 +102,7 @@ end
class PokeBattle_Move_RaiseUserEvasion1 # Double Team
class Battle::Move::RaiseUserEvasion1 # Double Team
alias __clauses__pbMoveFailed? pbMoveFailed?
def pbMoveFailed?(user,targets)
@@ -116,7 +116,7 @@ end
class PokeBattle_Move_RaiseUserEvasion2MinimizeUser # Minimize
class Battle::Move::RaiseUserEvasion2MinimizeUser # Minimize
alias __clauses__pbMoveFailed? pbMoveFailed?
def pbMoveFailed?(user,targets)
@@ -130,7 +130,7 @@ end
class PokeBattle_Move_UserTargetSwapAbilities # Skill Swap
class Battle::Move::UserTargetSwapAbilities # Skill Swap
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)
@@ -144,7 +144,7 @@ end
class PokeBattle_Move_FixedDamage20 # Sonic Boom
class Battle::Move::FixedDamage20 # Sonic Boom
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)
@@ -158,7 +158,7 @@ end
class PokeBattle_Move_FixedDamage40 # Dragon Rage
class Battle::Move::FixedDamage40 # Dragon Rage
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)
@@ -172,7 +172,7 @@ end
class PokeBattle_Move_OHKO
class Battle::Move::OHKO
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)
@@ -186,7 +186,7 @@ end
class PokeBattle_Move_OHKOIce
class Battle::Move::OHKOIce
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)
@@ -200,7 +200,7 @@ end
class PokeBattle_Move_OHKOHitsUndergroundTarget
class Battle::Move::OHKOHitsUndergroundTarget
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)
@@ -214,7 +214,7 @@ end
class PokeBattle_Move_UserFaintsExplosive # Self-Destruct
class Battle::Move::UserFaintsExplosive # Self-Destruct
unless @__clauses__aliased
alias __clauses__pbMoveFailed? pbMoveFailed?
@__clauses__aliased = true
@@ -246,7 +246,7 @@ end
class PokeBattle_Move_StartPerishCountsForAllBattlers # Perish Song
class Battle::Move::StartPerishCountsForAllBattlers # Perish Song
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)
@@ -261,7 +261,7 @@ end
class PokeBattle_Move_AttackerFaintsIfUserFaints # Destiny Bond
class Battle::Move::AttackerFaintsIfUserFaints # Destiny Bond
alias __clauses__pbFailsAgainstTarget? pbFailsAgainstTarget?
def pbFailsAgainstTarget?(user, target, show_message)

View File

@@ -135,8 +135,8 @@ def pbConvertRPGAnimation(animation)
if animation.position==3 # Screen
point = transformPoint(
-160,80,160,-80,
PokeBattle_SceneConstants::FOCUSUSER_X,PokeBattle_SceneConstants::FOCUSUSER_Y,
PokeBattle_SceneConstants::FOCUSTARGET_X,PokeBattle_SceneConstants::FOCUSTARGET_Y,
Battle::Scene::FOCUSUSER_X,Battle::Scene::FOCUSUSER_Y,
Battle::Scene::FOCUSTARGET_X,Battle::Scene::FOCUSTARGET_Y,
data[j,1],data[j,2]
)
cel = pbCreateCel(point[0],point[1],data[j,0])
@@ -483,15 +483,11 @@ class PBAnimation < Array
pos = @array.length
@array[pos] = []
# Move's user
@array[pos][0] = pbCreateCel(
PokeBattle_SceneConstants::FOCUSUSER_X,
PokeBattle_SceneConstants::FOCUSUSER_Y,-1)
@array[pos][0] = pbCreateCel(Battle::Scene::FOCUSUSER_X, Battle::Scene::FOCUSUSER_Y,-1)
@array[pos][0][AnimFrame::FOCUS] = 2
@array[pos][0][AnimFrame::LOCKED] = 1
# Move's target
@array[pos][1] = pbCreateCel(
PokeBattle_SceneConstants::FOCUSTARGET_X,
PokeBattle_SceneConstants::FOCUSTARGET_Y,-2)
@array[pos][1] = pbCreateCel(Battle::Scene::FOCUSTARGET_X, Battle::Scene::FOCUSTARGET_Y,-2)
@array[pos][1][AnimFrame::FOCUS] = 1
@array[pos][1][AnimFrame::LOCKED] = 1
return @array[pos]
@@ -846,11 +842,11 @@ class PBAnimationPlayerX
pbSpriteSetAnimFrame(sprite,cel,@usersprite,@targetsprite)
case cel[AnimFrame::FOCUS]
when 1 # Focused on target
sprite.x = cel[AnimFrame::X]+@targetOrig[0]-PokeBattle_SceneConstants::FOCUSTARGET_X
sprite.y = cel[AnimFrame::Y]+@targetOrig[1]-PokeBattle_SceneConstants::FOCUSTARGET_Y
sprite.x = cel[AnimFrame::X] + @targetOrig[0] - Battle::Scene::FOCUSTARGET_X
sprite.y = cel[AnimFrame::Y] + @targetOrig[1] - Battle::Scene::FOCUSTARGET_Y
when 2 # Focused on user
sprite.x = cel[AnimFrame::X]+@userOrig[0]-PokeBattle_SceneConstants::FOCUSUSER_X
sprite.y = cel[AnimFrame::Y]+@userOrig[1]-PokeBattle_SceneConstants::FOCUSUSER_Y
sprite.x = cel[AnimFrame::X] + @userOrig[0] - Battle::Scene::FOCUSUSER_X
sprite.y = cel[AnimFrame::Y] + @userOrig[1] - Battle::Scene::FOCUSUSER_Y
when 3 # Focused on user and target
next if !@srcLine || !@dstLine
point = transformPoint(

View File

@@ -567,13 +567,13 @@ def pbBattleMoveImmunityStatAbility(user, target, move, moveType, immuneType,
if show_message
battle.pbShowAbilitySplash(target)
if target.pbCanRaiseStatStage?(stat, target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
target.pbRaiseStatStage(stat, increment, target)
else
target.pbRaiseStatStageByCause(stat, increment, target, target.abilityName)
end
else
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
else
battle.pbDisplay(_INTL("{1}'s {2} made {3} ineffective!",
@@ -597,13 +597,13 @@ def pbBattleMoveImmunityHealAbility(user, target, move, moveType, immuneType, ba
if show_message
battle.pbShowAbilitySplash(target)
if target.canHeal? && target.pbRecoverHP(target.totalhp / 4) > 0
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s HP was restored.", target.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} restored its HP.", target.pbThis, target.abilityName))
end
else
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
else
battle.pbDisplay(_INTL("{1}'s {2} made {3} ineffective!",
@@ -617,7 +617,7 @@ end
def pbBattleGem(user,type,move,mults,moveType)
# Pledge moves never consume Gems
return if move.is_a?(PokeBattle_PledgeMove)
return if move.is_a?(Battle::Move::PledgeMove)
return if moveType != type
user.effects[PBEffects::GemConsumed] = user.item_id
if Settings::MECHANICS_GENERATION >= 6
@@ -646,7 +646,7 @@ def pbBattleWeatherAbility(weather,battler,battle,ignorePrimal=false)
return if !ignorePrimal && [:HarshSun, :HeavyRain, :StrongWinds].include?(battle.field.weather)
return if battle.field.weather==weather
battle.pbShowAbilitySplash(battler)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} activated!",battler.pbThis,battler.abilityName))
end
fixedDuration = false

View File

@@ -91,7 +91,7 @@ BattleHandlers::AbilityOnHPDroppedBelowHalf.add(:EMERGENCYEXIT,
next false if !battle.pbCanChooseNonActive?(battler.index) # No Pokémon can switch in
battle.pbShowAbilitySplash(battler,true)
battle.pbHideAbilitySplash(battler)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} activated!",battler.pbThis,battler.abilityName))
end
battle.pbDisplay(_INTL("{1} went back to {2}!",
@@ -220,7 +220,7 @@ BattleHandlers::AbilityOnStatusInflicted.add(:SYNCHRONIZE,
if user.pbCanPoisonSynchronize?(battler)
battler.battle.pbShowAbilitySplash(battler)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} poisoned {3}!",battler.pbThis,battler.abilityName,user.pbThis(true))
end
user.pbPoison(nil,msg,(battler.statusCount>0))
@@ -230,7 +230,7 @@ BattleHandlers::AbilityOnStatusInflicted.add(:SYNCHRONIZE,
if user.pbCanBurnSynchronize?(battler)
battler.battle.pbShowAbilitySplash(battler)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} burned {3}!",battler.pbThis,battler.abilityName,user.pbThis(true))
end
user.pbBurn(nil,msg)
@@ -240,7 +240,7 @@ BattleHandlers::AbilityOnStatusInflicted.add(:SYNCHRONIZE,
if user.pbCanParalyzeSynchronize?(battler)
battler.battle.pbShowAbilitySplash(battler)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} paralyzed {3}! It may be unable to move!",
battler.pbThis,battler.abilityName,user.pbThis(true))
end
@@ -259,8 +259,8 @@ BattleHandlers::StatusCureAbility.add(:IMMUNITY,
proc { |ability,battler|
next if battler.status != :POISON
battler.battle.pbShowAbilitySplash(battler)
battler.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1}'s {2} cured its poisoning!",battler.pbThis,battler.abilityName))
end
battler.battle.pbHideAbilitySplash(battler)
@@ -271,8 +271,8 @@ BattleHandlers::StatusCureAbility.add(:INSOMNIA,
proc { |ability,battler|
next if battler.status != :SLEEP
battler.battle.pbShowAbilitySplash(battler)
battler.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1}'s {2} woke it up!",battler.pbThis,battler.abilityName))
end
battler.battle.pbHideAbilitySplash(battler)
@@ -285,8 +285,8 @@ BattleHandlers::StatusCureAbility.add(:LIMBER,
proc { |ability,battler|
next if battler.status != :PARALYSIS
battler.battle.pbShowAbilitySplash(battler)
battler.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1}'s {2} cured its paralysis!",battler.pbThis,battler.abilityName))
end
battler.battle.pbHideAbilitySplash(battler)
@@ -297,8 +297,8 @@ BattleHandlers::StatusCureAbility.add(:MAGMAARMOR,
proc { |ability,battler|
next if battler.status != :FROZEN
battler.battle.pbShowAbilitySplash(battler)
battler.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1}'s {2} defrosted it!",battler.pbThis,battler.abilityName))
end
battler.battle.pbHideAbilitySplash(battler)
@@ -312,7 +312,7 @@ BattleHandlers::StatusCureAbility.add(:OBLIVIOUS,
battler.battle.pbShowAbilitySplash(battler)
if battler.effects[PBEffects::Attract]>=0
battler.pbCureAttract
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1} got over its infatuation.",battler.pbThis))
else
battler.battle.pbDisplay(_INTL("{1}'s {2} cured its infatuation status!",
@@ -321,7 +321,7 @@ BattleHandlers::StatusCureAbility.add(:OBLIVIOUS,
end
if battler.effects[PBEffects::Taunt]>0 && Settings::MECHANICS_GENERATION >= 6
battler.effects[PBEffects::Taunt] = 0
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1}'s Taunt wore off!",battler.pbThis))
else
battler.battle.pbDisplay(_INTL("{1}'s {2} made its taunt wear off!",
@@ -337,7 +337,7 @@ BattleHandlers::StatusCureAbility.add(:OWNTEMPO,
next if battler.effects[PBEffects::Confusion]==0
battler.battle.pbShowAbilitySplash(battler)
battler.pbCureConfusion
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1} snapped out of its confusion.",battler.pbThis))
else
battler.battle.pbDisplay(_INTL("{1}'s {2} snapped it out of its confusion!",
@@ -351,8 +351,8 @@ BattleHandlers::StatusCureAbility.add(:WATERVEIL,
proc { |ability,battler|
next if battler.status != :BURN
battler.battle.pbShowAbilitySplash(battler)
battler.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
battler.battle.pbDisplay(_INTL("{1}'s {2} healed its burn!",battler.pbThis,battler.abilityName))
end
battler.battle.pbHideAbilitySplash(battler)
@@ -370,7 +370,7 @@ BattleHandlers::StatLossImmunityAbility.add(:BIGPECKS,
next false if stat!=:DEFENSE
if showMessages
battle.pbShowAbilitySplash(battler)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} cannot be lowered!",battler.pbThis,GameData::Stat.get(stat).name))
else
battle.pbDisplay(_INTL("{1}'s {2} prevents {3} loss!",battler.pbThis,
@@ -386,7 +386,7 @@ BattleHandlers::StatLossImmunityAbility.add(:CLEARBODY,
proc { |ability,battler,stat,battle,showMessages|
if showMessages
battle.pbShowAbilitySplash(battler)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s stats cannot be lowered!",battler.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} prevents stat loss!",battler.pbThis,battler.abilityName))
@@ -404,7 +404,7 @@ BattleHandlers::StatLossImmunityAbility.add(:FLOWERVEIL,
next false if !battler.pbHasType?(:GRASS)
if showMessages
battle.pbShowAbilitySplash(battler)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s stats cannot be lowered!",battler.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} prevents stat loss!",battler.pbThis,battler.abilityName))
@@ -420,7 +420,7 @@ BattleHandlers::StatLossImmunityAbility.add(:HYPERCUTTER,
next false if stat!=:ATTACK
if showMessages
battle.pbShowAbilitySplash(battler)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} cannot be lowered!",battler.pbThis,GameData::Stat.get(stat).name))
else
battle.pbDisplay(_INTL("{1}'s {2} prevents {3} loss!",battler.pbThis,
@@ -437,7 +437,7 @@ BattleHandlers::StatLossImmunityAbility.add(:KEENEYE,
next false if stat!=:ACCURACY
if showMessages
battle.pbShowAbilitySplash(battler)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} cannot be lowered!",battler.pbThis,GameData::Stat.get(stat).name))
else
battle.pbDisplay(_INTL("{1}'s {2} prevents {3} loss!",battler.pbThis,
@@ -457,7 +457,7 @@ BattleHandlers::StatLossImmunityAbilityNonIgnorable.add(:FULLMETALBODY,
proc { |ability,battler,stat,battle,showMessages|
if showMessages
battle.pbShowAbilitySplash(battler)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s stats cannot be lowered!",battler.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} prevents stat loss!",battler.pbThis,battler.abilityName))
@@ -477,7 +477,7 @@ BattleHandlers::StatLossImmunityAllyAbility.add(:FLOWERVEIL,
next false if !battler.pbHasType?(:GRASS)
if showMessages
battle.pbShowAbilitySplash(bearer)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s stats cannot be lowered!",battler.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} prevents {3}'s stat loss!",
@@ -605,7 +605,7 @@ BattleHandlers::MoveImmunityTargetAbility.add(:BULLETPROOF,
next false if !move.bombMove?
if show_message
battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
else
battle.pbDisplay(_INTL("{1}'s {2} made {3} ineffective!",
@@ -625,14 +625,14 @@ BattleHandlers::MoveImmunityTargetAbility.add(:FLASHFIRE,
battle.pbShowAbilitySplash(target)
if !target.effects[PBEffects::FlashFire]
target.effects[PBEffects::FlashFire] = true
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("The power of {1}'s Fire-type moves rose!", target.pbThis(true)))
else
battle.pbDisplay(_INTL("The power of {1}'s Fire-type moves rose because of its {2}!",
target.pbThis(true), target.abilityName))
end
else
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
else
battle.pbDisplay(_INTL("{1}'s {2} made {3} ineffective!",
@@ -669,7 +669,7 @@ BattleHandlers::MoveImmunityTargetAbility.add(:SOUNDPROOF,
next false if Settings::MECHANICS_GENERATION >= 8 && user.index == target.index
if show_message
battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
else
battle.pbDisplay(_INTL("{1}'s {2} blocks {3}!", target.pbThis, target.abilityName, move.name))
@@ -692,7 +692,7 @@ BattleHandlers::MoveImmunityTargetAbility.add(:TELEPATHY,
next false if user.index==target.index || target.opposes?(user)
if show_message
battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} avoids attacks by its ally Pokémon!", target.pbThis(true)))
else
battle.pbDisplay(_INTL("{1} avoids attacks by its ally Pokémon with {2}!",
@@ -724,7 +724,7 @@ BattleHandlers::MoveImmunityTargetAbility.add(:WONDERGUARD,
next false if !type || Effectiveness.super_effective?(target.damageState.typeMod)
if show_message
battle.pbShowAbilitySplash(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
else
battle.pbDisplay(_INTL("{1} avoided damage with {2}!", target.pbThis, target.abilityName))
@@ -1373,7 +1373,7 @@ BattleHandlers::TargetAbilityOnHit.add(:AFTERMATH,
dampBattler = battle.pbCheckGlobalAbility(:DAMP)
if dampBattler
battle.pbShowAbilitySplash(dampBattler)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} cannot use {2}!",target.pbThis,target.abilityName))
else
battle.pbDisplay(_INTL("{1} cannot use {2} because of {3}'s {4}!",
@@ -1384,8 +1384,8 @@ BattleHandlers::TargetAbilityOnHit.add(:AFTERMATH,
next
end
end
if user.takesIndirectDamage?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.takesIndirectDamage?(Battle::Scene::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
battle.scene.pbDamageAnimation(user)
user.pbReduceHP(user.totalhp/4,false)
battle.pbDisplay(_INTL("{1} was caught in the aftermath!",user.pbThis))
@@ -1402,7 +1402,7 @@ BattleHandlers::TargetAbilityOnHit.add(:ANGERPOINT,
target.stages[:ATTACK] = 6
target.statsRaisedThisRound = true
battle.pbCommonAnimation("StatUp",target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} maxed its {2}!",target.pbThis,GameData::Stat.get(:ATTACK).name))
else
battle.pbDisplay(_INTL("{1}'s {2} maxed its {3}!",
@@ -1436,10 +1436,10 @@ BattleHandlers::TargetAbilityOnHit.add(:CURSEDBODY,
next if !regularMove || (regularMove.pp==0 && regularMove.total_pp>0)
next if battle.pbRandom(100)>=30
battle.pbShowAbilitySplash(target)
if !move.pbMoveFailedAromaVeil?(target,user,PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !move.pbMoveFailedAromaVeil?(target,user,Battle::Scene::USE_ABILITY_SPLASH)
user.effects[PBEffects::Disable] = 3
user.effects[PBEffects::DisableMove] = regularMove.id
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} was disabled!",user.pbThis,regularMove.name))
else
battle.pbDisplay(_INTL("{1}'s {2} was disabled by {3}'s {4}!",
@@ -1458,10 +1458,10 @@ BattleHandlers::TargetAbilityOnHit.add(:CUTECHARM,
next if !move.pbContactMove?(user)
next if battle.pbRandom(100)>=30
battle.pbShowAbilitySplash(target)
if user.pbCanAttract?(target,PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.pbCanAttract?(target,Battle::Scene::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} made {3} fall in love!",target.pbThis,
target.abilityName,user.pbThis(true))
end
@@ -1483,31 +1483,31 @@ BattleHandlers::TargetAbilityOnHit.add(:EFFECTSPORE,
next if r==1 && user.poisoned?
next if r==2 && user.paralyzed?
battle.pbShowAbilitySplash(target)
if user.affectedByPowder?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.affectedByPowder?(Battle::Scene::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
case r
when 0
if user.pbCanSleep?(target,PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.pbCanSleep?(target,Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} made {3} fall asleep!",target.pbThis,
target.abilityName,user.pbThis(true))
end
user.pbSleep(msg)
end
when 1
if user.pbCanPoison?(target,PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.pbCanPoison?(target,Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} poisoned {3}!",target.pbThis,
target.abilityName,user.pbThis(true))
end
user.pbPoison(target,msg)
end
when 2
if user.pbCanParalyze?(target,PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.pbCanParalyze?(target,Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} paralyzed {3}! It may be unable to move!",
target.pbThis,target.abilityName,user.pbThis(true))
end
@@ -1524,10 +1524,10 @@ BattleHandlers::TargetAbilityOnHit.add(:FLAMEBODY,
next if !move.pbContactMove?(user)
next if user.burned? || battle.pbRandom(100)>=30
battle.pbShowAbilitySplash(target)
if user.pbCanBurn?(target,PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.pbCanBurn?(target,Battle::Scene::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} burned {3}!",target.pbThis,target.abilityName,user.pbThis(true))
end
user.pbBurn(target,msg)
@@ -1560,10 +1560,10 @@ BattleHandlers::TargetAbilityOnHit.add(:INNARDSOUT,
proc { |ability,user,target,move,battle|
next if !target.fainted? || user.dummy
battle.pbShowAbilitySplash(target)
if user.takesIndirectDamage?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.takesIndirectDamage?(Battle::Scene::USE_ABILITY_SPLASH)
battle.scene.pbDamageAnimation(user)
user.pbReduceHP(target.damageState.hpLost,false)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} is hurt!",user.pbThis))
else
battle.pbDisplay(_INTL("{1} is hurt by {2}'s {3}!",user.pbThis,
@@ -1578,11 +1578,11 @@ BattleHandlers::TargetAbilityOnHit.add(:IRONBARBS,
proc { |ability,user,target,move,battle|
next if !move.pbContactMove?(user)
battle.pbShowAbilitySplash(target)
if user.takesIndirectDamage?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.takesIndirectDamage?(Battle::Scene::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
battle.scene.pbDamageAnimation(user)
user.pbReduceHP(user.totalhp/8,false)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} is hurt!",user.pbThis))
else
battle.pbDisplay(_INTL("{1} is hurt by {2}'s {3}!",user.pbThis,
@@ -1609,12 +1609,12 @@ BattleHandlers::TargetAbilityOnHit.add(:MUMMY,
next if user.unstoppableAbility? || user.ability == ability
oldAbil = nil
battle.pbShowAbilitySplash(target) if user.opposes?(target)
if user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
oldAbil = user.ability
battle.pbShowAbilitySplash(user,true,false) if user.opposes?(target)
user.ability = ability
battle.pbReplaceAbilitySplash(user) if user.opposes?(target)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s Ability became {2}!",user.pbThis,user.abilityName))
else
battle.pbDisplay(_INTL("{1}'s Ability became {2} because of {3}!",
@@ -1634,12 +1634,12 @@ BattleHandlers::TargetAbilityOnHit.add(:PERISHBODY,
next if user.fainted?
next if user.effects[PBEffects::PerishSong] > 0 || target.effects[PBEffects::PerishSong] > 0
battle.pbShowAbilitySplash(target)
if user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
user.effects[PBEffects::PerishSong] = 4
user.effects[PBEffects::PerishSongUser] = target.index
target.effects[PBEffects::PerishSong] = 4
target.effects[PBEffects::PerishSongUser] = target.index
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("Both Pokémon will faint in three turns!"))
else
battle.pbDisplay(_INTL("Both Pokémon will faint in three turns because of {1}'s {2}!",
@@ -1655,10 +1655,10 @@ BattleHandlers::TargetAbilityOnHit.add(:POISONPOINT,
next if !move.pbContactMove?(user)
next if user.poisoned? || battle.pbRandom(100)>=30
battle.pbShowAbilitySplash(target)
if user.pbCanPoison?(target,PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.pbCanPoison?(target,Battle::Scene::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} poisoned {3}!",target.pbThis,target.abilityName,user.pbThis(true))
end
user.pbPoison(target,msg)
@@ -1691,10 +1691,10 @@ BattleHandlers::TargetAbilityOnHit.add(:STATIC,
next if !move.pbContactMove?(user)
next if user.paralyzed? || battle.pbRandom(100)>=30
battle.pbShowAbilitySplash(target)
if user.pbCanParalyze?(target,PokeBattle_SceneConstants::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.pbCanParalyze?(target,Battle::Scene::USE_ABILITY_SPLASH) &&
user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} paralyzed {3}! It may be unable to move!",
target.pbThis,target.abilityName,user.pbThis(true))
end
@@ -1711,7 +1711,7 @@ BattleHandlers::TargetAbilityOnHit.add(:WANDERINGSPIRIT,
oldUserAbil = nil
oldTargetAbil = nil
battle.pbShowAbilitySplash(target) if user.opposes?(target)
if user.affectedByContactEffect?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if user.affectedByContactEffect?(Battle::Scene::USE_ABILITY_SPLASH)
battle.pbShowAbilitySplash(user, true, false) if user.opposes?(target)
oldUserAbil = user.ability
oldTargetAbil = target.ability
@@ -1721,7 +1721,7 @@ BattleHandlers::TargetAbilityOnHit.add(:WANDERINGSPIRIT,
battle.pbReplaceAbilitySplash(user)
battle.pbReplaceAbilitySplash(target)
end
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} swapped Abilities with {2}!", target.pbThis, user.pbThis(true)))
else
battle.pbDisplay(_INTL("{1} swapped its {2} Ability with {3}'s {4} Ability!",
@@ -1771,13 +1771,13 @@ BattleHandlers::UserAbilityOnHit.add(:POISONTOUCH,
battle.pbShowAbilitySplash(user)
if target.hasActiveAbility?(:SHIELDDUST) && !battle.moldBreaker
battle.pbShowAbilitySplash(target)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} is unaffected!",target.pbThis))
end
battle.pbHideAbilitySplash(target)
elsif target.pbCanPoison?(user,PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
elsif target.pbCanPoison?(user,Battle::Scene::USE_ABILITY_SPLASH)
msg = nil
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
msg = _INTL("{1}'s {2} poisoned {3}!",user.pbThis,user.abilityName,target.pbThis(true))
end
target.pbPoison(user,msg)
@@ -1850,7 +1850,7 @@ BattleHandlers::UserAbilityEndOfMove.add(:MAGICIAN,
battle.pbShowAbilitySplash(user)
if b.hasActiveAbility?(:STICKYHOLD)
battle.pbShowAbilitySplash(b) if user.opposes?(b)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s item cannot be stolen!",b.pbThis))
end
battle.pbHideAbilitySplash(b) if user.opposes?(b)
@@ -1863,7 +1863,7 @@ BattleHandlers::UserAbilityEndOfMove.add(:MAGICIAN,
user.setInitialItem(user.item)
b.setInitialItem(nil)
end
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} stole {2}'s {3}!",user.pbThis,
b.pbThis(true),user.itemName))
else
@@ -1928,7 +1928,7 @@ BattleHandlers::TargetAbilityAfterMoveUse.add(:PICKPOCKET,
battle.pbShowAbilitySplash(target)
if user.hasActiveAbility?(:STICKYHOLD)
battle.pbShowAbilitySplash(user) if target.opposes?(user)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s item cannot be stolen!",user.pbThis))
end
battle.pbHideAbilitySplash(user) if target.opposes?(user)
@@ -1967,7 +1967,7 @@ BattleHandlers::EORWeatherAbility.add(:DRYSKIN,
next if !battler.canHeal?
battle.pbShowAbilitySplash(battler)
battler.pbRecoverHP(battler.totalhp/8)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s HP was restored.",battler.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} restored its HP.",battler.pbThis,battler.abilityName))
@@ -1983,7 +1983,7 @@ BattleHandlers::EORWeatherAbility.add(:ICEBODY,
next if !battler.canHeal?
battle.pbShowAbilitySplash(battler)
battler.pbRecoverHP(battler.totalhp/16)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s HP was restored.",battler.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} restored its HP.",battler.pbThis,battler.abilityName))
@@ -1997,7 +1997,7 @@ BattleHandlers::EORWeatherAbility.add(:ICEFACE,
next if weather != :Hail
next if !battler.canRestoreIceFace || battler.form != 1
battle.pbShowAbilitySplash(battler)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} activated!", battler.pbThis, battler.abilityName))
end
battler.pbChangeForm(0, _INTL("{1} transformed!", battler.pbThis))
@@ -2011,7 +2011,7 @@ BattleHandlers::EORWeatherAbility.add(:RAINDISH,
next if !battler.canHeal?
battle.pbShowAbilitySplash(battler)
battler.pbRecoverHP(battler.totalhp/16)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s HP was restored.",battler.pbThis))
else
battle.pbDisplay(_INTL("{1}'s {2} restored its HP.",battler.pbThis,battler.abilityName))
@@ -2043,8 +2043,8 @@ BattleHandlers::EORHealingAbility.add(:HEALER,
next if b.status == :NONE
battle.pbShowAbilitySplash(battler)
oldStatus = b.status
b.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
b.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
case oldStatus
when :SLEEP
battle.pbDisplay(_INTL("{1}'s {2} woke its partner up!",battler.pbThis,battler.abilityName))
@@ -2069,8 +2069,8 @@ BattleHandlers::EORHealingAbility.add(:HYDRATION,
next if ![:Rain, :HeavyRain].include?(battler.effectiveWeather)
battle.pbShowAbilitySplash(battler)
oldStatus = battler.status
battler.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
case oldStatus
when :SLEEP
battle.pbDisplay(_INTL("{1}'s {2} woke it up!",battler.pbThis,battler.abilityName))
@@ -2094,8 +2094,8 @@ BattleHandlers::EORHealingAbility.add(:SHEDSKIN,
next unless battle.pbRandom(100)<30
battle.pbShowAbilitySplash(battler)
oldStatus = battler.status
battler.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
case oldStatus
when :SLEEP
battle.pbDisplay(_INTL("{1}'s {2} woke it up!",battler.pbThis,battler.abilityName))
@@ -2122,9 +2122,9 @@ BattleHandlers::EOREffectAbility.add(:BADDREAMS,
battle.allOtherSideBattlers(battler.index).each do |b|
next if !b.near?(battler) || !b.asleep?
battle.pbShowAbilitySplash(battler)
next if !b.takesIndirectDamage?(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
next if !b.takesIndirectDamage?(Battle::Scene::USE_ABILITY_SPLASH)
b.pbTakeEffectDamage(b.totalhp / 8) { |hp_lost|
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} is tormented!", b.pbThis))
else
battle.pbDisplay(_INTL("{1} is tormented by {2}'s {3}!",
@@ -2278,7 +2278,7 @@ BattleHandlers::TrappingTargetAbility.add(:SHADOWTAG,
BattleHandlers::AbilityOnSwitchIn.add(:AIRLOCK,
proc { |ability,battler,battle|
battle.pbShowAbilitySplash(battler)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} has {2}!",battler.pbThis,battler.abilityName))
end
battle.pbDisplay(_INTL("The effects of the weather disappeared."))
@@ -2362,7 +2362,7 @@ BattleHandlers::AbilityOnSwitchIn.add(:CURIOUSMEDICINE,
battler.allAllies.each do |b|
next if !b.hasAlteredStatStages?
b.pbResetStatStages
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s stat changes were removed!", b.pbThis))
else
battle.pbDisplay(_INTL("{1}'s stat changes were removed by {2}'s {3}!",
@@ -2480,7 +2480,7 @@ BattleHandlers::AbilityOnSwitchIn.add(:FOREWARN,
if forewarnMoves.length>0
battle.pbShowAbilitySplash(battler)
forewarnMoveName = forewarnMoves[battle.pbRandom(forewarnMoves.length)]
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} was alerted to {2}!",
battler.pbThis, forewarnMoveName))
else
@@ -2527,7 +2527,7 @@ BattleHandlers::AbilityOnSwitchIn.add(:ICEFACE,
next if !battler.isSpecies?(:EISCUE) || battler.form != 1
next if battler.effectiveWeather != :Hail
battle.pbShowAbilitySplash(battler)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if !Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} activated!", battler.pbThis, battler.abilityName))
end
battler.pbChangeForm(0, _INTL("{1} transformed!", battler.pbThis))
@@ -2635,8 +2635,8 @@ BattleHandlers::AbilityOnSwitchIn.add(:PASTELVEIL,
battle.pbShowAbilitySplash(battler)
battler.allAllies.each do |b|
next if b.status != :POISON
b.pbCureStatus(PokeBattle_SceneConstants::USE_ABILITY_SPLASH)
if !PokeBattle_SceneConstants::USE_ABILITY_SPLASH
b.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
if !Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1}'s {2} cured {3}'s poisoning!",
battler.pbThis, battler.abilityName, b.pbThis(true)))
end
@@ -2715,7 +2715,7 @@ BattleHandlers::AbilityOnSwitchIn.add(:SLOWSTART,
proc { |ability,battler,battle|
battle.pbShowAbilitySplash(battler)
battler.effects[PBEffects::SlowStart] = 5
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
if Battle::Scene::USE_ABILITY_SPLASH
battle.pbDisplay(_INTL("{1} can't get it going!",battler.pbThis))
else
battle.pbDisplay(_INTL("{1} can't get it going because of its {2}!",

View File

@@ -661,7 +661,7 @@ BattleHandlers::DamageCalcUserItem.add(:ICEGEM,
BattleHandlers::DamageCalcUserItem.add(:LIFEORB,
proc { |item,user,target,move,mults,baseDmg,type|
if !move.is_a?(PokeBattle_Confusion)
if !move.is_a?(Battle::Move::Confusion)
mults[:final_damage_multiplier] *= 1.3
end
}
@@ -1338,7 +1338,7 @@ BattleHandlers::TargetItemAfterMoveUse.add(:REDCARD,
battler.pbConsumeItem
if user.hasActiveAbility?(:SUCTIONCUPS) && !battle.moldBreaker
battle.pbShowAbilitySplash(user)
if PokeBattle_SceneConstants::USE_ABILITY_SPLASH
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))

View File

@@ -1,90 +0,0 @@
begin
class PokeBattle_ActiveField
attr_accessor :effects
attr_accessor :defaultWeather
attr_accessor :weather
attr_accessor :weatherDuration
attr_accessor :defaultTerrain
attr_accessor :terrain
attr_accessor :terrainDuration
def initialize
@effects = []
@effects[PBEffects::AmuletCoin] = false
@effects[PBEffects::FairyLock] = 0
@effects[PBEffects::FusionBolt] = false
@effects[PBEffects::FusionFlare] = false
@effects[PBEffects::Gravity] = 0
@effects[PBEffects::HappyHour] = false
@effects[PBEffects::IonDeluge] = false
@effects[PBEffects::MagicRoom] = 0
@effects[PBEffects::MudSportField] = 0
@effects[PBEffects::PayDay] = 0
@effects[PBEffects::TrickRoom] = 0
@effects[PBEffects::WaterSportField] = 0
@effects[PBEffects::WonderRoom] = 0
@defaultWeather = :None
@weather = :None
@weatherDuration = 0
@defaultTerrain = :None
@terrain = :None
@terrainDuration = 0
end
end
class PokeBattle_ActiveSide
attr_accessor :effects
def initialize
@effects = []
@effects[PBEffects::AuroraVeil] = 0
@effects[PBEffects::CraftyShield] = false
@effects[PBEffects::EchoedVoiceCounter] = 0
@effects[PBEffects::EchoedVoiceUsed] = false
@effects[PBEffects::LastRoundFainted] = -1
@effects[PBEffects::LightScreen] = 0
@effects[PBEffects::LuckyChant] = 0
@effects[PBEffects::MatBlock] = false
@effects[PBEffects::Mist] = 0
@effects[PBEffects::QuickGuard] = false
@effects[PBEffects::Rainbow] = 0
@effects[PBEffects::Reflect] = 0
@effects[PBEffects::Round] = false
@effects[PBEffects::Safeguard] = 0
@effects[PBEffects::SeaOfFire] = 0
@effects[PBEffects::Spikes] = 0
@effects[PBEffects::StealthRock] = false
@effects[PBEffects::StickyWeb] = false
@effects[PBEffects::Swamp] = 0
@effects[PBEffects::Tailwind] = 0
@effects[PBEffects::ToxicSpikes] = 0
@effects[PBEffects::WideGuard] = false
end
end
class PokeBattle_ActivePosition
attr_accessor :effects
def initialize
@effects = []
@effects[PBEffects::FutureSightCounter] = 0
@effects[PBEffects::FutureSightMove] = nil
@effects[PBEffects::FutureSightUserIndex] = -1
@effects[PBEffects::FutureSightUserPartyIndex] = -1
@effects[PBEffects::HealingWish] = false
@effects[PBEffects::LunarDance] = false
@effects[PBEffects::Wish] = 0
@effects[PBEffects::WishAmount] = 0
@effects[PBEffects::WishMaker] = -1
end
end
rescue Exception
if $!.is_a?(SystemExit) || "#{$!.class}"=="Reset"
raise $!
end
end

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Simple battler class for the wild Pokémon in a Safari Zone battle
#===============================================================================
class PokeBattle_FakeBattler
class Battle::FakeBattler
attr_reader :battle
attr_reader :index
attr_reader :pokemon
@@ -47,7 +47,7 @@ class PokeBattle_FakeBattler
end
def opposes?(i)
i = i.index if i.is_a?(PokeBattle_FakeBattler)
i = i.index if i.is_a?(FakeBattler)
return (@index&1)!=(i&1)
end
@@ -59,7 +59,7 @@ end
#===============================================================================
# Data box for safari battles
#===============================================================================
class SafariDataBox < SpriteWrapper
class Battle::Scene::SafariDataBox < SpriteWrapper
attr_accessor :selected
def initialize(battle,viewport=nil)
@@ -98,8 +98,8 @@ end
#===============================================================================
# Shows the player throwing bait at a wild Pokémon in a Safari battle.
#===============================================================================
class ThrowBaitAnimation < PokeBattle_Animation
include PokeBattle_BallAnimationMixin
class Battle::Scene::Animation::ThrowBait < Battle::Scene::Animation
include Battle::Scene::Animation::BallAnimationMixin
def initialize(sprites,viewport,battler)
@battler = battler
@@ -111,7 +111,7 @@ class ThrowBaitAnimation < PokeBattle_Animation
# Calculate start and end coordinates for battler sprite movement
batSprite = @sprites["pokemon_#{@battler.index}"]
traSprite = @sprites["player_1"]
ballPos = PokeBattle_SceneConstants.pbBattlerPosition(@battler.index,batSprite.sideSize)
ballPos = Battle::Scene.pbBattlerPosition(@battler.index,batSprite.sideSize)
ballStartX = traSprite.x
ballStartY = traSprite.y-traSprite.bitmap.height/2
ballMidX = 0 # Unused in arc calculation
@@ -164,8 +164,8 @@ end
#===============================================================================
# Shows the player throwing a rock at a wild Pokémon in a Safari battle.
#===============================================================================
class ThrowRockAnimation < PokeBattle_Animation
include PokeBattle_BallAnimationMixin
class Battle::Scene::Animation::ThrowRock < Battle::Scene::Animation
include Battle::Scene::Animation::BallAnimationMixin
def initialize(sprites,viewport,battler)
@battler = battler
@@ -227,11 +227,11 @@ end
#===============================================================================
# Safari Zone battle scene (the visuals of the battle)
#===============================================================================
class PokeBattle_Scene
class Battle::Scene
def pbSafariStart
@briefMessage = false
@sprites["dataBox_0"] = SafariDataBox.new(@battle,@viewport)
dataBoxAnim = DataBoxAppearAnimation.new(@sprites,@viewport,0)
dataBoxAnim = Animation::DataBoxAppear.new(@sprites,@viewport,0)
loop do
dataBoxAnim.update
pbUpdate
@@ -253,7 +253,7 @@ class PokeBattle_Scene
def pbThrowBait
@briefMessage = false
baitAnim = ThrowBaitAnimation.new(@sprites,@viewport,@battle.battlers[1])
baitAnim = Animation::ThrowBait.new(@sprites,@viewport,@battle.battlers[1])
loop do
baitAnim.update
pbUpdate
@@ -264,7 +264,7 @@ class PokeBattle_Scene
def pbThrowRock
@briefMessage = false
rockAnim = ThrowRockAnimation.new(@sprites,@viewport,@battle.battlers[1])
rockAnim = Animation::ThrowRock.new(@sprites,@viewport,@battle.battlers[1])
loop do
rockAnim.update
pbUpdate
@@ -276,7 +276,7 @@ class PokeBattle_Scene
alias __safari__pbThrowSuccess pbThrowSuccess
def pbThrowSuccess
__safari__pbThrowSuccess
pbWildBattleSuccess if @battle.is_a?(PokeBattle_SafariZone)
pbWildBattleSuccess if @battle.is_a?(SafariBattle)
end
end
@@ -285,7 +285,7 @@ end
#===============================================================================
# Safari Zone battle class
#===============================================================================
class PokeBattle_SafariZone
class SafariBattle
attr_reader :battlers # Array of fake battler objects
attr_accessor :sideSizes # Array of number of battlers per side
attr_accessor :backdrop # Filename fragment used for background graphics
@@ -304,7 +304,7 @@ class PokeBattle_SafariZone
attr_accessor :rules
attr_accessor :ballCount
include PokeBattle_BattleCommon
include Battle::Common
def pbRandom(x); return rand(x); end
@@ -313,7 +313,7 @@ class PokeBattle_SafariZone
#=============================================================================
def initialize(scene,player,party2)
@scene = scene
@peer = PokeBattle_BattlePeer.create()
@peer = Battle::Peer.new
@backdrop = ""
@backdropBase = nil
@time = 0
@@ -325,8 +325,8 @@ class PokeBattle_SafariZone
@party2 = party2
@sideSizes = [1,1]
@battlers = [
PokeBattle_FakeBattler.new(self,0),
PokeBattle_FakeBattler.new(self,1)
Battle::FakeBattler.new(self,0),
Battle::FakeBattler.new(self,1)
]
@rules = {}
@ballCount = 0
@@ -357,7 +357,7 @@ class PokeBattle_SafariZone
def pbSetSeen(battler)
return if !battler || !@internalBattle
if battler.is_a?(PokeBattle_Battler)
if battler.is_a?(Battle::Battler)
pbPlayer.pokedex.register(battler.displaySpecies, battler.displayGender,
battler.displayForm, battler.shiny?)
else
@@ -367,7 +367,7 @@ class PokeBattle_SafariZone
def pbSetCaught(battler)
return if !battler || !@internalBattle
if battler.is_a?(PokeBattle_Battler)
if battler.is_a?(Battle::Battler)
pbPlayer.pokedex.register_caught(battler.displaySpecies)
else
pbPlayer.pokedex.register_caught(battler.species)

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Bug Catching Contest battle scene (the visuals of the battle)
#===============================================================================
class PokeBattle_Scene
class Battle::Scene
alias _bugContest_pbInitSprites pbInitSprites
def pbInitSprites
@@ -31,7 +31,7 @@ end
#===============================================================================
# Bug Catching Contest battle class
#===============================================================================
class PokeBattle_BugContestBattle < PokeBattle_Battle
class BugContestBattle < Battle
attr_accessor :ballCount
def initialize(*arg)

View File

@@ -1,7 +1,7 @@
#===============================================================================
#
#===============================================================================
class PokeBattle_BattlePalace < PokeBattle_Battle
class BattlePalaceBattle < Battle
# Percentage chances of choosing attack, defense, support moves
@@BattlePalaceUsualTable = {
:HARDY => [61, 7, 32],
@@ -103,7 +103,7 @@ class PokeBattle_BattlePalace < PokeBattle_Battle
else
@choices[idxBattler][0] = :UseMove # "Use move"
@choices[idxBattler][1] = idxMove # Index of move to be used
@choices[idxBattler][2] = this_battler.moves[idxMove] # PokeBattle_Move object
@choices[idxBattler][2] = this_battler.moves[idxMove] # Battle::Move object
@choices[idxBattler][3] = -1 # No target chosen yet
end
end
@@ -175,7 +175,7 @@ end
#===============================================================================
#
#===============================================================================
class PokeBattle_AI
class Battle::AI
attr_accessor :battlePalace
alias _battlePalace_initialize initialize

View File

@@ -1,7 +1,7 @@
#===============================================================================
# Success state
#===============================================================================
class PokeBattle_SuccessState
class Battle::SuccessState
attr_accessor :typeMod
attr_accessor :useState # 0 - not used, 1 - failed, 2 - succeeded
attr_accessor :protected
@@ -39,7 +39,7 @@ end
#===============================================================================
#
#===============================================================================
class PokeBattle_BattleArena < PokeBattle_Battle
class BattleArenaBattle < Battle
def initialize(*arg)
super
@battlersChanged = true
@@ -209,7 +209,7 @@ end
#===============================================================================
#
#===============================================================================
class PokeBattle_AI
class Battle::AI
attr_accessor :battleArena
alias _battleArena_pbEnemyShouldWithdraw? pbEnemyShouldWithdraw?
@@ -225,7 +225,7 @@ end
#===============================================================================
#
#===============================================================================
class PokeBattle_Scene
class Battle::Scene
def pbBattleArenaUpdate
pbGraphicsUpdate
end

View File

@@ -1,7 +1,7 @@
#===============================================================================
#
#===============================================================================
module PokeBattle_RecordedBattleModule
module RecordedBattleModule
attr_reader :randomnums
attr_reader :rounds
@@ -135,45 +135,10 @@ module PokeBattle_RecordedBattleModule
end
end
#===============================================================================
#
#===============================================================================
module BattlePlayerHelper
def self.pbGetOpponent(battle)
return self.pbCreateTrainerInfo(battle[1]["opponent"])
end
def self.pbGetBattleBGM(battle)
return self.pbGetTrainerBattleBGM(self.pbGetOpponent(battle))
end
def self.pbCreateTrainerInfo(trainer)
return nil if !trainer
ret = []
trainer.each do |tr|
if tr.length == 4 # Player
t = Player.new(tr[1], tr[0])
t.id = tr[2]
t.badges = tr[3]
ret.push(t)
else # NPCTrainer
t = NPCTrainer.new(tr[1], tr[0])
t.id = tr[2]
ret.push(t)
end
end
return ret
end
end
#===============================================================================
#
#===============================================================================
module PokeBattle_BattlePlayerModule
module RecordedBattlePlaybackModule
module Commands
Fight = 0
Bag = 1
@@ -193,8 +158,8 @@ module PokeBattle_BattlePlayerModule
super(scene,
Marshal.restore(@properties["party1"]),
Marshal.restore(@properties["party2"]),
BattlePlayerHelper.pbCreateTrainerInfo(@properties["player"]),
BattlePlayerHelper.pbCreateTrainerInfo(@properties["opponent"])
RecordedBattle::PlaybackHelper.pbCreateTrainerInfo(@properties["player"]),
RecordedBattle::PlaybackHelper.pbCreateTrainerInfo(@properties["opponent"])
)
end
@@ -261,47 +226,66 @@ module PokeBattle_BattlePlayerModule
end
end
#===============================================================================
#
#===============================================================================
class PokeBattle_RecordedBattle < PokeBattle_Battle
include PokeBattle_RecordedBattleModule
class RecordedBattle < Battle
include RecordedBattleModule
def pbGetBattleType; return 0; end
end
class PokeBattle_RecordedBattlePalace < PokeBattle_BattlePalace
include PokeBattle_RecordedBattleModule
class RecordedBattle::BattlePalaceBattle < BattlePalaceBattle
include RecordedBattleModule
def pbGetBattleType; return 1; end
end
class PokeBattle_RecordedBattleArena < PokeBattle_BattleArena
include PokeBattle_RecordedBattleModule
class RecordedBattle::BattleArenaBattle < BattleArenaBattle
include RecordedBattleModule
def pbGetBattleType; return 2; end
end
class PokeBattle_BattlePlayer < PokeBattle_Battle
include PokeBattle_BattlePlayerModule
class RecordedBattle::PlaybackBattle < Battle
include RecordedBattlePlaybackModule
end
class PokeBattle_BattlePalacePlayer < PokeBattle_BattlePalace
include PokeBattle_BattlePlayerModule
class RecordedBattle::BattlePalacePlaybackBattle < BattlePalaceBattle
include RecordedBattlePlaybackModule
end
class PokeBattle_BattleArenaPlayer < PokeBattle_BattleArena
include PokeBattle_BattlePlayerModule
class RecordedBattle::BattleArenaPlaybackBattle < BattleArenaBattle
include RecordedBattlePlaybackModule
end
#===============================================================================
#
#===============================================================================
module RecordedBattle::PlaybackHelper
def self.pbGetOpponent(battle)
return self.pbCreateTrainerInfo(battle[1]["opponent"])
end
def self.pbGetBattleBGM(battle)
return self.pbGetTrainerBattleBGM(self.pbGetOpponent(battle))
end
def self.pbCreateTrainerInfo(trainer)
return nil if !trainer
ret = []
trainer.each do |tr|
if tr.length == 4 # Player
t = Player.new(tr[1], tr[0])
t.id = tr[2]
t.badges = tr[3]
ret.push(t)
else # NPCTrainer
t = NPCTrainer.new(tr[1], tr[0])
t.id = tr[2]
ret.push(t)
end
end
return ret
end
end

View File

@@ -84,7 +84,7 @@ def setBattleRule(*args)
end
def pbNewBattleScene
return PokeBattle_Scene.new
return Battle::Scene.new
end
# Sets up various battle parameters and applies special rules.
@@ -274,7 +274,7 @@ def pbWildBattleCore(*args)
# Create the battle scene (the visual side of it)
scene = pbNewBattleScene
# Create the battle class (the mechanics side of it)
battle = PokeBattle_Battle.new(scene,playerParty,foeParty,playerTrainers,nil)
battle = Battle.new(scene,playerParty,foeParty,playerTrainers,nil)
battle.party1starts = playerPartyStarts
# Set various other properties in the battle class
pbPrepareBattle(battle)
@@ -426,7 +426,7 @@ def pbTrainerBattleCore(*args)
# Create the battle scene (the visual side of it)
scene = pbNewBattleScene
# Create the battle class (the mechanics side of it)
battle = PokeBattle_Battle.new(scene,playerParty,foeParty,playerTrainers,foeTrainers)
battle = Battle.new(scene,playerParty,foeParty,playerTrainers,foeTrainers)
battle.party1starts = playerPartyStarts
battle.party2starts = foePartyStarts
battle.items = foeItems

View File

@@ -640,7 +640,7 @@ MultipleForms.register(:ZACIAN, {
move.id = :BEHEMOTHBLADE
battler.moves.each_with_index do |b_move, i|
next if b_move.id != :IRONHEAD
battler.moves[i] = PokeBattle_Move.from_pokemon_move(battle, move)
battler.moves[i] = Battle::Move.from_pokemon_move(battle, move)
end
end
end
@@ -665,7 +665,7 @@ MultipleForms.register(:ZAMAZENTA, {
move.id = :BEHEMOTHBASH
battler.moves.each_with_index do |b_move, i|
next if b_move.id != :IRONHEAD
battler.moves[i] = PokeBattle_Move.from_pokemon_move(battle, move)
battler.moves[i] = Battle::Move.from_pokemon_move(battle, move)
end
end
end

View File

@@ -167,7 +167,7 @@ end
#===============================================================================
# Shadow Pokémon in battle.
#===============================================================================
class PokeBattle_Battle
class Battle
alias __shadow__pbCanUseItemOnPokemon? pbCanUseItemOnPokemon?
def pbCanUseItemOnPokemon?(item,pkmn,battler,scene,showMessages=true)
@@ -182,7 +182,7 @@ end
class PokeBattle_Battler
class Battle::Battler
alias __shadow__pbInitPokemon pbInitPokemon
def pbInitPokemon(*arg)
@@ -316,7 +316,7 @@ ItemHandlers::BattleUseOnBattler.add(:VIVIDSCENT,proc { |item,battler,scene|
# Two turn attack. On first turn, halves the HP of all active Pokémon.
# Skips second turn (if successful). (Shadow Half)
#===============================================================================
class PokeBattle_Move_AllBattlersLoseHalfHPUserSkipsNextTurn < PokeBattle_Move
class Battle::Move::AllBattlersLoseHalfHPUserSkipsNextTurn < Battle::Move
def pbMoveFailed?(user,targets)
if @battle.allBattlers.none? { |b| b.hp > 1 }
@battle.pbDisplay(_INTL("But it failed!"))
@@ -341,7 +341,7 @@ end
#===============================================================================
# User takes recoil damage equal to 1/2 of its current HP. (Shadow End)
#===============================================================================
class PokeBattle_Move_UserLosesHalfHP < PokeBattle_RecoilMove
class Battle::Move::UserLosesHalfHP < Battle::Move::RecoilMove
def pbRecoilDamage(user,target)
return (target.damageState.totalHPLost/2.0).round
end
@@ -362,7 +362,7 @@ end
#===============================================================================
# Starts shadow weather. (Shadow Sky)
#===============================================================================
class PokeBattle_Move_StartShadowSkyWeather < PokeBattle_WeatherMove
class Battle::Move::StartShadowSkyWeather < Battle::Move::WeatherMove
def initialize(battle,move)
super
@weatherType = :ShadowSky
@@ -375,7 +375,7 @@ end
# Ends the effects of Light Screen, Reflect and Safeguard on both sides.
# (Shadow Shed)
#===============================================================================
class PokeBattle_Move_RemoveAllScreens < PokeBattle_Move
class Battle::Move::RemoveAllScreens < Battle::Move
def pbEffectGeneral(user)
for i in @battle.sides
i.effects[PBEffects::AuroraVeil] = 0

View File

@@ -3,7 +3,7 @@
#===============================================================================
class BattleType
def pbCreateBattle(scene, trainer1, trainer2)
return PokeBattle_Battle.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
return Battle.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
end
end
@@ -12,7 +12,7 @@ end
#===============================================================================
class BattleTower < BattleType
def pbCreateBattle(scene, trainer1, trainer2)
return PokeBattle_RecordedBattle.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
return RecordedBattle.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
end
end
@@ -21,7 +21,7 @@ end
#===============================================================================
class BattlePalace < BattleType
def pbCreateBattle(scene, trainer1, trainer2)
return PokeBattle_RecordedBattlePalace.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
return RecordedBattle::BattlePalaceBattle.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
end
end
@@ -30,7 +30,7 @@ end
#===============================================================================
class BattleArena < BattleType
def pbCreateBattle(scene, trainer1, trainer2)
return PokeBattle_RecordedBattleArena.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
return RecordedBattle::BattleArenaBattle.new(scene, trainer1.party, trainer2.party, trainer1, trainer2)
end
end
@@ -119,13 +119,13 @@ def pbPlayBattle(battledata)
lastbattle = Marshal.restore(battledata)
case lastbattle[0]
when BattleChallenge::BattleTowerID
battleplayer = PokeBattle_BattlePlayer.new(scene, lastbattle)
battleplayer = RecordedBattle::PlaybackBattle.new(scene, lastbattle)
when BattleChallenge::BattlePalaceID
battleplayer = PokeBattle_BattlePalacePlayer.new(scene, lastbattle)
battleplayer = RecordedBattle::BattlePalacePlaybackBattle.new(scene, lastbattle)
when BattleChallenge::BattleArenaID
battleplayer = PokeBattle_BattleArenaPlayer.new(scene, lastbattle)
battleplayer = RecordedBattle::BattleArenaPlaybackBattle.new(scene, lastbattle)
end
bgm = BattlePlayerHelper.pbGetBattleBGM(lastbattle)
bgm = RecordedBattle::PlaybackHelper.pbGetBattleBGM(lastbattle)
pbBattleAnimation(bgm) {
pbSceneStandby {
battleplayer.pbStartBattle

View File

@@ -108,7 +108,7 @@ def pbSafariBattle(species,level)
# Create the battle scene (the visual side of it)
scene = pbNewBattleScene
# Create the battle class (the mechanics side of it)
battle = PokeBattle_SafariZone.new(scene,playerTrainer,foeParty)
battle = SafariBattle.new(scene,playerTrainer,foeParty)
battle.ballCount = pbSafariState.ballcount
pbPrepareBattle(battle)
# Perform the battle itself

View File

@@ -362,7 +362,7 @@ def pbBugContestBattle(species,level)
# Create the battle scene (the visual side of it)
scene = pbNewBattleScene
# Create the battle class (the mechanics side of it)
battle = PokeBattle_BugContestBattle.new(scene,playerParty,foeParty,playerTrainer,nil)
battle = BugContestBattle.new(scene,playerParty,foeParty,playerTrainer,nil)
battle.party1starts = playerPartyStarts
battle.ballCount = pbBugContestState.ballcount
setBattleRule("single")

View File

@@ -402,7 +402,7 @@ def pbRuledBattle(team1, team2, rule)
items2[i] = p.item_id
trainer2.party.push(p)
end
scene = PokeBattle_DebugSceneNoLogging.new
scene = Battle::DebugSceneNoLogging.new
battle = rule.createBattle(scene, trainer1, trainer2)
battle.debug = true
battle.controlPlayer = true

View File

@@ -54,13 +54,13 @@ class SpritePositioner
@sprites["battle_bg"] = AnimatedPlane.new(@viewport)
@sprites["battle_bg"].setBitmap(battlebg)
@sprites["battle_bg"].z = 0
baseX, baseY = PokeBattle_SceneConstants.pbBattlerPosition(0)
baseX, baseY = Battle::Scene.pbBattlerPosition(0)
@sprites["base_0"] = IconSprite.new(baseX, baseY, @viewport)
@sprites["base_0"].setBitmap(playerbase)
@sprites["base_0"].x -= @sprites["base_0"].bitmap.width / 2 if @sprites["base_0"].bitmap
@sprites["base_0"].y -= @sprites["base_0"].bitmap.height if @sprites["base_0"].bitmap
@sprites["base_0"].z = 1
baseX, baseY = PokeBattle_SceneConstants.pbBattlerPosition(1)
baseX, baseY = Battle::Scene.pbBattlerPosition(1)
@sprites["base_1"] = IconSprite.new(baseX, baseY, @viewport)
@sprites["base_1"].setBitmap(enemybase)
@sprites["base_1"].x -= @sprites["base_1"].bitmap.width / 2 if @sprites["base_1"].bitmap
@@ -118,7 +118,7 @@ class SpritePositioner
end
metrics_data = GameData::SpeciesMetrics.get_species_form(@species, @form)
for i in 0...2
pos = PokeBattle_SceneConstants.pbBattlerPosition(i, 1)
pos = Battle::Scene.pbBattlerPosition(i, 1)
@sprites["pokemon_#{i}"].x = pos[0]
@sprites["pokemon_#{i}"].y = pos[1]
metrics_data.apply_metrics_to_sprite(@sprites["pokemon_#{i}"], i)

View File

@@ -524,12 +524,12 @@ class AnimationCanvas < Sprite
@sprites["pokemon_1"].bitmap=@target
@sprites["pokemon_1"].z=16
pbSpriteSetAnimFrame(@sprites["pokemon_0"],
pbCreateCel(PokeBattle_SceneConstants::FOCUSUSER_X,
PokeBattle_SceneConstants::FOCUSUSER_Y,-1,2),
pbCreateCel(Battle::Scene::FOCUSUSER_X,
Battle::Scene::FOCUSUSER_Y,-1,2),
@sprites["pokemon_0"],@sprites["pokemon_1"])
pbSpriteSetAnimFrame(@sprites["pokemon_1"],
pbCreateCel(PokeBattle_SceneConstants::FOCUSTARGET_X,
PokeBattle_SceneConstants::FOCUSTARGET_Y,-2,1),
pbCreateCel(Battle::Scene::FOCUSTARGET_X,
Battle::Scene::FOCUSTARGET_Y,-2,1),
@sprites["pokemon_0"],@sprites["pokemon_1"])
usersprite=@sprites["pokemon_#{oppmove ? 1 : 0}"]
targetsprite=@sprites["pokemon_#{oppmove ? 0 : 1}"]
@@ -540,8 +540,8 @@ class AnimationCanvas < Sprite
@player=PBAnimationPlayerX.new(@animation,
@battle.battlers[oppmove ? 1 : 0],@battle.battlers[oppmove ? 0 : 1],self,oppmove,true)
@player.setLineTransform(
PokeBattle_SceneConstants::FOCUSUSER_X,PokeBattle_SceneConstants::FOCUSUSER_Y,
PokeBattle_SceneConstants::FOCUSTARGET_X,PokeBattle_SceneConstants::FOCUSTARGET_Y,
Battle::Scene::FOCUSUSER_X,Battle::Scene::FOCUSUSER_Y,
Battle::Scene::FOCUSTARGET_X,Battle::Scene::FOCUSTARGET_Y,
olduserx,oldusery,
oldtargetx,oldtargety)
@player.start

View File

@@ -104,17 +104,17 @@ def pbConvertAnimToNewFormat(textdata)
textdata[i][j][AnimFrame::PRIORITY]=1 if textdata[i][j][AnimFrame::PRIORITY]==nil
if j==0 # User battler
textdata[i][j][AnimFrame::FOCUS]=2
textdata[i][j][AnimFrame::X]=PokeBattle_SceneConstants::FOCUSUSER_X
textdata[i][j][AnimFrame::Y]=PokeBattle_SceneConstants::FOCUSUSER_Y
textdata[i][j][AnimFrame::X]=Battle::Scene::FOCUSUSER_X
textdata[i][j][AnimFrame::Y]=Battle::Scene::FOCUSUSER_Y
elsif j==1 # Target battler
textdata[i][j][AnimFrame::FOCUS]=1
textdata[i][j][AnimFrame::X]=PokeBattle_SceneConstants::FOCUSTARGET_X
textdata[i][j][AnimFrame::Y]=PokeBattle_SceneConstants::FOCUSTARGET_Y
textdata[i][j][AnimFrame::X]=Battle::Scene::FOCUSTARGET_X
textdata[i][j][AnimFrame::Y]=Battle::Scene::FOCUSTARGET_Y
else
textdata[i][j][AnimFrame::FOCUS]=(textdata.position || 4)
if textdata.position==1
textdata[i][j][AnimFrame::X]+=PokeBattle_SceneConstants::FOCUSTARGET_X
textdata[i][j][AnimFrame::Y]+=PokeBattle_SceneConstants::FOCUSTARGET_Y-2
textdata[i][j][AnimFrame::X]+=Battle::Scene::FOCUSTARGET_X
textdata[i][j][AnimFrame::Y]+=Battle::Scene::FOCUSTARGET_Y-2
end
end
end