Refining event evolution mechanics

This commit is contained in:
Maruno17
2021-11-07 21:20:47 +00:00
parent 34ab0b8afe
commit 15babcf835
6 changed files with 23 additions and 64 deletions

View File

@@ -630,83 +630,42 @@ GameData::Evolution.register({
#===============================================================================
# Evolution methods that are triggered by an event
# Each event has its own number, which is the value of the parameter as defined
# in pokemon.txt/pokemon_forms.txt. It is also 'number' in def pbEvolutionEvent,
# which triggers evolution checks for a particular event number. 'value' in an
# event_proc is the number of the evolution event currently being triggered.
# Evolutions caused by different events should have different numbers. Used
# event numbers are:
# 1: Kubfu -> Urshifu
# 2: Galarian Yamask -> Runerigus
#===============================================================================
GameData::Evolution.register({
:id => :Event,
:event_proc => proc { |pkmn, parameter, value|
next true
}
})
def pbEvolutionEvent(number)
return if !$player
$player.able_pokemon_party.each do |pkmn|
pkmn.trigger_event_evolution(number)
end
end
GameData::Evolution.register({
:id => :EventValue,
:id => :Event,
:parameter => Integer,
:event_proc => proc { |pkmn, parameter, value|
next value == parameter
}
})
GameData::Evolution.register({
:id => :EventLevel,
:parameter => Integer,
:event_proc => proc { |pkmn, parameter, value|
next pkmn.level >= parameter
}
})
GameData::Evolution.register({
:id => :EventMale,
:event_proc => proc { |pkmn, parameter, value|
next pkmn.male?
}
})
GameData::Evolution.register({
:id => :EventFemale,
:event_proc => proc { |pkmn, parameter, value|
next pkmn.female?
}
})
GameData::Evolution.register({
:id => :EventDay,
:event_proc => proc { |pkmn, parameter, value|
next PBDayNight.isDay?
}
})
GameData::Evolution.register({
:id => :EventNight,
:event_proc => proc { |pkmn, parameter, value|
next PBDayNight.isNight?
}
})
GameData::Evolution.register({
:id => :EventItem,
:parameter => :Item,
:event_proc => proc { |pkmn, parameter, value|
next pkmn.item == parameter
},
:after_evolution_proc => proc { |pkmn, new_species, parameter, evo_species|
next false if evo_species != new_species || !pkmn.hasItem?(parameter)
pkmn.item = nil # Item is now consumed
next true
}
})
GameData::Evolution.register({
:id => :EventAfterDamageTaken,
:parameter => Integer,
:after_battle_proc => proc { |pkmn, party_index, parameter|
if $game_temp.party_direct_damage_taken &&
$game_temp.party_direct_damage_taken[party_index] &&
$game_temp.party_direct_damage_taken[party_index] >= parameter
$game_temp.party_direct_damage_taken[party_index] >= 49
pkmn.ready_to_evolve = true
end
next false
},
:event_proc => proc { |pkmn, parameter, value|
next pkmn.ready_to_evolve
next value == parameter && pkmn.ready_to_evolve
}
})