mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
Tidied up evolution code and added lots more evolution methods
This commit is contained in:
@@ -1,46 +1,68 @@
|
|||||||
module PBEvolution
|
module PBEvolution
|
||||||
|
# NOTE: If you're adding new evolution methods, don't skip any numbers.
|
||||||
|
# Remember to update def self.maxValue just below the constants list.
|
||||||
None = 0
|
None = 0
|
||||||
Happiness = 1
|
Level = 1
|
||||||
HappinessDay = 2
|
LevelMale = 2
|
||||||
HappinessNight = 3
|
LevelFemale = 3
|
||||||
Level = 4
|
LevelDay = 4
|
||||||
Trade = 5
|
LevelNight = 5
|
||||||
TradeItem = 6
|
LevelMorning = 6
|
||||||
Item = 7
|
LevelAfternoon = 7
|
||||||
AttackGreater = 8
|
LevelEvening = 8
|
||||||
AtkDefEqual = 9
|
LevelNoWeather = 9
|
||||||
DefenseGreater = 10
|
LevelSun = 10
|
||||||
Silcoon = 11
|
LevelRain = 11
|
||||||
Cascoon = 12
|
LevelSnow = 12
|
||||||
Ninjask = 13
|
LevelSandstorm = 13
|
||||||
Shedinja = 14
|
LevelCycling = 14
|
||||||
Beauty = 15
|
LevelSurfing = 15
|
||||||
ItemMale = 16
|
LevelDiving = 16
|
||||||
ItemFemale = 17
|
LevelDarkness = 17
|
||||||
DayHoldItem = 18
|
LevelDarkInParty = 18
|
||||||
NightHoldItem = 19
|
AttackGreater = 19
|
||||||
HasMove = 20
|
AtkDefEqual = 20
|
||||||
HasInParty = 21
|
DefenseGreater = 21
|
||||||
LevelMale = 22
|
Silcoon = 22
|
||||||
LevelFemale = 23
|
Cascoon = 23
|
||||||
Location = 24
|
Ninjask = 24
|
||||||
TradeSpecies = 25
|
Shedinja = 25
|
||||||
LevelDay = 26
|
Happiness = 26
|
||||||
LevelNight = 27
|
HappinessMale = 27
|
||||||
LevelDarkInParty = 28
|
HappinessFemale = 28
|
||||||
LevelRain = 29
|
HappinessDay = 29
|
||||||
HappinessMoveType = 30
|
HappinessNight = 30
|
||||||
LevelEvening = 31
|
HappinessMove = 31
|
||||||
|
HappinessMoveType = 32
|
||||||
|
HappinessHoldItem = 33
|
||||||
|
MaxHappiness = 34
|
||||||
|
Beauty = 35
|
||||||
|
HoldItem = 36
|
||||||
|
HoldItemMale = 37
|
||||||
|
HoldItemFemale = 38
|
||||||
|
DayHoldItem = 39
|
||||||
|
NightHoldItem = 40
|
||||||
|
HoldItemHappiness = 41
|
||||||
|
HasMove = 42
|
||||||
|
HasMoveType = 43
|
||||||
|
HasInParty = 44
|
||||||
|
Location = 45
|
||||||
|
Region = 46
|
||||||
|
Item = 47
|
||||||
|
ItemMale = 48
|
||||||
|
ItemFemale = 49
|
||||||
|
ItemDay = 50
|
||||||
|
ItemNight = 51
|
||||||
|
ItemHappiness = 52
|
||||||
|
Trade = 53
|
||||||
|
TradeMale = 54
|
||||||
|
TradeFemale = 55
|
||||||
|
TradeDay = 56
|
||||||
|
TradeNight = 57
|
||||||
|
TradeItem = 58
|
||||||
|
TradeSpecies = 59
|
||||||
|
|
||||||
EVONAMES = ["None",
|
def self.maxValue; return 59; end
|
||||||
"Happiness", "HappinessDay", "HappinessNight", "Level", "Trade",
|
|
||||||
"TradeItem", "Item", "AttackGreater", "AtkDefEqual", "DefenseGreater",
|
|
||||||
"Silcoon", "Cascoon", "Ninjask", "Shedinja", "Beauty",
|
|
||||||
"ItemMale", "ItemFemale", "DayHoldItem", "NightHoldItem", "HasMove",
|
|
||||||
"HasInParty", "LevelMale", "LevelFemale", "Location", "TradeSpecies",
|
|
||||||
"LevelDay", "LevelNight", "LevelDarkInParty", "LevelRain", "HappinessMoveType",
|
|
||||||
"LevelEvening"
|
|
||||||
]
|
|
||||||
|
|
||||||
@@evolution_methods = HandlerHash.new(:PBEvolution)
|
@@evolution_methods = HandlerHash.new(:PBEvolution)
|
||||||
|
|
||||||
@@ -59,7 +81,7 @@ module PBEvolution
|
|||||||
def self.hasFunction?(method, function)
|
def self.hasFunction?(method, function)
|
||||||
method = (method.is_a?(Numeric)) ? method : getConst(PBEvolution, method)
|
method = (method.is_a?(Numeric)) ? method : getConst(PBEvolution, method)
|
||||||
method_hash = @@evolution_methods[method]
|
method_hash = @@evolution_methods[method]
|
||||||
return method_hash && method_hash[function]
|
return method_hash && method_hash.keys.include?(function)
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.getFunction(method, function)
|
def self.getFunction(method, function)
|
||||||
@@ -293,16 +315,36 @@ PBEvolution.register(:LevelNight, {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelMorning, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.level >= parameter && PBDayNight.isMorning?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelAfternoon, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.level >= parameter && PBDayNight.isAfternoon?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:LevelEvening, {
|
PBEvolution.register(:LevelEvening, {
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
next pkmn.level >= parameter && PBDayNight.isEvening?
|
next pkmn.level >= parameter && PBDayNight.isEvening?
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
PBEvolution.register(:LevelDarkInParty, {
|
PBEvolution.register(:LevelNoWeather, {
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
if pkmn.level >= parameter
|
if pkmn.level >= parameter && $game_screen
|
||||||
next $Trainer.pokemonParty.any? { |p| p && p.hasType(:DARK) }
|
next $game_screen.weather_type == PBFieldWeather::None
|
||||||
|
end
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelSun, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
if pkmn.level >= parameter && $game_screen
|
||||||
|
next $game_screen.weather_type == PBFieldWeather::Sun
|
||||||
end
|
end
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -316,6 +358,54 @@ PBEvolution.register(:LevelRain, {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelSnow, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
if pkmn.level >= parameter && $game_screen
|
||||||
|
next [PBFieldWeather::Snow, PBFieldWeather::Blizzard].include?($game_screen.weather_type)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelSandstorm, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
if pkmn.level >= parameter && $game_screen
|
||||||
|
next $game_screen.weather_type == PBFieldWeather::Sandstorm
|
||||||
|
end
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelCycling, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.level >= parameter && $PokemonGlobal && $PokemonGlobal.bicycle
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelSurfing, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.level >= parameter && $PokemonGlobal && $PokemonGlobal.surfing
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelDiving, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.level >= parameter && $PokemonGlobal && $PokemonGlobal.diving
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelDarkness, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.level >= parameter && pbGetMetadata($game_map.map_id, MetadataDarkMap)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:LevelDarkInParty, {
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
if pkmn.level >= parameter
|
||||||
|
next $Trainer.pokemonParty.any? { |p| p && p.hasType(:DARK) }
|
||||||
|
end
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:AttackGreater, { # Hitmonlee
|
PBEvolution.register(:AttackGreater, { # Hitmonlee
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
next pkmn.level >= parameter && pkmn.attack > pkmn.defense
|
next pkmn.level >= parameter && pkmn.attack > pkmn.defense
|
||||||
@@ -353,6 +443,7 @@ PBEvolution.register(:Ninjask, {
|
|||||||
})
|
})
|
||||||
|
|
||||||
PBEvolution.register(:Shedinja, {
|
PBEvolution.register(:Shedinja, {
|
||||||
|
"parameterType" => nil,
|
||||||
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||||
next false if $Trainer.party.length>=6
|
next false if $Trainer.party.length>=6
|
||||||
next false if !$PokemonBag.pbHasItem?(getConst(PBItems,:POKEBALL))
|
next false if !$PokemonBag.pbHasItem?(getConst(PBItems,:POKEBALL))
|
||||||
@@ -363,23 +454,52 @@ PBEvolution.register(:Shedinja, {
|
|||||||
})
|
})
|
||||||
|
|
||||||
PBEvolution.register(:Happiness, {
|
PBEvolution.register(:Happiness, {
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"parameterType" => nil,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
next pkmn.happiness >= 220
|
next pkmn.happiness >= 220
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HappinessMale, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => nil,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.happiness >= 220 && pkmn.male?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HappinessFemale, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => nil,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.happiness >= 220 && pkmn.female?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:HappinessDay, {
|
PBEvolution.register(:HappinessDay, {
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"parameterType" => nil,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
next pkmn.happiness >= 220 && PBDayNight.isDay?
|
next pkmn.happiness >= 220 && PBDayNight.isDay?
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
PBEvolution.register(:HappinessNight, {
|
PBEvolution.register(:HappinessNight, {
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"parameterType" => nil,
|
||||||
next pkmn.happiness >= 220 && PBDayNight.isDay?
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.happiness >= 220 && PBDayNight.isNight?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HappinessMove, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => :PBMoves,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
if pkmn.happiness >= 220
|
||||||
|
next pkmn.moves.any? { |m| m && m.id == parameter }
|
||||||
|
end
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -393,6 +513,27 @@ PBEvolution.register(:HappinessMoveType, {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HappinessHoldItem, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.item == parameter && pkmn.happiness >= 220
|
||||||
|
},
|
||||||
|
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||||
|
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||||
|
pkmn.setItem(0) # Item is now consumed
|
||||||
|
next true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:MaxHappiness, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => nil,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.happiness == 255
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:Beauty, { # Feebas
|
PBEvolution.register(:Beauty, { # Feebas
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
@@ -400,6 +541,45 @@ PBEvolution.register(:Beauty, { # Feebas
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HoldItem, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.item == parameter
|
||||||
|
},
|
||||||
|
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||||
|
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||||
|
pkmn.setItem(0) # Item is now consumed
|
||||||
|
next true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HoldItemMale, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.item == parameter && pkmn.male?
|
||||||
|
},
|
||||||
|
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||||
|
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||||
|
pkmn.setItem(0) # Item is now consumed
|
||||||
|
next true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HoldItemFemale, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.item == parameter && pkmn.female?
|
||||||
|
},
|
||||||
|
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||||
|
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||||
|
pkmn.setItem(0) # Item is now consumed
|
||||||
|
next true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:DayHoldItem, {
|
PBEvolution.register(:DayHoldItem, {
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"parameterType" => :PBItems,
|
"parameterType" => :PBItems,
|
||||||
@@ -426,6 +606,19 @@ PBEvolution.register(:NightHoldItem, {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HoldItemHappiness, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.item == parameter && pkmn.happiness >= 220
|
||||||
|
},
|
||||||
|
"afterEvolution" => proc { |pkmn, new_species, parameter, evo_species|
|
||||||
|
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
|
||||||
|
pkmn.setItem(0) # Item is now consumed
|
||||||
|
next true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:HasMove, {
|
PBEvolution.register(:HasMove, {
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"parameterType" => :PBMoves,
|
"parameterType" => :PBMoves,
|
||||||
@@ -434,6 +627,14 @@ PBEvolution.register(:HasMove, {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:HasMoveType, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"parameterType" => :PBTypes,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
next pkmn.moves.any? { |m| m && m.type == parameter }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:HasInParty, {
|
PBEvolution.register(:HasInParty, {
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"parameterType" => :PBSpecies,
|
"parameterType" => :PBSpecies,
|
||||||
@@ -443,12 +644,20 @@ PBEvolution.register(:HasInParty, {
|
|||||||
})
|
})
|
||||||
|
|
||||||
PBEvolution.register(:Location, {
|
PBEvolution.register(:Location, {
|
||||||
"minimumLevel" => 1, # Needs any level up
|
"minimumLevel" => 1, # Needs any level up
|
||||||
"levelUpCheck" => proc { |pkmn, parameter|
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
next $game_map.map_id == parameter
|
next $game_map.map_id == parameter
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:Region, {
|
||||||
|
"minimumLevel" => 1, # Needs any level up
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter|
|
||||||
|
mapPos = pbGetMetadata($game_map.map_id, MetadataMapPosition)
|
||||||
|
next mapPos && mapPos[0] == parameter
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Evolution methods that trigger when using an item on the Pokémon
|
# Evolution methods that trigger when using an item on the Pokémon
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
@@ -473,15 +682,65 @@ PBEvolution.register(:ItemFemale, {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:ItemDay, {
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"itemCheck" => proc { |pkmn, parameter, item|
|
||||||
|
next item == parameter && PBDayNight.isDay?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:ItemNight, {
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"itemCheck" => proc { |pkmn, parameter, item|
|
||||||
|
next item == parameter && PBDayNight.isNight?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:ItemHappiness, {
|
||||||
|
"parameterType" => :PBItems,
|
||||||
|
"levelUpCheck" => proc { |pkmn, parameter, item|
|
||||||
|
next item == parameter && pkmn.happiness >= 220
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# Evolution methods that trigger when the Pokémon is obtained in a trade
|
# Evolution methods that trigger when the Pokémon is obtained in a trade
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
PBEvolution.register(:Trade, {
|
PBEvolution.register(:Trade, {
|
||||||
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
"parameterType" => nil,
|
||||||
|
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||||
next true
|
next true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:TradeMale, {
|
||||||
|
"parameterType" => nil,
|
||||||
|
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||||
|
next pkmn.male?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:TradeFemale, {
|
||||||
|
"parameterType" => nil,
|
||||||
|
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||||
|
next pkmn.female?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:TradeDay, {
|
||||||
|
"parameterType" => nil,
|
||||||
|
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||||
|
next PBDayNight.isDay?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
PBEvolution.register(:TradeNight, {
|
||||||
|
"parameterType" => nil,
|
||||||
|
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||||
|
next PBDayNight.isNight?
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
PBEvolution.register(:TradeItem, {
|
PBEvolution.register(:TradeItem, {
|
||||||
"parameterType" => :PBItems,
|
"parameterType" => :PBItems,
|
||||||
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
"tradeCheck" => proc { |pkmn, parameter, other_pkmn|
|
||||||
|
|||||||
@@ -811,7 +811,7 @@ def pbPokemonEditor
|
|||||||
[_INTL("BattlerAltitude"),ReadOnlyProperty,_INTL("Affects positioning of the Pokémon in battle. This is edited elsewhere.")],
|
[_INTL("BattlerAltitude"),ReadOnlyProperty,_INTL("Affects positioning of the Pokémon in battle. This is edited elsewhere.")],
|
||||||
[_INTL("BattlerShadowX"),ReadOnlyProperty,_INTL("Affects positioning of the Pokémon in battle. This is edited elsewhere.")],
|
[_INTL("BattlerShadowX"),ReadOnlyProperty,_INTL("Affects positioning of the Pokémon in battle. This is edited elsewhere.")],
|
||||||
[_INTL("BattlerShadowSize"),ReadOnlyProperty,_INTL("Affects positioning of the Pokémon in battle. This is edited elsewhere.")],
|
[_INTL("BattlerShadowSize"),ReadOnlyProperty,_INTL("Affects positioning of the Pokémon in battle. This is edited elsewhere.")],
|
||||||
[_INTL("Evolutions"),EvolutionsProperty.new(PBEvolution::EVONAMES),_INTL("Evolution paths of this species.")],
|
[_INTL("Evolutions"),EvolutionsProperty.new,_INTL("Evolution paths of this species.")],
|
||||||
[_INTL("Incense"),ItemProperty,_INTL("Item needed to be held by a parent to produce an egg of this species.")],
|
[_INTL("Incense"),ItemProperty,_INTL("Item needed to be held by a parent to produce an egg of this species.")],
|
||||||
]
|
]
|
||||||
pbListScreenBlock(_INTL("Pokémon species"),SpeciesLister.new(selection,false)) { |button,index|
|
pbListScreenBlock(_INTL("Pokémon species"),SpeciesLister.new(selection,false)) { |button,index|
|
||||||
|
|||||||
@@ -1182,8 +1182,11 @@ end
|
|||||||
|
|
||||||
|
|
||||||
class EvolutionsProperty
|
class EvolutionsProperty
|
||||||
def initialize(methods)
|
def initialize
|
||||||
@methods = methods
|
@methods = []
|
||||||
|
(PBEvolution.maxValue + 1).times do |i|
|
||||||
|
@methods[i] = getConstantName(PBEvolution, i)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set(_settingname,oldsetting)
|
def set(_settingname,oldsetting)
|
||||||
@@ -1207,12 +1210,18 @@ class EvolutionsProperty
|
|||||||
else
|
else
|
||||||
level = realcmds[i][1]
|
level = realcmds[i][1]
|
||||||
param_type = PBEvolution.getFunction(realcmds[i][0], "parameterType")
|
param_type = PBEvolution.getFunction(realcmds[i][0], "parameterType")
|
||||||
if param_type
|
has_param = !PBEvolution.hasFunction?(realcmds[i][0], "parameterType") || param_type != nil
|
||||||
level = (Object.const_get(param_type).getName(level) rescue getConstantName(param_type, level) rescue level)
|
if has_param
|
||||||
|
if param_type
|
||||||
|
level = (Object.const_get(param_type).getName(level) rescue getConstantName(param_type, level) rescue level)
|
||||||
|
end
|
||||||
|
level = "???" if !level
|
||||||
|
commands.push(_INTL("{1}: {2}, {3}",
|
||||||
|
PBSpecies.getName(realcmds[i][2]),@methods[realcmds[i][0]],level.to_s))
|
||||||
|
else
|
||||||
|
commands.push(_INTL("{1}: {2}",
|
||||||
|
PBSpecies.getName(realcmds[i][2]),@methods[realcmds[i][0]]))
|
||||||
end
|
end
|
||||||
level = "" if !level
|
|
||||||
commands.push(_INTL("{1}: {2}, {3}",
|
|
||||||
PBSpecies.getName(realcmds[i][2]),@methods[realcmds[i][0]],level.to_s))
|
|
||||||
end
|
end
|
||||||
cmd[1] = i if oldsel>=0 && realcmds[i][3]==oldsel
|
cmd[1] = i if oldsel>=0 && realcmds[i][3]==oldsel
|
||||||
end
|
end
|
||||||
@@ -1239,28 +1248,31 @@ class EvolutionsProperty
|
|||||||
newmethod = pbMessage(_INTL("Choose an evolution method."),@methods,-1)
|
newmethod = pbMessage(_INTL("Choose an evolution method."),@methods,-1)
|
||||||
if newmethod>0
|
if newmethod>0
|
||||||
newparam = -1
|
newparam = -1
|
||||||
allow_zero = false
|
|
||||||
param_type = PBEvolution.getFunction(newmethod, "parameterType")
|
param_type = PBEvolution.getFunction(newmethod, "parameterType")
|
||||||
case param_type
|
has_param = !PBEvolution.hasFunction?(newmethod, "parameterType") || param_type != nil
|
||||||
when :PBItems
|
if has_param
|
||||||
newparam = pbChooseItemList
|
allow_zero = false
|
||||||
when :PBMoves
|
case param_type
|
||||||
newparam = pbChooseMoveList
|
when :PBItems
|
||||||
when :PBSpecies
|
newparam = pbChooseItemList
|
||||||
newparam = pbChooseSpeciesList
|
when :PBMoves
|
||||||
when :PBTypes
|
newparam = pbChooseMoveList
|
||||||
allow_zero = true
|
when :PBSpecies
|
||||||
newparam = pbChooseTypeList
|
newparam = pbChooseSpeciesList
|
||||||
when :PBAbilities
|
when :PBTypes
|
||||||
newparam = pbChooseAbilityList
|
allow_zero = true
|
||||||
else
|
newparam = pbChooseTypeList
|
||||||
allow_zero = true
|
when :PBAbilities
|
||||||
params = ChooseNumberParams.new
|
newparam = pbChooseAbilityList
|
||||||
params.setRange(0,65535)
|
else
|
||||||
params.setCancelValue(-1)
|
allow_zero = true
|
||||||
newparam = pbMessageChooseNumber(_INTL("Choose a parameter."),params)
|
params = ChooseNumberParams.new
|
||||||
|
params.setRange(0,65535)
|
||||||
|
params.setCancelValue(-1)
|
||||||
|
newparam = pbMessageChooseNumber(_INTL("Choose a parameter."),params)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if newparam && (newparam>0 || (allow_zero && newparam == 0))
|
if !has_param || newparam > 0 || (allow_zero && newparam == 0)
|
||||||
havemove = -1
|
havemove = -1
|
||||||
for i in 0...realcmds.length
|
for i in 0...realcmds.length
|
||||||
havemove = realcmds[i][3] if realcmds[i][0]==newmethod &&
|
havemove = realcmds[i][3] if realcmds[i][0]==newmethod &&
|
||||||
@@ -1324,44 +1336,49 @@ class EvolutionsProperty
|
|||||||
end
|
end
|
||||||
elsif cmd2==2 # Change parameter
|
elsif cmd2==2 # Change parameter
|
||||||
newparam = -1
|
newparam = -1
|
||||||
allow_zero = false
|
|
||||||
param_type = PBEvolution.getFunction(entry[0], "parameterType")
|
param_type = PBEvolution.getFunction(entry[0], "parameterType")
|
||||||
case param_type
|
has_param = !PBEvolution.hasFunction?(entry[0], "parameterType") || param_type != nil
|
||||||
when :PBItems
|
if has_param
|
||||||
newparam = pbChooseItemList(entry[1])
|
allow_zero = false
|
||||||
when :PBMoves
|
case param_type
|
||||||
newparam = pbChooseMoveList(entry[1])
|
when :PBItems
|
||||||
when :PBSpecies
|
newparam = pbChooseItemList(entry[1])
|
||||||
newparam = pbChooseSpeciesList(entry[1])
|
when :PBMoves
|
||||||
when :PBTypes
|
newparam = pbChooseMoveList(entry[1])
|
||||||
allow_zero = true
|
when :PBSpecies
|
||||||
newparam = pbChooseTypeList(entry[1])
|
newparam = pbChooseSpeciesList(entry[1])
|
||||||
when :PBAbilities
|
when :PBTypes
|
||||||
newparam = pbChooseAbilityList(entry[1])
|
allow_zero = true
|
||||||
else
|
newparam = pbChooseTypeList(entry[1])
|
||||||
allow_zero = true
|
when :PBAbilities
|
||||||
params = ChooseNumberParams.new
|
newparam = pbChooseAbilityList(entry[1])
|
||||||
params.setRange(0,65535)
|
|
||||||
params.setDefaultValue(entry[1])
|
|
||||||
params.setCancelValue(-1)
|
|
||||||
newparam = pbMessageChooseNumber(_INTL("Choose a parameter."),params)
|
|
||||||
end
|
|
||||||
if newparam && (newparam>0 || (allow_zero && newparam == 0))
|
|
||||||
havemove = -1
|
|
||||||
for i in 0...realcmds.length
|
|
||||||
havemove = realcmds[i][3] if realcmds[i][0]==entry[0] &&
|
|
||||||
realcmds[i][1]==newparam &&
|
|
||||||
realcmds[i][2]==entry[2]
|
|
||||||
end
|
|
||||||
if havemove>=0
|
|
||||||
realcmds[cmd[1]] = nil
|
|
||||||
realcmds.compact!
|
|
||||||
oldsel = havemove
|
|
||||||
else
|
else
|
||||||
entry[1] = newparam
|
allow_zero = true
|
||||||
oldsel = entry[3]
|
params = ChooseNumberParams.new
|
||||||
|
params.setRange(0,65535)
|
||||||
|
params.setDefaultValue(entry[1])
|
||||||
|
params.setCancelValue(-1)
|
||||||
|
newparam = pbMessageChooseNumber(_INTL("Choose a parameter."),params)
|
||||||
end
|
end
|
||||||
refreshlist = true
|
if newparam>0 || (allow_zero && newparam == 0)
|
||||||
|
havemove = -1
|
||||||
|
for i in 0...realcmds.length
|
||||||
|
havemove = realcmds[i][3] if realcmds[i][0]==entry[0] &&
|
||||||
|
realcmds[i][1]==newparam &&
|
||||||
|
realcmds[i][2]==entry[2]
|
||||||
|
end
|
||||||
|
if havemove>=0
|
||||||
|
realcmds[cmd[1]] = nil
|
||||||
|
realcmds.compact!
|
||||||
|
oldsel = havemove
|
||||||
|
else
|
||||||
|
entry[1] = newparam
|
||||||
|
oldsel = entry[3]
|
||||||
|
end
|
||||||
|
refreshlist = true
|
||||||
|
end
|
||||||
|
else
|
||||||
|
pbMessage(_INTL("This evolution method doesn't use a parameter."))
|
||||||
end
|
end
|
||||||
elsif cmd2==3 # Delete
|
elsif cmd2==3 # Delete
|
||||||
realcmds[cmd[1]] = nil
|
realcmds[cmd[1]] = nil
|
||||||
|
|||||||
Reference in New Issue
Block a user