diff --git a/Data/Scripts/003_Game classes/007_Game_Player.rb b/Data/Scripts/003_Game classes/007_Game_Player.rb index 19763d1e5..65d3365e4 100644 --- a/Data/Scripts/003_Game classes/007_Game_Player.rb +++ b/Data/Scripts/003_Game classes/007_Game_Player.rb @@ -128,6 +128,14 @@ class Game_Player < Game_Character end end + def turnGeneric(dir) + old_direction = @direction + super + if @direction != oldDirection && !@move_route_forcing && !pbMapInterpreterRunning? + Events.onChangeDirection.trigger(self, self) + end + end + def pbTriggeredTrainerEvents(triggers,checkIfRunning=true) result = [] # If event is running diff --git a/Data/Scripts/013_Overworld/002_PField_Field.rb b/Data/Scripts/013_Overworld/002_PField_Field.rb index 344f38f16..e216c0951 100644 --- a/Data/Scripts/013_Overworld/002_PField_Field.rb +++ b/Data/Scripts/013_Overworld/002_PField_Field.rb @@ -54,6 +54,7 @@ module Events @@OnWildBattleOverride = Event.new @@OnWildBattleEnd = Event.new @@OnTrainerPartyLoad = Event.new + @@OnChangeDirection = Event.new # Fires whenever a map is created. Event handler receives two parameters: the # map (RPG::Map) and the tileset (RPG::Tileset) @@ -159,6 +160,10 @@ module Events # e[2] - Party def self.onTrainerPartyLoad; @@OnTrainerPartyLoad; end def self.onTrainerPartyLoad=(v); @@OnTrainerPartyLoad = v; end + + # Fires whenever the player changes direction. + def self.onChangeDirection; @@OnChangeDirection; end + def self.onChangeDirection=(v); @@OnChangeDirection = v; end end @@ -365,6 +370,12 @@ def pbOnStepTaken(eventTriggered) pbBattleOnStepTaken(repel) if !eventTriggered && !$game_temp.in_menu end +# Start wild encounters while turning on the spot +Events.onChangeDirection += proc{ + repel = ($PokemonGlobal.repel>0) + pbBattleOnStepTaken(repel) if !$game_temp.in_menu +} + def pbBattleOnStepTaken(repel=false) return if $Trainer.ablePokemonCount==0 encounterType = $PokemonEncounters.pbEncounterType