diff --git a/Data/Scripts/004_Game classes/007_Game_Character.rb b/Data/Scripts/004_Game classes/007_Game_Character.rb index 5886495c4..e12a5fbcb 100644 --- a/Data/Scripts/004_Game classes/007_Game_Character.rb +++ b/Data/Scripts/004_Game classes/007_Game_Character.rb @@ -498,15 +498,13 @@ class Game_Character 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 can_move_in_direction?(dir) turn_generic(dir) - @x += x_offset - @y += y_offset + @x += (dir == 4) ? -1 : (dir == 6) ? 1 : 0 + @y += (dir == 8) ? -1 : (dir == 2) ? 1 : 0 increase_steps else - check_event_trigger_touch(@x + x_offset, @y + y_offset) + check_event_trigger_touch(dir) end end diff --git a/Data/Scripts/004_Game classes/008_Game_Event.rb b/Data/Scripts/004_Game classes/008_Game_Event.rb index 90dbef367..7f2496654 100644 --- a/Data/Scripts/004_Game classes/008_Game_Event.rb +++ b/Data/Scripts/004_Game classes/008_Game_Event.rb @@ -149,10 +149,20 @@ class Game_Event < Game_Character end end - def check_event_trigger_touch(check_x, check_y) + def check_event_trigger_touch(dir) return if $game_system.map_interpreter.running? return if @trigger != 2 # Event touch - return if !at_coordinate?(check_x, check_y) + case dir + when 2 + return if $game_player.y != @y + 1 + when 4 + return if $game_player.x != @x - 1 + when 6 + return if $game_player.x != @x + @width + when 8 + return if $game_player.y != @y - @height + end + return if !in_line_with_coordinate?($game_player.x, $game_player.y) return if jumping? || over_trigger? start end diff --git a/Data/Scripts/004_Game classes/009_Game_Player.rb b/Data/Scripts/004_Game classes/009_Game_Player.rb index 9e8e9f751..9bb1a2051 100644 --- a/Data/Scripts/004_Game classes/009_Game_Player.rb +++ b/Data/Scripts/004_Game classes/009_Game_Player.rb @@ -70,9 +70,9 @@ class Game_Player < Game_Character 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 can_move_in_direction?(dir) + x_offset = (dir == 4) ? -1 : (dir == 6) ? 1 : 0 + y_offset = (dir == 8) ? -1 : (dir == 2) ? 1 : 0 return if pbLedge(x_offset, y_offset) return if pbEndSurf(x_offset, y_offset) turn_generic(dir, true) @@ -82,10 +82,8 @@ class Game_Player < Game_Character $PokemonTemp.dependentEvents.pbMoveDependentEvents increase_steps end - else - if !check_event_trigger_touch(@x + x_offset, @y + y_offset) - bump_into_object - end + elsif !check_event_trigger_touch(dir) + bump_into_object end end $PokemonTemp.encounterTriggered = false @@ -312,14 +310,16 @@ class Game_Player < Game_Character #----------------------------------------------------------------------------- # * Touch Event Starting Determinant #----------------------------------------------------------------------------- - def check_event_trigger_touch(x, y) + def check_event_trigger_touch(dir) result = false - # If event is running return result if $game_system.map_interpreter.running? # All event loops + x_offset = (dir == 4) ? -1 : (dir == 6) ? 1 : 0 + y_offset = (dir == 8) ? -1 : (dir == 2) ? 1 : 0 for event in $game_map.events.values + next if ![1, 2].include?(event.trigger) # Player touch, event touch # If event coordinates and triggers are consistent - next if !event.at_coordinate?(x, y) + next if !event.at_coordinate?(@x + x_offset, @y + y_offset) if event.name[/trainer\((\d+)\)/i] distance = $~[1].to_i next if !pbEventCanReachPlayer?(event,self,distance) @@ -327,7 +327,6 @@ class Game_Player < Game_Character distance = $~[1].to_i next if !pbEventFacesPlayer?(event,self,distance) end - next if ![1,2].include?(event.trigger) # If starting determinant is front event (other than jumping) next if event.jumping? || event.over_trigger? event.start diff --git a/Data/Scripts/010_Data/002_PBS data/003_Type.rb b/Data/Scripts/010_Data/002_PBS data/003_Type.rb index b4dbafa7d..6853ffcb5 100644 --- a/Data/Scripts/010_Data/002_PBS data/003_Type.rb +++ b/Data/Scripts/010_Data/002_PBS data/003_Type.rb @@ -89,27 +89,27 @@ module Effectiveness end def ineffective_type?(attack_type, defend_type1, defend_type2 = nil, defend_type3 = nil) - value = calculate(attack_type, target_type1, target_type2, target_type3) + value = calculate(attack_type, defend_type1, defend_type2, defend_type3) return ineffective?(value) end def not_very_effective_type?(attack_type, defend_type1, defend_type2 = nil, defend_type3 = nil) - value = calculate(attack_type, target_type1, target_type2, target_type3) + value = calculate(attack_type, defend_type1, defend_type2, defend_type3) return not_very_effective?(value) end def resistant_type?(attack_type, defend_type1, defend_type2 = nil, defend_type3 = nil) - value = calculate(attack_type, target_type1, target_type2, target_type3) + value = calculate(attack_type, defend_type1, defend_type2, defend_type3) return resistant?(value) end def normal_type?(attack_type, defend_type1, defend_type2 = nil, defend_type3 = nil) - value = calculate(attack_type, target_type1, target_type2, target_type3) + value = calculate(attack_type, defend_type1, defend_type2, defend_type3) return normal?(value) end def super_effective_type?(attack_type, defend_type1, defend_type2 = nil, defend_type3 = nil) - value = calculate(attack_type, target_type1, target_type2, target_type3) + value = calculate(attack_type, defend_type1, defend_type2, defend_type3) return super_effective?(value) end