- fix weight/pickup bugs, visible_to - do more automatic nrof/weight updates - kill funcpoint.h
minor refactoring
*** empty log message ***
*** empty log message ***
update copyrights and other minor stuff to deliantra
do not observe sound anymore
- clean up message system, combine all boxes into one. - suppress too long messages (we need a more robust solution to this problem). - get rid of INS_MAP_LOAD, leading to slightly cleaner/faster code and certainly one special case less. - insert objects manually at load time, this is both faster and also more correct, as loading a map is never supposed to trigger anything (and also for symmetry to the save code).
- 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.
- nuke objects crossing map borders on save. bad luck.
try to fix the (surprisingly only coming up now) problem of crashing due to endless loops in clear, by not calling remove (thus not triggering any remove actions) but by manually removing objects. also keep region info intatc a bit longer (should not make a difference).
*** empty log message ***
*** 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
*** empty log message ***
while out_of_map only needs the headers, the result *must* be consistent with xy_find and related functions (at least for a short time).
headers actually suffice for mapinfo
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.
remove unused mapstruct.active
tweaked sound a bit, added death sounds with another property (wastage?)
very very preliminary, non-working sound framework
- make attachable destructors protected (maybe they should be private...) - provide push_back for object vectors. - regions are now attachables, so manage their refcounts properly.
map custom key support, do not send resource faces as images
fixed multipart problem where multipart objects were placed in a wrong/bad order on the map after they were extended.
- 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.
- new map header boolean "no_reset 1" to deny reset. - allow reset of per-player maps, effectviely implementing player-private dungeons. - re-enabled reset-on-load feature again. - remove fail-safe mechanism that prevented per-player maps from being reset. keep your fingers crossed. - fixed two bugs in archetype finding (archname vs. object name). - singularities no longer crash the server but will log a backtrace now as they are really are fatal.
- improve observe - remove more cruft code - archetype loading almost works again, reloading probbaly still borked.
- archetype is now a subclass of object. - store archetypes in an object_vector. - use a different startegy for archetype loading (reloading is MOST CERTAINLY broken).
update copyrights in common/*.C and util/*.C
*** empty log message ***
stupidity
stupidity
- prepare common/ for head_ => head change - add some copyrights for files where they were missing
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.
cede less often in background tasks while still reducing jittering
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.
remove clockdata and base it off of the runtime; improve the tod code.
disabling aggressive cede while saving again
- remove many TODO items that in fatc have been fixed already without looking at the TODO. - remove unpaid items on playerdeath unconditionally. - reenabled cede-while-saving.
thinko, had to crash
- remove faces form each mapspace, as they were stored and calculated *solely* for magicmap. sic. - as update_ is a major bottleneck, this will certainly help load, too. - semantics have changed: objects with blank faces are now transfered, but i assume this is rare (and might give a nice hint about invisible stuff :)
- 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
fix a crash bug i introduced when fixing the random map pick fairness issue
- prepare find_style_map rewrite - move pick_random_object to maptile:: - make pick_random_object fair overe the numbe rof monsters and no longer prefer big monsters.
- set map before parsing an object, add_button_link requires this completely bogus idiotic design bug. - document speed hack by elmex :)
*** empty log message ***
- 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).
- useless µ-opts - use maximum norm in get_rangevector (a bit, should use more)
interim check-in for server upgrade
replace amny strcpy by checked assign's
- 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
- add visibility_at to players (only), might/should be an object method - mood spells only affect visible spaces now.
- implement per-space regions
added checkrusage extension
- 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
comments
- faster implementation for isqrt - add fast idistance approximation now find_dir_2 has moved to the top of the profiling output for mlab/cwdccastleofmarquis3, followed by get_rangevector, hit_map and ok_to_put_more.
- potentially fix the bug associated with 2007-01-14 18:51:45.228 find_nearest_living_creature: map /mlab/cwdccastleofmarquis3 (40,44) has is_alive set but did not find a monster? a) the mesage seemed to be totally bogus. P_IS_ALIVE means something with FLAG_IS_ALIVE is here, not a monster or anything else. b) map flags caching was disabled due to my stupidity, probably causing high cpu usage. c) ymmv
*** empty log message ***
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 some copyrights
- use new Coro::guard - removed cf::guard - better map loading error messages - more robust map header parsing
bugfix
- 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
removed last references to 'editor' variable.
initialised :)
minor changes, follow command still borked
set original flag so decay object doesn't go wild
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.
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
minor fixes, apartment hopping seems to work now
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.
misc stuff
introduce for_all_maps
- added maptile->insert and object->insert_at methods that might make code using it clearer. - replaced some insert_ob_in_map calls.
- some fixes - disable some refcounting again, not ready yet - simplify save_object
emergency checkin
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.
- 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?
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
- 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))
- implement event watcher autoncancellation on reload - used it everywhere - removed lots of compatibility cruft - configure does no longer check for mandatory unix functionality/headers - confgiure now runs much faster
- medium decruftification - medium cleanups - make settings accessible to perl using cf::settings->mutator (completely untested)
limit difficulty in treasure generation to 1..max_level
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
removed #ifn?def WIN32 from all files
- removed or commented out unused variables - fixed one signedness issue (should work.. uint64 to sint64.. just what about the shopmax still being uint64?)
*** empty log message ***
people, read the manpages, damnit
move objects onto a special freed objects map (2)
considerably reduce size of crossfire.0 (~400k pngx, ~150k file format)
*** empty log message ***
mapstruct => maptile removed many ytypedefs in favor of structure tags
indent
indent
*** empty log message ***
c++ification
Cleaned up code a little.
*** empty log message ***
major map loading speedups
*** empty log message ***
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 ***
rewrote object serialiser, parser is next
*** empty log message ***
remove compression support, intiialise perl earlier etc. etc.
fixes
improve thawer interface, implement some monster event support
removed safe_map
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
improved,more automatic freezer
first, untested persistent objetc storage for players and objects, not yte for maps
many, many cleanups
removed debugging message
fixed the map saving to be backupped in future. and added some flag logic to update_position, but the messagein the log: 2006-08-20 20:52:59 update_position: updated flags do not match old flags: /scorn/shops/tradeshop (old=10,new=15) 0 != 2a still looks very bogus to me.
added unlink to a strategically interesting place in the FUCKING CODE
renamed SAFE_FLOOR to SAFE_GROUND
removed P_SAFE_MAP and added P_SAFE as map flag set by an item with type SAFE_FLOOR (165)
added a safe_map flag which prevents bad effects on maps that should be safe, like some shops and for example the trade shop in scorn.
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.