Lendren2008-08-16 13:39:44
A little system to handle your pyramid or pentagon puzzle. This is only useful for people who use zMUD and also use its mapper. (How many people have a puzzle, and zMUD, and use its mapper? Maybe just me, but maybe not.)
What does this do? Every time you set a pyramid location, it remembers where it is for you (based on where you are on the map). It also handles unsetting locations. This lets you do three useful things. First, whenever you use your pyramid, your location on the map will be updated accordingly. Second, PYRAMID LIST gives you a list like this:
Click any of the location names to jump to that location (requires MXP).
Second, you can set up "aliases" by editing the variable dPyramidAliases. Make it a data record; in the left column put a unique name for a location (say, "flame") and in the right, the room number for that location in your zMUD mapper (in my case 585, but yours would depend on the order you mapped rooms). Add more rows as desired. Then you can just type PYRAMID FLAME and it'll figure out which (if any) of your slots holds that location and jump you to it. (To tell the number for a room on your map, click that room and look in the Properties, on the Other tab look at VNUM, the first field.)
At the start of every game month, execute PYRAMID CLEAR. If you use Workbench Calendar, set this up as follows: recurringcmd 214-03-01 25 pyramid clear (only replace the date 214-03-01 with the next first-of-the-month after the date you do it), and you'll never have to remember that.
(Note: if the verb for pentagon puzzle isn't pyramid, you just need to change the alias name from pyramid to pentagon or whatever it is. This will also have to be changed inside the alias in a few places. The trigger texts might also have to change.)
Enjoy! If you end up using this, please let me know. I'm curious if anyone else can benefit from it, and I'd also like to let you know if it changes.
CODE
#CLASS {Equipment|Artifacts}
#ALIAS pyramid {#if (%1 == list) {#if (@lPyramidDestinations = "") {#show Your pyramid is empty.} {ScratchVar = 1;#forall @lPyramidDestinations {#mxp %ansi( blue, bold, white)@ScratchVar %ansi( grey, white): ~%roomname( %i)~<~/send~> (%zonename( %roomzone( %i)));#add ScratchVar 1}};#send ""} {#if (%1 == clear) {lPyramidDestinations = "";#show %ansi( red, bold, white)Pyramid slots have been cleared.} {#if (%1 = unset) {iPyramidDeleting = %item( @lPyramidDestinations, %2);~pyramid unset %2} {#if (%isnumber( %1) and %number( %1)<=4) {pyramid solve %1} {ResultVar = 0;ScratchVar = %db( @dPyramidAliases, %1);#if (@ScratchVar <> "" and %ismember( @ScratchVar, @lPyramidDestinations)) {ResultVar = %ismember( @ScratchVar, @lPyramidDestinations)};#if (@ResultVar <> 0) {#exec %concat( "pyramid solve ", @ResultVar)} {#if (%1 == solve) {#temp "tPyramidTravel" {^Your paradox puzzle draws you through the aether.} {#te %item( @lPyramidDestinations, %2)}};~pyramid %-1}}}}}}
#VAR dPyramidAliases {}
#VAR iPyramidDeleting {0}
#VAR lPyramidDestinations {}
#TRIGGER {^You press a small button at the centre of the paradox pyramid and it begins to whirr and suddenly flashes a bright light, momentarily blinding you.$} {#if (@iPyramidDeleting <> 0) {#delitem lPyramidDestinations @iPyramidDeleting;iPyramidDeleting = 0} {#additem lPyramidDestinations %roomnum( );#if (%numitems( @lPyramidDestinations) >= 4) {#show Your pyramid puzzle is full.}}}
#CLASS 0
#ALIAS pyramid {#if (%1 == list) {#if (@lPyramidDestinations = "") {#show Your pyramid is empty.} {ScratchVar = 1;#forall @lPyramidDestinations {#mxp %ansi( blue, bold, white)@ScratchVar %ansi( grey, white): ~
#VAR dPyramidAliases {}
#VAR iPyramidDeleting {0}
#VAR lPyramidDestinations {}
#TRIGGER {^You press a small button at the centre of the paradox pyramid and it begins to whirr and suddenly flashes a bright light, momentarily blinding you.$} {#if (@iPyramidDeleting <> 0) {#delitem lPyramidDestinations @iPyramidDeleting;iPyramidDeleting = 0} {#additem lPyramidDestinations %roomnum( );#if (%numitems( @lPyramidDestinations) >= 4) {#show Your pyramid puzzle is full.}}}
#CLASS 0
What does this do? Every time you set a pyramid location, it remembers where it is for you (based on where you are on the map). It also handles unsetting locations. This lets you do three useful things. First, whenever you use your pyramid, your location on the map will be updated accordingly. Second, PYRAMID LIST gives you a list like this:
QUOTE
1 : The Portals of Serenwilde. (Serenwilde Commune)
2 : The Glinshari Circle. (Serenwilde Southern)
3 : An open, grassy area. (Spiritsinger Guildhall)
4 : The top of a staircase of flowing energies. (Transcendental Fulcrux)
2 : The Glinshari Circle. (Serenwilde Southern)
3 : An open, grassy area. (Spiritsinger Guildhall)
4 : The top of a staircase of flowing energies. (Transcendental Fulcrux)
Click any of the location names to jump to that location (requires MXP).
Second, you can set up "aliases" by editing the variable dPyramidAliases. Make it a data record; in the left column put a unique name for a location (say, "flame") and in the right, the room number for that location in your zMUD mapper (in my case 585, but yours would depend on the order you mapped rooms). Add more rows as desired. Then you can just type PYRAMID FLAME and it'll figure out which (if any) of your slots holds that location and jump you to it. (To tell the number for a room on your map, click that room and look in the Properties, on the Other tab look at VNUM, the first field.)
At the start of every game month, execute PYRAMID CLEAR. If you use Workbench Calendar, set this up as follows: recurringcmd 214-03-01 25 pyramid clear (only replace the date 214-03-01 with the next first-of-the-month after the date you do it), and you'll never have to remember that.
(Note: if the verb for pentagon puzzle isn't pyramid, you just need to change the alias name from pyramid to pentagon or whatever it is. This will also have to be changed inside the alias in a few places. The trigger texts might also have to change.)
Enjoy! If you end up using this, please let me know. I'm curious if anyone else can benefit from it, and I'd also like to let you know if it changes.
Xenthos2008-08-16 18:32:34
Well, I can guarantee you that there's at least one more person who fits those three requirements...
I'll look into the script at some point, probably. It does sound useful.
I'll look into the script at some point, probably. It does sound useful.
Lendren2008-12-13 22:39:22
I now have two pyramid puzzles so I can have eight points, and I've revamped the script to integrate the two of them to swap between them at need. I guess if the number of people who have a puzzle and use zMUD and use the mapper is small, the number who have two pyramids is even smaller. So if anyone's interested in seeing it, let me know and I'll post.