Home ] Up ] 

FRONT END NOTATION: At the time of this writing, the command
"(5:1000) redraw the screen and show everything that's just changed."
is still broken. (4/10/2005)


* // begin Teleport Help


(0:3) When somebody moves into object type 2404,
    (5:200) emit message {Dual Action Teleport System. Turn to see the rest of the destinations} to whoever set off the trigger.
    (5:200) emit message {Warning! Another furre teleporting to this spot will transfer you to their spot.} to whoever set off the trigger.

(0:3) When somebody moves into object type 2404,
(1:7) and they move into position (26,51),
(1:14) and the triggering furre is facing southeast (down and right),
    (5:200) emit message {Using [F3] will take you to the Disco Floors} to whoever set off the trigger.

(0:3) When somebody moves into object type 2404,
(1:7) and they move into position (26,51),
(1:15) and the triggering furre is facing southwest (down and left),
    (5:200) emit message {Using [F3] will take you to the Flip Table Demonstration} to whoever set off the trigger.

(0:3) When somebody moves into object type 2404,
(1:7) and they move into position (26,51),
(1:16) and the triggering furre is facing northwest (up and left),
    (5:200) emit message {Using [F3] will take you to the Water Walking Tiles Demonstration} to whoever set off the trigger.

* // end Teleport Help

Oh No! She's at it again!
Whee!

This is a Trek style teleporter script which was designed around a total of five locations interlinked with each other. In the original dream, each area was a distinct demonstration of some form of DS, with the teleporter being the 6th. Heh, in case you didn't figure it out, you're in one of the areas to begin with.

So the result is 5 teleporter areas interconnected with each other, and preforming a Dual Teleport action, which means it does not allow 'blocking' of a pad, if someone is on the other pad, you swap places with them, hehehe. The destinations are both triggers by stepping onto a pad, which is object 2404 in this, and is based on location, which I'm only going to show you one part of, specifically, the pad in the Flip Step area. The next part is kind of like this part, except it triggers based on turning.

* // go from flip step to disco floor
* // turn gives a destination

(0:4) When a furre turns,
(1:18) and they (moved from/are standing at) object type 2404,
(1:19) and they (moved from/are standing at) position (26,51),
(1:14) and the triggering furre is facing southeast (down and right),
    (5:200) emit message {[F3] to go to the Disco Floors} to whoever set off the trigger.

The rest of the code is like this, so rather than take up space, I'll refrain from making this a monster post and just post enough to get the idea of this script across. To keep this potential nightmare organized, before I post the next bit of code, I should mention that I keep each slice of the teleporter script together based on where you're at and which way you're facing, the code is actually arranged:
* // begin Teleport Help
^ warning emits here ^

* then for each slice *

* // go from flip step to disco floor
^ label for section ^
* // move into pad
Code to trigger when furre steps into teleport pad
* // turn gives a destination
Code to trigger when a furre turns while on a pad
* // CTRL+U sets positions
Code to set up the positions for using the teleporter script.

Hey, must be time to post then next part of this script!

* // CTRL+U sets positions

(0:16) When a furre uses any object,
(1:18) and they (moved from/are standing at) object type 2404,
(1:19) and they (moved from/are standing at) position (26,51),
(1:14) and the triggering furre is facing southeast (down and right),
    (5:300) set variable %teleportflag to the value 1.
    (5:300) set variable %teleportfrom.x to the value 26.
    (5:300) set variable %teleportfrom.y to the value 51.
    (5:300) set variable %teleportto.x to the value 80.
    (5:300) set variable %teleportto.y to the value 108.
    (5:300) set variable %beamfrom.x to the value 26.
    (5:300) set variable %beamfrom.y to the value 53.
    (5:300) set variable %beamto.x to the value 80.
    (5:300) set variable %beamto.y to the value 110.

Variable usage:

%teleportflag is used to indicate that a valid teleport is to take place
%teleportfrom is where the triggering furre is standing at
%teleportto is where the teleport will send them
%beamfrom is the from location's objects position
%beamto is the destination's objects position

The objects which are used for the teleportation effect are positioned one step due south of the trigger position as so to cover the triggering furre. The actual code for teleporting is a large chunk which in involves a bunch of object swapping at both locations, along with a bunch of redraws inbetween the swaps to give the illusion of being teleported. I included all the redraws here.

* // begin teleport system

(0:16) When a furre uses any object,
(1:18) and they (moved from/are standing at) object type 2404,
(1:200) and variable %teleportflag is equal to 1.

* // power up
    (5:41) place object type 2413 at (%teleportfrom).
    (5:41) place object type 2413 at (%teleportto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2406 at (%beamfrom).
    (5:41) place object type 2406 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2407 at (%beamfrom).
    (5:41) place object type 2407 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2408 at (%beamfrom).
    (5:41) place object type 2408 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2409 at (%beamfrom).
    (5:41) place object type 2409 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2410 at (%beamfrom).
    (5:41) place object type 2410 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2411 at (%beamfrom).
    (5:41) place object type 2411 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.

Next is the part where you do the actual transfer of the furre from one position to the other, or the psuedo command:
(5:##) swap the furre at (X1,Y1) with the furre at (X2,Y2).
How? By using a location "offscreen" to move the two furre's through.

* // move the furre's
  (3:2) at position (%teleportto) on the map,
    (5:16) move any furre present to (56,9) if there's nobody already there.
  (3:2) at position (%teleportfrom) on the map,
    (5:16) move any furre present to (%teleportto) if there's nobody already there.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
  (3:2) at position (56,9) on the map,
    (5:16) move any furre present to (%teleportfrom) if there's nobody already there.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.

* // power down
    (5:41) place object type 2410 at (%beamfrom).
    (5:41) place object type 2410 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2409 at (%beamfrom).
    (5:41) place object type 2409 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2408 at (%beamfrom).
    (5:41) place object type 2408 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2407 at (%beamfrom).
    (5:41) place object type 2407 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2406 at (%beamfrom).
    (5:41) place object type 2406 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.

* // close teleport down
    (5:41) place object type 2412 at (%beamfrom).
    (5:41) place object type 2412 at (%beamto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:41) place object type 2404 at (%teleportfrom).
    (5:41) place object type 2404 at (%teleportto).
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:300) set variable %teleportflag to the value 0.
  (3:9) everyplace that can be seen from (%teleportto),
    (5:94) turn any furre present clockwise.
    (5:94) turn any furre present clockwise.
    (5:94) turn any furre present clockwise.
    (5:94) turn any furre present clockwise.
    (5:201) emit message {Teleportation complete} to any furre present.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
  (3:9) everyplace that can be seen from (%teleportfrom),
    (5:94) turn any furre present clockwise.
    (5:94) turn any furre present clockwise.
    (5:94) turn any furre present clockwise.
    (5:94) turn any furre present clockwise.
    (5:201) emit message {Teleportation complete} to any furre present.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.
    (5:1000) redraw the screen and show everything that's just changed.

The turns are an attempt to force the appearance of the furres once teleportation is complete, this is not as successful as I think it should be. In this I would appreciate any help in resolving this quirk, it is a bit annoying that the DS works great up to this point, but that the client does not update the screen.

Or should this be called a bug?