[Circle] Ships

linebacker@microlink.net
Date: 11/10/96


This is how I did ships, it may not be the best way, but
it works and is  flexible.

First:

Create a room spec_proc that loads an object at certain time.
(this will be the ship while it is in port)

The same object that is created above needs a spec_proc that
will somewhow transfer the player to the ship (which is just
a zone that has no entrance)

This way, a player can only get to the ship if the object
is loaded in the room (the ship) and they enter the right
commnad (mine is 'board ship')

Now, the room spec_procs needs to unload the object at a certain
time (I leave mine in port for two hrs)

Second: 

Code the zone for the ship and do whatever you want with it.

I create a mob called the skipper that does various shouts
and duties while the ship is 'in motion' (that is when there
is no dock loaded)

Here is where I had some probs, so I will list both methods of
how I unloaded the ship.

met1: Have a room on the ship load an object called let's say,
the port of waterdeep, and theplayer will see when the enter 
that room of the ship, "A gangplank stretches out to the dock
of Waterdeep" or whatever, then have the player type 'cross
dock' or whatever. (this is in the object spec_proc) and then
transfer the player to the appropriate room in the game.

met2: When a certain time is reached, have the zone transfer
allplayers to the port room and send them some kind of emote,
like, The dock reaches Waterdeep and the crew hutslte you off
the ship. This way is limited because a ship can only have
one destnnation.

So all you need to do is corrdinate where and when the ship 
needs to be loaded and unloaded. Have a room spec_proc at
each of the rooms do this, and thus it simulates the moving
of the ship. Players can stay on board for as long as they
like, but can only get off when a 'gangplank to a dock' is 
loaded into the room you board the ship from.
(if using met2 from above)

Basically all you have is the following:

The ship zone 
A room spec_proc for each port that needs a ship loaded and unload to
A room spec_proc for the room on the ship that loads the 'exit'
A skipper spec_proc (just for roleplaying purposes)
The following objects;
The Ship (this is what each port room will load, it will have an obj spec_proc)
Each dock/plank/ whatever (this will also have an obj spec_proc)

This all a big illusion, theplayer thinks they are 'riding' on a ship

Here is what really happens:

PLayer enters a room with the ship loaded.
player types <board ship>
player is transfered to the ship zone
....time passes
Captain shouts, approaching Waterdeep.....
....The waterdeep dock is loaded into the ship
player types <cross dock>
Player is transfered to the Waterdeep port (where the ship is also
loaded in case they wanna get right back on)
....time passes
Ship is extracted from the port

It is just a big schedule of obj_to_rooms, messages, obj_from_rooms
and etc..

I hope this makes sense, I am working on very little sleep.

Almost all the code used in this entire thing can be piece together
from stock circle funtions. The hardest part of this is the obj_spec_proc
that looks for an argument from the player (board ship) and then
transfer to the ship zone. If you need help with this part, mail me and I
will help.

Chuck












+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
|   http://cspo.queensu.ca/~fletcher/Circle/list_faq.html   |
+-----------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/18/00 PST