workaround for broken cfplus extension handshake, caused by queue delay in chargen.
many minor text layout fixes
*** empty log message ***
instrument login problem
*** empty log message ***
fix flags updating, make ->player rely on P_PLAYER
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
*** empty log message ***
move tombstone to real death location. thats not perfect, but better than putting it on the savebed (also for proof of not logging out)
*** empty log message ***
some fixes, different approach to safe spots
*** empty log message ***
define safe spots as anything with a savebed and do not kill players there
define safe spots as anything with a savebed and do not kill players there
*** empty log message ***
switch from Event to EV
further adjust map scheduler coroutine to be as high as the main ticker
name your coroutines
be less blocking when nuking players
be less blocking when nuking players
much better, still label duplication
fix mapinfo?
preliminary chat channel implementation
*** empty log message ***
*** empty log message ***
finally implement the kill on logout-too-long thingy
doh
some goofing around
add some delays, as gcfclient likes to endlessly repeat. also avoids obvious resource-starving attacks
unbundled setup command into its own extension
*** empty log message ***
prepare for better fxixsx+rx protocol
first round of implementing server-side widgets. the framework is there, but hasn't been used for anything realistic yet, so likely not yet fully usable
first rough cut of msg rewriting, introducing cfpod, a haxored pod variant for crossfire messgaes. where will it end?
implement beginning of gender support, asking at character creation, showing in who and perceive self
add some debugging code, fix players not getting freed on logout
port micropather to c++...
adjust player destroy code for extra reference from observe
adjust player destroy code for extra reference from observe
adjust player destroy code for extra reference from observe
adjust player destroy code for extra reference from observe
- 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.
remove a source for relatively useless refcounts being kept on players
my regexes suck badly
- 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.
implement ex command support to quickly retrieve item descriptions
- 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).
meet our new pod fucntionality, certainly not finished :) let me also introduce the beginnings of a new help command
cede less often in background tasks while still reducing jittering
try to force face caching via setup - seems to work with gcfclient at least
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 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).
fix a rather problematic bug allowing people to nuke players when there was a problem reading the playerfile. this was expedited by the playerfile rename
*** empty log message ***
implement better negotiation capabilities, implement tileset selection
- 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.
fixed some minor incompatibilities
moved setup to perlspace to facilitate easier extensions and some cleanups. feels more secure, too
likely fix the freeze-on-quit bug, also nuke in-memory apartments on quit
- passive knowledge of a feature does not mean you can't actively use it wrongly for years: do use \Z instead of $ for security-relevant stuff (\n was allowed in a login name).
I knew there was an explanation
*** empty log message ***
there is a weird bug in Event or perl or... add some wrokarounds
- clean_save => unclean_save (with timestamp) - wanr palyers when they didn't use a savebed proper
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.
- 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
- better dm shell - minor cleanups - added cf::dumpval, cf::player::list_logins and $player->maps
- fix This exit is cloed on login because the maplevel of players not on any map was not saved.
major goof in LOG, and defensive programming doesn't help when you use the wrong parameters
- disabled stuff that might cause instabilities at the cost of certain (controlled) additional memory usage. - minor changes to improve the stability,
- bugfixes, bugfixes, bugfixes
disable destroy
quick and dirty emergency fix
*** empty log message ***
*** empty log message ***
more preperations for player eviction
- more improvements/fixes - timestamp with millisecond accuracy, horrible code
implement quit
""
fix the bug: on_destroy is obviously not being called on pooled coroutines, aslo use more sensible names than 'coro'
- 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
restore log out logging, reduced command queue length to 3
formatting
improve savebed/logout logic
*** empty log message ***
- re-enable hiscore checking on savebed apply
- 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?)
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.