diff --git a/changelog b/changelog index 3a9cb70..f1b526f 100644 --- a/changelog +++ b/changelog @@ -34,12 +34,22 @@ OLC copy and delete options. export (QQ's a zone into a tarball)t Xlist (mlist, olist, rlist, zlist, slist, tlist, qlist) (lots of major bugfixes too) + +tbaMUD 3.58 +[Jan 18 2009] - Rumble + Updated World and files for 3.58 release. + Bug fix for column_list to properly display commands, socials, wizhelp, etc. (thanks Jamdog) [Jan 15 2009] - Fizban Immortals can now never have their hands full when you attempt to hand them an item. +[Jan 13 2009] - Rumble + Questmaster variable changed from an rnum to a vnum. (thanks Jamdog) + Fixed a bug in dg_variables.c find_replacment with the new quest variable. (thanks Jamdog) Fixed message when setting gold abnormally high. [Jan 09 2009] - Fizban - Fixed a bug in do_rescue allowing players to get twice as many attacks per round. (thanks Zordrac) + Fixed a DIKU bug in do_rescue allowing players to get twice as many attacks per round. (thanks Zordrac) Fixed Bug Where Questmaster rnums didn't previously update. (thanks Tails) +[Jan 05 2009] - Rumble + Fix to allow non-helper aggro mobs be agressive. (thanks Kvasir) [Dec 28 2008] - Rumble Added a "Syntax: export zone vnum" for the export command instead of defaulting to 0. (thanks Vatiken) Fixed bad usage of num_of_saving_throws and moved define to structs.h. (thanks Vatiken) diff --git a/lib/text/help/help.hlp b/lib/text/help/help.hlp index e536da4..6e888ef 100644 --- a/lib/text/help/help.hlp +++ b/lib/text/help/help.hlp @@ -810,11 +810,38 @@ TRIG-ERRORS TRIGEDIT-ERRORS TRIGEDIT-MISTAKES These are numerous and I will add them as people ask questions about them. -Make sure nohassle is OFF. +Make sure nohassle is OFF. Command triggers (and some other functionality) +will not work for level 32 and above. For mob triggers make sure the mob can see the actor, set INFRA in DARK rooms. - AFF_CHARM prevents triggers from firing. +As a general rule always use an ID (%actor%) not a name (%actor.name%) unless +you actually need to display the actors name. + +GOOD: %send% %actor% Hi there, %actor.name%! +GOOD: %teleport% %actor% 0 +GOOD: %force% %actor% kneel %self.name% +GOOD: mkill %actor% + +BAD: %send% %actor.name% Hi there, %actor.name%! +BAD: %teleport% %actor.name% 0 +BAD: %force% %actor.name% kneel +BAD: mkill %actor.name% + +Another common mistake is the mis-use of set and eval. + +GOOD: set fruit apple +GOOD: set num %random.5% +GOOD: eval num 4 * %random.3% +GOOD: eval text %%txt[%num%]%% +GOOD: set num 5 +GOOD: set command %cmd% %arg% + +BAD: eval num 5 +BAD: eval num %random.4% +BAD: eval fruit apple +BAD: eval command %cmd% %arg% + See Also: ZEDIT-MISTAKES, SEDIT-MISTAKES #31 CYGWIN README.CYGWIN README-CYGWIN COMPILER SHELLS @@ -941,7 +968,7 @@ as in "women's hemlines." We rest our case. Now do whatever you want...after all, it is your area. #31 -OBJ-NOTES OBJECT-NOTES BOOKS PENS NOTES QUILLS NEWSPAPERS POSTITS POST-ITS OBJ-TYPE-NOTE PAPERS +OBJ-NOTES OBJECT-NOTES BOOKS PENS NOTES QUILLS NEWSPAPERS POSTITS POST-ITS OBJ-TYPE-NOTE PAPERS TYPE-NOTE With Object Type NOTE you can then use the A-desc to write what you want people to see when they read it. Players will then be able to write on the @@ -953,6 +980,8 @@ like 1 2 3 etc. Since the buffers can only hold so much text. You would need to include instructions, something like this: to read another page type read #. The player would type read 1, and would actually read page 1, then type read 2 and so on. + +See Also: NOTE, MAP #31 CWG BUDDHA SUNTZU RASPUTIN CIRCLEMUD-WITH-GOODIES @@ -965,26 +994,23 @@ See also: RESOURCES #31 SOURCES RESOURCES CODEBASE FTP DOWNLOADS DOCUMENTATION WTFAQ FORUMS GROUPS -Source: http://cwg.lazuras.org/modules.php?name=Downloads&d_op=viewdownload&cid=16 +Source: http://tbamud.com/ CWG: http://cwg.lazuras.org/ Trigedit: http://tbamud.com/Oasis_DG_pages/contents/downloads.htm GDB: http://www.cs.clemson.edu/~ihcho/courses/cs360/common/gdb.html Documentation: -http://tbamud.com/Oasis_DG_pages/index.html +http://tbamud.com/ http://www.circlemud.org/cdp/wtfaq/ +http://developer.circlemud.org/contrib/ You should join the following forums and mailing lists. Learn how to search them for any problems you have: +http://tbamud.com/ http://cwg.lazuras.org/ http://groups.yahoo.com/group/circle-newbies/ http://post.queensu.ca/cgi-bin/listserv/wa?SUBED1=circle&A=1 -http://groups.yahoo.com/group/dg_scripts/ -http://clubs.yahoo.com/clubs/areaswap -http://clubs.yahoo.com/clubs/buildersclub -http://clubs.yahoo.com/clubs/warlocksrealm -http://clubs.yahoo.com/clubs/codersclub http://mudconnector.com/ Other stuff: @@ -1742,7 +1768,7 @@ Be original, finish what you start, have fun, and don't forget to breathe! #31 CALENDAR CALENDER MONTHS WEEKS DAYS HOURS -The tbaMUD calendar consists of 75 seconds per minute, 35 days a month and +The tbaMUD calendar consists of 75 seconds per hour, 35 days a month and 17 months a year. Days of the week: @@ -2403,7 +2429,7 @@ TIME TICKS Usage: time Gives you the current game time. tbaMUD uses zulu time 0-24 hours. There are -75 seconds per minute, 35 days per month, and 17 months per year. 1 MUD year +75 seconds per hour, 35 days per month, and 17 months per year. 1 MUD year takes about 12 days. /** Number of real life seconds per mud hour. @@ -2640,7 +2666,9 @@ Usage: uptime Displays when the game was booted and calculates how long ago that was. -Record uptime: 39 days in 2006 (Rumble was on deployment) +Record uptime: + +Up since Thu Nov 6 16:09:55 2008: 47 days, 9:28 #31 USERS STATUS @@ -4133,6 +4161,8 @@ pos() - %actor.pos% returns position. Subfield modifies. Sleeping, resting, sitting, fighting, standing. @RTSTAT 1399, 20997@n prac() - The actor's number of practices. Subfield adjusts. pref() - Checks if actor has PRF flag enabled. @RTSTAT 1210@n +quest - Returns the current quest (or 0 if there's no current quest). +questdone(#) - Returns TRUE (1) if the quest vnum (#) has been completed. questpoints() - Checks the actor's questpoints. Subfield modifies. @RHELP NOP@n room - The room the actor is in as a room variable. saving_para() - The actors saving throw for paralization. Subfield adjusts. @@ -4384,7 +4414,7 @@ TRIGEDIT-ROOM-GLOBAL TRIG-ROOM-GLOBAL Not a trigger type by itself; used in conjunction with Random @RHELP TRIGEDIT-ROOM-RANDOM@n and @RHELP TRIGEDIT-ROOM-TIME@n. While Random -and Time only trigger if players are in the same room, Global Random +and Time only trigger if players are in the same zone, Global Random and Global Time will trigger regardless. Numeric Arg : not used. @@ -4739,7 +4769,8 @@ Activated any time an object is given to the mobile. Numeric Arg : percent chance this trigger will be activated. Argument : not used. -With a return 0 the object is not transferred to the mobile. +With a return 0 the object is not transferred to the mobile. This will not work +if a wait is before the return 0. Variables: %actor% - the character handing the object to the mobile. @@ -5122,7 +5153,7 @@ TRIGEDIT-MOB-GLOBAL TRIG-MOB-GLOBAL Not a trigger type by itself; used in conjunction with Random @RHELP TRIGEDIT-MOB-RANDOM@n. While Random triggers only trigger if players -are in the same room, Global Random triggers will trigger regardless. +are in the same zone, Global Random triggers will trigger regardless. Numeric Arg : not used. Argument : not used. @@ -5544,7 +5575,7 @@ Smokables: @RTSTAT 159@n Furniture: @RTSTAT 1399@n Weapons: @RTSTAT 1361, 9000, 11840, 13005@n -See Also: @RTRIG-QUESTS@n +See Also: TRIG-QUESTS #31 DG_AFFECTS DGAFFECT SCRIPT-AFFLICTED AFFLICTED DG-AFFECTS DG-AFFECTS %DG_AFFECT% DG-EFFECT DG_EFFECT DURATIONS TRIG-AFFECTS @@ -5667,7 +5698,7 @@ was on line 5 you can type /e5 or /d5. Learn all these options. Warning: Some clients will give you problems since they use special characters -like the / character (Avplay, Mush, and SimpleMU). +like the / character (MUDMaster 2k, Avplay, Mush, and SimpleMU). #31 TRIGEDIT TRIGS TRIGEDITOR TRIGGEREDIT TRIGGER-EDIT TRIGGERS DG-SCRIPTS TRIG-HELP SCRIPTS MOBPROGS MPROGS PROGS SCRIPTING TRIGMENU @@ -5918,7 +5949,7 @@ XLIST %LIST% By Xlist I meant to for you to replace the X with the type of list you want to see. i.e. olist, mlist, rlist, zlist, slist, or qlist. -See also: OLIST, MLIST, RLIST, ZLIST, SLIST +See also: OLIST, MLIST, RLIST, TLIST, ZLIST, SLIST, QLIST #31 TLIST TRIGLIST TRIG-LIST TRIGEDIT-LIST TRIGGERLIST TRIGGER-LIST @@ -6035,7 +6066,7 @@ number. See also: SEDIT-MENU, SLIST, OLC #31 -ZEDIT ZEDIT-CREATE ZCREATE +ZEDIT Usage: zedit [room vnum] zedit new (Implementors only!) @@ -6048,7 +6079,7 @@ If no room number is specified, the current room is used as target. @RGOTO 11@n to enter The Builder Academy hallway on how to use zedit. -See also: ZEDIT-MENU, OLC, SHOW-ZONES +See also: ZEDIT-MENU, ZEDIT-NEW, OLC, SHOW-ZONES #31 BUILDWALKING BUILD-WALKING DIGWALK WALKDIG @@ -6510,8 +6541,10 @@ SEDIT-OPEN1 SEDIT-OPEN2 SEDIT-CLOSE1 SEDIT-CLOSE2 SEDIT-OPENS 3) Open 2 : @c0 @n4) Close 2 : @c0@n The times (in MUD-hours) between which the shop is open. Two sets of Open/Close pairs are allowed so that the shop can be open twice a day (for -example, once in the morning and once at night). There are 28 hours in a -MUD day. +example, once in the morning and once at night). There are 24 hours in a +MUD day so setting closed to >24 will ensure the shop is always open. If you +want the shopkeeper to only be open during normal working hours you can set +open1 to 9 and close1 to 5. #31 SEDIT-RATES SEDIT-SELL-RATES SEDIT-BUY-RATES SEDIT-PRICE PRICES PRICING SEDIT-SELLRATE SELLRATE SEDIT-MENU-SELLRATE SELL-RATE @@ -6731,6 +6764,23 @@ ZEDIT-BUILDERS The name of the builder creating the zone. +#31 +ZEDIT-CREATE ZEDIT-CREATION ZONE-CREATE ZONE-CREATION ZCREATE + +Usage: zedit new + + Only Implementors can create new zones. Zones can be any size but must +consist of consecutive vnums. + +Examples: + zedit new 1 100 199 - Creates zone 1 vnums 100 to 199. + zedit new 123 12300 12499 - Creates zone 123 vnums 12300 to 12499 + +Max zone number is 655. Max vnum is 65534. + +65535 is reserved for corpses. + +See Also: ZEDIT, ZEDIT-NEW #31 ZEDIT-NEW-COMMAND ZEDIT-DOOR MOB-LOAD MOB-INVENTORY ZEDIT-NEWCOMMAND ZEDIT-LOADING ZLOADING ZEDIT-DOORS ZEDIT-REMOVE @@ -7736,8 +7786,8 @@ use /fi by typing it into the last line and hitting enter. 3) Goto next description: This option will allow you to make as many extra descriptions as you want. - To delete an extra description all you have to do is leave the keywords -or the Description blank and exit. + To delete an extra description all you have to do is clear the description +with the "/c" then "/s" and quit. #31 REDIT-EXITS DOORFLAGS REDIT-KEYS PICKPROOF REDIT-EXIT-MENU EXIT-BASICS DOOR-FLAGS EXIT-MENU PURGE-EXITS @@ -11530,11 +11580,12 @@ actually very stable. I have never heard of one being hacked except via weak or compromised passwords. #0 -DIKU ROM DBX DBZ SMAUG +DIKU ROM DBX DBZ SMAUG MUD-HISTORY These are other types of MUD codebases. We only focus on tbaMUD (the codebase formerly known as CircleMUD). +For a full history of MUDs, check out: http://en.wikipedia.org/wiki/Muds #0 HISTORY @@ -11544,7 +11595,7 @@ Usage: history < all | say | gossip | wiznet | tell | shout | grats | holler | a with a time stamp for when it was sent. History all will list the history of all channels. -See also: CHANNELS +See also: CHANNELS, MUD-HISTORY #0 COLORCODES COLOURCODES COLOR-CODES COLOUR-CODES COLORS COLOURS PCOLORS COLORCODING @@ -12487,6 +12538,7 @@ Fyre: i'll keep that in mind for the future Fizban gossips, 'And remember being told what a pretty little girl I was' Fizban: You kno what? I just decided I want to be a waitress at Fultons :P +Fizban gossips, 'Though I've had dreams with Detta in them ;) But those were uhh...different....' Masok: Anyone else think that maybe we should randomly carpet bomb overly populated areas of poor or useless people? Masok: You cant. I have metal underwear. diff --git a/lib/text/news b/lib/text/news index f8f9af3..6b9d88b 100644 --- a/lib/text/news +++ b/lib/text/news @@ -1,5 +1,5 @@ (lib/text/news) - THE 2008 tbaMUD HERALD + THE 2009 tbaMUD HERALD "We addict players for their own enjoyment." NEW COMMANDS AND NEW MUD BEHAVIOR: diff --git a/lib/world/mob/0.mob b/lib/world/mob/0.mob index 4f897ff..acb8919 100644 --- a/lib/world/mob/0.mob +++ b/lib/world/mob/0.mob @@ -397,8 +397,8 @@ The variable questmaster is waiting to set you. or not you have done his quest. This way you can only do this quest once. ~ 253962 0 0 0 0 0 0 0 0 E -0 20 10 1d1+0 1d1+0 -0 0 +1 20 9 0d0+10 1d2+0 +10 100 8 8 1 E T 192 diff --git a/lib/world/mob/3.mob b/lib/world/mob/3.mob index 4e9bb43..8442b1f 100644 --- a/lib/world/mob/3.mob +++ b/lib/world/mob/3.mob @@ -15,4 +15,18 @@ concoct many different potions and is most famous for her liquid fire. E T 300 T 335 +#301 +naked magi~ +the naked magi~ +A magi sits against a wall wearing nothing but a towel. +~ + Sweat gleams on her supple skin. Her black hair is wet and frames a round +face with slanted blue eyes. She is striking in her beauty and grace. +~ +10 0 0 0 2112 0 0 0 0 E +0 20 10 1d1+0 1d1+0 +0 0 +8 8 2 +E +T 305 $ diff --git a/lib/world/obj/0.obj b/lib/world/obj/0.obj index 5019b05..ad30864 100644 --- a/lib/world/obj/0.obj +++ b/lib/world/obj/0.obj @@ -1,12 +1,3 @@ -#0 -bug~ -a bug~ -This object is BAD! If you see it, there must be a bug in the game. Please -report it immediately using the BUG command.~ -~ -13 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 -0 0 0 0 #1 wings~ a pair of wings~ @@ -40,10 +31,6 @@ The email listing of the gods is pinned against the wall.~ 0 0 0 0 1 1 0 30 E -emails listing~ - HELP CONTACT -~ -E wizlist~ Implementors ~~~~~~~~~~~ @@ -60,6 +47,10 @@ wizlist~ Santa Shamra Shimmer Silvanos Smaug Snowlock Talgard Taylor Theophilus Tocamat Torpidai Treestump Tuskony Zizazat ~ +E +emails listing~ + HELP CONTACT +~ #5 foraged berries~ some foraged berries~ diff --git a/lib/world/obj/1.obj b/lib/world/obj/1.obj index 4d38c47..b7c1e6b 100644 --- a/lib/world/obj/1.obj +++ b/lib/world/obj/1.obj @@ -1064,8 +1064,8 @@ visible. 0 0 0 0 0 0 0 0 E -june~ - . .:IIIIHIHHIHHHII::I:. +september~ + . .:IIIIHIHHIHHHII::I:. :IIIIHIHHHHHHMMHHIHHIIHHIII:. ,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:. .:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII: @@ -1122,21 +1122,9 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII ::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. . ::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . , ':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . 'VII:::. .. . - :::::.:..:.... . . . ...AHHHHIHIIII:::. . 'VII:::. . . :. - :::::::.:..... .. . ....MHHHHHIHIII::.:.. . 'VII::. . :: - :::::::::.:.... .. ....:MHHHHIHII:I::::... . 'VI::. . ::I) - '::::::::::.:... .. ...:MHHHHIHIIII::::.. . 'VI:. ...:V - .:::::::::::.:.... . .AMMHHIHIII:I::::... . . I::. ...:-" - :.::I::::::::.:. . ..MMMHHIHIIII:I:::... . . .::. ,..-" - :..:II:I:::::.:.. . ..MMMHHIHIIIIIII:I::.... . . ..::""' - .::.:III:I::::::.:.. ..MMMMIVHIHIIIII:I::::.... . .....:, -.:.::..:III:I:::::.:... .MMHMAIVHHIHIIIII:I::::.. . ..::..:, -. .:::.::III:I::::.:... .VMMHMAIVHHHIHIIII:I::::.. ..:...::: -. :::I.:::III:I:::.::.. .:MMHHMAIVHHIHIIIII:I::::....:::.:::: - .::IIH.:::III:I::::.:.. .MMHMHMAIVHHHIHIIIIII:I ~ E -april~ +august~ . nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn. .MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM @@ -1189,7 +1177,7 @@ april~ %% % %%%%%% ~ E -March~ +july~ . ,.--.. ,::.'.. . . "VI:I:".':-.,. ,I::. .. . 'VHMHII:.::;:.:,.. @@ -1255,6 +1243,183 @@ March~ ':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. ' ~ E +june~ + . :AMMMMMMMMMMMMA: + :AMMMMMMMMMHHHHHMMMMMMMMA: + :AMHMMMMHHMHIHHIMMMHMMMMHHA: + :AM'MMMMMMHHIHHHIMMMMMIMMHHHH: + AM:IMMMMMHHIHIHHHIMMHHHHHHHHHH + AMIIHMMMMMHIHHHIHHIHHHHHHHHHHHH: + MMIHHMMMMMHHIHHHIHHHHHHHHHHHHHHH + AMMMMMHHHHHHI;;;;;;;IHHHI;;IHHHHH + MMMMHIIII;":AMMMMA ,[[, HH + MMMMHII; AW"'''' :: HH + IHHIHIII;:'' ,GFMF[ [MM[: IH + AHHIHII;::': ";[P,[ ;; :::: IH + IHHHIHII;;:: :[;: ;H + AHHHHHII;;;:: : : [ : ;H + IHHIIHI:[;;;:: ; ; ; , , IH + IHHIIHH:[;;;: ; ;: ':"::" '; IH + IHHIIHI:[;;: ::: ; ,,,, ' HH + :IHHHIHHMMA;::: [;;""""""[; AMI + ;IHHHHIIHMM;: : : ;;[,,,,[; HHI + IIHHMMHHIHHM;:: '"""' AMHI + IIHHMMHMHHIIIM;:: AMMHI + IHHHMMHMHMHHHIHI;:: :AMMMHI + IHHHMMMMHMMHHHII;;;;:: :,;; MMMHHI + IHHHMMHHHHMMHHHI;:";;;;;;" MMMIH' + ;IHHMMHMMMMHF"HHII MMMHH + IHHMMHV;;:: HHII;: : MMHHI + IHHMV;;::: HHII;: : : MMHI; + IHMV;;:: : "HII;: :: MMI; + :IHV;:: : 'HI: :: MM; + IV;:: : : "II;: ; + IH;;::: : ;;;I: ; + ;M;;:::: : ';;;HI: ' + MH;;:::: : ';;HI: ; + IM;;;::: : :[; ';I"I: ; + M;;;::: : : [;;,: ' : ' + ;;:::: : ::'' : ': + ;;::: : : ': : + :;;:: : :: ':' + ;;:: : : : '': + ;;:: : : :;,: + ;;:: : :: ;[[[,: +:;;:: : : ;;[[[;': +;;:: : : [:: : : ;[[[[;;[, +;:: : [;;;: : :, [[[[['[[; +;:: : :M;;: : :,[ [[[[ [[' +;: : "[:: : ::[ ;[' ;[ +;: : "[: : ::[ :' :' +:: :: : ", :::;[ :' :; +: :: ': : :::;[ ::' :; + :: ; : : ::::;[:,,::;;I' ;; + ;;:;: : : : :::::::: '""' I[[;"' + ;;;:: : : '::::' ; + ;;;:: : : : ; + ';;;;::: : : ': ; + ';;:::: : : + M;:::: : ': + MMMI;:::: : ; + MMMMMA;::: : + AHHMMMMHA;:::: : ; + :MHHMMMMMMMA;: ' : + AHHHMMM;"TTTTL: : ; + AHHHHHHMMLLLLLH ': : + :MHHH:::;HHMMMMMA: : ; + :AHHH:::HH;;;;;MMM;: : + :MHH;: ;;;;;MMM:: : : ; + :MH;: : ';;;;MMM:: ': ': + ,H;: ';;;MMM::: :':' ; + ,;: : : : ;;;Y;H:: : + ,;: : : : ';;;:; : : ; ; + [;:: : ;;:; ; ; ; +~ +E +may~ + . 8888 8888888 + 888888888888888888888888 + 8888:::8888888888888888888888888 + 8888::::::8888888888888888888888888888 + 88::::::::888:::8888888888888888888888888 + 88888888::::8:::::::::::88888888888888888888 + 888 8::888888::::::::::::::::::88888888888 888 + 88::::88888888::::m::::::::::88888888888 8 + 888888888888888888:M:::::::::::8888888888888 + 88888888888888888888::::::::::::M88888888888888 + 8888888888888888888888:::::::::M8888888888888888 + 8888888888888888888888:::::::M888888888888888888 + 8888888888888888::88888::::::M88888888888888888888 + 88888888888888888:::88888:::::M888888888888888 8888 + 88888888888888888:::88888::::M::;o*M*o;888888888 88 + 88888888888888888:::8888:::::M:::::::::::88888888 8 + 88888888888888888::::88::::::M:;:::::::::::888888888 + 8888888888888888888:::8::::::M::aAa::::::::M8888888888 8 + 88 8888888888::88::::8::::M:::::::::::::888888888888888 8888 + 88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888 + 8 8888888888888:::::::::::M::"@@@@@@@"::::8w8888888888888888 + 88888888888:888::::::::::M:::::"@a@":::::M8i888888888888888 + 8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888 + 8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888 + 888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888 + 888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888 + 8888 M::::::::::::::M88888888888::::::MM888888888888888 88888 + 888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888 + 888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888 + 88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888 + 88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88 + 8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4 + 8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2 + 88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M + 8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M + 88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M + 88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M: + 8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M + 88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M + 888888M:::88::M:::::::::88@@88:::::::::M::88::::::::::::::M + 888888MM::88::MM::::::::88@@88:::::::::M:::8::::::::::::::*8 + 88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@@ + 8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@@ + 888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8 + 888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M + 88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM + 88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM + 88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM + 88 8MM::::::::::::::::::::::::::::::::::MMMMMM +~ +E +January~ + . 8888 8888888 + 888888888888888888888888 + 8888:::8888888888888888888888888 + 8888::::::8888888888888888888888888888 + 88::::::::888:::8888888888888888888888888 + 88888888::::8:::::::::::88888888888888888888 + 888 8::888888::::::::::::::::::88888888888 888 + 88::::88888888::::m::::::::::88888888888 8 + 888888888888888888:M:::::::::::8888888888888 + 88888888888888888888::::::::::::M88888888888888 + 8888888888888888888888:::::::::M8888888888888888 + 8888888888888888888888:::::::M888888888888888888 + 8888888888888888::88888::::::M88888888888888888888 + 88888888888888888:::88888:::::M888888888888888 8888 + 88888888888888888:::88888::::M::;o*M*o;888888888 88 + 88888888888888888:::8888:::::M:::::::::::88888888 8 + 88888888888888888::::88::::::M:;:::::::::::888888888 + 8888888888888888888:::8::::::M::aAa::::::::M8888888888 8 + 88 8888888888::88::::8::::M:::::::::::::888888888888888 8888 + 88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888 + 8 8888888888888:::::::::::M::"@@@::::8w8888888888888888 + 88888888888:888::::::::::M:::::":::::M8i888888888888888 + 8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888 + 8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888 + 888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888 + 888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888 + 8888 M::::::::::::::M88888888888::::::MM888888888888888 88888 + 888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888 + 888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888 + 88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888 + 88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88 + 8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4 + 8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2 + 88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M + 8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M + 88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M + 88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M: + 8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M + 88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M + 888888M:::88::M:::::::::88@8:::::::::M::88::::::::::::::M + 888888MM::88::MM::::::::88@8:::::::::M:::8::::::::::::::*8 + 88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@ + 8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@ + 888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8 + 888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M + 88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM + 88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM + 88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM + 88 8MM::::::::::::::::::::::::::::::::::MMMMMM +~ +E february~ . :AMMMMMMMMMMMMA: :AMMMMMMMMMHHHHHMMMMMMMMA: @@ -1328,184 +1493,7 @@ february~ [;:: : ;;:; ; ; ; ~ E -January~ - . 8888 8888888 - 888888888888888888888888 - 8888:::8888888888888888888888888 - 8888::::::8888888888888888888888888888 - 88::::::::888:::8888888888888888888888888 - 88888888::::8:::::::::::88888888888888888888 - 888 8::888888::::::::::::::::::88888888888 888 - 88::::88888888::::m::::::::::88888888888 8 - 888888888888888888:M:::::::::::8888888888888 - 88888888888888888888::::::::::::M88888888888888 - 8888888888888888888888:::::::::M8888888888888888 - 8888888888888888888888:::::::M888888888888888888 - 8888888888888888::88888::::::M88888888888888888888 - 88888888888888888:::88888:::::M888888888888888 8888 - 88888888888888888:::88888::::M::;o*M*o;888888888 88 - 88888888888888888:::8888:::::M:::::::::::88888888 8 - 88888888888888888::::88::::::M:;:::::::::::888888888 - 8888888888888888888:::8::::::M::aAa::::::::M8888888888 8 - 88 8888888888::88::::8::::M:::::::::::::888888888888888 8888 - 88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888 - 8 8888888888888:::::::::::M::"@@@::::8w8888888888888888 - 88888888888:888::::::::::M:::::":::::M8i888888888888888 - 8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888 - 8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888 - 888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888 - 888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888 - 8888 M::::::::::::::M88888888888::::::MM888888888888888 88888 - 888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888 - 888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888 - 88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888 - 88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88 - 8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4 - 8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2 - 88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M - 8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M - 88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M - 88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M: - 8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M - 88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M - 888888M:::88::M:::::::::88@8:::::::::M::88::::::::::::::M - 888888MM::88::MM::::::::88@8:::::::::M:::8::::::::::::::*8 - 88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@ - 8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@ - 888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8 - 888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M - 88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM - 88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM - 88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM - 88 8MM::::::::::::::::::::::::::::::::::MMMMMM -~ -E -may~ - . 8888 8888888 - 888888888888888888888888 - 8888:::8888888888888888888888888 - 8888::::::8888888888888888888888888888 - 88::::::::888:::8888888888888888888888888 - 88888888::::8:::::::::::88888888888888888888 - 888 8::888888::::::::::::::::::88888888888 888 - 88::::88888888::::m::::::::::88888888888 8 - 888888888888888888:M:::::::::::8888888888888 - 88888888888888888888::::::::::::M88888888888888 - 8888888888888888888888:::::::::M8888888888888888 - 8888888888888888888888:::::::M888888888888888888 - 8888888888888888::88888::::::M88888888888888888888 - 88888888888888888:::88888:::::M888888888888888 8888 - 88888888888888888:::88888::::M::;o*M*o;888888888 88 - 88888888888888888:::8888:::::M:::::::::::88888888 8 - 88888888888888888::::88::::::M:;:::::::::::888888888 - 8888888888888888888:::8::::::M::aAa::::::::M8888888888 8 - 88 8888888888::88::::8::::M:::::::::::::888888888888888 8888 - 88 88888888888:::8:::::::::M::::::::::;::88:88888888888888888 - 8 8888888888888:::::::::::M::"@@@@@@@"::::8w8888888888888888 - 88888888888:888::::::::::M:::::"@a@":::::M8i888888888888888 - 8888888888::::88:::::::::M88:::::::::::::M88z88888888888888888 - 8888888888:::::8:::::::::M88888:::::::::MM888!888888888888888888 - 888888888:::::8:::::::::M8888888MAmmmAMVMM888*88888888 88888888 - 888888 M:::::::::::::::M888888888:::::::MM88888888888888 8888888 - 8888 M::::::::::::::M88888888888::::::MM888888888888888 88888 - 888 M:::::::::::::M8888888888888M:::::mM888888888888888 8888 - 888 M::::::::::::M8888:888888888888::::m::Mm88888 888888 8888 - 88 M::::::::::::8888:88888888888888888::::::Mm8 88888 888 - 88 M::::::::::8888M::88888::888888888888:::::::Mm88888 88 - 8 MM::::::::8888M:::8888:::::888888888888::::::::Mm8 4 - 8M:::::::8888M:::::888:::::::88:::8888888::::::::Mm 2 - 88MM:::::8888M:::::::88::::::::8:::::888888:::M:::::M - 8888M:::::888MM::::::::8:::::::::::M::::8888::::M::::M - 88888M:::::88:M::::::::::8:::::::::::M:::8888::::::M::M - 88 888MM:::888:M:::::::::::::::::::::::M:8888:::::::::M: - 8 88888M:::88::M:::::::::::::::::::::::MM:88::::::::::::M - 88888M:::88::M::::::::::*88*::::::::::M:88::::::::::::::M - 888888M:::88::M:::::::::88@@88:::::::::M::88::::::::::::::M - 888888MM::88::MM::::::::88@@88:::::::::M:::8::::::::::::::*8 - 88888 M:::8::MM:::::::::*88*::::::::::M:::::::::::::::::88@@ - 8888 MM::::::MM:::::::::::::::::::::MM:::::::::::::::::88@@ - 888 M:::::::MM:::::::::::::::::::MM::M::::::::::::::::*8 - 888 MM:::::::MMM::::::::::::::::MM:::MM:::::::::::::::M - 88 M::::::::MMMM:::::::::::MMMM:::::MM::::::::::::MM - 88 MM:::::::::MMMMMMMMMMMMMMM::::::::MMM::::::::MMM - 88 MM::::::::::::MMMMMMM::::::::::::::MMMMMMMMMM - 88 8MM::::::::::::::::::::::::::::::::::MMMMMM -~ -E -june~ - . :AMMMMMMMMMMMMA: - :AMMMMMMMMMHHHHHMMMMMMMMA: - :AMHMMMMHHMHIHHIMMMHMMMMHHA: - :AM'MMMMMMHHIHHHIMMMMMIMMHHHH: - AM:IMMMMMHHIHIHHHIMMHHHHHHHHHH - AMIIHMMMMMHIHHHIHHIHHHHHHHHHHHH: - MMIHHMMMMMHHIHHHIHHHHHHHHHHHHHHH - AMMMMMHHHHHHI;;;;;;;IHHHI;;IHHHHH - MMMMHIIII;":AMMMMA ,[[, HH - MMMMHII; AW"'''' :: HH - IHHIHIII;:'' ,GFMF[ [MM[: IH - AHHIHII;::': ";[P,[ ;; :::: IH - IHHHIHII;;:: :[;: ;H - AHHHHHII;;;:: : : [ : ;H - IHHIIHI:[;;;:: ; ; ; , , IH - IHHIIHH:[;;;: ; ;: ':"::" '; IH - IHHIIHI:[;;: ::: ; ,,,, ' HH - :IHHHIHHMMA;::: [;;""""""[; AMI - ;IHHHHIIHMM;: : : ;;[,,,,[; HHI - IIHHMMHHIHHM;:: '"""' AMHI - IIHHMMHMHHIIIM;:: AMMHI - IHHHMMHMHMHHHIHI;:: :AMMMHI - IHHHMMMMHMMHHHII;;;;:: :,;; MMMHHI - IHHHMMHHHHMMHHHI;:";;;;;;" MMMIH' - ;IHHMMHMMMMHF"HHII MMMHH - IHHMMHV;;:: HHII;: : MMHHI - IHHMV;;::: HHII;: : : MMHI; - IHMV;;:: : "HII;: :: MMI; - :IHV;:: : 'HI: :: MM; - IV;:: : : "II;: ; - IH;;::: : ;;;I: ; - ;M;;:::: : ';;;HI: ' - MH;;:::: : ';;HI: ; - IM;;;::: : :[; ';I"I: ; - M;;;::: : : [;;,: ' : ' - ;;:::: : ::'' : ': - ;;::: : : ': : - :;;:: : :: ':' - ;;:: : : : '': - ;;:: : : :;,: - ;;:: : :: ;[[[,: -:;;:: : : ;;[[[;': -;;:: : : [:: : : ;[[[[;;[, -;:: : [;;;: : :, [[[[['[[; -;:: : :M;;: : :,[ [[[[ [[' -;: : "[:: : ::[ ;[' ;[ -;: : "[: : ::[ :' :' -:: :: : ", :::;[ :' :; -: :: ': : :::;[ ::' :; - :: ; : : ::::;[:,,::;;I' ;; - ;;:;: : : : :::::::: '""' I[[;"' - ;;;:: : : '::::' ; - ;;;:: : : : ; - ';;;;::: : : ': ; - ';;:::: : : - M;:::: : ': - MMMI;:::: : ; - MMMMMA;::: : - AHHMMMMHA;:::: : ; - :MHHMMMMMMMA;: ' : - AHHHMMM;"TTTTL: : ; - AHHHHHHMMLLLLLH ': : - :MHHH:::;HHMMMMMA: : ; - :AHHH:::HH;;;;;MMM;: : - :MHH;: ;;;;;MMM:: : : ; - :MH;: : ';;;;MMM:: ': ': - ,H;: ';;;MMM::: :':' ; - ,;: : : : ;;;Y;H:: : - ,;: : : : ';;;:; : : ; ; - [;:: : ;;:; ; ; ; -~ -E -july~ +March~ . ,.--.. ,::.'.. . . "VI:I:".':-.,. ,I::. .. . 'VHMHII:.::;:.:,.. @@ -1571,7 +1559,7 @@ july~ ':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. ' ~ E -august~ +april~ . nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn. .MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM @@ -1624,8 +1612,8 @@ august~ %% % %%%%%% ~ E -september~ - . .:IIIIHIHHIHHHII::I:. +june~ + . .:IIIIHIHHIHHHII::I:. :IIIIHIHHHHHHMMHHIHHIIHHIII:. ,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:. .:IIHHHHHHHHMMMMMHHHHMMMHHMHHHIIIHIIII: @@ -1682,6 +1670,18 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII ::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. . ::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . , ':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . 'VII:::. .. . + :::::.:..:.... . . . ...AHHHHIHIIII:::. . 'VII:::. . . :. + :::::::.:..... .. . ....MHHHHHIHIII::.:.. . 'VII::. . :: + :::::::::.:.... .. ....:MHHHHIHII:I::::... . 'VI::. . ::I) + '::::::::::.:... .. ...:MHHHHIHIIII::::.. . 'VI:. ...:V + .:::::::::::.:.... . .AMMHHIHIII:I::::... . . I::. ...:-" + :.::I::::::::.:. . ..MMMHHIHIIII:I:::... . . .::. ,..-" + :..:II:I:::::.:.. . ..MMMHHIHIIIIIII:I::.... . . ..::""' + .::.:III:I::::::.:.. ..MMMMIVHIHIIIII:I::::.... . .....:, +.:.::..:III:I:::::.:... .MMHMAIVHHIHIIIII:I::::.. . ..::..:, +. .:::.::III:I::::.:... .VMMHMAIVHHHIHIIII:I::::.. ..:...::: +. :::I.:::III:I:::.::.. .:MMHHMAIVHHIHIIIII:I::::....:::.:::: + .::IIH.:::III:I::::.:.. .MMHMHMAIVHHHIHIIIIII:I ~ #186 scroll poem irish~ @@ -1721,6 +1721,7 @@ A large wooden chest with bands of iron circling it is closed with its lock hang 15 0 0 0 0 a 0 0 0 0 0 0 0 50 5 -1 0 50 0 0 0 +T 209 E iron bound wooden chest~ The chest is in excellent condition. Made from a fine grain of wood it is diff --git a/lib/world/obj/118.obj b/lib/world/obj/118.obj index a38138f..63bbc3b 100644 --- a/lib/world/obj/118.obj +++ b/lib/world/obj/118.obj @@ -38,7 +38,7 @@ A washing machine rumbles steadily as it spins.~ E washing machine~ Simple yet most effective, this smooth white appliance vibrates gently as it -goes about the important business of spotlifying soiled clothing. +goes about the important business of cleaning soiled clothing. ~ #11803 cloth nappy dingy white piece~ diff --git a/lib/world/obj/12.obj b/lib/world/obj/12.obj index 319cc86..2ce72ca 100644 --- a/lib/world/obj/12.obj +++ b/lib/world/obj/12.obj @@ -194,8 +194,8 @@ weapon level 34~ a level 34 weapon~ A level 34 weapon is used to test level restrictions~ ~ -12 0 0 0 0 ano 0 0 0 0 0 0 0 -0 0 0 0 +5 0 0 0 0 ano 0 0 0 0 0 0 0 +11 2 2 0 1 1 0 34 #1266 Black Staff of Immortality~ @@ -296,14 +296,14 @@ A piece of fireworks is planted in a champagne bottle.~ 0 0 0 0 T 1297 E +firework new year piece~ + This large rocket is about to go up! Strange colours will fill the sky! +~ +E bottle champagne~ The bottle is filled partially with water so it doesn't tilt over. Someone has obviously drunk the champagne first. ~ -E -firework new year piece~ - This large rocket is about to go up! Strange colours will fill the sky! -~ #1299 christmas tree~ a christmas tree~ diff --git a/lib/world/obj/3.obj b/lib/world/obj/3.obj index 15e3a1d..245f981 100644 --- a/lib/world/obj/3.obj +++ b/lib/world/obj/3.obj @@ -202,13 +202,13 @@ A small sword lies here.~ 0 1 6 11 3 60 0 0 E -sword small~ - The small sword seems to have an inscription of some sort inscription... -~ -E inscription~ It says: 'May this sword be a good companion. ' ~ +E +sword small~ + The small sword seems to have an inscription of some sort inscription... +~ #322 sword long~ a long sword~ @@ -241,6 +241,19 @@ A large flail is here.~ 5 0 0 0 0 an 0 0 0 0 0 0 0 0 2 4 7 6 625 0 0 +#326 +towel white~ +a white towel~ +A white bleached towel is folded nicely here.~ +~ +12 0 0 0 0 ak 0 0 0 0 0 0 0 +0 0 0 0 +1 1 0 0 +E +white towel~ + The towel looks thick and plush. It appears to be woven from cotton and +bleached a bright white. +~ #330 torch~ a torch~ @@ -615,13 +628,13 @@ A large, sociable bulletin board is mounted on a wall here.~ 0 0 0 0 0 0 0 0 E -board~ - If you can read this, the board is not working. -~ -E social bulletin~ Use 'look board' to read the board. ~ +E +board~ + If you can read this, the board is not working. +~ #397 board frozen bulletin~ a frozen bulletin board~ @@ -631,13 +644,13 @@ A large bulletin board is here, carved from a block of ice.~ 0 0 0 0 0 0 0 0 E -board~ - If you can read this, the board is not working. -~ -E freeze bulletin~ Use 'look board' to read the board. ~ +E +board~ + If you can read this, the board is not working. +~ #398 board holy bulletin~ a holy bulletin board~ @@ -647,13 +660,13 @@ A large bulletin board is mounted on a wall here. It glows with a faint aura.~ 0 0 0 0 0 0 0 0 E -board~ - If you can read this, the board is not working. -~ -E holy bulletin~ Use 'look board' to read the board. ~ +E +board~ + If you can read this, the board is not working. +~ #399 board bulletin~ a bulletin board~ @@ -663,11 +676,11 @@ A large bulletin board is mounted on a wall here.~ 0 0 0 0 0 0 0 0 E -board~ - If you can read this, the board is not working. -~ -E bulletin~ Use 'look board' to read the board. ~ +E +board~ + If you can read this, the board is not working. +~ $~ diff --git a/lib/world/qst/0.qst b/lib/world/qst/0.qst index 67a4bf9..185c943 100644 --- a/lib/world/qst/0.qst +++ b/lib/world/qst/0.qst @@ -1,14 +1 @@ -#0 -Undefined~ -Quest definition is incomplete.~ -There is no information on this quest. -~ -You have completed the quest. -~ -You have abandoned the quest. -~ --1 1 0 -1 -1 -1 -1 -0 0 0 34 -1 -1 1 -0 0 65535 -S $~ diff --git a/lib/world/trg/0.trg b/lib/world/trg/0.trg index 8c0e646..75e71a9 100644 --- a/lib/world/trg/0.trg +++ b/lib/world/trg/0.trg @@ -284,7 +284,7 @@ Tutorial Quest 1441 - Load 8ball~ * By Rumble of The Builder Academy tbamud.com 9091 * Quest Trigs 9-12. Drop the 8ball on their head when they enter. wait 1 sec -%echoaround% %actor.name% A magic eight ball drops from the sky striking %actor.name% on the head. +%echoaround% %actor% A magic eight ball drops from the sky striking %actor.name% on the head. %send% %actor% A magic eight ball drops from the sky striking you on the head. %load% obj 1394 %damage% %actor% %random.5% @@ -1598,6 +1598,7 @@ set actor %random.char% Room Command Example~ 2 c 100 l~ +* By Rumble of The Builder Academy tbamud.com 9091 if %cmd.mudcommand% == look && bridge /= %arg% %send% %actor% As you look at the bridge a small form staggers out from underneath it. %echoaround% %actor% As %actor.name% peers under the bridge a small form emerges. @@ -2500,7 +2501,7 @@ Puff - Random Advice~ 0 ab 12 ~ * By Rumble of The Builder Academy tbamud.com 9091 -set man %random.197% +set max %random.197% set text[1] My god! It's full of stars! set text[2] How'd all those fish get up here? set text[3] Some people are like Slinkies. Not really good for anything, but still bring a smile to your face when you push them down a flight of stairs. @@ -2712,7 +2713,7 @@ if %arg.room% != %actor.room% || %arg.id% == %actor.id% end set inroom %actor.room% if %arg.inventory(80)% - %echoaround% %actor.name% %actor.name% blasts %arg.name% with %actor.hisher% paintball gun. + %echoaround% %actor% %actor.name% blasts %arg.name% with %actor.hisher% paintball gun. %send% %actor% You blast %arg.name%. %send% %arg% You lose! %purge% %arg.inventory(80)% @@ -2734,7 +2735,7 @@ if %arg.room% != %actor.room% || %arg.id% == %actor.id% end set inroom %actor.room% if %arg.inventory(81)% - %echoaround% %actor.name% %actor.name% blasts %arg.name% with %actor.hisher% paintball gun. + %echoaround% %actor% %actor.name% blasts %arg.name% with %actor.hisher% paintball gun. %send% %actor% You blast %arg.name%. %send% %arg% You lose! %purge% %arg.inventory(81)% diff --git a/lib/world/trg/1.trg b/lib/world/trg/1.trg index 55397d6..2e3567d 100644 --- a/lib/world/trg/1.trg +++ b/lib/world/trg/1.trg @@ -2100,7 +2100,7 @@ if %self.contents.vnum% != 47 %load% obj 47 end wait 2 sec -%echoaround% %actor.name% A magic eight ball drops from the sky striking %actor.name% on the head. +%echoaround% %actor% A magic eight ball drops from the sky striking %actor.name% on the head. %send% %actor% A magic eight ball drops from the sky striking you on the head. %damage% %actor% %random.5% ~ @@ -2109,7 +2109,6 @@ Mob Quest Tutorial Example Quest completion - 25~ 0 j 100 ~ * By Rumble of The Builder Academy tbamud.com 9091 -wait 1 sec if %object.vnum% == 47 && !%actor.varexists(solved_example_quest_zone_0)% dance wait 1 sec diff --git a/lib/world/trg/117.trg b/lib/world/trg/117.trg index 8d77220..9564990 100644 --- a/lib/world/trg/117.trg +++ b/lib/world/trg/117.trg @@ -22,7 +22,7 @@ g~ * should be looking for 117xx, where xx is 00-99. if %cmd.mudcommand% == get && ring /= %arg% %send% %actor% You dig in the dirt and pick up the ring. - %echoaround% %actor.name% %actor.name% gets a ring from the dirt. + %echoaround% %actor% %actor.name% gets a ring from the dirt. %load% obj 11700 %actor% inv else return 0 @@ -38,7 +38,7 @@ steal~ * should be looking for 117xx, where xx is 00-99. if %cmd.mudcommand% == steal && cello /= %arg% %send% %actor% You steal the cello from the cello player who exclaims 'Hey!' - %echoaround% %actor.name% %actor.name% immaturely nabs the cello from the cello player's hands during the middle of a performance. + %echoaround% %actor% %actor.name% immaturely nabs the cello from the cello player's hands during the middle of a performance. %load% obj 11708 %actor% inv end ~ @@ -175,7 +175,7 @@ touch~ * should be looking for 117xx, where xx is 00-99. if %arg% == display %send% %actor% You browse around the forbidden display and lift up the large sword. A clicking noise is made from the stand it is on, and suddenly, a huge crashing sound comes from the far west! - %echoaround% %actor.name% %actor.name% lifts the sword on the display and a gigantic crashing sound comes from the west! + %echoaround% %actor% %actor.name% lifts the sword on the display and a gigantic crashing sound comes from the west! %at% 11704 %door% 11704 down flags a %at% 11758 %load% obj 11737 %send% %actor% Salesman Derresor Maosund punches you in the face with anger for touching the display!! @@ -273,7 +273,7 @@ touch~ * should be looking for 117xx, where xx is 00-99. if %arg% == nest %send% %actor% You reach out for the squirrel's nest and touch it, but it falls toward the patch of sand and abruptly falls right through! - %echoaround% %actor.name% %actor.name% tries to reach out and touch the nest, like the 2-year-old %actor.heshe% is. %actor.heshe% drops the nest clumsily but the nest abruptly falls through the strange patch of sand! + %echoaround% %actor% %actor.name% tries to reach out and touch the nest, like the 2-year-old %actor.heshe% is. %actor.heshe% drops the nest clumsily but the nest abruptly falls through the strange patch of sand! %door% 11755 down flags a else %send% %actor% Touch what? @@ -304,7 +304,7 @@ sit~ * should be looking for 117xx, where xx is 00-99. if %cmd.mudcommand% == sit && %arg% /= stump %echo% You sit down on the large stump and take a rest. - %echoaround% %actor.name% %actor.name% sits down on a stump and takes a quick rest. + %echoaround% %actor% %actor.name% sits down on a stump and takes a quick rest. return 0 end ~ @@ -318,7 +318,7 @@ pick~ * should be looking for 117xx, where xx is 00-99. if %arg% == flowers %send% %actor% You kneel beside the path, pick the flowers, and arrange them in a nice bouquet. - %echoaround% %actor.name% %actor.name% picks the exotic flowers beside the path and makes a bouquet from them. + %echoaround% %actor% %actor.name% picks the exotic flowers beside the path and makes a bouquet from them. %load% obj 11735 %actor% inv else %send% %actor% Pick what?? @@ -335,7 +335,7 @@ search~ * should be looking for 117xx, where xx is 00-99. if %arg% == fireplace %send% %actor% You search around the fireplace, and bump into the loose tile. Suddenly, the fire goes out, and the wall behind it opens up! - %echoaround% %actor.name% %actor.name% searches the fireplace, and before you know it, the wall to the north opens like a door! + %echoaround% %actor% %actor.name% searches the fireplace, and before you know it, the wall to the north opens like a door! %door% 11725 north flags a else %send% %actor% Search what? diff --git a/lib/world/trg/118.trg b/lib/world/trg/118.trg index a70e721..b9073c9 100644 --- a/lib/world/trg/118.trg +++ b/lib/world/trg/118.trg @@ -48,7 +48,7 @@ end 1 g 100 ~ if %actor.room.vnum% == 11802 -%echoaround% %actor.name% %actor.name% takes something from the dollhouse and seems to fade mysteriously away, leaving no trace. +%echoaround% %actor% %actor.name% takes something from the dollhouse and seems to fade mysteriously away, leaving no trace. %teleport% %actor% 11801 wait 2 s %send% %actor% You feel a little strange as everything starts to blur, shifting and changing shape until you are completely disorientated. diff --git a/lib/world/trg/13.trg b/lib/world/trg/13.trg index aca537d..4bbfe47 100644 --- a/lib/world/trg/13.trg +++ b/lib/world/trg/13.trg @@ -1835,6 +1835,8 @@ if %actor.varexists(TBA_trial_vnum)% && %actor.level% == 31 %send% %actor% Sedit, Trigedit, Dig, Rclone, Attach, Detach, and Vdelete are not required for your trial vnum. elseif %cmd.mudcommand% == zpurge %send% %actor% Zpurge is not required for your trial vnum. Use 'purge' or 'purge item.' + elseif %cmd.mudcommand% == sacrifice + %send% %actor% Sacrifice is disabled until your trial room is completed. else return 0 end diff --git a/lib/world/trg/14.trg b/lib/world/trg/14.trg index d465a06..a0d04c0 100644 --- a/lib/world/trg/14.trg +++ b/lib/world/trg/14.trg @@ -181,7 +181,7 @@ free~ 2 g 100 ~ wait 2 sec -%echoaround% %actor.name% A magic eight ball drops from the sky striking %actor.name% on the head. +%echoaround% %actor% A magic eight ball drops from the sky striking %actor.name% on the head. %send% %actor% A magic eight ball drops from the sky striking you on the head. %load% obj 47 %damage% %actor% %random.5% @@ -590,8 +590,8 @@ Mob Leave Example~ ~ if (%actor.level% > 10) say You may not leave here, %actor.name%. - %send% %actor.name% %self.name% prevents you from leaving the room. - %echoaround% %actor.name% As %actor.name% tries to leave the room, %self.name% stops %actor.himher%. + %send% %actor% %self.name% prevents you from leaving the room. + %echoaround% %actor% As %actor.name% tries to leave the room, %self.name% stops %actor.himher%. return 0 end ~ diff --git a/lib/world/trg/19.trg b/lib/world/trg/19.trg index 4706411..b3bc067 100644 --- a/lib/world/trg/19.trg +++ b/lib/world/trg/19.trg @@ -1287,7 +1287,7 @@ test while~ set stunned %actor.hitp% - 1 %damage% %actor% %stunned% eval num %random.99% + 1900 -%teleport% %actor.name% %num% +%teleport% %actor% %num% while %actor.inventory% eval item %actor.inventory% eval item_to_purge %%actor.inventory(%item.vnum%)%% diff --git a/lib/world/trg/2.trg b/lib/world/trg/2.trg index 633f786..c639d0c 100644 --- a/lib/world/trg/2.trg +++ b/lib/world/trg/2.trg @@ -190,6 +190,30 @@ extract word5 5 %speech% extract word6 6 %speech% say %word6% %word5% %word4% %word3% %word2% %word1%? ~ +#209 +Open a Chest once per zone reset~ +1 c 100 +open~ +* By Mordecai +if chest /= %arg% + * Verify that the player typed 'open chest' + * Has the player already opened this chest? + context %actor.id% + if %already_opened_chest% + %send% %actor% The chest has already been opened, and emptied. + else + * The first time! OK, open the chest. + %send% %actor% You get a jar of naphthalene from an iron bound chest. + %load% obj 306 %actor% inv + set already_opened_chest 1 + global already_opened_chest + return 0 + end +else + * Not 'open chest' - pass control back to the command parser + return 0 +end +~ #212 Phoenix Rising - 219~ 1 c 4 diff --git a/lib/world/trg/236.trg b/lib/world/trg/236.trg index 0b4f6c7..08cd966 100644 --- a/lib/world/trg/236.trg +++ b/lib/world/trg/236.trg @@ -39,7 +39,7 @@ end ~ #23603 Remove Secret Door - 23667~ -2 af 100 +2 f 100 ~ if %self.east% %door% 23667 east purge 0 diff --git a/lib/world/trg/238.trg b/lib/world/trg/238.trg index 4bbe4bb..3186a9d 100644 --- a/lib/world/trg/238.trg +++ b/lib/world/trg/238.trg @@ -90,10 +90,10 @@ Fountain portal - 23855~ en~ if %cmd.mudcommand% == enter && fountain /= %arg% %send% %actor% You dive into a large fountain. - %echoaround% %actor.name% %actor.name% dives into a large fountain. + %echoaround% %actor% %actor.name% dives into a large fountain. %teleport% %actor% 23856 %force% %actor% look - %echoaround% %actor.name% %actor.name% emerges from a large fountain. + %echoaround% %actor% %actor.name% emerges from a large fountain. else %send% %actor% enter what?! end @@ -164,10 +164,10 @@ Green portal entrance - 23863~ en~ if %cmd.mudcommand% == enter && green /= %arg% %send% %actor% You enter a large green portal. - %echoaround% %actor.name% %actor.name% steps into a large green portal. + %echoaround% %actor% %actor.name% steps into a large green portal. %teleport% %actor% 23864 %force% %actor% look - %echoaround% %actor.name% steps into a large green portal. + %echoaround% %actor% steps into a large green portal. else %send% %actor% enter what?! end @@ -178,10 +178,10 @@ Blue portal entrance - 23861~ en~ if %cmd.mudcommand% == enter && blue /= %arg% %send% %actor% You enter a large blue portal. - %echoaround% %actor.name% %actor.name% steps into a large blue portal. + %echoaround% %actor% %actor.name% steps into a large blue portal. %teleport% %actor% 23862 %force% %actor% look - %echoaround% %actor.name% steps through a large blue portal. + %echoaround% %actor% steps through a large blue portal. else %send% %actor% enter what?! end @@ -192,10 +192,10 @@ Red portal entrance - 23862~ en~ if %cmd.mudcommand% == enter && red /= %arg% %send% %actor% You enter a large blue portal. - %echoaround% %actor.name% %actor.name% steps into a large blue portal. + %echoaround% %actor% %actor.name% steps into a large blue portal. %teleport% %actor% 23862 %force% %actor% look - %echoaround% %actor.name% steps through a large blue portal. + %echoaround% %actor% steps through a large blue portal. else %send% %actor% enter what?! end diff --git a/lib/world/trg/267.trg b/lib/world/trg/267.trg index 1889484..11a2954 100644 --- a/lib/world/trg/267.trg +++ b/lib/world/trg/267.trg @@ -1,98 +1,98 @@ -#26700 -Harem Master - 26706~ -0 b 5 -~ -emote looks at his minions and growls, 'get to work, bitches!' -~ -#26701 -Slaves Bow - 26701-26704~ -0 e 0 -A fat harem master looks at his minions and growls, 'get to work, bitches!'~ -wait 1 sec -bow master -~ -#26702 -Master Needs Assist - 26706~ -0 k 10 -~ -emote screams loudly, 'HELP ME, MY SLAVES!' -~ -#26703 -Slaves Assist Master - 26701-26704~ -0 e 0 -A fat harem master screams loudly, 'HELP ME, MY SLAVES!'~ -wait %random.6% sec -assist master -~ -#26705 -Fear Spell - 26710~ -0 k 5 -~ -emote utters the words, 'pabrow'. -%force% %actor% flee -~ -#26706 -Butcher - 26713~ -0 bg 5 -~ -emote begins sharpening %self.hisher% knife. -~ -#26707 -Tar Baby Follow - 26708~ -0 b 10 -~ -set actor %random.char% -if %actor.is_pc% - mfollow %actor% - say Ho ho, hee hee, %actor.name% you are sooo funneeee! - %send% %actor% %self.name% looks at you with the cutest expression. - %echoaround% %actor% %self.name% looks at %actor.name% with the cutest expression. -end -~ -#26708 -Grand Inquisitor - 26719~ -0 k 100 -5~ -switch %random.2% - case 1 - emote utters the words, 'ordalaba'. - dg_cast 'energy drain' %actor% - break - case 2 - emote evilly grins and snaps his hands. - dg_cast 'animate dead' corpse - order followers assist - break - default - break -done -~ -#26709 -High Priest of Terror - 26714~ -0 k 5 -~ -switch %random.2% - case 1 - emote utters the words, 'ordalaba'. - dg_cast 'charm' %actor - break - case 2 - emote waves $s hands in a swirling motion. - dg_cast 'earthquake' - break - default - break -done -~ -#26710 -Near Death Trap - 26744~ -2 g 100 -~ -* Near Death Trap stuns actor -wait 3 sec -set stunned %actor.hitp% -%damage% %actor% %stunned% -wait 3 sec -%send% %actor% The Gods allow your puny existence to continue. -~ -$~ +#26700 +Harem Master - 26706~ +0 b 5 +~ +emote looks at his minions and growls, 'get to work, bitches!' +~ +#26701 +Slaves Bow - 26701-26704~ +0 e 0 +A fat harem master looks at his minions and growls, 'get to work, bitches!'~ +wait 1 sec +bow master +~ +#26702 +Master Needs Assist - 26706~ +0 k 10 +~ +emote screams loudly, 'HELP ME, MY SLAVES!' +~ +#26703 +Slaves Assist Master - 26701-26704~ +0 e 0 +A fat harem master screams loudly, 'HELP ME, MY SLAVES!'~ +wait %random.6% sec +assist master +~ +#26705 +Fear Spell - 26710~ +0 k 5 +~ +emote utters the words, 'pabrow'. +%force% %actor% flee +~ +#26706 +Butcher - 26713~ +0 b 10 +~ +emote begins sharpening %self.hisher% knife. +~ +#26707 +Tar Baby Follow - 26708~ +0 b 10 +~ +set actor %random.char% +if %actor.is_pc% + mfollow %actor% + say Ho ho, hee hee, %actor.name% you are sooo funneeee! + %send% %actor% %self.name% looks at you with the cutest expression. + %echoaround% %actor% %self.name% looks at %actor.name% with the cutest expression. +end +~ +#26708 +Grand Inquisitor - 26719~ +0 k 100 +5~ +switch %random.2% + case 1 + emote utters the words, 'ordalaba'. + dg_cast 'energy drain' %actor% + break + case 2 + emote evilly grins and snaps his hands. + dg_cast 'animate dead' corpse + order followers assist + break + default + break +done +~ +#26709 +High Priest of Terror - 26714~ +0 k 5 +~ +switch %random.2% + case 1 + emote utters the words, 'ordalaba'. + dg_cast 'charm' %actor + break + case 2 + emote waves $s hands in a swirling motion. + dg_cast 'earthquake' + break + default + break +done +~ +#26710 +Near Death Trap - 26744~ +2 g 100 +~ +* Near Death Trap stuns actor +wait 3 sec +set stunned %actor.hitp% +%damage% %actor% %stunned% +wait 3 sec +%send% %actor% The Gods allow your puny existence to continue. +~ +$~ diff --git a/lib/world/trg/27.trg b/lib/world/trg/27.trg index f1a5829..6b68b7f 100644 --- a/lib/world/trg/27.trg +++ b/lib/world/trg/27.trg @@ -337,28 +337,28 @@ rdelete Zn27_shacklepass %actor.id% 2 c 100 kneel~ if %arg%==creature -%send% %actor.name% You kneel before the skeletal creature. +%send% %actor% You kneel before the skeletal creature. wait 1 s -%send% %actor.name% You suddenly feel very strange as the creature gestures and an eerie mist surrounds you. +%send% %actor% You suddenly feel very strange as the creature gestures and an eerie mist surrounds you. wait 3 s - %teleport% %actor.name% 2712 + %teleport% %actor% 2712 %force% %actor% look elseif %arg%==skeletal -%send% %actor.name% You kneel before the skeletal creature. +%send% %actor% You kneel before the skeletal creature. wait 1 s -%send% %actor.name% You suddenly feel very strange as the creature gestures and an eerie mist surrounds you. +%send% %actor% You suddenly feel very strange as the creature gestures and an eerie mist surrounds you. wait 3 s - %teleport% %actor.name% 2712 + %teleport% %actor% 2712 %force% %actor% look elseif %arg%==circle -%send% %actor.name% You kneel inside the circle. +%send% %actor% You kneel inside the circle. wait 1 s -%send% %actor.name% You suddenly feel very strange as an eerie mist surrounds you. +%send% %actor% You suddenly feel very strange as an eerie mist surrounds you. wait 3 s - %teleport% %actor.name% 2712 + %teleport% %actor% 2712 %force% %actor% look else -%send% %actor.name% Kneel to who? +%send% %actor% Kneel to who? end ~ #2719 @@ -530,19 +530,19 @@ if %self.carried_by% eval actor %self.carried_by% if %actor.fighting% eval victim %actor.fighting% - %echoaround% %actor.name% @R%actor.name%'s doll suddenly opens its eyes and causes %victim.name% to shudder in pain.@n - %send% %actor.name% @RYour doll suddenly opens its eyes and causes %victim.name% to shudder in pain.@n + %echoaround% %actor% @R%actor.name%'s doll suddenly opens its eyes and causes %victim.name% to shudder in pain.@n + %send% %actor% @RYour doll suddenly opens its eyes and causes %victim.name% to shudder in pain.@n %damage% %victim% 100 if (%actor.varexists(zn27_twice)%) rdelete Zn27_twice %actor.id% wait 3 s -%send% %actor.name% @RYour doll turns its head to look at you.@n +%send% %actor% @RYour doll turns its head to look at you.@n wait 1 s -%send% %actor.name% @RYour doll says 'Thrice I have repaid my debt.'@n +%send% %actor% @RYour doll says 'Thrice I have repaid my debt.'@n wait 1 s -%send% %actor.name% @RYour doll says 'And still I await my freedom.'@n +%send% %actor% @RYour doll says 'And still I await my freedom.'@n wait 1 s -%send% %actor.name% @RThe doll suddenly transforms into a little girl and runs away.'@n +%send% %actor% @RThe doll suddenly transforms into a little girl and runs away.'@n rdelete Zn27_offereddoll %actor.id% %purge% %self% elseif (%actor.varexists(zn27_once)%) @@ -805,7 +805,7 @@ test door~ enter~ if ("%arg%" == "space") %send% %actor% A previously concealed space suddenly becomes apparant. -%echoaround% %actor.name% %actor.name% has discovered a hidden space! +%echoaround% %actor% %actor.name% has discovered a hidden space! %door% 2740 down flags a %door% 2740 down room 2741 %door% 2740 down description Nothing can be seen within this dark space. @@ -921,7 +921,7 @@ attach %arg% test act~ 1 c 7 look~ -%force% %actor.name% %at% 2755 look +%force% %actor% %at% 2755 look ~ #2752 test speech~ diff --git a/lib/world/trg/271.trg b/lib/world/trg/271.trg index 2322eac..b752130 100644 --- a/lib/world/trg/271.trg +++ b/lib/world/trg/271.trg @@ -1,6 +1,6 @@ #27100 Silk Trader - 27137~ -0 bg 100 +0 b 10 ~ wait 1 sec switch %random.23% @@ -95,7 +95,7 @@ done ~ #27101 Athos - 27153~ -0 bg 50 +0 b 10 ~ wait 1 sec switch %random.7% @@ -130,7 +130,7 @@ done ~ #27102 Hangman - 27102~ -0 bg 100 +0 b 10 ~ wait 1 sec switch %random.5% @@ -162,7 +162,7 @@ done ~ #27103 Butcher - 27142~ -0 bg 5 +0 b 10 ~ wait 1 sec switch %random.17% @@ -232,7 +232,7 @@ done ~ #27104 Stu - 27166~ -0 bg 100 +0 b 10 ~ wait 1 sec switch %random.14% @@ -287,7 +287,7 @@ done ~ #27105 Earl of Sundhaven - 27100~ -0 bg 100 +0 b 10 ~ wait 1 sec switch %random.9% @@ -332,16 +332,16 @@ Blinder - 27161~ ~ %echo% %self.name% whispers, 'So, %actor.name%! You wouldst share my affliction!' wait 1 sec -%send% %actor.name% %self.name%'s frayed cloak blows as he aims a bony finger at you. -%echoaround% %actor.name% %self.name%'s frayed cloak blows as he points at %actor.name%. +%send% %actor% %self.name%'s frayed cloak blows as he aims a bony finger at you. +%echoaround% %actor% %self.name%'s frayed cloak blows as he points at %actor.name%. wait 1 sec -%send% %actor.name% A flash of pale fire explodes in your face! -%echoaround% %actor.name% A flash of pale fire explodes in %actor.name%'s face! +%send% %actor% A flash of pale fire explodes in your face! +%echoaround% %actor% A flash of pale fire explodes in %actor.name%'s face! dg_cast 'blindness' %actor% ~ #27107 Idiot - 27115~ -0 bg 100 +0 b 10 ~ wait 1 sec switch %random.13% diff --git a/lib/world/trg/3.trg b/lib/world/trg/3.trg index 569fa42..6d895f7 100644 --- a/lib/world/trg/3.trg +++ b/lib/world/trg/3.trg @@ -79,38 +79,53 @@ if %actor.class% != cleric || %actor.align% < 350 end ~ #304 -Room Enter - test trigger~ -2 g 100 -~ -wait 50 -wsend %actor% you enter a room +Room Command - Look at Painting~ +2 c 100 +l~ +* By Rumble of The Builder Academy tbamud.com 9091 +if %cmd.mudcommand% == look && painting /= %arg% + %send% %actor% As you stare at the painting the figures seem to start moving and acting out the scenes they portray. + %echoaround% %actor% %actor.name% stares at one of the paintings. A strange look coming over %actor.hisher% face. +else + * If it doesn't match let the command continue. Without a return 0 a player + * will not be able to "look" at anything else. + return 0 +end ~ #305 -car/cdr test~ -0 d 100 -*~ -*by having * as the arg, it will not always display -* 'test' as %speech.car% -say speech: %speech% -say car: %speech.car% -say cdr: %speech.cdr% +Mob Greet Clothing Check~ +0 g 100 +~ +* By Rumble of The Builder Academy tbamud.com 9091 +if %actor.is_pc% + wait 1 sec + if %actor.eq(*)% + eval worn_about %actor.eq(about)% + if %worn_about.vnum% == 326 + look %actor.name% + smile + else + say You always bathe in your clothes? + eyebrow + end + else + say at least get a towel, I don't want to see that. + end +end ~ #306 -Mob Command - subfield test~ -0 c 100 -test~ -* test to make sure %actor.skill(skillname)% works -say your hide ability is %actor.skill(hide)% percent. -* -* make sure %actor.eq(name)% works too -eval headgear %actor.eq(head)% -if %headgear% - say You have some sort of helmet on -else - say Where's your headgear? - halt +Room Entry - sneak check~ +2 g 25 +~ +* By Rumble of The Builder Academy tbamud.com 9091 +if %actor.is_pc% + if %actor.skill(sneak)% > 50 + %send% %actor% You walk into the room, not waking any of the clerics. + else + %send% %actor% Your entry into the room wakes a few of the clerics. + %load% mob 340 + end end -say Fix your %headgear.name% ~ #307 Obj Remove - %transform% test~ diff --git a/lib/world/trg/30.trg b/lib/world/trg/30.trg index e410351..504e0fa 100644 --- a/lib/world/trg/30.trg +++ b/lib/world/trg/30.trg @@ -159,9 +159,10 @@ switch %actor.level% done ~ #3008 -Death Trap~ +Near Death Trap~ 2 g 100 ~ +* By Rumble of The Builder Academy tbamud.com 9091 * Near Death Trap stuns actor set stunned %actor.hitp% %damage% %actor% %stunned% @@ -199,15 +200,16 @@ end Stock Fido - 3062, 3066~ 0 b 100 ~ -eval inroom %self.room% -eval item %inroom.contents% +set inroom %self.room% +set item %inroom.contents% while %item% * Target the next item in room. In case it is devoured. set next_item %item.next_in_list% * Check for a corpse. Corpse on TBA is vnum 65535. Stock is -1. - if %item.vnum% == 65535 + if %item.vnum(65535)% emote savagely devours a corpse. %purge% %item% + halt end set item %next_item% * Loop back diff --git a/lib/world/trg/83.trg b/lib/world/trg/83.trg index 7283967..416f8a1 100644 --- a/lib/world/trg/83.trg +++ b/lib/world/trg/83.trg @@ -70,7 +70,7 @@ surrender~ ~ #8306 Navigator (8306) Sings~ -0 bg 100 +0 b 10 ~ eval song %random.4% switch %song% @@ -141,7 +141,7 @@ done ~ #8307 Cabin Boy (8307) Mops~ -0 bh 75 +0 b 10 ~ wait 2s emote sings, 'Mop, mop, mop, all day long...' @@ -286,7 +286,7 @@ Polly (8313) Learn & Repeat~ ~ #8314 Polly (8313) Random Speech~ -0 bgq 80 +0 b 10 ~ wait 1s emote squawks loudly. @@ -434,7 +434,7 @@ jump~ ~ #8393 99 Bottles of Beer (Drunken Pirate: 8309)~ -0 bg 100 +0 b 10 ~ set beers 99 emote clears his throat. diff --git a/lib/world/wld/0.wld b/lib/world/wld/0.wld index 39af1bc..efa10c9 100644 --- a/lib/world/wld/0.wld +++ b/lib/world/wld/0.wld @@ -554,9 +554,10 @@ D2 S #33 Rumble's Room~ - The mark of the immature man is that he wants to die nobly for a cause, -while the mark of the mature man is that he wants to live humbly for one. ---Wilhelm Stekel + +The only thing necessary for evil to triumph is for good men to do nothing. + +-Edmund Burke ~ 0 8 0 0 0 0 D0 @@ -568,6 +569,10 @@ D2 ~ 0 0 33 E +undefined~ +test +~ +E Catcher Rye~ The mark of the immature man is that he wants to die nobly for a cause, while the mark of the mature man is that he wants to live humbly for one. @@ -662,10 +667,6 @@ understanding and knowledge can only benefit all nations. We invite all nations to celebrate with Americans online this Fourth of July. Happy Birthday, America! ~ -E -.test~ -can you see this with look around? -~ S #34 Pool of Images~ diff --git a/lib/world/wld/1.wld b/lib/world/wld/1.wld index aa73dbd..893dbe3 100644 --- a/lib/world/wld/1.wld +++ b/lib/world/wld/1.wld @@ -1,10 +1,10 @@ #100 Temple of Sanctum~ - This large room appears to be inside inside a massive temple dedicated to the -gods of Sanctus. The ceiling is supported by fluted columns and a main spiral + This large room appears to be inside a massive temple dedicated to the gods +of Sanctus. The ceiling is supported by fluted columns and a main spiral stairwell that leads both up and down. Small rooms adjoin this chamber in all four cardinal directions. It is here mortals come to stay informed and discuss -their adventures. +their adventures. ~ 1 28 0 0 0 0 D0 @@ -93,19 +93,19 @@ D5 ~ 0 0 100 E -statue~ - As you examine the statues more closely you realize they must resemble the -two gods responsible for the creation and ongoing protection of Sanctus, Ferret -and Rumble. They both radiate a strength and power that resembles the solid -white marble they were crafted from. -~ -E altar~ The altar is made from black granite and has been carved into a small basin with a high back. Almost as if it was meant to be some sort of seat. Inscriptions in some foreign tongue are written on every square inch of the altar. You wonder what they must say and who could have written it. ~ +E +statue~ + As you examine the statues more closely you realize they must resemble the +two gods responsible for the creation and ongoing protection of Sanctus, Ferret +and Rumble. They both radiate a strength and power that resembles the solid +white marble they were crafted from. +~ S T 158 T 163 @@ -241,17 +241,17 @@ D5 ~ 0 0 142 E +table~ + The table is made out of cherry. It is worn from years of use. The glass +top allows for an excellent view of the map protected within. +~ +E map~ The map is a geographic representation of Sanctus. Not even really a map, more of a scaled model. The walls and buildings of the city are raised higher than the rest of the map to give it a third dimension. Small soldiers are scattered around the top of the table to help the War Master place his men. -~ -E -table~ - The table is made out of cherry. It is worn from years of use. The glass -top allows for an excellent view of the map protected within. ~ S #109 @@ -385,18 +385,18 @@ D1 ~ 0 0 100 E +hole~ + You can look out over the inner wall to the western side of Sanctus. The +smell of charred human remains and smoldering plaster makes your eyes water so +it is difficult to see much else through the tiny hole. +~ +E man silhouette~ The distinct outline of a human body that must have taken the brunt of the blast when the portal imploded. You wonder what or who it might have been. You can still see pieces of cloth and bone buried deeply into the wall inside the shadow of the unlucky man. ~ -E -hole~ - You can look out over the inner wall to the western side of Sanctus. The -smell of charred human remains and smoldering plaster makes your eyes water so -it is difficult to see much else through the tiny hole. -~ S #117 Travelling Room~ @@ -532,19 +532,19 @@ D2 ~ 0 0 129 E -table desk chair~ - The table, desk, and chair are made from solid oak of the highest quality. -A thin goose down mattress and pillow are the only comfortable looking items in -the room. The desk is bare and all the drawers are empty. It is as if no one -even lives here. -~ -E shrine~ A beutiful shrine. It has two white marble figures facing each other with a painting of the city below them. The two figures seem to be looking down at the city with looks of worry and hopelessness. An unlit candle and mirror lay on the floor beside the small shrine. ~ +E +table desk chair~ + The table, desk, and chair are made from solid oak of the highest quality. +A thin goose down mattress and pillow are the only comfortable looking items in +the room. The desk is bare and all the drawers are empty. It is as if no one +even lives here. +~ S #125 Plane of the Magi~ @@ -818,14 +818,10 @@ D0 ~ 0 0 128 E -window~ - Overlooking the western gate you can see the shimmering protective dome. -You hope it lasts, peace and tranquility is a good thing. -~ -E -chair~ - It's just your standard wooden chair. Uncomfortable and only real -usefulness would be as firewood. +bed~ + The bed is made of a sturdy pine. A thin mattress covered in a white sheet +with a down pillow overlaying it. The mattress is too thin to hold anything of +value. ~ E desk~ @@ -835,10 +831,14 @@ centered on the top of the desk. The desk has three drawers. All of them are empty. ~ E -bed~ - The bed is made of a sturdy pine. A thin mattress covered in a white sheet -with a down pillow overlaying it. The mattress is too thin to hold anything of -value. +chair~ + It's just your standard wooden chair. Uncomfortable and only real +usefulness would be as firewood. +~ +E +window~ + Overlooking the western gate you can see the shimmering protective dome. +You hope it lasts, peace and tranquility is a good thing. ~ S #136 diff --git a/lib/world/wld/22.wld b/lib/world/wld/22.wld index 88eb0d7..978bef3 100644 --- a/lib/world/wld/22.wld +++ b/lib/world/wld/22.wld @@ -986,12 +986,15 @@ D3 S #2259 Stairs~ - A crumbling stairwell leads up down into darkness. The steps are cracked -and fall apart when you put any sizeable force upon them. They seem -treacherous, but passable. An empty hallway to the west looks far more -inviting. + A crumbling stairwell leads down into darkness. The steps are cracked and +fall apart when you put any sizeable force upon them. They seem treacherous, +but passable. An empty hallway to the west looks far more inviting. ~ 22 8 0 0 0 0 +D1 +~ +~ +0 0 -1 D3 ~ ~ diff --git a/lib/world/wld/3.wld b/lib/world/wld/3.wld index 6b1d38f..7746b85 100644 --- a/lib/world/wld/3.wld +++ b/lib/world/wld/3.wld @@ -106,7 +106,8 @@ S An Elegant Hall~ Drawings of ancient battles in which the Magi slaughter their foes line both sides of the hallway. Depicted on these drawings are a myriad of creatures -ranging from ogres, orcs, goblins, and demons to humans, elves, and dwarves. +ranging from ogres, orcs, goblins, and demons to humans, elves, and dwarves. +One of the paintings looks oddly familiar. ~ 3 8 0 0 0 0 D0 @@ -122,6 +123,7 @@ D2 ~ 0 0 319 S +T 304 #305 The Baths~ The air is musky and hard to breathe due to the hot steam wafting from the @@ -160,10 +162,11 @@ D2 ~ 0 0 321 S +T 306 #307 A Long Hallway~ The barren walls and floor would seem odd anywhere but here as the Clerics of -Sanctus consider decorations, desires, or any form od unnecessary wants to be +Sanctus consider decorations, desires, or any form of unnecessary wants to be blasphemous. They dedicate their lives to helping others, never themselves, and would all sacrifice their lives for that principle. ~ @@ -1367,7 +1370,7 @@ and well kept. A single door leads down to the shop below. D5 ~ door~ -2 0 225 +1 0 225 E sky winds~ Cold winds plunge ceaselessly at you from the dark, cloudless sky. diff --git a/lib/world/wld/300.wld b/lib/world/wld/300.wld index 8ecd33b..6a23f8a 100644 --- a/lib/world/wld/300.wld +++ b/lib/world/wld/300.wld @@ -840,11 +840,9 @@ There is a strange hole in the rock wall, circular in shape. E sign signpost~ The signpost reads in ancient runic script: -@n The Penultimate Tower of Wizardry was rumored to exist, once, just down this road... who knows if this is true? For though many have went on to see, none have returned to claim it true... -@n --Mercutio the Bard of the Realm ~ E diff --git a/lib/world/wld/301.wld b/lib/world/wld/301.wld index 28c6c9e..1fb6d84 100644 --- a/lib/world/wld/301.wld +++ b/lib/world/wld/301.wld @@ -33,7 +33,7 @@ class range. Remove the extra '0' if you don't need/want it. Here are some recommended specials for the mobs: #04 should be given a sleep spell to cast #47 should be given an undead process. -* + Zone 301 is linked to the following zones: 302 Campus at 30123 (south) ---> 30236 302 Campus at 30124 (north) ---> 30250 @@ -50,6 +50,7 @@ Zone 301 is linked to the following zones: 302 Campus at 30136 (east ) ---> 30266 302 Campus at 30140 (south) ---> 30260 302 Campus at 30142 (north) ---> 30201 + 302 Campus at 30142 (east ) ---> 30203 302 Campus at 30199 (up ) ---> 30200 ~ diff --git a/lib/world/wld/51.wld b/lib/world/wld/51.wld index e3fbd5a..3cf4fa2 100644 --- a/lib/world/wld/51.wld +++ b/lib/world/wld/51.wld @@ -706,9 +706,9 @@ S The Sacrificial Pit~ As you climb down into the pit, thousands of spiders cover you, tearing your fragile body to shreds. - +@R Lloth thanks you for your sacrifice. - +@n ~ 51 12 0 0 0 0 S diff --git a/lib/world/wld/53.wld b/lib/world/wld/53.wld index c740dc2..cbe7c47 100644 --- a/lib/world/wld/53.wld +++ b/lib/world/wld/53.wld @@ -27,7 +27,6 @@ Sand as far as the eye can see. E pyramid~ The massive pyramid rises out of the sand, a monument to long-dead pharoahs. - ~ S #5301 @@ -51,7 +50,6 @@ The steep slope of the pyramid rises up before you. E pyramid~ You wonder how anyone could have built such a massive thing out in this heat. - ~ S #5302 @@ -84,7 +82,6 @@ Far below you are the burning sands of the desert. E pyramid~ You wonder how anyone could have built such a massive thing out in this heat. - ~ S #5303 @@ -117,7 +114,6 @@ This side of the pyramid has a dangerous drop before the sandy floor. E pyramid~ You wonder how anyone could have built such a massive thing out in this heat. - ~ S #5304 @@ -150,7 +146,6 @@ This side of the pyramid has a dangerous drop before the sandy floor. E pyramid~ You wonder how anyone could have built such a massive thing out in this heat. - ~ S #5305 @@ -184,7 +179,6 @@ This side of the pyramid has a dangerous drop before the sandy floor. E pyramid~ You wonder how anyone could have built such a massive thing out in this heat. - ~ S #5306 @@ -226,9 +220,7 @@ stones~ E plaque~ The plaque reads: - The Great Pyramid - Created by the Andersen work crew. ~ E @@ -242,12 +234,9 @@ S On The Dangerous Stones~ Here the elements have carved away at the sides of the pyramid quite a bit. You aren't so sure of your footing anymore... - Suddenly the wind picks up, and you lose your balance! You tumble down the side of the pyramid, and fall to your death! - SPLAT. - Ouch. ~ 53 12 0 0 0 0 @@ -456,13 +445,11 @@ The crawlway gets a little larger to the north. S #5317 A Slippery Hole~ - The sides of this hole are slippery-smooth. You lower yourself in, and + The sides of this hole are slippery-smooth. You lower yourself in, and proceed to move downward... when suddenly you lose your purchase! - +@ You fall for what seems like an eternity, and smash into the stones below... - - - +@ Under The Hole You are in a small chamber underneath the slippery hole, far below the pyramid now. The floor is strewn with bones. To the south is a @@ -482,7 +469,7 @@ The hole looks far too slippery to climb back up. E bones~ The bones have whitened and cracked in the dry air, apparently the remains of -adventurers, thieves, and creatures that did not survive the fall. +adventurers, thieves, and creatures that did not survive the fall. ~ S #5318 diff --git a/lib/world/wld/55.wld b/lib/world/wld/55.wld index 016929f..3524450 100644 --- a/lib/world/wld/55.wld +++ b/lib/world/wld/55.wld @@ -471,9 +471,8 @@ D0 E sign~ The sign reads: - +@ Closed for renovations - ~ S #5528 @@ -505,13 +504,12 @@ D3 E note~ The note reads: - +@ LIST : gives you a list of items for sale. VALUE : tells you how much an item is worth to Abdul SELL : sells an item to Abdul for a generous sum BUY : Abdul's FAVORITE command lets you have an item for his low, low price. - ~ S #5530 @@ -619,11 +617,10 @@ D0 E note~ The note simply reads: - +@ READ THE NOTE IN THE ARMOURY - +@ Igor. - ~ S #5537 @@ -875,9 +872,9 @@ D1 E banner~ ===================================================================== - + @ H A P P Y B I R T H D A Y T O U S - +@ ===================================================================== ~ S @@ -1076,9 +1073,7 @@ D3 E plaque~ Engraved on the plaque are the following words: - The Holy Shrine of Allah - ~ S #5566 @@ -1282,7 +1277,6 @@ the walls of the palace from the building itself. E mirror~ You see a the fighting image of some armor clad humanoid wielding a weapon. - ~ S #5577 @@ -1362,13 +1356,10 @@ D3 E plaque door~ The plaque on the door reads: - THE ART EXHIBIT of NEW THALOS - - the management is not responsible for lost items. - ~ S #5580 diff --git a/lib/world/zon/0.zon b/lib/world/zon/0.zon index bd1f321..080ea53 100644 --- a/lib/world/zon/0.zon +++ b/lib/world/zon/0.zon @@ -1,7 +1,7 @@ #0 Rumble~ The Builder Academy Zone~ -0 99 1 2 +0 99 10 2 D 0 89 4 2 (The Prison Cell Corridor) M 0 31 1 89 (the Commissar) G 1 68 99 -1 (the Commissar's key) diff --git a/lib/world/zon/12.zon b/lib/world/zon/12.zon index edd3298..424b38a 100644 --- a/lib/world/zon/12.zon +++ b/lib/world/zon/12.zon @@ -2,10 +2,10 @@ CircleMUD~ God Simplex~ 1200 1299 10 0 -R 0 1204 3098 -1 (a holy bulletin board) -O 0 3098 99 1204 (a holy bulletin board) M 0 1212 1 1200 (the scoreboard mob) O 0 1212 1 1200 (a game console) +R 0 1204 3098 -1 (a holy bulletin board) +O 0 3098 99 1204 (a holy bulletin board) R 0 1293 1227 -1 (a staff bulletin board) O 0 1227 99 1293 (a staff bulletin board) R 0 1291 1226 -1 (a builder's bulletin board) diff --git a/lib/world/zon/3.zon b/lib/world/zon/3.zon index 426ce5e..03528f2 100644 --- a/lib/world/zon/3.zon +++ b/lib/world/zon/3.zon @@ -2,6 +2,12 @@ Rumble~ Sanctus III~ 300 399 30 2 +M 0 301 1 305 (the naked magi) +E 1 326 99 12 (a white towel) +M 0 130 3 305 (the maid) +E 1 155 99 17 (a feather duster) +R 0 305 326 -1 (a white towel) +O 0 326 99 305 (a white towel) R 0 367 308 -1 (a clay jug) O 0 308 99 367 (a clay jug) O 0 335 1 334 (the large fountain) @@ -80,8 +86,6 @@ E 1 26306 99 5 (a flowered dress) M 0 179 3 317 (the recruit) M 0 194 3 314 (the mouse) M 0 193 3 312 (the dove) -M 0 130 3 305 (the maid) -E 1 155 99 17 (a feather duster) M 0 105 3 315 (the balding man) E 1 31612 99 6 (a pair of reading glasses) M 0 100 3 309 (the young man) diff --git a/src/act.informative.c b/src/act.informative.c index 21471da..ff27dcc 100644 --- a/src/act.informative.c +++ b/src/act.informative.c @@ -2222,19 +2222,7 @@ ACMD(do_commands) } /* display commands list in a nice columnized format */ - column_list(buf + strlen(buf), sizeof(buf) - strlen(buf), - /* subtract 1 or 2 lines (the pager adds 1 or 2) */ - /* also "skip" a line since we printed a header above */ - GET_PAGE_LENGTH(ch) - (PRF_FLAGGED(ch, PRF_COMPACT) ? 1 : 2), 1, - /* 7 columns; no == how many elements, 0 offset */ - 7, commands, no, 0, "$11l"); - - if (overflow < 0) { - log("SYSERR: Too many commands for do_commands; increase size of *commands array."); - strncat(buf, "\r\n** OVERFLOW **\r\n", sizeof(buf) - strlen(buf)); - } - - page_string(ch->desc, buf, TRUE); + column_list(ch, 7, commands, no, FALSE); } void free_history(struct char_data *ch, int type) diff --git a/src/class.c b/src/class.c index d87f6e8..f1b918d 100644 --- a/src/class.c +++ b/src/class.c @@ -1918,8 +1918,8 @@ const char *title_male(int chclass, int level) case 20: return "the Cut-Throat"; /* no one ever thought up these titles 21-30 */ case LVL_IMMORT: return "the Immortal Assassin"; - case LVL_GOD: return "the Demi God of thieves"; - case LVL_GRGOD: return "the God of thieves and tradesmen"; + case LVL_GOD: return "the Demi God of Thieves"; + case LVL_GRGOD: return "the God of Thieves and Tradesmen"; default: return "the Thief"; } break; @@ -1949,7 +1949,7 @@ const char *title_male(int chclass, int level) /* no one ever thought up these titles 21-30 */ case LVL_IMMORT: return "the Immortal Warlord"; case LVL_GOD: return "the Extirpator"; - case LVL_GRGOD: return "the God of war"; + case LVL_GRGOD: return "the God of War"; default: return "the Warrior"; } break; @@ -2033,7 +2033,7 @@ const char *title_female(int chclass, int level) /* no one ever thought up these titles 21-30 */ case LVL_IMMORT: return "the Immortal Priestess"; case LVL_GOD: return "the Inquisitress"; - case LVL_GRGOD: return "the Goddess of good and evil"; + case LVL_GRGOD: return "the Goddess of Good and Evil"; default: return "the Cleric"; } break; @@ -2062,8 +2062,8 @@ const char *title_female(int chclass, int level) case 20: return "the Cut-Throat"; /* no one ever thought up these titles 21-30 */ case LVL_IMMORT: return "the Immortal Assassin"; - case LVL_GOD: return "the Demi Goddess of thieves"; - case LVL_GRGOD: return "the Goddess of thieves and tradesmen"; + case LVL_GOD: return "the Demi Goddess of Thieves"; + case LVL_GRGOD: return "the Goddess of Thieves and Tradesmen"; default: return "the Thief"; } break; @@ -2093,7 +2093,7 @@ const char *title_female(int chclass, int level) /* no one ever thought up these titles 21-30 */ case LVL_IMMORT: return "the Immortal Lady of War"; case LVL_GOD: return "the Queen of Destruction"; - case LVL_GRGOD: return "the Goddess of war"; + case LVL_GRGOD: return "the Goddess of War"; default: return "the Warrior"; } break; diff --git a/src/constants.c b/src/constants.c index 8dbda22..25f8b57 100644 --- a/src/constants.c +++ b/src/constants.c @@ -24,7 +24,7 @@ * @todo cpp_extern isn't needed here (or anywhere) as the extern reserved word * works correctly with C compilers (at least in my Experience) * Jeremy Osborne 1/28/2008 */ -cpp_extern const char *tbamud_version = "tbaMUD 3.57"; +cpp_extern const char *tbamud_version = "tbaMUD 3.58"; /* strings corresponding to ordinals/bitvectors in structs.h */ /* (Note: strings for class definitions in class.c instead of here) */ diff --git a/src/dg_variables.c b/src/dg_variables.c index b0168bc..45a74d8 100644 --- a/src/dg_variables.c +++ b/src/dg_variables.c @@ -864,7 +864,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig, if (IS_NPC(c)) strcpy(str, "0"); else { - if ((GET_QUEST(c) != NOTHING) && (real_quest(GET_QUEST(c)) == NOTHING)) + if ((GET_QUEST(c) != NOTHING) && (real_quest(GET_QUEST(c)) != NOTHING)) snprintf(str, slen, "%d", GET_QUEST(c)); else strcpy(str, "0"); diff --git a/src/genqst.c b/src/genqst.c index 2e6a447..865a446 100644 --- a/src/genqst.c +++ b/src/genqst.c @@ -82,6 +82,7 @@ void free_quest(struct aq_data *quest) int add_quest(struct aq_data *nqst) { qst_rnum rnum; + mob_rnum qmrnum; zone_rnum rznum = real_zone_by_thing(nqst->vnum); /* The quest already exists, just update it. */ @@ -105,12 +106,13 @@ int add_quest(struct aq_data *nqst) } copy_quest(&aquest_table[rnum], nqst, FALSE); } + qmrnum = real_mobile(QST_MASTER(rnum)); /* Make sure we assign spec procs to the questmaster */ - if (QST_MASTER(rnum) != NOBODY && mob_index[QST_MASTER(rnum)].func && - mob_index[QST_MASTER(rnum)].func != questmaster) - QST_FUNC(rnum) = mob_index[QST_MASTER(rnum)].func; - if(QST_MASTER(rnum) != NOBODY) - mob_index[QST_MASTER(rnum)].func = questmaster; + if (qmrnum != NOBODY && mob_index[qmrnum].func && + mob_index[qmrnum].func != questmaster) + QST_FUNC(rnum) = mob_index[qmrnum].func; + if(qmrnum != NOBODY) + mob_index[qmrnum].func = questmaster; /* And make sure we save the updated quest information to disk */ if (rznum != NOWHERE) @@ -128,7 +130,7 @@ int delete_quest(qst_rnum rnum) { qst_rnum i; zone_rnum rznum; - mob_rnum qm = QST_MASTER(rnum); + mob_vnum qm = QST_MASTER(rnum); SPECIAL (*tempfunc); int quests_remaining = 0; @@ -235,7 +237,7 @@ int save_quests(zone_rnum zone_num) quest_done, STRING_TERMINATOR, quest_quit, STRING_TERMINATOR, QST_TYPE(rnum), - QST_MASTER(rnum) == NOBODY ? -1 : mob_index[QST_MASTER(rnum)].vnum, + QST_MASTER(rnum) == NOBODY ? -1 : QST_MASTER(rnum), quest_flags, QST_TARGET(rnum) == NOTHING ? -1 : QST_TARGET(rnum), QST_PREV(rnum) == NOTHING ? -1 : QST_PREV(rnum), diff --git a/src/medit.c b/src/medit.c index 7699b89..667ed5a 100644 --- a/src/medit.c +++ b/src/medit.c @@ -340,10 +340,7 @@ static void medit_disp_mob_flags(struct descriptor_data *d) get_char_colors(d->character); clear_screen(d); - column_list(buf, sizeof(buf), 0, 0, - 2, action_bits, NUM_MOB_FLAGS, 0, - "%s$2i%s) $20l", grn, nrm); - write_to_output(d, "%s", buf); + column_list(d->character, 2, action_bits, NUM_MOB_FLAGS, TRUE); sprintbitarray(MOB_FLAGS(OLC_MOB(d)), action_bits, AF_ARRAY_MAX, buf); write_to_output(d, "\r\nCurrent flags : %s%s%s\r\nEnter mob flags (0 to quit) : ", @@ -357,11 +354,9 @@ static void medit_disp_aff_flags(struct descriptor_data *d) get_char_colors(d->character); clear_screen(d); - - column_list(buf, sizeof(buf), 0, 0, - 2, affected_bits, NUM_AFF_FLAGS, 1, - "%s$2i%s) $20l", grn, nrm); - write_to_output(d, "%s", buf); + + /* +1 since AFF_FLAGS don't start at 0. */ + column_list(d->character, 2, affected_bits + 1, NUM_AFF_FLAGS, TRUE); sprintbitarray(AFF_FLAGS(OLC_MOB(d)), affected_bits, AF_ARRAY_MAX, buf); write_to_output(d, "\r\nCurrent flags : %s%s%s\r\nEnter aff flags (0 to quit) : ", diff --git a/src/mobact.c b/src/mobact.c index acd0d2f..68bbd84 100644 --- a/src/mobact.c +++ b/src/mobact.c @@ -90,7 +90,7 @@ void mobile_activity(void) } /* Aggressive Mobs */ - if (MOB_FLAGGED(ch, MOB_HELPER) && (!AFF_FLAGGED(ch, AFF_BLIND) || !AFF_FLAGGED(ch, AFF_CHARM))) { + if (!MOB_FLAGGED(ch, MOB_HELPER) && (!AFF_FLAGGED(ch, AFF_BLIND) || !AFF_FLAGGED(ch, AFF_CHARM))) { found = FALSE; for (vict = world[IN_ROOM(ch)].people; vict && !found; vict = vict->next_in_room) { if (IS_NPC(vict) || !CAN_SEE(ch, vict) || PRF_FLAGGED(vict, PRF_NOHASSLE)) diff --git a/src/qedit.c b/src/qedit.c index 48b1259..0f0e145 100644 --- a/src/qedit.c +++ b/src/qedit.c @@ -329,8 +329,8 @@ static void qedit_disp_menu(struct descriptor_data *d) quest_flags, quest_types[quest->type], quest->type == AQ_OBJ_RETURN ? buf2 : "", - quest->qm == NOBODY ? -1 : mob_index[quest->qm].vnum, - quest->qm == NOBODY ? "none" : mob_proto[quest->qm].player.short_descr, + quest->qm == NOBODY ? -1 : quest->qm, + real_mobile(quest->qm) == NOBODY ? "Invalid Mob" : mob_proto[(real_mobile(quest->qm))].player.short_descr, quest->target == NOBODY ? -1 : quest->target, targetname, quest->value[6], quest->value[0], quest->value[1], @@ -605,7 +605,7 @@ void qedit_parse(struct descriptor_data *d, char *arg) break; case QEDIT_QUESTMASTER: if (number != -1) - if ((number = real_mobile(number)) == NOBODY) { + if (real_mobile(number) == NOBODY) { write_to_output(d, "That mobile does not exist, try again : "); return; } diff --git a/src/quest.c b/src/quest.c index 1f87401..39ccb7c 100644 --- a/src/quest.c +++ b/src/quest.c @@ -81,7 +81,7 @@ int is_complete(struct char_data *ch, qst_vnum vnum) return FALSE; } -qst_vnum find_quest_by_qmnum(struct char_data *ch, mob_rnum qm, int num) +qst_vnum find_quest_by_qmnum(struct char_data *ch, mob_vnum qm, int num) { qst_rnum rnum; int found=0; @@ -166,7 +166,7 @@ void parse_quest(FILE *quest_f, int nr) exit(1); } aquest_table[i].type = t[0]; - aquest_table[i].qm = real_mobile(t[1]); + aquest_table[i].qm = (real_mobile(t[1]) == NOBODY) ? NOBODY : t[1]; aquest_table[i].flags = asciiflag_conv(f1); aquest_table[i].target = (t[2] == -1) ? NOTHING : t[2]; aquest_table[i].prev_quest = (t[3] == -1) ? NOTHING : t[3]; @@ -211,6 +211,7 @@ void parse_quest(FILE *quest_f, int nr) void assign_the_quests(void) { qst_rnum rnum; + mob_rnum mrnum; cmd_tell = find_command("tell"); @@ -219,10 +220,14 @@ void assign_the_quests(void) log("SYSERR: Quest #%d has no questmaster specified.", QST_NUM(rnum)); continue; } + if ((mrnum = real_mobile(QST_MASTER(rnum))) == NOBODY) { + log("SYSERR: Quest #%d has an invalid questmaster.", QST_NUM(rnum)); + continue; + } if (mob_index[QST_MASTER(rnum)].func && - mob_index[QST_MASTER(rnum)].func != questmaster) - QST_FUNC(rnum) = mob_index[QST_MASTER(rnum)].func; - mob_index[QST_MASTER(rnum)].func = questmaster; + mob_index[(mrnum)].func != questmaster) + QST_FUNC(rnum) = mob_index[(mrnum)].func; + mob_index[(mrnum)].func = questmaster; } } @@ -439,7 +444,7 @@ void list_quests(struct char_data *ch, zone_rnum zone, qst_vnum vmin, qst_vnum v if (QST_NUM(rnum) >= bottom && QST_NUM(rnum) <= top) send_to_char(ch, "@g%4d@n) [@g%-5d@n] @c%-44.44s@n @y[%5d]@n\r\n", ++counter, QST_NUM(rnum), QST_NAME(rnum), - QST_MASTER(rnum) == NOBODY ? 0 : mob_index[QST_MASTER(rnum)].vnum); + QST_MASTER(rnum) == NOBODY ? 0 : QST_MASTER(rnum)); if (!counter) send_to_char(ch, "None found.\r\n"); } @@ -455,7 +460,7 @@ void quest_hist(struct char_data *ch) for (i = 0; i < GET_NUM_QUESTS(ch); i++) { if ((rnum = real_quest(ch->player_specials->saved.completed_quests[i])) != NOTHING) send_to_char(ch, "@g%4d@n) @c%-52.52s@n @y%s@n\r\n", - ++counter, QST_DESC(rnum), GET_NAME(&mob_proto[QST_MASTER(rnum)])); + ++counter, QST_DESC(rnum), (real_mobile(QST_MASTER(rnum)) == NOBODY) ? "Unknown" : GET_NAME(&mob_proto[(real_mobile(QST_MASTER(rnum)))])); else send_to_char(ch, "@g%4d@n) @cUnknown Quest (it no longer exists)@n\r\n", ++counter); @@ -598,7 +603,7 @@ void quest_progress(struct char_data *ch) } } -void quest_show(struct char_data *ch, mob_rnum qm) +void quest_show(struct char_data *ch, mob_vnum qm) { qst_rnum rnum; int counter = 0; @@ -619,6 +624,7 @@ void quest_show(struct char_data *ch, mob_rnum qm) void quest_stat(struct char_data *ch, char argument[MAX_STRING_LENGTH]) { qst_rnum rnum; + mob_rnum qmrnum; char buf[MAX_STRING_LENGTH]; char targetname[MAX_STRING_LENGTH]; @@ -657,6 +663,7 @@ void quest_stat(struct char_data *ch, char argument[MAX_STRING_LENGTH]) snprintf(targetname, sizeof(targetname), "Unknown"); break; } + qmrnum = real_mobile(QST_MASTER(rnum)); send_to_char(ch, "VNum : [@y%5d@n], RNum: [@y%5d@n] -- Questmaster: [@y%5d@n] @y%s@n\r\n" "Name : @y%s@n\r\n" @@ -769,7 +776,7 @@ SPECIAL(questmaster) /* check that qm mob has quests assigned */ for (rnum = 0; (rnum < total_quests && - QST_MASTER(rnum) != GET_MOB_RNUM(qm)) ; rnum ++); + QST_MASTER(rnum) != GET_MOB_VNUM(qm)) ; rnum ++); if (rnum >= total_quests) return FALSE; /* No quests for this mob */ else if (QST_FUNC(rnum) && (QST_FUNC(rnum) (ch, me, cmd, argument))) @@ -784,7 +791,7 @@ SPECIAL(questmaster) switch (tp) { case SCMD_QUEST_LIST: if (!*arg2) - quest_show(ch, GET_MOB_RNUM(qm)); + quest_show(ch, GET_MOB_VNUM(qm)); else quest_list(ch, qm, arg2); break; diff --git a/src/quest.h b/src/quest.h index 3a8711b..fe1c1c1 100644 --- a/src/quest.h +++ b/src/quest.h @@ -44,7 +44,7 @@ struct aq_data { char *quit; /* Message displayed when quit quest */ long flags; /* Flags (repeatable, etc */ int type; /* Quest type */ - mob_rnum qm; /* questmaster offering quest */ + mob_vnum qm; /* questmaster offering quest */ int target; /* Target value */ obj_vnum prereq; /* Object required to undertake quest */ int value[7]; /* Quest values */ diff --git a/src/structs.h b/src/structs.h index 992fa57..f5b8f74 100644 --- a/src/structs.h +++ b/src/structs.h @@ -19,7 +19,7 @@ * on an older version. You are supposed to compare this with the macro * TBAMUD_VERSION() in utils.h. * It is read as Major/Minor/Patchlevel - MMmmPP */ -#define _TBAMUD 0x030570 +#define _TBAMUD 0x030580 /** If you want equipment to be automatically equipped to the same place * it was when players rented, set the define below to 1 because diff --git a/src/utils.c b/src/utils.c index 59f2e80..f78936f 100644 --- a/src/utils.c +++ b/src/utils.c @@ -16,6 +16,7 @@ #include "utils.h" #include "db.h" #include "comm.h" +#include "modify.h" #include "screen.h" #include "spells.h" #include "handler.h" @@ -932,194 +933,65 @@ void char_from_furniture(struct char_data *ch) } -/* Helper function for column_list. */ -void process_column_list_format(char **out_buffer, const char *format, - int buf_left, int index_data, const char *item) -{ - /* Initialize the index format with a % */ - char index_format[80] = {'%'}; - int i; +/* column_list + The list is output in a fixed format, and only the number of columns can be adjusted + This function will output the list to the player + Vars: + ch - the player + num_cols - the desired number of columns + list - a pointer to a list of strings + list_length - So we can work with lists that don't end with /n + show_nums - when set to TRUE, it will show a number before the list entry. +*/ +void column_list(struct char_data *ch, int num_cols, const char **list, int list_length, bool show_nums) +{ + int num_per_col, col_width,r,c,i, offset=0, len=0, temp_len, max_len=0; + char buf[MAX_STRING_LENGTH]; - /* Copy the format to the output buffer character by character. */ - while (*format && buf_left >= 2) { + /* Ensure that the number of columns is in the range 1-10 */ + num_cols = MIN(MAX(num_cols,1), 10); - /* A '$' signifies a 'control-code'. */ - if (*format == '$') { - ++format; + /* Work out the longest list item */ + for (i=0; i= 2 && i != 0) { - *((*out_buffer)++) = *(item++); - --buf_left; - --i; - } + if (len >= sizeof(buf)) + snprintf((buf + MAX_STRING_LENGTH) - 22, 22, "\r\n*** OVERFLOW ***\r\n"); - /* if width was specified above, pad the list item */ - while (i-- > 0 && buf_left >= 2) { - *((*out_buffer)++) = ' '; - --buf_left; - } - } + /* Send the list to the player */ + page_string(ch->desc, buf, TRUE); +} - /* Or just output a $ */ - else if (*format == '$') { - *((*out_buffer)++) = '$'; - --buf_left; - } - - /* Whoa, at the end of the format already? */ - else if (!*format) - break; - - ++format; - } - - /* Not a '$' control code. Simply copy the character. */ - else { - *((*out_buffer)++) = *(format++); - --buf_left; - } - } - - /* Make sure it's nul-terminated. */ - **out_buffer = '\0'; -} - -/** - * Takes a list of strings and a display format, and formats them - * in a list by column (sequential items in the list are aligned - * vertically, then horizontally). This function supports varargs - * for the format string that describes how each item should look. - * @param[out] out_buffer The buffer to write to. - * @param[in] buf_left The size of the buffer. - * @param[in] page_length How many lines per page? 0 means no paging. - * @param[in] skip_lines How many lines to skip on the first page? - * @param[in] columns How many columns should be displayed? - * @param[in] list The array of strings to format. - * @param[in] list_length How many elements are in the list? We won't rely on - * lists ending with a newline element. - * @param[in] list_offset Is the list offset and by how much? For instance, - * affect flags are offset by one when displayed in medit. - * @param[in] format The format string for displaying each - * item in the list. Use "$#i" and "$#l" in the format string to determine - * how wide the index position and list item should be. For instance, - * "$2i $20l" would be equivalent to a printf "%2d %-20.20s". - * @param[in] ... Additional args for formatting the list display. - */ -void column_list(char *out_buffer, int buf_left, int page_length, - int skip_lines, int columns, const char **list, - int list_length, int list_offset, - const char *format, ...) -{ - int i, j = 0, k, rows, visited = 0; - char line[80]; - va_list args; - - --buf_left; - - /* We only need to parse the given format string for %'s once. */ - va_start(args, format); - vsnprintf(line, sizeof(line), format, args); - va_end(args); - - /* A page_length <= 0 means don't page output. */ - if (page_length <= 0) - page_length = list_length; - - /* - * The list index jumps around, since we want to display - * the list items by columns. For instance, in the first - * row, the second column's item will be approximately - * page_length positions in the list away from the item - * in the first column of the same row. - * So we use this macro. - */ - #define LIST_INDEX (page_length * columns * k + rows * j + i - \ - (k == 0 ? 0 : skip_lines * columns)) - - /* Traverse by page... */ - for (k = 0; k <= list_length / (page_length * columns); ++k) { - rows = MIN(page_length, (list_length - visited) / columns + 1); - if (k == 0) - rows -= skip_lines; - /* And then by row... */ - for (i = 0; i < rows; ++i) { - /* And then by column... */ - for (j = 0; j < columns; ++j) { - /* If the index is too high, break out. */ - if (LIST_INDEX >= list_length) - break; - - /* - * If space still remains in the buffer, process the next - * list item and print it to the buffer. Otherwise, - * complain about an overflow. - */ - if (buf_left > sizeof(line)) { - /* - * Now the real magic. Replace $i and $l with the index - * and list item. Don't let each displayed list item be wider - * than (an arbitrary) 80 characters. Also, allow a list - * offset in case we want to skip the first list item or - * something (like for affection flags). - */ - process_column_list_format(&out_buffer, line, sizeof(line), - LIST_INDEX + 1, - list[LIST_INDEX + list_offset]); - ++visited; - } - else { - strcpy(out_buffer + (buf_left < 17 ? buf_left - 17 : 0), - "\r\n**OVERFLOW**\r\n"); - return; - } - } - /* - * We're at the end of a row. Print a newline, advance the - * buffer, and decrement the amount of space left in the buffer. - */ - strcpy(out_buffer, "\r\n"); - out_buffer += 2; - buf_left -= 2; - } - } - - #undef LIST_INDEX - -} /** * Search through a string array of flags for a particular flag. diff --git a/src/utils.h b/src/utils.h index 42af0bf..5111d11 100644 --- a/src/utils.h +++ b/src/utils.h @@ -58,10 +58,7 @@ int levenshtein_distance(const char *s1, const char *s2); struct time_info_data *real_time_passed(time_t t2, time_t t1); struct time_info_data *mud_time_passed(time_t t2, time_t t1); void prune_crlf(char *txt); -void column_list(char *out_buffer, int buf_left, int page_length, - int skip_lines, int columns, const char **list, - int list_length, int list_offset, const char *format, - ...) __attribute__ ((format (printf, 9, 10))); +void column_list(struct char_data *ch, int num_cols, const char **list, int list_length, bool show_nums); int get_flag_by_name(const char *flag_list[], char *flag_name); int file_head( FILE *file, char *buf, size_t bufsize, int lines_to_read ); int file_tail( FILE *file, char *buf, size_t bufsize, int lines_to_read );