*** empty log message ***
better understanding leads to better understanding
wizlook
implement primitive noise hack
fix observe and other los issues
new los code
*** empty log message ***
*** empty log message ***
*** empty log message ***
remove listen(ing)?
*** empty log message ***
update copyright
lotsa
*** empty log message ***
*** empty log message ***
*** empty log message ***
update copyrights and other minor stuff to deliantra
- 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.
first round of infobox and c++-level channels
actually do save objects with owener now and save and restore the owner if the owner is a player
- optimise widget protocol a bit (incompatible change). - implement well-known-widgets on server and client side, marginally test. - add "title" parameter for infobox.
first, untested, try at spicing up the message system
first, untested, try at spicing up the message system
documentation
increase range of some player-stats, we have the memory and we need the precision
very very preliminary, non-working sound framework
- 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.
implement beginning of gender support, asking at character creation, showing in who and perceive self
- pippijn unknowingly inspired the idea of documenting the type of the objetc_vector_index explicitly. - pippijn spotted a typoe, to, go figure!
rename arch->name to arch->archname for preparation of subclassing object
- remove slow and unneeded cruft code from map1. - decouple map display/stats update from ob (use pl->obsere instead)
- update copyrights in .h files, where applicable - rename preprocess to genkeywords
- 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.
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.
big simplification, still doesn't work, but feels cleaner
works a tad better
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
rewrote output buffer handling. the new system: - outputs messages immediately. - suppresses following duplicates. - enforces a minimum setting. - is, as usual, faster and leaner. the only problem is that the code worked out of the box, which is not reassuring.
- implement a rudimentary framework for a "msg" command that replaces drawinfo and drawextinfo and allows for simpler usage in simple cases and extensibility for the less complex uses. - moved the character race choosing logic into perl, making use of the new msg command if the client supports it.
nano-cleanups
- add visibility_at to players (only), might/should be an object method - mood spells only affect visible spaces now.
comments
- 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
- save before testing the map on swap_out, as save cedes and players might hop on the map while the map saves, changing its status.
use thawer for player loading: all objects are now being loaded through the thawer, although not everything uses the kv syntax.
more use of shstr where it makes sense naturally
different interface design for c++/perl map handling, some random map framework
get rid of annoying enter_exit (0)
formatting
- 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.
- implement (mostly untested) array member support for genacc - make some arrays and other members available to perl - redefined meaning of NUM_FLAGS (really meaning number of flags now, as the code assumed anyway). - moved afk flag to client, where it belongs (make sno sense to save it, is also true for wiz &c). - updated extensions to reflect all that (Jewler.pm should be tested w.r.t. resistances)
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".
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
- remove no_shout - serialise command execution somewhat again :( - avoid exceptions
I goofed.
more slight copyright adjustments
the rename for sanity campaign hits you died - renamed stuff - partially updated copyrights - some cleanups
- make client_socket accessible to perl - on linux, record rtt and rttvar - who shows rtt/rttvar
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
moar\! rewrite\!
no generation counters anymore
remove golem_count, likely golems are destroyed late now
enlarge killer and other fields, do not use silly BIG_NAME with no meaning.
added many accessors and mutators to struct player, including *title* and (hint, hint) *own_title*
add mapcell flags support and define #0 to be has_dialogue
mapstruct => maptile removed many ytypedefs in favor of structure tags
generic accessors, take one
*** empty log message ***
*** 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
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
expand initial tabs to spaces
nuke transports
fixes, objects on maps get instantiated properly
first, untested persistent objetc storage for players and objects, not yte for maps
many, many cleanups
converted more events, broken per-object events (needs map support), lots of fixes
Made server compile with C++. Removed cfanim plugin and crossedit. C++ here we come.
of course it does partial initialisation tricks when creating new players
shuffle player members around, saves lots of code size due to more optimised accesses
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.