diff --git a/TODO b/TODO index 89f08b4..81f7791 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,11 @@ wMUD TODO file +============== + +This file is continuously migrated into the Zim wiki (later it will become +media or dokuwiki). + +Data storage and code flow +-------------------------- * Store EVERYTHING in an SQLite3 database @@ -9,118 +16,99 @@ wMUD TODO file * All descriptions should be written in a markup language to support bold, underline, colours, and such +Game world +---------- + * Movement - o 10 directions (N, E, S, W, NE, NW, SE, SW, U, D) - o Also, some rooms may have other exits, like portals, which can be ENTER'ed. - o Doors can be locked or hidden + - 10 directions (N, E, S, W, NE, NW, SE, SW, U, D) + - Also, some rooms may have other exits, like portals, which can be ENTER'ed. + - Doors can be locked or hidden * Planets/Planes - o Rooms are connected to Planets - o Planets are connected to Planes - o Rooms may have different descriptions depending on the Plane the Character + - Rooms are connected to Planets + - Planets are connected to Planes + - Rooms may have different descriptions depending on the Plane the Character is active on -* Commands already defined in Zim Wiki: - o DROP - o GET - o PRACISE/PRACTICE - o PRAY - o RECALL should take back the character to their house, or the Inn room they - have rented. Specific rooms may have a flag so there must be no recall from - them (this should also mean that upon logout/login, the character will get - back to this room) - o SURVEY - o TALE - -* Commands that should be present - o AFFECTS to show all the spells that affects the character (spell name, - apply count, duration, applier name) - o SCORE to show the player's statistics - o INVENTORY to show the character's inventory - o EQUIPMENT to show the equipped items - o AUTOEXIT to toggle exit display on LOOK - o LOOK - o EXITS - o EXAMINE should be an alias to LOOK, except it should work only on objects - o CONSIDER - o SET - . AUTOLOOT [OFF] - . AUTOSKIN [OFF] - . AUTODRAIN [OFF] - . AUTOSPLIT [OFF] - . COLOR [ON ] - . AUTOLOOK [ON ] - . WIMPY [OFF] - . AUTOCONSUME [OFF] (To automatically consume food and drink when - hungry/thirsty) - . GROUPINV [ON ] - . PAGELENGTH [30 ] - o BURY/DIG - o EQUIP/WIELD - o IGNORE/UNIGNORE - o WHO/WHOIS - o QUIT should exit the game - o LOGOUT should go back to intro menu - o USE may use objects in hand (map, weapons with spells, etc.), or in room - (buttons, levers, etc.) - * Player grouping (AKA Party) -* Housing system should automatically expand towns (this will be fun to write). - Maybe a better alternative is to check for free housing and if the amount - goes too low, manually create some new one. - o Housing should be decorated with different objects. - -* The whole world should have one fallback start location (Tree of Memories?) - -* All Races have at least one possible start locations - * People start in a well-defined start location (randomly selected during - character generation) + character generation) + - All Races have at least one possible start locations + - The whole world should have one fallback start location (Tree of Memories?) -* Characters can set their hometown in an Inn; however, Inns have only a - limited amount of rooms. Inn rooms cost some amount of gold per day, which is - pre-paid. If the rent is over, the character's start location is set to one - of the racial defaults. If the character is online when the rent is over, - they should get a warning message about this. If the player gets an own - house, their home location should be automatically set to it +* Housing system should automatically expand towns (this will be fun to write). + Maybe a better alternative is to check for free housing and if the amount + goes too low, manually create some new one. + - Housing should be decorated with different objects. + - Houses get untidy over time, so they need to be cleaned + - House maids -* Item creation (AKA combining or Professions, like Blacksmithing and Alchemy) - o Trainers, who know only specific recipes - o Recipe scrolls (e.g to be dropped by mobs and such) - o Corpse skinning (only specific corpses) - o Corpse butching (only specific corpses) - o Fishing - o Mining - o Foraging +* Inn and Tavern system + - Characters can set their hometown in an Inn; however, Inns have only a + limited amount of rooms. Inn rooms cost some amount of gold per day, + which is pre-paid. If the rent is over, the character's start location is + set to one of the racial defaults. If the character is online when the + rent is over, they should get a warning message about this. If the player + gets an own house, their home location should be automatically set to it + - Tavern system + . Tables and chairs + . Tables are private chat rooms with a maximum number of members + . Each tavern has a fixed amount of tables and chairs + . Chairs can be moved from one table to another + . Tables have a maximum number of chairs (which may vary depending on the + table's size) -* Container items (bags) +* Item disposal methods + - Drop + Dropped items don't generate points, nor money. They also get the dropped + flag, so they loose some (most) of their property bonuses unless their + original owner picks them up + - Donation + Donated items automatically appear in the nearest donation room (or + random, maybe). Donations are recorded, and the characters who donate in + larger amounts and/or more valuable items may get rewards + - Sacrifice + Sacrificed items become energy, which the Gods retun as Sacrifice Points. + - Salvage + Most items can be salvaged to get some raw materials back + - Auction + Items can be auctioned at the Market Squares + +* Item creation (AKA combining or Professions) + - Trainers, who know only specific recipes + - Recipe scrolls (e.g to be dropped by mobs and such) + - Corpse skinning (only specific corpses) + - Corpse butching (only specific corpses) + - Fishing + - Mining + - Foraging + - Blacksmithing + - Alchemy * Companions - o Combat/Pack animals - o Mounts (may also act as combat/pack animals) - o Charming - -* Auction system - -* Item donation + - Combat/Pack animals + - Mounts (may also act as combat/pack animals) + - Charming + - Servants, pages * Gods - o Gods may be chosen upon character creation (for wMUD, a character MUST have + - Gods may be chosen upon character creation (for wMUD, a character MUST have at least two Gods) + - Sacrifices + - Prayers * Reputation system -* Player Guilds - -* Sacrifices - -* Prayers +* Player Clans + o Clan bank + o Clan wars (Players from a Guild may PK players from another Guild if the + two Guilds are in war with each other) * Item types - o Armour/Clothing + - Armour/Clothing . Shields - o Weapon + - Weapon . Ballista . Bashing . Bow @@ -132,31 +120,33 @@ wMUD TODO file . Piercing . Slashing . Whip - o Potion - o Poison (appliable to weapons) - o Food/Water/Alcohol/Sugar - o Light + - Potion + - Poison (appliable to weapons) + - Food/Water/Alcohol/Sugar + - Light . Maybe these objects (or some of them) should be seen in the dark - o Spell reagent - o Material - o Artifacts + - Spell reagent + - Material + - Artifacts + - Containers + . Bags * Death system, Rebirth * War Machines * Shops - o Most shops should open/close depending on the in-game time + - Most shops should open/close depending on the in-game time * Skills/Spells/Talents granted by the Gods - o Fear + - Fear * Magic Profession * Fighting Professions with practicing - o Disarm - o Dual Wield - o Stun + - Disarm + - Dual Wield + - Stun * The whole system should be built with class support, although wMUD will technically have only one "Adventurer" class. Also, multiclassing should be @@ -169,76 +159,68 @@ wMUD TODO file Reborn characters have the possibility to regain all their old powers after a few years -* Quests given by NPCs - -* Player creatable quests +* Quests + o Quests given by NPCs + o Player creatable quests + o Character bounty, which can be placed by other characters for a fee (should + be enabled per world), or NPCs. * In-game chat (whisper, say, shout, emotes, group/party, guild). Guild chat - should be accessible without entering the game (from the Circle-like main - menu), or even via IRC or something like that + should be accessible without entering the game (from the Circle-like main + menu), or even via IRC or something like that * Speedwalking? * Arenas -* Player killing/thieving should be enabled/disabled per world - * Mercy mob flag: mobs will stop attacking if their enemy is unable to fight - any more + any more * Mobs should be able to wear/wield items, have an inventory, have Skills, - Spells and Talents + Spells and Talents * Sneaking, thieving, robbery - o A mob may steal stuff from you, you may detect it, and maybe able to catch - it and get your stuff back. However, killing them in a city may result in - punishment by the guards. + - A mob may steal stuff from you, you may detect it, and maybe able to catch + it and get your stuff back. However, killing them in a city may result in + punishment by the guards. + - Player killing/thieving should be enabled/disabled per world * Gossips - -* Bragging NPCs: if a character gets killed by a specific NPCs, those NPCs will - humiliate that character for a while + - Bragging NPCs: if a character gets killed by a specific NPCs, those NPCs + will humiliate that character for a while * Weapon USE: wielded weapons may do something (like cast spells or such) if a - specific attribute is set. The item spell should recharge over time, or - recharge upon a specific condition + specific attribute is set. The item spell should recharge over time, or + recharge upon a specific condition * Money (with the possibility to create several money types, like different - currencies for different Races) + currencies for different Races or Countries) * Banks - o Money deposit (with interest in some banks) - o Storage, for a fee - o Loans - -* Guild bank + - Money deposit (with interest in some banks) + - Storage, for a fee + - Loans * All looted items should be used in some way or another. Sacrifice is a common - way, but some items may be milled (e.g bones and herbs) or disassembled (e.g - Mechanics objects or armour), others may be used as raw materials. Extracted - body parts (e.g blood or meat) should decompose over time, even in an - inventory, unless put in a special container + way, but some items may be milled (e.g bones and herbs) or disassembled + (e.g Mechanics objects or armour), others may be used as raw materials. + Extracted body parts (e.g blood or meat) should decompose over time, even + in an inventory, unless put in a special container * Object affects and attribute modifiers, like an earring which make the - character deaf. These affects may be hidden, and even delayed (e.g the - character puts on the earring that gives a high amount of charisma, but after - wearing it for a specific time, they will become deaf, and they will have no - idea what caused it. The same object can also be cursed, so it cannot be - removed except by some professional magicians + character deaf. These affects may be hidden, and even delayed (e.g the + character puts on the earring that gives a high amount of charisma, but + after wearing it for a specific time, they will become deaf, and they will + have no idea what caused it. The same object can also be cursed, so it + cannot be removed except by some professional magicians * Item modifiers, like sharpening stones * Item durability. Items must have a Profession and a Profession Level - associated to them to show who can repair it + associated to them to show who can repair it * arrives from -* Character bounty, which can be placed by other characters for a fee (should - be enabled per world), or NPCs. - -* Guild wars (Players from a Guild may PK players from another Guild if the two - Guilds are in war with each other) - * Mob glowing (e.g they will be unable to sneak) * Polls @@ -248,540 +230,433 @@ wMUD TODO file * Marriage? * Character titles, which can be rewards for quests, or be bought for a high - amount of money + amount of money * Spirit world - o Some rooms (at least one) should be marked as Spirit World. Upon death, - characters get the DEAD flag, and get to this room. They must find their - way to remove the DEAD flag, and/or find a way back to the real world. + - Some rooms (at least one) should be marked as Spirit World. Upon death, + characters get the DEAD flag, and get to this room. They must find their + way to remove the DEAD flag, and/or find a way back to the real world. * Blood may remain on the floor during a fight (even without a kill) -* Death trap rooms - -* Regeneration rooms - -* Teleportation objects (portal machines) and rooms (elevators) +* Special rooms + o Death trap rooms + o Regeneration rooms + o Teleportation objects (portal machines) and rooms (elevators) * Languages * Books * Rivers should have some kind of a current. If you get into a river (even on a - boat, or by swimming), it will move you automatically somewhere + boat, or by swimming), it will move you automatically somewhere * Gambling (may be illegal in some towns ;) ) * Guides that can be payed for. E.g in a big city, a guide can lead you to the - Inn, or something like that for a small fee. + Inn, or something like that for a small fee. -* Automatically hiding/appearing exits (e.g to created mazes to hide stuff) +* Automatically hiding/appearing exits (e.g to create mazes or to hide stuff) * Mailing * Abilities - o Rolled upon character creation - o May be trained - o There should be a racial maximum - o May be modified by affections and worn items - o May increase/decrease with age + - Rolled upon character creation + - May be trained (ability training may be enabled/disabled system wide) + - There should be a racial maximum + - May be modified by affections and worn items + - May increase/decrease with age + +* Tattoes, scars, piercings, etc. + +Commands +-------- + +* Commands already defined in Zim Wiki: + - DROP + - GET + - PRACISE/PRACTICE + - PRAY + - RECALL should take back the character to their house, or the Inn room they + have rented. Specific rooms may have a flag so there must be no recall from + them (this should also mean that upon logout/login, the character will get + back to this room) + - SURVEY + - TALE + +* Commands that should be present + - AFFECTS to show all the spells that affects the character (spell name, + apply count, duration, applier name) + - SCORE to show the player's statistics + - INVENTORY to show the character's inventory + - EQUIPMENT to show the equipped items + - AUTOEXIT to toggle exit display on LOOK + - LOOK + - EXITS + - EXAMINE should be an alias to LOOK, except it should work only on objects + - CONSIDER + - SET + . AUTOLOOT [OFF] + . AUTOSKIN [OFF] + . AUTODRAIN [OFF] + . AUTOSPLIT [OFF] + . COLOR [ON ] + . AUTOLOOK [ON ] + . WIMPY [OFF] + . AUTOCONSUME [OFF] (To automatically consume food and drink when + hungry/thirsty) + . GROUPINV [ON ] + . PAGELENGTH [30 ] + - BURY/DIG + - EQUIP/WIELD + - IGNORE/UNIGNORE + - WHO/WHOIS + - QUIT should exit the game + - LOGOUT should go back to intro menu + - USE may use objects in hand (map, weapons with spells, etc.), or in room + (buttons, levers, etc.) Materia Magica command list -=========================== +--------------------------- $ = gold . = shout / = chat ; = formtalk ? = help -away -affects -affected -auction -align -alias -alliance -bury -build -backstab -bash -breathe -bank -cast -channels -combat -ctf -clear -cls -commands -consider -chat -clan -clantalk -ct -close -charge -chess -changes -credits -class -challenge -description -donate -dream -dig -drink -drop -disarm -dismount -effects -evoke -equipment -examine -enter -extinguish -emote -eat -empty -equip -fill -feed -flee -friends -faction -formation -ft -feign -get -gold -give -grab -grapple -guide -gohome -hitch -help -hold -herald -hint -hide -history -home -inventory -invoke -ignore -kill -kick -knock -look -light -levels -lock -locker -lay -mix -memorize -mail -marks -mount -news -novice -notify -order -open -practice -pktalk -pray -pick -put -pull -push -play -protocols -page -quest -quit -rest -read -report -rules -relay -reply -remove -run -recall -rewardunit -religion -raise -snare -sit -stand -sweep -score -socials -skills -scan -survey -say -sayto -shop -shout -search -sacrifice -set -sleep -sneak -ship -steal -shift -slit -strike -tell -tag -time -termreset -typo -title -turn -take -throw -track -train -unhitch -use -unequip -unlock -vendor -visible -version -wield -who -whisper -weather -wimpy -wear -write -wake -where -yell + +away affects affected auction align alias alliance bury build backstab bash +breathe bank cast channels combat ctf clear cls commands consider chat clan +clantalk ct close charge chess changes credits class challenge description +donate dream dig drink drop disarm dismount effects evoke equipment examine +enter extinguish emote eat empty equip fill feed flee friends faction formation +ft feign get gold give grab grapple guide gohome hitch help hold herald hint +hide history home inventory invoke ignore kill kick knock look light levels +lock locker lay mix memorize mail marks mount news novice notify order open +practice pktalk pray pick put pull push play protocols page quest quit rest +read report rules relay reply remove run recall rewardunit religion raise snare +sit stand sweep score socials skills scan survey say sayto shop shout search +sacrifice set sleep sneak ship steal shift slit strike tell tag time termreset +typo title turn take throw track train unhitch use unequip unlock vendor +visible version wield who whisper weather wimpy wear write wake where yell CircleMUD commands -================== +------------------ - { "north" , POS_STANDING, do_move , 0, SCMD_NORTH }, - { "east" , POS_STANDING, do_move , 0, SCMD_EAST }, - { "south" , POS_STANDING, do_move , 0, SCMD_SOUTH }, - { "west" , POS_STANDING, do_move , 0, SCMD_WEST }, - { "up" , POS_STANDING, do_move , 0, SCMD_UP }, - { "down" , POS_STANDING, do_move , 0, SCMD_DOWN }, - { "at" , POS_DEAD , do_at , LVL_IMMORT, 0 }, - { "advance" , POS_DEAD , do_advance , LVL_IMPL, 0 }, - { "alias" , POS_DEAD , do_alias , 0, 0 }, - { "accuse" , POS_SITTING , do_action , 0, 0 }, - { "applaud" , POS_RESTING , do_action , 0, 0 }, - { "assist" , POS_FIGHTING, do_assist , 1, 0 }, - { "ask" , POS_RESTING , do_spec_comm, 0, SCMD_ASK }, - { "auction" , POS_SLEEPING, do_gen_comm , 0, SCMD_AUCTION }, - { "autoexit" , POS_DEAD , do_gen_tog , 0, SCMD_AUTOEXIT }, - { "autoloot" , POS_DEAD , do_gen_tog , 0, SCMD_AUTOLOOT }, - { "autodrain", POS_DEAD , do_gen_tog , 0, SCMD_AUTODRAIN }, - { "bounce" , POS_STANDING, do_action , 0, 0 }, - { "backstab" , POS_STANDING, do_backstab , 1, 0 }, - { "ban" , POS_DEAD , do_ban , LVL_GRGOD, 0 }, - { "balance" , POS_STANDING, do_not_here , 1, 0 }, - { "bash" , POS_FIGHTING, do_bash , 1, 0 }, - { "beg" , POS_RESTING , do_action , 0, 0 }, - { "bleed" , POS_RESTING , do_action , 0, 0 }, - { "blush" , POS_RESTING , do_action , 0, 0 }, - { "bow" , POS_STANDING, do_action , 0, 0 }, - { "brb" , POS_RESTING , do_action , 0, 0 }, - { "brief" , POS_DEAD , do_gen_tog , 0, SCMD_BRIEF }, - { "burp" , POS_RESTING , do_action , 0, 0 }, - { "bury" , POS_STANDING, do_bury , 0, 0 }, - { "buy" , POS_STANDING, do_not_here , 0, 0 }, - { "bug" , POS_DEAD , do_gen_write, 0, SCMD_BUG }, - { "cast" , POS_SITTING , do_cast , 1, 0 }, - { "cackle" , POS_RESTING , do_action , 0, 0 }, - { "check" , POS_STANDING, do_not_here , 1, 0 }, - { "chuckle" , POS_RESTING , do_action , 0, 0 }, - { "clap" , POS_RESTING , do_action , 0, 0 }, - { "clear" , POS_DEAD , do_gen_ps , 0, SCMD_CLEAR }, - { "close" , POS_SITTING , do_gen_door , 0, SCMD_CLOSE }, - { "cls" , POS_DEAD , do_gen_ps , 0, SCMD_CLEAR }, - { "consider" , POS_RESTING , do_consider , 0, 0 }, - { "color" , POS_DEAD , do_color , 0, 0 }, - { "comfort" , POS_RESTING , do_action , 0, 0 }, - { "comb" , POS_RESTING , do_action , 0, 0 }, - { "commands" , POS_DEAD , do_commands , 0, SCMD_COMMANDS }, - { "compact" , POS_DEAD , do_gen_tog , 0, SCMD_COMPACT }, - { "cough" , POS_RESTING , do_action , 0, 0 }, - { "credits" , POS_DEAD , do_gen_ps , 0, SCMD_CREDITS }, - { "cringe" , POS_RESTING , do_action , 0, 0 }, - { "cry" , POS_RESTING , do_action , 0, 0 }, - { "cuddle" , POS_RESTING , do_action , 0, 0 }, - { "curse" , POS_RESTING , do_action , 0, 0 }, - { "curtsey" , POS_STANDING, do_action , 0, 0 }, - { "dance" , POS_STANDING, do_action , 0, 0 }, - { "date" , POS_DEAD , do_date , LVL_IMMORT, SCMD_DATE }, - { "daydream" , POS_SLEEPING, do_action , 0, 0 }, - { "dc" , POS_DEAD , do_dc , LVL_GOD, 0 }, - { "deposit" , POS_STANDING, do_not_here , 1, 0 }, - { "diagnose" , POS_RESTING , do_diagnose , 0, 0 }, - { "dig" , POS_STANDING, do_dig , 0, 0 }, - { "display" , POS_DEAD , do_display , 0, 0 }, - { "donate" , POS_RESTING , do_drop , 0, SCMD_DONATE }, - { "drain" , POS_STANDING, do_drain , 0, 0 }, - { "drink" , POS_RESTING , do_drink , 0, SCMD_DRINK }, - { "drop" , POS_RESTING , do_drop , 0, SCMD_DROP }, - { "drool" , POS_RESTING , do_action , 0, 0 }, - { "eat" , POS_RESTING , do_eat , 0, SCMD_EAT }, - { "echo" , POS_SLEEPING, do_echo , LVL_IMMORT, SCMD_ECHO }, - { "emote" , POS_RESTING , do_echo , 1, SCMD_EMOTE }, - { ":" , POS_RESTING, do_echo , 1, SCMD_EMOTE }, - { "embrace" , POS_STANDING, do_action , 0, 0 }, - { "enter" , POS_STANDING, do_enter , 0, 0 }, - { "equipment", POS_SLEEPING, do_equipment, 0, 0 }, - { "exits" , POS_RESTING , do_exits , 0, 0 }, - { "examine" , POS_SITTING , do_examine , 0, 0 }, - { "force" , POS_SLEEPING, do_force , LVL_GOD, 0 }, - { "fart" , POS_RESTING , do_action , 0, 0 }, - { "fill" , POS_STANDING, do_pour , 0, SCMD_FILL }, - { "flee" , POS_FIGHTING, do_flee , 1, 0 }, - { "flip" , POS_STANDING, do_action , 0, 0 }, - { "flirt" , POS_RESTING , do_action , 0, 0 }, - { "follow" , POS_RESTING , do_follow , 0, 0 }, - { "fondle" , POS_RESTING , do_action , 0, 0 }, - { "freeze" , POS_DEAD , do_wizutil , LVL_FREEZE, SCMD_FREEZE }, - { "french" , POS_RESTING , do_action , 0, 0 }, - { "frown" , POS_RESTING , do_action , 0, 0 }, - { "fume" , POS_RESTING , do_action , 0, 0 }, - { "get" , POS_RESTING , do_get , 0, 0 }, - { "gasp" , POS_RESTING , do_action , 0, 0 }, - { "gecho" , POS_DEAD , do_gecho , LVL_GOD, 0 }, - { "give" , POS_RESTING , do_give , 0, 0 }, - { "giggle" , POS_RESTING , do_action , 0, 0 }, - { "glare" , POS_RESTING , do_action , 0, 0 }, - { "goto" , POS_SLEEPING, do_goto , LVL_IMMORT, 0 }, - { "gold" , POS_RESTING , do_gold , 0, 0 }, - { "gossip" , POS_SLEEPING, do_gen_comm , 0, SCMD_GOSSIP }, - { "group" , POS_RESTING , do_group , 1, 0 }, - { "grab" , POS_RESTING , do_grab , 0, 0 }, - { "grats" , POS_SLEEPING, do_gen_comm , 0, SCMD_GRATZ }, - { "greet" , POS_RESTING , do_action , 0, 0 }, - { "grin" , POS_RESTING , do_action , 0, 0 }, - { "groan" , POS_RESTING , do_action , 0, 0 }, - { "grope" , POS_RESTING , do_action , 0, 0 }, - { "grovel" , POS_RESTING , do_action , 0, 0 }, - { "growl" , POS_RESTING , do_action , 0, 0 }, - { "gsay" , POS_SLEEPING, do_gsay , 0, 0 }, - { "gtell" , POS_SLEEPING, do_gsay , 0, 0 }, - { "help" , POS_DEAD , do_help , 0, 0 }, - { "handbook" , POS_DEAD , do_gen_ps , LVL_IMMORT, SCMD_HANDBOOK }, - { "hcontrol" , POS_DEAD , do_hcontrol , LVL_GRGOD, 0 }, - { "hiccup" , POS_RESTING , do_action , 0, 0 }, - { "hide" , POS_RESTING , do_hide , 1, 0 }, - { "hit" , POS_FIGHTING, do_hit , 0, SCMD_HIT }, - { "hold" , POS_RESTING , do_grab , 1, 0 }, - { "holler" , POS_RESTING , do_gen_comm , 1, SCMD_HOLLER }, - { "holylight", POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_HOLYLIGHT }, - { "hop" , POS_RESTING , do_action , 0, 0 }, - { "house" , POS_RESTING , do_house , 0, 0 }, - { "hug" , POS_RESTING , do_action , 0, 0 }, - { "inventory", POS_DEAD , do_inventory, 0, 0 }, - { "idea" , POS_DEAD , do_gen_write, 0, SCMD_IDEA }, - { "imotd" , POS_DEAD , do_gen_ps , LVL_IMMORT, SCMD_IMOTD }, - { "immlist" , POS_DEAD , do_gen_ps , 0, SCMD_IMMLIST }, - { "info" , POS_SLEEPING, do_gen_ps , 0, SCMD_INFO }, - { "insult" , POS_RESTING , do_insult , 0, 0 }, - { "invis" , POS_DEAD , do_invis , LVL_IMMORT, 0 }, - { "junk" , POS_RESTING , do_drop , 0, SCMD_JUNK }, - { "kill" , POS_FIGHTING, do_kill , 0, 0 }, - { "kick" , POS_FIGHTING, do_kick , 1, 0 }, - { "kiss" , POS_RESTING , do_action , 0, 0 }, - { "look" , POS_RESTING , do_look , 0, SCMD_LOOK }, - { "laugh" , POS_RESTING , do_action , 0, 0 }, - { "last" , POS_DEAD , do_last , LVL_GOD, 0 }, - { "leave" , POS_STANDING, do_leave , 0, 0 }, - { "levels" , POS_DEAD , do_levels , 0, 0 }, - { "list" , POS_STANDING, do_not_here , 0, 0 }, - { "lick" , POS_RESTING , do_action , 0, 0 }, - { "lock" , POS_SITTING , do_gen_door , 0, SCMD_LOCK }, - { "load" , POS_DEAD , do_load , LVL_GOD, 0 }, - { "love" , POS_RESTING , do_action , 0, 0 }, - { "moan" , POS_RESTING , do_action , 0, 0 }, - { "motd" , POS_DEAD , do_gen_ps , 0, SCMD_MOTD }, - { "mail" , POS_STANDING, do_not_here , 1, 0 }, - { "massage" , POS_RESTING , do_action , 0, 0 }, - { "mute" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_SQUELCH }, - { "murder" , POS_FIGHTING, do_hit , 0, SCMD_MURDER }, - { "news" , POS_SLEEPING, do_gen_ps , 0, SCMD_NEWS }, - { "nibble" , POS_RESTING , do_action , 0, 0 }, - { "nod" , POS_RESTING , do_action , 0, 0 }, - { "noauction", POS_DEAD , do_gen_tog , 0, SCMD_NOAUCTION }, - { "nogossip" , POS_DEAD , do_gen_tog , 0, SCMD_NOGOSSIP }, - { "nograts" , POS_DEAD , do_gen_tog , 0, SCMD_NOGRATZ }, - { "nohassle" , POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_NOHASSLE }, - { "norepeat" , POS_DEAD , do_gen_tog , 0, SCMD_NOREPEAT }, - { "noshout" , POS_SLEEPING, do_gen_tog , 1, SCMD_DEAF }, - { "nosummon" , POS_DEAD , do_gen_tog , 1, SCMD_NOSUMMON }, - { "notell" , POS_DEAD , do_gen_tog , 1, SCMD_NOTELL }, - { "notitle" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_NOTITLE }, - { "nowiz" , POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_NOWIZ }, - { "nudge" , POS_RESTING , do_action , 0, 0 }, - { "nuzzle" , POS_RESTING , do_action , 0, 0 }, - { "olc" , POS_DEAD , do_olc , LVL_IMPL, 0 }, - { "order" , POS_RESTING , do_order , 1, 0 }, - { "offer" , POS_STANDING, do_not_here , 1, 0 }, - { "open" , POS_SITTING , do_gen_door , 0, SCMD_OPEN }, - { "put" , POS_RESTING , do_put , 0, 0 }, - { "pat" , POS_RESTING , do_action , 0, 0 }, - { "page" , POS_DEAD , do_page , LVL_GOD, 0 }, - { "pardon" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_PARDON }, - { "peer" , POS_RESTING , do_action , 0, 0 }, - { "pick" , POS_STANDING, do_gen_door , 1, SCMD_PICK }, - { "point" , POS_RESTING , do_action , 0, 0 }, - { "poke" , POS_RESTING , do_action , 0, 0 }, - { "policy" , POS_DEAD , do_gen_ps , 0, SCMD_POLICIES }, - { "ponder" , POS_RESTING , do_action , 0, 0 }, - { "poofin" , POS_DEAD , do_poofset , LVL_IMMORT, SCMD_POOFIN }, - { "poofout" , POS_DEAD , do_poofset , LVL_IMMORT, SCMD_POOFOUT }, - { "pour" , POS_STANDING, do_pour , 0, SCMD_POUR }, - { "pout" , POS_RESTING , do_action , 0, 0 }, - { "prompt" , POS_DEAD , do_display , 0, 0 }, - { "practice" , POS_RESTING , do_practice , 1, 0 }, - { "pray" , POS_SITTING , do_action , 0, 0 }, - { "puke" , POS_RESTING , do_action , 0, 0 }, - { "punch" , POS_RESTING , do_action , 0, 0 }, - { "purr" , POS_RESTING , do_action , 0, 0 }, - { "purge" , POS_DEAD , do_purge , LVL_GOD, 0 }, - { "quaff" , POS_RESTING , do_use , 0, SCMD_QUAFF }, - { "qecho" , POS_DEAD , do_qcomm , LVL_IMMORT, SCMD_QECHO }, - { "quest" , POS_DEAD , do_gen_tog , 0, SCMD_QUEST }, - { "qui" , POS_DEAD , do_quit , 0, 0 }, - { "quit" , POS_DEAD , do_quit , 0, SCMD_QUIT }, - { "qsay" , POS_RESTING , do_qcomm , 0, SCMD_QSAY }, - { "reply" , POS_SLEEPING, do_reply , 0, 0 }, - { "rest" , POS_RESTING , do_rest , 0, 0 }, - { "read" , POS_RESTING , do_look , 0, SCMD_READ }, - { "reload" , POS_DEAD , do_reboot , LVL_IMPL, 0 }, - { "recite" , POS_RESTING , do_use , 0, SCMD_RECITE }, - { "receive" , POS_STANDING, do_not_here , 1, 0 }, - { "remove" , POS_RESTING , do_remove , 0, 0 }, - { "rent" , POS_STANDING, do_not_here , 1, 0 }, - { "report" , POS_RESTING , do_report , 0, 0 }, - { "reroll" , POS_DEAD , do_wizutil , LVL_GRGOD, SCMD_REROLL }, - { "rescue" , POS_FIGHTING, do_rescue , 1, 0 }, - { "restore" , POS_DEAD , do_restore , LVL_GOD, 0 }, - { "return" , POS_DEAD , do_return , 0, 0 }, - { "roll" , POS_RESTING , do_action , 0, 0 }, - { "roomflags", POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_ROOMFLAGS }, - { "ruffle" , POS_STANDING, do_action , 0, 0 }, - { "say" , POS_RESTING , do_say , 0, 0 }, - { "'" , POS_RESTING , do_say , 0, 0 }, - { "save" , POS_SLEEPING, do_save , 0, 0 }, - { "score" , POS_DEAD , do_score , 0, 0 }, - { "scream" , POS_RESTING , do_action , 0, 0 }, - { "sell" , POS_STANDING, do_not_here , 0, 0 }, - { "send" , POS_SLEEPING, do_send , LVL_GOD, 0 }, - { "set" , POS_DEAD , do_set , LVL_GOD, 0 }, - { "shout" , POS_RESTING , do_gen_comm , 0, SCMD_SHOUT }, - { "shake" , POS_RESTING , do_action , 0, 0 }, - { "shiver" , POS_RESTING , do_action , 0, 0 }, - { "show" , POS_DEAD , do_show , LVL_IMMORT, 0 }, - { "shrug" , POS_RESTING , do_action , 0, 0 }, - { "shutdow" , POS_DEAD , do_shutdown , LVL_IMPL, 0 }, - { "shutdown" , POS_DEAD , do_shutdown , LVL_IMPL, SCMD_SHUTDOWN }, - { "sigh" , POS_RESTING , do_action , 0, 0 }, - { "sing" , POS_RESTING , do_action , 0, 0 }, - { "sip" , POS_RESTING , do_drink , 0, SCMD_SIP }, - { "sit" , POS_RESTING , do_sit , 0, 0 }, - { "skillset" , POS_SLEEPING, do_skillset , LVL_GRGOD, 0 }, - { "sleep" , POS_SLEEPING, do_sleep , 0, 0 }, - { "slap" , POS_RESTING , do_action , 0, 0 }, - { "slowns" , POS_DEAD , do_gen_tog , LVL_IMPL, SCMD_SLOWNS }, - { "smile" , POS_RESTING , do_action , 0, 0 }, - { "smirk" , POS_RESTING , do_action , 0, 0 }, - { "snicker" , POS_RESTING , do_action , 0, 0 }, - { "snap" , POS_RESTING , do_action , 0, 0 }, - { "snarl" , POS_RESTING , do_action , 0, 0 }, - { "sneeze" , POS_RESTING , do_action , 0, 0 }, - { "sneak" , POS_STANDING, do_sneak , 1, 0 }, - { "sniff" , POS_RESTING , do_action , 0, 0 }, - { "snore" , POS_SLEEPING, do_action , 0, 0 }, - { "snowball" , POS_STANDING, do_action , LVL_IMMORT, 0 }, - { "snoop" , POS_DEAD , do_snoop , LVL_GOD, 0 }, - { "snuggle" , POS_RESTING , do_action , 0, 0 }, - { "socials" , POS_DEAD , do_commands , 0, SCMD_SOCIALS }, - { "split" , POS_SITTING , do_split , 1, 0 }, - { "spank" , POS_RESTING , do_action , 0, 0 }, - { "spit" , POS_STANDING, do_action , 0, 0 }, - { "squeeze" , POS_RESTING , do_action , 0, 0 }, - { "stand" , POS_RESTING , do_stand , 0, 0 }, - { "stare" , POS_RESTING , do_action , 0, 0 }, - { "stat" , POS_DEAD , do_stat , LVL_IMMORT, 0 }, - { "steal" , POS_STANDING, do_steal , 1, 0 }, - { "steam" , POS_RESTING , do_action , 0, 0 }, - { "stroke" , POS_RESTING , do_action , 0, 0 }, - { "strut" , POS_STANDING, do_action , 0, 0 }, - { "sulk" , POS_RESTING , do_action , 0, 0 }, - { "switch" , POS_DEAD , do_switch , LVL_GRGOD, 0 }, - { "syslog" , POS_DEAD , do_syslog , LVL_IMMORT, 0 }, - { "tell" , POS_DEAD , do_tell , 0, 0 }, - { "tackle" , POS_RESTING , do_action , 0, 0 }, - { "take" , POS_RESTING , do_get , 0, 0 }, - { "tango" , POS_STANDING, do_action , 0, 0 }, - { "taunt" , POS_RESTING , do_action , 0, 0 }, - { "taste" , POS_RESTING , do_eat , 0, SCMD_TASTE }, - { "teleport" , POS_DEAD , do_teleport , LVL_GOD, 0 }, - { "thank" , POS_RESTING , do_action , 0, 0 }, - { "think" , POS_RESTING , do_action , 0, 0 }, - { "thaw" , POS_DEAD , do_wizutil , LVL_FREEZE, SCMD_THAW }, - { "title" , POS_DEAD , do_title , 0, 0 }, - { "tickle" , POS_RESTING , do_action , 0, 0 }, - { "time" , POS_DEAD , do_time , 0, 0 }, - { "toggle" , POS_DEAD , do_toggle , 0, 0 }, - { "track" , POS_STANDING, do_track , 0, 0 }, - { "trackthru", POS_DEAD , do_gen_tog , LVL_IMPL, SCMD_TRACK }, - { "transfer" , POS_SLEEPING, do_trans , LVL_GOD, 0 }, - { "twiddle" , POS_RESTING , do_action , 0, 0 }, - { "typo" , POS_DEAD , do_gen_write, 0, SCMD_TYPO }, - { "unlock" , POS_SITTING , do_gen_door , 0, SCMD_UNLOCK }, - { "ungroup" , POS_DEAD , do_ungroup , 0, 0 }, - { "unban" , POS_DEAD , do_unban , LVL_GRGOD, 0 }, - { "unaffect" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_UNAFFECT }, - { "uptime" , POS_DEAD , do_date , LVL_IMMORT, SCMD_UPTIME }, - { "use" , POS_SITTING , do_use , 1, SCMD_USE }, - { "users" , POS_DEAD , do_users , LVL_IMMORT, 0 }, - { "value" , POS_STANDING, do_not_here , 0, 0 }, - { "version" , POS_DEAD , do_gen_ps , 0, SCMD_VERSION }, - { "visible" , POS_RESTING , do_visible , 1, 0 }, - { "vnum" , POS_DEAD , do_vnum , LVL_IMMORT, 0 }, - { "vstat" , POS_DEAD , do_vstat , LVL_IMMORT, 0 }, - { "wake" , POS_SLEEPING, do_wake , 0, 0 }, - { "wave" , POS_RESTING , do_action , 0, 0 }, - { "wear" , POS_RESTING , do_wear , 0, 0 }, - { "weather" , POS_RESTING , do_weather , 0, 0 }, - { "who" , POS_DEAD , do_who , 0, 0 }, - { "whoami" , POS_DEAD , do_gen_ps , 0, SCMD_WHOAMI }, - { "where" , POS_RESTING , do_where , 1, 0 }, - { "whisper" , POS_RESTING , do_spec_comm, 0, SCMD_WHISPER }, - { "whine" , POS_RESTING , do_action , 0, 0 }, - { "whistle" , POS_RESTING , do_action , 0, 0 }, - { "wield" , POS_RESTING , do_wield , 0, 0 }, - { "wiggle" , POS_STANDING, do_action , 0, 0 }, - { "wimpy" , POS_DEAD , do_wimpy , 0, 0 }, - { "wink" , POS_RESTING , do_action , 0, 0 }, - { "withdraw" , POS_STANDING, do_not_here , 1, 0 }, - { "wiznet" , POS_DEAD , do_wiznet , LVL_IMMORT, 0 }, - { ";" , POS_DEAD , do_wiznet , LVL_IMMORT, 0 }, - { "wizhelp" , POS_SLEEPING, do_commands , LVL_IMMORT, SCMD_WIZHELP }, - { "wizlist" , POS_DEAD , do_gen_ps , 0, SCMD_WIZLIST }, - { "wizlock" , POS_DEAD , do_wizlock , LVL_IMPL, 0 }, - { "worship" , POS_RESTING , do_action , 0, 0 }, - { "write" , POS_STANDING, do_write , 1, 0 }, - { "yawn" , POS_RESTING , do_action , 0, 0 }, - { "yodel" , POS_RESTING , do_action , 0, 0 }, - { "zreset" , POS_DEAD , do_zreset , LVL_GRGOD, 0 }, +{ "north" , POS_STANDING, do_move , 0, SCMD_NORTH }, +{ "east" , POS_STANDING, do_move , 0, SCMD_EAST }, +{ "south" , POS_STANDING, do_move , 0, SCMD_SOUTH }, +{ "west" , POS_STANDING, do_move , 0, SCMD_WEST }, +{ "up" , POS_STANDING, do_move , 0, SCMD_UP }, +{ "down" , POS_STANDING, do_move , 0, SCMD_DOWN }, +{ "at" , POS_DEAD , do_at , LVL_IMMORT, 0 }, +{ "advance" , POS_DEAD , do_advance , LVL_IMPL, 0 }, +{ "alias" , POS_DEAD , do_alias , 0, 0 }, +{ "accuse" , POS_SITTING , do_action , 0, 0 }, +{ "applaud" , POS_RESTING , do_action , 0, 0 }, +{ "assist" , POS_FIGHTING, do_assist , 1, 0 }, +{ "ask" , POS_RESTING , do_spec_comm, 0, SCMD_ASK }, +{ "auction" , POS_SLEEPING, do_gen_comm , 0, SCMD_AUCTION }, +{ "autoexit" , POS_DEAD , do_gen_tog , 0, SCMD_AUTOEXIT }, +{ "autoloot" , POS_DEAD , do_gen_tog , 0, SCMD_AUTOLOOT }, +{ "autodrain", POS_DEAD , do_gen_tog , 0, SCMD_AUTODRAIN }, +{ "bounce" , POS_STANDING, do_action , 0, 0 }, +{ "backstab" , POS_STANDING, do_backstab , 1, 0 }, +{ "ban" , POS_DEAD , do_ban , LVL_GRGOD, 0 }, +{ "balance" , POS_STANDING, do_not_here , 1, 0 }, +{ "bash" , POS_FIGHTING, do_bash , 1, 0 }, +{ "beg" , POS_RESTING , do_action , 0, 0 }, +{ "bleed" , POS_RESTING , do_action , 0, 0 }, +{ "blush" , POS_RESTING , do_action , 0, 0 }, +{ "bow" , POS_STANDING, do_action , 0, 0 }, +{ "brb" , POS_RESTING , do_action , 0, 0 }, +{ "brief" , POS_DEAD , do_gen_tog , 0, SCMD_BRIEF }, +{ "burp" , POS_RESTING , do_action , 0, 0 }, +{ "bury" , POS_STANDING, do_bury , 0, 0 }, +{ "buy" , POS_STANDING, do_not_here , 0, 0 }, +{ "bug" , POS_DEAD , do_gen_write, 0, SCMD_BUG }, +{ "cast" , POS_SITTING , do_cast , 1, 0 }, +{ "cackle" , POS_RESTING , do_action , 0, 0 }, +{ "check" , POS_STANDING, do_not_here , 1, 0 }, +{ "chuckle" , POS_RESTING , do_action , 0, 0 }, +{ "clap" , POS_RESTING , do_action , 0, 0 }, +{ "clear" , POS_DEAD , do_gen_ps , 0, SCMD_CLEAR }, +{ "close" , POS_SITTING , do_gen_door , 0, SCMD_CLOSE }, +{ "cls" , POS_DEAD , do_gen_ps , 0, SCMD_CLEAR }, +{ "consider" , POS_RESTING , do_consider , 0, 0 }, +{ "color" , POS_DEAD , do_color , 0, 0 }, +{ "comfort" , POS_RESTING , do_action , 0, 0 }, +{ "comb" , POS_RESTING , do_action , 0, 0 }, +{ "commands" , POS_DEAD , do_commands , 0, SCMD_COMMANDS }, +{ "compact" , POS_DEAD , do_gen_tog , 0, SCMD_COMPACT }, +{ "cough" , POS_RESTING , do_action , 0, 0 }, +{ "credits" , POS_DEAD , do_gen_ps , 0, SCMD_CREDITS }, +{ "cringe" , POS_RESTING , do_action , 0, 0 }, +{ "cry" , POS_RESTING , do_action , 0, 0 }, +{ "cuddle" , POS_RESTING , do_action , 0, 0 }, +{ "curse" , POS_RESTING , do_action , 0, 0 }, +{ "curtsey" , POS_STANDING, do_action , 0, 0 }, +{ "dance" , POS_STANDING, do_action , 0, 0 }, +{ "date" , POS_DEAD , do_date , LVL_IMMORT, SCMD_DATE }, +{ "daydream" , POS_SLEEPING, do_action , 0, 0 }, +{ "dc" , POS_DEAD , do_dc , LVL_GOD, 0 }, +{ "deposit" , POS_STANDING, do_not_here , 1, 0 }, +{ "diagnose" , POS_RESTING , do_diagnose , 0, 0 }, +{ "dig" , POS_STANDING, do_dig , 0, 0 }, +{ "display" , POS_DEAD , do_display , 0, 0 }, +{ "donate" , POS_RESTING , do_drop , 0, SCMD_DONATE }, +{ "drain" , POS_STANDING, do_drain , 0, 0 }, +{ "drink" , POS_RESTING , do_drink , 0, SCMD_DRINK }, +{ "drop" , POS_RESTING , do_drop , 0, SCMD_DROP }, +{ "drool" , POS_RESTING , do_action , 0, 0 }, +{ "eat" , POS_RESTING , do_eat , 0, SCMD_EAT }, +{ "echo" , POS_SLEEPING, do_echo , LVL_IMMORT, SCMD_ECHO }, +{ "emote" , POS_RESTING , do_echo , 1, SCMD_EMOTE }, +{ ":" , POS_RESTING, do_echo , 1, SCMD_EMOTE }, +{ "embrace" , POS_STANDING, do_action , 0, 0 }, +{ "enter" , POS_STANDING, do_enter , 0, 0 }, +{ "equipment", POS_SLEEPING, do_equipment, 0, 0 }, +{ "exits" , POS_RESTING , do_exits , 0, 0 }, +{ "examine" , POS_SITTING , do_examine , 0, 0 }, +{ "force" , POS_SLEEPING, do_force , LVL_GOD, 0 }, +{ "fart" , POS_RESTING , do_action , 0, 0 }, +{ "fill" , POS_STANDING, do_pour , 0, SCMD_FILL }, +{ "flee" , POS_FIGHTING, do_flee , 1, 0 }, +{ "flip" , POS_STANDING, do_action , 0, 0 }, +{ "flirt" , POS_RESTING , do_action , 0, 0 }, +{ "follow" , POS_RESTING , do_follow , 0, 0 }, +{ "fondle" , POS_RESTING , do_action , 0, 0 }, +{ "freeze" , POS_DEAD , do_wizutil , LVL_FREEZE, SCMD_FREEZE }, +{ "french" , POS_RESTING , do_action , 0, 0 }, +{ "frown" , POS_RESTING , do_action , 0, 0 }, +{ "fume" , POS_RESTING , do_action , 0, 0 }, +{ "get" , POS_RESTING , do_get , 0, 0 }, +{ "gasp" , POS_RESTING , do_action , 0, 0 }, +{ "gecho" , POS_DEAD , do_gecho , LVL_GOD, 0 }, +{ "give" , POS_RESTING , do_give , 0, 0 }, +{ "giggle" , POS_RESTING , do_action , 0, 0 }, +{ "glare" , POS_RESTING , do_action , 0, 0 }, +{ "goto" , POS_SLEEPING, do_goto , LVL_IMMORT, 0 }, +{ "gold" , POS_RESTING , do_gold , 0, 0 }, +{ "gossip" , POS_SLEEPING, do_gen_comm , 0, SCMD_GOSSIP }, +{ "group" , POS_RESTING , do_group , 1, 0 }, +{ "grab" , POS_RESTING , do_grab , 0, 0 }, +{ "grats" , POS_SLEEPING, do_gen_comm , 0, SCMD_GRATZ }, +{ "greet" , POS_RESTING , do_action , 0, 0 }, +{ "grin" , POS_RESTING , do_action , 0, 0 }, +{ "groan" , POS_RESTING , do_action , 0, 0 }, +{ "grope" , POS_RESTING , do_action , 0, 0 }, +{ "grovel" , POS_RESTING , do_action , 0, 0 }, +{ "growl" , POS_RESTING , do_action , 0, 0 }, +{ "gsay" , POS_SLEEPING, do_gsay , 0, 0 }, +{ "gtell" , POS_SLEEPING, do_gsay , 0, 0 }, +{ "help" , POS_DEAD , do_help , 0, 0 }, +{ "handbook" , POS_DEAD , do_gen_ps , LVL_IMMORT, SCMD_HANDBOOK }, +{ "hcontrol" , POS_DEAD , do_hcontrol , LVL_GRGOD, 0 }, +{ "hiccup" , POS_RESTING , do_action , 0, 0 }, +{ "hide" , POS_RESTING , do_hide , 1, 0 }, +{ "hit" , POS_FIGHTING, do_hit , 0, SCMD_HIT }, +{ "hold" , POS_RESTING , do_grab , 1, 0 }, +{ "holler" , POS_RESTING , do_gen_comm , 1, SCMD_HOLLER }, +{ "holylight", POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_HOLYLIGHT }, +{ "hop" , POS_RESTING , do_action , 0, 0 }, +{ "house" , POS_RESTING , do_house , 0, 0 }, +{ "hug" , POS_RESTING , do_action , 0, 0 }, +{ "inventory", POS_DEAD , do_inventory, 0, 0 }, +{ "idea" , POS_DEAD , do_gen_write, 0, SCMD_IDEA }, +{ "imotd" , POS_DEAD , do_gen_ps , LVL_IMMORT, SCMD_IMOTD }, +{ "immlist" , POS_DEAD , do_gen_ps , 0, SCMD_IMMLIST }, +{ "info" , POS_SLEEPING, do_gen_ps , 0, SCMD_INFO }, +{ "insult" , POS_RESTING , do_insult , 0, 0 }, +{ "invis" , POS_DEAD , do_invis , LVL_IMMORT, 0 }, +{ "junk" , POS_RESTING , do_drop , 0, SCMD_JUNK }, +{ "kill" , POS_FIGHTING, do_kill , 0, 0 }, +{ "kick" , POS_FIGHTING, do_kick , 1, 0 }, +{ "kiss" , POS_RESTING , do_action , 0, 0 }, +{ "look" , POS_RESTING , do_look , 0, SCMD_LOOK }, +{ "laugh" , POS_RESTING , do_action , 0, 0 }, +{ "last" , POS_DEAD , do_last , LVL_GOD, 0 }, +{ "leave" , POS_STANDING, do_leave , 0, 0 }, +{ "levels" , POS_DEAD , do_levels , 0, 0 }, +{ "list" , POS_STANDING, do_not_here , 0, 0 }, +{ "lick" , POS_RESTING , do_action , 0, 0 }, +{ "lock" , POS_SITTING , do_gen_door , 0, SCMD_LOCK }, +{ "load" , POS_DEAD , do_load , LVL_GOD, 0 }, +{ "love" , POS_RESTING , do_action , 0, 0 }, +{ "moan" , POS_RESTING , do_action , 0, 0 }, +{ "motd" , POS_DEAD , do_gen_ps , 0, SCMD_MOTD }, +{ "mail" , POS_STANDING, do_not_here , 1, 0 }, +{ "massage" , POS_RESTING , do_action , 0, 0 }, +{ "mute" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_SQUELCH }, +{ "murder" , POS_FIGHTING, do_hit , 0, SCMD_MURDER }, +{ "news" , POS_SLEEPING, do_gen_ps , 0, SCMD_NEWS }, +{ "nibble" , POS_RESTING , do_action , 0, 0 }, +{ "nod" , POS_RESTING , do_action , 0, 0 }, +{ "noauction", POS_DEAD , do_gen_tog , 0, SCMD_NOAUCTION }, +{ "nogossip" , POS_DEAD , do_gen_tog , 0, SCMD_NOGOSSIP }, +{ "nograts" , POS_DEAD , do_gen_tog , 0, SCMD_NOGRATZ }, +{ "nohassle" , POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_NOHASSLE }, +{ "norepeat" , POS_DEAD , do_gen_tog , 0, SCMD_NOREPEAT }, +{ "noshout" , POS_SLEEPING, do_gen_tog , 1, SCMD_DEAF }, +{ "nosummon" , POS_DEAD , do_gen_tog , 1, SCMD_NOSUMMON }, +{ "notell" , POS_DEAD , do_gen_tog , 1, SCMD_NOTELL }, +{ "notitle" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_NOTITLE }, +{ "nowiz" , POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_NOWIZ }, +{ "nudge" , POS_RESTING , do_action , 0, 0 }, +{ "nuzzle" , POS_RESTING , do_action , 0, 0 }, +{ "olc" , POS_DEAD , do_olc , LVL_IMPL, 0 }, +{ "order" , POS_RESTING , do_order , 1, 0 }, +{ "offer" , POS_STANDING, do_not_here , 1, 0 }, +{ "open" , POS_SITTING , do_gen_door , 0, SCMD_OPEN }, +{ "put" , POS_RESTING , do_put , 0, 0 }, +{ "pat" , POS_RESTING , do_action , 0, 0 }, +{ "page" , POS_DEAD , do_page , LVL_GOD, 0 }, +{ "pardon" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_PARDON }, +{ "peer" , POS_RESTING , do_action , 0, 0 }, +{ "pick" , POS_STANDING, do_gen_door , 1, SCMD_PICK }, +{ "point" , POS_RESTING , do_action , 0, 0 }, +{ "poke" , POS_RESTING , do_action , 0, 0 }, +{ "policy" , POS_DEAD , do_gen_ps , 0, SCMD_POLICIES }, +{ "ponder" , POS_RESTING , do_action , 0, 0 }, +{ "poofin" , POS_DEAD , do_poofset , LVL_IMMORT, SCMD_POOFIN }, +{ "poofout" , POS_DEAD , do_poofset , LVL_IMMORT, SCMD_POOFOUT }, +{ "pour" , POS_STANDING, do_pour , 0, SCMD_POUR }, +{ "pout" , POS_RESTING , do_action , 0, 0 }, +{ "prompt" , POS_DEAD , do_display , 0, 0 }, +{ "practice" , POS_RESTING , do_practice , 1, 0 }, +{ "pray" , POS_SITTING , do_action , 0, 0 }, +{ "puke" , POS_RESTING , do_action , 0, 0 }, +{ "punch" , POS_RESTING , do_action , 0, 0 }, +{ "purr" , POS_RESTING , do_action , 0, 0 }, +{ "purge" , POS_DEAD , do_purge , LVL_GOD, 0 }, +{ "quaff" , POS_RESTING , do_use , 0, SCMD_QUAFF }, +{ "qecho" , POS_DEAD , do_qcomm , LVL_IMMORT, SCMD_QECHO }, +{ "quest" , POS_DEAD , do_gen_tog , 0, SCMD_QUEST }, +{ "qui" , POS_DEAD , do_quit , 0, 0 }, +{ "quit" , POS_DEAD , do_quit , 0, SCMD_QUIT }, +{ "qsay" , POS_RESTING , do_qcomm , 0, SCMD_QSAY }, +{ "reply" , POS_SLEEPING, do_reply , 0, 0 }, +{ "rest" , POS_RESTING , do_rest , 0, 0 }, +{ "read" , POS_RESTING , do_look , 0, SCMD_READ }, +{ "reload" , POS_DEAD , do_reboot , LVL_IMPL, 0 }, +{ "recite" , POS_RESTING , do_use , 0, SCMD_RECITE }, +{ "receive" , POS_STANDING, do_not_here , 1, 0 }, +{ "remove" , POS_RESTING , do_remove , 0, 0 }, +{ "rent" , POS_STANDING, do_not_here , 1, 0 }, +{ "report" , POS_RESTING , do_report , 0, 0 }, +{ "reroll" , POS_DEAD , do_wizutil , LVL_GRGOD, SCMD_REROLL }, +{ "rescue" , POS_FIGHTING, do_rescue , 1, 0 }, +{ "restore" , POS_DEAD , do_restore , LVL_GOD, 0 }, +{ "return" , POS_DEAD , do_return , 0, 0 }, +{ "roll" , POS_RESTING , do_action , 0, 0 }, +{ "roomflags", POS_DEAD , do_gen_tog , LVL_IMMORT, SCMD_ROOMFLAGS }, +{ "ruffle" , POS_STANDING, do_action , 0, 0 }, +{ "say" , POS_RESTING , do_say , 0, 0 }, +{ "'" , POS_RESTING , do_say , 0, 0 }, +{ "save" , POS_SLEEPING, do_save , 0, 0 }, +{ "score" , POS_DEAD , do_score , 0, 0 }, +{ "scream" , POS_RESTING , do_action , 0, 0 }, +{ "sell" , POS_STANDING, do_not_here , 0, 0 }, +{ "send" , POS_SLEEPING, do_send , LVL_GOD, 0 }, +{ "set" , POS_DEAD , do_set , LVL_GOD, 0 }, +{ "shout" , POS_RESTING , do_gen_comm , 0, SCMD_SHOUT }, +{ "shake" , POS_RESTING , do_action , 0, 0 }, +{ "shiver" , POS_RESTING , do_action , 0, 0 }, +{ "show" , POS_DEAD , do_show , LVL_IMMORT, 0 }, +{ "shrug" , POS_RESTING , do_action , 0, 0 }, +{ "shutdow" , POS_DEAD , do_shutdown , LVL_IMPL, 0 }, +{ "shutdown" , POS_DEAD , do_shutdown , LVL_IMPL, SCMD_SHUTDOWN }, +{ "sigh" , POS_RESTING , do_action , 0, 0 }, +{ "sing" , POS_RESTING , do_action , 0, 0 }, +{ "sip" , POS_RESTING , do_drink , 0, SCMD_SIP }, +{ "sit" , POS_RESTING , do_sit , 0, 0 }, +{ "skillset" , POS_SLEEPING, do_skillset , LVL_GRGOD, 0 }, +{ "sleep" , POS_SLEEPING, do_sleep , 0, 0 }, +{ "slap" , POS_RESTING , do_action , 0, 0 }, +{ "slowns" , POS_DEAD , do_gen_tog , LVL_IMPL, SCMD_SLOWNS }, +{ "smile" , POS_RESTING , do_action , 0, 0 }, +{ "smirk" , POS_RESTING , do_action , 0, 0 }, +{ "snicker" , POS_RESTING , do_action , 0, 0 }, +{ "snap" , POS_RESTING , do_action , 0, 0 }, +{ "snarl" , POS_RESTING , do_action , 0, 0 }, +{ "sneeze" , POS_RESTING , do_action , 0, 0 }, +{ "sneak" , POS_STANDING, do_sneak , 1, 0 }, +{ "sniff" , POS_RESTING , do_action , 0, 0 }, +{ "snore" , POS_SLEEPING, do_action , 0, 0 }, +{ "snowball" , POS_STANDING, do_action , LVL_IMMORT, 0 }, +{ "snoop" , POS_DEAD , do_snoop , LVL_GOD, 0 }, +{ "snuggle" , POS_RESTING , do_action , 0, 0 }, +{ "socials" , POS_DEAD , do_commands , 0, SCMD_SOCIALS }, +{ "split" , POS_SITTING , do_split , 1, 0 }, +{ "spank" , POS_RESTING , do_action , 0, 0 }, +{ "spit" , POS_STANDING, do_action , 0, 0 }, +{ "squeeze" , POS_RESTING , do_action , 0, 0 }, +{ "stand" , POS_RESTING , do_stand , 0, 0 }, +{ "stare" , POS_RESTING , do_action , 0, 0 }, +{ "stat" , POS_DEAD , do_stat , LVL_IMMORT, 0 }, +{ "steal" , POS_STANDING, do_steal , 1, 0 }, +{ "steam" , POS_RESTING , do_action , 0, 0 }, +{ "stroke" , POS_RESTING , do_action , 0, 0 }, +{ "strut" , POS_STANDING, do_action , 0, 0 }, +{ "sulk" , POS_RESTING , do_action , 0, 0 }, +{ "switch" , POS_DEAD , do_switch , LVL_GRGOD, 0 }, +{ "syslog" , POS_DEAD , do_syslog , LVL_IMMORT, 0 }, +{ "tell" , POS_DEAD , do_tell , 0, 0 }, +{ "tackle" , POS_RESTING , do_action , 0, 0 }, +{ "take" , POS_RESTING , do_get , 0, 0 }, +{ "tango" , POS_STANDING, do_action , 0, 0 }, +{ "taunt" , POS_RESTING , do_action , 0, 0 }, +{ "taste" , POS_RESTING , do_eat , 0, SCMD_TASTE }, +{ "teleport" , POS_DEAD , do_teleport , LVL_GOD, 0 }, +{ "thank" , POS_RESTING , do_action , 0, 0 }, +{ "think" , POS_RESTING , do_action , 0, 0 }, +{ "thaw" , POS_DEAD , do_wizutil , LVL_FREEZE, SCMD_THAW }, +{ "title" , POS_DEAD , do_title , 0, 0 }, +{ "tickle" , POS_RESTING , do_action , 0, 0 }, +{ "time" , POS_DEAD , do_time , 0, 0 }, +{ "toggle" , POS_DEAD , do_toggle , 0, 0 }, +{ "track" , POS_STANDING, do_track , 0, 0 }, +{ "trackthru", POS_DEAD , do_gen_tog , LVL_IMPL, SCMD_TRACK }, +{ "transfer" , POS_SLEEPING, do_trans , LVL_GOD, 0 }, +{ "twiddle" , POS_RESTING , do_action , 0, 0 }, +{ "typo" , POS_DEAD , do_gen_write, 0, SCMD_TYPO }, +{ "unlock" , POS_SITTING , do_gen_door , 0, SCMD_UNLOCK }, +{ "ungroup" , POS_DEAD , do_ungroup , 0, 0 }, +{ "unban" , POS_DEAD , do_unban , LVL_GRGOD, 0 }, +{ "unaffect" , POS_DEAD , do_wizutil , LVL_GOD, SCMD_UNAFFECT }, +{ "uptime" , POS_DEAD , do_date , LVL_IMMORT, SCMD_UPTIME }, +{ "use" , POS_SITTING , do_use , 1, SCMD_USE }, +{ "users" , POS_DEAD , do_users , LVL_IMMORT, 0 }, +{ "value" , POS_STANDING, do_not_here , 0, 0 }, +{ "version" , POS_DEAD , do_gen_ps , 0, SCMD_VERSION }, +{ "visible" , POS_RESTING , do_visible , 1, 0 }, +{ "vnum" , POS_DEAD , do_vnum , LVL_IMMORT, 0 }, +{ "vstat" , POS_DEAD , do_vstat , LVL_IMMORT, 0 }, +{ "wake" , POS_SLEEPING, do_wake , 0, 0 }, +{ "wave" , POS_RESTING , do_action , 0, 0 }, +{ "wear" , POS_RESTING , do_wear , 0, 0 }, +{ "weather" , POS_RESTING , do_weather , 0, 0 }, +{ "who" , POS_DEAD , do_who , 0, 0 }, +{ "whoami" , POS_DEAD , do_gen_ps , 0, SCMD_WHOAMI }, +{ "where" , POS_RESTING , do_where , 1, 0 }, +{ "whisper" , POS_RESTING , do_spec_comm, 0, SCMD_WHISPER }, +{ "whine" , POS_RESTING , do_action , 0, 0 }, +{ "whistle" , POS_RESTING , do_action , 0, 0 }, +{ "wield" , POS_RESTING , do_wield , 0, 0 }, +{ "wiggle" , POS_STANDING, do_action , 0, 0 }, +{ "wimpy" , POS_DEAD , do_wimpy , 0, 0 }, +{ "wink" , POS_RESTING , do_action , 0, 0 }, +{ "withdraw" , POS_STANDING, do_not_here , 1, 0 }, +{ "wiznet" , POS_DEAD , do_wiznet , LVL_IMMORT, 0 }, +{ ";" , POS_DEAD , do_wiznet , LVL_IMMORT, 0 }, +{ "wizhelp" , POS_SLEEPING, do_commands , LVL_IMMORT, SCMD_WIZHELP }, +{ "wizlist" , POS_DEAD , do_gen_ps , 0, SCMD_WIZLIST }, +{ "wizlock" , POS_DEAD , do_wizlock , LVL_IMPL, 0 }, +{ "worship" , POS_RESTING , do_action , 0, 0 }, +{ "write" , POS_STANDING, do_write , 1, 0 }, +{ "yawn" , POS_RESTING , do_action , 0, 0 }, +{ "yodel" , POS_RESTING , do_action , 0, 0 }, +{ "zreset" , POS_DEAD , do_zreset , LVL_GRGOD, 0 }, const char *fill[] = {