nano-cleanups
- identified random memory corrutpion bug - fixed most likely cause for bug above - rewrote object loader etc. into a simple one-line lookahead parser. - rewrote/cleaned up archetype, treasure, artifact, formula parser. - some optimisations / cleanups
- avoid floorbox updates when client has container open, this completely confused gcfclient, although completely valid by the protocol (and of course, cfplus didn't even notice it).
- add you readied xxx message. - actually send the inventory ion container open.
hell on earth, rewrote the container code - it really was a mess before - open/close events should now be very reliable. - make container an object_ptr, just to be on the safe side (the old code is known to crash, the new code should be reliable, but...). - its also smaller, much smaller/clearer in sourcecode size and a bit smaller in text segment size. also disable big worldmap again: is this still causing memleaks?
more materialcode changes in preparation for... oh my god this is material framework is broken
replace amny strcpy by checked assign's
fixed debug_info
- implement mood floor types 5 and 6
- implement per-space regions
- experimentall.y determine minimum random map size (12) - harden random map generator by stresstesting - reduced codesize while increasing readability (RANDOM => rndm) - fixed a likely unimportant bug in random_roll64 - possibly broke lots of code
- tame the map/map-world.ext a bit to avoid potential memleaks for now - object refcounting was borked, fixed, again :) - add cf::attacahble::mortals_size - disable reset-after-load, this is unsafe due to locking issues, so don't do it - make map-scheduler configurable - improve emergency swap mode - prepare_random_map must be a sync job for now :( - do not keep object reference in enter_exit, the object might have been gone already. - nuke cf::object::mortals.
- introduce nodrop flag for maps to keep stuff from beign dropped _on destroy only_. this fixes the problem with Sultur, slug of terror :) - resize {link} map to be smaller
- weirdify refcounting: objects still keep their natural refcount of zero do not borrow anymore, seems the right thing to do *right now*
mark watchers as reentrant, some FABS => fabs
base classes can be so tedious
just experimenting
- fix a horrendous bug that might have caused all the map corruption - optimise/modernise some map-insert-related stuff - fix debug_desc - remove crypt configury - minor adjustments/cleanups
comments
more micro-optimisation, use idistance, min is faster than MIN
minor stuff
- added $cf::WAIT_FOR_TICK* - tuned map-scheduler and player-scheduler - added $op->inv_recursive - added objects_size/objects($index) and actives_size/actives($index) for access to the object and actives vector. - more robust player loader - removed _perl_data attribute support - SIGINT/TERM/HUP are now safe as they are handled synchronously. - replaced LOOK_OBJ by client_visible - cleanups
quick and dirty emergency fix
more preperations for player eviction
use destroy_on_detah, not no_drop, for summoned stuff
implement quit
""
added some copyrights
- new untested set_flag_inv method to change a flag on all inv objects - do ot satop running when switching maps - fixed speed_left assymentry in handle_newcs_player - do not immediately handle running commands when calling handle_command, as it could have deactivated the object.
initialised :)
activate_recursive etc. was using op->above, not op->below, so was not recursive at all
minor annoyance fix
misc fixes
misc fixes
set original flag so decay object doesn't go wild
- style maps need very special treatment - cf has a nonzero chance of crashing in a random map
many minor changes everywhere, random maps crash sometimes but design is in place
fixed the problem where objects with speed=0 were on the active object list. extended debug_desc a bit. implemented object::has_active_speed ().
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
*** empty log message ***
work around crossfire design bug
- added maptile->insert and object->insert_at methods that might make code using it clearer. - replaced some insert_ob_in_map calls.
drop-to-ground on player logout fixed, possible warning from set_speed fixed
what meaning had the duplicated LOG()? looks bogus to me => removed.
temporarily(?) silence(?) the 'destroyed leaving object' warning
more cleanups and bugfixes, we are reaching a local peak of stability now
clean up the mess that is inventory-drop-to-ground-semantics-or-maybe-not? this needs to be cleaned up elsewhere in cf, such as in kill_object.
replace update_ob_speed by ->set_speed
simplify logic in apply_builder_remove, let update_ob_speed work if the objetc is in delayed destruction
- some fixes - disable some refcounting again, not ready yet - simplify save_object
the big rename
interim.checkin
- 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
- rename flags => flag (because its rpedominantly used singular), - remove remaining use of the flags array semantics
remove object_pod/object_keep hacks
- 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".
- reduce map memory consumption by reserving space for only the 3 existing layers - factorise out some functions into mapspace and object
- 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
some source simplification
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
ooification
- remove recycle_tmp_maps setting (hardwired to true) - replace object->flags by std::bitset, seems to be way more efficient, for some unexplainable and not looked-into reason. its way cleaner, too...
- 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
reduced dependencies on old plug-in api, fixed some bugs and renamed some methods while I was at it.
- simplify headerfiles (this is the 21st century) - remove long long hacks for printf etc.
lld -> I64_PFd
- implement and modernize op->insert and op->remove - simplify find_hth_skill to always use first found - change change_skill to move recently used skills to top of inventory
- changed uint64 to sint64 for levels - removed obsolete debugging code
do it at the right time, honey
move objects onto a special freed objects map (2)
move freed objects to dummy map so their map * stays valid
* remove arch.h * use refcounting for archetypes * cleanup * strat of generic garbage collector
re-implement dump and dumpbelow
* nuke op->contr when players log out, to avoid dereferencing them later :( * also rename free to destroy * do not create weird messages when people examine pseudo inventory objects
*** empty log message ***
*** empty log message ***
mapstruct => maptile removed many ytypedefs in favor of structure tags
replace was_destroyed by much simpler and less expensive ->destroyed, which is valid, as objetc pointers are now reliable.
indent
cleanup
presuppose iso c++0x
*** empty log message ***
removed now obsolete generation counter checks - further slimmed down sizeof(objetc) to 616 bytes
removed freed hack. extra refcounting increased code size by 3k in an unoptimised build
aggressively use refcounted pointers for object references - seems to fix all random stomping. also reduced size of object further from originally 656 to 624 bytes
reenable shstr gc, fix bug bad bug in allocator
preliminary uuid support
fix object list linking (severe bug)
make use of slice_allocator and inline zero_initialised
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
- introduce shstr_cmp for mass comparisons to shstr and make use of it - introduce assign utility function to replace strncpy
convert to more stable depth-firts iterator
introducing skillinc.h
fixed crash on quit
- temporarily disabled shstr garbage collection - use sint64 instead of uint64 in shop code - implement fully recursive item iterator for object - add some utility functions
implement owner pointer using refcounted refptr templates
make rmeove_ob and free_ob idempotent, to the extent possible with the current design
*** empty log message ***
indent
indent
fix perl class for archetype, never free once-allocated objects, or destruct them, there are too many long-lived references (and refcount doesn't help, likely because it isn't correctly being incremented/decremented).
indent
remaining bugfixes
likely fix another crash bug
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
*** empty log message ***
genaccess, take two
generic accessors, take one
reality always is less simple than it appears
major map loading speedups
fix, uhm, bug. da.
Changes... - alternative shstr representation, saves code - use glibs splice memory allocator (seems slower) - use simpler memory/lifetime management for objects, no recycling
string scanning (e.g. for patch) is not implemented ATM but should be easy to add with an alternative constructor for object_thawer. Rewrote flex scanner to be simpler, faster and more modularised. Initial speedup: 16% (ah well)
removed ox/oy, and then added shstr stuff to the recipes in alchemy
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
rewrote object serialiser, parser is next
improve thawer interface, implement some monster event support
expand initial tabs to spaces
- 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
improved,more automatic freezer
first, untested persistent objetc storage for players and objects, not yte for maps
intermediate check-in, per-object events work
many, many cleanups
converted more events, broken per-object events (needs map support), lots of fixes
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.