Atrinik Server 2.5
Todo List

Global apply_lighter (object *who, object *lighter)
This type is currently not used in Atrinik, perhaps make use of it?

File armour_improver.c
Test how the code works and perhaps make use of it for Atrinik.

Global blocked_link_2 (object *op, mapstruct *map, int x, int y)
This function should really be combined with the above to reduce code duplication.

Global cast_dust (object *op, object *throw_ob, int dir)
This function needs to be rewritten. Works for area effect spells only now.

Global check_quest (object *op, object *quest_container)
Add support for multiple objects in quest_container's inventory?

Global check_walk_off (object *op, object *originator, int flags)
Document.

Global check_walk_on (object *op, object *originator, int flags)
Document.

Global checkdm (object *op, char *pl_passwd)
Should be rewritten to use objectlinks, similar to ban.c.

Global command_who (object *op, char *params)
Perhaps make a GUI from this like the party GUI and you would be able to press enter on player name and that would bring up the /tell console?

Global create_one_treasure (treasurelist *tl, object *op, int flag, int difficulty, int t_style, int a_chance, int tries, struct _change_arch *change_arch)
Get rid of the goto.

File define.h
This file is really too large. With all the .h files around, this file should be better split between them - things that deal with objects should be in objects.h, things dealing with players in player.h, etc. As it is, everything just seems to be dumped in here.

Global dequeue_path_requests ()
Only compute time if there is something more in the queue, something like if (path_request_queue_empty()) { break; }

Global distance_heuristic (path_node *start, path_node *current, path_node *goal)
Cache the results from get_rangevector() for better efficiency?

Global encode_path (path_node *path)
Buffer overflow checking.

Global expand_sight (object *op)
Improve the formula.

Global find_first_free_spot (archetype *at, object *op, mapstruct *m, int x, int y)
Document.

Global find_first_free_spot2 (archetype *at, mapstruct *m, int x, int y, int start, int range)
Document.

Global find_free_spot (archetype *at, object *op, mapstruct *m, int x, int y, int start, int stop)
Document.

Global fire_cast_spell (object *op, char *params)
Avoid code repetition by merging with command_cast_spell().

Global fix_player (object *op)
This function is too long, and should be cleaned / split.

Global FLAG_SPLITTING
Remove?

Global get_rangevector (object *op1, object *op2, rv_vector *retval, int flags)
Document.

Global get_rangevector_from_mapcoords (mapstruct *map1, int x1, int y1, mapstruct *map2, int x2, int y2, rv_vector *retval, int flags)
Document.

Global init_connection (socket_struct *ns, const char *from_ip)
Remove version sending legacy support for older clients at some point.

Global insert_priority_node (path_node *node, path_node **list)
Make more efficient by using skip list or heaps.

Global insert_spell_effect (char *archname, mapstruct *m, int x, int y)
Does not support multi arch effects yet.

Global level_exp (int level, double expmul)
Remove, since the param expmul seems to always be passed as '1.0'?

Global lose_priest_exp (object *pl, int loss)
Make work again?

Global move_creator (object *op)

Check if it works properly with multi arch objects.

Perhaps if other_arch is set try to check for an object in its inventory, and copy any modified values?

Global process_object (object *op)
Do not process objects that are inside an object that is inside a creator (using get_env_recursive())?

File random_map.c
Explain process, layout signs (# C D < >) and such.

Global relative_tile_position_rec (mapstruct *map1, mapstruct *map2, int *x, int *y, uint32 id, int level)
A bidirectional breadth-first search would be more efficient.

Global retrofit_joined_wall (mapstruct *the_map, int i, int j, int insert_flag, RMParms *RP)
Merge with pick_joined_wall()?

Global set_ring_bonus (object *op, int bonus, int level)
Get rid of the gotos in here.

Global SPELL_USE_BOOK
Remove as this no longer seems to be relevant/used?

File weapon_improver.c
Test how the code works and perhaps make use of it for Atrinik.