#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 ~ $~