Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
Zeriab

Zeriab's Caterpillar Script

Recommended Posts

Zeriab's Caterpillar Script

Version: 1.0

 

Introduction

 

This script creates a caterpillar of the party members by using events present on the map. (You need to actually make the events in the editor)

When the caterpillar is deactivated they act just like any other event. Most event commands still works on the events when the caterpillar is activated, but the results be strange.

 

Screenshot

 

catdi2.th.png

 

Demo

 

Currently I can only present a demo which includes Wachunga's Multiple Message Windows which requires SDK 1.5: http://www.sendspace.com/file/s5hkl7

This is because Wumpi and Despain requested it to work with that message system. (Only the caterpillar script is my work. I had nothing to do with the rest)

 

Script

 

http://zeriab.plesk3.freepgs.com/root/scri...pillar-v1.0.txt

 

Instructions

 

There are instructions in the header, but they might be hard to understand.

I have tried to break down the instructions so they hopefully are easier to understand.

 

The script uses map events with special tags in their name.

The map events are tied to specific actors.

If you want an event to represent the actor with id 1 in the database then somewhere in the name of the event put this: \cat_actor[1]

If you want an event to represent the actor with id 19 then use this instead: \cat_actor[19]

Basically you put in \cat_actor[id of actor] in the name of the event in question.

Note that you need to do this for every map. Yes, a lot of work.

 

You copy the script and paste it just above main. (I.e. you open the script editor, scroll to the bottom of the left form, click on main, press insert and paste the script into the right form)

 

In the script pay attention to the area just below the script header:

#==============================================================================
class Game_Caterpillar
 CATERPILLAR_ACTIVE_SWITCH = 23
 REMOVE_VISIBLE_ACTORS = true
 MAX_ACTORS = 4
 #--------------------------------------------------------------------------

 

This is the area of script where you can customize the script. I will go through each of the lines and explain what they do:

 

CATERPILLAR_ACTIVE_SWITCH = 23

This line will allow you to control whether the caterpillar is active or not by specifying a switch.

By default you can see that we have CATERPILLAR_ACTIVE_SWITCH = 23 which means you can turn the caterpillar ON and OFF by turning switch 23 ON and OFF.

Notice that switch 23 by default start on OFF and you must turn the switch ON before the caterpillar 'works'.

Feel free to change the number 23 to any number you want, i.e. which switch you want.

If you for example want to use switch 0169 instead it should be CATERPILLAR_ACTIVE_SWITCH = 169.

 

REMOVE_VISIBLE_ACTORS = true

This determines whether events for actors not currently in the party should be erased or not.

You can set this to a number like REMOVE_VISIBLE_ACTORS = 21 if you want to specify it with a switch. In this example you can turn it ON and OFF by turning switch 21 ON and OFF.

 

MAX_ACTORS = 4

I believe this is self-explonatory. Only change this if you can have more than 4 actors. No harm is done if you have a lower max.

 

A little word of caution: Do not put leading 0's in front of numbers in ruby. The reason is that Ruby considers numbers with leading 0's as octadecimal. I.e. 0, 1, 2, ... , 6, 7, 10, 11, ... No 8 nor 9. So for example 15 oct = 13 and 8 oct and 9 oct gives an error.

 

 

Here are two call scripts you can use if you feel the caterpillar isn't updated properly like problems with the graphic. Also highly useful should you have custom scripts and need to tell the caterpillar script has changed: (The call script is the event command on the bottom-right of page 3)

 

This will update the caterpillar to make sure the right events and right graphics are used.

$game_system.caterpillar.update

 

This will refresh the caterpillar which pretty much 'starts on a fresh'. All the events will be placed the same place as the player. As if you were teleported. Only use this if the update don't work.

$game_system.caterpillar.refresh

 

FAQ

 

Why did you make a caterpillar script when so many are around?

Despain requested a script that worked with a particular message script and Wumpi requested a script which used map events.

It didn't seem like there was such a caterpillar script out there although I admittedly didn't search hard.

So I made this believing it would work differently from other caterpillars scripts.

 

How do you get the events to act differently when they walk in the caterpillar and when they don't?

Create a page which has the caterpillar activation switch as precondition. If that is the top page (the one with the highest number) then that will be the event's functionality when in the caterpillar.

If you have problems with the graphic of some events not being what they are supposed to be then add a 1 frame wait and a script call:

$game_system.caterpillar.update

This should solve the problem. The 1 frame wait is necessary or the page change will not have been registered before the update and the result is the same.

 

The caterpillar made me stuck

Set the events of the caterpillar to Through. (Options area to the lower right)

 

Compatibility

 

This script will most likely not work with any other caterpillar system.

Saves made with this caterpillar script cannot be used should you remove it again. (Saves without it will work with it)

It should work both without and with the SDK and I believe it should with both SDK 1.x and SDK 2.x although I have only tested SDK 1.5.

 

Credits and Thanks

 

Credits goes to Zeriab for creating the system

 

I would like to thank Despain and Wumpi for requesting the script.

I would like to thank everyone using their time to try and use my system.

I would like to thank everyone reading this topic.

 

Thanks.

 

Author's Notes

 

I would be delighted if you report any bug, errors or issues you find.

In fact I would be delighted if you took the time and replied even if you have nothing to report.

Suggestions are more than welcome

 

And finally: ENJOY!

 

- Zeriab

Share this post


Link to post
Share on other sites

Sorry for the necropost, but I have to say that this script is abolutely awesome!

 

Since your post, even if it is old, requests comments, I'll be more than happy to make a few.

 

First off, a question about the script. At a certain point, I've found it useful to temporarily pause the caterpillar, like during cutscenes. I was able to manipulate the script so that I could pause the caterpillar, run a cutscene where all the actors move around, and when the caterpillar is unpaused, the actors dont run around and follow all of the movement evetns registered during the cutscene. So that part I added in is working fine.

 

What I'd like to do now is to get rid of one or two of the last move events, but I am stuck on how to do that. Basically what I have is a style that I am trying to stay consistent to. The main actor walks on a bridge, then automatically backs up using an event, and the bridge falls away. Once the player takes control of the main actor again, everyone else in the caterpillar walks over that bridge that just fell away as if it were still there, so my solution was to delete those registered move events, but Im banging my head aginst a wall getting it to work.

 

How can I implement a command like $game_system.caterpillar.delete_last_move so that the rest of the actors in the caterpillar continue on and ignore the last move the actor makes and dont follow his path into the now defunct area, while still maintaining the illusion that the caterpillar was never altered?

 

---

 

Bug: Only found one behavior that appears buggy. Non caterpillar actors with random move events can move over the actors in the caterpillar. I know a guy named Modern Algebra (rmrk.net) was able to fix that with a modified version of the script updated for VX, but it isnt compatible. Any way of incorporating that into the XP version?

 

He did have one other cool new feature in his modification, which was to allow a "ghost follower", basically a non party member, used for like escort missions and what not. Not essencial, but pretty neat.

Share this post


Link to post
Share on other sites

A necropost is one thing but a three year necropost... =.=

 

Alas, your post was more than a thankyou so we'll let it slide..

 

 

Anyways, Zeriab has left the RPG Maker Scene quite a few months ago. :<

 

He still pops around now and then, but chances are he's not going to work on this script again.

Share this post


Link to post
Share on other sites

A necropost is one thing but a three year necropost... =.=

 

Alas, your post was more than a thankyou so we'll let it slide..

 

 

Anyways, Zeriab has left the RPG Maker Scene quite a few months ago. :<

 

He still pops around now and then, but chances are he's not going to work on this script again.

 

Thats quite a shame as his community contributions are incredible! But, I understand. People want to move on to bigger and more satisfying things in their lives. So, is this the right place for Support, or is that in another sub-forum?

Share this post


Link to post
Share on other sites

Well the ironic thing is that... he just posted a few hours ago:

 

http://www.rmxpunlimited.net/forums/topic/7822-party-member-follow/page__view__findpost__p__67306

 

And to make things even more ironic, something related to character following.

 

But you should make a new topic in the parent forum.

Share this post


Link to post
Share on other sites

I added 3 features to make this script more Cutscene Friendly. Still looking for anyone to figure out how to prevent NPC's with move events from moving through the other Actors in the Caterpillar, then, this script will be perfect!

 

 

 

#==============================================================================
# ** Zeriab's Caterpillar Script
#------------------------------------------------------------------------------
# Zeriab
# 1.0
# 2008-08-16
#------------------------------------------------------------------------------
# This script creates a caterpillar of the party members by using events.
#------------------------------------------------------------------------------
# Paste this script just above main.
#
# Put \cat_actor[3] in the name of an event and it will be considered the event
# for the actor with id 3. The name could for example be "Cyrus\cat_actor[3]"
#
# The switch number specified with CATERPILLAR_ACTIVE_SWITCH (default is 23) is
# used to determine whether the events should be positioned in the caterpillar
# or not. Then the switch is off they are just like any other event.
#
# Heretic:  I added a CATERPILLAR_PAUSE_SWITCH (default is 22) to be a Temporary
# way to stop the Characters Movements during Cutscenes.  While this switch is
# set to ON, Characters in the Caterpillar will not move, unless specified by
# another Event, such as a Cutscene Event.  Any of the Main Actors Movements
# will NOT be Recorded, so when the Pause Switch is turned off, the other
# Caterpillar Actors will resume any new Movements of the Main Actor (including
# those in Events.  The reason that this was added is that while the Active
# switch is ON, the other Characters continue to follow the Main Actor, however
# turning the Active Switch OFF, then ON again causes everyone in the
# Caterpillar Train to stack on top of the Main Character.
# The REMOVE_VISIBLE_ACTORS (default is true) is used to determine whether
# actor event not in the party should be erased or not.
# If it is set to an integer rather than true or false the switch with the
# corresponding id is used. For example REMOVE_VISIBLE_ACTORS = 21 will allow
# you to determine whether the events should be erased or not depending whether
# switch 21 is OFF or ON.
#
# The MAX_ACTORS (default is 4) is used to determine how many player moves
# should be remembered. Only change this if you can have a party with more than
# 4 actors.
#
# Heretic:  I also added two additional Commands that need to be called
# by running a SCRIPT in an EVENT.  The two Commands are:
#
# clear_moves
# del_last_move
#
# Call these Commands by running:
# $game_system.caterpillar.clear_moves
# $game_system.caterpillar.del_last_move
#
# clear_moves erases all of the characters movements.  I found this to be
# semi useful at the end of cutscenes while trying to get any following
# characters back into a Caterpillar position when returning control of
# the Players Character to the Player.  This usually is needed when
# Caterpillar Pause is turned ON and OFF in different locations, as
# the Actors will try to walk to that previous location.
#
# del_last_move is useful for allowing the Player to move the Main Character
# on to a Tile that the rest of the Caterpillar Characters should NOT go
# for example, a bridge that falls away just as the Player steps on it, then
# steps back off of it.  In this situation, it would appear pretty strange
# to allow the rest of the Caterpillar to walk over a place where the
# Bridge had just fallen away and preventing future Player Movement
# across that Tile.
#
# ---  NOTES ---
#
#  I've found it to be useful when creating new maps to create ONE Placeholder
#  Event, followed by ALL of your games characters, whether they are going
#  to be in your party on the new mapscreen or not.  This has less to do with
#  the way Zeriab's script works, and more to do with the way that the
#  Multiple Message Windows script works.  Zeriab's script works by getting
#  the Events by Event Name, hence the requirement for "Name\cat_actor[3]" of
#  each event expected for the Caterpillar.  Unfortunately, the MMW Script
#  does NOT do quite as excellent of a job of identifying events by Name, but
#  instead, by Event ID.  Event ID's are created in ORDER.  Thus, the first event
#  that you creat will be EV001, and the next will be EV002, followed by EV003, so
#  on and so forth.  However, if you delete EV002 and have FIVE events, the NEXT
#  Event to be created will be the LOWEST POSSIBLE EVENT ID NUMBER.  Thus, if you
#  deleted EV002, then create a New Event, that New Event will take that lowest
#  number, making the New Event EV0002.  This is important because the MMW Script
#  calls by Event ID.  So during a Cutscene with your Characters, you have to
#  refer to them by \P[0] for the Main Character, and it skips EV0001 for some
#  reason, then goes to EV002 as the 2nd Character.  Again, this is NOT for
#  move events, only Dialogue Events (MMW).  I've found it much easier once
#  I have set up all the Characters to have the Same Event ID on EVERY MAP.  Also
#  since the Character Events will be the most frequently moved events, it is
#  easier to do without having to hunt through the entire list, when they are
#  all organized nicely at the top of your list.  Otherwise, you'll end up trying
#  to remember that on This Map, your 2nd Character is EV043 and on That Map, your
#  2nd Character is EV036.
#
#  Additional Note for Multiple Message Windows is that when making specific
#  characters talk by using the \P[0] or \P[2] switch,
#  DO NOT USE PRECEEDING ZEROS.
#  I.E. \P[002] is NOT the same as \P[2].  Only use \P[2] or \P[5]
#
#==============================================================================
class Game_Caterpillar
 CATERPILLAR_PAUSE_SWITCH = 22
 CATERPILLAR_ACTIVE_SWITCH = 23
 REMOVE_VISIBLE_ACTORS = false
 MAX_ACTORS = 4
 ##
 # Initialize the caterpillar
 #
 def initialize
@actors = []
@actor_id_to_event = {}
@move_list = []
 end
 ##
 # Clear the caterpillar data
 #
 def clear
@actors.clear
@actor_id_to_event.clear
@move_list.clear
 end
 ##
 # Clear the Move data
 #
 def clear_moves
@move_list.clear
 end
 ##
 # Add an actor event to the caterpillar
 #
 def add_actor(event, actor_id)
@actor_id_to_event[actor_id] = event
event.move_list.clear
added = false
for actor in $game_party.actors
  if actor.id == actor_id
	@actors << event
	if !$game_switches[CATERPILLAR_PAUSE_SWITCH]
	  event.moveto($game_player.x, $game_player.y)
	  added = true
	end
  end
end
if remove_visible_actors? && !added && $game_switches[CATERPILLAR_ACTIVE_SWITCH]
  event.erase
end
 end
 ##
 # Check if visible actors should be removed
 #
 def remove_visible_actors?
if REMOVE_VISIBLE_ACTORS.is_a?(Integer)
  return $game_switches[REMOVE_VISIBLE_ACTORS]
else
  return REMOVE_VISIBLE_ACTORS
end
 end
 ##
 # If the game player has been center. I.e. teleported somewhere.
 #
 def center
# Check if the caterpillar is active
return unless $game_switches[CATERPILLAR_ACTIVE_SWITCH]
# Clear the move_llist
@move_list.clear
# Refresh the caterpillar
update
# Move the actors to the new place
for event in @actors
  event.moveto($game_player.x, $game_player.y)
  event.move_list.clear
end
 end
 ##
 # Refresh the caterpillar. (Use sparingly)
 #
 def refresh
# Check if the caterpillar is active
return unless $game_switches[CATERPILLAR_ACTIVE_SWITCH] && !$game_switches[CATERPILLAR_PAUSE_SWITCH]
# Clear the data
clear
# Check each event
for event in $game_map.events.values
  if event.is_a?(Game_Event)
	event.check_caterpillar
  end
end
# Center the events around the player
center
# Update the caterpillar
update
 end
 ##
 # Register a player move
 #
 def register_player_move(move_speed, *args)
# Check if the caterpillar is active
return unless $game_switches[CATERPILLAR_ACTIVE_SWITCH] && !$game_switches[CATERPILLAR_PAUSE_SWITCH]
# Add the new command
@move_list.unshift([move_speed, args])
# Append the new moves to the caterpillar events
update_actor_movement
# Check if the last command should be removed
if @move_list.size > MAX_ACTORS + 1
  # Remove the last move command
  @move_list.pop
end
 end
 ##
 # Updates the actors movement.
 #
 def update_actor_movement
for i in 0...@actors.size
  if i + 1 < @move_list.size
	command = @move_list[i + 1]
	actor = @actors[i]
	actor.move_list.unshift(command[1])
	actor.move_speed = command[0]
  end
end
 end
 ##
 # Update the caterpillar.
 #
 def update
# Check if the caterpillar is active
return unless $game_switches[CATERPILLAR_ACTIVE_SWITCH]
old_actors = @actors
@actors = []
# Create a copy of the party actors
caterpillar = $game_party.actors.dup
# Remove the first element
caterpillar.shift
# Go through each actor that's possible present in the caterpillar
for actor in caterpillar
  event = @actor_id_to_event[actor.id]
  unless event.nil?
	@actors << event
	event.unerase if remove_visible_actors?
	event.character_name = actor.character_name
  end
end
if remove_visible_actors?
  # Go through the old actors to see if any should be erased
  for actor in old_actors
	unless @actors.include?(actor)
	  actor.erase
	end
  end
end
 end
 ##
 # Delete Last Characters Movement
 # (Call with $game_system.caterpillar.del_last_move)
 #
 def del_last_move
@move_list.delete_at(0)
 end
 ##
 # Unerase all erased actor events
 #
 def unerase_all
for event in @actor_id_to_event.values
  event.unerase
end
 end
 ##
 # Erase actor events not in the party
 #
 def erase_non_party_events
for event in @actor_id_to_event.values
  event.erase unless @actors.include?(event)
end
 end
end
class Game_Player < Game_Character
 unless self.method_defined?('zeriab_caterpillar_game_player_center')
alias_method(:zeriab_caterpillar_game_player_center, :center)
 end
 ##
 # When the player is centered (i.e. teleported somewhere)
 #
 def center(*args)
zeriab_caterpillar_game_player_center(*args)
$game_system.caterpillar.center
 end

 ##
 # Generate registration of player moves to the caterpillar code
 #
 MOVE_METHODS = ['move_down', 'move_left', 'move_right', 'move_up',
			  'move_lower_left', 'move_lower_right', 'move_upper_left',
			  'move_upper_right', 'jump']

 # Go through each method
 for method in MOVE_METHODS
# Create the script for the specific method
PROG = <<_END_
 def #{method}(*args)
x,y = self.x, self.y
super(*args)
unless self.x == x && self.y == y
  $game_system.caterpillar.register_player_move(@move_speed, '#{method}', args, [self.x, self.y])
end
 end
_END_
# Run the script
eval(PROG)
 end
end
class Module
 # Prevent adding the method again should it already be present.
 unless self.method_defined?('attr_sec_accessor')
def attr_sec_accessor(sym, default = 0)
  attr_writer sym
  attr_sec_reader sym, default
end

def attr_sec_reader(sym, default = 0)
  sym = sym.id2name
  string = "def #{sym};" +
		   "  @#{sym} = #{default}  if @#{sym}.nil?;" +
		   "  @#{sym};" +
		   "end;"
  module_eval(string)
end
 end
end
class Game_System
 attr_sec_accessor :caterpillar, 'Game_Caterpillar.new'
end
class Game_Event < Game_Character
 ##
 # Attributes
 #
 attr_sec_accessor :move_list, '[]'
 attr_accessor	 :move_speed
 attr_writer	   :character_name
 ##
 # Aliases
 #
 unless self.method_defined?('zeriab_caterpillar_game_event_passable?')
alias zeriab_caterpillar_game_event_initialize :initialize
alias zeriab_caterpillar_game_event_passable?  :passable?
if Module.constants.include?('SDK')
  alias zeriab_caterpillar_game_event_update_movement  :update_movement
else
  alias zeriab_caterpillar_game_event_update  :update
end
 end
 ##
 # Object Initialization
 #
 def initialize(map_id, event, *args)
# Default update
zeriab_caterpillar_game_event_initialize(map_id, event, *args)
# Check if the caterpillar is active
return unless $game_switches[Game_Caterpillar::CATERPILLAR_ACTIVE_SWITCH]
# Check for caterpillar actor denomination
check_caterpillar
 end
 ##
 # Check for caterpillar actor denomination
 #
 def check_caterpillar
# Check for caterpillar actor denomination (Last is used if more present)
@event.name.gsub(/\\cat_actor\[([0-9]+)\]/i) {@caterpillar_actor = $1 }
# Check if an valid denomination is found.
if @caterpillar_actor.is_a?(String)
  @caterpillar_actor = @caterpillar_actor.to_i
  if $data_actors[@caterpillar_actor].nil?
	@caterpillar_actor = nil
  else
	$game_system.caterpillar.add_actor(self, @caterpillar_actor)
  end
end
 end
 ##
 # Check passability
 #
 def passable?(*args)
if @caterpillar_actor.nil? || move_list.empty? ||
   !$game_switches[Game_Caterpillar::CATERPILLAR_ACTIVE_SWITCH]
  return zeriab_caterpillar_game_event_passable?(*args)
else
  return true
end
 end
 ##
 # SDK and Non-SDK stuff
 #
 if Module.constants.include?('SDK')
##
# Update Movement
#
def update_movement
  if @caterpillar_actor.nil? || move_list.empty? ||
	 !$game_switches[Game_Caterpillar::CATERPILLAR_ACTIVE_SWITCH]
	return zeriab_caterpillar_game_event_update_movement
  end
  # Interrupt if not stopping
  if jumping? or moving?
	return
  end
  # Retrive the command
  command = move_list[0]
  # Call the command
  method(command[0]).call(*command[1])
  # Make sure the x and y are right in the end
  @x, @y = *command[2]
  # Remove the command
  move_list.pop
end
 else # Non-SDK version
##
# Update Movement
#
def update
  # Interrupt if not stopping
  no_move = jumping? or moving?
  # Update
  zeriab_caterpillar_game_event_update
  # Check if it should return
  if $game_switches[Game_Caterpillar::CATERPILLAR_ACTIVE_SWITCH] &&
	 @caterpillar_actor != nil && !move_list.empty? && !no_move
	# Retrive the command
	command = move_list[0]
	# Call the command
	method(command[0]).call(*command[1])
	# Make sure the x and y are right in the end
	@x, @y = *command[2]
	# Remove the command
	move_list.pop
  end
end
 end
 ##
 # Bring back an erased event
 #
 def unerase
@erased = false
refresh
 end
end
class Game_Map
 ##
 # Aliases
 #
 unless self.method_defined?('zeriab_caterpillar_game_map_setup')
alias zeriab_caterpillar_game_map_setup :setup
 end
 ##
 # Transfer Player
 #
 def setup(*args)
$game_system.caterpillar.clear
zeriab_caterpillar_game_map_setup(*args)
 end
end
class Game_Switches
 ##
 # Aliases
 #
 unless self.method_defined?('zeriab_caterpillar_game_switches_setter')
alias zeriab_caterpillar_game_switches_setter :[]=
 end
 ##
 # Setter
 #
 def []=(switch_id, value, *args)
zeriab_caterpillar_game_switches_setter(switch_id, value, *args)
if switch_id == Game_Caterpillar::CATERPILLAR_ACTIVE_SWITCH
  $game_system.caterpillar.refresh
elsif switch_id == Game_Caterpillar::REMOVE_VISIBLE_ACTORS
  if value
	$game_system.caterpillar.erase_non_party_events
  else
	$game_system.caterpillar.unerase_all
  end
end
 end
end
class Interpreter
 ##
 # Aliases
 #
 unless self.method_defined?('zeriab_caterpillar_interpreter_command_129')
alias zeriab_caterpillar_interpreter_command_129 :command_129
alias zeriab_caterpillar_interpreter_command_322 :command_322
 end
 ##
 # Change Party Member
 #
 def command_129
result = zeriab_caterpillar_interpreter_command_129
$game_system.caterpillar.refresh
return result
 end
 ##
 # Change Actor Graphic
 #
 def command_322
result = zeriab_caterpillar_interpreter_command_322
$game_system.caterpillar.update
return result
 end
end

 

 

 

 

Feature 1: Caterpillar Pause

 

Turning the Caterpillar Active Switch ON and OFF causes all Cat Actors to snap on top of the Players Sprite, which is bad during cutscenes. If you use Caterpillar Pause (I set it as 22 Default, Customizable), you can move all the Actors including the Player around during cutscenes and have them get back into a Caterpillar without that snap on top of the player. Looks natural.

 

Feature 2: Clear Moves

 

Call with $game_system.caterpillar.clear_moves

 

Feature erases all of the recorded events that the Cat Actors have not executed yet. This is useful during cutscenes when you turn Caterpillar Pause ON in one location, the OFF in another location, the Cat Actors try to move to the old locations stored before going to your new updated location. Looks buggy. This dumps the whole move list. You can fake the caterpillar with events, or just allow the player to take control, although there will be a one step lag if you dont event new steps to follow

 

Feature 3:

 

Delete Last Move (del_last_move)

 

Call with $game_system.caterpillar.del_last_move

 

Useful if the Player steps someplace that you do not want the rest of the Caterpillar Actors to move to, such as a bridge that falls away. This is tricky to explain. Let's go with the Bridge example. When the player steps onto the bridge, even if you turn Cat Pause on there, the Cat Script will still register that move onto the tile that you dont want the cat actors to follow. Its unavoidable. All you can do is delete the last recorded move, then use an event to have each actor in the Caterpillar take one step backwards. Caterpillar remains active and controlled by the player, except for the stepping backwards part.

 

Now, if we can fix the script to prevent NPC's with move events from being allowed to pass thru the other Cat Actors...

Edited by Heretic86

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...