having a) monsters as treasures b) multipart monsters as treasures and c) multipart monsters as terasures on tiled maps... hit a big pile of bugs again. this change: - implements a per-map active flag. when items are being inserted they are activated or deactivated according to that flag. this could get rid of most or even all of the explicit activate/deactivate calls. - implement some glue to make instantiating multipart objects easier (this is used inside fix_multipart_objects and might make it possible to put multipart objects at map borders - those were winged before) - do finer-grained locking as to not lead to deadlocks when insert recurses e.g. when loading tiled maps.
- reduce default output-sync to less than a second - output-sync command now uses seconds as unit, not something users cannot even know. - lots of useless const adjustments.
nano-cleanups
fix dead code to confuse me less
partial region cleanup
""
started a fix of the log
- style maps need very special treatment - cf has a nonzero chance of crashing in a random map
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
the big rename
- small, but subtle, rewrite of object management - perl will now keep attachable objects alive - objects are now refcounted - refcouts need to be tested explicitly (refcnt_chk) - explicit destroy is required current - explicit destroy asks "nicely" for the object to self destruct, if possible - refcounts will be used during mortal killing - minor bugfixes, optimisations etc. - some former hacks removed.
an experiment
- improved login code - removed some cruft code and (finally), the player_pod hack
- preliminary check in, stuff is rudimentarily working - moved most of the player creation process into a perl coroutine - changed internal design of player management to not reuse and morph the object in funny ways. should be safer and much nicer to handle. - got rid of some annoying hacks, such as clear() (TODO: get rid of player_pod and other stuff now unnecessary?)
- made state a per-client variable (that does not magically make state a per-client thing!) - rename player->socket to player->ns. its not a good name for "client", but it is an historical artifact, and better than "socket".
- mapspace caches are now reevaluated only on-demand only - "heavily" optimised get_map_flags - it might be MUCH faster now - some cleanups - some deoptimisaton in update_object - enabling it makes some bigfaces disappear when they are not fully visible. why?
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
reverted the last change to move_apply and check_inv and fixed check_inv differntly: as all the buttons and pedestals check themselves whether the objects above them satisfy their conditions i thought the best would be if check_inv would do the same. The new semantics are compatible with the semantics used by the map makers (at least i hope that) and won't end up in a broken state so easily now. While fixing check_inv i documented inventory checkers in objects.pod
Added a parameter to move_apply that indicates whether something moved on or off and changed check_inv to take the same additional argument. An inventory checker is now mostly state-independend and a bad state is corrected now if the inventory checker is activated. While fixing that i've documented the HOLE type and FLAG_ACTIVATE_ON_(PUSH|RELEASE) in objects.pod.
- hide floorbox implementation details - use meaning (hopefully) names
- implement event watcher autoncancellation on reload - used it everywhere - removed lots of compatibility cruft - configure does no longer check for mandatory unix functionality/headers - confgiure now runs much faster
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
further cleanups and oofication
added a needed abstraction
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
removed #ifn?def WIN32 from all files
removed regex comparison. this is now done with perl
added many accessors and mutators to struct player, including *title* and (hint, hint) *own_title*
mapstruct => maptile removed many ytypedefs in favor of structure tags
indent
cleanup
indent
indent
generic accessors, take one
Changes... - alternative shstr representation, saves code - use glibs splice memory allocator (seems slower) - use simpler memory/lifetime management for objects, no recycling
THIS CODE WILL NOT COMPILE use the STABLE tag instead. - major changes in object lifetime and memory management - replaced manual refcounting by shstr class - removed quest system - many optimisations - major changes
- added ready/unready/can_apply events and their passive versions - removed support for event_*-fields in maps - removed support for current_weapon_script - removed timers - removed say/shout/Tell and related commands
disable old-style plug-ins, implement attach-field for map headers and map attachments
intermediate check-in, per-object events work
many, many cleanups
converted more events, broken per-object events (needs map support), lots of fixes
Implemented a rough outline of the new event system and made use of it for a number of events. The corresponding plugin-events have been disabled.
converted perl to a mandatory / non-dynamic plug-in, firts step to put it fully in-core
Made server compile with C++. Removed cfanim plugin and crossedit. C++ here we come.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.