wMUD TODO file
==============

This file is continuously migrated into the Zim wiki (later it will become
media or dokuwiki).

Legend
------

[  ] planned
[f ] feature request added to flyspray
[ i] implementation began
[XX] finished

Data storage and code flow
--------------------------

[ i] * Store EVERYTHING in an SQLite3 database

[ i] * Separate threads for separate jobs. Game thread for accepting players,
	 maintenance thread to continuously maintain the database, chat threads
	 for different chat protocols, world builder thread for online world
         building.

[  ] * All descriptions should be written in a markup language to support bold,
         underline, colours, and such

[f ] * Loadable modules for commands, races, classes, etc.

[f ] * Forgot password option

[f ] * Remind the player if they had changed their password too long ago

Game world
----------

[  ] * Movement
[ X]   - Directions are loaded from the database
[  ]   - Rooms may have other exits, like portals, which can be ENTER'ed.
[  ]   - Doors can be locked or hidden
[  ]   - <mob> arrives from <direction>

[ X] * Planets/Planes
[ X]   - Rooms are connected to Planets
[ X]   - Planets are connected to Planes
[  ]   - Rooms may have different descriptions depending on the Plane the
           Character is active on

[f ] * Player grouping (AKA Party or formations)
[f ]   - Group leader (can promote others, demoting themselves)
[f ]   - Maximum group size
[  ]   - Following is not grouping

[  ] * People start in a well-defined start location (randomly selected during
         character generation)
[  ]   - Races may have at least one possible start locations, so different
           races can start at different locations
[  ]   - The whole world should have one fallback start location (Tree of
	   Memories?). Characters with no specified starting locations will
           start the game here.

[  ] * 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.
[  ]   - To make the decision if a town actually needs new houses, some
           statistics are required.
[  ]   - Housing can be decorated with different objects ('decoration' item
           flag; can not exceed a maximum number, depending on house size).
[  ]   - Houses get untidy over time, so they need to be cleaned
[  ]   - House maids (for cleaning, and maybe basic cooking)
[  ]   - Houses have a fix price
[  ]   - Locks
[  ]     . Locks of houses not visited occasionally get more and more rusty,
             making it easier to break into them. Burglars can take whatever
             they want!
[  ]     . Locks decompose after a given time, making the house door openable
             and the house accessible to anyone
[  ]     . Fixing the lock requires Mechanics after a given amount of condition
             loss, otherwise a small amount of oil helps
[  ]     . Unowned houses' locks are maintained regularly
[  ]     . Players may occupy an abandoned house if the world is configured to
	     enable it. Otherwise abandoned houses get occupied by town guards,
             and are sold again after a given time.

[  ] * 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 if not occupied
[  ]     . Tables have a maximum number of chairs (which may vary depending on
             the table's size)

[  ] * Item disposal methods
[  ]   - Drop (DROP <item>)
	   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 (DONATE <item>)
	   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
	   for public service. Items dropped in donation centers also count as
           donated
[  ]   - Sacrifice (SACRIFICE <item> [to] <god>)
	   Sacrificed items become energy, which the Gods retun as Sacrifice
           Points
[  ]   - Salvage (SALVAGE <item>)
	   Most items can be salvaged to get some raw materials back. Of
	   course, it is way less than the original amount required to craft
           the item. Salvaging may require tools.
[  ]   - Auction (AUCTION <item>)
           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) (item flag
	  'recipe'; custom fields must be added for Profession ID and recipe
          ID)
[  ]   - Corpse skinning (only corpses of mobs with the 'skinnable' flag)
[  ]   - Corpse butching (only corpses of mobs with the 'butchable' flag)
[  ]   - Fishing (only in rooms with the 'fishing' flag)
[  ]   - Mining (only if the room has an item with the 'minable' flag)
[  ]   - Foraging (only if the room has an item with the 'foragable' flag)
[  ]   - Blacksmithing (only if the room has an item with the 'anvil' flag, and
           the character has an item with the 'blacksmith-hammer' flag)
[  ]   - Alchemy (some recipes may require an item in the room with the
           'alchemytools' flag)

[  ] * Companions
[  ]   - Combat/Pack animals
[  [   - May be rented
[  ]   - They should also advance in age
[  ]   - Mounts (may also act as combat/pack animals)
[  ]   - Charming
[  ]   - Servants, pages

[  ] * Gods
[  ]   - Gods may be chosen upon character creation. Amount is configurable.
           (for Iminiru, a character MUST have at least two Gods) 
[  ]   - Sacrifices
[  ]   - Prayers

[  ] * Reputation system

[  ] * Player Clans
[  ]   - Clan bank
[  ]   - Clan wars (Players from a Guild may PK players from another Guild if
           the two Guilds are in war with each other)

[  ] * Item types
[  ]   - Armour/Clothing
[  ]      . Shields
[  ]   - Weapon
[  ]     . Ballista
[  ]     . Bashing
[  ]     . Bow
[  ]     . Crossbow
[  ]     . Club
[  ]     . Knuckle
[  ]     . Lash
[  ]     . Net
[  ]     . Piercing
[  ]     . Slashing
[  ]     . Whip
[  ]   - Potion
[  ]   - Poison (appliable to weapons)
[  ]   - Food/Water/Alcohol/Sugar
[  ]   - Light
[  ]   - Spell reagent
[  ]   - Material
[  ]   - Artifacts
[  ]   - Containers
[  ]     . Bags
[  ]     . Chests

[  ] * Death system, Rebirth

[  ] * War Machines

[  ] * Shops
[  ]   - Most shops should open/close depending on the in-game time

[  ] * Skills/Spells/Talents granted by the Gods
[  ]   - Fear

[  ] * Magic Profession

[  ] * Fighting Professions with practicing
[  ]   - Disarm
[  ]   - Dual Wield
[  ]   - Stun

[  ] * The whole system should be built with class support, although Iminiru
	 will technically have only one "Adventurer" class. Also, multiclassing
         should be possible

[  ] * Character aging, with racial maximum age. When a character is too old,
	 they can retire (e.g they will become story tellers or such), or die
	 and reborn.  Reborn characters have a bonus to their maximum age. Upon
	 rebirth they create a totally new character, with all their old data
	 remaining in the database. Reborn characters have the possibility to
         regain all their old powers after a few years

[  ] * Quests
[  ]   - Quests given by NPCs
[  ]   - Player creatable quests
[  ]   - 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

[  ] * Speedwalking?

[  ] * Arenas

[  ] * Mercy mob flag: mobs will stop attacking if their enemy is unable to
         fight any more

[  ] * Mobs should be able to wear/wield items, have an inventory, have Skills,
         Spells and Talents

[  ] * Sneaking, thieving, robbery
[  ]   - 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 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

[  ] * Money (with the possibility to create several money types, like
         different currencies for different Races or Countries)
[  ]   - Money has weight

[  ] * Banks
[  ]   - 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

[  ] * 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

[  ] * 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

[  ] * Mob glowing (e.g they will be unable to sneak)

[  ] * Polls

[  ] * Configurable prompt

[  ] * Marriage?

[  ] * Character titles, which can be rewards for quests, or be bought for a
         high amount of money

[  ] * Spirit 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)

[  ] * Special rooms
[  ]   - Death trap rooms
[  ]   - Regeneration rooms
[  ]   - 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

[  ] * 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.

[  ] * Automatically hiding/appearing exits (e.g to create mazes or to hide
         stuff)

[  ] * Mailing

[  ] * Abilities
[  ]   - 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.

[  ] * Lights that shine on each other and on the world

Commands
--------

[  ] * Commands already defined in Zim Wiki:
[  ]   - DROP
[  ]   - GET
[  ]   - PRACISE/PRACTICE
[  ]   - PRAY
[  ]   - RECALL
	   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
	   Shows all the spells that affects the character (spell name, apply
           count, duration, applier name)
[  ]   - SCORE
           Shows the player's statistics
[  ]   - INVENTORY
           Shows the character's inventory
[  ]   - EQUIPMENT
           Shows the equipped items
[  ]   - 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]
[  ]     . AUTOEXIT    [ON ]
[  ]     . 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
           Exits the game
[  ]   - LOGOUT
           Goes back to the intro menu
[  ]   - USE
	   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

CircleMUD commands
------------------

POS_DEAD

; advance alias at autodrain autoexit autoloot ban brief bug clear cls color
commands compact credits date dc display freeze gecho handbook hcontrol help
holylight idea immlist imotd inventory invis last levels load motd mute
noauction nogossip nograts nohassle norepeat nosummon notell notitle nowiz olc
page pardon policy poofin poofout prompt purge qecho quest qui quit reload
reroll restore return roomflags score set show shutdow shutdown slowns snoop
socials stat switch syslog teleport tell thaw time title toggle trackthru typo
unaffect unban ungroup uptime users version vnum vstat who whoami wimpy wizlist
wizlock wiznet zreset

POS_FIGHTING

assist bash flee hit kick kill murder rescue

POS_RESTING

: ' applaud ask beg bleed blush brb burp cackle chuckle clap comb comfort
consider cough cringe cry cuddle curse diagnose donate drink drool drop eat
emote exits fart flirt follow fondle french frown fume gasp get giggle give
glare gold grab greet grin groan grope group grovel growl hiccup hide hold
holler hop house hug insult junk kiss laugh lick look love massage moan nibble
nod nudge nuzzle order pat peer point poke ponder pout practice puke punch purr
put qsay quaff read recite remove report rest roll say scream shake shiver
shout shrug sigh sing sip sit slap smile smirk snap snarl sneeze snicker sniff
snuggle spank squeeze stand stare steam stroke sulk tackle take taste taunt
thank think tickle twiddle visible wave wear weather where whine whisper
whistle wield wink worship yawn yodel

POS_SITTING

accuse cast close examine lock open pray split unlock use

POS_SLEEPING

auction daydream echo equipment force gossip goto grats gsay gtell info news
noshout reply save send skillset sleep snore transfer wake wizhelp

POS_STANDING

backstab balance bounce bow bury buy check curtsey dance deposit dig down drain
east embrace enter fill flip leave list mail north offer pick pour receive rent
ruffle sell sneak snowball south spit steal strut tango track up value west
wiggle withdraw write

Fill-in words:

in from with the on at to

Reserved words:

a an self me all room someone something
