- fix weight/pickup bugs, visible_to - do more automatic nrof/weight updates - kill funcpoint.h
*** empty log message ***
update copyrights and other minor stuff to deliantra
rename cf to deliantra in readme, but nowhere else
- hopefully fix say w.r.t. NDI_REPLY - rework the disease code a bit. - set_owene rfater inserting whne throwing or diseasing. these are the only cases i know where the owner is set when inserting into another object. *cough*
no kidding, but crossfire actually rewards a speed bonus for progressing diseases. this makes no sense, so I changed that to reflect what most likely was intended. (looking at the disease code there might be still more such traps)
talk is cheap
- some optimisations - it is incorrect to clamp digestion and other values multiple times, it should be summed and then clamped. otherwise the order of items (which is undefined) changes the results.
- lots of clamping on stats - optimisations/bugfixes in update_stats - disease progression now uses lots of ad-hoc clamping on various values
level up sound(s), a bit clumsy + partial rewrite of palyer_lvl_adj, should be much much fatser now to add exp
fix crash problem
adjusted digestion algorithm and clamped in limits
- 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.
charge itempower for ALL applied items, not just the wielded weapon. this change includes a lot of items it didn't include before, though, to simply the code.
- 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.
- 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
A player must never apply two skills. crossfire always has and will ever complain about that. Nevertheless, levitation (and ONLY levitation) gets applied in addition to other skills. Now that cannot work with the new skill system. Introduce a special flag for levitation only so it only gets half-applied. This probably fixes quite a number of older "has two skills applied" messages.
- 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.
more skill tuning: - clear_skill is gone, use change_skill (0) instead. - change_skill now clears the current_weapon. - more intelligent weapon switching on unapply. - be more clever when initially applying weapons on player load/connect. - survive wrong setting of READY_WEAPON.
- do not require an item for the use magic item skill. thats because it is often used for "misc" objects such as scrolls, which do not get applied as ranged weapons. not requiring an item is not likely to be a big deal anyways.
- always force-apply cursed weapons even when not "wielded".
breath life into completely broken skill tools
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.
more weapon balancing
mark current weapon with star
more bow fixes
now heavily optimise indexed stat access without sacrificing abstraction
*** empty log message ***
- unrelated change, replace get_attr_value/set_attr_value by a nicer to use stat member function. should really replace the struct values by an array.
*** empty log message ***
indent
- 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
big simplification, still doesn't work, but feels cleaner
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.
goofign around a bit: the while ranged/non-ranged system is borked and needs some serious redesign
partially undo bow changes - this is conceptually impossible
partially undo bow changes - this is conceptually impossible
treat bows as weapons w.r.t. attacktype (need to check for viability)
indent, avoid lots of double<=>float conversions
*** empty log message ***
allow gen_hp and other stuff for bows, too - hopefulyl those use stats correctly
considerably change the balancing of missile weapons: - treat bows as weapons in update_stats. - completely change calculation of attacktype, damage and wc inside fire_bow. this should make missile weapons much stronger and hopefully more competitive. the formulas are probably broken, but hopefully at least an improvement.
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.
- 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.
indent
- experimentall.y determine minimum random map size (12) - harden random map generator by stresstesting - reduced codesize while increasing readability (RANDOM => rndm) - fixed a likely unimportant bug in random_roll64 - possibly broke lots of code
- 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
just experimenting
comments
indent
bad style causes bugs
fix stat change messages
- move most last_* values into socket, where they belong - this actually saved a lot of space in the text segment, which might mean less complicated pointer accesses, because the data is no where it belongs, mostly.
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
initialised :)
replace update_ob_speed by ->set_speed
so thats where those values were being used
remove object_pod/object_keep hacks
- 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?)
removed EXPERIENCE type.
- simplify headerfiles (this is the 21st century) - remove long long hacks for printf etc.
lld -> I64_PFd
removed #ifn?def WIN32 from all files
just some reformatting
- changed uint64 to sint64 for levels - removed obsolete debugging code
indent
cleanup
indent
indent
*** empty log message ***
fix a few ugly pod-constructs on non-pod objects, and a few newly introduced bugs
Cleaned up code a little.
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
added SK_EXP_SKILL_ONLY
expand initial tabs to spaces
intermediate check-in, per-object events work
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.