Updated World and files for 3.58 release. --Rumble

This commit is contained in:
Rumble 2009-01-18 01:22:15 +00:00
parent eb99864f0b
commit 6f22042712
52 changed files with 763 additions and 803 deletions

View file

@ -34,12 +34,22 @@ OLC copy and delete options.
export (QQ's a zone into a tarball)t export (QQ's a zone into a tarball)t
Xlist (mlist, olist, rlist, zlist, slist, tlist, qlist) Xlist (mlist, olist, rlist, zlist, slist, tlist, qlist)
(lots of major bugfixes too) (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 [Jan 15 2009] - Fizban
Immortals can now never have their hands full when you attempt to hand them an item. 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. Fixed message when setting gold abnormally high.
[Jan 09 2009] - Fizban [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) 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 [Dec 28 2008] - Rumble
Added a "Syntax: export zone vnum" for the export command instead of defaulting to 0. (thanks Vatiken) 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) Fixed bad usage of num_of_saving_throws and moved define to structs.h. (thanks Vatiken)

View file

@ -810,11 +810,38 @@ TRIG-ERRORS TRIGEDIT-ERRORS TRIGEDIT-MISTAKES
These are numerous and I will add them as people ask questions about them. 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. For mob triggers make sure the mob can see the actor, set INFRA in DARK rooms.
AFF_CHARM prevents triggers from firing. 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 See Also: ZEDIT-MISTAKES, SEDIT-MISTAKES
#31 #31
CYGWIN README.CYGWIN README-CYGWIN COMPILER SHELLS 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. We rest our case. Now do whatever you want...after all, it is your area.
#31 #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 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 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 #. 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 The player would type read 1, and would actually read page 1, then type read 2
and so on. and so on.
See Also: NOTE, MAP
#31 #31
CWG BUDDHA SUNTZU RASPUTIN CIRCLEMUD-WITH-GOODIES CWG BUDDHA SUNTZU RASPUTIN CIRCLEMUD-WITH-GOODIES
@ -965,26 +994,23 @@ See also: RESOURCES
#31 #31
SOURCES RESOURCES CODEBASE FTP DOWNLOADS DOCUMENTATION WTFAQ FORUMS GROUPS 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/ CWG: http://cwg.lazuras.org/
Trigedit: http://tbamud.com/Oasis_DG_pages/contents/downloads.htm Trigedit: http://tbamud.com/Oasis_DG_pages/contents/downloads.htm
GDB: http://www.cs.clemson.edu/~ihcho/courses/cs360/common/gdb.html GDB: http://www.cs.clemson.edu/~ihcho/courses/cs360/common/gdb.html
Documentation: Documentation:
http://tbamud.com/Oasis_DG_pages/index.html http://tbamud.com/
http://www.circlemud.org/cdp/wtfaq/ http://www.circlemud.org/cdp/wtfaq/
http://developer.circlemud.org/contrib/
You should join the following forums and mailing lists. Learn how to search You should join the following forums and mailing lists. Learn how to search
them for any problems you have: them for any problems you have:
http://tbamud.com/
http://cwg.lazuras.org/ http://cwg.lazuras.org/
http://groups.yahoo.com/group/circle-newbies/ http://groups.yahoo.com/group/circle-newbies/
http://post.queensu.ca/cgi-bin/listserv/wa?SUBED1=circle&A=1 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/ http://mudconnector.com/
Other stuff: Other stuff:
@ -1742,7 +1768,7 @@ Be original, finish what you start, have fun, and don't forget to breathe!
#31 #31
CALENDAR CALENDER MONTHS WEEKS DAYS HOURS 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. 17 months a year.
Days of the week: Days of the week:
@ -2403,7 +2429,7 @@ TIME TICKS
Usage: time Usage: time
Gives you the current game time. tbaMUD uses zulu time 0-24 hours. There are 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. takes about 12 days.
/** Number of real life seconds per mud hour. /** 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. 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 #31
USERS STATUS USERS STATUS
@ -4133,6 +4161,8 @@ pos() - %actor.pos% returns position. Subfield modifies. Sleeping,
resting, sitting, fighting, standing. @RTSTAT 1399, 20997@n resting, sitting, fighting, standing. @RTSTAT 1399, 20997@n
prac() - The actor's number of practices. Subfield adjusts. prac() - The actor's number of practices. Subfield adjusts.
pref() - Checks if actor has PRF flag enabled. @RTSTAT 1210@n 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 questpoints() - Checks the actor's questpoints. Subfield modifies. @RHELP NOP@n
room - The room the actor is in as a room variable. room - The room the actor is in as a room variable.
saving_para() - The actors saving throw for paralization. Subfield adjusts. 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 Not a trigger type by itself; used in conjunction with Random @RHELP
TRIGEDIT-ROOM-RANDOM@n and @RHELP TRIGEDIT-ROOM-TIME@n. While Random 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. and Global Time will trigger regardless.
Numeric Arg : not used. 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. Numeric Arg : percent chance this trigger will be activated.
Argument : not used. 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: Variables:
%actor% - the character handing the object to the mobile. %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 Not a trigger type by itself; used in conjunction with Random @RHELP
TRIGEDIT-MOB-RANDOM@n. While Random triggers only trigger if players 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. Numeric Arg : not used.
Argument : not used. Argument : not used.
@ -5544,7 +5575,7 @@ Smokables: @RTSTAT 159@n
Furniture: @RTSTAT 1399@n Furniture: @RTSTAT 1399@n
Weapons: @RTSTAT 1361, 9000, 11840, 13005@n Weapons: @RTSTAT 1361, 9000, 11840, 13005@n
See Also: @RTRIG-QUESTS@n See Also: TRIG-QUESTS
#31 #31
DG_AFFECTS DGAFFECT SCRIPT-AFFLICTED AFFLICTED DG-AFFECTS DG-AFFECTS %DG_AFFECT% DG-EFFECT DG_EFFECT DURATIONS TRIG-AFFECTS 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 <line with teh spelled correctly> or /d5. Learn
all these options. all these options.
Warning: Some clients will give you problems since they use special characters 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 #31
TRIGEDIT TRIGS TRIGEDITOR TRIGGEREDIT TRIGGER-EDIT TRIGGERS DG-SCRIPTS TRIG-HELP SCRIPTS MOBPROGS MPROGS PROGS SCRIPTING TRIGMENU 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 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. 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 #31
TLIST TRIGLIST TRIG-LIST TRIGEDIT-LIST TRIGGERLIST TRIGGER-LIST TLIST TRIGLIST TRIG-LIST TRIGEDIT-LIST TRIGGERLIST TRIGGER-LIST
@ -6035,7 +6066,7 @@ number.
See also: SEDIT-MENU, SLIST, OLC See also: SEDIT-MENU, SLIST, OLC
#31 #31
ZEDIT ZEDIT-CREATE ZCREATE ZEDIT
Usage: zedit [room vnum] Usage: zedit [room vnum]
zedit new <new zone number> <bottom of zone> <top of zone> (Implementors only!) zedit new <new zone number> <bottom of zone> <top of zone> (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. @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 #31
BUILDWALKING BUILD-WALKING DIGWALK WALKDIG 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 3) Open 2 : @c0 @n4) Close 2 : @c0@n
The times (in MUD-hours) between which the shop is open. Two sets of 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 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 example, once in the morning and once at night). There are 24 hours in a
MUD day. 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 #31
SEDIT-RATES SEDIT-SELL-RATES SEDIT-BUY-RATES SEDIT-PRICE PRICES PRICING SEDIT-SELLRATE SELLRATE SEDIT-MENU-SELLRATE SELL-RATE 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. The name of the builder creating the zone.
#31
ZEDIT-CREATE ZEDIT-CREATION ZONE-CREATE ZONE-CREATION ZCREATE
Usage: zedit new <new zone number> <bottom of zone> <top of zone>
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 #31
ZEDIT-NEW-COMMAND ZEDIT-DOOR MOB-LOAD MOB-INVENTORY ZEDIT-NEWCOMMAND ZEDIT-LOADING ZLOADING ZEDIT-DOORS ZEDIT-REMOVE 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: <NOT SET> 3) Goto next description: <NOT SET>
This option will allow you to make as many extra descriptions as you want. 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 To delete an extra description all you have to do is clear the description
or the Description blank and exit. with the "/c" then "/s" and quit.
#31 #31
REDIT-EXITS DOORFLAGS REDIT-KEYS PICKPROOF REDIT-EXIT-MENU EXIT-BASICS DOOR-FLAGS EXIT-MENU PURGE-EXITS 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. compromised passwords.
#0 #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 These are other types of MUD codebases. We only focus on tbaMUD (the codebase
formerly known as CircleMUD). formerly known as CircleMUD).
For a full history of MUDs, check out: http://en.wikipedia.org/wiki/Muds
#0 #0
HISTORY 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 with a time stamp for when it was sent. History all will list the history of
all channels. all channels.
See also: CHANNELS See also: CHANNELS, MUD-HISTORY
#0 #0
COLORCODES COLOURCODES COLOR-CODES COLOUR-CODES COLORS COLOURS PCOLORS COLORCODING 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 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: 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: 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. Masok: You cant. I have metal underwear.

View file

@ -1,5 +1,5 @@
(lib/text/news) (lib/text/news)
THE 2008 tbaMUD HERALD THE 2009 tbaMUD HERALD
"We addict players for their own enjoyment." "We addict players for their own enjoyment."
NEW COMMANDS AND NEW MUD BEHAVIOR: NEW COMMANDS AND NEW MUD BEHAVIOR:

View file

@ -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. 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 253962 0 0 0 0 0 0 0 0 E
0 20 10 1d1+0 1d1+0 1 20 9 0d0+10 1d2+0
0 0 10 100
8 8 1 8 8 1
E E
T 192 T 192

View file

@ -15,4 +15,18 @@ concoct many different potions and is most famous for her liquid fire.
E E
T 300 T 300
T 335 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
$ $

View file

@ -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 #1
wings~ wings~
a pair of wings~ a pair of wings~
@ -40,10 +31,6 @@ The email listing of the gods is pinned against the wall.~
0 0 0 0 0 0 0 0
1 1 0 30 1 1 0 30
E E
emails listing~
HELP CONTACT
~
E
wizlist~ wizlist~
Implementors Implementors
~~~~~~~~~~~ ~~~~~~~~~~~
@ -60,6 +47,10 @@ wizlist~
Santa Shamra Shimmer Silvanos Smaug Snowlock Talgard Taylor Santa Shamra Shimmer Silvanos Smaug Snowlock Talgard Taylor
Theophilus Tocamat Torpidai Treestump Tuskony Zizazat Theophilus Tocamat Torpidai Treestump Tuskony Zizazat
~ ~
E
emails listing~
HELP CONTACT
~
#5 #5
foraged berries~ foraged berries~
some foraged berries~ some foraged berries~

View file

@ -1064,7 +1064,7 @@ visible.
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
E E
june~ september~
. .:IIIIHIHHIHHHII::I:. . .:IIIIHIHHIHHHII::I:.
:IIIIHIHHHHHHMMHHIHHIIHHIII:. :IIIIHIHHHHHHMMHHIHHIIHHIII:.
,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:. ,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:.
@ -1122,21 +1122,9 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII
::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. . ::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. .
::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . , ::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . ,
':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . '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 E
april~ august~
. nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn. . nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn.
.MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM .MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM
MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM
@ -1189,7 +1177,7 @@ april~
%% % %%%%%% %% % %%%%%%
~ ~
E E
March~ july~
. ,.--.. . ,.--..
,::.'.. . . "VI:I:".':-.,. ,::.'.. . . "VI:I:".':-.,.
,I::. .. . 'VHMHII:.::;:.:,.. ,I::. .. . 'VHMHII:.::;:.:,..
@ -1255,6 +1243,183 @@ March~
':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. ' ':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. '
~ ~
E 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~ february~
. :AMMMMMMMMMMMMA: . :AMMMMMMMMMMMMA:
:AMMMMMMMMMHHHHHMMMMMMMMA: :AMMMMMMMMMHHHHHMMMMMMMMA:
@ -1328,184 +1493,7 @@ february~
[;:: : ;;:; ; ; ; [;:: : ;;:; ; ; ;
~ ~
E E
January~ March~
. 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~
. ,.--.. . ,.--..
,::.'.. . . "VI:I:".':-.,. ,::.'.. . . "VI:I:".':-.,.
,I::. .. . 'VHMHII:.::;:.:,.. ,I::. .. . 'VHMHII:.::;:.:,..
@ -1571,7 +1559,7 @@ july~
':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. ' ':::.:... ..I::I::.:....:. .: .. ...::. . . III:II:. '
~ ~
E E
august~ april~
. nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn. . nHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHn.
.MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM .MS?MMMMMMMMMMMMMMMMMM?MM-MMMMMMMMMSHMMMMMMM
MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM MMMMMH?MMMMMMMX*MM?MMX%MM/MMMMMM"HMMMMMMMMMMMM
@ -1624,7 +1612,7 @@ august~
%% % %%%%%% %% % %%%%%%
~ ~
E E
september~ june~
. .:IIIIHIHHIHHHII::I:. . .:IIIIHIHHIHHHII::I:.
:IIIIHIHHHHHHMMHHIHHIIHHIII:. :IIIIHIHHHHHHMMHHIHHIIHHIII:.
,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:. ,.:HIHHHHHHHHHHHHHHHHHHHHHIHIHHII:.
@ -1682,6 +1670,18 @@ IHHHHMHMMMMMMMHHHHHI:IT:TI:..:HI:.. ..:. . :IHII
::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. . ::.:............. .. . ...AHIHIIIIIHHHI::""' 'VII:.. .. .
::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . , ::.:.:.......... .. . ...HHHIIIIIIHHHI::. . 'VII::. . . ,
':::.:.:..... .. . . . ..:MHHIHIIIII:I::. . '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 #186
scroll poem irish~ 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 15 0 0 0 0 a 0 0 0 0 0 0 0
50 5 -1 0 50 5 -1 0
50 0 0 0 50 0 0 0
T 209
E E
iron bound wooden chest~ iron bound wooden chest~
The chest is in excellent condition. Made from a fine grain of wood it is The chest is in excellent condition. Made from a fine grain of wood it is

View file

@ -38,7 +38,7 @@ A washing machine rumbles steadily as it spins.~
E E
washing machine~ washing machine~
Simple yet most effective, this smooth white appliance vibrates gently as it 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 #11803
cloth nappy dingy white piece~ cloth nappy dingy white piece~

View file

@ -194,8 +194,8 @@ weapon level 34~
a level 34 weapon~ a level 34 weapon~
A level 34 weapon is used to test level restrictions~ A level 34 weapon is used to test level restrictions~
~ ~
12 0 0 0 0 ano 0 0 0 0 0 0 0 5 0 0 0 0 ano 0 0 0 0 0 0 0
0 0 0 0 11 2 2 0
1 1 0 34 1 1 0 34
#1266 #1266
Black Staff of Immortality~ Black Staff of Immortality~
@ -296,14 +296,14 @@ A piece of fireworks is planted in a champagne bottle.~
0 0 0 0 0 0 0 0
T 1297 T 1297
E E
firework new year piece~
This large rocket is about to go up! Strange colours will fill the sky!
~
E
bottle champagne~ bottle champagne~
The bottle is filled partially with water so it doesn't tilt over. Someone The bottle is filled partially with water so it doesn't tilt over. Someone
has obviously drunk the champagne first. 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 #1299
christmas tree~ christmas tree~
a christmas tree~ a christmas tree~

View file

@ -202,13 +202,13 @@ A small sword lies here.~
0 1 6 11 0 1 6 11
3 60 0 0 3 60 0 0
E E
sword small~
The small sword seems to have an inscription of some sort inscription...
~
E
inscription~ inscription~
It says: 'May this sword be a good companion. ' 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 #322
sword long~ sword long~
a long sword~ 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 5 0 0 0 0 an 0 0 0 0 0 0 0
0 2 4 7 0 2 4 7
6 625 0 0 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 #330
torch~ torch~
a 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
0 0 0 0 0 0 0 0
E E
board~
If you can read this, the board is not working.
~
E
social bulletin~ social bulletin~
Use 'look board' to read the board. Use 'look board' to read the board.
~ ~
E
board~
If you can read this, the board is not working.
~
#397 #397
board frozen bulletin~ board frozen bulletin~
a frozen bulletin board~ 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
0 0 0 0 0 0 0 0
E E
board~
If you can read this, the board is not working.
~
E
freeze bulletin~ freeze bulletin~
Use 'look board' to read the board. Use 'look board' to read the board.
~ ~
E
board~
If you can read this, the board is not working.
~
#398 #398
board holy bulletin~ board holy bulletin~
a holy bulletin board~ 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
0 0 0 0 0 0 0 0
E E
board~
If you can read this, the board is not working.
~
E
holy bulletin~ holy bulletin~
Use 'look board' to read the board. Use 'look board' to read the board.
~ ~
E
board~
If you can read this, the board is not working.
~
#399 #399
board bulletin~ board bulletin~
a bulletin board~ 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
0 0 0 0 0 0 0 0
E E
board~
If you can read this, the board is not working.
~
E
bulletin~ bulletin~
Use 'look board' to read the board. Use 'look board' to read the board.
~ ~
E
board~
If you can read this, the board is not working.
~
$~ $~

View file

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

View file

@ -284,7 +284,7 @@ Tutorial Quest 1441 - Load 8ball~
* By Rumble of The Builder Academy tbamud.com 9091 * By Rumble of The Builder Academy tbamud.com 9091
* Quest Trigs 9-12. Drop the 8ball on their head when they enter. * Quest Trigs 9-12. Drop the 8ball on their head when they enter.
wait 1 sec 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. %send% %actor% A magic eight ball drops from the sky striking you on the head.
%load% obj 1394 %load% obj 1394
%damage% %actor% %random.5% %damage% %actor% %random.5%
@ -1598,6 +1598,7 @@ set actor %random.char%
Room Command Example~ Room Command Example~
2 c 100 2 c 100
l~ l~
* By Rumble of The Builder Academy tbamud.com 9091
if %cmd.mudcommand% == look && bridge /= %arg% if %cmd.mudcommand% == look && bridge /= %arg%
%send% %actor% As you look at the bridge a small form staggers out from underneath it. %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. %echoaround% %actor% As %actor.name% peers under the bridge a small form emerges.
@ -2500,7 +2501,7 @@ Puff - Random Advice~
0 ab 12 0 ab 12
~ ~
* By Rumble of The Builder Academy tbamud.com 9091 * 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[1] My god! It's full of stars!
set text[2] How'd all those fish get up here? 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. 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 end
set inroom %actor.room% set inroom %actor.room%
if %arg.inventory(80)% 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% %actor% You blast %arg.name%.
%send% %arg% You lose! %send% %arg% You lose!
%purge% %arg.inventory(80)% %purge% %arg.inventory(80)%
@ -2734,7 +2735,7 @@ if %arg.room% != %actor.room% || %arg.id% == %actor.id%
end end
set inroom %actor.room% set inroom %actor.room%
if %arg.inventory(81)% 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% %actor% You blast %arg.name%.
%send% %arg% You lose! %send% %arg% You lose!
%purge% %arg.inventory(81)% %purge% %arg.inventory(81)%

View file

@ -2100,7 +2100,7 @@ if %self.contents.vnum% != 47
%load% obj 47 %load% obj 47
end end
wait 2 sec 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. %send% %actor% A magic eight ball drops from the sky striking you on the head.
%damage% %actor% %random.5% %damage% %actor% %random.5%
~ ~
@ -2109,7 +2109,6 @@ Mob Quest Tutorial Example Quest completion - 25~
0 j 100 0 j 100
~ ~
* By Rumble of The Builder Academy tbamud.com 9091 * By Rumble of The Builder Academy tbamud.com 9091
wait 1 sec
if %object.vnum% == 47 && !%actor.varexists(solved_example_quest_zone_0)% if %object.vnum% == 47 && !%actor.varexists(solved_example_quest_zone_0)%
dance dance
wait 1 sec wait 1 sec

View file

@ -22,7 +22,7 @@ g~
* should be looking for 117xx, where xx is 00-99. * should be looking for 117xx, where xx is 00-99.
if %cmd.mudcommand% == get && ring /= %arg% if %cmd.mudcommand% == get && ring /= %arg%
%send% %actor% You dig in the dirt and pick up the ring. %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 %load% obj 11700 %actor% inv
else else
return 0 return 0
@ -38,7 +38,7 @@ steal~
* should be looking for 117xx, where xx is 00-99. * should be looking for 117xx, where xx is 00-99.
if %cmd.mudcommand% == steal && cello /= %arg% if %cmd.mudcommand% == steal && cello /= %arg%
%send% %actor% You steal the cello from the cello player who exclaims 'Hey!' %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 %load% obj 11708 %actor% inv
end end
~ ~
@ -175,7 +175,7 @@ touch~
* should be looking for 117xx, where xx is 00-99. * should be looking for 117xx, where xx is 00-99.
if %arg% == display 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! %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% 11704 %door% 11704 down flags a
%at% 11758 %load% obj 11737 %at% 11758 %load% obj 11737
%send% %actor% Salesman Derresor Maosund punches you in the face with anger for touching the display!! %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. * should be looking for 117xx, where xx is 00-99.
if %arg% == nest 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! %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 %door% 11755 down flags a
else else
%send% %actor% Touch what? %send% %actor% Touch what?
@ -304,7 +304,7 @@ sit~
* should be looking for 117xx, where xx is 00-99. * should be looking for 117xx, where xx is 00-99.
if %cmd.mudcommand% == sit && %arg% /= stump if %cmd.mudcommand% == sit && %arg% /= stump
%echo% You sit down on the large stump and take a rest. %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 return 0
end end
~ ~
@ -318,7 +318,7 @@ pick~
* should be looking for 117xx, where xx is 00-99. * should be looking for 117xx, where xx is 00-99.
if %arg% == flowers if %arg% == flowers
%send% %actor% You kneel beside the path, pick the flowers, and arrange them in a nice bouquet. %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 %load% obj 11735 %actor% inv
else else
%send% %actor% Pick what?? %send% %actor% Pick what??
@ -335,7 +335,7 @@ search~
* should be looking for 117xx, where xx is 00-99. * should be looking for 117xx, where xx is 00-99.
if %arg% == fireplace 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! %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 %door% 11725 north flags a
else else
%send% %actor% Search what? %send% %actor% Search what?

View file

@ -48,7 +48,7 @@ end
1 g 100 1 g 100
~ ~
if %actor.room.vnum% == 11802 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 %teleport% %actor% 11801
wait 2 s wait 2 s
%send% %actor% You feel a little strange as everything starts to blur, shifting and changing shape until you are completely disorientated. %send% %actor% You feel a little strange as everything starts to blur, shifting and changing shape until you are completely disorientated.

View file

@ -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. %send% %actor% Sedit, Trigedit, Dig, Rclone, Attach, Detach, and Vdelete are not required for your trial vnum.
elseif %cmd.mudcommand% == zpurge elseif %cmd.mudcommand% == zpurge
%send% %actor% Zpurge is not required for your trial vnum. Use 'purge' or 'purge item.' %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 else
return 0 return 0
end end

View file

@ -181,7 +181,7 @@ free~
2 g 100 2 g 100
~ ~
wait 2 sec 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. %send% %actor% A magic eight ball drops from the sky striking you on the head.
%load% obj 47 %load% obj 47
%damage% %actor% %random.5% %damage% %actor% %random.5%
@ -590,8 +590,8 @@ Mob Leave Example~
~ ~
if (%actor.level% > 10) if (%actor.level% > 10)
say You may not leave here, %actor.name%. say You may not leave here, %actor.name%.
%send% %actor.name% %self.name% prevents you from leaving the room. %send% %actor% %self.name% prevents you from leaving the room.
%echoaround% %actor.name% As %actor.name% tries to leave the room, %self.name% stops %actor.himher%. %echoaround% %actor% As %actor.name% tries to leave the room, %self.name% stops %actor.himher%.
return 0 return 0
end end
~ ~

View file

@ -1287,7 +1287,7 @@ test while~
set stunned %actor.hitp% - 1 set stunned %actor.hitp% - 1
%damage% %actor% %stunned% %damage% %actor% %stunned%
eval num %random.99% + 1900 eval num %random.99% + 1900
%teleport% %actor.name% %num% %teleport% %actor% %num%
while %actor.inventory% while %actor.inventory%
eval item %actor.inventory% eval item %actor.inventory%
eval item_to_purge %%actor.inventory(%item.vnum%)%% eval item_to_purge %%actor.inventory(%item.vnum%)%%

View file

@ -190,6 +190,30 @@ extract word5 5 %speech%
extract word6 6 %speech% extract word6 6 %speech%
say %word6% %word5% %word4% %word3% %word2% %word1%? 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 #212
Phoenix Rising - 219~ Phoenix Rising - 219~
1 c 4 1 c 4

View file

@ -39,7 +39,7 @@ end
~ ~
#23603 #23603
Remove Secret Door - 23667~ Remove Secret Door - 23667~
2 af 100 2 f 100
~ ~
if %self.east% if %self.east%
%door% 23667 east purge 0 %door% 23667 east purge 0

View file

@ -90,10 +90,10 @@ Fountain portal - 23855~
en~ en~
if %cmd.mudcommand% == enter && fountain /= %arg% if %cmd.mudcommand% == enter && fountain /= %arg%
%send% %actor% You dive into a large fountain. %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 %teleport% %actor% 23856
%force% %actor% look %force% %actor% look
%echoaround% %actor.name% %actor.name% emerges from a large fountain. %echoaround% %actor% %actor.name% emerges from a large fountain.
else else
%send% %actor% enter what?! %send% %actor% enter what?!
end end
@ -164,10 +164,10 @@ Green portal entrance - 23863~
en~ en~
if %cmd.mudcommand% == enter && green /= %arg% if %cmd.mudcommand% == enter && green /= %arg%
%send% %actor% You enter a large green portal. %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 %teleport% %actor% 23864
%force% %actor% look %force% %actor% look
%echoaround% %actor.name% steps into a large green portal. %echoaround% %actor% steps into a large green portal.
else else
%send% %actor% enter what?! %send% %actor% enter what?!
end end
@ -178,10 +178,10 @@ Blue portal entrance - 23861~
en~ en~
if %cmd.mudcommand% == enter && blue /= %arg% if %cmd.mudcommand% == enter && blue /= %arg%
%send% %actor% You enter a large blue portal. %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 %teleport% %actor% 23862
%force% %actor% look %force% %actor% look
%echoaround% %actor.name% steps through a large blue portal. %echoaround% %actor% steps through a large blue portal.
else else
%send% %actor% enter what?! %send% %actor% enter what?!
end end
@ -192,10 +192,10 @@ Red portal entrance - 23862~
en~ en~
if %cmd.mudcommand% == enter && red /= %arg% if %cmd.mudcommand% == enter && red /= %arg%
%send% %actor% You enter a large blue portal. %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 %teleport% %actor% 23862
%force% %actor% look %force% %actor% look
%echoaround% %actor.name% steps through a large blue portal. %echoaround% %actor% steps through a large blue portal.
else else
%send% %actor% enter what?! %send% %actor% enter what?!
end end

View file

@ -33,7 +33,7 @@ emote utters the words, 'pabrow'.
~ ~
#26706 #26706
Butcher - 26713~ Butcher - 26713~
0 bg 5 0 b 10
~ ~
emote begins sharpening %self.hisher% knife. emote begins sharpening %self.hisher% knife.
~ ~

View file

@ -337,28 +337,28 @@ rdelete Zn27_shacklepass %actor.id%
2 c 100 2 c 100
kneel~ kneel~
if %arg%==creature if %arg%==creature
%send% %actor.name% You kneel before the skeletal creature. %send% %actor% You kneel before the skeletal creature.
wait 1 s 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 wait 3 s
%teleport% %actor.name% 2712 %teleport% %actor% 2712
%force% %actor% look %force% %actor% look
elseif %arg%==skeletal elseif %arg%==skeletal
%send% %actor.name% You kneel before the skeletal creature. %send% %actor% You kneel before the skeletal creature.
wait 1 s 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 wait 3 s
%teleport% %actor.name% 2712 %teleport% %actor% 2712
%force% %actor% look %force% %actor% look
elseif %arg%==circle elseif %arg%==circle
%send% %actor.name% You kneel inside the circle. %send% %actor% You kneel inside the circle.
wait 1 s 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 wait 3 s
%teleport% %actor.name% 2712 %teleport% %actor% 2712
%force% %actor% look %force% %actor% look
else else
%send% %actor.name% Kneel to who? %send% %actor% Kneel to who?
end end
~ ~
#2719 #2719
@ -530,19 +530,19 @@ if %self.carried_by%
eval actor %self.carried_by% eval actor %self.carried_by%
if %actor.fighting% if %actor.fighting%
eval victim %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 %echoaround% %actor% @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 %send% %actor% @RYour doll suddenly opens its eyes and causes %victim.name% to shudder in pain.@n
%damage% %victim% 100 %damage% %victim% 100
if (%actor.varexists(zn27_twice)%) if (%actor.varexists(zn27_twice)%)
rdelete Zn27_twice %actor.id% rdelete Zn27_twice %actor.id%
wait 3 s 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 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 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 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% rdelete Zn27_offereddoll %actor.id%
%purge% %self% %purge% %self%
elseif (%actor.varexists(zn27_once)%) elseif (%actor.varexists(zn27_once)%)
@ -805,7 +805,7 @@ test door~
enter~ enter~
if ("%arg%" == "space") if ("%arg%" == "space")
%send% %actor% A previously concealed space suddenly becomes apparant. %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 flags a
%door% 2740 down room 2741 %door% 2740 down room 2741
%door% 2740 down description Nothing can be seen within this dark space. %door% 2740 down description Nothing can be seen within this dark space.
@ -921,7 +921,7 @@ attach %arg%
test act~ test act~
1 c 7 1 c 7
look~ look~
%force% %actor.name% %at% 2755 look %force% %actor% %at% 2755 look
~ ~
#2752 #2752
test speech~ test speech~

View file

@ -1,6 +1,6 @@
#27100 #27100
Silk Trader - 27137~ Silk Trader - 27137~
0 bg 100 0 b 10
~ ~
wait 1 sec wait 1 sec
switch %random.23% switch %random.23%
@ -95,7 +95,7 @@ done
~ ~
#27101 #27101
Athos - 27153~ Athos - 27153~
0 bg 50 0 b 10
~ ~
wait 1 sec wait 1 sec
switch %random.7% switch %random.7%
@ -130,7 +130,7 @@ done
~ ~
#27102 #27102
Hangman - 27102~ Hangman - 27102~
0 bg 100 0 b 10
~ ~
wait 1 sec wait 1 sec
switch %random.5% switch %random.5%
@ -162,7 +162,7 @@ done
~ ~
#27103 #27103
Butcher - 27142~ Butcher - 27142~
0 bg 5 0 b 10
~ ~
wait 1 sec wait 1 sec
switch %random.17% switch %random.17%
@ -232,7 +232,7 @@ done
~ ~
#27104 #27104
Stu - 27166~ Stu - 27166~
0 bg 100 0 b 10
~ ~
wait 1 sec wait 1 sec
switch %random.14% switch %random.14%
@ -287,7 +287,7 @@ done
~ ~
#27105 #27105
Earl of Sundhaven - 27100~ Earl of Sundhaven - 27100~
0 bg 100 0 b 10
~ ~
wait 1 sec wait 1 sec
switch %random.9% switch %random.9%
@ -332,16 +332,16 @@ Blinder - 27161~
~ ~
%echo% %self.name% whispers, 'So, %actor.name%! You wouldst share my affliction!' %echo% %self.name% whispers, 'So, %actor.name%! You wouldst share my affliction!'
wait 1 sec wait 1 sec
%send% %actor.name% %self.name%'s frayed cloak blows as he aims a bony finger at you. %send% %actor% %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%. %echoaround% %actor% %self.name%'s frayed cloak blows as he points at %actor.name%.
wait 1 sec wait 1 sec
%send% %actor.name% A flash of pale fire explodes in your face! %send% %actor% A flash of pale fire explodes in your face!
%echoaround% %actor.name% A flash of pale fire explodes in %actor.name%'s face! %echoaround% %actor% A flash of pale fire explodes in %actor.name%'s face!
dg_cast 'blindness' %actor% dg_cast 'blindness' %actor%
~ ~
#27107 #27107
Idiot - 27115~ Idiot - 27115~
0 bg 100 0 b 10
~ ~
wait 1 sec wait 1 sec
switch %random.13% switch %random.13%

View file

@ -79,38 +79,53 @@ if %actor.class% != cleric || %actor.align% < 350
end end
~ ~
#304 #304
Room Enter - test trigger~ Room Command - Look at Painting~
2 g 100 2 c 100
~ l~
wait 50 * By Rumble of The Builder Academy tbamud.com 9091
wsend %actor% you enter a room 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 #305
car/cdr test~ Mob Greet Clothing Check~
0 d 100 0 g 100
*~ ~
*by having * as the arg, it will not always display * By Rumble of The Builder Academy tbamud.com 9091
* 'test' as %speech.car% if %actor.is_pc%
say speech: %speech% wait 1 sec
say car: %speech.car% if %actor.eq(*)%
say cdr: %speech.cdr% 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 #306
Mob Command - subfield test~ Room Entry - sneak check~
0 c 100 2 g 25
test~ ~
* test to make sure %actor.skill(skillname)% works * By Rumble of The Builder Academy tbamud.com 9091
say your hide ability is %actor.skill(hide)% percent. if %actor.is_pc%
* if %actor.skill(sneak)% > 50
* make sure %actor.eq(name)% works too %send% %actor% You walk into the room, not waking any of the clerics.
eval headgear %actor.eq(head)%
if %headgear%
say You have some sort of helmet on
else else
say Where's your headgear? %send% %actor% Your entry into the room wakes a few of the clerics.
halt %load% mob 340
end
end end
say Fix your %headgear.name%
~ ~
#307 #307
Obj Remove - %transform% test~ Obj Remove - %transform% test~

View file

@ -159,9 +159,10 @@ switch %actor.level%
done done
~ ~
#3008 #3008
Death Trap~ Near Death Trap~
2 g 100 2 g 100
~ ~
* By Rumble of The Builder Academy tbamud.com 9091
* Near Death Trap stuns actor * Near Death Trap stuns actor
set stunned %actor.hitp% set stunned %actor.hitp%
%damage% %actor% %stunned% %damage% %actor% %stunned%
@ -199,15 +200,16 @@ end
Stock Fido - 3062, 3066~ Stock Fido - 3062, 3066~
0 b 100 0 b 100
~ ~
eval inroom %self.room% set inroom %self.room%
eval item %inroom.contents% set item %inroom.contents%
while %item% while %item%
* Target the next item in room. In case it is devoured. * Target the next item in room. In case it is devoured.
set next_item %item.next_in_list% set next_item %item.next_in_list%
* Check for a corpse. Corpse on TBA is vnum 65535. Stock is -1. * 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. emote savagely devours a corpse.
%purge% %item% %purge% %item%
halt
end end
set item %next_item% set item %next_item%
* Loop back * Loop back

View file

@ -70,7 +70,7 @@ surrender~
~ ~
#8306 #8306
Navigator (8306) Sings~ Navigator (8306) Sings~
0 bg 100 0 b 10
~ ~
eval song %random.4% eval song %random.4%
switch %song% switch %song%
@ -141,7 +141,7 @@ done
~ ~
#8307 #8307
Cabin Boy (8307) Mops~ Cabin Boy (8307) Mops~
0 bh 75 0 b 10
~ ~
wait 2s wait 2s
emote sings, 'Mop, mop, mop, all day long...' emote sings, 'Mop, mop, mop, all day long...'
@ -286,7 +286,7 @@ Polly (8313) Learn & Repeat~
~ ~
#8314 #8314
Polly (8313) Random Speech~ Polly (8313) Random Speech~
0 bgq 80 0 b 10
~ ~
wait 1s wait 1s
emote squawks loudly. emote squawks loudly.
@ -434,7 +434,7 @@ jump~
~ ~
#8393 #8393
99 Bottles of Beer (Drunken Pirate: 8309)~ 99 Bottles of Beer (Drunken Pirate: 8309)~
0 bg 100 0 b 10
~ ~
set beers 99 set beers 99
emote clears his throat. emote clears his throat.

View file

@ -554,9 +554,10 @@ D2
S S
#33 #33
Rumble's Room~ 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. The only thing necessary for evil to triumph is for good men to do nothing.
--Wilhelm Stekel
-Edmund Burke
~ ~
0 8 0 0 0 0 0 8 0 0 0 0
D0 D0
@ -568,6 +569,10 @@ D2
~ ~
0 0 33 0 0 33
E E
undefined~
test
~
E
Catcher Rye~ Catcher Rye~
The mark of the immature man is that he wants to die nobly for a cause, 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. 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 nations to celebrate with Americans online this Fourth of July. Happy
Birthday, America! Birthday, America!
~ ~
E
.test~
can you see this with look around?
~
S S
#34 #34
Pool of Images~ Pool of Images~

View file

@ -1,7 +1,7 @@
#100 #100
Temple of Sanctum~ Temple of Sanctum~
This large room appears to be inside inside a massive temple dedicated to the This large room appears to be inside a massive temple dedicated to the gods
gods of Sanctus. The ceiling is supported by fluted columns and a main spiral 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 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 four cardinal directions. It is here mortals come to stay informed and discuss
their adventures. their adventures.
@ -93,19 +93,19 @@ D5
~ ~
0 0 100 0 0 100
E 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~ altar~
The altar is made from black granite and has been carved into a small basin 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. 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 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. 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 S
T 158 T 158
T 163 T 163
@ -241,17 +241,17 @@ D5
~ ~
0 0 142 0 0 142
E 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~ map~
The map is a geographic representation of Sanctus. Not even really a 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 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 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. 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 S
#109 #109
@ -385,18 +385,18 @@ D1
~ ~
0 0 100 0 0 100
E 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~ man silhouette~
The distinct outline of a human body that must have taken the brunt of the 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. 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 You can still see pieces of cloth and bone buried deeply into the wall inside
the shadow of the unlucky man. 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 S
#117 #117
Travelling Room~ Travelling Room~
@ -532,19 +532,19 @@ D2
~ ~
0 0 129 0 0 129
E 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~ shrine~
A beutiful shrine. It has two white marble figures facing each other with a 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 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 the city with looks of worry and hopelessness. An unlit candle and mirror lay
on the floor beside the small shrine. 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 S
#125 #125
Plane of the Magi~ Plane of the Magi~
@ -818,14 +818,10 @@ D0
~ ~
0 0 128 0 0 128
E E
window~ bed~
Overlooking the western gate you can see the shimmering protective dome. The bed is made of a sturdy pine. A thin mattress covered in a white sheet
You hope it lasts, peace and tranquility is a good thing. with a down pillow overlaying it. The mattress is too thin to hold anything of
~ value.
E
chair~
It's just your standard wooden chair. Uncomfortable and only real
usefulness would be as firewood.
~ ~
E E
desk~ desk~
@ -835,10 +831,14 @@ centered on the top of the desk. The desk has three drawers. All of them are
empty. empty.
~ ~
E E
bed~ chair~
The bed is made of a sturdy pine. A thin mattress covered in a white sheet It's just your standard wooden chair. Uncomfortable and only real
with a down pillow overlaying it. The mattress is too thin to hold anything of usefulness would be as firewood.
value. ~
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 S
#136 #136

View file

@ -986,12 +986,15 @@ D3
S S
#2259 #2259
Stairs~ Stairs~
A crumbling stairwell leads up down into darkness. The steps are cracked A crumbling stairwell leads down into darkness. The steps are cracked and
and fall apart when you put any sizeable force upon them. They seem fall apart when you put any sizeable force upon them. They seem treacherous,
treacherous, but passable. An empty hallway to the west looks far more but passable. An empty hallway to the west looks far more inviting.
inviting.
~ ~
22 8 0 0 0 0 22 8 0 0 0 0
D1
~
~
0 0 -1
D3 D3
~ ~
~ ~

View file

@ -107,6 +107,7 @@ An Elegant Hall~
Drawings of ancient battles in which the Magi slaughter their foes line both 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 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 3 8 0 0 0 0
D0 D0
@ -122,6 +123,7 @@ D2
~ ~
0 0 319 0 0 319
S S
T 304
#305 #305
The Baths~ The Baths~
The air is musky and hard to breathe due to the hot steam wafting from the The air is musky and hard to breathe due to the hot steam wafting from the
@ -160,10 +162,11 @@ D2
~ ~
0 0 321 0 0 321
S S
T 306
#307 #307
A Long Hallway~ A Long Hallway~
The barren walls and floor would seem odd anywhere but here as the Clerics of 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 blasphemous. They dedicate their lives to helping others, never themselves, and
would all sacrifice their lives for that principle. 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 D5
~ ~
door~ door~
2 0 225 1 0 225
E E
sky winds~ sky winds~
Cold winds plunge ceaselessly at you from the dark, cloudless sky. Cold winds plunge ceaselessly at you from the dark, cloudless sky.

View file

@ -840,11 +840,9 @@ There is a strange hole in the rock wall, circular in shape.
E E
sign signpost~ sign signpost~
The signpost reads in ancient runic script: The signpost reads in ancient runic script:
@n
The Penultimate Tower of Wizardry was rumored to exist, once, just The Penultimate Tower of Wizardry was rumored to exist, once, just
down this road... who knows if this is true? For though many have down this road... who knows if this is true? For though many have
went on to see, none have returned to claim it true... went on to see, none have returned to claim it true...
@n
--Mercutio the Bard of the Realm --Mercutio the Bard of the Realm
~ ~
E E

View file

@ -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: Here are some recommended specials for the mobs:
#04 should be given a sleep spell to cast #04 should be given a sleep spell to cast
#47 should be given an undead process. #47 should be given an undead process.
*
Zone 301 is linked to the following zones: Zone 301 is linked to the following zones:
302 Campus at 30123 (south) ---> 30236 302 Campus at 30123 (south) ---> 30236
302 Campus at 30124 (north) ---> 30250 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 30136 (east ) ---> 30266
302 Campus at 30140 (south) ---> 30260 302 Campus at 30140 (south) ---> 30260
302 Campus at 30142 (north) ---> 30201 302 Campus at 30142 (north) ---> 30201
302 Campus at 30142 (east ) ---> 30203 302 Campus at 30142 (east ) ---> 30203
302 Campus at 30199 (up ) ---> 30200 302 Campus at 30199 (up ) ---> 30200
~ ~

View file

@ -706,9 +706,9 @@ S
The Sacrificial Pit~ The Sacrificial Pit~
As you climb down into the pit, thousands of spiders cover you, tearing As you climb down into the pit, thousands of spiders cover you, tearing
your fragile body to shreds. your fragile body to shreds.
@R
Lloth thanks you for your sacrifice. Lloth thanks you for your sacrifice.
@n
~ ~
51 12 0 0 0 0 51 12 0 0 0 0
S S

View file

@ -27,7 +27,6 @@ Sand as far as the eye can see.
E E
pyramid~ pyramid~
The massive pyramid rises out of the sand, a monument to long-dead pharoahs. The massive pyramid rises out of the sand, a monument to long-dead pharoahs.
~ ~
S S
#5301 #5301
@ -51,7 +50,6 @@ The steep slope of the pyramid rises up before you.
E E
pyramid~ pyramid~
You wonder how anyone could have built such a massive thing out in this heat. You wonder how anyone could have built such a massive thing out in this heat.
~ ~
S S
#5302 #5302
@ -84,7 +82,6 @@ Far below you are the burning sands of the desert.
E E
pyramid~ pyramid~
You wonder how anyone could have built such a massive thing out in this heat. You wonder how anyone could have built such a massive thing out in this heat.
~ ~
S S
#5303 #5303
@ -117,7 +114,6 @@ This side of the pyramid has a dangerous drop before the sandy floor.
E E
pyramid~ pyramid~
You wonder how anyone could have built such a massive thing out in this heat. You wonder how anyone could have built such a massive thing out in this heat.
~ ~
S S
#5304 #5304
@ -150,7 +146,6 @@ This side of the pyramid has a dangerous drop before the sandy floor.
E E
pyramid~ pyramid~
You wonder how anyone could have built such a massive thing out in this heat. You wonder how anyone could have built such a massive thing out in this heat.
~ ~
S S
#5305 #5305
@ -184,7 +179,6 @@ This side of the pyramid has a dangerous drop before the sandy floor.
E E
pyramid~ pyramid~
You wonder how anyone could have built such a massive thing out in this heat. You wonder how anyone could have built such a massive thing out in this heat.
~ ~
S S
#5306 #5306
@ -226,9 +220,7 @@ stones~
E E
plaque~ plaque~
The plaque reads: The plaque reads:
The Great Pyramid The Great Pyramid
Created by the Andersen work crew. Created by the Andersen work crew.
~ ~
E E
@ -242,12 +234,9 @@ S
On The Dangerous Stones~ On The Dangerous Stones~
Here the elements have carved away at the sides of the pyramid quite a Here the elements have carved away at the sides of the pyramid quite a
bit. You aren't so sure of your footing anymore... bit. You aren't so sure of your footing anymore...
Suddenly the wind picks up, and you lose your balance! Suddenly the wind picks up, and you lose your balance!
You tumble down the side of the pyramid, and fall to your death! You tumble down the side of the pyramid, and fall to your death!
SPLAT. SPLAT.
Ouch. Ouch.
~ ~
53 12 0 0 0 0 53 12 0 0 0 0
@ -458,11 +447,9 @@ S
A Slippery Hole~ 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! proceed to move downward... when suddenly you lose your purchase!
@
You fall for what seems like an eternity, and smash into the stones below... You fall for what seems like an eternity, and smash into the stones below...
@
Under The Hole Under The Hole
You are in a small chamber underneath the slippery hole, far below 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 the pyramid now. The floor is strewn with bones. To the south is a

View file

@ -471,9 +471,8 @@ D0
E E
sign~ sign~
The sign reads: The sign reads:
@
Closed for renovations Closed for renovations
~ ~
S S
#5528 #5528
@ -505,13 +504,12 @@ D3
E E
note~ note~
The note reads: The note reads:
@
LIST : gives you a list of items for sale. LIST : gives you a list of items for sale.
VALUE : tells you how much an item is worth to Abdul VALUE : tells you how much an item is worth to Abdul
SELL : sells an item to Abdul for a generous sum SELL : sells an item to Abdul for a generous sum
BUY : Abdul's FAVORITE command lets you have an item for his low, BUY : Abdul's FAVORITE command lets you have an item for his low,
low price. low price.
~ ~
S S
#5530 #5530
@ -619,11 +617,10 @@ D0
E E
note~ note~
The note simply reads: The note simply reads:
@
READ THE NOTE IN THE ARMOURY READ THE NOTE IN THE ARMOURY
@
Igor. Igor.
~ ~
S S
#5537 #5537
@ -875,9 +872,9 @@ D1
E E
banner~ banner~
===================================================================== =====================================================================
@
H A P P Y B I R T H D A Y T O U S H A P P Y B I R T H D A Y T O U S
@
===================================================================== =====================================================================
~ ~
S S
@ -1076,9 +1073,7 @@ D3
E E
plaque~ plaque~
Engraved on the plaque are the following words: Engraved on the plaque are the following words:
The Holy Shrine of Allah The Holy Shrine of Allah
~ ~
S S
#5566 #5566
@ -1282,7 +1277,6 @@ the walls of the palace from the building itself.
E E
mirror~ mirror~
You see a the fighting image of some armor clad humanoid wielding a weapon. You see a the fighting image of some armor clad humanoid wielding a weapon.
~ ~
S S
#5577 #5577
@ -1362,13 +1356,10 @@ D3
E E
plaque door~ plaque door~
The plaque on the door reads: The plaque on the door reads:
THE ART EXHIBIT THE ART EXHIBIT
of of
NEW THALOS NEW THALOS
- the management is not responsible for lost items. - the management is not responsible for lost items.
~ ~
S S
#5580 #5580

View file

@ -1,7 +1,7 @@
#0 #0
Rumble~ Rumble~
The Builder Academy Zone~ The Builder Academy Zone~
0 99 1 2 0 99 10 2
D 0 89 4 2 (The Prison Cell Corridor) D 0 89 4 2 (The Prison Cell Corridor)
M 0 31 1 89 (the Commissar) M 0 31 1 89 (the Commissar)
G 1 68 99 -1 (the Commissar's key) G 1 68 99 -1 (the Commissar's key)

View file

@ -2,10 +2,10 @@
CircleMUD~ CircleMUD~
God Simplex~ God Simplex~
1200 1299 10 0 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) M 0 1212 1 1200 (the scoreboard mob)
O 0 1212 1 1200 (a game console) 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) R 0 1293 1227 -1 (a staff bulletin board)
O 0 1227 99 1293 (a staff bulletin board) O 0 1227 99 1293 (a staff bulletin board)
R 0 1291 1226 -1 (a builder's bulletin board) R 0 1291 1226 -1 (a builder's bulletin board)

View file

@ -2,6 +2,12 @@
Rumble~ Rumble~
Sanctus III~ Sanctus III~
300 399 30 2 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) R 0 367 308 -1 (a clay jug)
O 0 308 99 367 (a clay jug) O 0 308 99 367 (a clay jug)
O 0 335 1 334 (the large fountain) 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 179 3 317 (the recruit)
M 0 194 3 314 (the mouse) M 0 194 3 314 (the mouse)
M 0 193 3 312 (the dove) 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) M 0 105 3 315 (the balding man)
E 1 31612 99 6 (a pair of reading glasses) E 1 31612 99 6 (a pair of reading glasses)
M 0 100 3 309 (the young man) M 0 100 3 309 (the young man)

View file

@ -2222,19 +2222,7 @@ ACMD(do_commands)
} }
/* display commands list in a nice columnized format */ /* display commands list in a nice columnized format */
column_list(buf + strlen(buf), sizeof(buf) - strlen(buf), column_list(ch, 7, commands, no, FALSE);
/* 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);
} }
void free_history(struct char_data *ch, int type) void free_history(struct char_data *ch, int type)

View file

@ -1918,8 +1918,8 @@ const char *title_male(int chclass, int level)
case 20: return "the Cut-Throat"; case 20: return "the Cut-Throat";
/* no one ever thought up these titles 21-30 */ /* no one ever thought up these titles 21-30 */
case LVL_IMMORT: return "the Immortal Assassin"; case LVL_IMMORT: return "the Immortal Assassin";
case LVL_GOD: return "the Demi God of thieves"; case LVL_GOD: return "the Demi God of Thieves";
case LVL_GRGOD: return "the God of thieves and tradesmen"; case LVL_GRGOD: return "the God of Thieves and Tradesmen";
default: return "the Thief"; default: return "the Thief";
} }
break; break;
@ -1949,7 +1949,7 @@ const char *title_male(int chclass, int level)
/* no one ever thought up these titles 21-30 */ /* no one ever thought up these titles 21-30 */
case LVL_IMMORT: return "the Immortal Warlord"; case LVL_IMMORT: return "the Immortal Warlord";
case LVL_GOD: return "the Extirpator"; 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"; default: return "the Warrior";
} }
break; break;
@ -2033,7 +2033,7 @@ const char *title_female(int chclass, int level)
/* no one ever thought up these titles 21-30 */ /* no one ever thought up these titles 21-30 */
case LVL_IMMORT: return "the Immortal Priestess"; case LVL_IMMORT: return "the Immortal Priestess";
case LVL_GOD: return "the Inquisitress"; 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"; default: return "the Cleric";
} }
break; break;
@ -2062,8 +2062,8 @@ const char *title_female(int chclass, int level)
case 20: return "the Cut-Throat"; case 20: return "the Cut-Throat";
/* no one ever thought up these titles 21-30 */ /* no one ever thought up these titles 21-30 */
case LVL_IMMORT: return "the Immortal Assassin"; case LVL_IMMORT: return "the Immortal Assassin";
case LVL_GOD: return "the Demi Goddess of thieves"; case LVL_GOD: return "the Demi Goddess of Thieves";
case LVL_GRGOD: return "the Goddess of thieves and tradesmen"; case LVL_GRGOD: return "the Goddess of Thieves and Tradesmen";
default: return "the Thief"; default: return "the Thief";
} }
break; break;
@ -2093,7 +2093,7 @@ const char *title_female(int chclass, int level)
/* no one ever thought up these titles 21-30 */ /* no one ever thought up these titles 21-30 */
case LVL_IMMORT: return "the Immortal Lady of War"; case LVL_IMMORT: return "the Immortal Lady of War";
case LVL_GOD: return "the Queen of Destruction"; 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"; default: return "the Warrior";
} }
break; break;

View file

@ -24,7 +24,7 @@
* @todo cpp_extern isn't needed here (or anywhere) as the extern reserved word * @todo cpp_extern isn't needed here (or anywhere) as the extern reserved word
* works correctly with C compilers (at least in my Experience) * works correctly with C compilers (at least in my Experience)
* Jeremy Osborne 1/28/2008 */ * 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 */ /* strings corresponding to ordinals/bitvectors in structs.h */
/* (Note: strings for class definitions in class.c instead of here) */ /* (Note: strings for class definitions in class.c instead of here) */

View file

@ -864,7 +864,7 @@ void find_replacement(void *go, struct script_data *sc, trig_data *trig,
if (IS_NPC(c)) if (IS_NPC(c))
strcpy(str, "0"); strcpy(str, "0");
else { 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)); snprintf(str, slen, "%d", GET_QUEST(c));
else else
strcpy(str, "0"); strcpy(str, "0");

View file

@ -82,6 +82,7 @@ void free_quest(struct aq_data *quest)
int add_quest(struct aq_data *nqst) int add_quest(struct aq_data *nqst)
{ {
qst_rnum rnum; qst_rnum rnum;
mob_rnum qmrnum;
zone_rnum rznum = real_zone_by_thing(nqst->vnum); zone_rnum rznum = real_zone_by_thing(nqst->vnum);
/* The quest already exists, just update it. */ /* 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); copy_quest(&aquest_table[rnum], nqst, FALSE);
} }
qmrnum = real_mobile(QST_MASTER(rnum));
/* Make sure we assign spec procs to the questmaster */ /* Make sure we assign spec procs to the questmaster */
if (QST_MASTER(rnum) != NOBODY && mob_index[QST_MASTER(rnum)].func && if (qmrnum != NOBODY && mob_index[qmrnum].func &&
mob_index[QST_MASTER(rnum)].func != questmaster) mob_index[qmrnum].func != questmaster)
QST_FUNC(rnum) = mob_index[QST_MASTER(rnum)].func; QST_FUNC(rnum) = mob_index[qmrnum].func;
if(QST_MASTER(rnum) != NOBODY) if(qmrnum != NOBODY)
mob_index[QST_MASTER(rnum)].func = questmaster; mob_index[qmrnum].func = questmaster;
/* And make sure we save the updated quest information to disk */ /* And make sure we save the updated quest information to disk */
if (rznum != NOWHERE) if (rznum != NOWHERE)
@ -128,7 +130,7 @@ int delete_quest(qst_rnum rnum)
{ {
qst_rnum i; qst_rnum i;
zone_rnum rznum; zone_rnum rznum;
mob_rnum qm = QST_MASTER(rnum); mob_vnum qm = QST_MASTER(rnum);
SPECIAL (*tempfunc); SPECIAL (*tempfunc);
int quests_remaining = 0; int quests_remaining = 0;
@ -235,7 +237,7 @@ int save_quests(zone_rnum zone_num)
quest_done, STRING_TERMINATOR, quest_done, STRING_TERMINATOR,
quest_quit, STRING_TERMINATOR, quest_quit, STRING_TERMINATOR,
QST_TYPE(rnum), QST_TYPE(rnum),
QST_MASTER(rnum) == NOBODY ? -1 : mob_index[QST_MASTER(rnum)].vnum, QST_MASTER(rnum) == NOBODY ? -1 : QST_MASTER(rnum),
quest_flags, quest_flags,
QST_TARGET(rnum) == NOTHING ? -1 : QST_TARGET(rnum), QST_TARGET(rnum) == NOTHING ? -1 : QST_TARGET(rnum),
QST_PREV(rnum) == NOTHING ? -1 : QST_PREV(rnum), QST_PREV(rnum) == NOTHING ? -1 : QST_PREV(rnum),

View file

@ -340,10 +340,7 @@ static void medit_disp_mob_flags(struct descriptor_data *d)
get_char_colors(d->character); get_char_colors(d->character);
clear_screen(d); clear_screen(d);
column_list(buf, sizeof(buf), 0, 0, column_list(d->character, 2, action_bits, NUM_MOB_FLAGS, TRUE);
2, action_bits, NUM_MOB_FLAGS, 0,
"%s$2i%s) $20l", grn, nrm);
write_to_output(d, "%s", buf);
sprintbitarray(MOB_FLAGS(OLC_MOB(d)), action_bits, AF_ARRAY_MAX, buf); 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) : ", write_to_output(d, "\r\nCurrent flags : %s%s%s\r\nEnter mob flags (0 to quit) : ",
@ -358,10 +355,8 @@ static void medit_disp_aff_flags(struct descriptor_data *d)
get_char_colors(d->character); get_char_colors(d->character);
clear_screen(d); clear_screen(d);
column_list(buf, sizeof(buf), 0, 0, /* +1 since AFF_FLAGS don't start at 0. */
2, affected_bits, NUM_AFF_FLAGS, 1, column_list(d->character, 2, affected_bits + 1, NUM_AFF_FLAGS, TRUE);
"%s$2i%s) $20l", grn, nrm);
write_to_output(d, "%s", buf);
sprintbitarray(AFF_FLAGS(OLC_MOB(d)), affected_bits, AF_ARRAY_MAX, buf); 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) : ", write_to_output(d, "\r\nCurrent flags : %s%s%s\r\nEnter aff flags (0 to quit) : ",

View file

@ -90,7 +90,7 @@ void mobile_activity(void)
} }
/* Aggressive Mobs */ /* 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; found = FALSE;
for (vict = world[IN_ROOM(ch)].people; vict && !found; vict = vict->next_in_room) { 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)) if (IS_NPC(vict) || !CAN_SEE(ch, vict) || PRF_FLAGGED(vict, PRF_NOHASSLE))

View file

@ -329,8 +329,8 @@ static void qedit_disp_menu(struct descriptor_data *d)
quest_flags, quest_flags,
quest_types[quest->type], quest_types[quest->type],
quest->type == AQ_OBJ_RETURN ? buf2 : "", quest->type == AQ_OBJ_RETURN ? buf2 : "",
quest->qm == NOBODY ? -1 : mob_index[quest->qm].vnum, quest->qm == NOBODY ? -1 : quest->qm,
quest->qm == NOBODY ? "none" : mob_proto[quest->qm].player.short_descr, real_mobile(quest->qm) == NOBODY ? "Invalid Mob" : mob_proto[(real_mobile(quest->qm))].player.short_descr,
quest->target == NOBODY ? -1 : quest->target, targetname, quest->target == NOBODY ? -1 : quest->target, targetname,
quest->value[6], quest->value[6],
quest->value[0], quest->value[1], quest->value[0], quest->value[1],
@ -605,7 +605,7 @@ void qedit_parse(struct descriptor_data *d, char *arg)
break; break;
case QEDIT_QUESTMASTER: case QEDIT_QUESTMASTER:
if (number != -1) 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 : "); write_to_output(d, "That mobile does not exist, try again : ");
return; return;
} }

View file

@ -81,7 +81,7 @@ int is_complete(struct char_data *ch, qst_vnum vnum)
return FALSE; 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; qst_rnum rnum;
int found=0; int found=0;
@ -166,7 +166,7 @@ void parse_quest(FILE *quest_f, int nr)
exit(1); exit(1);
} }
aquest_table[i].type = t[0]; 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].flags = asciiflag_conv(f1);
aquest_table[i].target = (t[2] == -1) ? NOTHING : t[2]; aquest_table[i].target = (t[2] == -1) ? NOTHING : t[2];
aquest_table[i].prev_quest = (t[3] == -1) ? NOTHING : t[3]; 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) void assign_the_quests(void)
{ {
qst_rnum rnum; qst_rnum rnum;
mob_rnum mrnum;
cmd_tell = find_command("tell"); 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)); log("SYSERR: Quest #%d has no questmaster specified.", QST_NUM(rnum));
continue; 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 && if (mob_index[QST_MASTER(rnum)].func &&
mob_index[QST_MASTER(rnum)].func != questmaster) mob_index[(mrnum)].func != questmaster)
QST_FUNC(rnum) = mob_index[QST_MASTER(rnum)].func; QST_FUNC(rnum) = mob_index[(mrnum)].func;
mob_index[QST_MASTER(rnum)].func = questmaster; 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) 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", 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), ++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) if (!counter)
send_to_char(ch, "None found.\r\n"); 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++) { for (i = 0; i < GET_NUM_QUESTS(ch); i++) {
if ((rnum = real_quest(ch->player_specials->saved.completed_quests[i])) != NOTHING) 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", 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 else
send_to_char(ch, send_to_char(ch,
"@g%4d@n) @cUnknown Quest (it no longer exists)@n\r\n", ++counter); "@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; qst_rnum rnum;
int counter = 0; 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]) void quest_stat(struct char_data *ch, char argument[MAX_STRING_LENGTH])
{ {
qst_rnum rnum; qst_rnum rnum;
mob_rnum qmrnum;
char buf[MAX_STRING_LENGTH]; char buf[MAX_STRING_LENGTH];
char targetname[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"); snprintf(targetname, sizeof(targetname), "Unknown");
break; break;
} }
qmrnum = real_mobile(QST_MASTER(rnum));
send_to_char(ch, send_to_char(ch,
"VNum : [@y%5d@n], RNum: [@y%5d@n] -- Questmaster: [@y%5d@n] @y%s@n\r\n" "VNum : [@y%5d@n], RNum: [@y%5d@n] -- Questmaster: [@y%5d@n] @y%s@n\r\n"
"Name : @y%s@n\r\n" "Name : @y%s@n\r\n"
@ -769,7 +776,7 @@ SPECIAL(questmaster)
/* check that qm mob has quests assigned */ /* check that qm mob has quests assigned */
for (rnum = 0; (rnum < total_quests && 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) if (rnum >= total_quests)
return FALSE; /* No quests for this mob */ return FALSE; /* No quests for this mob */
else if (QST_FUNC(rnum) && (QST_FUNC(rnum) (ch, me, cmd, argument))) else if (QST_FUNC(rnum) && (QST_FUNC(rnum) (ch, me, cmd, argument)))
@ -784,7 +791,7 @@ SPECIAL(questmaster)
switch (tp) { switch (tp) {
case SCMD_QUEST_LIST: case SCMD_QUEST_LIST:
if (!*arg2) if (!*arg2)
quest_show(ch, GET_MOB_RNUM(qm)); quest_show(ch, GET_MOB_VNUM(qm));
else else
quest_list(ch, qm, arg2); quest_list(ch, qm, arg2);
break; break;

View file

@ -44,7 +44,7 @@ struct aq_data {
char *quit; /* Message displayed when quit quest */ char *quit; /* Message displayed when quit quest */
long flags; /* Flags (repeatable, etc */ long flags; /* Flags (repeatable, etc */
int type; /* Quest type */ int type; /* Quest type */
mob_rnum qm; /* questmaster offering quest */ mob_vnum qm; /* questmaster offering quest */
int target; /* Target value */ int target; /* Target value */
obj_vnum prereq; /* Object required to undertake quest */ obj_vnum prereq; /* Object required to undertake quest */
int value[7]; /* Quest values */ int value[7]; /* Quest values */

View file

@ -19,7 +19,7 @@
* on an older version. You are supposed to compare this with the macro * on an older version. You are supposed to compare this with the macro
* TBAMUD_VERSION() in utils.h. * TBAMUD_VERSION() in utils.h.
* It is read as Major/Minor/Patchlevel - MMmmPP */ * 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 /** If you want equipment to be automatically equipped to the same place
* it was when players rented, set the define below to 1 because * it was when players rented, set the define below to 1 because

View file

@ -16,6 +16,7 @@
#include "utils.h" #include "utils.h"
#include "db.h" #include "db.h"
#include "comm.h" #include "comm.h"
#include "modify.h"
#include "screen.h" #include "screen.h"
#include "spells.h" #include "spells.h"
#include "handler.h" #include "handler.h"
@ -932,195 +933,66 @@ void char_from_furniture(struct char_data *ch)
} }
/* Helper function for column_list. */ /* column_list
void process_column_list_format(char **out_buffer, const char *format, The list is output in a fixed format, and only the number of columns can be adjusted
int buf_left, int index_data, const char *item) 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)
{ {
/* Initialize the index format with a % */ int num_per_col, col_width,r,c,i, offset=0, len=0, temp_len, max_len=0;
char index_format[80] = {'%'}; char buf[MAX_STRING_LENGTH];
int i;
/* Copy the format to the output buffer character by character. */ /* Ensure that the number of columns is in the range 1-10 */
while (*format && buf_left >= 2) { num_cols = MIN(MAX(num_cols,1), 10);
/* A '$' signifies a 'control-code'. */ /* Work out the longest list item */
if (*format == '$') { for (i=0; i<list_length; i++)
++format; if (max_len < strlen(list[i]))
max_len = strlen(list[i]);
/* /* Calculate the width of each column */
* Begin by assuming the caller has supplied a number here col_width = (GET_SCREEN_WIDTH(ch)) / num_cols;
* (something that looks like $3i). Then collect this number if (show_nums) col_width-=4;
* into the index_format after the %.
*/
i = 1;
while (isdigit(*format) && i < 78)
index_format[i++] = *(format++);
index_format[i++] = 'd';
index_format[i] = '\0';
/* There may not be enough space left for the index. */ if (col_width < max_len)
if (buf_left < 12) log("Warning: columns too narrow for correct output to %s in simple_column_list (utils.c)", GET_NAME(ch));
break;
/* /* Calculate how many list items there should be per column */
* Okay, output the current index using the index format num_per_col = (list_length / num_cols) + ((list_length % num_cols) ? 1 : 0);
* we already constructed above.
*/
else if (*format == 'i')
*out_buffer += sprintf(*out_buffer, index_format, index_data);
/* /* Fill 'buf' with the columnised list */
* Or output the current list item. Use part of the for (r=0; r<num_per_col; r++)
* index format collected above to decide how wide the
* list item should be displayed.
*/
else if (*format == 'l') {
/* skip the %. atoi ignores the d too */
i = atoi(index_format + 1);
/* if no width, set to -1 (any width) */
if (!i) --i;
/* copy the list item to the output buffer */
while (*item && buf_left >= 2 && i != 0) {
*((*out_buffer)++) = *(item++);
--buf_left;
--i;
}
/* if width was specified above, pad the list item */
while (i-- > 0 && buf_left >= 2) {
*((*out_buffer)++) = ' ';
--buf_left;
}
}
/* 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; for (c=0; c<num_cols; c++)
char line[80]; {
va_list args; offset = (c*num_per_col)+r;
if (offset < list_length)
--buf_left; {
if (show_nums)
/* We only need to parse the given format string for %'s once. */ temp_len = snprintf(buf+len, sizeof(buf) - len, "%2d) %-*s", offset+1, col_width, list[(offset)]);
va_start(args, format); else
vsnprintf(line, sizeof(line), format, args); temp_len = snprintf(buf+len, sizeof(buf) - len, "%-*s", col_width, list[(offset)]);
va_end(args); len += temp_len;
/* 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;
} }
} }
/* temp_len = snprintf(buf+len, sizeof(buf) - len, "\r\n");
* We're at the end of a row. Print a newline, advance the len += temp_len;
* 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 if (len >= sizeof(buf))
snprintf((buf + MAX_STRING_LENGTH) - 22, 22, "\r\n*** OVERFLOW ***\r\n");
/* Send the list to the player */
page_string(ch->desc, buf, TRUE);
} }
/** /**
* Search through a string array of flags for a particular flag. * Search through a string array of flags for a particular flag.
* @param flag_list An array of flag name strings. The final element must * @param flag_list An array of flag name strings. The final element must

View file

@ -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 *real_time_passed(time_t t2, time_t t1);
struct time_info_data *mud_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 prune_crlf(char *txt);
void column_list(char *out_buffer, int buf_left, int page_length, void column_list(struct char_data *ch, int num_cols, const char **list, int list_length, bool show_nums);
int skip_lines, int columns, const char **list,
int list_length, int list_offset, const char *format,
...) __attribute__ ((format (printf, 9, 10)));
int get_flag_by_name(const char *flag_list[], char *flag_name); 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_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 ); int file_tail( FILE *file, char *buf, size_t bufsize, int lines_to_read );