""
added some copyrights
fix quit to actually delete the directory, should all be moved to perl
skip unknown values in player header
add some robustness checks, add map find/load locking
use freezer api for saving players, too
use thawer for player loading: all objects are now being loaded through the thawer, although not everything uses the kv syntax.
more use of shstr where it makes sense naturally
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
- some fixes - disable some refcounting again, not ready yet - simplify save_object
an experiment
- rename flags => flag (because its rpedominantly used singular), - remove remaining use of the flags array semantics
- improved login code - removed some cruft code and (finally), the player_pod hack
- surprisingly, there were some bugs. in Event, too :( - dieing and food checking are now only done in ST_PLAYING state. this might, but should not be, exploitable, in serious ways.
- 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".
- made client a first-class crossfire-perl object (its attachable), but perl support is missing. - added some client events - fixed reply not working after logout
- hide floorbox implementation details - use meaning (hopefully) names
- check for in-memory map headers on login, so players end up on their random map (which has no file) again. (this is more efficient in the general case anyways - in case the temp map does not exist, the emergency position is used. (an alternative that avoids this is to make the file some real map (like per-player maps))
- remove no_shout - serialise command execution somewhat again :( - avoid exceptions
- 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
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
*** empty log message ***
*** empty log message ***
indent
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
*** empty log message ***
indent
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
Some cleanups.
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)
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
*** empty log message ***
remove compression support, intiialise perl earlier etc. etc.
improve thawer interface, implement some monster event support
expand initial tabs to spaces
improved,more automatic freezer
better but more wasteful serialisation support, perl can invoke events, fixes
first, untested persistent objetc storage for players and objects, not yte for maps
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.
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.