mirror of
https://github.com/tbamud/tbamud.git
synced 2025-12-21 09:40:14 +01:00
updated do_set, added autoloot, autogold, autosplit, autosac, and autoassist. Removed whitespace from files. --Rumble
This commit is contained in:
parent
2b53a5b375
commit
1d9cff608c
11 changed files with 675 additions and 485 deletions
28
ChangeLog
28
ChangeLog
|
|
@ -1,18 +1,30 @@
|
||||||
atbaMUD is currently being developed by The Builder Academy. If you need any
|
tbaMUD is currently being developed by The Builder Academy. If you need any
|
||||||
help or find any bugs please stop by: builderacademy.net 9091
|
help or find any bugs please stop by: builderacademy.net 9091
|
||||||
|
|
||||||
tbaMUD 3.51
|
tbaMUD 3.51
|
||||||
|
- Changed page to level 1.
|
||||||
|
- Snooping log message is now only visible by higher imms.
|
||||||
|
- Moved nohassle, holylight, showvnums, color, compact, syslog, poofin,
|
||||||
|
poofout, and autoexit to toggle <option>.
|
||||||
|
- Added "Did you mean" to unknown commands instead of Huh?!? (thanks Rhade).
|
||||||
|
- Updated do_set Alphabetically. Removed set idnum & lessons (practice still
|
||||||
|
there). Can no longer set level to 0 (thanks Fizban).
|
||||||
|
- Added autoloot, autogold, autosplit, autosac, and autoassist.
|
||||||
|
- Removed all whitespace (tabs and spaces at EOL).
|
||||||
- Added years to messages (thanks Rhade).
|
- Added years to messages (thanks Rhade).
|
||||||
- Updated version and files to new name: tbaMUD!
|
- Updated version and files to new name: tbaMUD!
|
||||||
- Renamed medit_alias and oedit_namelist to _keyword for consistency.
|
- Renamed medit_alias and oedit_namelist to _keyword for consistency.
|
||||||
- Moved numerous protos only used once from .h files to appropriate .c file.
|
- Moved numerous protos only used once from .h files to appropriate .c file
|
||||||
|
(thanks Del).
|
||||||
- Renamed numerous functions for clarity (mostly shop functions like copy_list
|
- Renamed numerous functions for clarity (mostly shop functions like copy_list
|
||||||
to copy_shop_list, etc).
|
to copy_shop_list, etc) (thanks Del).
|
||||||
- Renamed update_objects to update_all_objects so it wouldn't be confused with
|
- Renamed update_objects to update_all_objects so it wouldn't be confused with
|
||||||
update_object.
|
update_object (thanks Del).
|
||||||
- Renamed data to dg_data in function queue_head in dg_event.c for clarity.
|
- Renamed data to dg_data in function queue_head in dg_event.c for clarity
|
||||||
- Moved function log_death_trap to a log since that is all it did anyways.
|
(thanks Del).
|
||||||
- Renamed unmatched gettimeofday protos.
|
- Moved function log_death_trap to a log since that is all it did anyways
|
||||||
|
(thanks Del).
|
||||||
|
- Renamed unmatched gettimeofday protos (thanks Del).
|
||||||
- Renamed oasis_copy.o and oasis_list.o to appropriate .c for CXREF_FILES.
|
- Renamed oasis_copy.o and oasis_list.o to appropriate .c for CXREF_FILES.
|
||||||
- Fixed a bunch of strange bugs in objsave.c and altered build_player_index()
|
- Fixed a bunch of strange bugs in objsave.c and altered build_player_index()
|
||||||
to conform to gcc 4.1 standards. This mainly consisted of removing a cast
|
to conform to gcc 4.1 standards. This mainly consisted of removing a cast
|
||||||
|
|
@ -225,7 +237,7 @@ CircleMUD 3.5
|
||||||
- Added buildwalk and dig.
|
- Added buildwalk and dig.
|
||||||
|
|
||||||
Release history:
|
Release history:
|
||||||
Version 3.51 release: January, 2007
|
Version 3.51 release: February, 2007
|
||||||
Version 3.5 release: December 11, 2006
|
Version 3.5 release: December 11, 2006
|
||||||
Version 3.1 (yes, no beta pl): November 18, 2002
|
Version 3.1 (yes, no beta pl): November 18, 2002
|
||||||
Version 3.00 beta pl22 release: October 4, 2002
|
Version 3.00 beta pl22 release: October 4, 2002
|
||||||
|
|
|
||||||
|
|
@ -951,7 +951,7 @@ when done type /fi to format with indent.
|
||||||
See also: TEXT-EDITOR
|
See also: TEXT-EDITOR
|
||||||
|
|
||||||
#31
|
#31
|
||||||
BUFFERS DEFINES MAXSIZE MAX_SIZE MAXBUFFERS PAGE_LENGTHS MAX_BUFFERS
|
BUFFERS DEFINES MAXSIZE MAX_SIZE MAXBUFFERS MAX_BUFFERS
|
||||||
|
|
||||||
define MAX_SOCK_BUF (24 * 1024) /* Size of kernel's sock buf */
|
define MAX_SOCK_BUF (24 * 1024) /* Size of kernel's sock buf */
|
||||||
define MAX_PROMPT_LENGTH 96 /* Max length of prompt */
|
define MAX_PROMPT_LENGTH 96 /* Max length of prompt */
|
||||||
|
|
@ -1111,7 +1111,7 @@ MAILING - Player is writing mail
|
||||||
CSH - Player needs to be crash-saved
|
CSH - Player needs to be crash-saved
|
||||||
SITEOK - Player has been site-cleared
|
SITEOK - Player has been site-cleared
|
||||||
NOSHOUT - Player in not on the shout channel
|
NOSHOUT - Player in not on the shout channel
|
||||||
NOSHOUT - Player is not on the gossip channel
|
NOGOS - Player is not on the gossip channel
|
||||||
NOTITLE - Player not allowed to set title
|
NOTITLE - Player not allowed to set title
|
||||||
DELETED - Player deleted - space reusable
|
DELETED - Player deleted - space reusable
|
||||||
LOADRM - Player uses nonstandard loadroom
|
LOADRM - Player uses nonstandard loadroom
|
||||||
|
|
@ -2476,8 +2476,9 @@ The following are valid fields:
|
||||||
|
|
||||||
Field Level Required Who Value Type Description
|
Field Level Required Who Value Type Description
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
|
afk LVL_BUILDER BOTH NUMBER AFK flag
|
||||||
ac LVL_BUILDER BOTH NUMBER Armor class
|
ac LVL_BUILDER BOTH NUMBER Armor class
|
||||||
age LVL_BUILDER BOTH NUMBER Character's age
|
age LVL_GOD BOTH NUMBER Character's age
|
||||||
align LVL_BUILDER BOTH NUMBER Alignment
|
align LVL_BUILDER BOTH NUMBER Alignment
|
||||||
bank LVL_BUILDER PC NUMBER Gold in bank
|
bank LVL_BUILDER PC NUMBER Gold in bank
|
||||||
brief LVL_GOD PC BINARY Brief mode
|
brief LVL_GOD PC BINARY Brief mode
|
||||||
|
|
@ -2489,7 +2490,7 @@ damroll LVL_BUILDER BOTH NUMBER Damage modifier
|
||||||
deleted LVL_IMPL PC BINARY DELETED flag
|
deleted LVL_IMPL PC BINARY DELETED flag
|
||||||
dex LVL_BUILDER BOTH NUMBER Dexterity
|
dex LVL_BUILDER BOTH NUMBER Dexterity
|
||||||
drunk LVL_BUILDER BOTH MISC Drunkenness
|
drunk LVL_BUILDER BOTH MISC Drunkenness
|
||||||
exp LVL_BUILDER BOTH NUMBER Experience points
|
exp LVL_GOD BOTH NUMBER Experience points
|
||||||
frozen LVL_FREEZE PC BINARY FROZEN flag
|
frozen LVL_FREEZE PC BINARY FROZEN flag
|
||||||
gold LVL_BUILDER BOTH NUMBER Gold (On hand)
|
gold LVL_BUILDER BOTH NUMBER Gold (On hand)
|
||||||
height LVL_BUILDER BOTH NUMBER Height
|
height LVL_BUILDER BOTH NUMBER Height
|
||||||
|
|
@ -2501,8 +2502,8 @@ int LVL_BUILDER BOTH NUMBER Intelligence
|
||||||
invis LVL_GOD PC NUMBER Invisible (level)
|
invis LVL_GOD PC NUMBER Invisible (level)
|
||||||
invstart LVL_BUILDER PC BINARY Invisible Start
|
invstart LVL_BUILDER PC BINARY Invisible Start
|
||||||
killer LVL_GOD PC BINARY KILLER flag
|
killer LVL_GOD PC BINARY KILLER flag
|
||||||
lessons LVL_BUILDER PC NUMBER #100 of practices
|
lessons LVL_GOD PC NUMBER # of practices
|
||||||
level LVL_IMPL BOTH NUMBER Level
|
level LVL_GRGOD BOTH NUMBER Level
|
||||||
loadroom LVL_BUILDER PC MISC Room to load in
|
loadroom LVL_BUILDER PC MISC Room to load in
|
||||||
mana LVL_BUILDER BOTH NUMBER Current mana
|
mana LVL_BUILDER BOTH NUMBER Current mana
|
||||||
maxhit LVL_BUILDER BOTH NUMBER Max HP
|
maxhit LVL_BUILDER BOTH NUMBER Max HP
|
||||||
|
|
@ -2512,18 +2513,18 @@ move LVL_BUILDER BOTH NUMBER Current movement
|
||||||
nodelete LVL_GOD PC BINARY Undeletable flag
|
nodelete LVL_GOD PC BINARY Undeletable flag
|
||||||
nohassle LVL_GOD PC BINARY NOHASSLE flag
|
nohassle LVL_GOD PC BINARY NOHASSLE flag
|
||||||
nosummon LVL_BUILDER PC BINARY NOSUMMON flag
|
nosummon LVL_BUILDER PC BINARY NOSUMMON flag
|
||||||
nowizlist LVL_GOD PC BINARY Not Wizlistable flag
|
nowizlist LVL_GRGOD PC BINARY Not Wizlistable flag
|
||||||
olc LVL_GRGOD PC MISC Zone to OLC
|
olc LVL_GRGOD PC MISC Zone to OLC
|
||||||
passwd LVL_IMPL PC MISC Player password
|
passwd LVL_IMPL PC MISC Player password
|
||||||
poofin LVL_IMMORT PC MISC Poofin
|
poofin LVL_IMMORT PC MISC Poofin
|
||||||
poofout LVL_IMMORT PC MISC Poofout
|
poofout LVL_IMMORT PC MISC Poofout
|
||||||
practices LVL_BUILDER PC NUMBER #100 of practices
|
practices LVL_GOD PC NUMBER # of practices
|
||||||
quest LVL_GOD PC BINARY QUESTING flag
|
quest LVL_GOD PC BINARY QUEST flag
|
||||||
race LVL_BUILDER BOTH MISC Race h/e/g/a/b/m/w/t/d/r/s
|
race LVL_BUILDER BOTH MISC Race h/e/g/a/b/m/w/t/d/r/s
|
||||||
room LVL_IMPL BOTH NUMBER Move to room
|
room LVL_IMPL BOTH NUMBER Move to room
|
||||||
roomflag LVL_GOD PC BINARY ROOMFLAGS flag
|
showvnum LVL_GOD PC BINARY ShowVnums
|
||||||
sex LVL_GOD BOTH MISC Sex
|
sex LVL_GOD BOTH MISC Sex
|
||||||
siteok LVL_GOD PC BINARY SITEOK flag
|
siteok LVL_GOD PC BINARY SITEOK
|
||||||
str LVL_BUILDER BOTH NUMBER Strength
|
str LVL_BUILDER BOTH NUMBER Strength
|
||||||
stradd LVL_BUILDER BOTH NUMBER Additional STR (18/xx)
|
stradd LVL_BUILDER BOTH NUMBER Additional STR (18/xx)
|
||||||
thief LVL_GOD PC BINARY THIEF flag
|
thief LVL_GOD PC BINARY THIEF flag
|
||||||
|
|
@ -2723,7 +2724,7 @@ Usage: wizhelp
|
||||||
Gives a list of the special commands available at your level.
|
Gives a list of the special commands available at your level.
|
||||||
|
|
||||||
The following wizard commands are implemented with level in the brackets:
|
The following wizard commands are implemented with level in the brackets:
|
||||||
[31]; [32]advance [32]aedit [31]at [31]attach [33]ban [31]buildwalk
|
[31]; [33]advance [32]aedit [31]at [31]attach [33]ban [31]buildwalk
|
||||||
[34]cedit [32]checkload [33]copyover [31]date [32]dc [31]detach [31]dig
|
[34]cedit [32]checkload [33]copyover [31]date [32]dc [31]detach [31]dig
|
||||||
[31]echo [34]export [32]file [32]force [33]freeze [32]gecho [31]goto
|
[31]echo [34]export [32]file [32]force [33]freeze [32]gecho [31]goto
|
||||||
[31]handbook [33]hcontrol [32]hedit [34]helpcheck [31]holylight [31]imotd [31]invis
|
[31]handbook [33]hcontrol [32]hedit [34]helpcheck [31]holylight [31]imotd [31]invis
|
||||||
|
|
@ -7743,6 +7744,31 @@ head and legs X2.
|
||||||
|
|
||||||
See also: MEDIT-AC
|
See also: MEDIT-AC
|
||||||
#31
|
#31
|
||||||
|
TOGGLES CONFIGURE SETTINGS
|
||||||
|
|
||||||
|
Usage: toggle
|
||||||
|
toggle <option> <argument>
|
||||||
|
|
||||||
|
TOGGLE shows you the current values of various toggles available on the MUD.
|
||||||
|
This command can also be used to change these values, if used with the correct
|
||||||
|
argument. When a toggle is set, it will be saved in that state until the next
|
||||||
|
time you change it. Level IMP toggle includes:
|
||||||
|
|
||||||
|
SlowNameserver: OFF Trackthru Doors: ON
|
||||||
|
Buildwalk: OFF NoWiz: OFF ClsOLC: OFF
|
||||||
|
NoHassle: ON Holylight: ON ShowVnums: ON
|
||||||
|
Syslog: normal
|
||||||
|
Hit Pnt Display: OFF Brief: OFF Summonable: OFF
|
||||||
|
Move Display: OFF Compact: ON Quest: OFF
|
||||||
|
Mana Display: OFF NoTell: OFF NoRepeat: OFF
|
||||||
|
AutoExits: OFF NoShout: OFF Wimpy: OFF
|
||||||
|
NoGossip: OFF NoAuction: OFF NoGrats: OFF
|
||||||
|
AutoLoot: ON AutoGold: ON AutoSplit: ON
|
||||||
|
AutoSac: ON AutoAssist: ON AFK: OFF
|
||||||
|
Pagelength: 32 Color: off
|
||||||
|
|
||||||
|
See also: DISPLAY, NOSHOUT, NOSUMM, NOTELL, QUEST, REPEAT, WIMP
|
||||||
|
#0
|
||||||
TELEPORTERS
|
TELEPORTERS
|
||||||
|
|
||||||
Usage: teleport <zone>
|
Usage: teleport <zone>
|
||||||
|
|
@ -8225,7 +8251,7 @@ assisting is fighting.
|
||||||
|
|
||||||
> assist Joe
|
> assist Joe
|
||||||
|
|
||||||
See also: FLEE, KILL, RESCUE
|
See also: AUTOASSIST, FLEE, KILL, RESCUE
|
||||||
#0
|
#0
|
||||||
QUESTIONS
|
QUESTIONS
|
||||||
|
|
||||||
|
|
@ -9105,25 +9131,36 @@ Thirst and Hunger are modified by objects in units of hours. So an object
|
||||||
with 24 drink units will quench thirst for 24 hours. Same for food.
|
with 24 drink units will quench thirst for 24 hours. Same for food.
|
||||||
Immortals never become hungry, thirsty or full.
|
Immortals never become hungry, thirsty or full.
|
||||||
#0
|
#0
|
||||||
EMOTES : GEMOTES GMOTES EMOTICONS EMOTIONS
|
EMOTES : EMOTIONS
|
||||||
|
|
||||||
Usage: emote <message>
|
Usage: emote <message>
|
||||||
: <message>
|
: <message>
|
||||||
gemote <message>
|
|
||||||
|
|
||||||
Show people what you're feeling. The shorthand for emote is ":".
|
Show people what you're feeling. The shorthand for emote is ":".
|
||||||
"emote <string>" will display your name, then the string.
|
"emote <string>" will display your name, then the string.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
If your name is "Helt",
|
If your name is "Rhade",
|
||||||
> emote is feeling very sad today.
|
> emote is feeling very sad today.
|
||||||
will display:
|
will display:
|
||||||
Helt is feeling very sad today.
|
Rhade is feeling very sad today.
|
||||||
|
|
||||||
gemote does the same thing except over the gossip channel. So not just the people
|
See also: SOCIALS, GEMOTE
|
||||||
in your room see it, everyone on the gossip channel does. Please don't abuse this.
|
#0
|
||||||
|
GEMOTES GMOTES EMOTICONS
|
||||||
|
|
||||||
See also: SOCIALS
|
Usage: gemote <social>
|
||||||
|
|
||||||
|
Allows you to perform socials over gossip for everyone on the gossip channel
|
||||||
|
to see.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
If your name is "Manivo",
|
||||||
|
> gemote spork Shamra
|
||||||
|
will display:
|
||||||
|
Gossip: Manivo sporks Shamra ruthlessly.
|
||||||
|
|
||||||
|
See also: SOCIALS, EMOTE
|
||||||
#0
|
#0
|
||||||
ENTER
|
ENTER
|
||||||
|
|
||||||
|
|
@ -9189,7 +9226,7 @@ Examples:
|
||||||
|
|
||||||
See also: GROUP, SNEAK
|
See also: GROUP, SNEAK
|
||||||
#0
|
#0
|
||||||
GET TAKE LOOT
|
GET TAKE-ALL-CORPSE LOOT
|
||||||
|
|
||||||
"Get" and "take" are exactly the same and can be used interchangeably.
|
"Get" and "take" are exactly the same and can be used interchangeably.
|
||||||
|
|
||||||
|
|
@ -9204,12 +9241,12 @@ it up. 'get' can also be used to extract items from containers.
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
> get sword corpse
|
> get sword corpse
|
||||||
> get all corpse
|
> take all corpse
|
||||||
> get all all.bag
|
> get all all.bag
|
||||||
> get all.bread all.bag
|
> take all.bread all.bag
|
||||||
> get all 2.corpse (to retrieve items from the second corpse in a room)
|
> get all 2.corpse (to retrieve items from the second corpse in a room)
|
||||||
|
|
||||||
See also: DROP, PUT
|
See also: DROP, PUT, AUTOLOOT, AUTOGOLD
|
||||||
#0
|
#0
|
||||||
GIVE PAY BRIBE
|
GIVE PAY BRIBE
|
||||||
|
|
||||||
|
|
@ -10461,7 +10498,7 @@ the same room with you, and you type SPLIT 100, you will give each of the
|
||||||
other 4 group members 20 coins each. (100 coins is split 5 ways; you keep
|
other 4 group members 20 coins each. (100 coins is split 5 ways; you keep
|
||||||
your share and give everyone else their share).
|
your share and give everyone else their share).
|
||||||
|
|
||||||
See also: FOLLOW, GROUP
|
See also: AUTOSPLIT, FOLLOW, GROUP
|
||||||
#0
|
#0
|
||||||
STEAL
|
STEAL
|
||||||
|
|
||||||
|
|
@ -10501,21 +10538,66 @@ Usage: toggle
|
||||||
TOGGLE shows you the current values of various toggles available on the MUD.
|
TOGGLE shows you the current values of various toggles available on the MUD.
|
||||||
This command can also be used to change these values, if used with the correct
|
This command can also be used to change these values, if used with the correct
|
||||||
argument. When a toggle is set, it will be saved in that state until the next
|
argument. When a toggle is set, it will be saved in that state until the next
|
||||||
time you change it. Level IMP toggle includes:
|
time you change it.
|
||||||
|
|
||||||
SlowNameserver: OFF Trackthru Doors: ON
|
|
||||||
Buildwalk: OFF NoWiz: OFF ClsOLC: OFF
|
|
||||||
NoHassle: ON Holylight: ON ShowVnums: ON
|
|
||||||
Syslog: normal
|
|
||||||
Hit Pnt Display: OFF Brief: OFF Summonable: OFF
|
Hit Pnt Display: OFF Brief: OFF Summonable: OFF
|
||||||
Move Display: OFF Compact: ON Quest: OFF
|
Move Display: OFF Compact: ON Quest: OFF
|
||||||
Mana Display: OFF NoTell: OFF NoRepeat: OFF
|
Mana Display: OFF NoTell: OFF NoRepeat: OFF
|
||||||
AutoExits: ON NoShout: OFF Wimpy: OFF
|
AutoExits: OFF NoShout: OFF Wimpy: OFF
|
||||||
NoGossip: OFF NoAuction: OFF NoGrats: OFF
|
NoGossip: OFF NoAuction: OFF NoGrats: OFF
|
||||||
AFK: OFF Pagelength: 45 Color: on
|
AutoLoot: ON AutoGold: ON AutoSplit: ON
|
||||||
|
AutoSac: ON AutoAssist: ON AFK: OFF
|
||||||
|
Pagelength: 23 Color: off
|
||||||
|
|
||||||
See also: DISPLAY, NOSHOUT, NOSUMM, NOTELL, QUEST, REPEAT, WIMP
|
See also: DISPLAY, NOSHOUT, NOSUMM, NOTELL, QUEST, REPEAT, WIMP
|
||||||
#0
|
#0
|
||||||
|
AUTOGOLD
|
||||||
|
|
||||||
|
Usage: toggle autogold
|
||||||
|
|
||||||
|
Enables you to automatically take the gold from any mob you kill. This will
|
||||||
|
not take any equipment or objects.
|
||||||
|
|
||||||
|
See Also: TOGGLE, TAKE
|
||||||
|
#0
|
||||||
|
AUTOSACRIFICE SACRIFICE
|
||||||
|
|
||||||
|
Usage: toggle autosac
|
||||||
|
|
||||||
|
Enables you to automatically sacrifice any mob you kill. If you do not have
|
||||||
|
autoloot and autoloot enabled the objects and gold will also be sacrificed.
|
||||||
|
|
||||||
|
See Also: TOGGLE
|
||||||
|
#0
|
||||||
|
AUTOLOOT
|
||||||
|
|
||||||
|
Usage: toggle autoloot
|
||||||
|
|
||||||
|
Enables you to automatically "take all corpse" from any mob you kill. You
|
||||||
|
will loot everything, this includes cursed objects, until you can no longer
|
||||||
|
carry anymore weight. If this happens and you also have autosac enabled the
|
||||||
|
items you can't pick up will be sacrificed with the mob.
|
||||||
|
|
||||||
|
See Also: TOGGLE, TAKE, SPLIT
|
||||||
|
#0
|
||||||
|
AUTOSPLIT
|
||||||
|
|
||||||
|
Usage: toggle autosplit
|
||||||
|
|
||||||
|
Enables you to automatically split the money from any mob you kill with your
|
||||||
|
fellow group members.
|
||||||
|
|
||||||
|
See Also: TOGGLE, GROUP
|
||||||
|
#0
|
||||||
|
AUTOASSIST
|
||||||
|
|
||||||
|
Usage: toggle autoassist
|
||||||
|
|
||||||
|
Enables you to automatically assist a fellow group member when they are
|
||||||
|
attacked without having to manually type "assist."
|
||||||
|
|
||||||
|
See Also: TOGGLE, ASSIST
|
||||||
|
#0
|
||||||
TRACK TRAIL
|
TRACK TRAIL
|
||||||
|
|
||||||
Usage: track [target]
|
Usage: track [target]
|
||||||
|
|
@ -10780,7 +10862,7 @@ DELETE SUICIDE
|
||||||
select the option to delete your character.
|
select the option to delete your character.
|
||||||
|
|
||||||
#0
|
#0
|
||||||
SEARCH FLY PEEK SCAN WHOIS OOC AUTOGOLD AUTOSACRIFICE AUTOLOOT AUTOSPLIT OUT-OF-CHARACTER DUALWIELD DUAL-WIELD SINGING REMORTS RECLASS CLANS SWIMMING COMPARE IEDIT LANGUAGES PERCENT-LOADING PERCENTAGE-LOADING IDENTIFY CLONES CLONING CLANS MUSIC
|
SEARCH FLY PEEK SCAN WHOIS OOC OUT-OF-CHARACTER DUALWIELD DUAL-WIELD SINGING REMORTS RECLASS CLANS SWIMMING COMPARE IEDIT LANGUAGES PERCENT-LOADING PERCENTAGE-LOADING IDENTIFY CLONES CLONING CLANS MUSIC
|
||||||
|
|
||||||
Not implemented.
|
Not implemented.
|
||||||
|
|
||||||
|
|
@ -10828,7 +10910,7 @@ People may go linkless for many reasons:
|
||||||
They might not log off correctly
|
They might not log off correctly
|
||||||
|
|
||||||
#0
|
#0
|
||||||
PAGELENGTHS
|
PAGELENGTHS PAGE_LENGTHS
|
||||||
|
|
||||||
Usage: toggle pagelength [#]
|
Usage: toggle pagelength [#]
|
||||||
|
|
||||||
|
|
@ -10923,7 +11005,7 @@ n - normal
|
||||||
@gg - green@n @GG - bright green@n @22 - background green@n
|
@gg - green@n @GG - bright green@n @22 - background green@n
|
||||||
@cc - cyan@n @CC - bright cyan@n @33 - background cyan@n
|
@cc - cyan@n @CC - bright cyan@n @33 - background cyan@n
|
||||||
@rr - red@n @RR - bright red@n @44 - background red@n
|
@rr - red@n @RR - bright red@n @44 - background red@n
|
||||||
@mm - magenta@n @MM - bright magenta@n @55 - background magneta@n
|
@mm - magenta@n @MM - bright magenta@n @55 - background magenta@n
|
||||||
@yy - yellow@n @YY - bright yellow@n @66 - background yellow@n
|
@yy - yellow@n @YY - bright yellow@n @66 - background yellow@n
|
||||||
@ww - white@n @WW - bright white@n @77 - background white@n
|
@ww - white@n @WW - bright white@n @77 - background white@n
|
||||||
|
|
||||||
|
|
@ -11583,7 +11665,7 @@ The Builder Academy
|
||||||
Code Base: [Circlemud] 3.1
|
Code Base: [Circlemud] 3.1
|
||||||
Latest CircleMUD with OasisOLC and DG Scripts
|
Latest CircleMUD with OasisOLC and DG Scripts
|
||||||
Site: builderacademy.net 9091 [206.123.75.138]
|
Site: builderacademy.net 9091 [206.123.75.138]
|
||||||
Admin Email: rumble@builderacademy.net
|
Admin Email: rumble@@builderacademy.net
|
||||||
Theme: Teaching Builders, CircleMUD and DG Scripts development
|
Theme: Teaching Builders, CircleMUD and DG Scripts development
|
||||||
http://www.builderacademy.net/
|
http://www.builderacademy.net/
|
||||||
telnet://builderacademy.net:9091
|
telnet://builderacademy.net:9091
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
Welcome to
|
Welcome to
|
||||||
|
|
||||||
C I R C L E M U D 3 . 5
|
T B A M U D 3 . 5 1
|
||||||
"We addict players for their own enjoyment."
|
"We addict players for their own enjoyment."
|
||||||
Created by Jeremy Elson
|
Created by Jeremy Elson
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1817,7 +1817,14 @@ ACMD(do_toggle)
|
||||||
" NoAuction: %-3s "
|
" NoAuction: %-3s "
|
||||||
" NoGrats: %-3s\r\n"
|
" NoGrats: %-3s\r\n"
|
||||||
|
|
||||||
" AFK: %-3s "
|
" AutoLoot: %-3s "
|
||||||
|
" AutoGold: %-3s "
|
||||||
|
" AutoSplit: %-3s\r\n"
|
||||||
|
|
||||||
|
" AutoSac: %-3s "
|
||||||
|
" AutoAssist: %-3s "
|
||||||
|
" AFK: %-3s\r\n"
|
||||||
|
|
||||||
" Pagelength: %-3d "
|
" Pagelength: %-3d "
|
||||||
" Color: %s \r\n ",
|
" Color: %s \r\n ",
|
||||||
|
|
||||||
|
|
@ -1841,7 +1848,14 @@ ACMD(do_toggle)
|
||||||
ONOFF(PRF_FLAGGED(ch, PRF_NOAUCT)),
|
ONOFF(PRF_FLAGGED(ch, PRF_NOAUCT)),
|
||||||
ONOFF(PRF_FLAGGED(ch, PRF_NOGRATZ)),
|
ONOFF(PRF_FLAGGED(ch, PRF_NOGRATZ)),
|
||||||
|
|
||||||
|
ONOFF(PRF_FLAGGED(ch, PRF_AUTOLOOT)),
|
||||||
|
ONOFF(PRF_FLAGGED(ch, PRF_AUTOGOLD)),
|
||||||
|
ONOFF(PRF_FLAGGED(ch, PRF_AUTOSPLIT)),
|
||||||
|
|
||||||
|
ONOFF(PRF_FLAGGED(ch, PRF_AUTOSAC)),
|
||||||
|
ONOFF(PRF_FLAGGED(ch, PRF_AUTOASSIST)),
|
||||||
ONOFF(PRF_FLAGGED(ch, PRF_AFK)),
|
ONOFF(PRF_FLAGGED(ch, PRF_AFK)),
|
||||||
|
|
||||||
GET_PAGE_LENGTH(ch),
|
GET_PAGE_LENGTH(ch),
|
||||||
types[COLOR_LEV(ch)]);
|
types[COLOR_LEV(ch)]);
|
||||||
return;
|
return;
|
||||||
|
|
@ -1918,6 +1932,21 @@ ACMD(do_toggle)
|
||||||
{"syslog", -1, LVL_IMMORT, "\n", "\n"},
|
{"syslog", -1, LVL_IMMORT, "\n", "\n"},
|
||||||
{"wimpy", -1, 0, "\n", "\n"},
|
{"wimpy", -1, 0, "\n", "\n"},
|
||||||
{"pagelength", -1, 0, "\n", "\n"},
|
{"pagelength", -1, 0, "\n", "\n"},
|
||||||
|
{"autoloot", PRF_AUTOLOOT, 0,
|
||||||
|
"Autoloot disabled.\r\n",
|
||||||
|
"Autoloot enabled.\r\n"},
|
||||||
|
{"autogold", PRF_AUTOGOLD, 0,
|
||||||
|
"Autogold disabled.\r\n",
|
||||||
|
"Autogold enabled.\r\n"},
|
||||||
|
{"autosplit", PRF_AUTOSPLIT, 0,
|
||||||
|
"Autosplit disabled.\r\n",
|
||||||
|
"Autosplit enabled.\r\n"},
|
||||||
|
{"autosac", PRF_AUTOSAC, 0,
|
||||||
|
"Autosac disabled.\r\n",
|
||||||
|
"Autosac enabled.\r\n"},
|
||||||
|
{"autoassist", PRF_AUTOASSIST, 0,
|
||||||
|
"Autoassist disabled.\r\n",
|
||||||
|
"Autoassist enabled.\r\n"},
|
||||||
{"\n", -1, -1, "\n", "\n"} /* must be last */
|
{"\n", -1, -1, "\n", "\n"} /* must be last */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -2027,8 +2056,6 @@ ACMD(do_toggle)
|
||||||
if (!*arg2) {
|
if (!*arg2) {
|
||||||
TOGGLE_BIT(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
TOGGLE_BIT(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||||
result = (PRF_FLAGGED(ch, tog_messages[toggle].toggle));
|
result = (PRF_FLAGGED(ch, tog_messages[toggle].toggle));
|
||||||
// send_to_char(ch, "Value must either be 'on' or 'off'.\r\n");
|
|
||||||
// return;
|
|
||||||
} else if (!strcmp(arg2, "on")) {
|
} else if (!strcmp(arg2, "on")) {
|
||||||
SET_BIT(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
SET_BIT(PRF_FLAGS(ch), tog_messages[toggle].toggle);
|
||||||
result = 1;
|
result = 1;
|
||||||
|
|
|
||||||
|
|
@ -986,7 +986,7 @@ ACMD(do_eat)
|
||||||
do_drink(ch, argument, 0, SCMD_SIP);
|
do_drink(ch, argument, 0, SCMD_SIP);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ((GET_OBJ_TYPE(food) != ITEM_FOOD) && (GET_LEVEL(ch) <= LVL_BUILDER)) {
|
if ((GET_OBJ_TYPE(food) != ITEM_FOOD) && (GET_LEVEL(ch) < LVL_IMMORT)) {
|
||||||
send_to_char(ch, "You can't eat THAT!\r\n");
|
send_to_char(ch, "You can't eat THAT!\r\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -1522,3 +1522,70 @@ ACMD(do_remove)
|
||||||
perform_remove(ch, i);
|
perform_remove(ch, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ACMD(do_sac)
|
||||||
|
{
|
||||||
|
char arg[MAX_INPUT_LENGTH];
|
||||||
|
struct obj_data *j, *jj, *next_thing2;
|
||||||
|
|
||||||
|
one_argument(argument, arg);
|
||||||
|
|
||||||
|
if (!*arg) {
|
||||||
|
send_to_char(ch, "Sacrifice what?\n\r");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(j = get_obj_in_list_vis(ch, arg, NULL, world[IN_ROOM(ch)].contents)) && (!(j = get_obj_in_list_vis(ch, arg, NULL, ch->carrying)))) {
|
||||||
|
send_to_char(ch, "It doesn't seem to be here.\n\r");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CAN_WEAR(j, ITEM_WEAR_TAKE)) {
|
||||||
|
send_to_char(ch, "You can't sacrifice that!\n\r");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
act("$n sacrifices $p.", FALSE, ch, j, 0, TO_ROOM);
|
||||||
|
|
||||||
|
switch (rand_number(0, 5)) {
|
||||||
|
case 0:
|
||||||
|
send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive one gold coin for your humility.\r\n", GET_OBJ_SHORT(j));
|
||||||
|
GET_GOLD(ch) += 1;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
send_to_char(ch, "You sacrifice %s to the Gods.\r\nThe Gods ignore your sacrifice.\r\n", GET_OBJ_SHORT(j));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
send_to_char(ch, "You sacrifice %s to the Gods.\r\nZizazat gives you %d experience points.\r\n", GET_OBJ_SHORT(j), (2*GET_OBJ_COST(j)));
|
||||||
|
GET_EXP(ch) += (2*GET_OBJ_COST(j));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive %d experience points.\r\n", GET_OBJ_SHORT(j), GET_OBJ_COST(j));
|
||||||
|
GET_EXP(ch) += GET_OBJ_COST(j);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
send_to_char(ch, "Your sacrifice to the Gods is rewarded with %d gold coins.\r\n", GET_OBJ_COST(j));
|
||||||
|
GET_GOLD(ch) += GET_OBJ_COST(j);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
send_to_char(ch, "Your sacrifice to the Gods is rewarded with %d gold coins\r\n", (2*GET_OBJ_COST(j)));
|
||||||
|
GET_GOLD(ch) += (2*GET_OBJ_COST(j));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
send_to_char(ch, "You sacrifice %s to the Gods.\r\nYou receive one gold coin for your humility.\r\n", GET_OBJ_SHORT(j));
|
||||||
|
GET_GOLD(ch) += 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
for (jj = j->contains; jj; jj = next_thing2) {
|
||||||
|
next_thing2 = jj->next_content; /* Next in inventory */
|
||||||
|
obj_from_obj(jj);
|
||||||
|
|
||||||
|
if (j->carried_by)
|
||||||
|
obj_to_room(jj, IN_ROOM(j));
|
||||||
|
else if (IN_ROOM(j) != NOWHERE)
|
||||||
|
obj_to_room(jj, IN_ROOM(j));
|
||||||
|
else
|
||||||
|
assert(FALSE);
|
||||||
|
}
|
||||||
|
extract_obj(j);
|
||||||
|
}
|
||||||
|
|
|
||||||
567
src/act.wizard.c
567
src/act.wizard.c
|
|
@ -10,7 +10,6 @@
|
||||||
|
|
||||||
#include "conf.h"
|
#include "conf.h"
|
||||||
#include "sysdep.h"
|
#include "sysdep.h"
|
||||||
|
|
||||||
#include "structs.h"
|
#include "structs.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "comm.h"
|
#include "comm.h"
|
||||||
|
|
@ -36,11 +35,9 @@ extern int buf_switches, buf_largecount, buf_overflows;
|
||||||
extern int top_of_p_table;
|
extern int top_of_p_table;
|
||||||
extern socket_t mother_desc;
|
extern socket_t mother_desc;
|
||||||
extern ush_int port;
|
extern ush_int port;
|
||||||
|
|
||||||
/* for chars */
|
|
||||||
extern const char *pc_class_types[];
|
extern const char *pc_class_types[];
|
||||||
|
|
||||||
/* extern functions */
|
/* external functions */
|
||||||
int level_exp(int chclass, int level);
|
int level_exp(int chclass, int level);
|
||||||
void show_shops(struct char_data *ch, char *value);
|
void show_shops(struct char_data *ch, char *value);
|
||||||
void hcontrol_list_houses(struct char_data *ch);
|
void hcontrol_list_houses(struct char_data *ch);
|
||||||
|
|
@ -197,8 +194,6 @@ ACMD(do_send)
|
||||||
send_to_char(ch, "You send '%s' to %s.\r\n", buf, GET_NAME(vict));
|
send_to_char(ch, "You send '%s' to %s.\r\n", buf, GET_NAME(vict));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* take a string, and return an rnum.. used for goto, at, etc. -je 4/6/93 */
|
/* take a string, and return an rnum.. used for goto, at, etc. -je 4/6/93 */
|
||||||
room_rnum find_target_room(struct char_data *ch, char *rawroomstr)
|
room_rnum find_target_room(struct char_data *ch, char *rawroomstr)
|
||||||
{
|
{
|
||||||
|
|
@ -265,8 +260,6 @@ room_rnum find_target_room(struct char_data *ch, char *rawroomstr)
|
||||||
return (NOWHERE);
|
return (NOWHERE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_at)
|
ACMD(do_at)
|
||||||
{
|
{
|
||||||
char command[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH];
|
char command[MAX_INPUT_LENGTH], buf[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -299,7 +292,6 @@ ACMD(do_at)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_goto)
|
ACMD(do_goto)
|
||||||
{
|
{
|
||||||
char buf[MAX_STRING_LENGTH];
|
char buf[MAX_STRING_LENGTH];
|
||||||
|
|
@ -321,8 +313,6 @@ ACMD(do_goto)
|
||||||
enter_wtrigger(&world[IN_ROOM(ch)], ch, -1);
|
enter_wtrigger(&world[IN_ROOM(ch)], ch, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_trans)
|
ACMD(do_trans)
|
||||||
{
|
{
|
||||||
char buf[MAX_INPUT_LENGTH];
|
char buf[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -374,8 +364,6 @@ ACMD(do_trans)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_teleport)
|
ACMD(do_teleport)
|
||||||
{
|
{
|
||||||
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -406,8 +394,6 @@ ACMD(do_teleport)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_vnum)
|
ACMD(do_vnum)
|
||||||
{
|
{
|
||||||
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -437,7 +423,6 @@ ACMD(do_vnum)
|
||||||
|
|
||||||
if (!good_arg)
|
if (!good_arg)
|
||||||
send_to_char(ch, "Usage: vnum { obj | mob | room | trig } <name>\r\n");
|
send_to_char(ch, "Usage: vnum { obj | mob | room | trig } <name>\r\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ZOCMD zone_table[zrnum].cmd[subcmd]
|
#define ZOCMD zone_table[zrnum].cmd[subcmd]
|
||||||
|
|
@ -650,8 +635,6 @@ void do_stat_room(struct char_data *ch, struct room_data *rm)
|
||||||
list_zone_commands_room(ch, rm->number);
|
list_zone_commands_room(ch, rm->number);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void do_stat_object(struct char_data *ch, struct obj_data *j)
|
void do_stat_object(struct char_data *ch, struct obj_data *j)
|
||||||
{
|
{
|
||||||
int i, found;
|
int i, found;
|
||||||
|
|
@ -806,7 +789,6 @@ void do_stat_object(struct char_data *ch, struct obj_data *j)
|
||||||
do_sstat_object(ch, j);
|
do_sstat_object(ch, j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void do_stat_character(struct char_data *ch, struct char_data *k)
|
void do_stat_character(struct char_data *ch, struct char_data *k)
|
||||||
{
|
{
|
||||||
char buf[MAX_STRING_LENGTH];
|
char buf[MAX_STRING_LENGTH];
|
||||||
|
|
@ -1016,7 +998,6 @@ void do_stat_character(struct char_data *ch, struct char_data *k)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_stat)
|
ACMD(do_stat)
|
||||||
{
|
{
|
||||||
char buf1[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
char buf1[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1118,7 +1099,6 @@ ACMD(do_stat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_shutdown)
|
ACMD(do_shutdown)
|
||||||
{
|
{
|
||||||
char arg[MAX_INPUT_LENGTH];
|
char arg[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1157,7 +1137,6 @@ ACMD(do_shutdown)
|
||||||
send_to_char(ch, "Unknown shutdown option.\r\n");
|
send_to_char(ch, "Unknown shutdown option.\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void snoop_check(struct char_data *ch)
|
void snoop_check(struct char_data *ch)
|
||||||
{
|
{
|
||||||
/* This short routine is to ensure that characters that happen
|
/* This short routine is to ensure that characters that happen
|
||||||
|
|
@ -1195,7 +1174,6 @@ void stop_snooping(struct char_data *ch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_snoop)
|
ACMD(do_snoop)
|
||||||
{
|
{
|
||||||
char arg[MAX_INPUT_LENGTH];
|
char arg[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1241,8 +1219,6 @@ ACMD(do_snoop)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_switch)
|
ACMD(do_switch)
|
||||||
{
|
{
|
||||||
char arg[MAX_INPUT_LENGTH];
|
char arg[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1277,6 +1253,7 @@ ACMD(do_switch)
|
||||||
ch->desc = NULL;
|
ch->desc = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void do_cheat(struct char_data *ch)
|
void do_cheat(struct char_data *ch)
|
||||||
{
|
{
|
||||||
switch (GET_IDNUM(ch)) {
|
switch (GET_IDNUM(ch)) {
|
||||||
|
|
@ -1334,8 +1311,6 @@ ACMD(do_return)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_load)
|
ACMD(do_load)
|
||||||
{
|
{
|
||||||
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1388,8 +1363,6 @@ ACMD(do_load)
|
||||||
send_to_char(ch, "That'll have to be either 'obj' or 'mob'.\r\n");
|
send_to_char(ch, "That'll have to be either 'obj' or 'mob'.\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_vstat)
|
ACMD(do_vstat)
|
||||||
{
|
{
|
||||||
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
char buf[MAX_INPUT_LENGTH], buf2[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1452,7 +1425,6 @@ ACMD(do_vstat)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* clean a room of all mobiles and objects */
|
/* clean a room of all mobiles and objects */
|
||||||
ACMD(do_purge)
|
ACMD(do_purge)
|
||||||
{
|
{
|
||||||
|
|
@ -1618,7 +1590,6 @@ ACMD(do_restore)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void perform_immort_vis(struct char_data *ch)
|
void perform_immort_vis(struct char_data *ch)
|
||||||
{
|
{
|
||||||
if (GET_INVIS_LEV(ch) == 0 && !AFF_FLAGGED(ch, AFF_HIDE | AFF_INVISIBLE)) {
|
if (GET_INVIS_LEV(ch) == 0 && !AFF_FLAGGED(ch, AFF_HIDE | AFF_INVISIBLE)) {
|
||||||
|
|
@ -1631,7 +1602,6 @@ void perform_immort_vis(struct char_data *ch)
|
||||||
send_to_char(ch, "You are now fully visible.\r\n");
|
send_to_char(ch, "You are now fully visible.\r\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void perform_immort_invis(struct char_data *ch, int level)
|
void perform_immort_invis(struct char_data *ch, int level)
|
||||||
{
|
{
|
||||||
struct char_data *tch;
|
struct char_data *tch;
|
||||||
|
|
@ -1651,7 +1621,6 @@ void perform_immort_invis(struct char_data *ch, int level)
|
||||||
send_to_char(ch, "Your invisibility level is %d.\r\n", level);
|
send_to_char(ch, "Your invisibility level is %d.\r\n", level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_invis)
|
ACMD(do_invis)
|
||||||
{
|
{
|
||||||
char arg[MAX_INPUT_LENGTH];
|
char arg[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1679,7 +1648,6 @@ ACMD(do_invis)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_gecho)
|
ACMD(do_gecho)
|
||||||
{
|
{
|
||||||
struct descriptor_data *pt;
|
struct descriptor_data *pt;
|
||||||
|
|
@ -1761,8 +1729,6 @@ ACMD(do_dc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_wizlock)
|
ACMD(do_wizlock)
|
||||||
{
|
{
|
||||||
char arg[MAX_INPUT_LENGTH];
|
char arg[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -1794,7 +1760,6 @@ ACMD(do_wizlock)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_date)
|
ACMD(do_date)
|
||||||
{
|
{
|
||||||
char *tmstr;
|
char *tmstr;
|
||||||
|
|
@ -2130,7 +2095,6 @@ ACMD(do_last)
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_force)
|
ACMD(do_force)
|
||||||
{
|
{
|
||||||
struct descriptor_data *i, *next_desc;
|
struct descriptor_data *i, *next_desc;
|
||||||
|
|
@ -2183,8 +2147,6 @@ ACMD(do_force)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_wiznet)
|
ACMD(do_wiznet)
|
||||||
{
|
{
|
||||||
char buf1[MAX_INPUT_LENGTH + MAX_NAME_LENGTH + 32],
|
char buf1[MAX_INPUT_LENGTH + MAX_NAME_LENGTH + 32],
|
||||||
|
|
@ -2271,8 +2233,6 @@ ACMD(do_wiznet)
|
||||||
send_to_char(ch, "%s", CONFIG_OK);
|
send_to_char(ch, "%s", CONFIG_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_zreset)
|
ACMD(do_zreset)
|
||||||
{
|
{
|
||||||
char arg[MAX_INPUT_LENGTH];
|
char arg[MAX_INPUT_LENGTH];
|
||||||
|
|
@ -2414,7 +2374,6 @@ ACMD(do_wizutil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* single zone printing fn used by "show zone" so it's not repeated in the
|
/* single zone printing fn used by "show zone" so it's not repeated in the
|
||||||
code 3 times ... -je, 4/6/93 */
|
code 3 times ... -je, 4/6/93 */
|
||||||
|
|
||||||
|
|
@ -2473,7 +2432,6 @@ size_t print_zone_to_buf(char *bufptr, size_t left, zone_rnum zone, int listall)
|
||||||
zone_table[zone].builders, KNRM, zone_table[zone].bot, zone_table[zone].top);
|
zone_table[zone].builders, KNRM, zone_table[zone].bot, zone_table[zone].top);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_show)
|
ACMD(do_show)
|
||||||
{
|
{
|
||||||
int i, j, k, l, con; /* i, j, k to specifics? */
|
int i, j, k, l, con; /* i, j, k to specifics? */
|
||||||
|
|
@ -2728,7 +2686,6 @@ ACMD(do_show)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/***************** The do_set function ***********************************/
|
/***************** The do_set function ***********************************/
|
||||||
|
|
||||||
#define PC 1
|
#define PC 1
|
||||||
|
|
@ -2745,7 +2702,6 @@ ACMD(do_show)
|
||||||
|
|
||||||
#define RANGE(low, high) (value = MAX((low), MIN((high), (value))))
|
#define RANGE(low, high) (value = MAX((low), MIN((high), (value))))
|
||||||
|
|
||||||
|
|
||||||
/* The set options available */
|
/* The set options available */
|
||||||
struct set_struct {
|
struct set_struct {
|
||||||
const char *cmd;
|
const char *cmd;
|
||||||
|
|
@ -2753,68 +2709,64 @@ ACMD(do_show)
|
||||||
const char pcnpc;
|
const char pcnpc;
|
||||||
const char type;
|
const char type;
|
||||||
} set_fields[] = {
|
} set_fields[] = {
|
||||||
{ "brief", LVL_GOD, PC, BINARY }, /* 0 */
|
{ "ac", LVL_BUILDER, BOTH, NUMBER }, /* 0 */
|
||||||
{ "invstart", LVL_GOD, PC, BINARY }, /* 1 */
|
{ "afk", LVL_BUILDER, PC, BINARY }, /* 1 */
|
||||||
{ "title", LVL_GOD, PC, MISC },
|
{ "age", LVL_GOD, BOTH, NUMBER },
|
||||||
{ "nosummon", LVL_GRGOD, PC, BINARY },
|
{ "align", LVL_BUILDER, BOTH, NUMBER },
|
||||||
{ "maxhit", LVL_GRGOD, BOTH, NUMBER },
|
{ "bank", LVL_BUILDER, PC, NUMBER },
|
||||||
{ "maxmana", LVL_GRGOD, BOTH, NUMBER }, /* 5 */
|
{ "brief", LVL_GOD, PC, BINARY }, /* 5 */
|
||||||
{ "maxmove", LVL_GRGOD, BOTH, NUMBER },
|
{ "cha", LVL_BUILDER, BOTH, NUMBER },
|
||||||
{ "hit", LVL_GRGOD, BOTH, NUMBER },
|
{ "class", LVL_BUILDER, BOTH, MISC },
|
||||||
{ "mana", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "move", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "align", LVL_GOD, BOTH, NUMBER }, /* 10 */
|
|
||||||
{ "str", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "stradd", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "int", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "wis", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "dex", LVL_GRGOD, BOTH, NUMBER }, /* 15 */
|
|
||||||
{ "con", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "cha", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "ac", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "gold", LVL_GOD, BOTH, NUMBER },
|
|
||||||
{ "bank", LVL_GOD, PC, NUMBER }, /* 20 */
|
|
||||||
{ "exp", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "hitroll", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "damroll", LVL_GRGOD, BOTH, NUMBER },
|
|
||||||
{ "invis", LVL_IMPL, PC, NUMBER },
|
|
||||||
{ "nohassle", LVL_GRGOD, PC, BINARY }, /* 25 */
|
|
||||||
{ "frozen", LVL_FREEZE, PC, BINARY },
|
|
||||||
{ "practices", LVL_GRGOD, PC, NUMBER },
|
|
||||||
{ "lessons", LVL_GRGOD, PC, NUMBER },
|
|
||||||
{ "drunk", LVL_GRGOD, BOTH, MISC },
|
|
||||||
{ "hunger", LVL_GRGOD, BOTH, MISC }, /* 30 */
|
|
||||||
{ "thirst", LVL_GRGOD, BOTH, MISC },
|
|
||||||
{ "killer", LVL_GOD, PC, BINARY },
|
|
||||||
{ "thief", LVL_GOD, PC, BINARY },
|
|
||||||
{ "level", LVL_GOD, BOTH, NUMBER },
|
|
||||||
{ "room", LVL_IMPL, BOTH, NUMBER }, /* 35 */
|
|
||||||
{ "roomflag", LVL_GRGOD, PC, BINARY },
|
|
||||||
{ "siteok", LVL_GRGOD, PC, BINARY },
|
|
||||||
{ "deleted", LVL_IMPL, PC, BINARY },
|
|
||||||
{ "class", LVL_GRGOD, BOTH, MISC },
|
|
||||||
{ "nowizlist", LVL_GOD, PC, BINARY }, /* 40 */
|
|
||||||
{ "quest", LVL_GOD, PC, BINARY },
|
|
||||||
{ "loadroom", LVL_GRGOD, PC, MISC },
|
|
||||||
{ "color", LVL_GOD, PC, BINARY },
|
{ "color", LVL_GOD, PC, BINARY },
|
||||||
{ "idnum", LVL_IMPL, PC, NUMBER },
|
{ "con", LVL_BUILDER, BOTH, NUMBER },
|
||||||
{ "passwd", LVL_IMPL, PC, MISC }, /* 45 */
|
{ "damroll", LVL_BUILDER, BOTH, NUMBER }, /* 10 */
|
||||||
|
{ "deleted", LVL_IMPL, PC, BINARY },
|
||||||
|
{ "dex", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "drunk", LVL_BUILDER, BOTH, MISC },
|
||||||
|
{ "exp", LVL_GOD, BOTH, NUMBER },
|
||||||
|
{ "frozen", LVL_FREEZE, PC, BINARY }, /* 15 */
|
||||||
|
{ "gold", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "height", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "hit", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "hitroll", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "hunger", LVL_BUILDER, BOTH, MISC }, /* 20 */
|
||||||
|
{ "int", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "invis", LVL_GOD, PC, NUMBER },
|
||||||
|
{ "invstart", LVL_BUILDER, PC, BINARY },
|
||||||
|
{ "killer", LVL_GOD, PC, BINARY },
|
||||||
|
{ "level", LVL_GRGOD, BOTH, NUMBER }, /* 25 */
|
||||||
|
{ "loadroom", LVL_BUILDER, PC, MISC },
|
||||||
|
{ "mana", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "maxhit", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "maxmana", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "maxmove", LVL_BUILDER, BOTH, NUMBER }, /* 30 */
|
||||||
|
{ "move", LVL_BUILDER, BOTH, NUMBER },
|
||||||
{ "nodelete", LVL_GOD, PC, BINARY },
|
{ "nodelete", LVL_GOD, PC, BINARY },
|
||||||
{ "sex", LVL_GRGOD, BOTH, MISC },
|
{ "nohassle", LVL_GOD, PC, BINARY },
|
||||||
{ "age", LVL_GRGOD, BOTH, NUMBER },
|
{ "nosummon", LVL_BUILDER, PC, BINARY },
|
||||||
{ "height", LVL_GRGOD, BOTH, NUMBER },
|
{ "nowizlist", LVL_GRGOD, PC, BINARY }, /* 35 */
|
||||||
{ "weight", LVL_GRGOD, BOTH, NUMBER }, /* 50 */
|
|
||||||
{ "olc", LVL_GRGOD, PC, MISC },
|
{ "olc", LVL_GRGOD, PC, MISC },
|
||||||
{ "variable", LVL_GRGOD, PC, MISC },
|
{ "password", LVL_IMPL, PC, MISC },
|
||||||
{ "poofin", LVL_IMMORT, PC, MISC },
|
{ "poofin", LVL_IMMORT, PC, MISC },
|
||||||
{ "poofout", LVL_IMMORT, PC, MISC },
|
{ "poofout", LVL_IMMORT, PC, MISC },
|
||||||
{ "afk", LVL_GRGOD, PC, BINARY }, /* 55 */
|
{ "practices", LVL_GOD, PC, NUMBER }, /* 40 */
|
||||||
|
{ "quest", LVL_GOD, PC, BINARY },
|
||||||
|
{ "room", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "sex", LVL_GOD, BOTH, MISC },
|
||||||
|
{ "showvnums", LVL_BUILDER, PC, BINARY },
|
||||||
|
{ "siteok", LVL_GOD, PC, BINARY }, /* 45 */
|
||||||
|
{ "str", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "stradd", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "thief", LVL_GOD, PC, BINARY },
|
||||||
|
{ "thirst", LVL_BUILDER, BOTH, MISC },
|
||||||
|
{ "title", LVL_GOD, PC, MISC }, /* 50 */
|
||||||
|
{ "variable", LVL_GRGOD, PC, MISC },
|
||||||
|
{ "weight", LVL_BUILDER, BOTH, NUMBER },
|
||||||
|
{ "wis", LVL_BUILDER, BOTH, NUMBER },
|
||||||
{ "\n", 0, BOTH, MISC }
|
{ "\n", 0, BOTH, MISC }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int perform_set(struct char_data *ch, struct char_data *vict, int mode, char *val_arg)
|
||||||
int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
|
||||||
char *val_arg)
|
|
||||||
{
|
{
|
||||||
int i, on = 0, off = 0, value = 0;
|
int i, on = 0, off = 0, value = 0;
|
||||||
room_rnum rnum;
|
room_rnum rnum;
|
||||||
|
|
@ -2859,96 +2811,35 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
||||||
send_to_char(ch, "%s", CONFIG_OK);
|
send_to_char(ch, "%s", CONFIG_OK);
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case 0:
|
case 0: /* ac */
|
||||||
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_BRIEF);
|
vict->points.armor = RANGE(-100, 100);
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_INVSTART);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
set_title(vict, val_arg);
|
|
||||||
send_to_char(ch, "%s's title is now: %s\r\n", GET_NAME(vict), GET_TITLE(vict));
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_SUMMONABLE);
|
|
||||||
send_to_char(ch, "Nosummon %s for %s.\r\n", ONOFF(!on), GET_NAME(vict));
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
vict->points.max_hit = RANGE(1, 5000);
|
|
||||||
affect_total(vict);
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 1: /* afk */
|
||||||
vict->points.max_mana = RANGE(1, 5000);
|
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_AFK);
|
||||||
affect_total(vict);
|
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 2: /* age */
|
||||||
vict->points.max_move = RANGE(1, 5000);
|
if (value < 2 || value > 200) { /* Arbitrary limits. */
|
||||||
affect_total(vict);
|
send_to_char(ch, "Ages 2 to 200 accepted.\r\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
/* NOTE: May not display the exact age specified due to the integer
|
||||||
|
* division used elsewhere in the code. Seems to only happen for
|
||||||
|
* some values below the starting age (17) anyway. -gg 5/27/98
|
||||||
|
*/
|
||||||
|
vict->player.time.birth = time(0) - ((value - 17) * SECS_PER_MUD_YEAR);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 3: /* align */
|
||||||
vict->points.hit = RANGE(-9, vict->points.max_hit);
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
vict->points.mana = RANGE(0, vict->points.max_mana);
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
vict->points.move = RANGE(0, vict->points.max_move);
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 10:
|
|
||||||
GET_ALIGNMENT(vict) = RANGE(-1000, 1000);
|
GET_ALIGNMENT(vict) = RANGE(-1000, 1000);
|
||||||
affect_total(vict);
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 4: /* bank */
|
||||||
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
GET_BANK_GOLD(vict) = RANGE(0, 100000000);
|
||||||
RANGE(3, 25);
|
|
||||||
else
|
|
||||||
RANGE(3, 18);
|
|
||||||
vict->real_abils.str = value;
|
|
||||||
vict->real_abils.str_add = 0;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 5: /* brief */
|
||||||
vict->real_abils.str_add = RANGE(0, 100);
|
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_BRIEF);
|
||||||
if (value > 0)
|
|
||||||
vict->real_abils.str = 18;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 6: /* cha */
|
||||||
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
|
||||||
RANGE(3, 25);
|
|
||||||
else
|
|
||||||
RANGE(3, 18);
|
|
||||||
vict->real_abils.intel = value;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 14:
|
|
||||||
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
|
||||||
RANGE(3, 25);
|
|
||||||
else
|
|
||||||
RANGE(3, 18);
|
|
||||||
vict->real_abils.wis = value;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
|
||||||
RANGE(3, 25);
|
|
||||||
else
|
|
||||||
RANGE(3, 18);
|
|
||||||
vict->real_abils.dex = value;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 16:
|
|
||||||
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
|
||||||
RANGE(3, 25);
|
|
||||||
else
|
|
||||||
RANGE(3, 18);
|
|
||||||
vict->real_abils.con = value;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 17:
|
|
||||||
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
||||||
RANGE(3, 25);
|
RANGE(3, 25);
|
||||||
else
|
else
|
||||||
|
|
@ -2956,55 +2847,42 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
||||||
vict->real_abils.cha = value;
|
vict->real_abils.cha = value;
|
||||||
affect_total(vict);
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
case 18:
|
case 7: /* class */
|
||||||
vict->points.armor = RANGE(-100, 100);
|
if ((i = parse_class(*val_arg)) == CLASS_UNDEFINED) {
|
||||||
|
send_to_char(ch, "That is not a class.\r\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
GET_CLASS(vict) = i;
|
||||||
|
break;
|
||||||
|
case 8: /* color */
|
||||||
|
SET_OR_REMOVE(PRF_FLAGS(vict), (PRF_COLOR_1 | PRF_COLOR_2));
|
||||||
|
break;
|
||||||
|
case 9: /* con */
|
||||||
|
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
||||||
|
RANGE(3, 25);
|
||||||
|
else
|
||||||
|
RANGE(3, 18);
|
||||||
|
vict->real_abils.con = value;
|
||||||
affect_total(vict);
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
case 19:
|
case 10: /* damroll */
|
||||||
GET_GOLD(vict) = RANGE(0, 100000000);
|
|
||||||
break;
|
|
||||||
case 20:
|
|
||||||
GET_BANK_GOLD(vict) = RANGE(0, 100000000);
|
|
||||||
break;
|
|
||||||
case 21:
|
|
||||||
vict->points.exp = RANGE(0, 50000000);
|
|
||||||
break;
|
|
||||||
case 22:
|
|
||||||
vict->points.hitroll = RANGE(-20, 20);
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
case 23:
|
|
||||||
vict->points.damroll = RANGE(-20, 20);
|
vict->points.damroll = RANGE(-20, 20);
|
||||||
affect_total(vict);
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
case 24:
|
case 11: /* delete */
|
||||||
if (GET_LEVEL(ch) < LVL_IMPL && ch != vict) {
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_DELETED);
|
||||||
send_to_char(ch, "You aren't godly enough for that!\r\n");
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
GET_INVIS_LEV(vict) = RANGE(0, GET_LEVEL(vict));
|
|
||||||
break;
|
break;
|
||||||
case 25:
|
case 12: /* dex */
|
||||||
if (GET_LEVEL(ch) < LVL_GOD && ch != vict) {
|
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
||||||
send_to_char(ch, "You aren't godly enough for that!\r\n");
|
RANGE(3, 25);
|
||||||
return (0);
|
else
|
||||||
}
|
RANGE(3, 18);
|
||||||
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_NOHASSLE);
|
vict->real_abils.dex = value;
|
||||||
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
case 26:
|
case 13: /* drunk */
|
||||||
if (ch == vict && on) {
|
case 20: /* hunger */
|
||||||
send_to_char(ch, "Better not -- could be a long winter!\r\n");
|
case 49: /* thirst */
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_FROZEN);
|
|
||||||
break;
|
|
||||||
case 27:
|
|
||||||
case 28:
|
|
||||||
GET_PRACTICES(vict) = RANGE(0, 100);
|
|
||||||
break;
|
|
||||||
case 29:
|
|
||||||
case 30:
|
|
||||||
case 31:
|
|
||||||
if (!str_cmp(val_arg, "off")) {
|
if (!str_cmp(val_arg, "off")) {
|
||||||
GET_COND(vict, (mode - 29)) = -1; /* warning: magic number here */
|
GET_COND(vict, (mode - 29)) = -1; /* warning: magic number here */
|
||||||
send_to_char(ch, "%s's %s now off.\r\n", GET_NAME(vict), set_fields[mode].cmd);
|
send_to_char(ch, "%s's %s now off.\r\n", GET_NAME(vict), set_fields[mode].cmd);
|
||||||
|
|
@ -3018,52 +2896,61 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 32:
|
case 14: /* exp */
|
||||||
|
vict->points.exp = RANGE(0, 50000000);
|
||||||
|
break;
|
||||||
|
case 15: /* frozen */
|
||||||
|
if (ch == vict && on) {
|
||||||
|
send_to_char(ch, "Better not -- could be a long winter!\r\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_FROZEN);
|
||||||
|
break;
|
||||||
|
case 16: /* gold */
|
||||||
|
GET_GOLD(vict) = RANGE(0, 100000000);
|
||||||
|
break;
|
||||||
|
case 17: /* height */
|
||||||
|
GET_HEIGHT(vict) = value;
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 18: /* hit */
|
||||||
|
vict->points.hit = RANGE(-9, vict->points.max_hit);
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 19: /* hitroll */
|
||||||
|
vict->points.hitroll = RANGE(-20, 20);
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 21: /* int */
|
||||||
|
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
||||||
|
RANGE(3, 25);
|
||||||
|
else
|
||||||
|
RANGE(3, 18);
|
||||||
|
vict->real_abils.intel = value;
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 22: /* invis */
|
||||||
|
if (GET_LEVEL(ch) < LVL_IMPL && ch != vict) {
|
||||||
|
send_to_char(ch, "You aren't godly enough for that!\r\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
GET_INVIS_LEV(vict) = RANGE(0, GET_LEVEL(vict));
|
||||||
|
break;
|
||||||
|
case 23: /* invistart */
|
||||||
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_INVSTART);
|
||||||
|
break;
|
||||||
|
case 24: /* killer */
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_KILLER);
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_KILLER);
|
||||||
break;
|
break;
|
||||||
case 33:
|
case 25: /* level */
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_THIEF);
|
|
||||||
break;
|
|
||||||
case 34:
|
|
||||||
if ((!IS_NPC(vict) && value > GET_LEVEL(ch)) || value > LVL_IMPL) {
|
if ((!IS_NPC(vict) && value > GET_LEVEL(ch)) || value > LVL_IMPL) {
|
||||||
send_to_char(ch, "You can't do that.\r\n");
|
send_to_char(ch, "You can't do that.\r\n");
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
RANGE(0, LVL_IMPL);
|
RANGE(1, LVL_IMPL);
|
||||||
vict->player.level = value;
|
vict->player.level = value;
|
||||||
break;
|
break;
|
||||||
case 35:
|
case 26: /* loadroom */
|
||||||
if ((rnum = real_room(value)) == NOWHERE) {
|
|
||||||
send_to_char(ch, "No room exists with that number.\r\n");
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
if (IN_ROOM(vict) != NOWHERE) /* Another Eric Green special. */
|
|
||||||
char_from_room(vict);
|
|
||||||
char_to_room(vict, rnum);
|
|
||||||
break;
|
|
||||||
case 36:
|
|
||||||
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_SHOWVNUMS);
|
|
||||||
break;
|
|
||||||
case 37:
|
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_SITEOK);
|
|
||||||
break;
|
|
||||||
case 38:
|
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_DELETED);
|
|
||||||
break;
|
|
||||||
case 39:
|
|
||||||
if ((i = parse_class(*val_arg)) == CLASS_UNDEFINED) {
|
|
||||||
send_to_char(ch, "That is not a class.\r\n");
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
GET_CLASS(vict) = i;
|
|
||||||
break;
|
|
||||||
case 40:
|
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_NOWIZLIST);
|
|
||||||
break;
|
|
||||||
case 41:
|
|
||||||
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_QUEST);
|
|
||||||
break;
|
|
||||||
case 42:
|
|
||||||
if (!str_cmp(val_arg, "off")) {
|
if (!str_cmp(val_arg, "off")) {
|
||||||
REMOVE_BIT(PLR_FLAGS(vict), PLR_LOADROOM);
|
REMOVE_BIT(PLR_FLAGS(vict), PLR_LOADROOM);
|
||||||
} else if (is_number(val_arg)) {
|
} else if (is_number(val_arg)) {
|
||||||
|
|
@ -3081,57 +2968,44 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 43:
|
case 27: /* mana */
|
||||||
SET_OR_REMOVE(PRF_FLAGS(vict), (PRF_COLOR_1 | PRF_COLOR_2));
|
vict->points.mana = RANGE(0, vict->points.max_mana);
|
||||||
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
case 44:
|
case 28: /* maxhit */
|
||||||
if (GET_IDNUM(ch) != 1 || !IS_NPC(vict))
|
vict->points.max_hit = RANGE(1, 5000);
|
||||||
return (0);
|
affect_total(vict);
|
||||||
GET_IDNUM(vict) = value;
|
|
||||||
break;
|
break;
|
||||||
case 45:
|
case 29: /* maxmana */
|
||||||
if (GET_LEVEL(vict) >= LVL_GRGOD) {
|
vict->points.max_mana = RANGE(1, 5000);
|
||||||
send_to_char(ch, "You cannot change that.\r\n");
|
affect_total(vict);
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
strncpy(GET_PASSWD(vict), CRYPT(val_arg, GET_NAME(vict)), MAX_PWD_LENGTH); /* strncpy: OK (G_P:MAX_PWD_LENGTH) */
|
|
||||||
*(GET_PASSWD(vict) + MAX_PWD_LENGTH) = '\0';
|
|
||||||
send_to_char(ch, "Password changed to '%s'.\r\n", val_arg);
|
|
||||||
break;
|
break;
|
||||||
case 46:
|
case 30: /* maxmove */
|
||||||
|
vict->points.max_move = RANGE(1, 5000);
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 31: /* move */
|
||||||
|
vict->points.move = RANGE(0, vict->points.max_move);
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 32: /* nodelete */
|
||||||
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_NODELETE);
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_NODELETE);
|
||||||
break;
|
break;
|
||||||
case 47:
|
case 33: /* nohassle */
|
||||||
if ((i = search_block(val_arg, genders, FALSE)) < 0) {
|
if (GET_LEVEL(ch) < LVL_GOD && ch != vict) {
|
||||||
send_to_char(ch, "Must be 'male', 'female', or 'neutral'.\r\n");
|
send_to_char(ch, "You aren't godly enough for that!\r\n");
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
GET_SEX(vict) = i;
|
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_NOHASSLE);
|
||||||
break;
|
break;
|
||||||
case 48: /* set age */
|
case 34: /* nosummon */
|
||||||
if (value < 2 || value > 200) { /* Arbitrary limits. */
|
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_SUMMONABLE);
|
||||||
send_to_char(ch, "Ages 2 to 200 accepted.\r\n");
|
send_to_char(ch, "Nosummon %s for %s.\r\n", ONOFF(!on), GET_NAME(vict));
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* NOTE: May not display the exact age specified due to the integer
|
|
||||||
* division used elsewhere in the code. Seems to only happen for
|
|
||||||
* some values below the starting age (17) anyway. -gg 5/27/98
|
|
||||||
*/
|
|
||||||
vict->player.time.birth = time(0) - ((value - 17) * SECS_PER_MUD_YEAR);
|
|
||||||
break;
|
break;
|
||||||
|
case 35: /* nowiz */
|
||||||
case 49: /* Blame/Thank Rick Glover. :) */
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_NOWIZLIST);
|
||||||
GET_HEIGHT(vict) = value;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
break;
|
||||||
|
case 36: /* olc */
|
||||||
case 50:
|
|
||||||
GET_WEIGHT(vict) = value;
|
|
||||||
affect_total(vict);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 51:
|
|
||||||
if (is_abbrev(val_arg, "socials") || is_abbrev(val_arg, "actions") || is_abbrev(val_arg, "aedit"))
|
if (is_abbrev(val_arg, "socials") || is_abbrev(val_arg, "actions") || is_abbrev(val_arg, "aedit"))
|
||||||
GET_OLC_ZONE(vict) = AEDIT_PERMISSION;
|
GET_OLC_ZONE(vict) = AEDIT_PERMISSION;
|
||||||
else if (is_abbrev(val_arg, "hedit"))
|
else if (is_abbrev(val_arg, "hedit"))
|
||||||
|
|
@ -3144,12 +3018,16 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
||||||
} else
|
} else
|
||||||
GET_OLC_ZONE(vict) = atoi(val_arg);
|
GET_OLC_ZONE(vict) = atoi(val_arg);
|
||||||
break;
|
break;
|
||||||
|
case 37: /* password */
|
||||||
case 52: /* set dg script variable */
|
if (GET_LEVEL(vict) >= LVL_GRGOD) {
|
||||||
return perform_set_dg_var(ch, vict, val_arg);
|
send_to_char(ch, "You cannot change that.\r\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
strncpy(GET_PASSWD(vict), CRYPT(val_arg, GET_NAME(vict)), MAX_PWD_LENGTH); /* strncpy: OK (G_P:MAX_PWD_LENGTH) */
|
||||||
|
*(GET_PASSWD(vict) + MAX_PWD_LENGTH) = '\0';
|
||||||
|
send_to_char(ch, "Password changed to '%s'.\r\n", val_arg);
|
||||||
break;
|
break;
|
||||||
|
case 38: /* poofin */
|
||||||
case 53:
|
|
||||||
if ((vict == ch) || (GET_LEVEL(ch) == LVL_IMPL)) {
|
if ((vict == ch) || (GET_LEVEL(ch) == LVL_IMPL)) {
|
||||||
skip_spaces(&val_arg);
|
skip_spaces(&val_arg);
|
||||||
if (!*val_arg)
|
if (!*val_arg)
|
||||||
|
|
@ -3158,8 +3036,7 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
||||||
POOFIN(vict) = strdup(val_arg);
|
POOFIN(vict) = strdup(val_arg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 39: /* poofout */
|
||||||
case 54:
|
|
||||||
if ((vict == ch) || (GET_LEVEL(ch) == LVL_IMPL)) {
|
if ((vict == ch) || (GET_LEVEL(ch) == LVL_IMPL)) {
|
||||||
skip_spaces(&val_arg);
|
skip_spaces(&val_arg);
|
||||||
if (!*val_arg)
|
if (!*val_arg)
|
||||||
|
|
@ -3168,20 +3045,78 @@ int perform_set(struct char_data *ch, struct char_data *vict, int mode,
|
||||||
POOFOUT(vict) = strdup(val_arg);
|
POOFOUT(vict) = strdup(val_arg);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 40: /* practices */
|
||||||
case 55:
|
GET_PRACTICES(vict) = RANGE(0, 100);
|
||||||
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_AFK);
|
break;
|
||||||
|
case 41: /* quest */
|
||||||
|
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_QUEST);
|
||||||
|
break;
|
||||||
|
case 42: /* room */
|
||||||
|
if ((rnum = real_room(value)) == NOWHERE) {
|
||||||
|
send_to_char(ch, "No room exists with that number.\r\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
if (IN_ROOM(vict) != NOWHERE)
|
||||||
|
char_from_room(vict);
|
||||||
|
char_to_room(vict, rnum);
|
||||||
|
break;
|
||||||
|
case 43: /* sex */
|
||||||
|
if ((i = search_block(val_arg, genders, FALSE)) < 0) {
|
||||||
|
send_to_char(ch, "Must be 'male', 'female', or 'neutral'.\r\n");
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
GET_SEX(vict) = i;
|
||||||
|
break;
|
||||||
|
case 44: /* showvnums */
|
||||||
|
SET_OR_REMOVE(PRF_FLAGS(vict), PRF_SHOWVNUMS);
|
||||||
|
break;
|
||||||
|
case 45: /* siteok */
|
||||||
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_SITEOK);
|
||||||
|
break;
|
||||||
|
case 46: /* str */
|
||||||
|
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
||||||
|
RANGE(3, 25);
|
||||||
|
else
|
||||||
|
RANGE(3, 18);
|
||||||
|
vict->real_abils.str = value;
|
||||||
|
vict->real_abils.str_add = 0;
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 47: /* stradd */
|
||||||
|
vict->real_abils.str_add = RANGE(0, 100);
|
||||||
|
if (value > 0)
|
||||||
|
vict->real_abils.str = 18;
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 48: /* thief */
|
||||||
|
SET_OR_REMOVE(PLR_FLAGS(vict), PLR_THIEF);
|
||||||
|
break;
|
||||||
|
case 50: /* title */
|
||||||
|
set_title(vict, val_arg);
|
||||||
|
send_to_char(ch, "%s's title is now: %s\r\n", GET_NAME(vict), GET_TITLE(vict));
|
||||||
|
break;
|
||||||
|
case 51: /* variable */
|
||||||
|
return perform_set_dg_var(ch, vict, val_arg);
|
||||||
|
break;
|
||||||
|
case 52: /* weight */
|
||||||
|
GET_WEIGHT(vict) = value;
|
||||||
|
affect_total(vict);
|
||||||
|
break;
|
||||||
|
case 53: /* wis */
|
||||||
|
if (IS_NPC(vict) || GET_LEVEL(vict) >= LVL_GRGOD)
|
||||||
|
RANGE(3, 25);
|
||||||
|
else
|
||||||
|
RANGE(3, 18);
|
||||||
|
vict->real_abils.wis = value;
|
||||||
|
affect_total(vict);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
send_to_char(ch, "Can't set that!\r\n");
|
send_to_char(ch, "Can't set that!\r\n");
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ACMD(do_set)
|
ACMD(do_set)
|
||||||
{
|
{
|
||||||
struct char_data *vict = NULL, *cbuf = NULL;
|
struct char_data *vict = NULL, *cbuf = NULL;
|
||||||
|
|
@ -3420,7 +3355,6 @@ const int offlimit_zones[] = {0,12,13,14,-1}; /*what zones can no room connect
|
||||||
#define MIN_ROOM_DESC_LENGTH 80 /* at least one line - set to 0 to not care. */
|
#define MIN_ROOM_DESC_LENGTH 80 /* at least one line - set to 0 to not care. */
|
||||||
#define MAX_COLOUMN_WIDTH 80 /* at most 80 chars per line */
|
#define MAX_COLOUMN_WIDTH 80 /* at most 80 chars per line */
|
||||||
|
|
||||||
|
|
||||||
ACMD (do_zcheck)
|
ACMD (do_zcheck)
|
||||||
{
|
{
|
||||||
zone_rnum zrnum;
|
zone_rnum zrnum;
|
||||||
|
|
@ -4152,4 +4086,3 @@ ACMD(do_zpurge)
|
||||||
mudlog(NRM, MAX(LVL_GRGOD, GET_INVIS_LEV(ch)), TRUE, "(GC) %s purged entire world.", GET_NAME(ch));
|
mudlog(NRM, MAX(LVL_GRGOD, GET_INVIS_LEV(ch)), TRUE, "(GC) %s purged entire world.", GET_NAME(ch));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -199,11 +199,11 @@ const char *preference_bits[] = {
|
||||||
"CLS",
|
"CLS",
|
||||||
"BLDWLK",
|
"BLDWLK",
|
||||||
"AFK",
|
"AFK",
|
||||||
"UNUSED1",
|
"AUTOLOOT",
|
||||||
"UNUSED2",
|
"AUTOGOLD",
|
||||||
"UNUSED3",
|
"AUTOSPLIT",
|
||||||
"UNUSED4",
|
"AUTOSAC",
|
||||||
"UNUSED5",
|
"AUTOASSIST",
|
||||||
"\n"
|
"\n"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
49
src/fight.c
49
src/fight.c
|
|
@ -32,6 +32,10 @@ extern struct message_list fight_messages[MAX_MESSAGES];
|
||||||
/* External procedures */
|
/* External procedures */
|
||||||
char *fread_action(FILE *fl, int nr);
|
char *fread_action(FILE *fl, int nr);
|
||||||
ACMD(do_flee);
|
ACMD(do_flee);
|
||||||
|
ACMD(do_get);
|
||||||
|
ACMD(do_split);
|
||||||
|
ACMD(do_sac);
|
||||||
|
ACMD(do_assist);
|
||||||
int backstab_mult(int level);
|
int backstab_mult(int level);
|
||||||
int thaco(int ch_class, int level);
|
int thaco(int ch_class, int level);
|
||||||
int ok_damage_shopkeeper(struct char_data *ch, struct char_data *victim);
|
int ok_damage_shopkeeper(struct char_data *ch, struct char_data *victim);
|
||||||
|
|
@ -683,6 +687,11 @@ int skill_message(int dam, struct char_data *ch, struct char_data *vict,
|
||||||
*/
|
*/
|
||||||
int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype)
|
int damage(struct char_data *ch, struct char_data *victim, int dam, int attacktype)
|
||||||
{
|
{
|
||||||
|
long local_gold = 0;
|
||||||
|
char local_buf[256];
|
||||||
|
struct char_data *tmp_char;
|
||||||
|
struct obj_data *corpse_obj, *coin_obj, *next_obj;
|
||||||
|
|
||||||
if (GET_POS(victim) <= POS_DEAD) {
|
if (GET_POS(victim) <= POS_DEAD) {
|
||||||
/* This is "normal"-ish now with delayed extraction. -gg 3/15/2001 */
|
/* This is "normal"-ish now with delayed extraction. -gg 3/15/2001 */
|
||||||
if (PLR_FLAGGED(victim, PLR_NOTDEADYET) || MOB_FLAGGED(victim, MOB_NOTDEADYET))
|
if (PLR_FLAGGED(victim, PLR_NOTDEADYET) || MOB_FLAGGED(victim, MOB_NOTDEADYET))
|
||||||
|
|
@ -839,7 +848,33 @@ int damage(struct char_data *ch, struct char_data *victim, int dam, int attackty
|
||||||
if (MOB_FLAGGED(ch, MOB_MEMORY))
|
if (MOB_FLAGGED(ch, MOB_MEMORY))
|
||||||
forget(ch, victim);
|
forget(ch, victim);
|
||||||
}
|
}
|
||||||
|
/* Cant determine GET_GOLD on corpse, so do now and store */
|
||||||
|
if (IS_NPC(victim)) {
|
||||||
|
local_gold = GET_GOLD(victim);
|
||||||
|
sprintf(local_buf,"%ld", (long)local_gold);
|
||||||
|
}
|
||||||
|
|
||||||
die(victim, ch);
|
die(victim, ch);
|
||||||
|
if (IS_AFFECTED(ch, AFF_GROUP) && (local_gold > 0) && PRF_FLAGGED(ch, PRF_AUTOSPLIT) ) {
|
||||||
|
generic_find("corpse", FIND_OBJ_ROOM, ch, &tmp_char, &corpse_obj);
|
||||||
|
if (corpse_obj) {
|
||||||
|
for (coin_obj = corpse_obj->contains; coin_obj; coin_obj = next_obj) {
|
||||||
|
next_obj = coin_obj->next_content;
|
||||||
|
if (CAN_SEE_OBJ(ch, coin_obj) && isname("coin", coin_obj->name))
|
||||||
|
extract_obj(coin_obj);
|
||||||
|
}
|
||||||
|
do_split(ch,local_buf,0,0);
|
||||||
|
}
|
||||||
|
/* need to remove the gold from the corpse */
|
||||||
|
} else if (!IS_NPC(ch) && (ch != victim) && PRF_FLAGGED(ch, PRF_AUTOGOLD)) {
|
||||||
|
do_get(ch, "all.coin corpse", 0, 0);
|
||||||
|
}
|
||||||
|
if (!IS_NPC(ch) && (ch != victim) && PRF_FLAGGED(ch, PRF_AUTOLOOT)) {
|
||||||
|
do_get(ch, "all corpse", 0, 0);
|
||||||
|
}
|
||||||
|
if (IS_NPC(victim) && !IS_NPC(ch) && PRF_FLAGGED(ch, PRF_AUTOSAC)) {
|
||||||
|
do_sac(ch,"corpse",0,0);
|
||||||
|
}
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
return (dam);
|
return (dam);
|
||||||
|
|
@ -976,6 +1011,7 @@ void hit(struct char_data *ch, struct char_data *victim, int type)
|
||||||
void perform_violence(void)
|
void perform_violence(void)
|
||||||
{
|
{
|
||||||
struct char_data *ch;
|
struct char_data *ch;
|
||||||
|
struct follow_type *k;
|
||||||
|
|
||||||
for (ch = combat_list; ch; ch = next_combat_list) {
|
for (ch = combat_list; ch; ch = next_combat_list) {
|
||||||
next_combat_list = ch->next_fighting;
|
next_combat_list = ch->next_fighting;
|
||||||
|
|
@ -1002,6 +1038,19 @@ void perform_violence(void)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (k = ch->followers; k; k=k->next) {
|
||||||
|
/* should followers auto-assist master? */
|
||||||
|
if (!IS_NPC(k->follower) && !FIGHTING(k->follower) && PRF_FLAGGED(k->follower,
|
||||||
|
PRF_AUTOASSIST) && (IN_ROOM(k->follower) == IN_ROOM(ch)))
|
||||||
|
do_assist(k->follower, GET_NAME(ch), 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* should master auto-assist followers? */
|
||||||
|
if (ch->master && PRF_FLAGGED(ch->master, PRF_AUTOASSIST) &&
|
||||||
|
FIGHTING(ch) && !FIGHTING(ch->master) &&
|
||||||
|
(IN_ROOM(ch->master) == IN_ROOM(ch)))
|
||||||
|
do_assist(ch->master, GET_NAME(ch), 0, 0);
|
||||||
|
|
||||||
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
|
hit(ch, FIGHTING(ch), TYPE_UNDEFINED);
|
||||||
if (MOB_FLAGGED(ch, MOB_SPEC) && GET_MOB_SPEC(ch) && !MOB_FLAGGED(ch, MOB_NOTDEADYET)) {
|
if (MOB_FLAGGED(ch, MOB_SPEC) && GET_MOB_SPEC(ch) && !MOB_FLAGGED(ch, MOB_NOTDEADYET)) {
|
||||||
char actbuf[MAX_INPUT_LENGTH] = "";
|
char actbuf[MAX_INPUT_LENGTH] = "";
|
||||||
|
|
|
||||||
|
|
@ -397,7 +397,7 @@ cpp_extern const struct command_info cmd_info[] = {
|
||||||
{ "peace" , "pe" , POS_DEAD , do_peace , LVL_BUILDER, 0 },
|
{ "peace" , "pe" , POS_DEAD , do_peace , LVL_BUILDER, 0 },
|
||||||
{ "pick" , "pi" , POS_STANDING, do_gen_door , 1, SCMD_PICK },
|
{ "pick" , "pi" , POS_STANDING, do_gen_door , 1, SCMD_PICK },
|
||||||
{ "practice" , "pr" , POS_RESTING , do_practice , 1, 0 },
|
{ "practice" , "pr" , POS_RESTING , do_practice , 1, 0 },
|
||||||
{ "page" , "pag" , POS_DEAD , do_page , LVL_IMMORT, 0 },
|
{ "page" , "pag" , POS_DEAD , do_page , 1, 0 },
|
||||||
{ "pardon" , "pardon" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_PARDON },
|
{ "pardon" , "pardon" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_PARDON },
|
||||||
{ "policy" , "pol" , POS_DEAD , do_gen_ps , 0, SCMD_POLICIES },
|
{ "policy" , "pol" , POS_DEAD , do_gen_ps , 0, SCMD_POLICIES },
|
||||||
{ "pour" , "pour" , POS_STANDING, do_pour , 0, SCMD_POUR },
|
{ "pour" , "pour" , POS_STANDING, do_pour , 0, SCMD_POUR },
|
||||||
|
|
@ -619,8 +619,23 @@ void command_interpreter(struct char_data *ch, char *argument)
|
||||||
if (GET_LEVEL(ch) >= complete_cmd_info[cmd].minimum_level)
|
if (GET_LEVEL(ch) >= complete_cmd_info[cmd].minimum_level)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (*complete_cmd_info[cmd].command == '\n')
|
if (*complete_cmd_info[cmd].command == '\n') {
|
||||||
send_to_char(ch, "Huh?!?\r\n");
|
int found = 0;
|
||||||
|
send_to_char(ch, "Huh!?!\r\n");
|
||||||
|
|
||||||
|
for (cmd = 0; *cmd_info[cmd].command != '\n'; cmd++) {
|
||||||
|
if (*arg != *cmd_info[cmd].command || cmd_info[cmd].minimum_level > GET_LEVEL(ch))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (levenshtein_distance(arg, (char *) cmd_info[cmd].command) <= 2) {
|
||||||
|
if (!found) {
|
||||||
|
send_to_char(ch, "\r\nDid you mean:\r\n");
|
||||||
|
found = 1;
|
||||||
|
}
|
||||||
|
send_to_char(ch, " %s\r\n", cmd_info[cmd].command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (!IS_NPC(ch) && PLR_FLAGGED(ch, PLR_FROZEN) && GET_LEVEL(ch) < LVL_IMPL)
|
else if (!IS_NPC(ch) && PLR_FLAGGED(ch, PLR_FROZEN) && GET_LEVEL(ch) < LVL_IMPL)
|
||||||
send_to_char(ch, "You try, but the mind-numbing cold prevents you...\r\n");
|
send_to_char(ch, "You try, but the mind-numbing cold prevents you...\r\n");
|
||||||
else if (complete_cmd_info[cmd].command_pointer == NULL)
|
else if (complete_cmd_info[cmd].command_pointer == NULL)
|
||||||
|
|
|
||||||
|
|
@ -218,6 +218,11 @@
|
||||||
#define PRF_CLS (1 << 23) /* Clear screen in OLC */
|
#define PRF_CLS (1 << 23) /* Clear screen in OLC */
|
||||||
#define PRF_BUILDWALK (1 << 24) /* Build new rooms while walking ? */
|
#define PRF_BUILDWALK (1 << 24) /* Build new rooms while walking ? */
|
||||||
#define PRF_AFK (1 << 25) /* AFK flag */
|
#define PRF_AFK (1 << 25) /* AFK flag */
|
||||||
|
#define PRF_AUTOLOOT (1 << 26) /* Loot everything from a corpse */
|
||||||
|
#define PRF_AUTOGOLD (1 << 27) /* Loot gold from a corpse */
|
||||||
|
#define PRF_AUTOSPLIT (1 << 28) /* Split gold with group */
|
||||||
|
#define PRF_AUTOSAC (1 << 29) /* Sacrifice a corpse */
|
||||||
|
#define PRF_AUTOASSIST (1 << 30) /* Auto-assist toggle */
|
||||||
|
|
||||||
/* Affect bits: used in char_data.char_specials.saved.affected_by */
|
/* Affect bits: used in char_data.char_specials.saved.affected_by */
|
||||||
/* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */
|
/* WARNING: In the world files, NEVER set the bits marked "R" ("Reserved") */
|
||||||
|
|
|
||||||
|
|
@ -420,7 +420,7 @@ void update_pos(struct char_data *victim);
|
||||||
GET_OBJ_VAL((obj), 3) == 1)
|
GET_OBJ_VAL((obj), 3) == 1)
|
||||||
|
|
||||||
#define CAN_WEAR(obj, part) OBJWEAR_FLAGGED((obj), (part))
|
#define CAN_WEAR(obj, part) OBJWEAR_FLAGGED((obj), (part))
|
||||||
|
#define GET_OBJ_SHORT(obj) ((obj)->short_description)
|
||||||
|
|
||||||
/* compound utilities and other macros **********************************/
|
/* compound utilities and other macros **********************************/
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue