update copyrights and other minor stuff to deliantra
- 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.
- 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.
hopefully fix flaming aura for good this time
- create a new class, mapxy, which abstracts a mapspace position. - rewrite move_arrow to take advantage of this new experiemntal class. I don't understand move_arrow, but the code without doubt became clearer and simpler. this opens the way of rewriting the rather clumsy get_map_flags etc. API into something more efficient below mapxy.
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
be mroe careful of our surroundings
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.
- 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.
- update copyrights in .h files, where applicable - rename preprocess to genkeywords
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.
- 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.
implement defaulting region by map path match
- 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
nano-cleanups
- 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.
- 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).
interim check-in for server upgrade
rework material code in preparation for nuking object->materials, also add some useful object methods in preparation of the mapspace limiting
- 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.
rewrote region parser, changed region fileformat a bit
partial region cleanup
- implement per-space regions
added checkrusage extension
- introduce nodrop flag for maps to keep stuff from beign dropped _on destroy only_. this fixes the problem with Sultur, slug of terror :) - resize {link} map to be smaller
*** empty log message ***
- fix a crashing bug inside the random map generator - do not decrease dungeon size with random map depth
- 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
- micro-optimised hit_map and ok_to_put_more, this immensely helped reduce load on dense maps. - introduced xy_normalise, which is imho a saner interface and much faster than get_map_flags so should be used in new code (and time-critical code).
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.
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
added some copyrights
- 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
set original flag so decay object doesn't go wild
- 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
random maps are nphard
reformat
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
misc stuff
introduce for_all_maps
transpose spaces array so the typical x/y loop scans linearly
- added maptile->insert and object->insert_at methods that might make code using it clearer. - replaced some insert_ob_in_map calls.
formatting
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.
- reduce map memory consumption by reserving space for only the 3 existing layers - factorise out some functions into mapspace and object
- 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
I goofed.
more slight copyright adjustments
- medium decruftification - medium cleanups - make settings accessible to perl using cf::settings->mutator (completely untested)
sint64 shopmax too
- removed or commented out unused variables - fixed one signedness issue (should work.. uint64 to sint64.. just what about the shopmax still being uint64?)
move objects onto a special freed objects map (2)
*** empty log message ***
mapstruct => maptile removed many ytypedefs in favor of structure tags
indent
generic accessors, take one
c++ification
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 ***
removed safe_map
fixed comment about P_SAFE
expand initial tabs to spaces
improved,more automatic freezer
fixes, objects on maps get instantiated properly
first, untested persistent objetc storage for players and objects, not yte for maps
many, many cleanups
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.
*** empty log message ***
*** empty log message ***
UPSTREAM_2006-02-22 merge
*** empty log message ***
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.