Fixed Event Touch events on connected maps triggering themselves by moving around

This commit is contained in:
Maruno17
2024-02-20 19:33:13 +00:00
parent 24dda5128a
commit 1c9ce0b01a
2 changed files with 10 additions and 4 deletions

View File

@@ -127,10 +127,11 @@ class Game_Event < Game_Character
end
def onEvent?
return @map_id == $game_map.map_id && at_coordinate?($game_player.x, $game_player.y)
return @map_id == $game_player.map_id && at_coordinate?($game_player.x, $game_player.y)
end
def over_trigger?
return false if @map_id != $game_player.map_id
return false if @character_name != "" && !@through
return false if @event.name[/hiddenitem/i]
each_occupied_tile do |i, j|
@@ -140,8 +141,9 @@ class Game_Event < Game_Character
end
def check_event_trigger_touch(dir)
return if $game_system.map_interpreter.running?
return if @map_id != $game_player.map_id
return if @trigger != 2 # Event touch
return if $game_system.map_interpreter.running?
case dir
when 2
return if $game_player.y != @y + 1
@@ -158,8 +160,9 @@ class Game_Event < Game_Character
end
def check_event_trigger_after_turning
return if $game_system.map_interpreter.running? || @starting
return if @map_id != $game_player.map_id
return if @trigger != 2 # Not Event Touch
return if $game_system.map_interpreter.running? || @starting
return if !self.name[/(?:sight|trainer)\((\d+)\)/i]
distance = $~[1].to_i
return if !pbEventCanReachPlayer?(self, $game_player, distance)
@@ -168,8 +171,9 @@ class Game_Event < Game_Character
end
def check_event_trigger_after_moving
return if $game_system.map_interpreter.running? || @starting
return if @map_id != $game_player.map_id
return if @trigger != 2 # Not Event Touch
return if $game_system.map_interpreter.running? || @starting
if self.name[/(?:sight|trainer)\((\d+)\)/i]
distance = $~[1].to_i
return if !pbEventCanReachPlayer?(self, $game_player, distance)

View File

@@ -370,6 +370,7 @@ end
# Returns whether event is able to walk up to the player.
def pbEventCanReachPlayer?(event, player, distance)
return false if event.map_id != player.map_id
return false if !pbEventFacesPlayer?(event, player, distance)
delta_x = (event.direction == 6) ? 1 : (event.direction == 4) ? -1 : 0
delta_y = (event.direction == 2) ? 1 : (event.direction == 8) ? -1 : 0
@@ -394,6 +395,7 @@ end
# Returns whether the two events are standing next to each other and facing each
# other.
def pbFacingEachOther(event1, event2)
return false if event1.map_id != event2.map_id
return pbEventFacesPlayer?(event1, event2, 1) && pbEventFacesPlayer?(event2, event1, 1)
end