#21100
Test~
0 g 100
~
%echo% This trigger commandlist is not complete!
~
#21101
Load Cards~
0 d 100
*~
set zone 211
set start %self.room.vnum%
eval room %self.room.vnum% + 1
switch %speech.car%
case shuffle
if %self.varexists(Cards_Dealt)%
%echo% n The voice is in your mind again.
%echo% c 'I'm sorry, the cards seem to be already laid out.' n
halt
else
set deck 78
set layout 10
global deck
global layout
set var %zone%01
emote shuffles the cards.
%echo% n %self.name% seems to speak directly to your mind.
%echo% c 'Keep shuffling until you feel the deck understands your question. n
%echo% c When you're ready, say DEAL.' n
set Deck_Shuffled 1
global Deck_Shuffled
while %var% < %zone%79
set %var% 1
remote %var% %self.id%
eval var %var% + 1
done
halt
end
end
case deal
if !%self.varexists(Deck_Shuffled)%
%echo% n The voice is in your mind again.
%echo% c 'The cards don't seem to understand your question yet. Have you n
%echo% c SHUFFLEd?' n
halt
elseif %self.varexists(Cards_Dealt)%
%echo% n The voice is in your mind again. n
%echo% c 'I'm sorry, the cards seem to be already laid out.' n
halt
else
emote starts to lay out the cards.
%echo% n The voice seems to surround you now.
%echo% c 'When you're ready, please go up to start your reading. Once you n
%echo% c start, you won't be able to come back. Of course, you can always n
%echo% c come back for another reading. n
wait 2 sec
%echo% c At each room, LOOK CARD to see the meaning. Reverse means n
%echo% c that the card laid out upsidedown which changes the meaning. n
%echo% c Don't worry about it. The card will show the reversed meaning. n
%echo% c The room name will explain what the placement of the card means.' n
wait 1 sec
%door% %self.room.vnum% up flags a
emote opens the door to the stairway.
while %layout%
set zonebase %zone%00
eval card %random.78% + %zonebase%
eval temp %%self.varexists(%card%)%%
eval hascard %temp%
if %hascard%
mgoto %room%
set rand %random.2%
if %rand% == 1
%load% obj %zone%99
end
%load% obj %card%
mgoto %start%
rdelete %card% %self.id%
eval deck %deck% - 1
eval layout %layout% - 1
eval room %room% + 1
global deck
global layout
set Cards_Dealt 1
global Cards_Dealt
else
end
done
halt
break
default
break
end
~
#21102
Look Card~
2 c 100
*~
* Parnassus' Special Anti-Freeze Formula
if %cmd.mudcommand% == nohassle
return 0
halt
end
*
set zone 211
if %self.vnum% > %zone%10 && %self.vnum% < %zone%24
* if %self.vnum% > %zone%00 && %self.vnum% < %zone%24
set cmdroom %zone%20
elseif %self.vnum% > %zone%30 && %self.vnum% < %zone%44
set cmdroom %zone%40
elseif %self.vnum% > %zone%45 && %self.vnum% < %zone%64
set cmdroom %zone%60
else
return 0
halt
end
if %cmd.mudcommand% == look || %cmd.mudcommand% == examine
* Look Trigger Written by Fizban - June 06 2013
* This trigger changes the meaning of the card for reverse.
* If there is no argument, just look.
if !%arg%
return 0
halt
else
* Check for the reverser. If it is in the room, give
* one meaning. If it is not, give the other.
eval rev %%findobj.%self.vnum%(%zone%99)%%
* The ~ anchors the comparison to the front of the word.
* rd /= card but ~rd is not a part of ~card while ~c is.
set arg ~%arg%
if ~reverse /= %arg%
if %rev% < 1
%send% %actor% You do not see that here.
halt
else
%send% %actor% The card is upside down.
halt
end
end
if ~card /= %arg%
if %rev% < 1
%force% %actor% look card
else
%force% %actor% look reverse
end
else
return 0
end
end
elseif %cmd.mudcommand% == quit || %cmd.mudcommand% == afk
%send% %actor% Because you have decided to %cmd.mudcommand%, you cannot finish the reading.
%echoaround% %actor% %actor.name% has to leave the reading now.
wait 1 sec
%send% %actor% You are magically sent to the end of the reading.
%echoaround% %actor% %actor.name% is whisked away in a puff of smoke.
wait 1 sec
%teleport% %actor% %cmdroom%
wait 1 sec
%at% %cmdroom% %force% %actor% down
wait 1 sec
%at% %actor% %force% %actor% %cmd% %arg%
wait 1 sec
halt
elseif %cmd% == return || %cmd% == recall || %cmd% == teleport || %cmd.mudcommand% == goto
%send% %actor% Because you have decided to %cmd%, you cannot finish the reading.
%echoaround% %actor% %actor.name% has to leave the reading now.
wait 1 sec
%send% %actor% You are magically sent to the end of the reading.
%echoaround% %actor% %actor.name% is whisked away in a puff of smoke.
wait 1 sec
%teleport% %actor% %cmdroom%
wait 1 sec
%at% %cmdroom% %force% %actor% down
wait 1 sec
%at% %actor% %force% %actor% %cmd% %arg%
wait 1 sec
halt
else
return 0
end
~
#21103
Clear the Cards - r21120, r21140, r21160~
2 q 100
~
* Clears cards from the reading and reader marker
* when player finishes the reading.
if %direction% == down
wait 2 sec
%purge%
set room %self.vnum%
eval purgeroom %room% - 10
%door% %purgeroom% up flags abcd
eval purgeroom %purgeroom% + 1
while %purgeroom% < %self.vnum%
%at% %purgeroom% %purge%
eval purgeroom %purgeroom% + 1
done
eval purgeroom %purgeroom% + 5
%at% %purgeroom% %purge%
end
~
#21104
Reset the Fortuneteller~
0 q 100
~
* Clears the fortune-teller for the next player.
* Closes the doors coming back to make it easier to see the path while
* keeping the possibility of checking past cards.
if %direction% == up
* set deck 78
set layout 10
* global deck
global layout
rdelete Deck_Shuffled %self.id%
rdelete Cards_Dealt %self.id%
rdelete tarot_reading_started %self.id%
if %self.room.vnum% == 21110 || %self.room.vnum% == 21130 || %self.room.vnum% == 21150
* %door% %self.room.vnum% up flags abc
eval cardroom %self.room.vnum% + 2
%door% %cardroom% down flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% north flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% south flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% west flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% north flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% west flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% south flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% south flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% south flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% east flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% south flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% west flags ab
eval cardroom %cardroom% + 1
%door% %cardroom% north flags ab
end
end
~
#21105
Dealer Greets~
0 h 100
~
wait 2 sec
%echo% n The voice of %self.name% seems to fill your head.
%echo% c 'Ahh, you have something on your mind? Let us see what the n
%echo% c cards have to say. Unfortunately, you cannot hold or shuffle n
%echo% c my cards, but concentrate on your question and say shuffle. n
%echo% c When you feel that the cards know your question, say deal and n
%echo% c I shall lay out the cards for you to examine. n
wait 3 sec
%echo% c Usually I would interpret the cards for you, but that is n
%echo% c forbidden me in this space and time. All I am allowed is to n
%echo% c show you the cards and you must decide their meanings in your n
%echo% c own mind. Move from card to card. Each space and each card n
%echo% c will explain itself to you. 'LOOK CARD' in each room to see n
%echo% c the explanation. These are very simplified meanings so they n
%echo% c are very general. n
wait 3 sec
%echo% c Remember, this is just a game and should not be taken n
%echo% c seriously any more than you would run your life by newspaper n
%echo% c horoscopes or slips of paper from fortune-cookies. n
wait 2 sec
%echo% c When you're ready, start by saying SHUFFLE.' n
~
#21106
Receptionist juggles appointments - M21104~
0 d 100
*~
set zone 211
* set findobj 0
* Checks for available readers
* Kicks out people that are afk, etc
if %self.room.vnum% != %zone%02
emote looks around in confusion.
say I'm sorry. I have to get to my office.
emote leaves.
eval findmob %%findmob.%zone%02(%self.vnum%)%%
if %findmob% > 0
%purge% %self%
else
mgoto %zone%02
halt
end
end
if %actor% == %self%
halt
end
* This loop goes through the entire string of words the actor says. .car is the
* word and .cdr is the remaining string.
eval word %speech.car%
eval rest %speech.cdr%
while %word%
* %echo% Word: %word%
* %echo% rest: %rest%
switch %word%
* Appointment starts the conversation.
* Objxxx98 keeps trigger from reacting to other conversations.
* if %actor.is_pc% &&
case appointment
* Check to see if someone is already trying to get an appointment.
if %self.has_item(%zone%98)% && !%actor.varexists(Making_Tarot_Appointment_%zone%)%
say I'm sorry, %actor.name%. I'm speaking with someone else right now.
halt
end
if !%self.has_item(%zone%98)%
%load% o %zone%98
set Making_Tarot_Appointment_%zone% 1
remote Making_Tarot_Appointment_%zone% %actor.id%
say Let me just see if any of our consultants have an opening.
say Say restart at any time to leave or start over.
%echo% She consults an appointment book.
wait 2 seconds
set available 0
set readerno 0
set unreaderno 0
eval temp %%findobj.%zone%25(card)%%
eval findobjsibyl %temp%
if %findobjsibyl% < 1
eval available %available% + 1
eval readerno %readerno% + 1
set reader%readerno% Sibyl
else
eval unreaderno %unreaderno% + 1
set unreader%unreaderno% Sibyl
end
eval temp %%findobj.%zone%45(card)%%
eval findobjesmerelda %temp%
if %findobjesmerelda% < 1
eval available %available% + 1
eval readerno %readerno% + 1
set reader%readerno% Esmerelda
else
eval unreaderno %unreaderno% + 1
set unreader%unreaderno% Esmerelda
end
eval temp %%findobj.%zone%65(card)%%
eval findobjjaelle %temp%
if %findobjjaelle% < 1
eval available %available% + 1
eval readerno %readerno% + 1
set reader%readerno% Jaelle
else
eval unreaderno %unreaderno% + 1
set unreader%unreaderno% Jaelle
end
if %available% == 0
say Sorry, Sibyl, Esmerelda and Jaelle all seem to be with clients right now.
say Please try again later.
rdelete Making_Tarot_Appointment_%zone% %actor.id%
halt
end
if %available% == 1
say %unreader1% and %unreader2% are with clients but %reader1% is available.
say Say %reader1% if you want to see her.
set Choosing_Tarot_Reader_%zone% 1
remote Choosing_Tarot_Reader_%zone% %actor.id%
halt
end
if %available% == 2
say %unreader1% is with a client but %reader1% and %reader2% are available.
say Say %reader1% or %reader2% to see her.
set Choosing_Tarot_Reader_%zone% 1
remote Choosing_Tarot_Reader_%zone% %actor.id%
halt
end
if %available% == 3
say %reader1%, %reader2% and %reader3% are all available right now.
say Say %reader1%, %reader2% or %reader3% to see her.
set Choosing_Tarot_Reader_%zone% 1
remote Choosing_Tarot_Reader_%zone% %actor.id%
halt
end
end
break
case Sibyl
if %actor.varexists(Choosing_Tarot_Reader_%zone%)%
eval findobj %%findobj.%zone%25(card)%%
if %findobj% < 1
say Sibyl is ready to see you now.
%door% %zone%02 north flags a
wait 1 sec
%force% %actor% north
%door% %zone%02 north flags abc
rdelete Making_Tarot_Appointment_%zone% %actor.id%
rdelete Choosing_Tarot_Reader_%zone% %actor.id%
mgoto %zone%99
%purge% quill
mgoto %zone%25
%load% obj %zone%49
mgoto %zone%02
else
Say I'm sorry. Sibyl is with another client right now.
say Please choose one of the available readers.
end
end
break
case Esmerelda
if %actor.varexists(Choosing_Tarot_Reader_%zone%)%
eval findobj %%findobj.%zone%45(card)%%
if %findobj% < 1
say Esmerelda is ready to see you now.
%door% %zone%02 west flags a
wait 1 sec
%force% %actor% w
%door% %zone%02 west flags abc
rdelete Making_Tarot_Appointment_%zone% %actor.id%
rdelete Choosing_Tarot_Reader_%zone% %actor.id%
mgoto %zone%99
%purge% quill
mgoto %zone%45
%load% obj %zone%52
mgoto %zone%02
else
Say I'm sorry. Esmerelda is with another client right now.
say Please choose one of the available readers.
end
end
break
case Jaelle
if %actor.varexists(Choosing_Tarot_Reader_%zone%)%
eval findobj %%findobj.%zone%65(card)%%
if %findobj% < 1
say Jaelle is ready to see you now.
%door% %zone%02 east flags a
wait 1 sec
%force% %actor% e
%door% %zone%02 east flags abc
rdelete Making_Tarot_Appointment_%zone% %actor.id%
rdelete Choosing_Tarot_Reader_%zone% %actor.id%
mgoto %zone%99
%purge% quill
mgoto %zone%65
%load% obj %zone%50
mgoto %zone%02
else
Say I'm sorry. Jaelle is with another client right now.
say Please choose one of the available readers.
end
end
break
case Restart
if %actor.varexists(Making_Tarot_Appointment_%zone%)%
rdelete Making_Tarot_Appointment_%zone% %actor.id%
rdelete Choosing_Tarot_Reader_%zone% %actor.id%
mgoto %zone%99
%purge% quill
mgoto %zone%02
emote puts down the appointment book.
end
break
default
break
done
* End of the loop we need to take the next word in the string
* and save the remainder for the next pass.
eval word %rest.car%
eval rest %rest.cdr%
done
~
#21107
Tarot Receptionist greets - M21104~
0 h 100
*~
if %direction% == south
welcome %actor.name%
%send% %actor% Ana says, 'Would you like to make an appointment with one of our readers?'
%send% %actor% Ana says, 'Before we start, make sure you have enough time to finish your reading.'
%send% %actor% Ana says, 'Please do not go afk or leave the game before you finish the reading.'
%send% %actor% Ana says, 'If you are sure, just say appointment.'
else if %direction% == up
smile %actor.name%
%send% %actor% Ana says, 'I hope you enjoyed your reading. Please, come again soon.'
%send% %actor% Ana says, 'Of course, if you want another appointment now, say appointment.'
end
~
#21108
Leaving Tarot~
0 c 100
*~
* For mobs to clear reading from players blocking by starting and leaving.
* Should be adjusted to your muds commands.
* Parnassus' Special Anti-Freeze Formula
if %cmd.mudcommand% == nohassle
return 0
halt
end
*
set zone 211
if %cmd.mudcommand% == quit || %cmd.mudcommand% == afk
if %self.vnum% == %zone%04 && %actor.varexists(Making_Tarot_Appointment_%zone%)%
say I'm sorry but I won't be able to give you an appointment right now.
say Please come back when you have more time available.
rdelete Making_Tarot_Appointment_%zone% %actor.id%
rdelete Choosing_Tarot_Reader_%zone% %actor.id%
mgoto %zone%99
%purge% quill
mgoto %zone%02
wait 1 sec
emote puts down the appointment book.
wait 1 sec
%force% %actor% %cmd.mudcommand%
wait 1 sec
halt
elseif %self.vnum% == %zone%01 || %self.vnum% == %zone%02 || %self.vnum% == %zone%03
set office %self.room.vnum%
eval endroom %office% + 10
%echo% n %self.name%'s voice sounds reproachfully in your head.
%echo% c 'You don't seem to have time for this right now. n
%echo% c Please come back when you have more time.' n
wait 1 sec
%echo% %self.name% waves her hand and you find yourself outside.
wait 1 sec
%teleport% %actor% %zone%01
mgoto %endroom%
down
mgoto %office%
wait 1 sec
%force% %actor% look
%force% %actor% %cmd.mudcommand%
rdelete Deck_Shuffled %self.id%
rdelete Cards_Dealt %self.id%
rdelete tarot_reading_started %self.id%
halt
else
return 0
halt
end
elseif %cmd% == return || %cmd% == recall || %cmd% == teleport || %cmd.mudcommand% == goto
if %self.vnum% == %zone%04 && %actor.varexists(Making_Tarot_Appointment_%zone%)%
say I'm sorry but I won't be able to give you an appointment right now.
say Please come back when you have more time available.
rdelete Making_Tarot_Appointment_%zone% %actor.id%
rdelete Choosing_Tarot_Reader_%zone% %actor.id%
mgoto %zone%99
%purge% quill
mgoto %zone%02
%send% %actor% n
emote puts down the appointment book.
%send% %actor% n
return 0
halt
elseif %self.vnum% == %zone%01 || %self.vnum% == %zone%02 || %self.vnum% == %zone%03
set office %self.room.vnum%
eval endroom %office% + 10
%echo% n %self.name%'s voice sounds reproachfully in your head.
%echo% c 'You don't seem to have time for this right now. n
%echo% c Please come back when you have more time.' n
%send% %actor% n
%teleport% %actor% %zone%01
return 0
%send% %actor% n
mgoto %endroom%
down
mgoto %office%
rdelete Deck_Shuffled %self.id%
rdelete Cards_Dealt %self.id%
rdelete tarot_reading_started %self.id%
halt
else
return 0
halt
end
elseif %cmd.mudcommand% == south
if %self.vnum% == %zone%04 && %actor.varexists(Making_Tarot_Appointment_%zone%)%
say I'm sorry but I won't be able to give you an appointment right now.
say Please come back when you have more time available.
rdelete Making_Tarot_Appointment_%zone% %actor.id%
rdelete Choosing_Tarot_Reader_%zone% %actor.id%
mgoto %zone%99
%purge% quill
mgoto %zone%02
wait 1 sec
emote puts down the appointment book.
wait 1 sec
%force% %actor% %cmd%
halt
else
return 0
halt
end
else
return 0
end
~
#21109
Timer for obj 21198~
1 f 100
~
* Timer on obj 21198 is set to 10 minutes. This is adjustable.
* Since 21198 stops any appointments while talking to one person
* this keeps any person from blocking the zone until reboot.
set zone 211
set actor %self.carried_by%
if %actor.vnum% == %zone%04
%echo% %actor.name% says, 'I've been waiting too long for this appointment.'
%echo% %actor.name% puts down the appointment book.
%purge% %self%
else
set actor %self.carried_by.name%
%force% %actor% say I seem to have stolen someone's pen.
%echoaround% %actor% The nib of the pen pokes %actor%.
%send% %actor% The nib of the pen pokes you.
%damage% %actor% 5
%echoaround% %actor% %actor.name% shakes %actor.hisher% hand in pain and drops a pen which rolls away.
%send% %actor% You drop a pen which rolls away somewhere.
%purge% %self%
end
~
#21110
Reload glass and bread - obj 21180 and 21182~
1 c 100
*~
* This trigger is to keep the waiting room supplied with food and drink.
* Because of the auto-regenerative qualities, it also cancels out any
* sac benefits to prevent spam-saccing for gold or exp.
* Parnassus' Special Anti-Freeze Formula
if %cmd.mudcommand% == nohassle
return 0
halt
end
*
set zone 211
if get == %cmd.mudcommand% || sacrifice == %cmd.mudcommand%
if %self.room.vnum% == %zone%02
set testernumber 2
else
set testernumber 1
end
set arg _%arg%
eval inroom %self.room%
eval obj %inroom.contents%
* find the first object in the room
while %obj%
set next_obj %obj.next_in_list%
set objlist %obj.name%
set keywordlist _%obj.name.car%
set keywordrest _%obj.name.cdr%
while %keywordlist%
* while an object is in the room
if %keywordlist.contains(%arg%)%
if %obj.id% == %self.id%
if get == %cmd.mudcommand%
%force% %actor% %cmd.mudcommand% %obj.name.car%
elseif sacrifice == %cmd.mudcommand%
%send% %actor% You carefully dispose of %obj.shortdesc%.
%echoaround% %actor% %actor.name% carefully disposes of %obj.shortdesc%.
set me %self.vnum%
eval temp %%findobj.%zone%02(%me%)%%
eval tester %temp%
if %self.room.vnum% == %zone%02
set testernumber 2
else
set testernumber 1
end
if %tester% < %testernumber%
%at% %zone%02 %load% obj %self.vnum%
end
%purge% %self%
end
set me %self.vnum%
eval temp %%findobj.%zone%02(%me%)%%
eval tester %temp%
if %tester% < %testernumber%
%at% %zone%02 %load% obj %self.vnum%
end
halt
end
end
set keywordlist %keywordrest.car%
set keywordrest %keywordrest.cdr%
done
* find the next object for the while to loop
set obj %next_obj%
done
return 0
halt
else
return 0
halt
end
~
$~