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
DSB Version History
Moderator: Sophia
Forum rules
Please read the Forum rules and policies before posting. You may
to help finance the hosting costs of this forum.
Please read the Forum rules and policies before posting. You may
