DSB Version History

This forum is for the Lua scriptable clone of DM/CSB called Dungeon Strikes Back by Sophia. Use DSB to build your own highly customised games.

Moderator: Sophia

Forum rules
Please read the Forum rules and policies before posting.
Locked
User avatar
Gambit37
Should eat more pies
Posts: 13714
Joined: Wed May 31, 2000 1:57 pm
Location: Location, Location
Contact:

DSB Version History

Post by Gambit37 »

For information purposes only. Thread is locked from conversation.

Version 0.6, 28 Feb 2007
No description

Version 0.7, 7 March 2007
No description

Version 0.8, 18 March 2007
- Reincarnation
- More DM items: shooters, moveable walls, more doors, etc.
- Triggers can now have multiple targets
- Fully functional Vi Altars
- > 15 XP levels
- Lua function: dsb_text2map(level, x, y, light, xp, { maptable } )
- Lua function to get and set xp directly

Version 0.9, 25 March 2007
- Lord Chaos, the Firestaff, etc. are now all present
- Added other forgotten items
- CSB Character portraits
- dsb_champion_fromparty(ppos) to remove chars
- Better looking RA doors
- Bug fixes of course

Version 0.10, 7 April 2007
- Fixed a nasty infinite loop
- Added overlay graphics (set a graphic in a PARTY type condition)
- Added x_relay and x_counter for emulating RTC-style mechanics
- Added an opby_class opby
- Made monster sight distance not hardcoded
- Made fuse damage nonmaterials
- dsb_current_inventory function to get who is currently being looked at

Version 0.11, 10 April 2007
- Fixed crash when destroying champion data structures
- Fixed a crash with monster generators for size 2 monsters
- Triggers becoming enabled under the party are now triggered
- Corrected a bug with teleporters and flying objects
- More tolerant of order of doors/doorframes/buttons on tiles
- Added spawnburst mode for ESB or RTSB autogenerated files
- dungeon_translate() to help import from DM
- Added "default_silent" property to triggers
- Floortext flooritem
- Flags for dsb_lock_game()
- Lord Chaos is now not affected by magical boxes
- Added opby_party_carry opby
- Added bool "release" exvar for object hiding/sconces
- Added bool "air" and "air_only" exvar for opby flying objects
- Added bool "zoable" exvar for doors/doorframes/whatever

Version 0.12, 14 April 2007
- Fixed numerous bugs with the handling of triggers
- Fixed a bug where party members would attack the wrong monster
- Fixed graphics error with medusa fountain
- Modified "opby_party_carry" to be bool
- Made flying monsters trigger "air" triggers
- Made silent/default_silent apply to teleporters

Version 0.13, 17 April 2007
- Fixed bugs introduced when I fixed numerous trigger handling bugs
- Fixed logic errors in doors that caused them to misbehave
- Fixed bug with triggers that specify sounds
- Changed dungeon_translate's pad behavior to work better with RTSB
- Support for multiple clickable objects on one wall

Version 0.14, 18 April 2007
- A near-fatal bug from 0.13 is gone
- Expanded support for multiple clickable wallitems: double alcoves are now quite easy.

Version 0.15, 28 April 2007
- Fixed crash when dsb_enable causes objects it is affecting to move
- Fixed crash on stairs
- Fixed bug with things falling down a pit onto a trigger
- Fixed dynamically scaled objects being wrongly x-flipped
- Fixed a bug with expiring torches
- Fixed rock's attack methods to no longer include "STAB"
- Fixed broken mana potion
- Added dsb_level_tint(RGB)
- Deprecated dsb_use_wallset in favor of dsb_level_wallset
- Added "floordamager" (does damage to anything walking on it)
- Added "func" exvar to triggers/wallitems to call arbitrary functions

Version 0.16, 10 May 2007
- Now able to specify an object's attack methods as a table-returning function
- Added: dsb_replace_condition to change a condition on the fly
- Added: dsb_update_strings to change system strings on the fly
- Added sys_inventory_* hooks
- Added dsb_fullscreen - Fullscreen "cut scenes"/etc. mode
- Fixed stairs bug
Additionally, I added a "poison bar" to the test dungeon that shows how poisoned a given character is. It was mainly to see if it could be done (it could ) but I think it's kind of a neat effect. The poison bar is implemented all in Lua of course.

Version 0.17, 20 June 2007
- Wallsets can now be changed by tile or wall facing with dsb_alt_wallset()
- Lets monsters spawn in special areas with use of "actual_level"
- Added "on_damage" event to monsters
- Added "door_portcullis_ornate" object
- Fixed occasional Lua error on monster generator activation
- Fixed glitches with worm spawning
- Improved worm behavior

Version 0.18, 23 Aug 2007
- Now able to render perspective 0 wallitem sideviews ("near_side")
- Magic runes can now be toggled with dsb_rune_enable/dsb_rune_disable
- Added "sys_rune_cast" hook when a given rune is cast
- Fixed a couple of attack methods giving the wrong type of xp
- Some useless junk removed

Version 0.19, 5 Oct 2007
- Allowed more than 4 classes, and more than 4 subskills per class
- Replaced "monster_hit_by_weapon" with more useful "monster_took_damage"
- Monsters can use "special_attack" property to call a function when damaging a character
- Grabbing portions of scaled images now won't introduce artifacts
- Wallsets can now be animated (and will actually work)
- Fixed a memory leak in attack methods
- Fixed a few minor rendering glitches

Version 0.20, 23 Oct 2007
- Food/water and stats are now subrenderers and can be fully controlled by the designer
- Now allow msg_handlers to be a function of form msg_handler(id, msg, data, sender)
- Improved door and pit spawning functions, and added monster spawn function
- Made maxload x10 internally just like all the other stats
- Fixed bugs with quickness and load algorithms caused by assuming it was when it wasn't
- Fixed some glitches with dsb_enable() and dsb_disable() inside of a spawnburst
- Fixed a bunch of crashes and glitches with animated walls and floors
- Randomized wall hit damage
- Fixed a memory leak when loading a new dungeon

Version 0.21, 31 Oct 2007
- Added support for alpha channels (use .tga format images)
- Added support for separate "left side" bitmaps in a wallset via dsb_make_wallset_ext
- Fixed alternate wallset display bug
- Fixed a crash when using a custom graphics.dsb
- Sound playing now supports looping and returns a chan_handle
- Added dsb_soundstop(chan_handle) to stop a playing sound
- New monster event: on_want_move(self, id, lev, x, y, face, see_party, fear) = lev, x, y, face
- Added dsb_visited(lev, x, y) = bool
- Added dsb_level_getinfo(lev) = x_size, y_size, lightlevel, xp_multiplier
- dsb_shoot now has optional damage_delta parameter
- Made msg and delay of a trigger support multiple parameters like target
- Added dsb_game_end() to show ending screen and exit
- More cleanup of unnecessary bloat

Version 0.22, 1 Nov 2007
- Moved the "front door" into a Lua-controlled full screen renderer
- Fixed a crash on reload when there is a sound queued up
- Added boolean argument for dsb_game_end() to make the end screen boring
- Fixed rendering problems with hazes at a distance
- Fixed a mana bar display bug
- Fixed some annoying monster AI bugs
- Added startup diagnostics/info
- GUI buttons now give visual feedback

Version 0.23, 14 Nov 2007
- Inventory layout is now controllable via inventory_info in base/graphics.lua
- Moved inventory interaction control from core to sys_inventory
- Attack methods are now rendered by Lua and controlled by msgzones (see base/render.lua)
- A lot of AI code has been moved out of the core to base/monster_ai.lua
- Major rewrite of AI code to enable monsters to be smarter and sneakier
- Monsters now can be given on_click events
- Added dsb_reposition to easily move insts around on the same tile without triggering
- Added several new AI messages for greater control (AI_MOVE, AI_TURN, AI_TIMER, AI_TARGET)
- Added dsb_ai_subordinates(boss) = { {id, tile}, [...]}, num_subs
- Added dsb_ai_promote(monster) to make a monster the boss of its tile
- Moved mana deduction for casting magic runes from core to sys_rune_cast
- Simplified the system for determining rune costs (thanks to Jor)
- Added a browser to choose a dungeon if one is not selected in the ini
- Compile mode now produces a graphics.dsb archive with your custom graphics
- Started to allow for non-fatal Lua errors for better debugging
- Renamed actual_level to sys_actual_level for consistency
- Fixed a bug where inst pointers weren't updated after a swap
- Fixed some severely messy code inside of spawnbursts
- Fixed a crash when turning some size 2 monsters
- Fixed a couple of rendering glitches
- Added dsb_clone_bitmap to save memory when multiple bitmaps use the same image
- Unreferenced bitmaps and sounds are now garbage collected by Lua

Version 0.24, 18 Nov 2007
- Rewrote ammo grabbing system to work better and be more generalized
- Can now use a graphics.dsb even when compiling a dungeon from scripts
- Major tweaks and improvements to melee combat (Thanks RemyR and Jor)
- Fixed a bug in the parameter sanity checking of dsb_party_place()
- Fixed a design flaw with wall rendering at low light levels
- Fixed a glitch in the rendering of attack methods
- Fixed bugs in attack_from_back ability
- Fixed a nasty bug in dsb_level_getinfo
- Fixed a few small bugs in dsb_msgzone
- Made size 2 monsters cover ground objects properly
- Fixed errors in collision detection when monsters group up
- Fixed a bug with grouping of size 2 monsters
- Tweaked attack speeds for very fast and very slow monsters
- Added dsb_in_obj(inst) iterator
- Added dsb_lastmethod(ppos) = method, slot, item
- Added "UNTOUCHED" gfxflag (unset by engine when an item is moved)
- Windowed mode now has an enabled close button
- Alt+F4 will now exit the program immediately

Version 0.25, 21 Nov 2007
- Added dsb_import_arch(file, root_name) to load in custom objects
- on_click now passes the coordinates clicked (relative to the object)
- Fixed a bug causing spinners to make objects disappear
- No "regen" for a monster generator now means it never deactivates
- Removed unnecessary idle time check in attack methods
- Added extra "location" parameter to on_throw
- Fixed a bug with multiple pitfalls
- Improved handling of nonfatal Lua errors
- Fixed still more bugs with size 2 monsters

Version 0.26, 25 Nov 2007
- Magic spell system is now rendered and controlled by Lua
- Movement arrows are now rendered and controlled by Lua
- Deprecated dsb_rune_enable/disable in favor of g_disabled_runes table
- Added dsb_dungeon_view(lev, x, y, dir, light) to return a rendering of the viewport
- Fixed a nasty bug in the clickzone allocation code
- Monsters now take damage from a pit
- Fixed a bug in displaying alpha blended objects
- Fixed bugs in spawn/move queues causing game freezes
- Fixed a bug in wallitem_click with torch sconces that are triggers
- Fixed a bug in trigger handling with func exvars (Thanks Remy)
- Enlarged clickzones for dropping items
- Made alcoves respond to clicks of items going in and out
- Triggers now can be off-center (and will respond only to insts on their sub-tile)
- Made explosions visible from a bit more distant to be consistent with DM
- New event: on_fly(self, id, x, y, tile, face, power) = x, y, tile, face, power
- Added "no_group" arch property to monster_ai.lua (and set it for gigglers)
- Added "no_party_triggerable" property (and set it for stairs)
- Added "useless_thrown" property and set it for soft, bulky things like clothes

Version 0.27, 30 Nov 2007
- Added support for multiple attack animations per monster
- Improved clarity of fatal Lua error messages
- Fixed glitches in light-creating objects owned by mirrored characters
- Fixed a centered cloud rendering error
- Fixed a haze rendering error caused by ext-style wallsets
- Fixed a bug in method_heal
- Added on_succeed_attack_close and on_succeed_attack_ranged events
- Added limited support for heterogeneous groups via group_type property
- Cleaned up the Lua code for ranged attacks a bit

Version 0.28, 7 Dec 2007
- Fonts, mod music, and midi music will now load from individual files
- Added dsb_get_soundvol(channel) and dsb_set_soundvol(channel, volume)
- Fixed the timing of sys_update to allow more DM-like regeneration
- Tweaked bro potions to be less random
- Arbitrary tables can now be exported (or put into exvars)
- Made the bitmap scaling routines much more memory efficient
- Wallitems with count and destroy set will now destroy the item properly
- Fixed a glitch in wallitems that release items
- Fixed a crash when trying to delete a container full of items
- Fixed a renderer bug in drawing the distance 3 perspective walls
- Fixed a few bugs in the code that calls Lua renderers
- Fixed function-returning method definitions for unarmed methods
- Fixed opby_party_carry to be more sensible and versatile
- Made deletes only queue when changing the dungeon itself (not inventories)

Version 0.29, 11 Dec 2007
- Keyboard is now configurable by the player
- dsb_alt_wallset will now change floor and ceiling on an open tile
- Alt+F4 will now function on the "The End" screen
- Added AI message AI_UNGROUP to let monster groups scatter
- Added "multiplier" exvar (sets monster's xp multiplier individually)
- Fixed a monster grouping bug causing circular boss relationships
- Fixed teleporters to keep centered monsters centered
- Major restructuring of internal handling of object archs

Version 0.30, 7 Jan 2008
- Added dsb_override_floor("gfx name", flip) to globally override the floor
- Added dsb_override_roof("gfx name", flip) to do the same for the roof
- Added dsb_wallset_flip_floor(wallset, img) and dsb_wallset_flip_roof(wallset, img)
- Added sys_party_turn(dir) hook (called whenever the party changes facing)
- Deprecated BAD_INDIVIDUAL condition type in favor of condition flags
- Fixed a missing parameter in monster collision detection
- Fixed some rendering glitches when using alt wallsets
- Upgraded to use the latest version of Allegro

Version 0.31, 7 Mar 2008
- Added internal support for a splittable party
- Added flags to control game engine reactions to split party members
- Added dsb_party_at(level, x, y) = party, or nil if no party is there
- Added control of party stack via dsb_party_apush(v) and dsb_party_apop() = v
- Added dsb_get_exviewinst(char) = inst and dsb_set_exviewinst(char, inst)
- Updated Lua scripts to support different parties in different areas
- Changed default attack methods to use 3d sounds

Version 0.32, 29 Apr 2008
- Default wallset is now an ext wallset (and looks nicer)
- Save games can now be named to remember which is which
- Added ability to be a trigger to base Lua code for stairs
- Rendering near_side views got broken somewhere along the line, now fixed
- Fixed a crash when attempting to draw animated wallitems
- Fixed some other minor but ugly rendering bugs
- Added "ambient_sound" arch to base code to make ambient sound easier
- Added "no_stopclicks" flag to monster archs (lets you pick up items underneath)

Version 0.33, 17 July 2008
- Function dsb_update_strings renamed dsb_update_system and expanded
- Improved handling of directional triggers
- Fixed error with const_weight and lists of targets
- Added opby_func exvar, contains name of func(id, what, wallitem, teleporter)
- Fixed problems with removing a dead party member
- Added sys_sleep, sys_wake_up, sys_game_save, sys_game_load

Version 0.34, 23 Aug 2008
- Upper right icons now update colors along with health bars
- Fixed some omissions in the "hook" system
- Removed some memory-wasting debug code in functions that shouldn't be buggy anymore

Version 0.35, 19 Dec 2008
- Added dsb_get_light_total() function to return total current light level
- Added dsb_cache_invalidate("archname") for dynamic dungeon graphics
- Added dsb_screen_bitmap() = copy of whatever is on the screen
- Added dsb_set_flyrate(int) to allow faster flying objects
- Added sys_party_rearrange(ppos, oldpos, newpos)
- Changed monster AI functions to make altered AI behavior a bit easier
- Made physical attacks reduce monster fear to be more like DM
- Fixed crash when trying to rearrange party members when everyone was dead
- Fixed malfunctioning constant weight triggers
- Fixed bug in pitfalls

Version 0.36, 13 March 2009
- Added PNG support
- Clicking on mouth now shows food/water/poison
- Fixed wall window rendering bug
- Fixed bugs in quiver handling
- Wallset renderer now will actually use image offsets
- dsb_bitmap_textout now returns the number of lines printed

Version 0.37, 31 Dec 2009
- Now includes the "Editor Strikes Back" GUI editor!!!
- Object arch system is now internally more robust
- Added dsb_move_moncol() to allow moving a monster and automatically handle flyer collisions
- Distant wall writing is now masked off so it looks more like what is written
- Fixed a nasty glitch letting dead characters cast spells
- Fixed a bug causing stacked items to often receive undersized clickzones
- Flying-only objects will now call "on_impact" if they are somehow dropped from inventory
- Pitfalls now do all their damage when you hit bottom, instead of incrementally
- Adjusted regeneration timer functionality during sleep to be more like DM
- Potions now can add to food/water bars (but still do not in base DM)
- Added "on_melee_damage_monster" event for hooking attack methods of specific weapons
- Added "on_teleport" event
- Expanded hooks into core base code in base/hooks.lua
- Modified base monster AI to make gigglers sneakier and more annoying
- Monsters with low poison resistance are now more careful around poison clouds
- Fixed freeze life to not break with revised/expanded monster AI
- Changed the default wallset and fixed some lingering ugliness in standard graphics
- Made party-splitting functionality optional (and disabled by default)
- Revised damage functions with new (or at least new to me) information from Christophe and Adamo

Version 0.38, 21 Feb 2010
What's new in DSB:
- Added some archs with simple, basic functionality to allow a more GUI-centric style of editing
- Fixed a bug in the champion mirror renderer that could cause strange Lua malfunctions
- Fixed lower case characters showing up as runes in the keyboard configurator
- Fixed error in base code causing spells/fear to be more difficult than they are in DM
- Fixed an object definition bug that made monsters gleefully jump down pits
- Fixed a base code error keeping opby_class from working
- Fixed a few small but irritating renderer glitches with alpha channel bitmaps
- Can now select leader even when portrait is shown
- Fireballs, explosions, etc. are now bright regardless of ambient light level
- Made monster attack animation delays more DM-like
- Mirrors will now trigger targets when their contained champion is taken out
- Made dsb_set_tint support optional intensity level parameter
- Failure to compile a graphics.dsb now results in a more informative error message instead of an outright crash

What's new in ESB:
- Added much more exvar editing functionality
- Added character/party editor
- Fixed a bug causing luck to not be properly saved

Version 0.39, 27 Feb 2010
What's new in DSB:
- Fixed climbing down closed pits
- Added option for qswappers to perform a regular swap
- Fixed an occasional crash when loading a dungeon where there are gaps in champion numbering
- Fixed an occasional crash when attempting to retrieve a string exvar
- Removed some minor memory leaks in the Lua interface code
- Added dsb_valid_inst(id), returning true if inst exists, false if it doesn't but the id is valid, and nil if it is not a valid inst id

What's new in ESB:
- Greater options for editing mirrors and qswappers
- Added repeat count to msg_sender
- Enhanced the character editor dialog box
- Fixed a bug where newly created champions could overwrite old ones
- Fixed a glitch in selecting party start position

Version 0.40, 19 March 2010
What's new in DSB:
- Added extra options menu accessed by pressing enter when the game is frozen
- Added keyboard shortcuts for accessing inventory and casting spell runes
- Added "sequencer" arch for easily making sequenced events (pit traps that open in sequence, etc.)
- Fixed a crash when drawing large objects that are unaffected by darkness
- Fixed some bugs keeping msg_senders from working right
- Instantly turning monsters now show their attack image regardless of facing
- Optimized monster AI to further reduce effectiveness of circle-strafing
- "Swarmy" monsters will now avoid poison clouds when swarming the party
- Weapons can now specify an attack sound to use for that weapon's methods
- Bonus hit power and damage can now be specified in an exvar for one specific inst of a weapon
- Fixed a Lua error when swinging a weapon that can't hit nonmaterials at a nonmaterial

What's new in ESB:
- Added ability to search for a given arch
- Added editor for function caller
- Fixed inability to pick a target from a list on a different floor
- Fixed a glitch causing improper handling of size 2 monsters

Version 0.41, 16 April 2010
- Redesigned the test_dungeon into more of a showcase and/or tutorial for DSB
- Added a few useful importable archetypes to the test_dungeon, like rusting rusters and a quiver
- Added ability to specify a sub-skill when giving an attack method's minimum level
- Tried to clean up the base code pertaining to attack methods in general
- Fixed an incorrect and overly low hp bonus when leveling up
- Fixed combat effectiveness against well-armored monsters being much lower than in DM
- Fixed fear-causing attack methods (war cry etc.) giving less experience than in DM
- Classes and stats that have just gotten a level up are highlighted in green
- Clothes now are worn if possible when automatically put away
- Throwable weapons are placed in a more convenient location when automatically put away
- Added shortcut keys for quickly moving party positions around, invoking attack methods, etc.
- Added shortcut keys for quickly saving and quitting
- Fixed a crash when pressing spellcasting shortcut keys
- Fixed a glitch where recently grouped monsters will be left without a boss and do nothing
- Fixed a glitch where monsters would not randomly move around when they were supposed to
- Added "pounces" flag to monsters to allow them to make a quick attack after moving
- Fixed a lot of general object properties that were incorrect
- Fixed a graphics definition problem in the base code with turquoise locks
- Fixed an oversight in the engine causing torches to burn out twice as fast
- Fixed some objects not fitting into locations they did fit into in DM
- Made it harder to walk into your own thrown projectiles
- Added "probability" arch to trigger events only when a certain random chance is met
- Added "item_action" arch to perform various (maybe) useful actions on items
- Can now use opby object as a target for qswapper arch
- Fixed opby_party_carry glitching when you pick up the object while standing on the trigger
- Made Ya potions create a spellshield, not a basic magical shield
- Smoothed out the curve for power reduction of shields cast on top of existing shields
- Slightly decreased chances of a foot injury when falling down a pit
- Added clone_arch helper function for designers to easily expand standard archetypes
- Added regen_mana_boost to ch_exvars to allow for magic items that increase mana regen
- Changed parameter order of failed_attack and failed_attack_idle to be more consistent
- Fixed a typo in naming a monster AI function, danger_evalulate is now danger_evaluate
- Saved game slot names now remember their previous entry

Version 0.42, 5 May 2010
What's new in DSB:
- Added "counterattack" flag to monster arch to allow a quick retaliatory attack
- Fixed an occasional game freeze-up when stepping on certain triggers
- Fixed a Lua error when using an attack method that uses charges
- Fine-tuned keyboard input code for spell runes to avoid lost keypresses
- Fixed a sound glitch caused when saving using the keyboard shortcut
- Fixed a strange issue with monster bosses when monsters are piled up
- Fixed a crash when clicking stacked instances that get destroyed
- Fixed monster animation glitch caused by using multiple magic boxes at once
- Attack method functions can now be specified as a string to avoid retaining references to a function you wanted to override
- Can now play background music through an "ambient_sound" arch

What's new in ESB:
- Renamed "probability" to "trigger_controller" and expanded its capabilities
- Now able to edit door strength against bashing/fire in editor
- Now able to make shooters use objects in the same square (not just inside)

Version 0.43, 30 May 2010
What's new:
- Minor fixes to throwing formulas to retain beneficial DSB tweaks but feel more true to DM
- Fixed errors when loading music
- Fixed memory allocation bug in dsb_include_file
- Fixed counterattacking monsters to not counterattack when your attack would kill them
- Can now specify a nil map on initial map creation
- Fixed a bug that sometimes prevented the screen from being redrawn properly

Version 0.44, 17 July 2010
What's new:
- Entrance door now shows the level you're entering at the proper light level
- Fixed frozen monsters reacting to some events
- Fixed an error when killing a monster standing on a self-destructing trigger
- Fixed a bug that made door buttons ignore any specified msg type
- Can now change arch of existing objects in ESB
- Fixed a few miscellaneous glitches

Version 0.45, 3 Dec 2010
- Added an optional 5th parameter to dsb_fullscreen that allows a fade in/fade out
- Added delay_func_call(delay, function_name, function_param)
- Improved mechanics for missile spells (fireballs, poison, etc.) in the base code
- Fixed a glitch in darkening the dungeon in windowed mode
- Fixed a rare crash when seeing frozen monsters
- Vexirks and Eyes will now try to blast doors that their zo spells can't open
- Made ESB create backups of files that it is overwriting
- Fixed a glitch in ESB that made it occasionally do stupid things while trying to help reposition objects

Version 0.46, 6 Dec 2010
- Fixed a potentially very ugly problem with dsb_get_font and dsb_get_sound
- Added dsb_replace_topimages(char, hands_background, portrait_background, death_icon)
- All archs now have a msg_handler_ext that can be used just like a msg_handler, for easier overriding
- Monster special attacks can now return a modified damage type, amount, and zone
- Moved most "housekeeping" tasks of sys_character_die into a new function
- Fixed a bug causing monsters to attack doors with missiles that will never open them
- Fixed a rare bug causing multiple copies of the same rune to appear in a spell when entered very fast

Version 0.47, 17 Jan 2011
- Added dsb_viewport_distort(effect) for viewport postprocessing
- trigger_controller can now respond depending on the party's facing
- Inventory load "yellow" and "red" colors and values are no longer hardcoded
- Added a DM2 table to the test_dungeon and slightly modified the renderer to support it
- Light handles can now be arbitrary integers or strings
- Behavior of item_action sending messages to a list of targets is now more sensible
- viewangle property now takes a four element boolean table of the form {north, east, south, west}
- Added dsb_get_pixel(bmp, x, y) and dsb_set_pixel(bmp, x, y, rgb, [alpha]) for per-pixel bitmap manipulation
- Added h_party_move(have_party, delay) hook
- Added use_ch_exvar(who) function to base code
- Positive-numbered SYSTEM messages are now processed through sys_system_message
- Fixed a Lua error when a monster uses zo to open a door
- Fixed some glitches with font and sound loading
- Fixed the parameter list for sys_base_impact
- Made ESB's right side controls able to become floating windows
- ESB Location and Target pickers can now be resized
- ESB Find Insts now keeps highlight marker after you go to location in main view

Version 0.48, 5 May 2011
What's new in DSB:
- Ctrl, Alt, and Shift are now usable as keyboard shortcuts
- Modified default subrenderers to allow power pink masking to the inventory background
- Fixed a crash when trying to draw an animated floorflat
- Added DISTORTION_STATIC and DISTORTION_COLORFADE viewport effects
- Fixed an error that would cause viewport distortions to sometimes render nothing at all
- Added "other_side" property for asymmetric monster side views
- Fixed perspective problems with dynamically scaled flooritems and slightly altered their location
- Fixed a bug that caused items inside of other items to sometimes not be drawn
- Monster sounds can now be specified as value-returning functions
- Fixed character names getting truncated to 6 characters
- Fixed a minor problem with the teowand
- Added dsb_poll_keyboard() for using the keyboard during fullscreen rendering
- Added dsb_set_charname(char, text) and dsb_set_chartitle(char, text) for dynamically changing character names
- Added support for pattern fill in dsb_bitmap_rect; usable by specifying a bitmap instead of a color
- Fixed glitches with display of animated items
- Attack method sounds can now be specified as the return value of a function

What's new in ESB:
- Made unarmed methods editable
- Made ch_exvars editable
- Fixed a glitch in automatic inst id generation

Version 0.49, 17 Sep 2011
Otherwise known as the "Are all DM clones doomed to stop at 0.49?" release.

What's new:
- Now able to right click to cancel out of saving a game
- Fixed a crash when replacing the sys_font
- Fixed a crash when using dsb_replace_condition
- Fixed transparent PNGs that were not rendering properly
- Fixed the compass not updating facing direction properly when turning on stairs
- Internal changes to the graphics caches for dynamically scaled objects
- Fixed situations where not enough extra hp or mana was given on level up
- Made dsb_animate able to take a table of separate bitmaps

Version 0.50, 3 Dec 2011
- Fixed glowing objects' alpha channels being broken
- Fixed monsters not being properly shaded for distance
- Fixed a crash when resurrecting/reincarnating
- Fixed an issue with zo spells working on doors they shouldn't
- Fixed PTRARROW and other system bitmaps not respecting alpha channels
- Added support for RTC-style player color bitmaps
- Added DoubleWindow option to dsb.ini to allow playing in a 1280x960 window
- Fixed a crash when bitmaps being used in wallsets got garbage collected
- Added additional parameter to dsb_level_tint to control level of tint applied (default is 64)
- Added lua_manifest.source_only containing files to disregard when using compiled Lua
- Added "global" exvar to ambient sounds to make them non-positional
- Added ability to cut, copy and paste to ESB
- Fixed an ESB glitch when using importable archetypes

Version 0.51, 3 Mar 2012
- Added inventory_info.main_background to set main screen's background image
- Added dsb_music_to_background command to allow multiple music streams
- Improved quality of playback for dsb_music
- Added a cursor and clearer instructions when saving
- Fixed a drawing glitch in fullscreen renderers
- Fixed freezing the game also freezing system timers that should stay running
- Fixed a rare random crash on startup in ESB

Version 0.52, 5 April 2012
- Added "fast advancement" gameflag to toggle between CSBwin and DOS DM experience models
- Added on_monster_move_into event for objects that handle monster movement in special ways
- Changed x_off coordinate to not be negated when drawing flipped front walls
- Top row graphics will now be properly drawn with alpha channels
- Can now use hero_icons and hero_icons_overlay to have hero icons with alpha channels
- Added dsb_get_portraitname to retrieve the name of a character's portrait
- Added dsb_set_portraitname as an alias for dsb_replace_portrait (for symmetry)
- Fixed a hero icon rendering glitch when using a bitmap in player_colors
- Fixed a renderer bug causing alternate wallset floors to be misaligned
- Fixed a Lua error in on_want_move events preventing them from working properly
- Fixed casting darkness a lot making the dungeon bright due to underflow
- Fixed rounding errors causing failed melee attack methods to give too much experience
- Fixed using the wrong variable to determine experience given by a thrown object
- Fixed failed spells giving less experience than they should
- Fixed load color not updating from yellow/red after a strength boost
- All monster timers now run at a reduced rate, instead of freezing distant levels
- Improved efficency of ammo grabbing, picking up, and putting away
- Very high stat boosts with potions now have diminishing returns
- Character rotation direction is now based on the side right-clicked on
- Delayed initial execution of sys_enter_level until music is possible
- Considerably cleaned up dynamically scaled image caching code
- Utility function find_arch_in_hand no longer requires a third parameter
- Fixed materializers trying to blast down doors they can just pass through
- Made groups of spellcasting monsters occasionally fire double shots at small parties to thwart spin dodging
- Monsters now are able to spot the party even when it isn't their turn to act
- Some monsters can now see in the dark, and others are more inhibited by a lack of light

What's new in ESB:
- Added the ability to "paint" wallsets into the level by dragging the mouse
- Added ability to set the amount of power a zo spell needs to open a door
- Fixed a memory leak when pasting into squares with something already there
- Fixed a broken Windows API call that would crash ESB on Windows 7
- Fixed ESB's Lua stack occasionally overflowing, causing weird crashes
- Fixed an error when saving dsb_level_tint commands
- Improvements to internal Lua to make custom icons easier to use

Version 0.53, 14 July 2012
- Added gui_info.lua allowing the location and size of GUI renderers to be reconfigured
- Moved most magic information into magic_info, defined in base/magic.lua
- Moved the rendering of inventory text to sys_render_inventory_text
- Added sys_render_attack_result to handle successful hits (and "NO AMMO" etc. popups)
- Minor modifications to sys_render_attack_* functions to support the new one
- Added option for iterated alternate ceiling drawing
- Added ability to specify source and size for dsb_bitmap_draw (like dsb_bitmap_blit)
- Added optional destination width and height parameters to dsb_bitmap_blit for bitmap scaling
- Added dsb_text_size(font, text) = length, height
- Added dsb_set_lastmethod and renamed dsb_lastmethod to dsb_get_lastmethod
- Added pounce_eagerness property to monster archetypes to control move/attack speed
- Added dsb_get_animtimer/dsb_set_animtimer to modify an inst's animation timer
- Added abilty to edit the animation timer within ESB
- Importable archetypes will attempt to execute ARCHETYPE_IMPORTED() when loaded
- Added loop_step_sound, loop_attack_sound, etc. arch properties
- Added top_offset and mid_offset properties to wallwriting to control how it is displayed
- Fixed FLOORFLAT objects not properly displaying alpha channels
- Fixed "untriggered nil" when adding a party member while standing on a trigger
- Fixed newly launched flying objects causing trigger events when they shouldn't
- Fixed rotating 180 degrees using up a monster's entire turn
- Fixed a bug causing monsters to think that bashed doors were still intact
- Fixed an ugly rendering glitch when opening a magic door with alpha channels
- Made monster action time delays more consistent

Version 0.54, 10 Oct 2012
- Added sys_render_portraits_and_info to handle the basic rendering of the top part of the screen
- Added sys_render_character_damage to handle the rendering of characters taking damage
- Added "Expire" message and associated arch properties (on_expire, convert_expire)
- Changed base code so that magic projectiles that run out of power now get an expire message
- Added on_init event triggered when an inst is first created (via dsb_spawn or dsb_swap)
- Added infrastructure for loading graphical assets on demand to save memory
- Messages delivered while the game is locked are now buffered instead of discarded
- Put AI_DELAY_ACTION on a separate timer to prevent monsters from "waking up" early
- Adjusted magical shield durations to be more like DM yet keep DSB's enhancements
- Fixed some attack methods not allowing sounds
- Fixed a different (but related) "untriggered nil" bug
- Fixed doorbuttons clicking when they're supposed to be silent
- Fixed magic doors going "thud" instead of "buzz" when they hit the party
- Fixed some minor errors in graphics.dat

Version 0.55, 15 Jan 2013
- Added sys_render_current_item_text to handle custom drawing of the current item
- Added dsb_mouse_state() = mouse_x, mouse_y, l_button, r_button
- Added dsb_mouse_override(image) to temporarily override the mouse pointer image
- Added dsb_put_ppos_at_tile(ppos, position, swap) to move a ppos around in the party marching order
- Added "invisiblewall" arch to standard objects (and renderer hack to DSB to make it work)
- Can now specify a side bitmap for doors
- Added "smooth" arch property to allow doors to animate far more smoothly than default DM doors
- Added "flyreps" arch property to allow faster flying objects
- Worked around an Allegro limitation when blitting one bitmap with alpha onto another
- Expanded dsb_fullscreen to take an optional table of flags in its 5th parameter
- Added game_draw flag to draw dungeon/game view onto fullscreen renderer screen
- Added ability to use individual animation timers for conditions
- Added "LEFT", "RIGHT", "NORTHWEST" and "SOUTHEAST" renderer_hacks for doors
- Added code to the monster AI to better handle individual monsters being frozen
- Improved handling of x_compress and y_compress so it makes more sense
- Added "shading_info" table (in base/render.lua) to allow individual control of object shading
- stat_bonus can now use a table for stat and stat_up for multiple attribute boosts
- Fixed an occasional Lua error when a monster counterattacks
- Improved handling of monster passage through fake walls
- Fixed an error causing ven bombs to glitch if they explode in hand
- Fixed a bug causing torch durations to be shorter than they should be
- Fixed some mistakes and inaccuracies in the base code's comments

Version 0.56, 27 Mar 2013
- Added sys_tick_second event for ticking real-world seconds
- Fixed a Lua error when bashing a door
- Fixed doors not respecting graphical x_off offset
- Fixed fullscreen renderer backgrounds being black when they weren't supposed to be
- Fixed a minor bug causing DM-style doors to 'clank' the wrong number of times

Version 0.57, 29 Jul 2013
- Added dsb_get_flydelta and dsb_set_flydelta for flying objects
- Fixed dsb_set_flyreps getting undefined
- Fixed a crash when executing a dsb_move on a flying inst
- Fixed a crash when too many size 2 monsters share the same tile
- Fixed a bug where characters could "step through" incoming flying objects
- Fixed nonfunctional previous leader and next leader key bindings
- Fixed a glitch that occasionally caused a fatal Lua error when monsters unfroze
- Added dsb_wallset_always_draw_floor(ws, bool) to handle floors under transparent walls
- Added internal support for more attack methods
- Added cut (ctrl-X)/copy (ctrl-C)/paste (ctrl-V) shortcut keys to ESB
- Fixed ESB not allowing stats to go up to 2559 in all cases

Version 0.58, 7 Oct 2013
- CSB for DSB!
- Added sys_monster_enter_level (and a monster_level_info table) to emulate only allowing certain monsters
- Added functionality to trigger_controller to duplicate and/or gates
- Increased maximum spawn queue size so CSB will work properly
- Added option to only draw a single wallitem per wall (required for direct ports of FTL DM/CSB)
- Monster generators can now be given a maximum number of activations
- Added option for triggers that are opby_party_carry to trigger when the thing is not carried
- Added off trigger for triggers that only fire when their opby moves off of them
- Added "take_release_only" exvar for item holders to only be triggered by clicks that take or release items
- Added TARGET_FILENAME for CSB-style party exporting
- Added support for shading_info in each individual object arch
- Fixed anti-fire to correspond to the latest research about CSBwin
- Fixed monsters sometimes turning one direction and then quickly moving a different one
- Fixed monster ranged attacks being somewhat overpowered compared to DM
- Teleporters now queue when trying to teleport monsters to an occupied space
- Made monsters not quite so eager to blast down doors
- Made iron keys a bit easier to see on the floor; they are about as visible as in FTL DM now
- Fixed an error that caused some custom doors to be drawn improperly
- Fixed a crash when saving a dungeon containing a large number of unused champions
- Fixed various bugs in handling the number of experience points given
- Fixed subtle monster AI bugs that made some puzzles in CSB far too difficult
- Fixed an AI bug that sometimes made monsters attack too rapidly
- Added a better fusing Chaos sequence
- ESB now supports setting the subskills of champions directly
- Shooters set to shoot from their tile will now shoot items anywhere on the tile
- A reset message will now change the target of special-target objects (qswapper etc.)
- Added a counter editor to ESB

Version 0.59, 18 Oct 2013
- Fixed some minor but potentially bothersome errors in how DSB handles timers
- Added dsb_get_coords_prev to get an object's coordinates before its most recent movement
- Fixed some weird behavior when teleportation is queued
- Fixed an error in the damage done by des ven spells
- Fixed some minor glitches that caused CSB triggers to convert improperly

Version 0.60, 25 Nov 2013
- Changed monster projectile damage to match new research in CSBwin
- Fixed a crash when an object is destroyed while being viewed by the "eye"
- Fixed a visual glitch causing ceiling pits to appear open when the above pit is closed
- Added dsb.ini option AtariPointer to get a cyan mouse pointer
- Added dsb_get_caster() to return the current spell caster
- Moving the mouse after a successful melee attack will now cause the pointer to come back
- dsb_hide_mouse takes an optional parameter of true to allow the above behavior
- Chained messages can now be given a limited number of times they will work

Version 0.61, 8 Feb 2014
- Made the timing of after_from inventory events more logical
- Added sys_inst_hit when the party collides with an object
- Added hook function h_char_take_damage
- Made silver coins more visible on the default stone floor
- Rewrote some renderer internals to hopefully be less messy

Version 0.62, 22 Mar 2014
- Made dsb_move store some state information to make queued moves into and out of the inventory less problematic
- Added END_OF_FRAME delay to defer message processing to the end of the current frame
- Fixed a bug where turning rapidly twice on stairs did not work right
- Fixed a crash when cycling through the party leader via hotkey
- Setting esb_take_targets = true for monsters and other unconventional things is now allowed
- Fixed a bug where the mouse pointer would disappear on a restart
- Fixed a bug where recently boosted stats remain green after a save/reload
- Fixed monsters with a negative attack delay being much too slow

Version 0.63, 12 Aug 2014
- Fixed a weird case when monsters with a delay would not be delayed properly
- Changed experience multipliers to work the same as in FTL DM/CSB
- Small tweaks to the stat bonuses when leveling up
- Added an ESB option to give maximal stats upgrades on each level up
- Added a "Set" button to the ESB target editor to change existing messages

Version 0.64, 14 Sep 2014
- Fixed an ugly bug that would cause light spells to eventually (or sometimes immediately) stop fading
- Fixed a glitch where you can get "stuck" in the CSB prison
- Fixed item-based stat boosts becoming permanent when importing a party in CSB
- Fixed fearless enemies sometimes getting frightened anyway after being attacked
- Fixed a key buffering issue causing the game to exit upon defining an 'exit game' key
- Added "ignore_power" arch property to flask_bro to make it behave like in standard DM/CSB

Version 0.65, 6 Feb 2015
- Fixed ambient sound or music not resuming on a game reload
- Fixed music sometimes looping over itself due to losing its music handle
- Added "always_give_xp" property to rope to make it give xp even if there is no pit
- Clicked spell runes now flash for much less time, more like DM
- Fixed occasional crashing or corruption when cutting and pasting in ESB

Version 0.66, 2 Feb 2016
- Changed dsb_rand to use Mersenne Twister instead of whatever broken thing it had
- Fixed on_spawn not working right during a spawnburst for objects inside other objects
- Fixed teleporters sometimes not queueing properly
- Other minor bug fixes

Version 0.67, 9 Sep 2016
- Fixed a crash when trying to qswap objects
- Fixed an error with the range of randomly generated results
- Fixed some glitches when size 2 monsters would turn or be teleported
- Fixed trigger count bugs when floor triggers destroy their opbys
- Fixed pits and triggers on the same square causing strange behavior
- Fixed a bug where queued messages would sometimes get "eaten"
- Fixed redundancy in monster poison attack code

Version 0.68, 13 Nov 2016
- Tweaked monster movement to be more faithful to DM/CSB
- Ensured the RNG sequence is consistent between DSB and ESB
- Fixed projectiles passing through monsters at point-blank range when the party retreats
- Fixed crash when distant worms and rats tried to rotate 180 degrees
- Fixed projectiles sometimes passing through worms and rats when doing a rotation and then a move
- Fixed a crash when monsters not in the dungeon tried to investigate their surroundings
- Fixed some bad handling of linked lists that could lead to inconsistent monster behavior
- Fixed further trigger count bugs when triggers destroy their opbys

Version 0.69, 11 May 2018
- Fixed a crash bug in DSB CSB
- Other stuff, maybe? I don't know. It's been like a year...

Version 0.70, 5 Dec 2018
- Added prestartup.lua to allow custom code to run before the majority of system scripts run
- Added graphics_paths and sound_paths tables stored in graphics.cfg and sound.cfg to allow different paths for base graphics and sounds
- Kept internal condition bitmaps from being accidentally trashed by the Lua garbage collector
- Added support for a secondary image for wall windows that can be larger than the wall that contains them
- Added ability to specify static images for wallitems at different ranges
- Added dynamic_shade arch property to control whether floor/wallitems are dynamically shaded
- Added door_draw_info table to give more control over how doors are drawn
- Added extra properties to gui_info.guy_icons to control the size of the icons
- Added multidraw arch property to circumvent DM-style wallitem drawing
- Added LeaderVision ini option to rotate the view when the party leader rotates
- Modified most functions that play sounds to optionally take a table of sounds and choose from it randomly
- Passing a sound handle of -1 to dsb_stopsound will now stop all playing sounds
- An icon specified for inventory_info.exitbox is now actually drawn
- Changed clickable flooritems to never be restricted to one clickable item per tile
- Moved the list of ammo storing locations out of local variables in attack methods
- Added additional renderer hooks to make changes to graphics in custom dungeons easier
- Fixed a bug in the throwtrolin importable archetype
- Fixed some internal message queue stuff that should hopefully make tracking down future bugs easier

Version 0.71, 8 Dec 2018
- Added an optional delay second parameter to dsb_attack_damage and dsb_attack_text
- Added dsb_bottomlevel function, which returns the deepest level in the dungeon
- Modified h_custom_mainsub to use the same "final" variable as h_custom_inventory
- Fixed a bug with dsb_msgzone not allowing msgzones on the main inventory
- Fixed various bugs that could cause subrenderers to leak memory and other unpleasant outcomes
- Improved functions that automatically put away ammo to better support custom inventory structures

Version 0.72, 3 Jan 2019
- Fixed a few bugs keeping dsb_stopsound(-1) from working properly
- Added a conditions table to make adding/updating custom conditions easier
- Added support for a custom_objlook subrenderer image for items
- Added more properties to gui_info so portrait mouse zones are no longer hardcoded
- Added msg_to_tag helper function to assist in activating dungeon mechanics from code
- Changed directional handling of triggers because CSB doesn't work like I thought it did

Version 0.73, 13 Jan 2019
Fixed a crash when invalidating the cache of scaled attack bitmaps for monsters
- Added bonus_attack property to weapon archs and attack methods to grant an attack bonus
- Added inventory_info.objlook allowing a lot of changes to how an examined object is rendered, without altering base code
- Added inventory_info.stats allowing a lot of changes to how the character stats are rendered, without altering base code
- Added h_custom_objlook hook that works very similarly to h_custom_mainsub but is invoked when an object is examined
- Added h_custom_stats hook that works very similarly to h_custom_mainsub but is invoked when stats are displayed
- Added h_weapon_attack hook for custom effects after making a physical attack
- Added support for custom_shortdesc_renderer and custom_longdesc_renderer to object archetypes
- Added support for default automatic attack methods via one_click_method arch property
- Added dsb_attack_info(table, ttl) to pass an arbitrary table to sys_render_attack_result (by default, handled by h_render_attack_info)

Version 0.74, 7 Mar 2019
- Fixed an issue with the missile delta of spells generated from items
- Added create_ammo so ranged weapons can generate their own ammo
- Various small bug fixes

Version 0.75, 3 Mar 2020
- Removed references to legacy conditions from the base code that were causing problems in new dungeons
- Cleaned up a lot of bugs in the experimental "wall smoothing" code

Version 0.76, 13 Mar 2020
- Overhauled the 3d sound system to account for walls
- Sound configuration options are now available in the sound_info table, defined in sound_info.lua
- Added support for localization (or easier modification) of text strings
- Added keep_viewmode option to the fullscreen renderer, which will draw the inventory view if the renderer is invoked from an inventory
- Added sys_get_border_eyemouth to tell the inventory renderer what borders to draw around the eye and mouth
- Added min_skill to spells to specify an absolute minimum skill level needed to cast the spell
- Added additional hooks to sys_cast_spell and various attack methods to make big functions less monolithic and easier to modify
- Doors can now be set to be clickable, just like upright flooritems
- Fixed subrenderer msgzones flickering on and off
- Fixed a situational crash when viewing the inventory screen
- Fixed a timing discrepancy between the attack cooldown timer and message timers
- Improved handling of msgzones on inventory screen, including fixing other assorted bugs
- Removed ESB support for floating point values in exvars, as they don't work in DSB (and probably never will)
- Default font now includes curly braces and the euro symbol (€)
- Dungeon Master "D" icon now shown while program is running

Version 0.77, 4 May 2020
- Added (experimental!) DSB+ESB integration to be able to visualize and edit your dungeon in realtime
- Added on_stuck_in_monster(self, id, monster_id, monster_arch) called when a projectile gets stuck in a monster
- Added consume_effect so food items can have additional effects beyond the normal things
- Added dsb_current_champion, which returns the party position (ppos) of the currently offered mirror champion, or nil if you aren't looking in a mirror
- Added dsb_get_lookmode, which returns two bools indicating whether the eye or the mouth is being queried (currently, both cannot be true at the same time)
- Added dsb_get_attackppos, which returns the party position whose attack result was last displayed
- Added more flexibility for how to display resurrection and reincarnation options
- Fixed newly created pits not dropping anything
- Fixed errors when throwing an object with no mass
- Fixed system renderers not respecting alpha channels
- Fixed undefined behavior when requesting a subrenderer target outside of a subrenderer function
- Optimized handling of exvars when reloading from a save
- Localtext.txt string length limit vastly increased
- Disallowed exvar values that cause ESB to freeze or crash on save

Version 0.78, 10 Nov 2020
- Added on_see_party event when a monster spots the party
- Added on_frighten event when a monster is scared away
- Added support for custom damage types to be shown via damage popup
- Added other_side graphics for flooritems and flooruprights
- Added volume control (via vol exvar) to ambient sound objects
- Added dsb_bitmap_clear_alpha to clear a bitmap to a given alpha value
- Fixed the eot_te queue bug
- Fixed handling of clickzones with multidraw wallitems
- Fixed some rendering functions to work on bitmaps with alpha transparency
- Fixed the damage of daggers and axes to be more accurate to DM
- Fixed various flaws in the attack power formula in order to be more like DM
- Fixed a minor bug in spell power attenuation
- Fixed errors when opening and closing a door with custom sounds

Version 0.79, 24 Apr 2021
- Increased the number of possible user-defined UI zones from 5 to 15
- Added ability to prioritize sys_render_other clickzones
- Added ability to specify draw order of conditions
- Fixed handling of drawing objzone graphics on bitmaps with alpha
- Fixed a crash when pulling an inst out of an objzone
- Fixed being able to select a dead party member as party leader
- (Hopefully) fixed monsters blowing themselves up accidentally
- Testing from ESB will now load the dungeon you're looking at, rather than the default one for that directory
Locked