mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Converted Shadow Pokémon PBS file to a section-based format, improved Shadow Pokémon mechanics
This commit is contained in:
@@ -231,6 +231,7 @@ module GameData
|
||||
BerryPlant.load
|
||||
Species.load
|
||||
SpeciesMetrics.load
|
||||
ShadowPokemon.load
|
||||
Ribbon.load
|
||||
Encounter.load
|
||||
TrainerType.load
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
class Game_Temp
|
||||
attr_accessor :town_map_data
|
||||
attr_accessor :phone_messages_data
|
||||
attr_accessor :shadow_movesets_data
|
||||
attr_accessor :regional_dexes_data
|
||||
attr_accessor :battle_animations_data
|
||||
attr_accessor :move_to_battle_animation_data
|
||||
@@ -15,7 +14,6 @@ def pbClearData
|
||||
if $game_temp
|
||||
$game_temp.town_map_data = nil
|
||||
$game_temp.phone_messages_data = nil
|
||||
$game_temp.shadow_movesets_data = nil
|
||||
$game_temp.regional_dexes_data = nil
|
||||
$game_temp.battle_animations_data = nil
|
||||
$game_temp.move_to_battle_animation_data = nil
|
||||
@@ -52,17 +50,6 @@ def pbLoadPhoneData
|
||||
return $game_temp.phone_messages_data
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
# Method to get Shadow Pokémon moveset data.
|
||||
#===============================================================================
|
||||
def pbLoadShadowMovesets
|
||||
$game_temp = Game_Temp.new if !$game_temp
|
||||
if !$game_temp.shadow_movesets_data
|
||||
$game_temp.shadow_movesets_data = load_data("Data/shadow_movesets.dat") || []
|
||||
end
|
||||
return $game_temp.shadow_movesets_data
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
# Method to get Regional Dexes data.
|
||||
#===============================================================================
|
||||
|
||||
32
Data/Scripts/010_Data/002_PBS data/011_ShadowPokemon.rb
Normal file
32
Data/Scripts/010_Data/002_PBS data/011_ShadowPokemon.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
module GameData
|
||||
class ShadowPokemon
|
||||
attr_reader :id
|
||||
attr_reader :moves
|
||||
attr_reader :gauge_size
|
||||
attr_reader :flags
|
||||
|
||||
DATA = {}
|
||||
DATA_FILENAME = "shadow_pokemon.dat"
|
||||
|
||||
SCHEMA = {
|
||||
"GaugeSize" => [:gauge_size, "v"],
|
||||
"Moves" => [:moves, "*s"], # Not enumerated when compiled
|
||||
"Flags" => [:flags, "*s"]
|
||||
}
|
||||
HEART_GAUGE_SIZE = 4000 # Default gauge size
|
||||
|
||||
extend ClassMethodsSymbols
|
||||
include InstanceMethods
|
||||
|
||||
def initialize(hash)
|
||||
@id = hash[:id]
|
||||
@moves = hash[:moves] || []
|
||||
@gauge_size = hash[:gauge_size] || HEART_GAUGE_SIZE
|
||||
@flags = hash[:flags] || []
|
||||
end
|
||||
|
||||
def has_flag?(flag)
|
||||
return @flags.any? { |f| f.downcase == flag.downcase }
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -71,7 +71,7 @@ class Battle
|
||||
evYield.each_key { |stat| evYield[stat] *= 2 }
|
||||
end
|
||||
# Gain EVs for each stat in turn
|
||||
if pkmn.shadowPokemon? && pkmn.saved_ev
|
||||
if pkmn.shadowPokemon? && pkmn.heartStage <= 3 && pkmn.saved_ev
|
||||
pkmn.saved_ev.each_value { |e| evTotal += e }
|
||||
GameData::Stat.each_main do |s|
|
||||
evGain = evYield[s.id].clamp(0, Pokemon::EV_STAT_LIMIT - pkmn.ev[s.id] - pkmn.saved_ev[s.id])
|
||||
@@ -178,11 +178,14 @@ class Battle
|
||||
pkmn.name,debugInfo))
|
||||
end
|
||||
# Give Exp
|
||||
$stats.total_exp_gained += expGained
|
||||
if pkmn.shadowPokemon?
|
||||
pkmn.exp += expGained
|
||||
if pkmn.heartStage <= 3
|
||||
pkmn.exp += expGained
|
||||
$stats.total_exp_gained += expGained
|
||||
end
|
||||
return
|
||||
end
|
||||
$stats.total_exp_gained += expGained
|
||||
tempExp1 = pkmn.exp
|
||||
battler = pbFindBattler(idxParty)
|
||||
loop do # For each level gained in turn...
|
||||
|
||||
@@ -43,7 +43,7 @@ class Battle
|
||||
if battler.shadowPokemon?
|
||||
if battler.inHyperMode?
|
||||
battler.pokemon.hyper_mode = false
|
||||
battler.pokemon.adjustHeart(-300)
|
||||
battler.pokemon.change_heart_gauge("call")
|
||||
pbDisplay(_INTL("{1} came to its senses from the Trainer's call!",battler.pbThis))
|
||||
else
|
||||
pbDisplay(_INTL("But nothing happened!"))
|
||||
|
||||
@@ -574,7 +574,6 @@ class Battle
|
||||
if b.inHyperMode?
|
||||
if pbRandom(100)<10
|
||||
b.pokemon.hyper_mode = false
|
||||
b.pokemon.adjustHeart(-50)
|
||||
pbDisplay(_INTL("{1} came to its senses!",b.pbThis))
|
||||
else
|
||||
pbDisplay(_INTL("{1} is in Hyper Mode!",b.pbThis))
|
||||
|
||||
@@ -34,7 +34,7 @@ class Battle::Move::Confusion < Battle::Move
|
||||
@pp = -1
|
||||
@target = 0
|
||||
@priority = 0
|
||||
@flags = ""
|
||||
@flags = []
|
||||
@addlEffect = 0
|
||||
@calcType = nil
|
||||
@powerBoost = false
|
||||
@@ -63,7 +63,7 @@ class Battle::Move::Struggle < Battle::Move
|
||||
@pp = -1
|
||||
@target = 0
|
||||
@priority = 0
|
||||
@flags = ""
|
||||
@flags = ["Contact", "CanProtect"]
|
||||
@addlEffect = 0
|
||||
@calcType = nil
|
||||
@powerBoost = false
|
||||
|
||||
@@ -187,9 +187,7 @@ class Battle::Battler
|
||||
|
||||
def pbInitPokemon(*arg)
|
||||
if self.pokemonIndex>0 && inHyperMode?
|
||||
# Called out of Hyper Mode
|
||||
self.pokemon.hyper_mode = false
|
||||
self.pokemon.adjustHeart(-50)
|
||||
end
|
||||
__shadow__pbInitPokemon(*arg)
|
||||
# Called into battle
|
||||
@@ -198,7 +196,7 @@ class Battle::Battler
|
||||
self.type1 = :SHADOW
|
||||
self.type2 = :SHADOW
|
||||
end
|
||||
self.pokemon.adjustHeart(-30) if pbOwnedByPlayer?
|
||||
self.pokemon.change_heart_gauge("battle") if pbOwnedByPlayer?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -216,7 +214,7 @@ class Battle::Battler
|
||||
def pbHyperMode
|
||||
return if fainted? || !shadowPokemon? || inHyperMode? || !pbOwnedByPlayer?
|
||||
p = self.pokemon
|
||||
if @battle.pbRandom(p.heart_gauge) <= Pokemon::HEART_GAUGE_SIZE / 4
|
||||
if @battle.pbRandom(p.heart_gauge) <= p.max_gauge_size / 4
|
||||
p.hyper_mode = true
|
||||
@battle.pbDisplay(_INTL("{1}'s emotions rose to a fever pitch!\nIt entered Hyper Mode!",self.pbThis))
|
||||
end
|
||||
@@ -234,39 +232,37 @@ end
|
||||
#===============================================================================
|
||||
# Shadow item effects.
|
||||
#===============================================================================
|
||||
def pbRaiseHappinessAndReduceHeart(pkmn, scene, heart_amount)
|
||||
def pbRaiseHappinessAndReduceHeart(pkmn, scene, multiplier)
|
||||
if !pkmn.shadowPokemon? || (pkmn.happiness == 255 && pkmn.heart_gauge == 0)
|
||||
scene.pbDisplay(_INTL("It won't have any effect."))
|
||||
return false
|
||||
end
|
||||
if pkmn.happiness == 255
|
||||
stage = pkmn.heart_gauge
|
||||
pkmn.adjustHeart(-heart_amount)
|
||||
scene.pbDisplay(_INTL("{1} adores you!\nThe door to its heart opened a little.", pkmn.name))
|
||||
pkmn.check_ready_to_purify if pkmn.heart_gauge != stage
|
||||
elsif pkmn.heart_gauge == 0
|
||||
pkmn.changeHappiness("vitamin")
|
||||
old_gauge = pkmn.heart_gauge
|
||||
old_happiness = pkmn.happiness
|
||||
pkmn.changeHappiness("vitamin")
|
||||
pkmn.change_heart_gauge("scent", multiplier)
|
||||
if pkmn.heart_gauge == old_gauge
|
||||
scene.pbDisplay(_INTL("{1} turned friendly.", pkmn.name))
|
||||
elsif pkmn.happiness == old_happiness
|
||||
scene.pbDisplay(_INTL("{1} adores you!\nThe door to its heart opened a little.", pkmn.name))
|
||||
pkmn.check_ready_to_purify
|
||||
else
|
||||
stage = pkmn.heart_gauge
|
||||
pkmn.changeHappiness("vitamin")
|
||||
pkmn.adjustHeart(-heart_amount)
|
||||
scene.pbDisplay(_INTL("{1} turned friendly.\nThe door to its heart opened a little.", pkmn.name))
|
||||
pkmn.check_ready_to_purify if pkmn.heart_gauge != stage
|
||||
pkmn.check_ready_to_purify
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
ItemHandlers::UseOnPokemon.add(:JOYSCENT,proc { |item,pokemon,scene|
|
||||
pbRaiseHappinessAndReduceHeart(pokemon,scene,500)
|
||||
pbRaiseHappinessAndReduceHeart(pokemon, scene, 1)
|
||||
})
|
||||
|
||||
ItemHandlers::UseOnPokemon.add(:EXCITESCENT,proc { |item,pokemon,scene|
|
||||
pbRaiseHappinessAndReduceHeart(pokemon,scene,1000)
|
||||
pbRaiseHappinessAndReduceHeart(pokemon, scene, 2)
|
||||
})
|
||||
|
||||
ItemHandlers::UseOnPokemon.add(:VIVIDSCENT,proc { |item,pokemon,scene|
|
||||
pbRaiseHappinessAndReduceHeart(pokemon,scene,2000)
|
||||
pbRaiseHappinessAndReduceHeart(pokemon, scene, 3)
|
||||
})
|
||||
|
||||
ItemHandlers::UseOnPokemon.add(:TIMEFLUTE,proc { |item,pokemon,scene|
|
||||
@@ -291,21 +287,21 @@ ItemHandlers::CanUseInBattle.copy(:JOYSCENT,:EXCITESCENT,:VIVIDSCENT)
|
||||
|
||||
ItemHandlers::BattleUseOnBattler.add(:JOYSCENT,proc { |item,battler,scene|
|
||||
battler.pokemon.hyper_mode = false
|
||||
battler.pokemon.adjustHeart(-100)
|
||||
battler.pokemon.change_heart_gauge("scent", 1)
|
||||
scene.pbDisplay(_INTL("{1} came to its senses from the {2}!",battler.pbThis,GameData::Item.get(item).name))
|
||||
next true
|
||||
})
|
||||
|
||||
ItemHandlers::BattleUseOnBattler.add(:EXCITESCENT,proc { |item,battler,scene|
|
||||
battler.pokemon.hyper_mode = false
|
||||
battler.pokemon.adjustHeart(-200)
|
||||
battler.pokemon.change_heart_gauge("scent", 2)
|
||||
scene.pbDisplay(_INTL("{1} came to its senses from the {2}!",battler.pbThis,GameData::Item.get(item).name))
|
||||
next true
|
||||
})
|
||||
|
||||
ItemHandlers::BattleUseOnBattler.add(:VIVIDSCENT,proc { |item,battler,scene|
|
||||
battler.pokemon.hyper_mode = false
|
||||
battler.pokemon.adjustHeart(-300)
|
||||
battler.pokemon.change_heart_gauge("scent", 3)
|
||||
scene.pbDisplay(_INTL("{1} came to its senses from the {2}!",battler.pbThis,GameData::Item.get(item).name))
|
||||
next true
|
||||
})
|
||||
@@ -416,25 +412,23 @@ Events.onEndBattle += proc { |_sender,_e|
|
||||
}
|
||||
|
||||
Events.onStepTaken += proc {
|
||||
for pkmn in $player.able_party
|
||||
$player.able_party.each do |pkmn|
|
||||
next if pkmn.heart_gauge == 0
|
||||
stage = pkmn.heartStage
|
||||
pkmn.adjustHeart(-1)
|
||||
case pkmn.heartStage
|
||||
when 0
|
||||
pkmn.check_ready_to_purify
|
||||
when stage
|
||||
else
|
||||
pkmn.update_shadow_moves
|
||||
pkmn.heart_gauge_step_counter = 0 if !pkmn.heart_gauge_step_counter
|
||||
pkmn.heart_gauge_step_counter += 1
|
||||
if pkmn.heart_gauge_step_counter >= 256
|
||||
old_stage = pkmn.heartStage
|
||||
pkmn.change_heart_gauge("walking")
|
||||
new_stage = pkmn.heartStage
|
||||
if new_stage == 0
|
||||
pkmn.check_ready_to_purify
|
||||
elsif new_stage != old_stage
|
||||
pkmn.update_shadow_moves
|
||||
end
|
||||
pkmn.heart_gauge_step_counter = 0
|
||||
end
|
||||
end
|
||||
if ($PokemonGlobal.purifyChamber rescue nil)
|
||||
$PokemonGlobal.purifyChamber.update
|
||||
end
|
||||
$PokemonGlobal.day_care.slots.each do |slot|
|
||||
next if !slot.filled? || !slot.pokemon.shadowPokemon?
|
||||
old_stage = slot.pokemon.heartStage
|
||||
slot.pokemon.adjustHeart(-1)
|
||||
slot.pokemon.update_shadow_moves if slot.pokemon.heartStage != old_stage
|
||||
end
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ class Pokemon
|
||||
attr_accessor :saved_exp
|
||||
attr_accessor :saved_ev
|
||||
attr_accessor :shadow_moves
|
||||
HEART_GAUGE_SIZE = 3840
|
||||
attr_accessor :heart_gauge_step_counter
|
||||
|
||||
alias :__shadow_expeq :exp=
|
||||
def exp=(value)
|
||||
@@ -29,15 +29,74 @@ class Pokemon
|
||||
return @heart_gauge || 0
|
||||
end
|
||||
|
||||
def shadow_data
|
||||
ret = GameData::ShadowPokemon.try_get(species_data.id)
|
||||
ret = GameData::ShadowPokemon.try_get(@species) if !ret
|
||||
return ret
|
||||
end
|
||||
|
||||
def max_gauge_size
|
||||
data = shadow_data
|
||||
return (data) ? data.gauge_size : GameData::ShadowPokemon::HEART_GAUGE_SIZE
|
||||
end
|
||||
|
||||
def adjustHeart(value)
|
||||
return if !shadowPokemon?
|
||||
@heart_gauge = (self.heart_gauge + value).clamp(0, HEART_GAUGE_SIZE)
|
||||
@heart_gauge = (self.heart_gauge + value).clamp(0, max_gauge_size)
|
||||
end
|
||||
|
||||
def change_heart_gauge(method, multiplier = 1)
|
||||
return if !shadowPokemon?
|
||||
heart_amounts = {
|
||||
# [sending into battle, call to, walking 256 steps, using scent]
|
||||
:HARDY => [110, 300, 100, 90],
|
||||
:LONELY => [ 70, 330, 100, 130],
|
||||
:BRAVE => [130, 270, 90, 80],
|
||||
:ADAMANT => [110, 270, 110, 80],
|
||||
:NAUGHTY => [120, 270, 110, 70],
|
||||
:BOLD => [110, 270, 90, 100],
|
||||
:DOCILE => [100, 360, 80, 120],
|
||||
:RELAXED => [ 90, 270, 110, 100],
|
||||
:IMPISH => [120, 300, 100, 80],
|
||||
:LAX => [100, 270, 90, 110],
|
||||
:TIMID => [ 70, 330, 110, 120],
|
||||
:HASTY => [130, 300, 70, 100],
|
||||
:SERIOUS => [100, 330, 110, 90],
|
||||
:JOLLY => [120, 300, 90, 90],
|
||||
:NAIVE => [100, 300, 120, 80],
|
||||
:MODEST => [ 70, 300, 120, 110],
|
||||
:MILD => [ 80, 270, 100, 120],
|
||||
:QUIET => [100, 300, 100, 100],
|
||||
:BASHFUL => [ 80, 300, 90, 130],
|
||||
:RASH => [ 90, 300, 90, 120],
|
||||
:CALM => [ 80, 300, 110, 110],
|
||||
:GENTLE => [ 70, 300, 130, 100],
|
||||
:SASSY => [130, 240, 100, 70],
|
||||
:CAREFUL => [ 90, 300, 100, 110],
|
||||
:QUIRKY => [130, 270, 80, 90]
|
||||
}
|
||||
amt = 100
|
||||
case method
|
||||
when "battle"
|
||||
amt = (heart_amounts[@nature]) ? heart_amounts[@nature][0] : 100
|
||||
when "call"
|
||||
amt = (heart_amounts[@nature]) ? heart_amounts[@nature][1] : 300
|
||||
when "walking"
|
||||
amt = (heart_amounts[@nature]) ? heart_amounts[@nature][2] : 100
|
||||
when "scent"
|
||||
amt = (heart_amounts[@nature]) ? heart_amounts[@nature][3] : 100
|
||||
amt *= multiplier
|
||||
else
|
||||
raise _INTL("Unknown heart gauge-changing method: {1}", method.to_s)
|
||||
end
|
||||
adjustHeart(-amt)
|
||||
end
|
||||
|
||||
def heartStage
|
||||
return 0 if !shadowPokemon?
|
||||
stage_size = HEART_GAUGE_SIZE / 5.0
|
||||
return ([self.heart_gauge, HEART_GAUGE_SIZE].min / stage_size).ceil
|
||||
max_size = max_gauge_size
|
||||
stage_size = max_size / 5.0
|
||||
return ([self.heart_gauge, max_size].min / stage_size).ceil
|
||||
end
|
||||
|
||||
def shadowPokemon?
|
||||
@@ -48,36 +107,42 @@ class Pokemon
|
||||
return (self.heart_gauge == 0 || @hp == 0) ? false : @hyper_mode
|
||||
end
|
||||
|
||||
alias __shadow__changeHappiness changeHappiness
|
||||
def changeHappiness(method)
|
||||
return if shadowPokemon? && heartStage >= 4
|
||||
__shadow__changeHappiness(method)
|
||||
end
|
||||
|
||||
def makeShadow
|
||||
@shadow = true
|
||||
@heart_gauge = HEART_GAUGE_SIZE
|
||||
@hyper_mode = false
|
||||
@saved_exp = 0
|
||||
@saved_ev = {}
|
||||
GameData::Stat.each_main { |s| @saved_ev[s.id] = 0 }
|
||||
@heart_gauge = max_gauge_size
|
||||
@heart_gauge_step_counter = 0
|
||||
@shadow_moves = []
|
||||
# Retrieve Shadow moveset for this Pokémon
|
||||
shadow_moveset = pbLoadShadowMovesets[species_data.id]
|
||||
shadow_moveset = pbLoadShadowMovesets[@species] if !shadow_moveset || shadow_moveset.length == 0
|
||||
data = shadow_data
|
||||
# Record this Pokémon's Shadow moves
|
||||
if shadow_moveset && shadow_moveset.length > 0
|
||||
for i in 0...[shadow_moveset.length, MAX_MOVES].min
|
||||
@shadow_moves[i] = shadow_moveset[i]
|
||||
if data
|
||||
data.moves.each do |m|
|
||||
@shadow_moves.push(m.to_sym) if GameData::Move.exists?(m.to_sym)
|
||||
break if @shadow_moves.length >= MAX_MOVES
|
||||
end
|
||||
elsif GameData::Move.exists?(:SHADOWRUSH)
|
||||
# No Shadow moveset defined; just use Shadow Rush
|
||||
@shadow_moves[0] = :SHADOWRUSH
|
||||
else
|
||||
raise _INTL("Expected Shadow moves or Shadow Rush to be defined, but they weren't.")
|
||||
end
|
||||
if @shadow_moves.empty? && GameData::Move.exists?(:SHADOWRUSH)
|
||||
@shadow_moves.push(:SHADOWRUSH)
|
||||
end
|
||||
# Record this Pokémon's original moves
|
||||
@moves.each_with_index { |m, i| @shadow_moves[MAX_MOVES + i] = m.id }
|
||||
# Update moves
|
||||
update_shadow_moves
|
||||
if !@shadow_moves.empty?
|
||||
@moves.each_with_index { |m, i| @shadow_moves[MAX_MOVES + i] = m.id }
|
||||
update_shadow_moves
|
||||
end
|
||||
end
|
||||
|
||||
def update_shadow_moves(relearn_all_moves = false)
|
||||
return if !@shadow_moves
|
||||
return if !@shadow_moves || @shadow_moves.empty?
|
||||
# Not a Shadow Pokémon (any more); relearn all its original moves
|
||||
if !shadowPokemon?
|
||||
if @shadow_moves.length > MAX_MOVES
|
||||
|
||||
@@ -375,7 +375,7 @@ class PokemonSummary_Scene
|
||||
dexNumShadow = (@pokemon.shiny?) ? Color.new(224,152,144) : Color.new(176,176,176)
|
||||
# If a Shadow Pokémon, draw the heart gauge area and bar
|
||||
if @pokemon.shadowPokemon?
|
||||
shadowfract = @pokemon.heart_gauge.to_f / Pokemon::HEART_GAUGE_SIZE
|
||||
shadowfract = @pokemon.heart_gauge.to_f / @pokemon.max_gauge_size
|
||||
imagepos = [
|
||||
["Graphics/Pictures/Summary/overlay_shadow",224,240],
|
||||
["Graphics/Pictures/Summary/overlay_shadowbar",242,280,0,0,(shadowfract*248).floor,-1]
|
||||
@@ -632,7 +632,7 @@ class PokemonSummary_Scene
|
||||
# Determine which stats are boosted and lowered by the Pokémon's nature
|
||||
statshadows = {}
|
||||
GameData::Stat.each_main { |s| statshadows[s.id] = shadow }
|
||||
if !@pokemon.shadowPokemon? || @pokemon.heartStage > 3
|
||||
if !@pokemon.shadowPokemon? || @pokemon.heartStage <= 3
|
||||
@pokemon.nature_for_stats.stat_changes.each do |change|
|
||||
statshadows[change[0]] = Color.new(136,96,72) if change[1] > 0
|
||||
statshadows[change[0]] = Color.new(64,120,152) if change[1] < 0
|
||||
|
||||
@@ -666,8 +666,9 @@ class Window_PurifyChamberSets < Window_DrawableCommand
|
||||
end
|
||||
if @chamber.getShadow(index)
|
||||
pbDrawGauge(self.contents, Rect.new(rect.x+16,rect.y+18,48,8),
|
||||
Color.new(192,0,256), @chamber.getShadow(index).heart_gauge,
|
||||
Pokemon::HEART_GAUGE_SIZE)
|
||||
Color.new(192,0,256),
|
||||
@chamber.getShadow(index).heart_gauge,
|
||||
@chamber.getShadow(index).max_gauge_size)
|
||||
end
|
||||
pbDrawTextPositions(self.contents,textpos)
|
||||
end
|
||||
@@ -957,7 +958,7 @@ class PurifyChamberSetView < SpriteWrapper
|
||||
Color.new(248,248,248),Color.new(128,128,128)])
|
||||
# draw heart gauge
|
||||
pbDrawGauge(@info.bitmap, Rect.new(@info.bitmap.width*3/4,8,@info.bitmap.width*1/4,8),
|
||||
Color.new(192,0,256), pkmn.heart_gauge, Pokemon::HEART_GAUGE_SIZE)
|
||||
Color.new(192,0,256), pkmn.heart_gauge, pkmn.max_gauge_size)
|
||||
# draw flow gauge
|
||||
pbDrawGauge(@info.bitmap,Rect.new(@info.bitmap.width*3/4,24+8,@info.bitmap.width*1/4,8),
|
||||
Color.new(0,0,248),@chamber.chamberFlow(@set),6)
|
||||
|
||||
@@ -1144,7 +1144,7 @@ DebugMenuCommands.register("createpbs", {
|
||||
"pokemon_metrics.txt",
|
||||
"regional_dexes.txt",
|
||||
"ribbons.txt",
|
||||
"shadow_movesets.txt",
|
||||
"shadow_pokemon.txt",
|
||||
"town_map.txt",
|
||||
"trainer_types.txt",
|
||||
"trainers.txt",
|
||||
@@ -1169,7 +1169,7 @@ DebugMenuCommands.register("createpbs", {
|
||||
when 13 then Compiler.write_pokemon_metrics
|
||||
when 14 then Compiler.write_regional_dexes
|
||||
when 15 then Compiler.write_ribbons
|
||||
when 16 then Compiler.write_shadow_movesets
|
||||
when 16 then Compiler.write_shadow_pokemon
|
||||
when 17 then Compiler.write_town_map
|
||||
when 18 then Compiler.write_trainer_types
|
||||
when 19 then Compiler.write_trainers
|
||||
|
||||
@@ -1132,10 +1132,10 @@ PokemonDebugMenuCommands.register("shadowpkmn", {
|
||||
if pkmn.shadowPokemon?
|
||||
oldheart = pkmn.heart_gauge
|
||||
params = ChooseNumberParams.new
|
||||
params.setRange(0, Pokemon::HEART_GAUGE_SIZE)
|
||||
params.setRange(0, pkmn.max_gauge_size)
|
||||
params.setDefaultValue(pkmn.heart_gauge)
|
||||
val = pbMessageChooseNumber(
|
||||
_INTL("Set the heart gauge (max. {1}).", Pokemon::HEART_GAUGE_SIZE),
|
||||
_INTL("Set the heart gauge (max. {1}).", pkmn.max_gauge_size),
|
||||
params) { screen.pbUpdate }
|
||||
if val != oldheart
|
||||
pkmn.adjustHeart(val - oldheart)
|
||||
|
||||
@@ -729,7 +729,7 @@ module Compiler
|
||||
compile_pokemon # Depends on Move, Item, Type, Ability
|
||||
compile_pokemon_forms # Depends on Species, Move, Item, Type, Ability
|
||||
compile_pokemon_metrics # Depends on Species
|
||||
compile_shadow_movesets # Depends on Species, Move
|
||||
compile_shadow_pokemon # Depends on Species
|
||||
compile_regional_dexes # Depends on Species
|
||||
compile_ribbons # No dependencies
|
||||
compile_encounters # Depends on Species
|
||||
@@ -768,7 +768,7 @@ module Compiler
|
||||
"player_metadata.dat",
|
||||
"regional_dexes.dat",
|
||||
"ribbons.dat",
|
||||
"shadow_movesets.dat",
|
||||
"shadow_pokemon.dat",
|
||||
"species.dat",
|
||||
"species_metrics.dat",
|
||||
"town_map.dat",
|
||||
@@ -793,7 +793,7 @@ module Compiler
|
||||
"pokemon_metrics.txt",
|
||||
"regional_dexes.txt",
|
||||
"ribbons.txt",
|
||||
"shadow_movesets.txt",
|
||||
"shadow_pokemon.txt",
|
||||
"town_map.txt",
|
||||
"trainer_types.txt",
|
||||
"trainers.txt",
|
||||
|
||||
@@ -368,8 +368,8 @@ module Compiler
|
||||
flags.push("CanMirrorMove") if line[12][/e/]
|
||||
flags.push("ThawsUser") if line[12][/g/]
|
||||
flags.push("HighCriticalHitRate") if line[12][/h/]
|
||||
flags.push("Bite") if line[12][/i/]
|
||||
flags.push("Punch") if line[12][/j/]
|
||||
flags.push("Biting") if line[12][/i/]
|
||||
flags.push("Punching") if line[12][/j/]
|
||||
flags.push("Sound") if line[12][/k/]
|
||||
flags.push("Powder") if line[12][/l/]
|
||||
flags.push("Pulse") if line[12][/m/]
|
||||
@@ -969,33 +969,68 @@ module Compiler
|
||||
end
|
||||
|
||||
#=============================================================================
|
||||
# Compile Shadow movesets
|
||||
# Compile Shadow Pokémon data
|
||||
#=============================================================================
|
||||
def compile_shadow_movesets(path = "PBS/shadow_movesets.txt")
|
||||
def compile_shadow_pokemon(path = "PBS/shadow_pokemon.txt")
|
||||
compile_pbs_file_message_start(path)
|
||||
sections = {}
|
||||
if safeExists?(path)
|
||||
idx = 0
|
||||
pbCompilerEachCommentedLine(path) { |line, _line_no|
|
||||
if line[/^\s*(\w+)\s*=\s*(.*)$/]
|
||||
echo "." if idx % 50 == 0
|
||||
idx += 1
|
||||
Graphics.update if idx % 250 == 0
|
||||
GameData::ShadowPokemon::DATA.clear
|
||||
schema = GameData::ShadowPokemon::SCHEMA
|
||||
shadow_hash = nil
|
||||
old_format = nil
|
||||
# Read each line of shadow_pokemon.txt at a time and compile it into a
|
||||
# Shadow Pokémon's data
|
||||
idx = 0
|
||||
pbCompilerEachPreppedLine(path) { |line, line_no|
|
||||
echo "." if idx % 250 == 0
|
||||
idx += 1
|
||||
if line[/^\s*\[\s*(.+)\s*\]\s*$/] # New section [species_id]
|
||||
old_format = false if old_format.nil?
|
||||
if old_format
|
||||
raise _INTL("Can't mix old and new formats.\r\n{1}", FileLineData.linereport)
|
||||
end
|
||||
# Add previous Shadow Pokémon's data to records
|
||||
GameData::ShadowPokemon.register(shadow_hash) if shadow_hash
|
||||
# Parse species ID
|
||||
species_id = $~[1].to_sym
|
||||
if GameData::ShadowPokemon.exists?(species_id)
|
||||
raise _INTL("Shadow Pokémon data for species '{1}' is defined twice.\r\n{2}", species_id, FileLineData.linereport)
|
||||
end
|
||||
# Construct Shadow Pokémon hash
|
||||
shadow_hash = {
|
||||
:id => species_id
|
||||
}
|
||||
elsif line[/^\s*(\w+)\s*=\s*(.*)\s*$/] # XXX=YYY lines
|
||||
old_format = true if old_format.nil?
|
||||
if old_format
|
||||
key = $1
|
||||
value = $2
|
||||
value = value.split(",")
|
||||
species = parseSpecies(key)
|
||||
moves = []
|
||||
for i in 0...[Pokemon::MAX_MOVES, value.length].min
|
||||
move = parseMove(value[i], true)
|
||||
moves.push(move) if move
|
||||
end
|
||||
moves.compact!
|
||||
sections[species] = moves if moves.length > 0
|
||||
value.each { |val| val.strip! }
|
||||
value.delete_if { |val| nil_or_empty?(val) }
|
||||
# Construct Shadow Pokémon hash
|
||||
shadow_hash = {
|
||||
:id => species,
|
||||
:moves => value
|
||||
}
|
||||
# Add Shadow Pokémons data to records
|
||||
GameData::ShadowPokemon.register(shadow_hash)
|
||||
shadow_hash = nil
|
||||
else
|
||||
# Parse property and value
|
||||
property_name = $~[1]
|
||||
line_schema = schema[property_name]
|
||||
next if !line_schema
|
||||
property_value = pbGetCsvRecord($~[2], line_no, line_schema)
|
||||
# Record XXX=YYY setting
|
||||
shadow_hash[line_schema[0]] = property_value
|
||||
end
|
||||
}
|
||||
end
|
||||
save_data(sections, "Data/shadow_movesets.dat")
|
||||
end
|
||||
}
|
||||
# Add last item's data to records
|
||||
GameData::ShadowPokemon.register(shadow_hash) if shadow_hash
|
||||
# Save all data
|
||||
GameData::ShadowPokemon.save
|
||||
process_pbs_file_message_end
|
||||
end
|
||||
|
||||
|
||||
@@ -513,21 +513,21 @@ module Compiler
|
||||
end
|
||||
|
||||
#=============================================================================
|
||||
# Save Shadow movesets to PBS file
|
||||
# Save Shadow Pokémon data to PBS file
|
||||
#=============================================================================
|
||||
def write_shadow_movesets(path = "PBS/shadow_movesets.txt")
|
||||
def write_shadow_pokemon(path = "PBS/shadow_pokemon.txt")
|
||||
write_pbs_file_message_start(path)
|
||||
shadow_movesets = pbLoadShadowMovesets
|
||||
File.open(path, "wb") { |f|
|
||||
idx = 0
|
||||
add_PBS_header_to_file(f)
|
||||
f.write("\#-------------------------------\r\n")
|
||||
GameData::Species.each do |species_data|
|
||||
GameData::ShadowPokemon.each do |shadow|
|
||||
echo "." if idx % 150 == 0
|
||||
idx += 1
|
||||
moveset = shadow_movesets[species_data.id]
|
||||
next if !moveset || moveset.length == 0
|
||||
f.write(sprintf("%s = %s\r\n", species_data.id, moveset.join(",")))
|
||||
f.write("\#-------------------------------\r\n")
|
||||
f.write(sprintf("[%s]\r\n", shadow.id))
|
||||
f.write(sprintf("GaugeSize = %d\r\n", shadow.gauge_size))
|
||||
f.write(sprintf("Moves = %s\r\n", shadow.moves.join(","))) if shadow.moves.length > 0
|
||||
f.write(sprintf("Flags = %s\r\n", shadow.flags.join(","))) if shadow.flags.length > 0
|
||||
end
|
||||
}
|
||||
process_pbs_file_message_end
|
||||
@@ -901,7 +901,7 @@ module Compiler
|
||||
write_pokemon
|
||||
write_pokemon_forms
|
||||
write_pokemon_metrics
|
||||
write_shadow_movesets
|
||||
write_shadow_pokemon
|
||||
write_regional_dexes
|
||||
write_ribbons
|
||||
write_encounters
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
# See the documentation on the wiki to learn how to edit this file.
|
||||
#-------------------------------
|
||||
BUTTERFREE = SHADOWRUSH,SHADOWMIST
|
||||
BEEDRILL = SHADOWBLITZ,SHADOWHOLD
|
||||
PIDGEOTTO = SHADOWBLITZ,SHADOWPANIC
|
||||
RATICATE = SHADOWRUSH,SHADOWDOWN
|
||||
SPEAROW = SHADOWBLITZ,SHADOWPANIC
|
||||
ARBOK = SHADOWRUSH,SHADOWHALF
|
||||
VULPIX = SHADOWHOLD,SHADOWWAVE
|
||||
PARAS = SHADOWBLITZ,SHADOWSHED
|
||||
VENOMOTH = SHADOWRUSH,SHADOWMIST
|
||||
DUGTRIO = SHADOWBREAK,SHADOWSHED,SHADOWSKY
|
||||
MEOWTH = SHADOWRUSH,SHADOWHOLD
|
||||
GOLDUCK = SHADOWRAVE,SHADOWMIST
|
||||
PRIMEAPE = SHADOWSTORM,SHADOWRUSH
|
||||
GROWLITHE = SHADOWBLITZ,SHADOWWAVE
|
||||
POLIWRATH = SHADOWSTORM,SHADOWRUSH,SHADOWSKY
|
||||
WEEPINBELL = SHADOWRAVE,SHADOWHOLD
|
||||
RAPIDASH = SHADOWRAVE,SHADOWSKY,SHADOWDOWN
|
||||
MAGNETON = SHADOWHOLD,SHADOWRAVE,SHADOWSKY
|
||||
FARFETCHD = SHADOWBREAK,SHADOWSKY,SHADOWPANIC
|
||||
DODRIO = SHADOWBLITZ,SHADOWSHED
|
||||
SEEL = SHADOWWAVE,SHADOWMIST
|
||||
GRIMER = SHADOWBLITZ,SHADOWHOLD
|
||||
SHELLDER = SHADOWBLITZ,SHADOWSHED
|
||||
HYPNO = SHADOWSTORM,SHADOWDOWN
|
||||
VOLTORB = SHADOWRUSH,SHADOWPANIC
|
||||
EXEGGUTOR = SHADOWSTORM,SHADOWSHED,SHADOWHOLD,SHADOWEND
|
||||
MAROWAK = SHADOWEND,SHADOWPANIC
|
||||
HITMONLEE = SHADOWRUSH,SHADOWDOWN,SHADOWHALF
|
||||
HITMONCHAN = SHADOWRUSH,SHADOWDOWN
|
||||
LICKITUNG = SHADOWRUSH,SHADOWPANIC
|
||||
RHYDON = SHADOWEND,SHADOWPANIC,SHADOWDOWN,SHADOWHOLD
|
||||
CHANSEY = SHADOWRAVE,SHADOWHOLD
|
||||
TANGELA = SHADOWRAVE,SHADOWHOLD
|
||||
KANGASKHAN = SHADOWRUSH,SHADOWMIST
|
||||
STARMIE = SHADOWSTORM,SHADOWMIST,SHADOWBREAK
|
||||
MRMIME = SHADOWSTORM,SHADOWSHED
|
||||
SCYTHER = SHADOWRUSH,SHADOWMIST
|
||||
ELECTABUZZ = SHADOWSTORM,SHADOWMIST,SHADOWHALF,SHADOWBREAK
|
||||
MAGMAR = SHADOWRAVE,SHADOWRUSH,SHADOWSHED
|
||||
PINSIR = SHADOWBREAK,SHADOWSHED
|
||||
TAUROS = SHADOWHOLD,SHADOWSHED,SHADOWRUSH,SHADOWSKY
|
||||
LAPRAS = SHADOWSTORM,SHADOWSHED,SHADOWSKY
|
||||
SNORLAX = SHADOWEND,SHADOWSHED
|
||||
ARTICUNO = SHADOWCHILL,SHADOWSHED,SHADOWRUSH,SHADOWSKY
|
||||
ZAPDOS = SHADOWBOLT,SHADOWRUSH,SHADOWSKY,SHADOWSHED
|
||||
MOLTRES = SHADOWFIRE,SHADOWSHED,SHADOWMIST,SHADOWBREAK
|
||||
DRAGONITE = SHADOWDOWN,SHADOWRUSH,SHADOWSHED,SHADOWSTORM
|
||||
LEDYBA = SHADOWBLITZ,SHADOWSHED
|
||||
SPINARAK = SHADOWBLITZ,SHADOWMIST
|
||||
TOGEPI = SHADOWRAVE,SHADOWSHED
|
||||
NATU = SHADOWBLITZ,SHADOWSHED
|
||||
MAREEP = SHADOWBLITZ,SHADOWSHED
|
||||
PINECO = SHADOWBLITZ,SHADOWSHED
|
||||
TEDDIURSA = SHADOWBLITZ,SHADOWMIST
|
||||
MAGCARGO = SHADOWRAVE,SHADOWSHED
|
||||
SWINUB = SHADOWBLITZ,SHADOWWAVE
|
||||
HOUNDOUR = SHADOWBLITZ,SHADOWSHED
|
||||
LUGIA = SHADOWBLAST,SHADOWSHED,SHADOWDOWN,SHADOWSTORM
|
||||
POOCHYENA = SHADOWBLITZ,SHADOWHOLD
|
||||
SEEDOT = SHADOWWAVE,SHADOWHOLD
|
||||
SWELLOW = SHADOWBREAK,SHADOWMIST,SHADOWHALF,SHADOWSKY
|
||||
RALTS = SHADOWWAVE,SHADOWHOLD
|
||||
SHROOMISH = SHADOWBLITZ,SHADOWMIST
|
||||
MAKUHITA = SHADOWBLITZ,SHADOWSHED
|
||||
NOSEPASS = SHADOWWAVE,SHADOWMIST
|
||||
DELCATTY = SHADOWRUSH,SHADOWWAVE
|
||||
SABLEYE = SHADOWBLITZ,SHADOWHOLD
|
||||
MAWILE = SHADOWRUSH,SHADOWWAVE
|
||||
MANECTRIC = SHADOWMIST,SHADOWEND,SHADOWSKY
|
||||
ROSELIA = SHADOWWAVE,SHADOWSHED
|
||||
GULPIN = SHADOWBLITZ,SHADOWHOLD
|
||||
CARVANHA = SHADOWBLITZ,SHADOWHOLD
|
||||
NUMEL = SHADOWBLITZ,SHADOWSHED
|
||||
ALTARIA = SHADOWBREAK,SHADOWMIST,SHADOWRAVE
|
||||
ZANGOOSE = SHADOWRUSH,SHADOWMIST
|
||||
LUNATONE = SHADOWWAVE,SHADOWSKY
|
||||
SOLROCK = SHADOWRAVE,SHADOWSKY,SHADOWPANIC
|
||||
BALTOY = SHADOWBLITZ,SHADOWMIST
|
||||
BANETTE = SHADOWRUSH,SHADOWHOLD
|
||||
DUSKULL = SHADOWHOLD,SHADOWWAVE
|
||||
SNORUNT = SHADOWSHED,SHADOWWAVE
|
||||
SPHEAL = SHADOWWAVE,SHADOWMIST
|
||||
SALAMENCE = SHADOWRUSH,SHADOWHOLD
|
||||
525
PBS/shadow_pokemon.txt
Normal file
525
PBS/shadow_pokemon.txt
Normal file
@@ -0,0 +1,525 @@
|
||||
# See the documentation on the wiki to learn how to edit this file.
|
||||
#-------------------------------
|
||||
[BUTTERFREE]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRUSH,SHADOWMIST
|
||||
#-------------------------------
|
||||
[BEEDRILL]
|
||||
GaugeSize = 4500
|
||||
Moves = SHADOWBLITZ,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[PIDGEOTTO]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWBLITZ,SHADOWPANIC
|
||||
#-------------------------------
|
||||
[RATICATE]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH,SHADOWDOWN
|
||||
#-------------------------------
|
||||
[SPEAROW]
|
||||
GaugeSize = 4500
|
||||
Moves = SHADOWBLITZ,SHADOWPANIC
|
||||
#-------------------------------
|
||||
[ARBOK]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH,SHADOWHALF
|
||||
#-------------------------------
|
||||
[VULPIX]
|
||||
GaugeSize = 2000
|
||||
Moves = SHADOWWAVE,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[PARAS]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[VENOMOTH]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRUSH,SHADOWMIST
|
||||
#-------------------------------
|
||||
[DUGTRIO]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWBREAK,SHADOWSHED,SHADOWSKY
|
||||
#-------------------------------
|
||||
[MEOWTH]
|
||||
GaugeSize = 3500
|
||||
Moves = SHADOWRUSH,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[GOLDUCK]
|
||||
GaugeSize = 6500
|
||||
Moves = SHADOWRAVE,SHADOWMIST
|
||||
#-------------------------------
|
||||
[PRIMEAPE]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH,SHADOWSTORM
|
||||
#-------------------------------
|
||||
[GROWLITHE]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWBLITZ,SHADOWWAVE
|
||||
#-------------------------------
|
||||
[POLIWRATH]
|
||||
GaugeSize = 7500
|
||||
Moves = SHADOWSTORM,SHADOWRUSH,SHADOWSKY
|
||||
#-------------------------------
|
||||
[WEEPINBELL]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRAVE,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[RAPIDASH]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRAVE,SHADOWDOWN,SHADOWSKY
|
||||
#-------------------------------
|
||||
[MAGNETON]
|
||||
GaugeSize = 4500
|
||||
Moves = SHADOWRAVE,SHADOWHOLD,SHADOWSKY
|
||||
#-------------------------------
|
||||
[FARFETCHD]
|
||||
GaugeSize = 5500
|
||||
Moves = SHADOWBREAK,SHADOWSKY,SHADOWPANIC
|
||||
#-------------------------------
|
||||
[DODRIO]
|
||||
GaugeSize = 8000
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[SEEL]
|
||||
GaugeSize = 3500
|
||||
Moves = SHADOWWAVE,SHADOWMIST
|
||||
#-------------------------------
|
||||
[GRIMER]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWBLITZ,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[SHELLDER]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[HYPNO]
|
||||
GaugeSize = 5500
|
||||
Moves = SHADOWSTORM,SHADOWDOWN
|
||||
#-------------------------------
|
||||
[VOLTORB]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWRUSH,SHADOWPANIC
|
||||
#-------------------------------
|
||||
[EXEGGUTOR]
|
||||
GaugeSize = 9000
|
||||
Moves = SHADOWSTORM,SHADOWSHED,SHADOWHOLD,SHADOWEND
|
||||
#-------------------------------
|
||||
[MAROWAK]
|
||||
GaugeSize = 6500
|
||||
Moves = SHADOWEND,SHADOWPANIC
|
||||
#-------------------------------
|
||||
[HITMONLEE]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH,SHADOWDOWN,SHADOWHALF
|
||||
#-------------------------------
|
||||
[HITMONCHAN]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH,SHADOWDOWN
|
||||
#-------------------------------
|
||||
[LICKITUNG]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH,SHADOWPANIC
|
||||
#-------------------------------
|
||||
[RHYDON]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWEND,SHADOWDOWN,SHADOWPANIC,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[CHANSEY]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRAVE,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[TANGELA]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRAVE,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[KANGASKHAN]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH,SHADOWMIST
|
||||
#-------------------------------
|
||||
[STARMIE]
|
||||
GaugeSize = 7500
|
||||
Moves = SHADOWSTORM,SHADOWBREAK,SHADOWMIST
|
||||
#-------------------------------
|
||||
[MRMIME]
|
||||
GaugeSize = 6500
|
||||
Moves = SHADOWSTORM,SHADOWSHED
|
||||
#-------------------------------
|
||||
[SCYTHER]
|
||||
GaugeSize = 8000
|
||||
Moves = SHADOWRUSH,SHADOWMIST
|
||||
#-------------------------------
|
||||
[ELECTABUZZ]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWBREAK,SHADOWMIST,SHADOWHALF,SHADOWSTORM
|
||||
#-------------------------------
|
||||
[MAGMAR]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRAVE,SHADOWRUSH,SHADOWSHED
|
||||
#-------------------------------
|
||||
[PINSIR]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWBREAK,SHADOWSHED
|
||||
#-------------------------------
|
||||
[TAUROS]
|
||||
GaugeSize = 9000
|
||||
Moves = SHADOWRUSH,SHADOWHOLD,SHADOWSHED,SHADOWSKY
|
||||
#-------------------------------
|
||||
[LAPRAS]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWSTORM,SHADOWSHED,SHADOWSKY
|
||||
#-------------------------------
|
||||
[SNORLAX]
|
||||
GaugeSize = 9000
|
||||
Moves = SHADOWEND,SHADOWSHED
|
||||
#-------------------------------
|
||||
[ARTICUNO]
|
||||
GaugeSize = 10000
|
||||
Moves = SHADOWCHILL,SHADOWSHED,SHADOWSKY,SHADOWRUSH
|
||||
#-------------------------------
|
||||
[ZAPDOS]
|
||||
GaugeSize = 10000
|
||||
Moves = SHADOWBOLT,SHADOWSHED,SHADOWSKY,SHADOWRUSH
|
||||
#-------------------------------
|
||||
[MOLTRES]
|
||||
GaugeSize = 10000
|
||||
Moves = SHADOWFIRE,SHADOWSHED,SHADOWHOLD,SHADOWRUSH
|
||||
#-------------------------------
|
||||
[DRAGONITE]
|
||||
GaugeSize = 9000
|
||||
Moves = SHADOWRUSH,SHADOWDOWN,SHADOWSHED,SHADOWSTORM
|
||||
#-------------------------------
|
||||
[BAYLEEF]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[QUILAVA]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[CROCONAW]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[FURRET]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[NOCTOWL]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[LEDYBA]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[LEDIAN]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SPINARAK]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWBLITZ,SHADOWMIST
|
||||
#-------------------------------
|
||||
[ARIADOS]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[TOGEPI]
|
||||
GaugeSize = 4500
|
||||
Moves = SHADOWRAVE,SHADOWSHED
|
||||
#-------------------------------
|
||||
[TOGETIC]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[NATU]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[MAREEP]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[FLAAFFY]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SUDOWOODO]
|
||||
GaugeSize = 10000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SKIPLOOM]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[AIPOM]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SUNFLORA]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[YANMA]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[QUAGSIRE]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[MURKROW]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[MISDREAVUS]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[PINECO]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[FORRETRESS]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[DUNSPARCE]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[GLIGAR]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[GRANBULL]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[QWILFISH]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SCIZOR]
|
||||
GaugeSize = 8000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SHUCKLE]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[HERACROSS]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SNEASEL]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[TEDDIURSA]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWBLITZ,SHADOWMIST
|
||||
#-------------------------------
|
||||
[URSARING]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SLUGMA]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[MAGCARGO]
|
||||
GaugeSize = 5500
|
||||
Moves = SHADOWRAVE,SHADOWSHED
|
||||
#-------------------------------
|
||||
[SWINUB]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWBLITZ,SHADOWWAVE
|
||||
#-------------------------------
|
||||
[PILOSWINE]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[REMORAID]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[DELIBIRD]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[MANTINE]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SKARMORY]
|
||||
GaugeSize = 13000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[HOUNDOUR]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[HOUNDOOM]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[STANTLER]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SMEARGLE]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[HITMONTOP]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[MILTANK]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[RAIKOU]
|
||||
GaugeSize = 13000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[ENTEI]
|
||||
GaugeSize = 13000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SUICUNE]
|
||||
GaugeSize = 13000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[TYRANITAR]
|
||||
GaugeSize = 20000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[LUGIA]
|
||||
GaugeSize = 12000
|
||||
Moves = SHADOWBLAST,SHADOWSHED,SHADOWDOWN,SHADOWSTORM
|
||||
#-------------------------------
|
||||
[POOCHYENA]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWBLITZ,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[SEEDOT]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWWAVE,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[SWELLOW]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWBREAK,SHADOWSKY,SHADOWHALF,SHADOWMIST
|
||||
#-------------------------------
|
||||
[RALTS]
|
||||
GaugeSize = 2200
|
||||
Moves = SHADOWWAVE,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[SHROOMISH]
|
||||
GaugeSize = 1800
|
||||
Moves = SHADOWBLITZ,SHADOWMIST
|
||||
#-------------------------------
|
||||
[MAKUHITA]
|
||||
GaugeSize = 2000
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[NOSEPASS]
|
||||
GaugeSize = 4000
|
||||
Moves = SHADOWWAVE,SHADOWMIST
|
||||
#-------------------------------
|
||||
[DELCATTY]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWRUSH,SHADOWWAVE
|
||||
#-------------------------------
|
||||
[SABLEYE]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWBLITZ,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[MAWILE]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWRUSH,SHADOWWAVE
|
||||
#-------------------------------
|
||||
[MEDITITE]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[MANECTRIC]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWEND,SHADOWMIST,SHADOWSKY
|
||||
#-------------------------------
|
||||
[ROSELIA]
|
||||
GaugeSize = 3000
|
||||
Moves = SHADOWWAVE,SHADOWSHED
|
||||
#-------------------------------
|
||||
[GULPIN]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWBLITZ,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[CARVANHA]
|
||||
GaugeSize = 1700
|
||||
Moves = SHADOWBLITZ,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[NUMEL]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWBLITZ,SHADOWSHED
|
||||
#-------------------------------
|
||||
[VIBRAVA]
|
||||
GaugeSize = 6000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SWABLU]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[ALTARIA]
|
||||
GaugeSize = 6500
|
||||
Moves = SHADOWBREAK,SHADOWMIST,SHADOWRAVE
|
||||
#-------------------------------
|
||||
[ZANGOOSE]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWRUSH,SHADOWMIST
|
||||
#-------------------------------
|
||||
[LUNATONE]
|
||||
GaugeSize = 5000
|
||||
Moves = SHADOWWAVE,SHADOWSHED,SHADOWSKY
|
||||
#-------------------------------
|
||||
[SOLROCK]
|
||||
GaugeSize = 7500
|
||||
Moves = SHADOWRAVE,SHADOWPANIC,SHADOWSKY
|
||||
#-------------------------------
|
||||
[BALTOY]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWBLITZ,SHADOWMIST
|
||||
#-------------------------------
|
||||
[BANETTE]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[DUSKULL]
|
||||
GaugeSize = 2200
|
||||
Moves = SHADOWWAVE,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[TROPIUS]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[ABSOL]
|
||||
GaugeSize = 7000
|
||||
Moves = SHADOWRUSH
|
||||
#-------------------------------
|
||||
[SNORUNT]
|
||||
GaugeSize = 2500
|
||||
Moves = SHADOWWAVE,SHADOWSHED
|
||||
#-------------------------------
|
||||
[SPHEAL]
|
||||
GaugeSize = 1500
|
||||
Moves = SHADOWWAVE,SHADOWMIST
|
||||
#-------------------------------
|
||||
[SALAMENCE]
|
||||
GaugeSize = 9000
|
||||
Moves = SHADOWRUSH,SHADOWHOLD
|
||||
#-------------------------------
|
||||
[METAGROSS]
|
||||
GaugeSize = 15000
|
||||
Moves = SHADOWRUSH
|
||||
Reference in New Issue
Block a user