Anyone ever try to use this Graphic for an Event?
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fwww.775.net%2F%7Eheretic%2Fdownloads%2Frmxp%2Fimages%2Ftrouble_sprite.jpg&hash=0b3b84162d398fd235221ab09b574c138c8d250c)
Your Character has a problem of "Walking Behind or Under" that Graphic. Like this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fwww.775.net%2F%7Eheretic%2Fdownloads%2Frmxp%2Fimages%2Ftrouble_sprite2.jpg&hash=521ca69f621230783176b21d401070dfe15bca13)
That isnt what we want. I wont bother to explain the problem in technical terms, but I will offer a FIX.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fwww.775.net%2F%7Eheretic%2Fdownloads%2Frmxp%2Fimages%2Ftrouble_sprite3.jpg&hash=bdaf05a97f4dbc6992e023665fb621b50f747787)
THAT is what we want! Did you notice the Characters are now on TOP of the Graphic?
The problem is that the engine "Thinks" that the Graphic is a Character that is standing up and not laying on the ground. This script tells the Engine to just render it as "Flat" instead of as "Standing Up".
[spoiler]# Heretic Fix Flat Sprites
#
# People stand up straight off the ground, but
# Rugs lay flat on the ground.
#
# The intention of this script is to allow a quick fix for
# Sprites that are supposed to look like they should lay flat
# Namely, the "Support 7" Graphics. They look like they should
# lay flat, and not stack in front of the characters EVER.
#
# The "Support 7" Graphic, make an event, give it a Graphic
# and find "Support 7", it is one up from the bottom of the list.
#
# ALWAYS_ON_TOP MUST BE OFF!!!
#
# To define an event to be FLAT, change the NAME of the EVENT
# and add \z_flat, so a Rug would be "Rug\z_flat"
#
# If you have trouble with your Event stacking correctly
# you can try using the optional parameter field to specify a Z-Index to add
# I.E. - "Sign\z_flat[32]", 32 per tile you want higher.
#
# This is useful if you have TWO EVENTS you want to stack, like a TREE
# I sometimes use EVENTS to hold GRAPHICS when I need to put more
# than Three Layers of Graphics
#
# Another option is "Name\z_add[32]" which REQUIRES a Number
#
# This is intended also for fixing things like Graphic Events. To make it
# stack on top of Characters, give it a nice high number, but less than 999
# as 999 is the Z-Index for "Always On Top", thus allowing even more
# Graphic Events to stack on top of that. 500 is a good number to work with.
#
# This whole thing gives you MUCH MORE CONTROL over the way that events stack
# when they occupy the same space. Normally, the engine just cycles through
# Events in order, so if you have 3 Graphic Events stacked on top of one another
# the Event with the LOWEST EVENT ID will be on Bottom of that Stack.
#
# Needless to say, if you are fighting with the Stacking Order and trying to
# figure out Event ID's, then change tons of other stuff, this script will
# save you time from heavy modifications.
#
#
# Shouldnt affect performance because it is only called when the map is loaded
# which would be the only place you might take a performance hit.
#
# If you use my revision of Zeriab's Caterpillar, place this BELOW that script
# and above MAIN
class Game_Event < Game_Character
unless self.method_defined?('flat_sprite_initialize')
alias flat_sprite_initialize initialize
end
def initialize(map_id, event, *args)
flat_sprite_check(event)
flat_sprite_initialize(map_id, event, *args)
end
unless self.method_defined?('flat_sprite_screen_z')
alias flat_sprite_screen_z screen_z
end
def screen_z (height = 0)
if not @z_flat.nil? and !@always_on_top
return z = (@real_y - $game_map.display_y + 3) / 4 + @z_flat
end
if not @z_add.nil? and !@always_on_top
return z = (@real_y - $game_map.display_y + 3) / 4 + 32 + @z_add
end
#Run Original screen_z
flat_sprite_screen_z(height)
end
def flat_sprite_check(event)
# Options
#
# "Name\z_flat"
# "Name\z_flat[32]" for characters manual adjustments, for whatever reason
# "Name\z_add[32]" for characters higher than 32 pixels high
event.name.gsub(/\\z_flat\[([-]?[0-9]+)\]|\\z_flat/i) {@z_flat = $1.to_i }
return if @z_flat
event.name.gsub(/\\z_add\[([-]?[0-9]+)\]/i) {@z_add = $1.to_i }
return if @z_add
end
end[/spoiler]
edit: cleaned up the Regular Expressions a little bit.
To do this, change the Name of the event to include \z_flat, so "Rug\z_flat" will force the engine to render characters on top of it correctly.
There are a couple other options in there in case you are having trouble with Event Stacking. \z_add renders sprites with a higher z_index based on the graphics height. If it is taller than 32 pixels, it adds 31 to the z_index, plus, whatever you specify. The optional argument for \z_flat[int] does NOT consider height, and sets the Z_index to include your x. Thus, you want the z_index to be 32 higher (32 per pixel), put in \z_flat[32], or \z_flat[1] if you want one event to stack in front of another without using @always_on_top.