Things I do intend to do in the future, when I have time/will…
Content
towns without (bad) monsters, move dungeons outside towns; if still monsters, explain/give decent reasons
make towns bigger
no more houses without map
add ingame lore - world creation, why different magical powers, and such; take from wiki
more quests
hints about quests with various NPCs / at various places
for towns like Navar, enforce the 'no undead' rules
town illuminations at night
Darcap
record how much you spend on bar
release some quests/stuff when you spend enough
NPCs hate/love relation - you kill an NPC, you get a reward from another, but are forbidden [for some time] to get into such and such shops
Gameplay
skills like cooking, mining, and such ⇒ less 'hack and hack'
more graphism / items, including no combat ones
expand 'use' command; put combinations in a file, with more options partially done, merged with alchemy, but limited
alchemy: add 'on_failure_yield' for failures, add min required level
harvest: add breakage percentage
alchemy: multiple cauldrons for one recipe
-
skills or spells consuming specific items when used/cast - done for spells
quests command, and mechanism around – would need a way to activate a quest when reading a randomly generated scroll, maybe? done
better random maps; fix key placement with some a* algorithm to split the map in parts
reduce food supply, like divide by 10 the current values?, to give more interest to food - right now it's useless
show available operations on an item? like 'drop, apply, slice with knife'?
Quest mechanism
First low-level storage mechanism committed.
TODO:
Goal: the most flexible
Consequence: only provide base mechanism - quest state tracking. And let every other aspect be controlled by the quest writer. This doesn't prevent writing higher level quest mechanisms if needed.
Should there be an explicit available quest listing for the players? So they know what to do?
Most flexible idea: add a plugin function for quest handling, to describe the quest and such, call it periodically to give hints to the players, stuff like that.
Only one 'active' quest at the same time, but multiple 'in progress'? Active quest can give hints if needed (show target position on map, stuff like that).
Server-side, a quest for a player is:
an internal code - must be unique
a description
current state - positive integer, value quest-specific, or special value -1 meaning completed
current state description - to remind the player about what to do
manipulation functions, with a client-side notification, for quest start / modification / completion
setup command and associated client requests to get quest status
Client-side:
Harvesting stuff
Changes that could be done to harvesting things:
describe in a file instead of using special key/values
'resources exhaustion' if harvesting always on the same place
tweak only drop monster special parts if player has a decent 'butchering' skill?
Various
(maybe one day)
expand CRE to actually edit things; merge mapper into it; add cache to not rebuild all things all the time
quick filters to find stuff in eg archetypes
Python: enable script to register for global events without splitting stuff in a zillion scripts
use XML for various file formats, or some common format
move to Qt/C++, to not reinvent the wheel all the time; and massively clean the code
i18n easier to figure out (goes with previous point) done
threading ideas:
one thread for sockets, queues players commands (and processes talk/chat ones, all non map-linked, immediately)
active objects on a map-basis
pool of map-processing tasks for a group of maps ; move maps between pools based on load
in/out queues to put items on maps in other pools
issue: processing linked maps should be by the same thread to not have conflicts/multiple access; or all potentially linked maps in the same (special) pool? could be an issue with bigworld, but could work
threads for resources (arch, formulae, treasures, …) reloading, then map processing updates fields (first load, then change based on pointers/names, then free old stuff)
thread for metaserver notification
map-loading through threads / in the background?
maps-swapping thread
implies a new player state, 'awaiting map loading' - shouldn't be too long though
check scripts for multiple map access - how to create maps, how to put objects on them (which becomes an asynchronous operation)
old obsolete stuff
Todo list:
add hooks for plugin events at many places
let random maps be (easily) generated by plugins. Currently it's possible (intercept the apply event of a specific exit or globally), but you won't benefit from code in random map part. Ideally, a plugin would just send a map (###D### format) and let the random code handle it
improve monster AI. Steal Daimonin's idea of monsters going back to start position when player leaves map
document Python interface mostly done
expand buildable stuff (whole maps?), see, Rednexela's building plot too
make Win build process painless, like One Batch to build them all and in the Sourceforge upload them
fix bugs :)