trailing space removal
update copyrights to 2012
*** empty log message ***
clean up in_memory handling
activate maps only when player is near, not when loading the map
*** empty log message ***
update copyright to 2011
move gridmap to arch, refactor cf.pm a bit
random...
rproto.h => include and random_map.h => include/rmg.h
*** empty log message ***
*** empty log message ***
*** empty log message ***
fix aio deadlock properly by using mutexes and condvars
*** empty log message ***
re-appl<y no-auto-exit hack :(
*** empty log message ***
auto-apply emergency fix
indent
indent
µopt
curse/magic identify
*** empty log message ***
use a more sensible semantics for find_dir_2
*** empty log message ***
get rid of QUERY_FLAG/SET_FLAG/CLEAR_FLAG macros that I always hated
update copyright for up to 2010
remove bogus 2007 copyright that was added wrongly by the script, update to affero license
*** empty log message ***
indent (remove useless use of void)
speed is positive inside the server
*** empty log message ***
remove or document dead code
make effectively static symbols actually static, part 2
make effectively static symbols actually static, part 1
*** empty log message ***
clarify license
*** empty log message ***
refactoring of shstr classe,s new shstr_tmp, lots of minor rewriting
*** empty log message ***
*** empty log message ***
wizlook
introduce drop_and_destroy and use it
do the same everywhere else
*** empty log message ***
*** empty log message ***
update copyright
fix the dummy-teleport-objects c callers
*** empty log message ***
*** empty log message ***
- implement archetype gc - implement "proper" refcounting for arches - serialise resource file loads - implement memory poisoning - minor cleanups
*** empty log message ***
better logging, remove cruft
*** empty log message ***
*** empty log message ***
update copyrights and other minor stuff to deliantra
*** empty log message ***
finally remove the old buggy plug-in cruft
- rewrite/cleanup ob_blocked a little. its more efficient now, probably has less bugs and more bugs. - get rid of now unused P_NO_PASS.
*** empty log message ***
support exit sounds, remove some cruft
*** empty log message ***
big semantic change - old server and crossfire did update/draw maps check for player commands, move players and monsters flush sockets - new server does check for player commands, move players and monsters update/draw maps flush sockets I have zero idea why the old code didn't do it this way. the net effect is that there is a guarenteed delay of one tick between an issued command and the player seeing its execution. The same for monster movements. That is, the new ordering reduces "lag" by a constant 120ms, which is immense, and can be felt immediately. This is a change I wanted to do for a long time. Apart from that, the tcp send code has been simplified and underwent some further tuning, leading to an even more accurate congestion management.
- 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.
first rough cut of msg rewriting, introducing cfpod, a haxored pod variant for crossfire messgaes. where will it end?
- improve observe - remove more cruft code - archetype loading almost works again, reloading probbaly still borked.
µ-opts
update copyrights in server/*.C
some more optimisations
new speed management: - weapon speed and object speed is now completekly decoupled for players. - both can be used at the same time, or indeepndent, when running or firing. - still only one command per object speed can be issued.
- change weapon speed inside server to be the real speed value. - send speed and weapon_sp as actions/second to the client. this breaks cfclient which divides speed/weapon_speed, but makes more sense.
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.
lots of little changes: - fix MIN/MAX_AC/WC and use them - abstratc weapon speed into player->weapon_speed, as it is just way too confusing and probably needs frequent updates :) - use ob_speed/weapon_sp * 0.5 as an arbitrary real attack speed .5 needs tuning, elsewhere, but ahs been put in as a stopgap measure. - fix speed issues, properly use weapon_sp (if a bit lagged) - clear current weapon when readying skills because a skill might already be readied implicitly.
lots of speed logic changes
fix weapon speed to be more in line with documentation
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.
server crashed this morning because a freed golem tried to follow his owner, triggering the assertion failure. the golem had no owner, but the owner still had him in his range slots. I refactored a bit of the code and rearranged it to hopefully increase chances of this not occuring again.
- rely on new stability for further cleanups and minor improvements
- fix tausworthe generator initialisation (no big deal) - use numerically more correct multiplication instead of remainder. this has surprisingly good consequences (which I originally didn't expect): - the generated code is smaller and faster - gcc optimises the 64 bit arithmetic extremely well on 32 bit archs. - behaviour for negative and zero arguments (both illegal) is pretty well-behaved.
having a) monsters as treasures b) multipart monsters as treasures and c) multipart monsters as terasures on tiled maps... hit a big pile of bugs again. this change: - implements a per-map active flag. when items are being inserted they are activated or deactivated according to that flag. this could get rid of most or even all of the explicit activate/deactivate calls. - implement some glue to make instantiating multipart objects easier (this is used inside fix_multipart_objects and might make it possible to put multipart objects at map borders - those were winged before) - do finer-grained locking as to not lead to deadlocks when insert recurses e.g. when loading tiled maps.
remove clockdata and base it off of the runtime; improve the tod code.
- rewrote more face handling code - automatically send smooth faces, as the client will need them anyways and it makes little sense to wait for the client to axk for it. of course, gcfclient suffers from weird ordering problems again. - UP_OBJ_FACE was often abused in situations where other things changed, updated lots of spaces, probably more to be done. - update_smooth became so small that inlining it actually clarified the code. similar for update_space, which is not inlined for other reasons. - faces were not initialised properly - add versioncheck for face data - rewrite invisibility handling a bit: god finger etc. now makes you blink, blinking routine has changed to be less annoying and more useful while still indicating invisibleness.
uh, really
- 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.
- make server more fragile w.r.t. watchdog on freeze - try to make a perl backtrace on crash, too.
minor stuff, indent
mroe cheks on disconnected socket
so crash-friendly users, ehrm, user-friendly crashes
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
- fix crash bug - better fork & abort (untested)
dump core earlier, by forking. also do not try to clean up twice.
- 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
- fix This exit is cloed on login because the maplevel of players not on any map was not saved.
""
added some copyrights
be nicer to clients on shutdown and crashes
- 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
be more robust in emergency saves
- 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.
*** empty log message ***
lotsa bugfixes
add some robustness checks, add map find/load locking
minor changes, follow command still borked
in my stupidity i broke the loader
more use of shstr where it makes sense naturally
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
get rid of annoying enter_exit (0)
fixed the problem where objects with speed=0 were on the active object list. extended debug_desc a bit. implemented object::has_active_speed ().
fix some bugs
random maps are nphard
misc updates
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
i cannot find, nor reproduce, the problem at all. the log clearly shows map loads where there shouldn't be any, so we lose maps. but only on cf.schmorp.de. i am frustrated.
introduce for_all_maps
replace update_ob_speed by ->set_speed
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
- 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?)
- 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
removed LIGHT_SOURCE, MONSTER and SPAWN_GENERATOR types.
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
- generate more correct map names (/random should go, though) - allow random maps to end up in temp.maps list
- 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...
while goofing around, trying to understand the command code - did some reindentation - which lead me to find some dead code - which lead me to some optimisations and more dead code fun.
- 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
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
added a needed abstraction
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
removed #ifn?def WIN32 from all files
*** empty log message ***
remove golem_count, likely golems are destroyed late now
re-implement dump and dumpbelow
nuke metaserver code
let perl use the correct directory stetings at startup
* 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 ***
improved ordering and usefulness of map change events
mapstruct => maptile removed many ytypedefs in favor of structure tags
maps reset on restart, cannot have that
replace was_destroyed by much simpler and less expensive ->destroyed, which is valid, as objetc pointers are now reliable.
indent
fix object list linking (severe bug)
implement cleanup signal
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
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)
everything seems to work so far
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.
expand initial tabs to spaces
nuke transports
- 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
autogenerate eventinc.h
reduce cfapi dependencies, move cfperl initialisation to an earlier point
first, untested persistent objetc storage for players and objects, not yte for maps
further refinements
many, many cleanups
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
get rid of esrv_map_scroll and MapNewmapCmd, map update will handle it automatically
use perl's event loop as mainloop
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.