--- deliantra/server/Changes 2009/10/23 03:28:09 1.447 +++ deliantra/server/Changes 2010/05/10 15:54:40 1.710 @@ -1,18 +1,420 @@ Deliantra MORPG Server, Maps and Archetypes ChangeLog. + Version numbers sort like decimal numbers. -TODO: move_on/move_off events? -TODO: create "stay invisible always" list of face names (magic_mouth.png etc.) -TODO: ->living accessors for matches! +TODO: golem survives "longer" now - too long? +TODO: clean up skill handling in kill_object. +TODO: mining experience +TODO: highest cpu users: stand_in_light (object *op), get_map_flags, blocked_link, path_to_player +TODO: reload_settings +TODO: thawer should ot next() +TODO: reload_config leaks +TODO: first derivate of experience does not monotonically increase +TODO: apply Glowing Crystal # does not work + - (maps, arch) complete revamping of the transport routes - all cities are + now easily reachable, at a price. + - (maps) the mana fountain now has a ratelimit of 30 potions per hour. + - (maps) added (navar) gravedigger, that buys players gravestones. + - (maps) added the rathouse quest for the shockwave spell in navar + (by Dustfinger). + - (maps) fixed bad floor tile in navar apartment. + - made (wizard) look_at show also uuids. + - added cf::object::find_object_uuid (::find_object already exists!). + - (maps) added new apartment, made by LinuxLemoner. + - (maps) added quest for the mining skill scroll to valleynoy. + - (maps) added greedy highlevel book shop to heaven town. + - (arch) added sounds: zombie death, book reading, inscription. + - (arch) made the hill giants loose more body parts. + - (arch, maps) added black unicorn horn, required to access mlab hell. + - (arch) increased the (possible) number of arrows/bolts found in shops + and made them a bit more expensive. + - (maps) add more glory hole treasure styles. + - (maps, arch) add "hollow" variants of cave\d tiles, and use them + in a select number of mlab maps. + - (maps) the library should be less of a death trap now. + - (maps) exits no longer point to auto-apply exits, most affected + maps now have proper doors or a similar solution. + - (arch) jumping skill has now physical attacktype. + - (maps) fixed nurnberg/reception/fire5 to match new style torches. + - enter_map did not normalise the map coordinates when the destination + space is blocked, causing badness and freezes for the player. + - when applying containers, server checks for the key on activate + and also allows players to unapply active containers they don't have + a key for. + - moved formulae, attackmess, artifacts, exp_table, materials and + races files to arch, where they belong (exp_table is no longer in + confdir but in datadir now!). + - jeweler and sound config files are now normal datafiles as well. + - quit_character was causing a runtime exception, causing it to not + work since 2.93. + - entering a map will now respect move_on and other effects, + except for auto-apply exits :/ + - only talk to the items on the nearest mapspace, or, of there + are none, to the player, not ALL items in vicinity. + - do not update the floorbox while running, to avoid big item + updates that cost network bandwidth and processing power. + - diseases could reduce a monsters speed to MIN_ACTIVE_SPEED, which + caused overflows causing monsters to become living deads. + - unapply weapons and armour before trying to improve it. + - teach the random map generator the ability to read ".rmg" files + that specify which actual style map to generate, and use it for + the default decorstyle to avoid inappropriate maps to be used. + - support (with some limitations) multiple different skills with the + same subtype. + - fix "nekosan duplication" bug - map swap out was not atomic, + so nekosan could end up beign saved AND escaped to another map. + - show invisible no longer makes magic mouths visible. + - move_type changes (spells, skills etc.) now will correctly + take move_on/move_off into account (e.g. buttons). + - display (exit) or (random map) in client for those objects. + - removed (useless) spell damage columns from spell info and replace + it by effective casting level - clients > 2.10 required to display + properly. + - building of levers/doors works again for all kinds of floors. + - the player can now withdraw and deposit all the available money. + - (maps) fix the apartment shop (japan => 吾妻) and add descriptions for + steinwandstadt/celvear. + - (maps) added /goodies map (goto *idkfa) with stuff useful for testing. + - (arch,maps,code) rebalanced value of spellbooks greatly. it's now + mostly based on the spell's level in the spellbook. + - (maps) fix some map regions and the region tree. + - the server will now be more picky when parsing the regions file. + - do not rely on chosen_skill in calc_alch_danger. + - improve editor support protocol slightly, provide workarounds for 2.10 + clients. + - follow has been rewritten to be, hopefully, more robust. + - follow mode will not be aborted when the follower tries to move. + - tcp.ext didn't unbind in reloads. + - map-tags.ext didn't properly close the database on reloads. + - cfutil skips .-directories when scanning. + - build.ext prevents players from building on other player's maps. + - rent.ext allows the dm to enter anytime. + - NPC_Dialogue adds a new predefined variable, $map. + - new "build" event hook. + - get rid of archetype min/max values except max_x (which should go, too). + - added fix_generated_item and cf::object::generate to XS interface. + - no longer use uppercase identifiers for saving anywhere, but support + them on loading, for old playerfiles and maps. + - removed is_legal_2ways_exit - this is apparently dead code, and + would be handled differently nowadays anyway. + - random map .meta were not being expired at all. + - replace move_ob/move_object functiony by the equivalent move method. + - update to automake 1.10. + - invitation to maps with unagressive and friendly monsters doesn't + require level 4 anymore. + - do not let update_stats muck with the chosen_skill anymore. + - monsters now rotate through all skills (in chosen_skill). + - fix lots of path-related buffer overflows in the random map generator. + - detect/sense curse/magic will no longer work on items that don't + need identify. + - added detect mineral vein spell. + - support "wall overlays" in the random map generator - not very generic, + used by minable veins. + - (maps) relocated jeweler town to another directoy. + - (arch) implement mining pickaxes and mining skill. + - (arch) add missing stonebig_club archetype from cfextended. + - jeweler skill doesn't diminish input values anymore. + - jeweler skill is harder to level now, but in exchange item power + of the output is only 1/5th (instead of 1/3rd) of ring level. + - jeweler skill adds the makers name (currently not visible) to the + generated ring/amulet. + - generate most constants for perl automatically. + - properly check for weapon name prefix ("Ragnarok's sword"). + - when player dies, restore his food to at least 200. + - support multiple inheritance for arch sources (inherit a,b,c). + - switch to storable-n-format for facedata, for better interoperability. + - implement generic "ranged" item framework (pickaxe, fishing rod). + - the singing skill actually respects the direction now. + - oratory and singing now require a direction. + - use_skill now requires that you can actually apply the skill tool. + - do not invoke perl on every user command anymore by providing + a command and an unknown_command event. + - move mark, run, run_stop, fire and fire_stop commands back from + perl to C++, for speed reasons (basically undo patchset 1304). + - add a client_destroy event, so we don't have to hook the + attachable destroy event (which is called much more often). + - removed (unused) FLOOR object type. + - fix errornous change_abil messages for rods (and other types). + - remove include/commands.h and server/c_new.C, and refactor + all into server/commands.C. + - save and restore combat/ranged/current slot for players. + - the server now batches item's face/fx commands, as opposed + to sending one fx per item - helps mostly at connect and + with floorbox updates. + - implemented ext::player_env::play_music_once $who->contr, "km/...". + - the random map generator now supports selecting difficult for + more style categories than just monsters (all except fountains + apparently). + - object serialiser no longer creates empty "owner" references. + - make sure failed castings take some time, too, to avoid being + smitten by your god. + - many more failmsgs and help texts. + - support log suspension/resumption, e.g. for defragmenting. + - stop thrown objects when their speed goes too low. + - log the number of unique logins seen every minute in a compact + format (for statistics). + - do not send delitem for players. + - support static scalar data members properly in genacc now. + - implement "simple" freelist management for objects. + - recycle object counts now - to support longer uptimes. + - got rid of the dreaded write_parameters_to_string (666 chars omitted) + function (and yes, 666 is exact!). + - random map generator results should now be fully repeatable. + - fixed possible crash bug in build code. + - rename find_marked_object to ->mark and speed up. + - player movers properly destroy themselves when used up, instead + of leaking. + - do not show msg for unidentified objects that need identification. + - convert formulae/bookarch/settings file parser to thawer framework. + - finally get rid of fgets (..., thawer) and use a much cleaner + next_line method. + - use nicer file format for exp_table and attackmess + (more like other resource files). + - make parse errors during server startup fatal. + - properly initialise all maptile values in constructor. + - improved {link} map. + - optional unloadable extensions will not lead to an endless loop. + - server will cleanly autorestart when running out of protocol IDs. + - use faster and slightly more exact find_dir_2 replacement. + - building listening books is possible again. + - (maps, arch) added archetype for building instructions and replaced + the copies of the instructions in the maps with it. + - (arch) made the spark shower spell available in shops. + - don't create a second LOGIN event on character creation. + - correctly generate "You paid xyz" message in shops. + - the shop menu now also displays the (approx) value of the item. + - added a 'password' command, to let DMs change the password of players + more conveniently. + - correctly save shopitems string, to avoid parse error when reading + saved maps. + - logging now differentiates between logging levels better. + - speed up get_typedata. + - fix deadlock problem during server shutdown/reload. + - make ext/checkrusage "more" non-blocking. + - use common::sense for extensions. + - work around a 50.10.0 utf8 caching bug. + - correctly try to load tiled maps in adjacent_map, might fix + "no relation to target" bugs. + - try to load (pure-)perl modules asynchronously, warn about + modules being loaded from the mainloop, pre-load some more + core modules so perl doesn't do it later on. + - make exp_table and materials file reloadable. + - made reload_config non-blocking. + - the seen command called (Blocking) stat() instead of aio_stat, + causing server freezes. + - store unhashed password, to prepare for safer authentication. + - do not log connections from the local host, to help a local + watchdog. + +2.93 Sat Feb 13 15:52:36 CET 2010 + - (maps) fix travel to valdor and back. + - do no longer by default eval map cod ein safe compartments + (this can be re-enabled using the safe_eval config option). + - (maps) fix an apparent crash bug caused by broken generstors + in lorak. + - fix data corruption issues caused by recursive calls to + unordered_mapwalk - now every caller must provide its own + buffer. + - (maps) improve tindervale maps slightly. + - (arch) considerably decrease slag ex price. + - (arch) fix filth archetype. + - extension dependency resolve was completely broken. + - multipart objects would cause save_throw_object to crash - it + now acts on the head only. + - do not try to connect to an irc server unless explicitly configured. + - do not expect decltype() to be available in gcc 4.4. + - extended the safe perl environment by loops. + - (arch) fix "armless cook" facings. + - the "experience table" resource item did not have a proper + hash associated with it, so updates could not be detected. + - fixed poison traps in doors. + - player->killer_name did not properly flag the name as unicode. + - aggressively mark many more methods as utf8 or octet-expecting, + and provide a non-destructive SvPVutf8 variant. + - do not allow dragon players to change their title via the settings. + - ratelimited jeweler skill nugget conversion. + - under high load, the server stopped swapping out to make + the server more responsive, but making it impossible to reduce + the load by... swapping out. slot queuing will now always make + some progress. + - improve the quality of the load-avg calculation. + - (maps) fixed quest npc in jeweler dungeon quest. + - don't fail to write the runtime file if the temporary already exists. + - ipo.ext no longer uses (synchronous) CFDB, stores mail directly at + player now. + - rewrote hiscore code from scratch to use async I/O, store uuid and + timestamp and use a tab in the client to increase awareness. + - npc dialog setflag/setsatte now check for defined'ness, so + setflag 0 is possible. + - make install now deletes old extensions, to ease upgrades in the + deliantra vm. + +2.92 Thu Dec 24 04:51:56 CET 2009 + - the destruction spell could/would corrupt server memory quite often. + - logging in only fixed the combat slot when the palyer was loaded from + disk, not when it already was in memory. + - cede in wait_for_tick* when the tivck is inhibited hopefully + avoiding livelock during high-load emergency saves. + - logging in did not properly unapply all skills. + - (maps) make the invite quest marking much more obvious. + - (arch) fix warrior archetype names. + - map prefetching never prefetch upwards. + - wizpass no longer makes you non-blocking. + - (maps) add light to some of the special maps, add troll + map. + +2.91 Mon Nov 30 10:18:09 CET 2009 + - (maps) add gorokh_final mapset from crossfire. + - (maps) block most vault-type mlab locations, open up + imperial converters for anybody to use. + - (maps, arch) replace all permanent stat potions by random + variants. + - (maps) spread gorokh demon styles more evenly over 1..100. + - TRIGGER events got passed a garbage pointer instead of a + real player object on player changes. + - diseases and maybe other things could sometimes reduce the speed + to below MIN_ACTIVE_SPEED, deactivating the monster and causing + much grief. + - speed_left randomisation was, apparently, totally broken. + - introduce FLAG_RANDOM_SPEED instead of using the sign bit + of the speed slot internally and in map save files. among other + things, this gets rid of all the abs (speed) calls. + - reduce map file save files by using abridged keywords aliases. + - shop specialisation calculation was totally broken. + - nrof/itemcount/volume limits when dropping to the floor are + now enforced. + - fix magic mapping, which only worked for inate spell casting. + - godgiven items will now be explicitly described as such. + - (arch) dded a quiver of bolts. + - materialnames would change "randomly" on every load, only + set the material when the materialname was not set before. + - balancing change, halve rod recharge speed (instead + of 4.8s, the standard rods now recharge in ~10s. not a solution, + but still. + - reduce cpu time used for map saving by >>50% by avoiding + the costly flag-checking loop in most cases and using a simple + repeat-cache for speed_left. + - always delay stats update for players on insert/remove till + next tick/command, which saves a lot of cpu cycles on drop/take. + - add hint about havign to run to attach unaggressive npcs. + - pet monster level was not displayed correctly in "showpets index". + - clean up floating point conversions and many similar nitpicks. + - fix hanuk altar. + - overhaul material system to be much faster, and having less bugs, but + still having a lot of cruft :/. + - add marble shop floor. + - move gcc specifics to new file include/compiler.h. + - unrecognised cfpod directives could cause undefined behaviour. + - added boes' marble shop to steinwandstadt. + - pad mapspace to power-of two size for speed/codesize/cache gains. + - optimise mapspace updates. + - cache volume/items per mapspace. + - use fabs, min and max consistently (surprisingly for a code size + decrease). + - fixed a small uncleanlieness in item converters, which might + have led to weird item multiplications. + - store hash value in shstr, not used by anything, but doesn't use much memory. + - fixed crash bug in learn_spell command. + - enhanced output of the mapinfo command. + - remove all traces of FLAG_NO_FIX_PLAYER. + - avoid sv_derived_from calls (lots of hash lookups) when converting + from perl to c++. + - implemented least_significand_bit and for_all_bits_sparse_32 utilities + and use it in some "inner" loops. + - rename flags to attachable_flags to avoid confusion :=). + - fixed jeweler experience output to not be floating point. + - added lock/unlock commands, thanks for the patch go to Shawn Robinson! + - (arch, maps) introduce inactive_shop_floor and fix some shops with it. + - try to prefetch memory inside process_objects, which can give + enourmous speed gains. + - make some small optimisation to the process_objects loop. + - move facedata chksum calculation into cfutil, make server more flexible + handling different chksum lengths. + - check for hash collisions in cfutil. + - reduce face checksum size from 6 to 4 bytes. + - don't crash when a map uses empty sound/sound_destroy/face. + - removed weather-specific attributes. + - fixed genkeywords dependency. + - do not clear "randomitems" slot for world underlays. + - use "sl" as short-hand for speed_left in save-files, just to make them + smaller. + - in general, don't crash on value-less resource file lines + anymore, due to get_str never returning a 0-pointer. + - code cleanup in move_symptom. + - removed arch_to_object (replaced it by ->instance ()). + +2.90 Sat Nov 7 15:06:06 CET 2009 + - some Andrew Madloch wanted, despite being specifically told + multiple times that the Deliantra parts additions are under AGPL, + lock up the source code of the server within his company. + some reorganisations have been done to the sourcecode to make + it clearer that this violates the Affero GPL. Help to keep + Deliantra free software even for the coming generations + and be wary of the promises of Andrew Madloch, he has nothing + good in mind for free software. + - clarify which files of the server are 100% AGPL. + - minor reorganisation, move some GPL code into other files. + - implement viewpoint (which is like observe, but only for the map, + not stats etc.). + - replace magic mapping overlay by a flying bird exposing area + on the worldmap (ext/magic_mapping.ext). + - @find in npc dialog was useless as the vairbale wasn't accessible. + - @find results in npc dialogue is now stored in $find. + - (maps) add lostwages and lorak (valdor/varsia) from cfextended. + - (maps, server) add lostwages and celvear apartments to rent system. + - (maps) closed guild houses, this is not scalable, ask your friendly + dm instead. + - (maps) add town portal to celvear. + - (maps, arch) add troll canyon, pygmy forest, elven moon and temple of justice + mapsets from crossfire, together with associated archetypes. + - (maps) add extended region descriptions for some regions from crossfire. + - (maps) define a new whalingoutpost region. + - (maps, arch) add all changes to mlab between 2006-08-01 and 2009-10-28, + and most archetypes that go with them (without stoning and swallow effects), + casino tokens and stock certificates are also missing. + - (maps, arch) add a number of minor maps from crossfire to scorn, navar + and santo dominion. + - (maps, arch) added gotischerbereich from cfextended, and some archetypes + to go with them. also adjusted archetypes to be more korrekt "gotisch". + - doors/containers can now use "match ..." expressions for the slaying field. + - properly close client-side dialogue when the player is teleported away. + - map-tags did not properly close it's database tables or wait + for a quiescent state, causing memory corruption on reload. + - support "stat.xyz" accessor in match expressions. + - skip /styles and /editor directories in cf::map::static_maps. + - implement ->send_big_packet and use it in ext_msg (among other things, this + fixes long answers from npc dialogue). + - connected magic mouths no longer spill to Log-1, but use the examine tab. + - (arch) change marker archetypes to not remove "marker" forces anymore + and to not add a "put your code here" force needlessly. + - (arch) fix or improve many plurals. + - markers do no longer add a force if the slaying field is unset. + - sped up search-items implementation, but it's still horrible. + - (maps) bigchests are now properly non-unique, per_player and no_reset. + - editor_folder can now be used to override whatever cfutil sets, and was + used to reogianise the illogical arch tree a bit. + - (maps) import most map names from crossfire. + - nuke image_sums/image_info subcommands from the protocol. + - fly_high movement gives better los, ignoring blocksview. + - the addexp command should now honour skill names with spaces. + - (arch) add nuke from cfextended to avoid a crash. + - (arch) added many more buildable marble floors. + - major namespace cleanup: save 45kb by making functions static + that were unnecessarily global. + +2.82 Sat Oct 24 03:50:17 CEST 2009 - fixed a classical and exploitable stack buffer overflow in the gsay command. + - fix a memory buffer overflow in the book code. - add @check, @find npc dialogue commands. - (maps) add a number of town interiors. - (maps) add tindervale the fireborn capitol from cfextended. + - (maps) add celvear area from cfextended. - (server,arch) add a number of inscribables, show their capacity in hint. - (server,maps) fix bug causing some library books not to be chained down, cause Scorn/Navar libraries not to have inscribable books. - (maps) fix bug causing the Greyshield and Greysword to have inappropriate item power. + - (maps) fix intwell balancing issue. - improve the look of generated books. - make slag no_drop so it can't be dropped from the cauldron. - fix bug where players could bypass no_drop by putting items in containers. @@ -36,11 +438,13 @@ - new BLOCKED_MOVE event added. - mapscript archetype now has activate_on_xxx true by default, as similar connected elements. - - (maps) imported all styles from crossfire-extended except + - (maps) imported all styles from cfextended except floorstyles/land_plots and monsterstyles. + - (arch) imported gem treasurelists and archetypes from cfextended. - don't crash when treasure lists are empty / supply new empty treasurelist for randomitems when none can be found. - implement cf::map::static_maps and use it in map-tags.ext. + - fix a bug in map-tag scanning when moving tags. - (deliantra.net) improve watchdog to now check both listening ports for a reaction. - implement new "loadall" map loading command, purely for debugging. @@ -475,7 +879,7 @@ archetype *archname* (chairs of different facings were merged). - bugfix: fix a potential crash issue in find_object_name (not used normally). - - bugfix: locked doors cnanot be bashed down by magical means + - bugfix: locked doors cannot be bashed down by magical means (destruction, magic missile etc.). - swarm spells without a direction now use various spiral patterns instead of being fully random. @@ -564,7 +968,7 @@ - refactored the object remove/insert functions and most related functions (decrease, split, merge_ob etc.). - make it compile better on freebsd (reported by pippijn). - - remove GT_UPDATE_INV (no longer applicable). + - removed GT_UPDATE_INV (no longer applicable). - fix the longstanding "container stays open" bug. - improved floorbox updating to be incremental and other protocol optimisations. @@ -856,3 +1260,4 @@ - removed most all of the weather code - unified logging to stderr and file - too many minor changes to document +