nano-cleanups
- set map before parsing an object, add_button_link requires this completely bogus idiotic design bug. - document speed hack by elmex :)
- 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
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?
interim check-in for server upgrade
more materialcode changes in preparation for... oh my god this is material framework is broken
rework material code in preparation for nuking object->materials, also add some useful object methods in preparation of the mapspace limiting
replace amny strcpy by checked assign's
- remove google sparsehash dependency again, its actually slower than gcc's current std::tr1::unordered_hash. - remove hardcoded archtable code - the archetypes table is now no longer limited by an hardcoded constant but can grow dynamically at runtime. - removed some cruft
- implement per-space regions
- weirdify refcounting: objects still keep their natural refcount of zero do not borrow anymore, seems the right thing to do *right now*
- avoid negative event priorities like the plague. they are actually worse because they introduce random memory corruption and endless loops and worse, if worse exists. - aggressively swap out maps when #actives exceeds threshold - sweep and cede after server tick - increase player command handling priorities, just in case. - fix a bug in mortal checking, this was the reason for the enourmous memory leaks in map-world.ext - mark c++-side watchers as non-reentrant
- move util/world.png to server/lib/ (should go to maps/world.png, but I will not fiddle around with that now) - compile worldmap to world.pst and install it. - rename FLAG_NO_SAVE to FLAG_NO_MAP_SAVE - define FABS to fabs, as intended - fix all(?) the FABS(int) calls
- rename Animations => animation - rename New_Face => facetile - add but do not implement some generic loader framework classes
- 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
minor stuff
*** empty log message ***
implement new flag_no_save to avoid saving
- 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
- disabled stuff that might cause instabilities at the cost of certain (controlled) additional memory usage. - minor changes to improve the stability,
quick and dirty emergency fix
""
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.
many minor changes everywhere, random maps crash sometimes but design is in place
different interface design for c++/perl map handling, some random map framework
*** empty log message ***
*** empty log message ***
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
misc stuff
- added maptile->insert and object->insert_at methods that might make code using it clearer. - replaced some insert_ob_in_map calls.
replace update_ob_speed by ->set_speed
formatting
- 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.
- implement (mostly untested) array member support for genacc - make some arrays and other members available to perl - redefined meaning of NUM_FLAGS (really meaning number of flags now, as the code assumed anyway). - moved afk flag to client, where it belongs (make sno sense to save it, is also true for wiz &c). - updated extensions to reflect all that (Jewler.pm should be tested w.r.t. resistances)
- rename flags => flag (because its rpedominantly used singular), - remove remaining use of the flags array semantics
remove object_pod/object_keep hacks
- improved login code - removed some cruft code and (finally), the player_pod hack
fixed the building bug that broke walls after building. a hacky method for flags copying was used and is now replaced with the proper one.
- 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?)
- reduce map memory consumption by reserving space for only the 3 existing layers - factorise out some functions into mapspace and object
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
goofing around in vain, trying to find a generalisation for esrv*item
fixed a bug with has_random_items which caused that most (or mostly all?) treasures weren't generated.
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...
I goofed.
more slight copyright adjustments
started simplifying network code
oopsie
further cleanups and oofication
added a needed abstraction
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
- 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
*** empty log message ***
added uuid accessors for perl.
* remove arch.h * use refcounting for archetypes * cleanup * strat of generic garbage collector
more now invalid tag_t uses replaced by refcounting. reduced codesize quite a bit.
* 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
add mapcell flags support and define #0 to be has_dialogue
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.
cleanup
presuppose iso c++0x
removed now obsolete generation counter checks - further slimmed down sizeof(objetc) to 616 bytes
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
preliminary uuid support
- 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
*** empty log message ***
convert to more stable depth-firts iterator
- 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
indent
optimise sizeof(object), well, shaved of 16 bytes of 656
remaining bugfixes
likely fix another crash bug
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
genaccess, take two
archt => archetype
generic accessors, take one
major map loading speedups
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
*** empty log message ***
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
disable old-style plug-ins, implement attach-field for map headers and map attachments
fixes, objects on maps get instantiated properly
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.
UPSTREAM_2006-02-22 merge
*** empty log message ***
Initial revision
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.