minor refactoring
- implement archetype gc - implement "proper" refcounting for arches - serialise resource file loads - implement memory poisoning - minor cleanups
reloadable archetypes, maybe
added support for player_sold flag
*** empty log message ***
*** empty log message ***
update copyrights and other minor stuff to deliantra
redirected empty spell slot with 'was summon evil monster' to 'spell_summon_devil' which made contextually/semantically lots of sense in the maps that used that spell.
- 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).
- implement tag keyword but do not use it yet - skip_block now skips known types of sub-blocks - print the decoded filename if possible
tentative fix to self-referencing archetypes. archetype reloading still does not work correctly but at leats we have the status quo again
- 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.
actually do save objects with owener now and save and restore the owner if the owner is a player
parser warnings
be more generic
tweaked sound a bit, added death sounds with another property (wastage?)
*** empty log message ***
implement spell sounds - for every spall cast
- support more than the gcfclient-20-something sounds (dire hack) in sound.conf.res - implement "sound" face for archetypes/objects. - play sound face in signs either on map (triggered) or on the player reading it.
- improve dynbuf implementation further - save now saves shstrs longer than HUGE_BUF, lets fix any brokenness remaining in the server... - converted most describe_*-functions to dynbuf_text, making them likely faster (or maybe slower), while removing any hardcoded length limit. - memory allocated for static dynbuf's is not being returned ever (at least not the initial chunk, maybe fix this?) - implement framework for predeclared const shstrs for comparison purposes (shstrinc.h). - enabled and enforced new material code. - implement hack to clean up book titles. - increases HUGE_BUF to 10240, to be similar to mac network packet size.
*** 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.
untemplatise the problematic put
- 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).
rename arch->name to arch->archname for preparation of subclassing object
update copyrights in common/*.C and util/*.C
- 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.
- 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
- 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.
breath life into completely broken skill tools
almost works
- rework body locations to give betetr feedback and make use of combat and shield slots.
do not output archetypes with names starting with type_ or class_, a bit of a hack
some more structure optimisations saving lots of code
- 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
correctly restore NULL randomitems
skip lines instead of infinite regress on parse errors
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).
add ship move type
parse_kv now behaves like other parse functions
- 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.
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.
- 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.
- be more robust when reading faces. - do write face names, not face indices, when saving files.
- 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.
- 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
i just had to rewrite it
fix crash with patch and create
*** empty log message ***
- set map before parsing an object, add_button_link requires this completely bogus idiotic design bug. - document speed hack by elmex :)
- 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).
hell on earth, rewrote the container code - it really was a mess before - open/close events should now be very reliable. - make container an object_ptr, just to be on the safe side (the old code is known to crash, the new code should be reliable, but...). - its also smaller, much smaller/clearer in sourcecode size and a bit smaller in text segment size. also disable big worldmap again: is this still causing memleaks?
minor stuff, indent
Object => object
rework material code in preparation for nuking object->materials, also add some useful object methods in preparation of the mapspace limiting
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
goofing around
base classes can be so tedious
do what should have been done long ago
- rename Animations => animation - rename New_Face => facetile - add but do not implement some generic loader framework classes
just experimenting
comments
fix 'object lacks animation' continued reporting. maps should use 'animation', not 'animation NONE'
implement new flag_no_save to avoid saving
save obj_original flag
more preperations for player eviction
- more improvements/fixes - timestamp with millisecond accuracy, horrible code
added some copyrights
removed last references to 'editor' variable.
initialised :)
started a fix of the log
minor changes, follow command still borked
use freezer api for saving players, too
- 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
fixed the problem where objects with speed=0 were on the active object list. extended debug_desc a bit. implemented object::has_active_speed ().
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
replace update_ob_speed by ->set_speed
- some fixes - disable some refcounting again, not ready yet - simplify save_object
- 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.
- rename flags => flag (because its rpedominantly used singular), - remove remaining use of the flags array semantics
removed FLAG_TREASURE as it is not used by the code and not by the archetypes or in maps.
ooification
- 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...
the rename for sanity campaign hits you died - renamed stuff - partially updated copyrights - some cleanups
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
- likely fix patch/create variable setters - abstract away access rights with $ob->may ("xxx") and use it
further simplify and speed up map saving, fixed - flag_player_sold was incorrectly saved as "player sold 1" - flag_has_ready_range was not saved - flag_is_dust is not in use anymore not well tested
reindent
indent
cleanup
preliminary uuid support
- improve assign to prepend "..." - make more use of assign - implement op->debug_desc() and make some more use of it
implement owner pointer using refcounted refptr templates
indent
genaccess, take two
generic accessors, take one
stabilise object save order
Cleaned up code a little.
*** empty log message ***
reality always is less simple than it appears
major map loading speedups
*** empty log message ***
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 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.