At the moment, each of the new false tiles added to the event will check if the area around them is passable. So if you have a layout like this :
[ ][ ][ ][ ][ ]
[x][e][e][e][ ]
[ ][x][ ][ ][ ]
Where 'e' are the tiles that the event is now taking up and 'x' represents impassable terrain on the map. In this case, the event would not be able to travel to the left or move down. So beware of hemming your events in by impassable terrain, at least for now. If that's not going to fit what you're after, then I can toss in another band-aid to allow pass-through while still triggering the event. It'll just make it more sloppy until I can get around to coding a proper fix.
#===============================================================================
# Oversized Event Support
#===============================================================================
# Author : Exhydra
# Version : 1.0
# Last Updated : 06/22/2011
#===============================================================================
# Updates
# -----------------------------------------------------------------------------
# » 06/22/11 Initial Release.
#===============================================================================
# Future Options
# -----------------------------------------------------------------------------
# » Nothing! Suggestions?
#===============================================================================
# Instructions
# -----------------------------------------------------------------------------
# To Use :
# (1) Place one of the following tags in a comment within a page of the
# event you wish to add oversize support for :
#
# [ExOszA]
# - This occupies one additional block on the right of the event.
#
# Example : [evt][x]
#
# [ExOszB]
# - This occupies one additional block on the right, upper-right
# and top of the event.
#
# Example : [ x ][x]
# [evt][x]
#
# [ExOszC]
# - This occupies one additional block on the right, left, upper-right
# top and upper-left of the event.
#
# Example : [x][ x ][x]
# [x][evt][x]
#
#
# (2) Assign a switch below and toggle it into the 'On' position to activate
# Oversized Event Support.
#
#===============================================================================
# Description
# -----------------------------------------------------------------------------
# - Have you ever assigned large graphics to your events only to find that your
# huge dragon has just has one square which triggers its code? Oversized
# Event Support can help! You can easily assign a larger grid to your fierce
# dragon and allow it to become the terror it was meant to be!
#===============================================================================
#===============================================================================
# [NOTE:] - This script uses OriginalWij's 'Get Comments' 1.1 scriptlet
#===============================================================================
module ExOSZEvent
# < Activation Switch >
# - Change this to the switch you would like to use.
EX_OSZEVENT_SW = 1
end
#==============================================================================
# -» Game_Map
# -----------------------------------------------------------------------------
# Summary of Changes:
# Aliased Method(s) - events_xy
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# » events_xy [ Alias ]
#--------------------------------------------------------------------------
alias ex_oszev_events_xy events_xy unless $@
def events_xy(*args)
osz_ev_result = ex_oszev_events_xy(*args)
if $game_switches[ExOSZEvent::EX_OSZEVENT_SW]
for event in $game_map.events.values
case event.comment?("", true)
when "[ExOszA]"
osz_ev_result.push(event) if event.pos?(args[0] - 1, args[1])
when "[ExOszACustom]"
osz_ev_result.push(event) if event.pos?(args[0] - 1, args[1])
osz_ev_result.push(event) if event.pos?(args[0] + 1, args[1])
when "[ExOszB]"
osz_ev_result.push(event) if event.pos?(args[0] , args[1] + 1)
osz_ev_result.push(event) if event.pos?(args[0] - 1, args[1])
osz_ev_result.push(event) if event.pos?(args[0] - 1, args[1] + 1)
when "[ExOszBCustom]"
osz_ev_result.push(event) if event.pos?(args[0] , args[1] + 1)
osz_ev_result.push(event) if event.pos?(args[0] , args[1] + 2)
when "[ExOszC]"
osz_ev_result.push(event) if event.pos?(args[0] + 1, args[1] + 1)
osz_ev_result.push(event) if event.pos?(args[0] , args[1] + 1)
osz_ev_result.push(event) if event.pos?(args[0] , args[1] + 1)
osz_ev_result.push(event) if event.pos?(args[0] - 1, args[1] + 1)
osz_ev_result.push(event) if event.pos?(args[0] + 1, args[1])
osz_ev_result.push(event) if event.pos?(args[0] - 1, args[1])
end
end
end
return osz_ev_result
end
end
#==============================================================================
# -» Game_Character
# -----------------------------------------------------------------------------
# Summary of Changes:
# Aliased Method(s) - move_down, move_left, move_right, move_up
#==============================================================================
# passable_down
# if all of array is true
# turn_down or not
# Place Rect Array in Game Character init
# for i in aRect[1]
# passable?
# end
class Game_Character
#--------------------------------------------------------------------------
# » Move Down [ Alias ]
#--------------------------------------------------------------------------
alias ex_oszev_move_down move_down
def move_down(turn_ok = true)
if $game_switches[ExOSZEvent::EX_OSZEVENT_SW] and self.is_a?(Game_Event)
case self.comment?("", true)
when "[ExOszA]"
if passable?(@x , @y + 1) and
passable?(@x + 1, @y + 1)
turn_down
@y = $game_map.round_y(@y+1)
@real_y = (@y-1)*256
increase_steps
@move_failed = false
return
else
turn_down if turn_ok
check_event_trigger_touch(@x , @y + 1)
check_event_trigger_touch(@x + 1, @y + 1)
@move_failed = true
return
end
when "[ExOszACustom]"
if passable?(@x , @y + 1) and
passable?(@x + 1, @y + 1) and
passable?(@x - 1, @y + 1)
turn_down
@y = $game_map.round_y(@y+1)
@real_y = (@y-1)*256
increase_steps
@move_failed = false
return
else
turn_down if turn_ok
check_event_trigger_touch(@x, @y+1)
check_event_trigger_touch(@x+1, @y+1)
check_event_trigger_touch(@x-1, @y+1)
@move_failed = true
return
end
when "[ExOszB]"
if passable?(@x , @y + 1) and
passable?(@x + 1, @y + 1)
turn_down
@y = $game_map.round_y(@y+1)
@real_y = (@y-1)*256
increase_steps
@move_failed = false
return
else
turn_down if turn_ok
check_event_trigger_touch(@x, @y+1)
check_event_trigger_touch(@x+1, @y+1)
@move_failed = true
return
end
when "[ExOszBCustom]"
if passable?(@x , @y + 1)
turn_down
@y = $game_map.round_y(@y+1)
@real_y = (@y-1)*256
increase_steps
@move_failed = false
return
else
turn_down if turn_ok
check_event_trigger_touch(@x, @y+1)
@move_failed = true
return
end
when "[ExOszC]"
if passable?(@x , @y + 1) and
passable?(@x - 1, @y + 1) and
passable?(@x + 1, @y + 1)
turn_down
@y = $game_map.round_y(@y+1)
@real_y = (@y-1)*256
increase_steps
@move_failed = false
return
else
turn_down if turn_ok
check_event_trigger_touch(@x, @y+1)
check_event_trigger_touch(@x-1, @y+1)
check_event_trigger_touch(@x+1, @y+1)
@move_failed = true
return
end
end
end
ex_oszev_move_down
end
#--------------------------------------------------------------------------
# » Move Left [ Alias ]
#--------------------------------------------------------------------------
alias ex_oszev_move_left move_left
def move_left(turn_ok = true)
if $game_switches[ExOSZEvent::EX_OSZEVENT_SW] and self.is_a?(Game_Event)
case self.comment?("", true)
when "[ExOszA]"
if passable?(@x - 1, @y) and
turn_left
@x = $game_map.round_x(@x-1)
@real_x = (@x+1)*256
increase_steps
@move_failed = false
return
else
turn_left if turn_ok
check_event_trigger_touch(@x - 1, @y)
@move_failed = true
return
end
when "[ExOszACustom]"
if passable?(@x - 2, @y) and
turn_left
@x = $game_map.round_x(@x-1)
@real_x = (@x+1)*256
increase_steps
@move_failed = false
return
else
turn_left if turn_ok
check_event_trigger_touch(@x - 2, @y)
@move_failed = true
return
end
when "[ExOszB]"
if passable?(@x - 1, @y) and
passable?(@x - 1, @y - 1)
turn_left
@x = $game_map.round_x(@x-1)
@real_x = (@x+1)*256
increase_steps
@move_failed = false
return
else
turn_left if turn_ok
check_event_trigger_touch(@x - 1 , @y)
check_event_trigger_touch(@x - 1, @y - 1)
@move_failed = true
return
end
when "[ExOszBCustom]"
if passable?(@x - 1, @y) and
passable?(@x - 1, @y - 1) and
passable?(@x - 1, @y - 2)
turn_left
@x = $game_map.round_x(@x-1)
@real_x = (@x+1)*256
increase_steps
@move_failed = false
return
else
turn_left if turn_ok
check_event_trigger_touch(@x - 1 , @y)
check_event_trigger_touch(@x - 1, @y - 1)
check_event_trigger_touch(@x - 1, @y - 2)
@move_failed = true
return
end
when "[ExOszC]"
if passable?(@x - 2, @y) and
passable?(@x - 2, @y - 1)
turn_left
@x = $game_map.round_x(@x-1)
@real_x = (@x+1)*256
increase_steps
@move_failed = false
return
else
turn_left if turn_ok
check_event_trigger_touch(@x - 2, @y)
check_event_trigger_touch(@x - 2, @y - 1)
@move_failed = true
return
end
end
end
ex_oszev_move_left
end
#--------------------------------------------------------------------------
# » Move Right [ Alias ]
#--------------------------------------------------------------------------
alias ex_oszev_move_right move_right
def move_right(turn_ok = true)
if $game_switches[ExOSZEvent::EX_OSZEVENT_SW] and self.is_a?(Game_Event)
case self.comment?("", true)
when "[ExOszA]"
if passable?(@x + 2, @y)
turn_right
@x = $game_map.round_x(@x+1)
@real_x = (@x-1)*256
increase_steps
@move_failed = false
return
else
turn_right if turn_ok
check_event_trigger_touch(@x + 2, @y)
@move_failed = true
return
end
when "[ExOszACustom]"
if passable?(@x + 2, @y)
turn_right
@x = $game_map.round_x(@x+1)
@real_x = (@x-1)*256
increase_steps
@move_failed = false
return
else
turn_right if turn_ok
check_event_trigger_touch(@x + 2, @y)
@move_failed = true
return
end
when "[ExOszB]"
if passable?(@x + 2, @y) and
passable?(@x + 2, @y - 1)
turn_right
@x = $game_map.round_x(@x+1)
@real_x = (@x-1)*256
increase_steps
@move_failed = false
return
else
turn_right if turn_ok
check_event_trigger_touch(@x + 2, @y)
check_event_trigger_touch(@x + 2, @y - 1)
@move_failed = true
return
end
when "[ExOszBCustom]"
if passable?(@x + 1, @y) and
passable?(@x + 1, @y - 1) and
passable?(@x + 1, @y - 2)
turn_right
@x = $game_map.round_x(@x+1)
@real_x = (@x-1)*256
increase_steps
@move_failed = false
return
else
turn_right if turn_ok
check_event_trigger_touch(@x + 1, @y)
check_event_trigger_touch(@x + 1, @y - 1)
check_event_trigger_touch(@x + 1, @y - 2)
@move_failed = true
return
end
when "[ExOszC]"
if passable?(@x + 2, @y) and
passable?(@x + 2, @y - 1)
turn_right
@x = $game_map.round_x(@x+1)
@real_x = (@x-1)*256
increase_steps
@move_failed = false
return
else
turn_right if turn_ok
check_event_trigger_touch(@x + 2, @y)
check_event_trigger_touch(@x + 2, @y - 1)
@move_failed = true
return
end
end
end
ex_oszev_move_right
end
#--------------------------------------------------------------------------
# » Move up [ Alias ]
#--------------------------------------------------------------------------
alias ex_oszev_move_up move_up
def move_up(turn_ok = true)
if $game_switches[ExOSZEvent::EX_OSZEVENT_SW] and self.is_a?(Game_Event)
case self.comment?("", true)
when "[ExOszA]"
if passable?(@x , @y - 1) and
passable?(@x + 1, @y - 1)
turn_up
@y = $game_map.round_y(@y-1)
@real_y = (@y+1)*256
increase_steps
@move_failed = false
return
else
turn_up if turn_ok
check_event_trigger_touch(@x, @y - 1)
check_event_trigger_touch(@x + 1, @y - 1)
@move_failed = true
return
end
when "[ExOszACustom]"
if passable?(@x , @y - 1) and
passable?(@x + 1, @y - 1) and
passable?(@x - 1, @y - 1)
turn_up
@y = $game_map.round_y(@y-1)
@real_y = (@y+1)*256
increase_steps
@move_failed = false
return
else
turn_up if turn_ok
check_event_trigger_touch(@x, @y - 1)
check_event_trigger_touch(@x + 1, @y - 1)
check_event_trigger_touch(@x - 1, @y - 1)
@move_failed = true
return
end
when "[ExOszB]"
if passable?(@x, @y - 2) and
passable?(@x + 1, @y - 2)
turn_up
@y = $game_map.round_y(@y-1)
@real_y = (@y+1)*256
increase_steps
@move_failed = false
return
else
turn_up if turn_ok
check_event_trigger_touch(@x, @y - 2)
check_event_trigger_touch(@x + 1, @y - 2)
@move_failed = true
return
end
when "[ExOszBCustom]"
if passable?(@x , @y - 3)
turn_up
@y = $game_map.round_y(@y-1)
@real_y = (@y+1)*256
increase_steps
@move_failed = false
return
else
turn_up if turn_ok
check_event_trigger_touch(@x, @y - 3)
@move_failed = true
return
end
when "[ExOszC]"
if passable?(@x, @y - 2) and
passable?(@x - 1, @y - 2) and
passable?(@x + 1, @y - 2)
turn_up
@y = $game_map.round_y(@y-1)
@real_y = (@y+1)*256
increase_steps
@move_failed = false
return
else
turn_up if turn_ok
check_event_trigger_touch(@x, @y - 2)
check_event_trigger_touch(@x - 1, @y - 2)
check_event_trigger_touch(@x + 1, @y - 2)
@move_failed = true
return
end
end
end
ex_oszev_move_up
end
end
#==============================================================================
# Get Comments
#==============================================================================
# Author : OriginalWij
# Version : 1.1
#==============================================================================
#==============================================================================
# To use:
# call: result = {event}.comment?(comment, return_data = false)
# comment - tag to search for
# return_data - true = returns comment tag/nil, false = returns true/false
#==============================================================================
#==============================================================================
# What this does:
# checks for a tag in the comments of an event's active page
#==============================================================================
#==============================================================================
# Game_Event
#==============================================================================
class Game_Event
#--------------------------------------------------------------------------
# Comment? [New]
#--------------------------------------------------------------------------
def comment?(comment, return_data = false)
if !@list.nil?
for i in 0...@list.size
next if @list[i].code != 108 and @list[i].code != 408
if @list[i].parameters[0].include?(comment)
return return_data ? @list[i].parameters[0] : true
end
end
end
return return_data ? nil : false
end
end