Added "airborne" event name tag, can have Safari battles with no party, fixed Micle Berry, fixed data box not refreshing when Illusion is broken, added triggers for more EoR animations

This commit is contained in:
Maruno17
2024-04-27 00:10:28 +01:00
parent 494e646fd5
commit 04985eab5c
7 changed files with 12 additions and 5 deletions

View File

@@ -206,11 +206,12 @@ class Game_Character
end end
def bush_depth def bush_depth
return 0 if respond_to?("name") && name[/airborne/i]
return @bush_depth || 0 return @bush_depth || 0
end end
def calculate_bush_depth def calculate_bush_depth
if @tile_id > 0 || @always_on_top || jumping? if @tile_id > 0 || @always_on_top || jumping? || (respond_to?("name") && name[/airborne/i])
@bush_depth = 0 @bush_depth = 0
return return
end end

View File

@@ -171,6 +171,7 @@ class Battle
priority.each do |battler| priority.each do |battler|
next if !battler.effects[PBEffects::AquaRing] next if !battler.effects[PBEffects::AquaRing]
next if !battler.canHeal? next if !battler.canHeal?
pbCommonAnimation("AquaRing", battler)
hpGain = battler.totalhp / 16 hpGain = battler.totalhp / 16
hpGain = (hpGain * 1.3).floor if battler.hasActiveItem?(:BIGROOT) hpGain = (hpGain * 1.3).floor if battler.hasActiveItem?(:BIGROOT)
battler.pbRecoverHP(hpGain) battler.pbRecoverHP(hpGain)
@@ -180,6 +181,7 @@ class Battle
priority.each do |battler| priority.each do |battler|
next if !battler.effects[PBEffects::Ingrain] next if !battler.effects[PBEffects::Ingrain]
next if !battler.canHeal? next if !battler.canHeal?
pbCommonAnimation("Ingrain", battler)
hpGain = battler.totalhp / 16 hpGain = battler.totalhp / 16
hpGain = (hpGain * 1.3).floor if battler.hasActiveItem?(:BIGROOT) hpGain = (hpGain * 1.3).floor if battler.hasActiveItem?(:BIGROOT)
battler.pbRecoverHP(hpGain) battler.pbRecoverHP(hpGain)
@@ -259,6 +261,7 @@ class Battle
priority.each do |battler| priority.each do |battler|
battler.effects[PBEffects::Nightmare] = false if !battler.asleep? battler.effects[PBEffects::Nightmare] = false if !battler.asleep?
next if !battler.effects[PBEffects::Nightmare] || !battler.takesIndirectDamage? next if !battler.effects[PBEffects::Nightmare] || !battler.takesIndirectDamage?
pbCommonAnimation("Nightmare", battler)
battler.pbTakeEffectDamage(battler.totalhp / 4) do |hp_lost| battler.pbTakeEffectDamage(battler.totalhp / 4) do |hp_lost|
pbDisplay(_INTL("{1} is locked in a nightmare!", battler.pbThis)) pbDisplay(_INTL("{1} is locked in a nightmare!", battler.pbThis))
end end
@@ -266,6 +269,7 @@ class Battle
# Curse # Curse
priority.each do |battler| priority.each do |battler|
next if !battler.effects[PBEffects::Curse] || !battler.takesIndirectDamage? next if !battler.effects[PBEffects::Curse] || !battler.takesIndirectDamage?
pbCommonAnimation("Curse", battler)
battler.pbTakeEffectDamage(battler.totalhp / 4) do |hp_lost| battler.pbTakeEffectDamage(battler.totalhp / 4) do |hp_lost|
pbDisplay(_INTL("{1} is afflicted by the curse!", battler.pbThis)) pbDisplay(_INTL("{1} is afflicted by the curse!", battler.pbThis))
end end

View File

@@ -393,6 +393,7 @@ class Battle::Scene
shadowSprite.setPokemonBitmap(pkmn) shadowSprite.setPokemonBitmap(pkmn)
# Set visibility of battler's shadow # Set visibility of battler's shadow
shadowSprite.visible = pkmn.species_data.shows_shadow? if shadowSprite && !back shadowSprite.visible = pkmn.species_data.shows_shadow? if shadowSprite && !back
@sprites["dataBox_#{idxBattler}"].refresh
end end
def pbResetCommandsIndex(idxBattler) def pbResetCommandsIndex(idxBattler)

View File

@@ -499,7 +499,7 @@ class Battle::AI::AIBattler
when :ASPEARBERRY, :CHERIBERRY, :CHESTOBERRY, :PECHABERRY, :RAWSTBERRY when :ASPEARBERRY, :CHERIBERRY, :CHESTOBERRY, :PECHABERRY, :RAWSTBERRY
# Status cure # Status cure
cured_status = { cured_status = {
:ASPEAR => :FROZEN, :ASPEARBERRY => :FROZEN,
:CHERIBERRY => :PARALYSIS, :CHERIBERRY => :PARALYSIS,
:CHESTOBERRY => :SLEEP, :CHESTOBERRY => :SLEEP,
:PECHABERRY => :POISON, :PECHABERRY => :POISON,

View File

@@ -346,7 +346,7 @@ Battle::ItemEffects::HPHeal.add(:MAGOBERRY,
Battle::ItemEffects::HPHeal.add(:MICLEBERRY, Battle::ItemEffects::HPHeal.add(:MICLEBERRY,
proc { |item, battler, battle, forced| proc { |item, battler, battle, forced|
next false if !forced && !battler.canConsumePinchBerry? next false if !forced && !battler.canConsumePinchBerry?
next false if !battler.effects[PBEffects::MicleBerry] next false if battler.effects[PBEffects::MicleBerry]
battle.pbCommonAnimation("EatBerry", battler) if !forced battle.pbCommonAnimation("EatBerry", battler) if !forced
battler.effects[PBEffects::MicleBerry] = true battler.effects[PBEffects::MicleBerry] = true
itemName = GameData::Item.get(item).name itemName = GameData::Item.get(item).name

View File

@@ -146,6 +146,7 @@ EventHandlers.add(:on_step_taken, :pick_up_soot,
EventHandlers.add(:on_step_taken, :grass_rustling, EventHandlers.add(:on_step_taken, :grass_rustling,
proc { |event| proc { |event|
next if !$scene.is_a?(Scene_Map) next if !$scene.is_a?(Scene_Map)
next if event.respond_to?("name") && event.name[/airborne/i]
event.each_occupied_tile do |x, y| event.each_occupied_tile do |x, y|
next if !$map_factory.getTerrainTagFromCoords(event.map.map_id, x, y, true).shows_grass_rustle next if !$map_factory.getTerrainTagFromCoords(event.map.map_id, x, y, true).shows_grass_rustle
spriteset = $scene.spriteset(event.map_id) spriteset = $scene.spriteset(event.map_id)
@@ -158,6 +159,7 @@ EventHandlers.add(:on_step_taken, :grass_rustling,
EventHandlers.add(:on_step_taken, :still_water_ripple, EventHandlers.add(:on_step_taken, :still_water_ripple,
proc { |event| proc { |event|
next if !$scene.is_a?(Scene_Map) next if !$scene.is_a?(Scene_Map)
next if event.respond_to?("name") && event.name[/airborne/i]
event.each_occupied_tile do |x, y| event.each_occupied_tile do |x, y|
next if !$map_factory.getTerrainTagFromCoords(event.map.map_id, x, y, true).shows_water_ripple next if !$map_factory.getTerrainTagFromCoords(event.map.map_id, x, y, true).shows_water_ripple
spriteset = $scene.spriteset(event.map_id) spriteset = $scene.spriteset(event.map_id)
@@ -207,7 +209,7 @@ EventHandlers.add(:on_player_change_direction, :trigger_encounter,
) )
def pbBattleOnStepTaken(repel_active) def pbBattleOnStepTaken(repel_active)
return if $player.able_pokemon_count == 0 return if $player.able_pokemon_count == 0 && !pbInSafari?
return if !$PokemonEncounters.encounter_possible_here? return if !$PokemonEncounters.encounter_possible_here?
encounter_type = $PokemonEncounters.encounter_type encounter_type = $PokemonEncounters.encounter_type
return if !encounter_type return if !encounter_type

View File

@@ -759,7 +759,6 @@ module BattleAnimationEditor
return false return false
end end
if usealpha if usealpha
# TODO: This should account for sprite.angle as well.
bitmapX = sprite.src_rect.x bitmapX = sprite.src_rect.x
bitmapY = sprite.src_rect.y bitmapY = sprite.src_rect.y
bitmapX += sprite.ox bitmapX += sprite.ox