From c40f95838a1236bc9f000f0a659a04abde6dcc74 Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Thu, 29 Oct 2020 19:53:57 +0000 Subject: [PATCH] Fixed X items being unusable by AI, finally fixed step after battle caused by a turn --- .../003_Game classes/005_Game_Character.rb | 58 ++++------- .../003_Game classes/007_Game_Player.rb | 97 ++++++------------- .../003_Battle/007_Battle_Action_UseItem.rb | 12 +-- .../Scripts/013_Overworld/002_PField_Field.rb | 18 ++-- .../013_Overworld/006_PField_Battles.rb | 1 + 5 files changed, 67 insertions(+), 119 deletions(-) diff --git a/Data/Scripts/003_Game classes/005_Game_Character.rb b/Data/Scripts/003_Game classes/005_Game_Character.rb index 22e29c157..6221b5b61 100644 --- a/Data/Scripts/003_Game classes/005_Game_Character.rb +++ b/Data/Scripts/003_Game classes/005_Game_Character.rb @@ -265,8 +265,6 @@ class Game_Character @pattern = 0 if @walk_anime or @step_anime @anime_count = 0 @prelock_direction = 0 - @moved_last_frame = false - @moved_this_frame = false end def force_move_route(move_route) @@ -434,48 +432,34 @@ class Game_Character end end - def move_up(turn_enabled = true) - turn_up if turn_enabled - if passable?(@x, @y, 8) - turn_up - @y -= 1 + def move_generic(dir, turn_enabled = true) + turn_generic(dir) if turn_enabled + x_offset = (dir == 4) ? -1 : (dir == 6) ? 1 : 0 + y_offset = (dir == 8) ? -1 : (dir == 2) ? 1 : 0 + if passable?(@x, @y, dir) + turn_generic(dir) + @x += x_offset + @y += y_offset increase_steps else - check_event_trigger_touch(@x, @y-1) + check_event_trigger_touch(@x + x_offset, @y + y_offset) end end def move_down(turn_enabled = true) - turn_down if turn_enabled - if passable?(@x, @y, 2) - turn_down - @y += 1 - increase_steps - else - check_event_trigger_touch(@x, @y+1) - end + move_generic(2, turn_enabled) end def move_left(turn_enabled = true) - turn_left if turn_enabled - if passable?(@x, @y, 4) - turn_left - @x -= 1 - increase_steps - else - check_event_trigger_touch(@x-1, @y) - end + move_generic(4, turn_enabled) end def move_right(turn_enabled = true) - turn_right if turn_enabled - if passable?(@x, @y, 6) - turn_right - @x += 1 - increase_steps - else - check_event_trigger_touch(@x+1, @y) - end + move_generic(6, turn_enabled) + end + + def move_up(turn_enabled = true) + move_generic(8, turn_enabled) end def move_upper_left @@ -698,7 +682,7 @@ class Game_Character end end - def turnGeneric(dir) + def turn_generic(dir) return if @direction_fix oldDirection = @direction @direction = dir @@ -706,10 +690,10 @@ class Game_Character pbCheckEventTriggerAfterTurning if dir != oldDirection end - def turn_up; turnGeneric(8); end - def turn_down; turnGeneric(2); end - def turn_left; turnGeneric(4); end - def turn_right; turnGeneric(6); end + def turn_down; turn_generic(2); end + def turn_left; turn_generic(4); end + def turn_right; turn_generic(6); end + def turn_up; turn_generic(8); end def turn_right_90 case @direction diff --git a/Data/Scripts/003_Game classes/007_Game_Player.rb b/Data/Scripts/003_Game classes/007_Game_Player.rb index 573251771..f68153471 100644 --- a/Data/Scripts/003_Game classes/007_Game_Player.rb +++ b/Data/Scripts/003_Game classes/007_Game_Player.rb @@ -64,75 +64,36 @@ class Game_Player < Game_Character @bump_se = Graphics.frame_rate/4 end - def move_down(turn_enabled = true) - turn_down if turn_enabled - if passable?(@x, @y, 2) - return if pbLedge(0,1) - return if pbEndSurf(0,1) - turn_down - @y += 1 - $PokemonTemp.dependentEvents.pbMoveDependentEvents - increase_steps - else - if !check_event_trigger_touch(@x, @y+1) - bump_into_object + def move_generic(dir, turn_enabled = true) + turn_generic(dir, true) if turn_enabled + if !$PokemonTemp.encounterTriggered + x_offset = (dir == 4) ? -1 : (dir == 6) ? 1 : 0 + y_offset = (dir == 8) ? -1 : (dir == 2) ? 1 : 0 + if passable?(@x, @y, dir) + return if pbLedge(x_offset, y_offset) + return if pbEndSurf(x_offset, y_offset) + turn_generic(dir, true) + if !$PokemonTemp.encounterTriggered + @x += x_offset + @y += y_offset + $PokemonTemp.dependentEvents.pbMoveDependentEvents + increase_steps + end + else + if !check_event_trigger_touch(@x + x_offset, @y + y_offset) + bump_into_object + end end end + $PokemonTemp.encounterTriggered = false end - def move_left(turn_enabled = true) - turn_left if turn_enabled - if passable?(@x, @y, 4) - return if pbLedge(-1,0) - return if pbEndSurf(-1,0) - turn_left - @x -= 1 - $PokemonTemp.dependentEvents.pbMoveDependentEvents - increase_steps - else - if !check_event_trigger_touch(@x-1, @y) - bump_into_object - end - end - end - - def move_right(turn_enabled = true) - turn_right if turn_enabled - if passable?(@x, @y, 6) - return if pbLedge(1,0) - return if pbEndSurf(1,0) - turn_right - @x += 1 - $PokemonTemp.dependentEvents.pbMoveDependentEvents - increase_steps - else - if !check_event_trigger_touch(@x+1, @y) - bump_into_object - end - end - end - - def move_up(turn_enabled = true) - turn_up if turn_enabled - if passable?(@x, @y, 8) - return if pbLedge(0,-1) - return if pbEndSurf(0,-1) - turn_up - @y -= 1 - $PokemonTemp.dependentEvents.pbMoveDependentEvents - increase_steps - else - if !check_event_trigger_touch(@x, @y-1) - bump_into_object - end - end - end - - def turnGeneric(dir) + def turn_generic(dir, keep_enc_indicator = false) old_direction = @direction super if @direction != old_direction && !@move_route_forcing && !pbMapInterpreterRunning? Events.onChangeDirection.trigger(self, self) + $PokemonTemp.encounterTriggered = false if !keep_enc_indicator end end @@ -170,8 +131,7 @@ class Game_Player < Game_Character return result end - def pbCheckEventTriggerAfterTurning - end + def pbCheckEventTriggerAfterTurning; end def pbCheckEventTriggerFromDistance(triggers) ret = pbTriggeredTrainerEvents(triggers) @@ -385,17 +345,18 @@ class Game_Player < Game_Character def update_command_new dir = Input.dir4 - unless pbMapInterpreterRunning? or $game_temp.message_window_showing or - $PokemonTemp.miniupdate or $game_temp.in_menu + unless pbMapInterpreterRunning? || $game_temp.message_window_showing || + $PokemonTemp.miniupdate || $game_temp.in_menu # Move player in the direction the directional button is being pressed - if @moved_last_frame || (dir==@lastdir && Graphics.frame_count-@lastdirframe>Graphics.frame_rate/20) + if @moved_last_frame || + (dir > 0 && dir == @lastdir && Graphics.frame_count - @lastdirframe > Graphics.frame_rate / 20) case dir when 2; move_down when 4; move_left when 6; move_right when 8; move_up end - elsif dir!=@lastdir + elsif dir != @lastdir case dir when 2; turn_down when 4; turn_left @@ -405,7 +366,7 @@ class Game_Player < Game_Character end end # Record last direction input - @lastdirframe = Graphics.frame_count if dir!=@lastdir + @lastdirframe = Graphics.frame_count if dir != @lastdir @lastdir = dir end diff --git a/Data/Scripts/012_Battle/003_Battle/007_Battle_Action_UseItem.rb b/Data/Scripts/012_Battle/003_Battle/007_Battle_Action_UseItem.rb index bf51ddfb7..d79509bc7 100644 --- a/Data/Scripts/012_Battle/003_Battle/007_Battle_Action_UseItem.rb +++ b/Data/Scripts/012_Battle/003_Battle/007_Battle_Action_UseItem.rb @@ -83,7 +83,7 @@ class PokeBattle_Battle end end - # Uses an item on a Pokémon in the player's party. + # Uses an item on a Pokémon in the trainer's party. def pbUseItemOnPokemon(item,idxParty,userBattler) trainerName = pbGetOwnerName(userBattler.index) pbUseItemMessage(item,trainerName) @@ -100,14 +100,14 @@ class PokeBattle_Battle pbReturnUnusedItemToBag(item,userBattler.index) end - # Uses an item on a Pokémon in battle that belongs to the player. - def pbUseItemOnBattler(item,idxParty,userBattler) + # Uses an item on a Pokémon in battle that belongs to the trainer. + def pbUseItemOnBattler(item,idxBattler,userBattler) trainerName = pbGetOwnerName(userBattler.index) pbUseItemMessage(item,trainerName) - pkmn = pbParty(userBattler.index)[idxParty] - battler = pbFindBattler(idxParty,userBattler.index) + idxBattler = userBattler.index if idxBattler<0 + battler = @battlers[idxBattler] ch = @choices[userBattler.index] - if ItemHandlers.triggerCanUseInBattle(item,pkmn,battler,ch[3],true,self,@scene,false) + if ItemHandlers.triggerCanUseInBattle(item,battler.pokemon,battler,ch[3],true,self,@scene,false) ItemHandlers.triggerBattleUseOnBattler(item,battler,@scene) ch[1] = 0 # Delete item from choice return diff --git a/Data/Scripts/013_Overworld/002_PField_Field.rb b/Data/Scripts/013_Overworld/002_PField_Field.rb index ff48cd6dd..f44c5c4f9 100644 --- a/Data/Scripts/013_Overworld/002_PField_Field.rb +++ b/Data/Scripts/013_Overworld/002_PField_Field.rb @@ -368,32 +368,34 @@ def pbOnStepTaken(eventTriggered) Events.onStepTakenTransferPossible.trigger(nil,handled) return if handled[0] pbBattleOnStepTaken(repel) if !eventTriggered && !$game_temp.in_menu + $PokemonTemp.encounterTriggered = false # This info isn't needed end # Start wild encounters while turning on the spot Events.onChangeDirection += proc { - repel = ($PokemonGlobal.repel>0) + repel = ($PokemonGlobal.repel > 0) pbBattleOnStepTaken(repel) if !$game_temp.in_menu } -def pbBattleOnStepTaken(repel=false) - return if $Trainer.ablePokemonCount==0 +def pbBattleOnStepTaken(repel = false) + return if $Trainer.ablePokemonCount == 0 encounterType = $PokemonEncounters.pbEncounterType - return if encounterType<0 + return if encounterType < 0 return if !$PokemonEncounters.isEncounterPossibleHere? $PokemonTemp.encounterType = encounterType encounter = $PokemonEncounters.pbGenerateEncounter(encounterType) encounter = EncounterModifier.trigger(encounter) - if $PokemonEncounters.pbCanEncounter?(encounter,repel) + if $PokemonEncounters.pbCanEncounter?(encounter, repel) if !$PokemonTemp.forceSingleBattle && !pbInSafari? && ($PokemonGlobal.partner || - ($Trainer.ablePokemonCount>1 && PBTerrain.isDoubleWildBattle?(pbGetTerrainTag) && rand(100)<30)) + ($Trainer.ablePokemonCount > 1 && PBTerrain.isDoubleWildBattle?(pbGetTerrainTag) && rand(100) < 30)) encounter2 = $PokemonEncounters.pbEncounteredPokemon(encounterType) encounter2 = EncounterModifier.trigger(encounter2) - pbDoubleWildBattle(encounter[0],encounter[1],encounter2[0],encounter2[1]) + pbDoubleWildBattle(encounter[0], encounter[1], encounter2[0], encounter2[1]) else - pbWildBattle(encounter[0],encounter[1]) + pbWildBattle(encounter[0], encounter[1]) end $PokemonTemp.encounterType = -1 + $PokemonTemp.encounterTriggered = true end $PokemonTemp.forceSingleBattle = false EncounterModifier.triggerEncounterEnd diff --git a/Data/Scripts/013_Overworld/006_PField_Battles.rb b/Data/Scripts/013_Overworld/006_PField_Battles.rb index dee5f92d0..40492caf2 100644 --- a/Data/Scripts/013_Overworld/006_PField_Battles.rb +++ b/Data/Scripts/013_Overworld/006_PField_Battles.rb @@ -11,6 +11,7 @@ end class PokemonTemp + attr_accessor :encounterTriggered attr_accessor :encounterType attr_accessor :evolutionLevels