From 04985eab5ce1fcbed1e5847644efb2588349fb9c Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Sat, 27 Apr 2024 00:10:28 +0100 Subject: [PATCH] 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 --- Data/Scripts/004_Game classes/006_Game_Character.rb | 3 ++- .../011_Battle/001_Battle/011_Battle_EndOfRoundPhase.rb | 4 ++++ Data/Scripts/011_Battle/004_Scene/001_Battle_Scene.rb | 1 + Data/Scripts/011_Battle/005_AI/010_AIBattler.rb | 2 +- .../007_Other battle code/009_Battle_ItemEffects.rb | 2 +- Data/Scripts/012_Overworld/001_Overworld.rb | 4 +++- .../002_Animation editor/001_AnimEditor_SceneElements.rb | 1 - 7 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Data/Scripts/004_Game classes/006_Game_Character.rb b/Data/Scripts/004_Game classes/006_Game_Character.rb index c01fd9192..e4298f600 100644 --- a/Data/Scripts/004_Game classes/006_Game_Character.rb +++ b/Data/Scripts/004_Game classes/006_Game_Character.rb @@ -206,11 +206,12 @@ class Game_Character end def bush_depth + return 0 if respond_to?("name") && name[/airborne/i] return @bush_depth || 0 end 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 return end diff --git a/Data/Scripts/011_Battle/001_Battle/011_Battle_EndOfRoundPhase.rb b/Data/Scripts/011_Battle/001_Battle/011_Battle_EndOfRoundPhase.rb index ec13760f8..5ce3c84be 100644 --- a/Data/Scripts/011_Battle/001_Battle/011_Battle_EndOfRoundPhase.rb +++ b/Data/Scripts/011_Battle/001_Battle/011_Battle_EndOfRoundPhase.rb @@ -171,6 +171,7 @@ class Battle priority.each do |battler| next if !battler.effects[PBEffects::AquaRing] next if !battler.canHeal? + pbCommonAnimation("AquaRing", battler) hpGain = battler.totalhp / 16 hpGain = (hpGain * 1.3).floor if battler.hasActiveItem?(:BIGROOT) battler.pbRecoverHP(hpGain) @@ -180,6 +181,7 @@ class Battle priority.each do |battler| next if !battler.effects[PBEffects::Ingrain] next if !battler.canHeal? + pbCommonAnimation("Ingrain", battler) hpGain = battler.totalhp / 16 hpGain = (hpGain * 1.3).floor if battler.hasActiveItem?(:BIGROOT) battler.pbRecoverHP(hpGain) @@ -259,6 +261,7 @@ class Battle priority.each do |battler| battler.effects[PBEffects::Nightmare] = false if !battler.asleep? next if !battler.effects[PBEffects::Nightmare] || !battler.takesIndirectDamage? + pbCommonAnimation("Nightmare", battler) battler.pbTakeEffectDamage(battler.totalhp / 4) do |hp_lost| pbDisplay(_INTL("{1} is locked in a nightmare!", battler.pbThis)) end @@ -266,6 +269,7 @@ class Battle # Curse priority.each do |battler| next if !battler.effects[PBEffects::Curse] || !battler.takesIndirectDamage? + pbCommonAnimation("Curse", battler) battler.pbTakeEffectDamage(battler.totalhp / 4) do |hp_lost| pbDisplay(_INTL("{1} is afflicted by the curse!", battler.pbThis)) end diff --git a/Data/Scripts/011_Battle/004_Scene/001_Battle_Scene.rb b/Data/Scripts/011_Battle/004_Scene/001_Battle_Scene.rb index 1b9498144..0c20d0bd9 100644 --- a/Data/Scripts/011_Battle/004_Scene/001_Battle_Scene.rb +++ b/Data/Scripts/011_Battle/004_Scene/001_Battle_Scene.rb @@ -393,6 +393,7 @@ class Battle::Scene shadowSprite.setPokemonBitmap(pkmn) # Set visibility of battler's shadow shadowSprite.visible = pkmn.species_data.shows_shadow? if shadowSprite && !back + @sprites["dataBox_#{idxBattler}"].refresh end def pbResetCommandsIndex(idxBattler) diff --git a/Data/Scripts/011_Battle/005_AI/010_AIBattler.rb b/Data/Scripts/011_Battle/005_AI/010_AIBattler.rb index 9d472d7d3..3ad1eef72 100644 --- a/Data/Scripts/011_Battle/005_AI/010_AIBattler.rb +++ b/Data/Scripts/011_Battle/005_AI/010_AIBattler.rb @@ -499,7 +499,7 @@ class Battle::AI::AIBattler when :ASPEARBERRY, :CHERIBERRY, :CHESTOBERRY, :PECHABERRY, :RAWSTBERRY # Status cure cured_status = { - :ASPEAR => :FROZEN, + :ASPEARBERRY => :FROZEN, :CHERIBERRY => :PARALYSIS, :CHESTOBERRY => :SLEEP, :PECHABERRY => :POISON, diff --git a/Data/Scripts/011_Battle/007_Other battle code/009_Battle_ItemEffects.rb b/Data/Scripts/011_Battle/007_Other battle code/009_Battle_ItemEffects.rb index 240046fc9..95b92ebe2 100644 --- a/Data/Scripts/011_Battle/007_Other battle code/009_Battle_ItemEffects.rb +++ b/Data/Scripts/011_Battle/007_Other battle code/009_Battle_ItemEffects.rb @@ -346,7 +346,7 @@ Battle::ItemEffects::HPHeal.add(:MAGOBERRY, Battle::ItemEffects::HPHeal.add(:MICLEBERRY, proc { |item, battler, battle, forced| 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 battler.effects[PBEffects::MicleBerry] = true itemName = GameData::Item.get(item).name diff --git a/Data/Scripts/012_Overworld/001_Overworld.rb b/Data/Scripts/012_Overworld/001_Overworld.rb index 3a18274a1..fab2139a3 100644 --- a/Data/Scripts/012_Overworld/001_Overworld.rb +++ b/Data/Scripts/012_Overworld/001_Overworld.rb @@ -146,6 +146,7 @@ EventHandlers.add(:on_step_taken, :pick_up_soot, EventHandlers.add(:on_step_taken, :grass_rustling, proc { |event| next if !$scene.is_a?(Scene_Map) + next if event.respond_to?("name") && event.name[/airborne/i] event.each_occupied_tile do |x, y| next if !$map_factory.getTerrainTagFromCoords(event.map.map_id, x, y, true).shows_grass_rustle 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, proc { |event| next if !$scene.is_a?(Scene_Map) + next if event.respond_to?("name") && event.name[/airborne/i] event.each_occupied_tile do |x, y| next if !$map_factory.getTerrainTagFromCoords(event.map.map_id, x, y, true).shows_water_ripple spriteset = $scene.spriteset(event.map_id) @@ -207,7 +209,7 @@ EventHandlers.add(:on_player_change_direction, :trigger_encounter, ) 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? encounter_type = $PokemonEncounters.encounter_type return if !encounter_type diff --git a/Data/Scripts/020_Debug/002_Animation editor/001_AnimEditor_SceneElements.rb b/Data/Scripts/020_Debug/002_Animation editor/001_AnimEditor_SceneElements.rb index da609a1f9..1625304df 100644 --- a/Data/Scripts/020_Debug/002_Animation editor/001_AnimEditor_SceneElements.rb +++ b/Data/Scripts/020_Debug/002_Animation editor/001_AnimEditor_SceneElements.rb @@ -759,7 +759,6 @@ module BattleAnimationEditor return false end if usealpha - # TODO: This should account for sprite.angle as well. bitmapX = sprite.src_rect.x bitmapY = sprite.src_rect.y bitmapX += sprite.ox