- note to self: all forms of cede need PUTBACK as any other fucntion modifying the stack. - the beginning of tag support - just for fun tag soem buildings in scorn and watch the database change - do not install world-precomposed, this saves a lot of traffic, scanning and other things. - add tag field to every object in the editor.
- rename world to world-precomposed (mostly), which is 100% optional for the server operation - rename world-overlay to world (mostly), as to not lie about map paths - disable the skip_block thingy again, its harmful - better bdb support
- implement tag keyword but do not use it yet - skip_block now skips known types of sub-blocks - print the decoded filename if possible
*** empty log message ***
this is a mess still, needs some redesigning
- allow (char*)0 => undef in perl - optimise deref for a common case
*** empty log message ***
- implemented ref/deref "framework" that allows one to create semipersistent references and dereference them later (works only for players right now). - (partially) expose freezer and thawer to perl. - thawers now do next() automatically after instantiating. - allow the thawer to record delayed dereference requests to be resolved, well, later (should be a different class actually but lets stay realistic). - use thawers when loading maps and players and resolve delayed derefs after loading them before activating them. - serialise io for no good reason.
fix text handling in region and map files - now utf-8 is expected for custom keys
*** empty log message ***
actually do save objects with owener now and save and restore the owner if the owner is a player
major changes: - on_same_map and related functions now do not block on map loads, instead they pretend the map is not there. this ensures lag-free operation, but changes semantics considerably: running quickly over the worldmap often lets you bump into map borders until the map has been loaded. also, rabies takes longer to nuke a full continent now. - mapinfo (a major sync blocker) is now fully asynchronous, and works by quieing all mapinfo requests and retrying them on every tick until satisfed.
rather uncertain optimisation.. trying to take advantage of cmov instructions if refptr. a = b before: 510: 48 8b 16 mov (%rsi),%rdx 513: 48 85 d2 test %rdx,%rdx 516: 75 0c jne 524 <xyzzy(refptr<object>, refptr<object>)+0x14> 518: 48 8b 07 mov (%rdi),%rax 51b: 48 85 c0 test %rax,%rax 51e: 75 09 jne 529 <xyzzy(refptr<object>, refptr<object>)+0x19> 520: 48 89 17 mov %rdx,(%rdi) 523: c3 retq 524: ff 42 08 incl 0x8(%rdx) 527: eb ef jmp 518 <xyzzy(refptr<object>, refptr<object>)+0x8> 529: ff 48 08 decl 0x8(%rax) 52c: 0f 1f 40 00 nopl 0x0(%rax) 530: eb ee jmp 520 <xyzzy(refptr<object>, refptr<object>)+0x10> a = b after: 141: 4c 8b 0f mov (%rdi),%r9 144: ba 00 00 00 00 mov $0x0,%edx 149: 4d 8d 41 08 lea 0x8(%r9),%r8 14d: 4d 85 c9 test %r9,%r9 150: 4c 0f 44 c2 cmove %rdx,%r8 154: 41 ff 08 decl (%r8) 157: 48 8b 06 mov (%rsi),%rax 15a: 48 8d 48 08 lea 0x8(%rax),%rcx 15e: 48 85 c0 test %rax,%rax 161: 48 89 07 mov %rax,(%rdi) 164: 48 0f 45 d1 cmovne %rcx,%rdx 168: ff 02 incl (%rdx) 16a: c3 retq note no jumps but larger codeside (1.7kb net increase).
- remote code was not making copies of strings it modified - implemented two ew flags: NDI_REPLY and NDI_DEF. - went over a lot of chat-related code and converted to send_msg, NDI_REPLY and NDI_DEF.
hacky new-style sound support, very hacky old-style sound support
very very preliminary, non-working sound framework
welcome to fxix protocol version 3, with uniform handling over all resources
experimental simplification
implement yet another et-cpu-time primitive, this time its called get_slot... might replace most uses of wait_for_tick
fix send_msg ordering
implement simplistic/slow/safe object merging for objects with perl data, start of a worldmap item
renamed invoke_results
added handle_apply_yield to cfperl.xs and renamed cfperl::invoke_results => cf::invoke_results. also added the new slag ex(tm) extension
set_data for faces must manually calculate the favedata pointer
- make attachable destructors protected (maybe they should be private...) - provide push_back for object vectors. - regions are now attachables, so manage their refcounts properly.
first workable server-side music implementation
- make regions attachables - add attachable->set_key - support custom values for regions - convert match to a custom value - precompile regexes after reload_regions
*** empty log message ***
- upgrade crossfire trt to the GPL version 3 (hopefully correctly). - add a single file covered by the GNU Affero General Public License (which is not yet released, so I used the current draft, which is legally a bit wavy, but its likely better than nothing as it expresses direct intent by the authors, and we can upgrade as soon as it has been released). * this should ensure availability of source code for the server at least and hopefully also archetypes and maps even when modified versions are not being distributed, in accordance of section 13 of the agplv3.
*** empty log message ***
again, messages are utf-8 *sigh*
shstr is utf-8
first rough cut of msg rewriting, introducing cfpod, a haxored pod variant for crossfire messgaes. where will it end?
add some debugging code, fix players not getting freed on logout
- introduce global NOW variable storing current tick time. - force some packet send at least every 2 seconds, forcing an ack reply. - timeout connections on ack delay exclusively, by default disconnect after 8 seconds (allowing for at least 5.5s of network hiccups). (linux only, should port to bsds). - nuke ericserver stats code. - reduce number of syscalls (less gettimeofday, only get tcp_info about once/second). - get rid of coroapi.time () in favour of now ().
removed cf_object_create from THE FUCKING PLUGIN API THAT SUCKS
rename arch->name to arch->archname for preparation of subclassing object
its never working on first try
update copyrights in server/*.C
more cleanups
- restore after combined mainboard+harddisk crash - cleanup/fixes for 2.1 release - fix invoke to actually do work - refactor invoke shortcuts, gcc cannot inline varargs functions. - optimised invoke to 4-5 insns in the common case. - optimised (For no good reason) the int-to-ascii conversions of dynbuf_text into division-less and branchless code (of which I am pretty proud). - actually move players to their savebed when they did not use one and the map has been reste in the meantime. does not kill (yet) when too long. - enter_map is now handled completely in perl. - goto is now using generation counting to ensure that only the most-recently-issues goto will succeed. - make some heavy use of __builtin_expect to streamline rare callbacks even more. - optimised thawer.
add books from books.pod via some most dire hacks
- fix players frozen on movers - allow overriding of existing spells implement town portal: - new fields portasl_maap|x|y for regions - new ext town_portsla completelyx implementing it - some debugging code, some check code
rmeove funcitons likely calling abort anyway
- optimise invoke by using an inline check on a bitset (kind of a simplified bloom filter for all events).
remove superfluous/broken settings and related code - COZY_SERVER: enabled most msall adjustments, changed digestion formula to the original one, party member treament w.r.t. pets enforced. - PROHIBIT_PLAYERKILL: default - real_wiz: removed and enforced - create_home_portals: removed and enforced - casting_time: removed and forced to be off (was crashing anyways) - was_wiz flag removed and treated as off usually unless it was used in place of flag_wiz. - do not save or restore wiz, wizcast and wizpass flags.
*** empty log message ***
- introduce a notion of cpu load average within the server - use it to more gracefully increase swap intervals in the map-scheduler - add clip and lerp utility functions.
do not output archetypes with names starting with type_ or class_, a bit of a hack
- add two new slots for shields and combat weapons - make slots into bitfields, they are not too speed-critical and this saves 16 bytes in the object structure. - add accessors to body lcoation names etc. to perl - use those in the body command
This is the first rough cut of the skill use system (use the STABLE tag). Details will likely change, and combat skills do not work very well, but it works quite well. Players no longer have a shoottype or range slots, instead, each player has these members: combat_skill/combat_ob the currently selected skill (and weapon) for direct attacks. ranged_skill/ranged_ob the currently selected ranged skill (and bow/spell/item) golem the currently-controlled golem, if any.
stop unnatural growth on map save (hopefully)
do not generate floor treasure when there already is somehting on this spot. maybe treasure_env and is_floor should be unified
do not generate floor treasure when there already is somehting on this spot. maybe treasure_env and is_floor should be unified
implement two new flags and associated gadgets: - FLAG_PRECIOUS: used to mark precious pet monsters. semantics are not fleshed out yet, but destroy_pets floors leave them be. ideas: save them to the player file, do not kill with killpets (but only with killpets all), try harder when following player on other maps. - FLAG_TREASURE_ENV: put treasure into the environment instead of into the object, useful for terrain types on the worldmap. - bumped chance field in treasures to 16 bit (ideally float).
reset (some) signal handlers to default after fork, limit the number of concurrent async backtraces
revamp loggin. have a new log flag logBacktrace that logs the message and prepares a backtrace in the background, spewing it into the log at a later time. this is useful to shed some light on otherwise completely useless log messages such as: 2007-04-27 19:48:48.142 Calling random_roll with min=1 max=0 which could just as well not be there as we will never find out who is doing this to puny poor random_roll.
- allow invoke in do_destroy (as used by disconnect e.g.) - change mortal check to use real refcnt. TODO: the semantics of sever vs. optimise on explicit vs. implicit destroy needs to be determinded exactly and cleanly.
declare object lifecycle coded working
- implement a rudimentary framework for a "msg" command that replaces drawinfo and drawextinfo and allows for simpler usage in simple cases and extensibility for the less complex uses. - moved the character race choosing logic into perl, making use of the new msg command if the client supports it.
- add format utility function. - split dynbuf into dynbuf and dynbuf_text. - use dynbuf_text for examine strings instead of outputting each line seperately. tried to use stringstreams but they add insane overheads (as does std::string, but less so).
- implement "random encounters" by simply populating the worldmap randomly by region. - allow treasurelists to silently forward-reference archetypes (should have an extra checkign path for never-defined archetypes) - fix GT_ENVIRONMENT, which had the semantics of putting treasure items _and_ their inventory on the floor, now only puts the items themselves on the floor. - remove warning about generated inventory - some items simply can come with an empty inventory. - do some other minor improvements.
considerably speed up world gridmap loading through some xs magic
- load_resource_file cna now load archetypes, regions and treasures freely intermingled. archetypes and treasures makes a lot of actual sense, too. (this has not been tested, but unlikely not to work :)
- treasurelists and regions can now be freely mixed within the same generic resource file. more to come.
cede less often in background tasks while still reducing jittering
load archetypes and treasures from perl, make terasures reloadable
VERY EXPERIMENTAL - change the way archetypes and treasurelists are being loaded: - referring to a nonexisting treasurelist will create an empty one - referring to a nonexisting archetype will create an empty one - archetypes/treasurelists will overwrite any existing object of the same name. - net effect should be to allow reloading of archetypes and treasurelists at runtime at a later stage.
implement defaulting region by map path match
move animation info into facedata and make it reloadable at runtime
- implement smoothing in the fxix (or better: fxixsx) protocol. - this *enforces* that smoothing is *per face* and not *per archetype*. - no extra bandwidth is needed for map information (unlike in the crossfire 1.x protocol, where smoothlevels are per-mapspace and take up a lot of bandwidth). - no extra storage is required on the client-side (although smoothing for cached map data is then only available for tiles that have been seen). - temporarily supply empty_S.x11 smoothfaces again, as this hack is required because there is no way to specify a smoothlevel but no smoothface otherwise. this should be optimised away at a future point, but this will break gcfclient (but disabling smoothing for that might be a good compromise).
make an effort of explicitly stating wether a string is a text string (where we use utf8) or binary, likely fixing the palyershop corruption bug
dynamically update faces in clients when changed
- fix ber encoding - reduce image checksum length to 6 bytes (from 16) - implement fx packet, which reduces face overhead to amortised 10/12 bytes per face instead of 21/32 bytes and allows an unlimited number of faces instead of 2**16.
moved setup to perlspace to facilitate easier extensions and some cleanups. feels more secure, too
- 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.
- send smooth faces automatically with their base face, anything else just complictaes everything and clients who want smoothing would requets the face anyways. - this reduces the size of struct client considerably, from 300k to about 300k (whoops).
- rewrote smooth face handling, as a side-effect, smoothing seems to work again and smooth faces can be reloaded. - the server now sends the full animation for an object the first time it is seen, this uses slightly more bandwidth initially, but avoids the flickering for objects change their face later.
- MAJOR CHANGE - you now need to use cfutil to install arches. - former bigfaces are broken in the server - bigfaces are no longer supported. at all. - use face numbers instead of pointers * saves lotsa space * saves lotsa indirections * saves lots(?) cpu cycles - completely rewrote face handling - faces can now be added at runtime - reload will add new faces - this does not apply to animations - use a hastable instead of binary search (faster) for faces - face caching is broken - facesets are gone - server always reports MAX_FACES to any client who asks
clean up makefiles, add dummy pod.pm
- automake insists on naming all libdirs .../cfserver now. i have to concur :/ - correctly reattach to players on reload, this likely fixes the reload crash bug. - init env vars very early, so perl gets to see them.
partially support vpath builds
untested move_player in xs
kick in perl
- 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
- use a simpler, less fancy loader base design (basically a one-line-lookahead top-down parser).
- implement worldmap underlay and regionset and fill in C++, resulting in a *major* speedup in worldmap loading. - use first arch (e.g. deep_sea) and first region (e.g. panthalassia) to fill maps outside the world: less hardcoded content data. - fix ext/rent.ext to actually check again for entrance. - temporarily remembver previous map in $ob->{_prev_pos} (HACK to make ext/rent.ext work).
uglyness prevails in fixing nekosan
more fixes, more debugging hints, use sync_job for reload
- make server more fragile w.r.t. watchdog on freeze - try to make a perl backtrace on crash, too.
- likely fix the memleak problem. - leave some dbeuggig code in purposely.
abuse some flags to assist debugging
load regions from perl, reload on, well, reload
- improve error messages from object_thawer to incldue line numbers - provide geenric parse error handler - finish basic design of generic object loader - implement generic regions loader - use it to load regions: loader_region loader; if (!loader.load (filename)) error; - regions should now be the very first filetype that could be reloaded at runtime
finally finished the last bits of the jeweler skill. now only debugging and balancing is missing. going to make some maps next and try to sort out the right balancing.
*** empty log message ***
partial region cleanup
bugfixes
- implement per-space regions
abstractify attachable sv_unmagic operation
- sv_unmagic calls free, which svrefcnt_decs, which in turn will free the scalar, leavign sv_unmagic running on invalid memory, so keep an extra refcount around sv_unmagic to delay destruction. should be abstracted into an attachable_unmagic method.
- 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.
- weirdify refcounting: objects still keep their natural refcount of zero do not borrow anymore, seems the right thing to do *right now*
re-enabled memleka, server crashes without it
- 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
there is a weird bug in Event or perl or... add some wrokarounds
*** empty log message ***
- 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
fix random number generator seeding
base classes can be so tedious
expose fork_abort to perl
- make random map generation more deterministic again. - expose cf::rndm to perl. - preset most random map parameters from perl to ensure determinism.
removed some old plugin functions which were causing a crash and ported ipo.ext to work again.
- re-do stupid teleport command. can now teleport to the player even if no space is available. can even teleport to logged-out players, whatever useful that might be. - goto now supports x and y destination coordinates as additional arguments.
WARNING: this release is BROKEN - rewrote map handling. map types are now completely pluggable, maybe *too* pluggable, as everything is a plug-in now. - mark mandatory extensions as such. - handle overloaded attachable objects correctly. - many minor changes.
*** empty log message ***
implement new flag_no_save to avoid saving
make random map paths more beautiful, in the common case
- implement cf::map::unique_maps () - support string overloading for cf::path objects - minor cleanups
aggressively prefetch tiled maps around the player - prefetch maps on every tick - prefetch maps and block the player when entering maps
- 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
major goof in LOG, and defensive programming doesn't help when you use the wrong parameters
some dirty hacks^Wfixes, also remove dthe now obsolete map-prefetch plugin
- move most last_* values into socket, where they belong - this actually saved a lot of space in the text segment, which might mean less complicated pointer accesses, because the data is no where it belongs, mostly.
more preperations for player eviction
implement quit
""
- clear perl objects on C++ destroy: if you want to do something with the data, you have to save it away in DESTROY.
- word of recall activated the player indirectly - implement maptile->xy_find and xy_load - separate find and load, even on C level - generate map_leave/enter and map_change events even for tiled map changes (experimental) - implement mainloop freezeing by start/stop, not skipping ticks - no map updates when player !active
- implement mlockall option - expanded config file documentation - make perl-weapon boni mandatory
use freezer api for saving players, too
- random maps seem to work now - had to move map parameters into files because we need constant-sized map path lengths as the full map stack history would have to be included.
more use of shstr where it makes sense naturally
- 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
different interface design for c++/perl map handling, some random map framework
fix some bugs
random maps are nphard
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
misc stuff
introduce for_all_maps
replace update_ob_speed by ->set_speed
un-goof
- some fixes - disable some refcounting again, not ready yet - simplify save_object
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.
fixed return value of query_cost for the perl bindings
- support Coro on C level - check for required modules availability (but not suitability) in configure
- 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)
- re-enable hiscore checking on savebed apply
- 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
- 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?)
- add preliminary per-client coroutine support (I do not threaten, I act :) - moved global events to cf::global
- misc stuff - implement $client->query
*** empty log message ***
- 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".
- updated cf.pm to use a more generic and extendable syntax, now that it is clear that we will have multiple "attachable" objects. maybe bite the bullet in C++ and make attachable virtual? - completely rework the syntax for attaching and attachments - update all extensions
- 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
removed TOOL and BUILDFAC which were also dead types.
removed dead types: FIREHOLES and POISONCLOUD.
removed LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR types.
removed TRAP_PART, renamed WALL to BUILDABLE_WALL to reflect the usage of this type these days and fixed generic destroyer not to remove players and other objects that can crash the server (hopefully).
- 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?
removed QUEST and LIGHTNING types.
removed EXPERIENCE type.
- separate all comamnds into immediate/socket-level and queued/player-level - clean up player command handling, handle up to 8 commands/tick
removed FLAG_TREASURE as it is not used by the code and not by the archetypes or in maps.
added decrease_ob_nr to handle object decreasment.
- socket i/o is completely asynchronous now - some command sare handled immediately - others (most palying related commands) are queued for later (as of now synchronous) processing - specifying a max queue length (in seconds) is possible, but disabled - also add some syntax sugar for network code
the rename for sanity campaign hits you died - renamed stuff - partially updated copyrights - some cleanups
moved perl extensions into server codebase, where they belong
- make client_socket accessible to perl - on linux, record rtt and rttvar - who shows rtt/rttvar
- write() is now independent of server ticks and will be done immediately - get rid of CORK hack, it is no longer necessary
- implement c++ interface to Event->io watchers - cut number of write()'s the server does in half
- remove some old socket mode cruft - preliminarily added attachable client_socket interface to perl (untested but also unreachable from perl code atm)
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
(intermediate check-in for recoverability)
- medium decruftification - medium cleanups - make settings accessible to perl using cf::settings->mutator (completely untested)
- more ooficiation - removed now superfluous remove calls
reduced dependencies on old plug-in api, fixed some bugs and renamed some methods while I was at it.
- use new event mechanism for command handling instead of the old plugin system
*** empty log message ***
- remove long long hacks for perl - use standard PRIxbb/SCNxbb macros - use IVs for 64 bit values on 64 bit perls
added fix_walls_around for the builder ui extension.
the object cache is dead
added uuid accessors for perl.
allow priviledge override for banish, kick, arrest, reset, teleport and summon
new command: wizlook
re-implement dump and dumpbelow
- likely fix patch/create variable setters - abstract away access rights with $ob->may ("xxx") and use it
nuke metaserver code
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
*** empty log message ***
bugfix
remove rename command and implement lots of extra perl support
presuppose iso c++0x
implement (even test a bit) a shared global database for extensions
- 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
indent
*** empty log message ***
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).
remaining bugfixes
*** empty log message ***
genaccess, take three dot one
genaccess, take three
generic accessors, take one
sigh
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)
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 SK_EXP_SKILL_ONLY
*** empty log message ***
rewrote object serialiser, parser is next
added find_archetype
*** empty log message ***
*** empty log message ***
removed cf_object_say/speak
remove compression support, intiialise perl earlier etc. etc.
remove compatibility code
introduce overhead in the hope of decreasing it at some point
fixes
improve thawer interface, implement some monster event support
more docs, more events
rewrote parts of the connection code, which now is completly perl invoke- and overrideable.
implement player_move event and make use of player_shout/say/chat/tell events
Implement on_say, fixed a bug in ->invoke methods.
disable old-style plug-ins, implement attach-field for map headers and map attachments
implement destroy event for objects and maps, implement loading of persistent map header
properly clear and disconnect perl object if cf object gets freed
improved,more automatic freezer
reduce cfapi dependencies, move cfperl initialisation to an earlier point
better but more wasteful serialisation support, perl can invoke events, fixes
fixes, objects on maps get instantiated properly
first, untested persistent objetc storage for players and objects, not yte for maps
further refinements
some more fixes and refinements
some more fixes and refinements
intermediate check-in, per-object events work
many, many cleanups
converted more events, broken per-object events (needs map support), lots of fixes
improve error feedback when safe code evaluation fails
Move callback checks to C++ and short-circuit when no callback exists for an event: No perl is touched when an event doesn't have a callback registered, so this is very fast (compared to the old way).
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.
- fix extmap protocol - lay foundation for new event interface (not used, not tested) - "slow down" in-game time specials
- added cfperl.h, soon to be used by events - no perl == exit, its no longer optional - moved server main loop entirely in perl - removed lots of unneeded timekeeping cruft
workaorund for client mapscroll overflow
get rid of esrv_map_scroll and MapNewmapCmd, map update will handle it automatically
use perl's event loop as mainloop
converted perl to a mandatory / non-dynamic plug-in, firts step to put it fully in-core
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.