fixed a bug where messages were sent to an object instead of the player - this if finally informing the player that he levitates
update copyrights and other minor stuff to deliantra
seperate msg_voice from msg_say
also sound for autoapply signs
also show books as a tab
add hint
we need some 'sound_apply_type'-type framework
support exit sounds, remove some cruft
use examine box for signs, new T<> tag
first round of infobox and c++-level channels
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.
- optimise widget protocol a bit (incompatible change). - implement well-known-widgets on server and client side, marginally test. - add "title" parameter for infobox.
galloping stupidity
first, untested, try at spicing up the message system
first, untested, try at spicing up the message system
first, untested, try at spicing up the message system
- new type: INSCRIBABLE - inscription only works on inscribable items (spellscrolls special cased) - add new empty scroll, empty book and empty mailscroll archetypes - use mailscroll in ipo.
add shop buy/sell/enter/leave sounds and converter beep
- 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.
plugged hole with generation of unidentified objects where you could gain exp from it.
very very preliminary, non-working sound framework
added handle_apply_yield to cfperl.xs and renamed cfperl::invoke_results => cf::invoke_results. also added the new slag ex(tm) extension
fixed typo
aggressively add hints to apply.C
aggressively add hints to apply.C
- 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.
fix the other readable message generation
- 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.
first rough cut of msg rewriting, introducing cfpod, a haxored pod variant for crossfire messgaes. where will it end?
- 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 server/*.C
fix typoe
be more intelligent about clearing attack slots
inv_splay => splay
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.
*** empty log message ***
- more rewrite: change_skill now only changes the chosen_skill, nothing else. new flag to suppress skill tool behaviour of readying the skill when applying the tool, for use in find_skill.
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.
- 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".
more fixes
breath life into completely broken skill tools
*** empty log message ***
*** empty log message ***
lots of speed logic changes
*** 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.
almost works
*** empty log message ***
less artificial linebreaks
closer, still hackish
fix typoes
indent
- 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
- 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
only allow one range weapon to be applied at any one time, some dynbuf fixes
- skill system is looking as if it were going somewhere, slowly. - support a regex argument to who to limit user reports.
big simplification, still doesn't work, but feels cleaner
works a tad better
re-add 'content'
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.
fixed shop inventories
- 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.
- to whomever reads this: many messages in cf are way to confusing even to me, so I suggets adding an out-of-game expalantion in [] behind the atmospheric description. like here.
*** empty log message ***
nano-cleanups
- avoid floorbox updates when client has container open, this completely confused gcfclient, although completely valid by the protocol (and of course, cfplus didn't even notice it).
- add you readied xxx message. - actually send the inventory ion container open.
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?
Object => object
remove many strcmps on shstr, added fast strcmp wrapper that only etsts for inequality
no comment
replace amny strcpy by checked assign's
- implement mood floor types 5 and 6
just experimenting
comments
indent
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
more use of shstr where it makes sense naturally
different interface design for c++/perl map handling, some random map framework
preliminary snapshot check-in, DO NOT USE IN PRODUCTION SYSTEMS See the Changes file for details
replace update_ob_speed by ->set_speed
interim.checkin
an experiment
- 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".
my logic correction was wrong
- minor cleanups - minor optimisations (in_player vs. is_player_inv) - added P_PLAYER map flag - some (dead) concept code
fixed special food that raises stats and resistancies.
reverted the last change to move_apply and check_inv and fixed check_inv differntly: as all the buttons and pedestals check themselves whether the objects above them satisfy their conditions i thought the best would be if check_inv would do the same. The new semantics are compatible with the semantics used by the map makers (at least i hope that) and won't end up in a broken state so easily now. While fixing check_inv i documented inventory checkers in objects.pod
Added a parameter to move_apply that indicates whether something moved on or off and changed check_inv to take the same additional argument. An inventory checker is now mostly state-independend and a bad state is corrected now if the inventory checker is activated. While fixing that i've documented the HOLE type and FLAG_ACTIVATE_ON_(PUSH|RELEASE) in objects.pod.
goofing around in vain, trying to find a generalisation for esrv*item
- hide floorbox implementation details - use meaning (hopefully) names
ooification
- rewrote most of the socket loop code - moved connection accept into tcp.ext - no evil socket copying anymore, needs more cleanups
no generation counters anymore
added a needed abstraction
limit difficulty in treasure generation to 1..max_level
- more ooficiation - removed now superfluous remove calls
replace some function- by method-calls
fix null pointer access / pippijn / Do Not Apply
allow higher level spells by adjusting minimum literacy skill to leanr spells
allow higher level spells by adjusting minimum literacy skill to leanr spells
allow higher level spells by adjusting minimum literacy skill to leanr spells
indent
mapstruct => maptile removed many ytypedefs in favor of structure tags
replace was_destroyed by much simpler and less expensive ->destroyed, which is valid, as objetc pointers are now reliable.
indent
cleanup
*** empty log message ***
- temporarily disabled shstr garbage collection - use sint64 instead of uint64 in shop code - implement fully recursive item iterator for object - add some utility functions
indent
indent
indent
Some cleanups.
major map loading speedups
removed ox/oy, and then added shstr stuff to the recipes in alchemy
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
close event fixed, IPO should work now again
finally _do_ generate logout everytime
removed all the broken SHOP_FLOOR checks and replaced them with the is_in_shop () check function.
expand initial tabs to spaces
nuke transports
- added ready/unready/can_apply events and their passive versions - removed support for event_*-fields in maps - removed support for current_weapon_script - removed timers - removed say/shout/Tell and related commands
further refinements
intermediate check-in, per-object events work
converted more events, broken per-object events (needs map support), lots of fixes
Move callback checks to C++ and short-circuit when no callback exists for an event: No perl is touched when an event doesn't have a callback registered, so this is very fast (compared to the old way).
disabled transports due to brokenness
get rid of esrv_map_scroll and MapNewmapCmd, map update will handle it automatically
removed P_SAFE_MAP and added P_SAFE as map flag set by an item with type SAFE_FLOOR (165)
added safe map and some checks over the code to make the maps really safe!
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.
added utility function for reseller
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.