#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 * 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 ~card /= %arg% * 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)%% if %rev% < 1 %echo% Reverser is not here. %force% %actor% look card else %force% %actor% look reverse %echo% Reverser is here. 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% wait 1 sec halt elseif %cmd% == return || %cmd% == recall %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% 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% - 9 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 * 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 * 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 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 emote looks up from her appointment book. say Would you like to make an appointment with one of our readers? say Before we start, make sure you have enough time to finish your reading. say Please do not go afk or leave the game before you finish the reading. say If you are sure, just say appointment. else if %direction% == up smile %actor% say I hope you enjoyed your reading. Please, come again soon. say 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 ~ $~