Changelog of @hackage/LambdaHack 0.11.0.1

v0.11.0.1

  • Split the long Content.ModeKind texts into lines, #283
  • In unit tests, re-use values from UnitTestHelpers and Game.LambdaHack.Common.Kind, #286
  • Rename unsnoc (see #300)
  • Bump the bound on hsini to handle trailing whitespace properly
  • Hack around a crash when TABbing during item manipulation
  • Document better that macros start with Cmd_
  • Correct a typo in test/Spec.hs
  • Add the communication overhead explanation proposed by fYnch
  • Compress detail levels and don't show paths at DetailHigh
  • Balance speedrunning and explain it better in player docs
  • Change failed alter message to less confusing; thanks go to Pug
  • Tweak tutorial hint enums and tests
  • Make lore menu with all tutorial hints
  • Don't punish naughty window managers with spammy warning
  • Try harder to prevent resizing in SDL
  • Change install from Hackage instructions so that they work outside package dir
  • Interrupt sleep and running a bit less

v0.11.0.0

  • Partially work around regression in libsdl2 2.0.16 (https://github.com/LambdaHack/LambdaHack/issues/281); to also avoid deformed boxes around tiles on the game map, please switch to a different SDL2 version
  • Deduplicate UI code for exiting game, with extra style points
  • Create monadic test harness and use it for UI and other unit tests
  • Validate empty content and fix other soundness issues revealed by unit tests
  • Add extra hints in --more and similar lines when tutorial is on
  • Show full history at SPACE press and let second SPACE close it
  • Spawn insects in the swamp
  • Remove slot letter display in menus and instead display subtle bullets
  • Repurpose item slots to item roles
  • Redo display and control of main menu and its submenus
  • Make Teletype frontend a bit closer to playable
  • Switch right pane item description display from mono to prop font
  • Ensure score not zero if victory
  • Add a custom SDL cursor, working around a bug in SDL2 bindings
  • Gut out most content symbols; weren't used even in lore menus after all
  • Add a flag to disable the costly optimizations (that give 15-25% speedup)
  • Add faction kind content and redo game mode content to use it
  • Display seen faction lore
  • Simplify and fortify faction and client assignment code
  • Make a few unique items that were identified meta-game identifiable instead
  • Fix persistence of meta-game discoveries in save files
  • When assigning a faction, first try the group actor was picked from
  • When assigned faction is dead, don't spawn the actor
  • Don't use benign weapons on projectiles not to lose the fun
  • Make the unique harpoon worth saving for a unique foe
  • Spawn enemies closer and fix too random spawning location
  • Improve display of item's range
  • Warn when SDL game windows is resized not via config file
  • Ban or force sleep on levels
  • Protect against unset or primitive OS locale
  • Add temporary hearing aids
  • Disallow generating a door beside an opening in room's wall
  • Permit smaller caves and validate cave content more accurately
  • Try harder to generate escape from dungeon in a level corner
  • Avoid exit/escape confusion in content names and descriptions
  • Extend LH game mode a descriptions since people play it instead of Allure
  • Make sure every cave has a description
  • Many fixes, refactorings and tweaks

v0.10.3.0

  • Work around regression https://gitlab.freedesktop.org/freetype/freetype/-/issues/1076 by making the scalable square font the default as the map font; the tiny map fonts, for which there is no such workaround, won't work for anybody with freetype 2.11.0
  • Enable display of details in right pane in many menus
  • Switch mouse wheel to move selection now that it changes right pane display
  • Make the line where messages wrap configurable in config file
  • Remove rarely used options from config file and code
  • Prepare client-server for delays when operating over the network
  • Reveal all map at game over and make it explorable
  • Don't run with -threaded, increasing speed by a couple dozen percent
  • Don't show messages during enemy turn (except when under AI control)
  • Spawn many actors at once with probability correlated to spawning at all
  • Gut out Ubuntu Font Family fonts
  • Default to more old-fashioned small fonts in LambdaHack the game
  • Add a few tutorial messages, reword some in-game texts
  • Move with CI from Travis to GitHub Actions (but GHA can't keep up as well)
  • Add hlint to CI
  • Make place content directly define legends instead of overriding them
  • Add a warning that crosshair is out of flinging range
  • Add ANSI display to SDL2 frontend; remove vty, hcurses and GTK frontends
  • Make Teletype frontend more usable (input, speed, overlays)
  • Remove sight malus from light sources to avoid micromanagement
  • Keep convenience settings between new games
  • Add an option to mark FOV area with grey background
  • Refactor and clean up a lot of the code
  • Unhardwire various constants (hat tip to Jamie)
  • Fix a couple of bugs and improve documentation
  • Add whole new kinds of tests (even greater hat tip to Jamie)

v0.10.2.0

  • Let '?' scroll help
  • Handle Alt and Shift modifiers together
  • Advertise the C- Tab command instead of A-
  • Ignore empty lines in history, just in case
  • Don't keep trailing endlines in history
  • Don't include placeholders in history.txt
  • Retry explosions 10 instead of 100 times
  • Point crosshair to a modified tile to easily get lore info
  • Point crosshair to a bumped tile to easily get lore info
  • Don't spam when reporting that crafting is forbidden
  • Prevent AI from attempting to fling when challenge forbids it
  • Hint about absolute paths to fonts
  • Disable testing ubuntu fonts, because they can't be distributed in Debian
  • If any savefile corrupted, move aside all
  • Be more consistent about moving corrupted files aside
  • Stop running when passing a door, etc.
  • Make the game over lore headers sound more natual
  • Do not mention embeds in minimal detail
  • Tweak detail in one step to minimal
  • Don't let distant taunts interrupt running
  • Add a comment about fleeing from stash
  • Help AI not to leave a scout guarding the stash
  • Ensure some gems in escape scenario
  • Don't show embed descriptions by default now that ~ does that easily
  • Add one more typical organ symbol
  • Avoid cut off descriptions of conditional effects
  • Prefer weapons with burn or wound
  • Pick up bad weapons if decent projectiles
  • Slightly prefer weapons that have any effects
  • Permit cycling through pointed-at lore with tilde
  • Split chooseItemDialogMode into several functions
  • Permit pointed-at lore display also outside aiming mode
  • Reset the pointed at lore display sequence
  • Maintain current state of lore display
  • Save current state of being-aimed-at lore display
  • Don't use timeout weapon if non-timeout as strong
  • Add delay to pushed frames, to notice things shorter than a turn
  • Pretty-print activationFlag to make it more understandable
  • Replace the special periodic activation handling with effect conditions
  • Replace the special effect handling under ranged with effect condition
  • Set ActivationOnCombine in one case for now
  • Replace EffOnSmash by ActivationOnSmash
  • Add effect condition based on activation method
  • Add Unless effect
  • Introduce ActivationFlag in place of EffActivation type
  • Make server check that melee is done with a legal weapon
  • Add a failure about meleeing with not a weapon
  • Get rid of a lot of spurious instances
  • Don't say a hit was amusing if non-piercing damage was high
  • Vary also the block messages when high armor
  • Use 'a' and 'the' in dangerous item use confirmations
  • Prevent safe spots near centres of big explosions
  • Permit explosions to sometimes go off inside unwalkable terrain
  • Don't sleep if the only friend on level is guarding the stash
  • Shorten mreason text for crawl to fit in main menu with square fonts
  • Don't hint to press '?' when it does nothing yet
  • Avoid empty manual page at the end with square font
  • Make sure spot crosshair description fits on the status line
  • Don't display the aim mode prefix when inside a menu
  • Experiment with item menu not insisting on selecting an item
  • Talk about the relevant lore command in manual
  • Hint about the relevant lore command
  • Make lore display context sensitive in aiming mode
  • Signal that lore command is sometimes context-sensitive
  • Don't add the interruption message unless useful
  • Don't wipe key status that opens main menu after automation
  • Permit random flavour assignment with brightCol, etc.
  • Don't make detection modal if not performed by player's faction
  • Don't describe the goal tile when performing mouse goto
  • Simplify turn display code, removing most of the newest additions
  • Remove another spurious source of frames
  • Remove spurious sources of frames
  • Re-add refined interrupted via messages
  • Ensure all frames when inside macro have one-line report only
  • Display interrupted also when messages interrupt macros
  • Factor out oneLineBasicFrame
  • Declare the codebase lens-free
  • Avoid distributing test.exe in Windows packages
  • Use squareToUI for mouse handling in the browser
  • Introduce game map coordinates: PointSquare
  • Update wrt PointUI transition in other frontends
  • Define UI screen coords in a separate file
  • Silence messages about dead actors activating most embeds
  • Make it possible to prevent the sleep effect
  • Remove savefiles if config file too old
  • Force savegame load result to catch errors ASAP
  • Wait until browser finalizes Local Storage in the background
  • Throw a Haskel exception when JS decompression fails on an old savefile
  • Now that browser compresses savefiles, permit full history size
  • Limit DOM keyboard focus highjacking, etc.
  • Tell player when browser can be closed
  • Use lz-string.js externs for minification
  • Compress savefiles in GHCJS
  • Bump base-compat bound to include Data.Semigroup compat
  • Simplify containers for explosions
  • Start embedded explosions inside the tile, not inside projectile
  • Exclude meta game items from combat messages
  • Move snxtScenario to session
  • Avoid 'you are less more tidy'
  • Don't count valuables inside organs to dungeon total
  • Clarify that normal damage is piercing, as opposed to blunt wounding
  • Change the misleading 'guards a hoard'
  • When dropped, destroy any organs, not only conditions
  • Don't hint to press ? when it would skip some messages
  • Explain why the fadeout report is rendered in square font
  • Show each tutorial hint at most once per game
  • Require keypress when another faction killed off
  • Don't show question marks in HUD for MinorAspects items
  • Add MinorAspects flag
  • Get rid of the mechanism for referring expressions across messages
  • Commute freely messages about conditions lasting longer
  • Add NopEffect
  • Add AtMostOneOf effect constructor
  • Assign stable faction IDs to teams with continuity
  • Display also actor initial items, not only organs
  • Use Condition flag, not group, for speed and simplicity
  • Keep paragraphs of the same width, unless the first really short
  • Add the 'stomachs' irregular plural
  • Don't identify item if PutToSleep applied to sleeping actor
  • Permit question marks in verb effects
  • Do not announce item trigger if explicit and so already told
  • Do not report conditions triggered when they vanish
  • Inform differently when sleep induced by own organ, etc.
  • Reflect that item triggering message appears after the fact
  • Do not spam when backstory can't trigger yet
  • Give more details in logs when item triggering does not work
  • Do not spam about water being activated
  • Prevent server failure when triggering a gold piece
  • Log item application even from, e.g., periodic activation
  • Don't announce that a dying actors stopped being hungry
  • Add a temporary hack that prevents AI from stealing backstories in Allure
  • Hardwire the player team continuity token
  • Don't identify meta game items at game end
  • Implement conditional effects
  • At death, destroy all organs, not just the trunk
  • Permit non-unique non-singleton flavours
  • Render story flavours specially
  • Announce identification even during melee
  • Inform about discovering meta game organs
  • Make sure heroes spawned in safari mode are properly numbered
  • Add a few more hero names
  • Improve the descritpion of MetaGame flag
  • Record meta game gear for future games
  • Consume current, not persistent team gear
  • Create gear according to character preferences, if any
  • Use server-assigned actor numbers in the client
  • Assign index numbers to actors from continued teams
  • Add continued team character counter
  • Generalize hero gear to each team with continuity
  • Store team continuity in a faction
  • Add team continuity across scenarios to content
  • Add persistent sheroGear to server state
  • Add a comment about why aspects of meta game items are not preserved
  • Keep flavour of MetaGame items between games
  • Keep identity of MetaGame items between games
  • Simplify and speed up serverDiscos
  • Add a flag to keep item identified between games
  • Make sure pushed actors never hit before flying away
  • Use lookupActorTime instead of manually inlining
  • Only activate the first effect with UnderRanged and UnderMelee
  • Simplify deflection descriptions given they don't stack in practice, after all
  • Describe the new challenges in the manual
  • Implement disabled flinging challenge
  • Implement disabled crafting challenge
  • Add two more challenges
  • Display tutorial hint only for bad temporary conditions
  • Let AI use items with -1 speed, e.g., shields
  • Improve valuing of SkDeflectRanged and SkDeflectMelee
  • Try not to recompile dependencies between cabal-plan and LambdaHack
  • Try to work around packages not updated for GHC 9.0.1
  • Add deflection temporary conditions
  • Add GHC 9.0.1 to travis and .cabal
  • Implement skills for ranged and melee invulnerability
  • Add skills for ranged and melee invulnerability
  • Implement flags for applying when under attack
  • Add flags for auto-activation when under attack
  • Let AI with low skill target suspect terrain
  • Prevent AI from trying to trigger blocked tiles
  • Explain why we crop surface, not texture, even for prop font
  • Explain the pointman/leader discrepancy
  • Gut out the last remain of 'cabal list-bin'
  • Add some list-bin debug to travis script
  • Explain away a text rendering artifact
  • Make sure speaking unique messages are not ignored
  • Don't interrupt for taunt messages
  • Move the tutorial hint about hearing taunts to the correct place
  • Add tutorial hints about taking damage
  • Only save to log any interruptible messages while in melee
  • Add some more tutorial hint messages
  • Write key names as on the keyboard, button names as in the button
  • When leader stands over an item, say so, not 'notices item'
  • Unify pluralization of skills and challenges
  • Add some tutorial hint messages
  • Add the first tutorial hint
  • Start with tutorial hints, but not in screensaver mode
  • Ignore tutorial hints, as needed
  • Give a more informative message when detecting that AI stuck
  • Move tutorial hint options from state to session because they are UI-only
  • Keep the tutorial override option from game to game
  • Implement the convenience option to override tutorial hint display
  • Add a convenience option to override tutorial hint display
  • Set tutorial messages according to game mode
  • Toggle tutorial messages when starting a game
  • Mark some game modes as tutorials
  • Display manual at the end of help
  • Keep the rest of the manual in content
  • Split manual into paragraphs aware of some markdown formatting
  • Simplify an address in manual not to spill over 80 columns
  • Make duplicate errors more informative (fixes #204)
  • Factor out movementDefinitions
  • Hint in config file to disable the special movement keys
  • Hint that stealth if possible and AI vs player symmetric
  • Save after game over, to preserve history
  • Limit mentions of 'playing' not to break immersion
  • Delimit with colour the known endings section of F1 screen
  • Change 'scenario' to 'adventure' to be more immersive
  • Dedupe special item and lore menu overlay handling
  • Strenghten the types in item and lore menu code
  • Display scenario lore (fixes #157)
  • Factor our scenario description code
  • Mention that scale needs to be configured for high dpi displays, see #164
  • Shorten some travis tests
  • Make full map position info mode the default
  • Refer to the inspected map position as 'here', not 'there'
  • Use the actor pronoun when describing items at the same position (fixes #215)
  • Don't switch the subject from enemy actor to self for the same map position
  • Don't chain dependent sentences when examining map position
  • Improve the wording of actor blurbs when inspecting map postions
  • When inspecting map locations, make items subjects (see #215)
  • Make it more obvious the game outcomes are fixed terms
  • Compute BFS with Word16, not Word8; slower, but some paths are longs
  • Be more careful avoiding 32bit overflows in frequencies (for JS)
  • Don't interpret the common desktop-switching key combinations
  • Clear the margins also when redrawing after viewpane changed
  • Specify fullscreen in config file and override on commandline
  • Implement both kinds of fullscreen
  • Name variable same as record field
  • Remove help comment regarding SDL-only
  • Add fullscreen CLI option for SDL renderer
  • Indent by 4, not 2, proportional spaces
  • Disable brew-sdl2-osx in travis that now takes too long
  • Don't configure the unused data directories when invoking cabal
  • When installing don't create the now empty GameDefinition/fonts/
  • Don't limit jobs to 1 now that cabal shows errors fine
  • Don't embed the fonts in the web frontend version
  • Get rid of datafiles from .cabal
  • Kill the font license files that are duplicated in COPYLEFT file
  • Get rid of the now unused fontDir option
  • Use embedded fonts, unless absolute path is given
  • Embed game-supplied font files
  • Try to be more verbose where running cabal test in appveyor
  • Don't create ~/.test directory when testing
  • Version config file; fixes #220
  • Don't error out if the effect-causing item is not seen by strangers
  • Add assertionz that, normally, items are known by actors affected by them
  • Hardwire a few less colours
  • Mention the item responsible for an effect, unless spammy
  • Get rid of a left over no-repetition message helper
  • Pass on the item responsible for an effect
  • Start main menus at the first normal item
  • Open game homepage when clicked in Main Menu
  • Write the homepage address in full in Main Menu
  • Depend on open-browser package
  • Make the game over messages more colourful; fixes #213
  • Tweak the display of game over messages
  • Make one kind of ending message more precise and colourful
  • Display camped and restarted endings in F1 scenario screen
  • Save which games are camped or restarted
  • Add default messages for Restart and Camping; fixes #212
  • Sort outcome constructors for best display in F1 scenario screen
  • Colour only outcome name in game over header
  • Refactor renderSection in preparation of multi-color lines
  • Avoid 'restart in foggy mode'
  • Unify rendering of game outcomes; fixes #210
  • Remove a leftover mention of rmainMenuArt
  • Improve the colours of the F1 scenario description screen
  • Expose the meaning of colours for the use in other modules
  • Specify also defeat endings
  • Make headers in F1 scenario screen monospace
  • Factor out attrLinesToFontMap
  • Render F1 scenario screen better; fixes #208
  • Add tests for many game modes in one session; fixes #228
  • Add slowCrawl make target to observe AI in detail
  • Mention in item description it's unique, because name may not underscore it
  • Ignore the placeholder messages when displaying one message
  • Don't overwrite prop with mono overlay even if the latter empty
  • Add placeholders to history display, fixing #236
  • Add a comment about historyMax divisible by screenful
  • Improve message class of HP-affecting effects display
  • Mark with dots if the show distinct messages different than the longer
  • Implement distinct messages for becoming more affected by a condition
  • Implement distinct messages for SfxTimerExtended
  • Move messages that are hard to scrap to Distinct class, to fix it
  • Prepare ppSfxMsg for Distinct messages
  • Don't let ESC clear messages in aiming mode; was confusing
  • Add Discord and Matrix addresses to the manual
  • Add links to discord and matrix chat
  • Let MsgRunStopReason suffice for running interruption
  • Save spam, but don't show
  • Clean up scraping messages
  • Don't run if ordered to run into solid tile
  • Reword the short post-action messages
  • Don't show both terrain description and a warning about it in yellow
  • Typeset one line of history view the same as whole history
  • Make some messages longer to look better on a separate line
  • Reverse history to match the order of messages shown on screen normally
  • No longer specify initial repetition of a message
  • Eliminate not saving and not repeating messages using counts
  • Use allB in a couple more asserts
  • Assert message constructors have proper length
  • Get rid of message class GADT as designed by Alex Byaly, simplifying code
  • Wrap first line of overlay at half the screen, not earlier
  • Make indentSplitAttrString more accurate
  • Tweak unique entities in content, adding 'the' as needed; fixes #214
  • Don't capitalize and add 'the' to unique entities
  • Be more verbose when displacing over laying items
  • Align single high score lines
  • Copy-paste-hacked enlarging line-wrap treshold if too long headers then fit
  • Fine-tune display of too long reports
  • Display message classes aligned
  • Rename message class constructors for better display
  • Display message class in grey
  • Indent wrapped messages
  • In messages, replace some magenta risks by bright red harms
  • Be careful measuring length of multi-line texts for wrapping
  • Use the config option for one message per line on screen
  • Hide the implementation of Msg, again
  • Display message class in history if one per line
  • Don't report HP changes of projectiles
  • Use the config option for one message per line in history
  • Pass along the config option for one message per line in history
  • Add config options for one message per line
  • Rename the item spotting message
  • Bring back filtering empty messages, to fix checking if report empty
  • Add Show instance to history and its components for debugging
  • Improve removing EOLs when deduplicating messages
  • Remove MsgItemMoveLog now that one message class suffices for two components
  • Get rid of isSavedToHistory and isDisplayed encoded now in the GADT
  • Customize messages more comfortably
  • Simplify restarting client
  • Remove the code enabling multiple UI clients
  • Don't spawn many UI clients, but re-assign a single one
  • Make MsgClass a GADT
  • Eliminate Binary instance of MsgClass in preparation of GADT
  • In config file, specify prefixes of message class names
  • Change colour of game start message to a nicer one
  • Issue special messages when actor fall to sleep or wake up
  • Tweak message class use and colour assignment again
  • Remove abuse of MsgTileDisco
  • Recolour enemy spotted animation according to colour meaning table
  • Redo colour assignment to messages
  • Update frontends to highlight changes
  • Change the colour of names of sleeping actors to blue
  • Reflect changes in highlighting in the manual
  • Swap blue and green highlights
  • Highlight dominated actors more distinctly, as proposed by @bulbousBullfrog
  • Rename confusing message classes
  • Make sure indented texts are wrapped at earlier position
  • Make most texts wrap before full screen width
  • Extend UI.Content.Screen validation
  • Tweak texts to fit on screen easily with square font
  • Permit wrapping messages after N columns
  • Prefer stairs in bottom right corners to leave space for messages
  • Prefer levels in bottom right corners to leave space for messages
  • Update documentation to the config changes
  • Prevent friendly AI from wasting time nosing around our stash
  • Rename an identifier to a consistent form
  • Limit the size of monospace prompts when keypress requested
  • Redo message colours given that some colours get a very thin font, possibly
  • Use a mixture of fonts in the challenges menu
  • Comment the config file some more
  • Render all titles in mono font
  • Typeset mouse command table in varied font
  • Gut out Ubuntu Family Fonts from Debian package, because non-free
  • Beautify CREDITS
  • Rand the fontsets differently
  • Make the fontset tests more random
  • Don't run noopt travis tests on normal length crawl
  • Test all fontsets
  • Extend client logging
  • Make the game reentrant
  • Prevent mangled newlines in concurrent screen writes
  • Permit text usage in tests
  • Refactor mkUIOptions to require less content
  • Settile on 'auxiliary fonts' instead of 'long text'
  • Hardwire GTK font size to fix breakage from config format change
  • Simplify FontSetup
  • Implement scaling all fonts easily and safely
  • Add font scaling option to config and commandline
  • Prevent overspill when prop font is, in fact, mono
  • Remove the now unused portions of config and commandline
  • Make getFontSetup more accurate (not used yet)
  • Eliminate really the last dependency on old config file fields
  • Add a comment about lack of optimization for duplicated fonts
  • Eliminate one last dependency on old config file fields
  • Hardwire the font families to use for GTK frontend
  • Use the two weights of prop font
  • Recover old SDL frontend functionality using new config
  • Move font types to make importing them in ClientOptions legal
  • Let fontset be chosen on commandline as well
  • Extend config file with font and fontset definitions
  • Molify Debian's lintian
  • Legalize all the long text fonts even more
  • Legalize all the long text fonts
  • Add the ubuntu font family set of long text fonts
  • Add another set of long text fonts
  • Add new long text fonts based Adobe Source
  • Remove old long text fonts
  • Add commented out TTF.setHinting directive
  • Crop too high fonts more at the top than bottom
  • Get rid of the last traces of 'exploiting' terrain
  • Simplify and speed up linearInterpolation (not benchmarked)
  • Change which test is run in -O0 travis
  • Make final version of integer casts hardening, using the type-level int-cast
  • Explain the communication overhead concept
  • Use toIntegralSized to crash when int wrap would occur during conversion
  • Parse config at compile time
  • Let foes occupiy exit in escape scenario, etc.
  • Add missing cskip specifications
  • If more info in history, end message with three dots
  • Bump GHC versions for testing
  • Bring back SPACE as clearning messages
  • Update the default config wrt changes to RET keybinding
  • Let ESC cancel the aiming line as well
  • Keep the order, modulo abs, of factions as in the roster
  • Don't switch level away from melee when positions not taken yet
  • Improve valuing AI displace action a bit
  • Increase expressiveness of initial actor generation
  • Permit tiny rooms if no stairs variety
  • Pick the sole actor for cwolf games ignoring empty specs
  • Remove length that forces the whole psFree, even though most unused
  • Don't drop initial actors if not enough initial faction positions
  • Remove a code check that is already in mode content check
  • Generate initial actors in the order given in content
  • Prepare types for more faithful initial actor generation
  • Rename ES.toList
  • Simplify populateDungeon and catch similar overcomplications
  • Generate initial actors in per-faction positions, not in alliances
  • Make the use of integral conversion easier to verify
  • Reword ESC description again
  • Settle on apostrophes to denote one-letter keyboard keys
  • Update command docs to command help changes
  • Let only ESC clear messages
  • Show newcomer aim mode help also when pressing ? in non-default detail level
  • Simplify how the hint prompt works
  • Align newcomer aiming help with ? help when aiming
  • Try harder to display errors in appveyor runs
  • Simplify and slightly fix linearInterpolation
  • Extend debug information when summoning fails for lack of space
  • Except for DetailLow, always show any description when examining
  • Give feedback of detail level also when item selected
  • Show item symbol in item lore view in square font
  • Tweak and fix item examination messages one last time
  • Change display of terrain more gradually as detail level rises
  • Simplify two cases of sortBy emulating sortOn performance-wise
  • Improve describing of items with words limit 1
  • Use partItemWsDetail for item description when examining
  • Make the second detail level the default
  • Fine-tune shortest item examination message once more
  • Move SPACE to CmdAim category
  • Document that MMB and RMB cycle detail level
  • Let RMB and MMB cycle detail level
  • Add aiming help line for newcomers with SPACE hint
  • Don't warn about our own actors
  • Reformat lookAtActors
  • Implement detail level for actor descriptions at position
  • Show position description components according to detail level
  • Show detail level in HUD
  • Redraw after detail level changed
  • Implement detail level for item descriptions at position
  • Match the new order of descriptions in a couple more places
  • Bind SPACE to cycle detail level in aiming mode
  • Add DetailCycle human command
  • Record detail level in the aiming mode state
  • Add and improve headers for scenario endings messages
  • Change sortBy to sortOn in a couple of places
  • Optimize truncateOverlay with the best of the sortOn and sortBy worlds
  • Replace some performance-wise wrong uses of sortOn with sortBy
  • Mark the last major outcome in F1 scenario screen
  • Change unique actor names to match the upcoming new convention
  • Don't show even deafeat messages in F1 if not experienced
  • Update the '?' hints to the new Tab semantics
  • Add dumping history to a text file
  • Advise to replay initial scenarios
  • Adjust the order of spotting to match the order when exploring
  • Swap the order of intrusion warning and enemy spotted message
  • Announce specially foes that have non-trivial items equipped
  • Clean up Content.Input.makeData
  • Destroy the trunk when actor dies, for death effects
  • Make sure embedded item desc stands out from the following activation info
  • Make unique speech heard regardless of distance
  • Let uniques taunt in a big way
  • Add type signatures to AI action picking functions
  • Reorder consistenly mode kind component definitions in the file
  • Extend rarity specs to above 10 logical levels
  • Improve comments and messages about Rarity datatype
  • Avoid spoiling victory game over messges, until seen
  • Factor out victoryOutcomes
  • Display game over messages in F1 scenario screen
  • Shorten a field name to avoid >80 length lines
  • Colour header in the F1 scenario screen
  • Disable a travis test that still panics
  • Revert the scenario choice font frop prop to mono, for typographic consistency
  • Shorten a flavour blurb to make it fit when font is square
  • Extend wrong line break avoidance to colourful texts
  • Display also flavour in scenario choice screen
  • Don't attempt to display F1 scenario blurb in square fonts with two columns
  • Don't display the extra TAB commands in item menu headers
  • Mention the new TAB commands in manual and keys sheet
  • Represent a key not appearing in help by empty categories, not CmdNoHelp
  • Enable pointman cycling key bindings with Control
  • Factor out the pointman cycling key bindings
  • Make sure item spotting messages are of proper length
  • When spotting new items, write short message to screen and long to history
  • Don't merge messages with different classes
  • Enable messages that are not displayed unless from history
  • When spotting items, sort them only once
  • Don't report each item located in stash in a separate sentence
  • Add verbosity flag to UpdSpotItemBag and UpdLoseItemBag
  • Make new Direction type more general so that it can be used in other cases
  • Add direction type to make cycle function less verbose
  • Add functionality of back-tabbing both across floors and within single levels
  • Add bool flag to cyclying so that direction will be possible
  • Change naming of member cycling in-code to be keypress agnostic
  • Swap S-Tab for A-Tab as new binding for cycling members on the same level
  • Swap descriptions in help file so that tab functionality matches description
  • Swap funcionality of Tab and S-Tab without renaming in-code
  • Reverse order of S-Tab so that it doesn't first cycle to another level
  • Add up to two EOLs in tile examination message
  • Order tile examination message elements by decreasing importance
  • Make terrain names harder to confuse with items
  • Improve messages and order of stores when moving items
  • Make ItemNotCalm message applicable to flinging and triggering, too
  • Tighten the result type of moveItems
  • Add a comment to the default config with an example for rebinding a key
  • Clarify that nominal values of burning and wounding are used
  • Don't call robots living
  • Don't display TMI about total condition time if come from explosions
  • Let AI prefer a buckler over a fist
  • Nag about the F1 screen when starting or resuming
  • Display info about scenario in F1 screen
  • Split mode note into motivation and hints to choose where text is displayed
  • Restructure text displayed on challenge menu to make it more clear
  • Add scenario rule notes to be displayed instead of full notes
  • Don't let crosshair obscure terrain, items and actors
  • Work around SDL treating tilde as paragraph on some Mac keyboards
  • Speed up DOM rendering by ignoring highlights if possible
  • Permit specifying seeds in the config file
  • Make attacking animation more subtle to distinguish from harm animation
  • Even in the subtle hit animation indicate who is the victim
  • Add a missing space between 'modify terrain stat' and '5' with square font
  • Make Burn as valuable as other damage for consistent UI display
  • Show very good no-timeouts weapons at the correct position
  • Partially hash-cons ItemQuant, with very modest effect
  • Change some occurences of trivial Quant to quantSingle
  • Simplify skill and place menu code
  • Don't multiply initialPlaces when preparing place display
  • Consume places for places menu more eagerly
  • Eliminate space leak when creating items
  • Avoid memory leak due to caves used for levels on a list
  • Fit the short help blurb in 4 lines
  • Start the game with a confirmation prompt
  • Sort weapons wrt timeout and item kinds ID as well
  • Simplify querying skills of the leader
  • Avoid long animations before the extra burn or wound animations
  • Change combat animations to easily distinguish attacker from attacked
  • Let AI displace teammates when no risk of displacing back
  • Restrict AI use of stash guards less harshly
  • Add a comment about allies stealing each other's stashes
  • Let AI keep fleeing if no support gained
  • Remove a few redundant TypeFamilies pragmas
  • Explain in a comment why on a level with stash many sleeping may accumulate
  • Make safari scenario harder now that aliens are buffed up
  • Let AI displace friends less often
  • Unify the test for item being damaging
  • Improve module haddocs for content
  • Hide unneeded content group name patterns
  • Add short-caves debug game mode
  • Display melee damage even if there's no ranged damage
  • Reduce the number of calls to foeRegularAssocs
  • Make sure AI actions are not recursive, even shallowly
  • Reduce the number of calls to currentSkillsClient
  • Speed up skill arithmetic
  • Math order of cases in processWatchfulness with the order in type definition
  • Remove inlines that stopped helping in GHC 8.8 and that obstruct profiling
  • Compute friendAssocs only once for each actor AI processing
  • Limit and speed up invalidating BFS
  • Speed up a few significantly expensive functions
  • Use the JS splitmix optimization
  • Tweak random numbers code a bit
  • Improve haddocks of the dice mechanism
  • Improve help display a bit
  • Move ClientOptions.hs to adhere to the convention about module hierarchies
  • Meld LH and Allure content, continued
  • Port over oil explosions that harm the targeted actor from Allure
  • Meld LH and Allure cave and item content
  • State the number of item in equipment even when removing from it
  • Explain the goofy handling of recharging in stash
  • Regenerate tile even if kind not changed, but all embeds gone
  • Permit altering tiles with items on them
  • Don't leave stash unguarded if friends may spawn
  • Add stash detection effect
  • Cap stat bonuses when assigning AI value to items
  • Value skill bonuses differently for each skill
  • Be even more specific when describing what an actor does on a tile
  • Adjust the SDL test to run without installing fonts, as Debian requires
  • Don't let projectiles ever cause normal tile transitions
  • Tweak pushing via an embed
  • Add Q&A about hearing
  • Tweak item valuations to make awkward armours wearable by AI
  • When describing an actor, say if it's pushed
  • Push towards embed, not in direction of previous movement
  • Simplify key bindings display code
  • Clean up naming of column offset in UI
  • Ensure no missing space between columns of help text
  • Prevent a trailing space
  • Don't activate barrels via mist
  • Don't treat blasts that damage through effects as mists
  • Don't let on noise distance if nobody can hear it directly
  • Differentiate the sound of projectile and actor hitting a tile
  • Emit sound also when an actor hits a tile
  • Display close and out-of-level noises with special colours
  • Display noise distance information
  • Send noise distance information
  • Refactor hearing
  • Mock up extended hearing
  • Give better message when not enough skill to melee
  • Disturb resting when calm enough again
  • Don't summon by hitting a projectile
  • Make actor aggresive if only one is not guarding stash on the level
  • Ban teleporting immobile foes; they come back and their loot is lost
  • Validate that item group names are short enough
  • Cath too long group names
  • Catch empty group names
  • Let more actors start sleeping
  • Consistently create on the ground all items looted from terrain
  • Mark game modes already won in this difficulty
  • Clear screen after start ASAP
  • Use the AttrLine smart constructor or assertions as appropriate
  • Rename firstParagraph
  • Tweak types to work with the stricter smart constructor
  • Move assertion about trailing whitespace to a smart constructor
  • Eliminate trailing spaces in help and item menus
  • Replace a momentarily trailing space with nbsp
  • Don't define special messages with space, they are added automatically
  • When splitting lines, remove the trailing spaces
  • Simplify a condition in splitAttrPhrase
  • Don't add a space when appending a report that starts with newline
  • Don't produce backdrop on black background
  • Optimize truncateAttrLine and truncateOverlay
  • Mark assertions expensive in menus
  • Make avoiding SDL frame drawing more fine-grained
  • Simplify SDL frame drawing based on previous frame
  • Optimize menu scrolling via an extra texture
  • Don't waste healing items when HP low ceiling
  • Don't display that foes don't know their weapon when only you don't
  • Reflect keybindings change in the start scenario menu
  • Permit hero AI to consume elixirs
  • Don't flee if can kill a blocking enemy instead
  • Make fast or hasted actors willing to close in for melee
  • Compensate for overhead of animals when creating conditions
  • Mark organs that are ready to expire once applyPeriodicLevel runs
  • Avoid stating that an organ will last for 0s
  • Tweak slightly AI item preferences
  • Get rid of DropBestWeapon
  • Don't rechare nor discharge projecile payloads
  • Start dicharging with strongest weapons
  • Let Discharge add to cooldown, not reset
  • Discharge only items with a timeout
  • Consider as support only actors that can harm in melee
  • Make organs (minimally) accessible from triggering
  • Let AI trigger items among organs
  • Relax trigger stat 1 restrictions
  • Tweak AI item use preferences valuation
  • Improve the gameover item menu message
  • Record duplication of items to avoid absurd gameover messages
  • Discharge not only equipment, but also organs
  • Don't paralyse the last AI stash guard
  • Give AI stash guard more freedom if friends adjacent
  • Make AI keep guarding even if teammates on the level may leave it
  • Don't let AI leave stash unless foes harm it
  • Don't abandon stash when teammates temporarily immobile
  • Prevent displacing a stash guard
  • Don't abandon stash if temporarily nonmoving
  • Abandon stash if under heavy fire
  • Don't abandon stash unless foes seen
  • Don't use aidTgtToPos unless necessary
  • If enemy in light, pelt him instead of leaving dark
  • Don't stop fleeing into hideout after 5 turns even if foes appear
  • Target dark if fleeing and no foes targetted
  • Efficiently find closest hideout for AI
  • Tabulate hideout tiles predicate
  • Factor out distanceBfs
  • Don't hog leadership just because weak and enemies close
  • When fleeing and soon after target only actors that can't melee
  • Stop fleeing if not hit and possibly friends managed to join
  • Take into account recent fleeing when taking off light
  • Simplify hinders
  • In AI action choice use recent fleeing instead of this and last turn distress
  • Don't overwrite fleeing record if fled recently
  • Don't chase foes if fled recently
  • GC fleeing record when actor lost
  • Extend fleeing state from 1 to 5 turns
  • Store not only fleeing position but also fleeing start time
  • Reorder organs
  • Make two organs not LH-specific
  • Don't undervalue weapons with drop condition
  • Make it possible for animals to mark levels as explored
  • Make slack tactics AI less erratic when focused or distressed
  • Add a comment about animals bad at changing levels
  • Let AI displace any sleeping blockers
  • Don't let AI actors fall asleep if not relaxed
  • Don't force animals to change target just before reaching it
  • Improve condAimCrucialM for vector targets
  • Flesh out the crawl survival test scenario
  • Make crafting act as if on bottom level
  • Move skill checks from pathfinding to targetting and restrict immovable actors
  • Forbid making missiles hungry, asleep, etc.
  • Optimize processTileActions
  • Make sure projectiles can modify terrain even if safe from effects
  • Don't reset TVector target, because it's set manually
  • Create a central staircase
  • Display ranged damage even when limited space in menu line
  • Shorten the display of weapons if not enough space
  • Don't consider enemy projectiles for determining if AI is in melee
  • Make poison less deadly in corridors
  • Eliminate the stash domination exploit
  • Make guessing if AI was hit by projectiles more accurate
  • Prevent wounded animals from closing in agains mutliple enemies
  • In messages tell discharge from recharge effects
  • Make smell more important that stairs, again
  • Clean up vector target code
  • Melee non-targets if target not worth killing
  • Don't perform all monadic actions that compute strategies before choosing one
  • Don't retarget actor if blocked by the very actor and so can melee it
  • Simplify target shoice for slack doctrine factions
  • Sort items in lists in normal texts
  • Help AI unlock the dungeon if stash guard helds the key
  • Prevent animals from eating their own meat
  • Prevent creating new items via throwing others, with ikit
  • Signal specially when an item is located in a stash, as well
  • Say when an item appears in a stash, etc.
  • Don't warn if selected missile from stash can't be picked up
  • Don't flee if back next turn
  • When fleeing don't remember the last targetted enemy
  • Move keybinding content definitions to match display order
  • Prevent, in UI, removing from equipment if not calm
  • Warn when illegal item movement attempted
  • Display stash blurb also when switching the leader
  • Don't let stash guards leave levels
  • Don't prevent displacing a friend if only half of a loop is present
  • Don't neglect guarding stash unless no buddies to help
  • Tweak AI conditions
  • Don't flee if own stash close unless completely overwhelmed
  • Easily displace teammates that guard the stash
  • Mention stash when walking over a tile
  • Do not flee and be reluctant to chase when guarding stash
  • Introduce guarding own stash
  • Make isDoor more accurate
  • Don't make a rumble when door closes
  • Tabulate isOpenable and isClosable
  • Make tall staircases more likely now that they are often broken
  • Make types a bit more strict in stairs calculation
  • Simplify stair number computation
  • Rename cextraStairs
  • Change the semantics of cextraStairs
  • Separate stair number computation and level generation
  • Compute abandoned stairs earlier
  • Correct the documentation of cextraStairs
  • Roll extra stairs earlier
  • Roll cave kinds earlier
  • Simplify shuffling caves
  • When transforming walkable tiles, don't insist on embed activations
  • Ban crafting and terrain transformation in the same action
  • Try to make the terrain transformation specs more readable
  • Prevent the exploit of using cover against non-moving shooters
  • Make makeLine non-monadic
  • Keep the data invariant of @arenas@ for longer
  • Make the interrupted running display look less corrupted
  • Add and tweak comments about item maps
  • Update the manual and keybindings printout
  • Tweak the wording of keybidings descriptions
  • Prevent marking inert items as (charging)
  • Add ANY_FLASK group
  • Make sure impression is dropped before other conditions
  • Handle failed bump-modification without embed activation
  • Change the key for new game, not to mix up with 'n'o
  • Remove misleading comment about tiles being explorable
  • In message fits in one long line, don't wrap it into small lines
  • Don't make consumables with Ascend effect worthless
  • Change division by zero into an assertion failure
  • Comment why 'seen' sometimes gets from 100% to 99%
  • Validate HideAs in content instead of asserting its property later on
  • Tweak (speedup the tiniest bit) updAlterTile
  • Stop leader before leaving dark in a more useful way
  • Don't equip light even if enemy only remembered
  • Simplify the interesting target conditions for AI
  • Flee through dark not only when starting in light
  • Chase and flee through dark even if not starting from light
  • Simplify the chasing ambient light condition
  • Prefer leaders that don't step into light
  • Detour when chasing, to avoid lit spots
  • Prefer fleeing into dark spots
  • Don't flee from projectiles if can't flee into the dark
  • Prevent AI from vainly chasing fast shooters
  • Tweak and simplify AI fleeing condition
  • Help AI sidestep a blocking meleeing friend
  • Let AI go towards enemy stash even if in melee
  • Join melee from twice longer distance
  • Rename CURIOUS_ITEM
  • Don't display 0 ranged damages
  • Add missing content group definitions
  • Simplify content validation
  • Check that content group names are all listed
  • Let the draft detector emit noise and sound
  • Tweak the engine to accomodate a detection device that pings
  • Prevent non-humans from hogging key items and so blocking progress
  • Reorder item definition to match those of Allure for diffing
  • Don't emit server leader change messages if known to client
  • Comment about the trade-offs of weapon benefit calculation
  • Mark the lore screen with crafting recipes
  • Don't confusingly refuse to display the pushing effect for shields
  • Increase minimal damage taken, regardless of armor, to 5%
  • Be pendantic when emitting messages about creating items
  • Don't say that a projectile is wounded
  • Show enemy HP under the selected item
  • Simplify strongestMelee
  • Add an alias for picking up all items, etc.
  • Sort out naming of item and embed activations
  • Simplify revCmdMap
  • Warn when embeds activated, but transformation failed
  • Check dangerous tools use even when nested in transformations
  • Don't transform terrain when bumping
  • Let pathfinding avoid vicinity of enemies
  • Make it easy to discern an attack on teammate among many messages
  • Don't display misleading condition drop messages
  • Visually distinguish embed names and descriptions
  • Permit fractional FPS, for debugging
  • Colour-code map position descriptions
  • Move the run macro to where all other engine macros are defined
  • Permit unknown command, for testing
  • Simplify and clarify the mock
  • Unify repeatHumanTransition 1 and macroHumanTransition
  • Reflect in types that macro frame stack is never empty
  • Make more space for explicit import lists
  • Rename components of the macro data structure
  • Drive the point home that repeatHumanTransition 1 /= macroHumanTransition
  • Add tests that illustrate not creating new buffers for in-game macros
  • Touch up the macro code a bit
  • Add tests showing lack of referential transparency of named macros
  • Don't prompt about recording a macro it's part of macro replay
  • Warn when pick up not to equipment due to low calm
  • Display how many items in equipment when equipping
  • Refuse to equip if equipment full
  • Separate testing harness import from game content import
  • Add a helper function to shorten tests
  • Rename the semantics functions
  • Implement the desired semantics of RepeatLast
  • Sketch the desired semantics of RepeatLast via tests
  • Use the same updateLastAction function in test mock
  • Collect a more precise last action key
  • Simplify slightly the mock
  • Grey out more (all?) illegal commands
  • Add special messages when illegally flinging or applying
  • Go even through stores that all factions have empty
  • Revert banning stores for all actors based on the first checked
  • Add special messages when illegally moving items from or to eqp or ground
  • Forbid unequipping items when not calm, again
  • Don't ignore illegal stores if once shown
  • Display the number of items in equipment even when not calm
  • Write client RNG seed to UI RNG seed numbers at game restart
  • Save UI random seed to avoid boring messages if many save/loads
  • Add a comment about stealth viable for tactics, but not strategy
  • Reset C-f when x-hair automatically changed
  • Pick as leaders also the actors that could melee but should not
  • Make animals unable to catch projectiles
  • Don't cycle xhair through own stash
  • Display slideshows normall unless really too long, not just excessively long
  • Give more time to view a frame when frame level changes
  • Be more verbose when kicking terrain
  • Prevent the inability of taking off max calm draining items
  • Re-assign action repeating keys
  • Clean up macro command's texts
  • Place ikit item in a semi-random way
  • Tweak content group names for display
  • Avoid 'of gain of gain' in item descriptions
  • Don't talk about blocking when no kinetic damage dealt
  • Match the order of game over lore screens with in-game lore menu
  • Prevent AI from imbibing a potion of panic
  • Don't call a tile alterable if embeds have no effects
  • Prefer leaders that target enemy stashes
  • Don't chase stashes of friends and neutrals
  • When creating items on the floor during dungeon generation, create ikit items
  • When embedding items in tiles, optionally generate more items
  • Redesign so that charging items can be determined even if timeout unknown
  • Clean up some instance deriving
  • Factor out two more pure functions about macros to use in unit tests
  • Permit creation of input content without parsing a config file
  • Factor out pure function about macros to use in unit tests
  • Record nested macros on stack
  • Snatch enemy stash ASAP if adjacent
  • Port tests to tasty
  • Undo the attempt to end game when player kills window
  • Remove a spurious recordHistory
  • Make sure verifyCaches error doesn't obscure RNG seed of the crashing run
  • Don't let big actors auto-craft at death
  • In menus show how long conditions will last
  • Tell how for long an actor is going to be slowed when first affected
  • Tell how for long an actor is slowed in total after extra slowness, etc.
  • Tell how much poisoned actor is in total after extra poison, etc.
  • Don't display the mandatory turn frame if a frame already displayed this turn
  • Don't draw (and printscreen) identical frames, even if small fonts used
  • Don't trigger terrain if projectile has lost its payload
  • Enable cooking of food thrown into fire
  • Don't spam when blasts transform terrain
  • Simplify dieSer
  • Ensure the last step of projectile flight is shown
  • Remove a repeated check
  • Be more verbose when transforming items with scrolls
  • Display level where the stash is, as a reminder
  • Don't displace sleeping immobile actors
  • Simplify checking if an item is identified
  • Prevent AI from putting most weapons in reserve
  • Let AI be eager to equip unidentified and good unique items
  • Don't be too verbose with tile altering when leader stands on it
  • Don't craft from equipment due to possible involuntary harm
  • Remove altering via dropping items; too disaster-prone
  • Refactor handleDir
  • Permit indicating the zero vector with mouse
  • Colour and reword the message about consuming items
  • Be a bit more verbose about tile changes
  • Don't inform about a projectile's equipment
  • Avoid hitting 'feebly' with a heavy hammer
  • Show, e.g., harpoon as an obvious choice for throwing despite usable for melee
  • Don't summon by hitting a friend
  • Don't hit delicately just because the weapon was not identified
  • Prevent AI from wasting time throwing very weak projectiles
  • Avoid 'chip of scientific explanation turns out to be', when identifying
  • Improve item destruction messages
  • Add OnUser effect constructor
  • Avoid 'the pair turns out to be' when identifying
  • When short name requested, don't append numbers and parens
  • Prevent VerbMsgFail being repeated 99 times
  • Describe how colours correspond to tile properties
  • Let even unskilled actors take over stash
  • Take over stash also when actor dominated or created
  • Target enemy stash in preference even to enemy actors
  • Add comments about salter and pathfinding
  • Avoid 'controlled by Controlled foo'
  • Avoid 'hits delicately' with a 14 HP wounding hammer
  • Ensure in content that Burn is positive
  • Mark weapon burning and wounding on HUD, to avoid hammers all look benign
  • Clarify that chosen weapon needs not be optimal for a foe
  • Improve display of places lore
  • Pick up enemy summoning periodic items to deny them to foes
  • Don't send the SfxTrigger messages to the client
  • Mention that stats menu summarizes the organ menu
  • Add sample cabal.project.local files
  • Introduce VerbMsgFail effect
  • Let crafting use up terrain, if successful
  • Don't split tile properties description by description of things on the tile
  • Avoid crafting via walking into a worshop tile
  • Introduce SeqEffect to use for crafting creation in place of AndEffect
  • Let components 'disappear', not 'be removed' during crafting
  • Improve crafting recipe description
  • Automatically identify crafted items
  • When cratfing, use tools but destroy components
  • Don't create items in equipment if not enough free slots
  • When crafting, apply as many copies of durable items as required, not just one
  • Don't crash if crafting fails due to unique already generated
  • Improve debugging of item creation
  • Don't display thrown damage for organs
  • Flesh out projectiles opening terrain and flying through
  • Require embed activation even for item-fueled terrain transformations
  • Don't spam if recording is a part of a macro
  • Make the summary of killed enemies less confusing
  • Let some explosions destroy terrain
  • Add black backdrop beneath prop font overlays, for readability
  • Be even less verbose in descriptions of items with crafting
  • Validate that item definitions have slots whenever expected
  • Rename the Macro type
  • Record also in-game menu navigation keys
  • Recover macro's recording order invariant
  • Document Macro, swap types in smacroBuffer's Either type
  • Wrap the macro buffer into a newtype
  • Encode recording state in type of macro buffer
  • Be more precise when reporting OnCombine effects
  • Format crafting recipes in a more readable way
  • Gather effects application flags into one record, for redability
  • Add an assertion that catches ItemQuant data invariant violation
  • Ignore timeouts when using tools or transforming terrain
  • Don't apply kinetic damage when using tools or transforming terrain
  • Generalize printing crafting recipes to many products
  • Rename the dagger item definition to match Allure
  • Help parsing recipes with bullets
  • Avoid spike 2d1 (cooldown 8) of cooldowns at 4
  • Typeset crafting recipes slightly
  • Rename the whetstone item definition to match Allure
  • Don't repeat crafting recipes in OnCombine descriptions
  • Show full crafting recipes only in lore menu, not when targeting
  • Speed up and simplify the use of countIidConsumed
  • Alter ConsumeItems and unify with ChangeWith
  • Add optional count parameter to effect CreateItem
  • Validate that item definition parameters in content are positive
  • Display details of item crafting effects
  • Add ConsumeItems effect
  • Let AI ignore potentially unopenable entrances, to avoid AI loops
  • Improve messages related to Discharge effect
  • Simplify checking actor presence on a level
  • Add the Discharge effect
  • Be more verbose when loot created
  • Don't complain about failed transformation if embedded item triggered
  • Revert "Break thrown non-unique items, even if durable"
  • Let projectiles trigger only easiest embeds and alterings
  • In tile content specify if projectiles may trigger actions
  • Display when ending a flight, to make harpoon a sensible weapon
  • When actor lacks tools to transform a tile, inform him
  • Break thrown non-unique items, even if durable
  • Squash repeated terrain transformation tools in descriptions
  • Confirm that a weapon is to be used for transformation
  • List tools needed for transformation in terrain description
  • Factor out client altering conditions
  • Unify altering by bumping and altering by pointing and server conditions
  • Don't waste turn when altering fails, but waste when embed triggering fails
  • Factor out listToolsForAltering and subtractGrpfromBag
  • Permit the use of tile altering tools with different durabilities
  • Factor out parseTileAction
  • Don't count repetitions in OneOf effect description
  • Prefer non-durable altering tools, even in equipment
  • Avoid message about triggering a 'way' without any more details
  • Rename terrain patterns that denote possibly depleted resource
  • Consider durable tools last for terrain alteration
  • Process tile features in order to prefer trap disarming to triggering
  • Prevent embeds triggering each other in a loop
  • Simplify applying embeds
  • Display untruncated (and mangled) messages in teletype mode
  • Make frontendName to avoid losing message in teletype frontend
  • Clean up the presentation of group name patterns again
  • Verify that singleton group names are so
  • Separate singleton kind group names
  • Validate that some more kind groups are singletons
  • Rename HideAs to PresentAs for item kinds
  • Simplify individual content validation due to stronger global validation
  • Check that group names unique and not void
  • Supply group names to the content creation and validation function
  • Improve special gameover messages
  • Clean up the lists of hardwired patterns
  • Get rid of OVER in pattern names
  • Clean up the DEFENSELESS vs VULNERABLE mixup
  • Remove foldl from prelude to prevent space leaks
  • Group the patterns yet slightly differently
  • Catch empty OneOf during item content validation
  • Group the patterns slightly differently
  • Be consistent in taking only first word as game mode name
  • Rename PHD_DEFENSE_QUESTION to VULNERABILITY_BALM for diffing with Allure
  • Group TileKind patterns
  • Remove IsString instance of GroupName to catch typos
  • Reorder code in content files
  • Make embed content patterns different from tile patterns
  • Use PatternSynonyms for all content
  • Permit and use PatternSynonyms in some ItemKind-related code
  • Don't crash when some items consumed during dropping
  • Don't warn about untriggered embeds; altering may be the focus
  • Don't report exploiting if not triggered
  • Let terrain be changed with items even when embeds not untriggered
  • Be less verbose when losing items
  • Be more verbose when losing items due to tile altering
  • Report which embedded item was exploited so that 'Nothing happens' makes sense
  • Don't report items appearing under projectiles that are already spent
  • Reword command category headings
  • Don't move away staircase inhabitants if projectile is changing levels
  • Let only visible projectiles discover hidden tiles, etc.
  • Don't display vacuus menu mode switch symbols
  • Waste items for altering only if voluntary or released as projectile
  • Get rid of spam about inability to modify terrain
  • Identify item lost in order to modify terrain
  • Let projectiles alter terrain, but not when just flying over it
  • Don't check alter skill when projectiles do the altering
  • Improve comments about the 6 tile modifying constructors
  • Don't modify terrain by just walking over it
  • Permit the use of equipment for modifying terrain
  • Warn when no items to modify terrain
  • Prefer durable items for altering tiles
  • Don't destroy but apply durable items used to alter tiles
  • Add tile alteration that demands and consumes items
  • Improve description of cooking effects
  • Add OrEffect binary constructor
  • Replace Composite by a binary constructor
  • Display failure message when embed not under feet triggered vacuusly
  • Don't light adjacent tiles for free
  • Avoid 'you look less hungry' about the pointman
  • When smashed item exhibits no effect, don't warn
  • Report tile changes under a big actor
  • Generally never alter tile if under feet and embed not triggered
  • Detect when dropping or destroying items is vacuus
  • Only alter tiles via walking on them if any embed triggered
  • Don't spam when embed doesn't trigger when walked over
  • Implement DestroyItem effect
  • Let embedded items react to items dropped over them
  • Explain away only pointman moving
  • Inform about automatic melee in the in-game help
  • Mention that all factions and actors are equal
  • Reverse stars and underscores in HP bar in HUD
  • Stress suvival in the game manual
  • Make skill check for embedded items on the client consistent with server
  • Give hints when terrain can't be entered nor modified
  • Describe hunger removing items, etc., with more detail
  • Mention leap frog in game manual
  • When scrapping message repetitions, ignore trailing EOLs
  • Don't spam about items underfoot at game start, when they are also 'located'
  • Report moving player's stash on a new line, mostly for starting screen
  • Bring back scenario notes at game start and resume
  • Bring back notes in challenges menu
  • Handle the meta note about scenario separately
  • Mention challenges in the high score entries
  • Remove the Show instance of ScoreRecord
  • Invalidate inMelee when weapons dropped or picked up
  • Use --assertExplored in makefile tests
  • Verify the commandline assertion about explored level
  • Don't assert exploration if another game started in a debug run
  • Add a debug commandline option to verify explorers are not stuck
  • Make projectile-less actors randomly more aggressive
  • Add a bit of histeresis when fleeing
  • Destroy proportional font textures to avoid freezes when they pile up
  • Prevent AI from running away from helpless foe
  • Stop targetting foes once they lose all weapons
  • Let AI do more vs foe with HP <= 0 to avoid stalemate if foe regenerates fast
  • Don't spuriously check if TEnemy is a foe
  • Improve documentation of targeting
  • Don't attack hapless nonmoving foes at range also
  • Don't normally target nonmoving actors that can only melee
  • Use actorWorthMelee in inMelee
  • Melee a targeted foe even if not worth meleeing otherwise
  • Don't target hapless uninteresting foes
  • Don't melee a foe with only benign weapons
  • Don't consider foes with benign weapons a threat
  • Only consider actor in melee if adjacent foes worth meleeing
  • Don't interrupt running if benign melee actor adjacent
  • Introduce the count of benign weapons of an actor
  • Make sure tutorial scenarios have enough melee weapons
  • Avoid checking isModifiable once more, in verifyAlters
  • Consistently check isModifiable together with embeds
  • Mark the new request failures as impossible on the server
  • Add some internal operations, for future easier profiling
  • Removed TileOpenClosed error message
  • Further enhancements in tile closing
  • Removed TriggerTile
  • Remove commandline default that forced Just that is interpreted as game reset
  • Bring back the way dungeon generation perturbed random rolls
  • Make 64bit native and 32bit browser games play the same with the same RNG seed
  • Keep a separate random seed for UI
  • Use bitmaskWithRejection form randomR
  • Add some BENCHOPTS
  • Use splitmix
  • Suggest switching to another teammate if movement skill drained
  • Turned off showing of default --maxFps value
  • Additional logPriority value and defaultMaxFps
  • Couple command line options are now clamped or checked before they're set
  • Only run with selected actors that are not yet at goal
  • Hint about menus in movement stst too low message
  • Hint to wake up if movement skill drained by sleep
  • Display also own asleep actors green on HUD
  • Make the heading of item menu when inspecting an organ less confusing
  • Tell that second 'f' projects
  • Add a comment about the 'exploit' verb
  • Do not mention 'trunk' in weapon strike messages
  • Do not mention 'trunk' in armor blocking messages
  • Suggest in history menu to press RET
  • Get rid of Server.EndM
  • Make sure closing window in rage at defeat/win saves game
  • Mention in the manual that HP starts at half max
  • Reformat game peculiarities list in the manual
  • Don't announce pushing that has no effect
  • Try to make the under AI control prefix less confusing
  • Let animations be toggled in main menu
  • Don't display buttons on a separate line unless message is very long
  • Add a newline after scenario description
  • Avoid blank lines in history
  • Overhaul the order and blurbs of game modes
  • Make raid scenario squad-based
  • Display scenario descriptions in their submenu
  • Don't show backstory in submenus of the main menu
  • Rework new game start menus
  • Add a visual separator between new games in history
  • Reverse the order history messages are displayed in
  • Copy the list of distinguishing features from Allure homepage
  • Restructure chronologically the game manual with verbs as section titles
  • Avoid empty paragraphs
  • Ignore linebreaks when showing the condensed history line
  • Underline that mouse is optional
  • Make 'crosshair' on the status line uniform with other headers
  • Bring back the help prompt that doesn't confusingly mention advancing
  • Mark overful HP and Calm specially on HUD
  • Add some blank lines when stacking command lists
  • Stress that mouse is optional
  • Move mouse help screens earlier
  • Don't indent help parts by proportional space width
  • Clarify the structure of help information
  • Don't show 'crosshair' when not aiming
  • Get rid of 'x-hair'
  • Make collective running less prominent in help; tweak help
  • Mark some text files as out of date
  • Add a paragraph break before nearby item summary
  • Accept longer menu messages
  • Add a paragraph break before cave description
  • Warn that over-max HP gain is transient
  • Mark deaths with paragraphs and display 'Alas' already at incapacitation
  • Add a line break after gameover identification of items
  • Add a couple of line-breaks to reports
  • Rename emptyAttrString, which was misleading
  • Introduce a newtype of attribute lines with no linebreaks
  • Prevent backstory overflow in main menu with proportional font
  • Move O command just after I command in help
  • When toggling autoplay, as with y/n, not SPACE/ESC
  • Let left and right arrow keys move between sides of help screen
  • Fine-tune helps screens for display side-by-side
  • Naively cram help screens side by side
  • Merge the two item command help pages
  • Use proportional font for help, dashboard and item menu
  • Use square font for movement scheme help paragraph
  • Make it possible to use many fonts in help
  • Get rid of MoveKeys.txt
  • Set up main menu for both proportional and square fonts
  • Remove backstory from help screens
  • Add backstory to main menu, set up for square font, for now
  • With square font, add extra space before item symbol
  • Represent button width as a datatype
  • Parameterize all typesetting by the font setup (multi or single)
  • Pass along information about supported fonts
  • Let sdl frontend really handle the setup with no prop nor mono font
  • Gut out ascii art
  • Add blank space around some lines of overlays
  • Take all items with *, not !
  • Update the item removal verb
  • Switch a single place lore display to mono font
  • Render skill menu and item lore menu with proper fonts
  • Display item symbol in item menu in square font
  • Display label and symbol in items overlay using square fonts
  • Display at most 3 lines of buttons when too little space for menu
  • Make a mouse misclick error easier to understand
  • Don't wrap Mono keys after a prompt
  • Overlay in square font when basic frame is under animations
  • Introduce a separate UI coordinate system
  • Make boxSize even
  • Don't highlight wrong overlays when buttons highlighted
  • Avoid proportional font in button-like UI areas
  • Permit overlays with gaps
  • Name font kinds consistently
  • Display some overlays in monospace font
  • Display history labels in mono font
  • Specify fonts also in slideshows
  • Move the definitions of DisplayFont and FontOverlayMap
  • Propagate the choice of fonts for overlays
  • Generalize drawOverlay to specify desired font for each overlay
  • Generalize overlays to let them start at arbitrary X offsets
  • Eliminate overlayFrameWithLines
  • Document better the overlay types
  • Move ColorMode to another module
  • Specify when to use which kind of main font
  • Add monospace rectangular font to game configuration
  • Remove the old woff font
  • Add new fonts, proportional and monospace
  • Specify size of the message font separately
  • Don't cursor highlight break up proportional font message chunks
  • Don't let space break up prorpotional font message chunks
  • Render the extra overlays in proportional font
  • If message font supported, pass overlay over instead of rendering
  • Initialize also the message font in SDL frontend
  • Add message overlay font to game configuration
  • Comment about why animals rarely eat food
  • Rename tactics to doctrine
  • Get rid of the henchman notion
  • Rename leader to pointman
  • Handle UpdTimeItem when container not visible (CStash), but item visible
  • Improve command descriptions
  • Redefine key bindings not to collide with new movement keys
  • Detect collisions of keybindings with movement keys
  • Use the keys freed by removing the right hand movement setup
  • Replace right hand with left hand movement keys
  • Main inventory the main store in game help and UI
  • Move total value display to all posessions menu
  • Identify items at any item move, in case they are thrown at stash
  • Avoid spam about actors getting braced
  • Mention in failure messages that hoard accessed when stading over it
  • Mention in failure messages that too low Calm for Eqp
  • Attempt to display handling of multiple items more succintly
  • Bring back UpdMoveItem to have better messages
  • Properly describe item move actions
  • Lose access to stash when enemy steps on it
  • Say who's stash is an item moved to, unless it's ours
  • Announce that enemy stash found
  • Make sure to let clients know even the human trinket items at gameover
  • Let new stash correctly overwrite old, even if old not seen
  • Introduce PosSightLevels and use for CStash containers
  • Get rid of seenAtomicGeneralCli
  • Simplify handleAndBroadcast
  • Make updTimeItem more loose when enemy CStash is considered
  • Don't carry item definitions in commands that don't create items
  • Register on the client the items necessary for commands
  • Analyze what items client needs to know to process a command
  • Clean up creation vs spotting of actors and items
  • Add UpdRegisterItems to be used instead of many ad-hoc calls currently
  • Be permissive when performing atomic action wrt CStash
  • Simplify SfxStrike, etc., and don't require access to store's bag
  • Simplify PosFidAndSight
  • Remove UpdMoveItem atomic command that is not too common without CInv any more
  • Simplify handling of CStash action visiblity
  • Display also enemy stashes in position description
  • Let actors learn stash positions when they come into view
  • Mark on the map enemy stashes as well
  • Refactor UpdStashFaction to let enemies see it sometimes
  • Add shared stash position to team's perception
  • Say in position description that stash is there
  • Mark own shared stash position with white box
  • Remove gstash handling in atomic commands
  • Move CStash in server code, not atomic commands
  • Avoid catch-all in cmdAtomicSemSer
  • Introduce UpdStashFaction
  • Do not produce a now unused ItemFull for inventory
  • When moving items, don't cycle to Ground, when over stash
  • In UI don't try to use CGround when over CStash
  • Don't let AI consider floor items at it shared stash location
  • When scanning a map, don't consider own stash an ordinary pile of items
  • Update atomic position information for shared stash
  • Make eqp, not stash, unavailable when low Calm
  • Make CStash the new implicit default when picking up items
  • Gut out CInv and CSha and replace it with CStash represented on the map
  • Remove the unused effect ActivateInv
  • Bump version, anticipating major inventory logic overhaul
  • Reword the MOwned item dialog mode blurbs
  • Simplify the header of the lore menus
  • Change meny keys / and ? to > and <
  • Update scenario names in the manual
  • Mention the ! key whenever KP_* is mentioned
  • Simplify and fix placement of --more- prompts
  • Change the AttrString word gluing operation and fix drawFrameStatus
  • Slightly fix speed calculation to agree with what's on the wiki
  • Fix a memory leak from tutorial hints repetition avoidance
  • Fix no frames displayed while resting
  • Fix missing dot at the end of taunt message
  • Fix heroes starting on exit in escape scenario
  • Fix the healing necklace better used from the backpack
  • Fix which are considered minor effects
  • Fix spurious double space suffix when rendring on blank
  • Fix mouse in area help, wrongly typeset with square font
  • Fix interruption message not appearing on screen, only in history
  • Fix wrong order of words in the detection effect message
  • Fix and simplify armor conditions message choice
  • Fix good conditions displayed in red
  • Fix broken combat description condition about armor
  • Fix not updated tutorial switch when game won
  • Fix a hint wrongly guessing the damage was piercing
  • Fix failures not stopping macro playback
  • Fix the lack of 'a' when hearing distant summoning
  • Fix using the reserved number 0 for faction ID
  • Fix backing up broken savegames
  • Fix a spurious space before a sentence ending dot
  • Fix lack of capitalization in verb messages
  • Fix genetic flaw activated at death
  • Fix a typo in identifier names
  • Fix first lines of message wrapped too late
  • Fix botched conditions for SfxFizzles, etc.
  • Fix includeMetaGame computed twice
  • Fix meta game identification not carrying through to the next game
  • Fix accumulating meta game item kinds
  • Fix scenarios with numbered actors but without continued team
  • Fix an optimization two lines too low in shuffleExcept
  • Fix a triple copy-pasto with Ability.MetaGame
  • Fix discoMetaGame for clients with state held by server
  • Fix displaying deflection when the perpetrator is not seen
  • Fix tutorial hints disabling
  • Fix a link to roguebasin
  • Fix short wrapping of adventure lore
  • Fix overflowing messages with more than 2 spaces
  • Fix 4 spaces message indentation with square font
  • Fix trash on fullscreen borders
  • Fix not showing aiming line when changing epsilon
  • Fix trying to describe an item that is not seen by the actor hit with it
  • Fix whitespace in displayRespSfxAtomicUI
  • Fix display of message log aligned to newest message
  • Fix extra SPACE needed to see history after game save command
  • Fix running broken due to vacuus MsgAtFeetMajor messages
  • Fix MsgStopPlayback not stopping running
  • Fix usage of two different widths in splitAttrString
  • Fix history lines starting with EOL
  • Fix monospace overlay whitespace spilling onto proportional
  • Fix wrongly enabled display of MsgRunStop message class
  • Fix deduplicating shown and saved messages separately
  • Fix, again, leftover UI clients killing frontend after already killed
  • Fix the numeric display of HP gain/loss
  • Fix wrong SDL wrapping markers when using mono fonts only
  • Fix a missing mouse command description
  • Fix Tasty tests broken by frontend fixes
  • Fix screensavers broken by UI faction not being the first
  • Fix a bug with two UI clients interspersing frames
  • Fix 'open main menu' command of Dashboard
  • Fix the GTK frontend again
  • Fix a syntax error in travis script
  • Fix license name
  • Fix linearInterpolation for inflated dungeon depths once more
  • Fix running disturbed by many boring tiles at open levels
  • Fix MsgItemMove messages not saved to history
  • Fix unintentional cap on actor generation level
  • Fix calling gameover and 'endgame'
  • Fix lack of EOL before initial separation line of history
  • Fix mouse coordinates in the browser
  • Fix assigning number symbols to hero faction projectiles
  • Fix and improve how deflections are displayed
  • Fix a 32bit system bug that intCast detected
  • Fix damage not displayed when other attributes are
  • Fix flinging from item menu cancelling item selection
  • Fix the comment about users able to overwrite keys
  • Fix a crash when impossible command chosen
  • Fix bitrot that corrupted curses frontend
  • Fix 'the fallen falling' projectiles
  • Fix wrong alignment of level percent seen
  • Fix autoexplore with changing crosshair
  • Fix goto not interrupted change of crosshair
  • Fix the valuation of OnUser effect
  • Fix the lack of the last backdrop line in the game greeting blurb
  • Fix memory leak in placesFromState
  • Fix double braced due the hack for skill-less yelling
  • Fix order of using weapons inconsistent with HUD
  • Fix actor that can't wait not ignored as a pointman even when inactive
  • Fix stash guard preferred as pointman
  • Fix AI leader choice to really prefer old leader and to avoid light more
  • Fix raid scenario starting with two faction close to escape
  • Fix random number out of range on 32bit JS
  • Fix teleport effect from stash item not identifying it
  • Fix warnings in gtk frontend
  • Fix the extra blank menu line starting too late
  • Fix section links in the game manual
  • Fix and simplify rules for disabling tile transformation
  • Fix missed blank prefixes of empty lines inside text
  • Fix and simplify projectiles activating and transforming terrain, again
  • Fix projectiles not able to lit up oil
  • Fix padded empty string overwriting UI elements
  • Fix the position of second column with square font
  • Fix trailing spaces in dashboard
  • Fix a trailing space in a message
  • Fix disable extra empty shadow line at the bottom of menus
  • Fix determining if item identified in permittedPrecious
  • Fix an actor pulling himself
  • Fix desynchronized copy-pasted actorVulnerable code
  • Fix history message display header
  • Fix Calm measurement code to match code documentation
  • Fix sleeping stash guard not considered a guard
  • Fix reaching escape from below when all levels explored
  • Fix hero AI sometimes not exploring levels fully
  • Fix weapon order of Smithhammer
  • Fix messages about melee-only armor deflecting missiles
  • Fix wrong condition, wrongly reducing fleeing behaviour
  • Fix comments about slack doctrine targets
  • Fix assertion failure when targetting a tile under oneself
  • Fix code documentation about inventory stores
  • Fix the unequipping failure message condition
  • Fix wrong cave reversal when generating dungeon
  • Fix non-pointman heroes meleeing healing geysers
  • Fix poisons never activating and never running out
  • Fix registering if altering failed due to bumping
  • Fix a bushy patch that can block starting actors
  • Fix diverging definitions of foes worth killing
  • Fix barrels not destroyed by bumping
  • Fix inability to open doors due to no embeds
  • Fix projectiles not to bump off, but to transform terrain
  • Fix the display of level in stash menu header
  • Fix alliance placing to put heroes over stairs
  • Fix a wrong message when displacing a waking foe
  • Fix AI not eating and not removing other bad conditions
  • Fix nested macros
  • Fix wrong game mode started due to only the first word inspected
  • Fix the result of AndEffect
  • Fix the warning when flinging benign items
  • Fix a loop when actor pushed to another level via stairs
  • Fix melee disrupting pushed flight
  • Fix unidentified weapons marked in HUD as without timeout
  • Fix modelling wear and tear with DestroyItem
  • Fix mixed up resistance conditions
  • Fix item dropping crashes when OnSmash effects remove them while dropped
  • Fix an AI loop when applying a recharging item
  • Fix some no-fence places not appearing in statistics
  • Fix display of empty lists of tools for terrain transformations
  • Fix referring in the server code to definitions from the client internals
  • Fix embedded items activated twice
  • Fix an attempt to consume more items than there exist
  • Fix broken running macro
  • Fix activating embeds
  • Fix repeating predefined macros
  • Fix unsafe recording
  • Fix in-game macro system
  • Fix discharging an item that is not recharged
  • Fix consumeItems missing in an export list
  • Fix missing spaces in describeToolsAlternative
  • Fix display of tool alternatives
  • Fix random results of sortEmbeds
  • Fix checks if actors in combat
  • Fix the semantics of Discharge effect
  • Fix a crash when updating invisible item timer
  • Fix altering skill check in the client
  • Fix omission of OpenWith when OpenTo is considered
  • Fix unidentified embedded items impossible to trigger
  • Fix usage of outdated state component when altering tiles
  • Fix an attempt to apply a used up embedded item
  • Fix the direction of < and > scrolling in ending screens
  • Fix rubble tile definition wrt order of activated features
  • Fix old actor body used after altering caused by collision with terrain
  • Fix wrong condition for alien captured at victory message
  • Fix moving only all or none items between containers
  • Fix crash when actor not visible after triggering an item
  • Fix crash when dopping previous may destroy next items
  • Fix projectile altering a tile too many times at once
  • Fix DropItem reporting no activation due to item vanishing earlier
  • Fix off-by-one when picking projectiles with enough range
  • Fix trying to destroy an empty item bag when modifying terrain with it
  • Fix assumption that if last actor is alien, game is won
  • Fix no identification message sometimes in the first turn
  • Fix compilation without EXPOSE_INTERNAL
  • Fix the trap of drain Calm item in equipment that can't be removed
  • Fix tiles never altered via walking on them
  • Fix articles incorrectly recognized in words that end similarly
  • Fix wrong calculation of number of non-durable weapons
  • Fix incorrect conjugation
  • Fix a corruption of backstory text
  • Fix first character of buttons sometimes overwritten by space
  • Fix wrongly displaying a special ending for small scenarios
  • Fix other frontends wrt engine and sdl2 frontend changes
  • Fix proportional overlay overwriting first character of mono one
  • Fix help setup for large screens
  • Fix broken item menu with square font
  • Fix wrong button initial position with square font
  • Fix distant overlays wrongly getting a highlighted line
  • Fix SDL frontend truncating proportional font lines
  • Fix and tweak measuring texts in various fonts
  • Fix empty menus in single font mode
  • Fix spurious ending prompt in single-font setup
  • Fix padding of line chunks overwriting subsequent chunks
  • Fix display of history
  • Fix buttons holding other locations of an item
  • Fix not shown highlight of prop font lines
  • Fix spurious empty line between header and menu
  • Fix use of fromAscList where fromDistinctAscList would do
  • Fix spacing in history display
  • Fix off-by-one crash in history
  • Fix mouse clicks on buttons in small font areas
  • Fix updateLine for the case of multiple overlays
  • Fix overrun in mouse help table
  • Fix history highlight restricted to 80 columns
  • Fix menu highlight splitting proportional text chunks
  • Fix proportional texts never wiped out
  • Fix horizontal starting points of message chunks
  • Fix a syntax error stemming from wrong CPP
  • Fix illegal containers creeping into item choice
  • Fix cmdAtomicSemSer for UpdMoveItem
  • Fix AI not sidestepping explosive tiles, even if it could
  • Fix AI not sidestepping nearby actors
  • Fix cmdAtomicSemSer in the presense of CStash that acts like CFloor
  • Fix broken atomic commands assigned wrong LevelId
  • Fix visible enemy stash position not updated, because foes not seen
  • Fix countless typos
  • Start using cabal-plan
  • Fix and improve Makefile, cabal file and CI scripts
  • Improve and update game manual and help texts wrt game changes
  • Tweak travis scripts and building docs in README

v0.9.5.0

  • Fix NumLock disabled in the browser
  • In screen reader frontend, highlight active menu line with the cursor
  • Clone the main main menu commands as map mode commands
  • Add C-RMB and C-S-LMB as alternatives of MMB
  • Announce prominently MMB binding for describing map positions
  • Clean up the default config file, keeping compatibility
  • Make scenario names longer and slighlty more informative
  • Make Vi movement keys the default in addition to keypad and mouse
  • Fix a bug where death prompt when autoplaying was capturing a keypress
  • Let ESC from main menu return to insert coin mode, if applicable
  • Make various small UI tweaks, especially to main menu and its submenu
  • Let main menu lines have 35, not 30, characters
  • Make the main menu ASCII art less intrusive (and easier for screen readers)
  • Don't invalidate the score file due to game minor (only) version bump

v0.9.4.0

  • In vty frontend highlight actors more
  • Clean up actor highlighting
  • Add yell/yawn to minimal command set, remove swerving the aiming line
  • Invoke yell/yawn exclusively with '%', due tor Windows and terminal woes
  • Move C-c command to C, not to mask C-c on console frontends
  • Tweak and fix vty console frontends, for screen-readers
  • React specially at gameover under certain special circumstances
  • Simpliy assignSlot now that slots are auto-sorted
  • Get rid of explicit item sorting; let lore and menu slots agree
  • Make DetectExit non-modal
  • Mark in a game end confirmation message that more treasure can be found
  • Add a description to the escape embedded item
  • Reword gameover text for raid scenario
  • Be more verbose when confirming escape from the game
  • Don't claim to summon, when not possible on this level
  • Fix missing 'no longer poisoned' when applying antidote
  • Don't ask confirmation for neutral (e.g., not IDed) items
  • Fix 'you fall down; you stand on a sword'
  • Prevent selecting regions via mouse down in web frontend
  • Deselect item if player declines to apply or fling
  • Hand-hold the player, warning if flung item is beneficial
  • Hand-hold the player, warning if applied item is harmful
  • Rewrite the condition in UI applyItem check
  • Improve the lobable item skill failure message
  • Let mouse buttons describe tiles, etc.
  • Unblock S-MouseButton in SDL2 frontend
  • Always describe things under mouse button
  • Make the message when hitting dead foe more varied

v0.9.3.0, aka 'Velvet smoking jacket'

  • Introduce message classes with configurable behaviour
  • Create a new 16x16 font and use it everywhere; tweak smaller fonts
  • Lock some levels or otherwise make ascending tricky
  • Add cooldown to most melee weapons, display that in HUD, adjust AI
  • Add per-scenario and per-outcome gameover messages in content
  • Add duplicate and reroll item effects in preparation for crafting
  • Add actor and item analytics as a preparation for XP gain quests
  • Implement piercing projectiles that may share a tile with a big actor
  • Increase the spawn speed now that monsters sleep a lot
  • Introduce actors falling asleep and yelling
  • Allow any level size and position
  • Mention places when looking at tiles and add place lore menu
  • Expand all kinds of content and rebalance
  • Create and rework all item, cave and plot prose (Dan Keefe @Peritract)
  • Make explosives in cramped spaces twice weaker
  • Tweak player fling command
  • Tweak equipping when equipment overfull
  • Start cycling stores at equipment since that's the one mentioned in help
  • Overhaul CI scripts
  • Restructure and clean up codebase
  • Extend balance debugging tools, using item and actor analytics, places, etc.
  • Drop the gameplay option that first death means defeat
  • Avoid idle-GC between slow keystrokes
  • Put content data into a compact region to limit GC
  • Remove the border around web frontend game screen; seems unneeded now
  • Don't draw aiming line nor path in vty frontend
  • Highlight xhair by cursor in vty frontend
  • Highlight player by cursor in vty frontend
  • Switch the default FPS to 24 for tradition's sake
  • Highlight current high score
  • Remove most stopPlayBack, now spurious, because message classes used
  • Overhaul cabal file: define common options, split into internal libraries
  • Fix confusion of nub and uniq
  • Rename short wait to lurk and many lurks to heed
  • Show a red message when HP or Calm dip too low or when foe appears
  • Lose Calm and so alert AI even at weakest non-zero HP draining attacks
  • Enable screenshots while in menus
  • Rename config options related to fonts
  • Recolour aiming line not to clash with the red crosshair
  • Exchange the functions of yellow and red highlight
  • Tweak all colours, in particular to differentiate blues/cyans
  • Cap bright colours at 85 CIELAB Lightness at D65
  • Normalize dark colours to be between 42 and 57 CIELAB Lightness at D65
  • Get rid of colorIsBold option; KISS
  • Tint white in alternating lines with different hue for long text readability
  • Don't split lines at articles
  • Set xhair to currently meleed foe to see his HP
  • Display speed on HUD; tweak status lines in other ways
  • Don't show description of leader target in HUD; TMI
  • Help AI flee in a consistent direction over many turns
  • Expose the save backup command, for browser games
  • Don't display target info when item selected
  • Let AI actors spawn even quite far from the player
  • Auto-select all new team members, to help new players
  • Replace O by zero on the map display; make zero distinct from O in all fonts
  • Flesh out the initial ? prompt
  • Add 'I' alias for pack-related commands, unless laptop key-scheme used
  • Turn off movementLaptopKeys by default not to confuse new players
  • Make sure AI attacks bosses even if distant and fleeing or non-moving
  • Lower bonus HP at extreme difficulty
  • Add a separate frame for each projectiles start
  • Don't go modal at the frequent and weak hidden tile detection effect
  • Make AI pick closest stairs more often
  • Let apply-unskilled actors activate embedded items
  • Don't boost damage by speed unless actor is projectile
  • If everything else fails, let AI flee by opening doors
  • Help AI actor prevent being dominated
  • Make computing gameplay benefit to items more accurate
  • Rename, clone and fine-tune effect Temporary
  • Simplify code and content by getting rid of Recharging effect
  • Let applying periodic items only produce the first effect
  • Tweak item detection to help in skipping boring level portions and in stealth
  • Invoke and display embedded items in the order specified in tile definitions
  • Let lit trails illuminate colonnades
  • Prevent an exploit for avoiding self-invoked firecrackers
  • Don't let AI attempt summoning if not enough Calm
  • Improve item label bracket codes in menus
  • Pick randomly destination stairs if teleporting level
  • Display the number of items in store
  • Summarize value of player loot in shared stash menu's header
  • Start history menu at the close-up of the last message
  • Make fast-dying insects aggressive
  • Overhaul game score DSL and particular scoring definitions in content
  • Add and extend messages, e.g., tell if victim blocks and with what armor
  • Extend and rework menu manipulation keys
  • Remove specialized quaff, read and throw commands; KISS
  • Split walls of text into more paragraphs and/or make them narrower
  • Extend and update help and manual
  • Don't let AI waste time looting distant lone projectiles
  • Make Enum instances of Point and Vector contiguous, hackily
  • Make dominated actor drop all his items, for ID and in case he defects ASAP
  • Try to find a non-waiting action, if better AI leader can't be found
  • Prevent summoning OoD actors
  • Let animals eat food and add several foods
  • Make Domination effect harder to activate
  • Let only actors and items with SkOdor property leave smell and add perfumes
  • Let spawning rate level out after a few dozen spawns
  • Describe smell, if present in an inspected tile
  • Let pushed actor fly after crashing a door open
  • Show passing time and heard events even if no actors in the UI faction
  • When movement impossible, describe the tile with SHIFT-direction
  • Catch and steal projectiles when braced instead of when weaponless
  • Let actors that are pushed perform any action in addition to movement
  • Improve deduplication of messages
  • When describing actor on map, tell if it has loot
  • Represent being braced as having an organ; also add other pseudo-organs
  • Overhaul hearing to facilitate triangulation based on sound cues
  • Prefer to spawn aquatic actors on aquatic tiles
  • Add swimming and flying skills and shallow water tile features
  • Boost/drain skills via many new items
  • Rework and extend skills and their effects as a preparation for XP rewards
  • Enable specifying each side of outer cave fence separately
  • Make definition of caves of a scenario more precise
  • Specify more properties of levels in content
  • Extend content validation
  • Improve placement and fitting stairs and rooms on levels
  • Don't hardwire level size
  • Simplify game rules content
  • Change the format of game client content
  • Fix an arbitrary delay in killing dying actors
  • Fix arbitrary branch of a corridor chosen when running
  • Fix bush patches blocking off a level's corner
  • Fix config file ignored at game reinit
  • Fix running disturbed by flavours of walls
  • Fix splitting lines one character too early
  • Fix Calm drain from nearby foes occurring only every other turn
  • Fix some AI looping movement, in particular when fleeing
  • Fix running into own periodic explosions, e.g., from necklaces
  • Fix 'she painfullies collide'
  • Fix AI with vector targets unwilling to change them
  • Fix crash when attempting to fling at a target on remote level
  • Fix wrong timestamps in history
  • Fix, again, various kinds of frames intruding between fadeout and fadein
  • Fix wrong pluralization of some item names, compound and exceptions
  • Fix disabled items benefit recalculation after item kind learned
  • Fix in many ways too close initial faction and item positions
  • Fix performance in many ways and places, particularly for JS translation
  • Fix missing perception updates, causing missed AI actions concerning us
  • Fix uninitialized sarenas, which was probably causing resume to change state
  • Fix weak AI actors fleeing even if enemy can't melee
  • Fix and optimize sifting free tiles for spawn/summon location
  • Fix various cases of excessive summoning
  • Fix recording of item first seen level
  • Fix many problems with item descriptions and other messages
  • Fix reporting of reduction and elimination of actor conditions
  • Fix reading and interpreting old format config files
  • Fix synced initial item timeouts and actor times, leading to artificial feel
  • Fix actors erratically following their leader
  • Fix lifts continuing as stars and the other way around
  • Fix various 32bit overflows
  • Fix other errors, probably not present or not visible in previous version

v0.8.3.0

  • Add a hack to run SDL2 on the main thread, fixing the OS X crash
  • Warn visually when impressed and Calm running low, risking domination
  • Display actor as red when low Calm and impressed or when low HP
  • Fix, complete and fine tune UI, AI and server skill and weapon checks
  • Fix a bug where item aspects look different to clients than to the server
  • Change the requirements for the main menu ASCII art

v0.8.1.2

  • Fix typos detected by lintian
  • Fix the code that runs in case of old async (bug introduced in v0.8.1.1)

v0.8.1.1

  • no player-visible changes
  • make it possible to compile with old async package
  • rewrite copyright information according to Debian format
  • make github display the correct main license

v0.8.1.0

  • no player-visible changes
  • significantly reduce RAM usage when compiling library
  • update and extend CI

v0.8.0.0, aka 'Explosive dashboard'

  • rework greying out menu items and permitting item application and projection
  • rework history collection; merge message repetitions more aggressively
  • display HP in red when below (configurable) warning threshold
  • tweak AI: actors remember they are fleeing; better leader choice, etc.
  • add to content specialized explosive projectiles; tune the effects
  • calculate loot score component based on fraction of dungeon loot collected
  • don't hardwire item price, but let it be specified in content
  • let all valuables glitter in the dark to avoid complete level exploration
  • teach AI to cure ailments and shake off impressions
  • rework detection effects; add detection of items embedded in tiles
  • automatically identify stolen items that only have minor effects
  • let projectiles hit each other if fragile and substantial enough
  • rework item kind identification code; change the way it's defined in content
  • make more item kinds (including some traps) secret
  • protect paralyzed actors with a stasis condition to avoid infinite paralysis
  • implement dumping screenshots in SDL2 and create animated GIFs in Makefile
  • generate most common consumables less often, but in depth-scaled bunches
  • make pushed actors alter tiles and trigger effects of embedded items
  • validate and cross-validate more content; reduce content creation boilerplate
  • make summoning more varied and prevent chain-summoning
  • add many ways to conditionally sequence effects
  • create large, merged rooms more often
  • generalize the terrain altering player command (C-c, mouse)
  • let RET, SPACE and ESC clear pending messages, if any
  • add dashboard with links to all menus and info screens
  • scale some organ and trap power with level depth
  • simplify level-scaled dice roll semantics
  • change scaled dice notation 'dl' to 'dL' for readability in-game
  • rebalance items and decrease dice variety to unclutter backpack
  • colour-code beneficial and harmful conditions in menu and in HUD
  • display item lore (also for organs, embedded items, explosions, etc.)
  • display embedded item descriptions as if they were tile descriptions
  • tweak blast visuals, lower particle counts, beautify their spread
  • tweak projectile visuals, e.g., display an extra frame when projectile dies
  • add intro screen and work on other ways to convey story
  • simplify a lot of code, including a bit of game rules
  • fix some bugs, tweak content, speed up some AI bottlenecks

v0.7.1.0, aka 'Ancient troubles'

  • add amazing cave and item (actor, blast, organ) descriptions
  • package for Windows as an installer and also as zip archives
  • fix a crash from SDL frontend under some OpenGL drivers (no thread-safety)
  • add WWW address to the Main Menu, for other sites that may run our JS blob

v0.7.0.0, aka 'The dice are cast'

  • decouple tile searching from tile alteration
  • refrain from identifying items that are not randomized
  • switch away from incapacitated leader to let others revive him
  • make rescue easier by not going into negative HP the first time
  • fix crowd of friends on another level slowing even actors that melee
  • fix missing report about items underneath an actor when changing levels
  • API breakage: change the syntax of dice in content
  • API addition: introduce cave descriptions
  • keep all client states in the server and optimize communication with clients
  • improve item choice for identification and item polymorphing
  • reset embedded items when altering tile
  • replace atomic command filtering with exception catching
  • reimplement dice as symbolic expressions inducing multiple RNG calls
  • switch to optparse-applicative and rewrite cli handling
  • add stack and cabal new-build project files
  • improve haddocks across the codebase

v0.6.2.0, aka 'Zoom out'

  • make fireworks slower and so easier to spot
  • make rattlesnake deeper but more common
  • announce no effect of activation
  • describe original and current faction of an actor
  • highlight dominated actors
  • mark organs with comma instead of percent and gems with dollar
  • make the healing cave dangerous to prevent camping
  • slightly balance various content
  • by default move item the same as last time
  • often spawn between heroes and stairs going deeper
  • fix totalUsefulness computation for negative effects
  • fix abandoning distant enemy target despite no alternatives
  • fix slow pushing of actors
  • fix a crash when many actors run towards stairs
  • hotfix: Pass zoom keys through to the browser
  • help players find the info about changing the font size
  • depend on GHC >= 8.0 and new vector
  • specialize client code already in SampleMonadClient.hs
  • enable StrictData in all modules
  • replace 'failure' with 'error' that now shows call stack

v0.6.1.0, aka 'Breaking one rule at a time'

  • fix redrawing after window minimized and restored
  • hack around vanishing texture on Windows
  • hack around SDL backends not thread-safe on Windows
  • the only breaking API change: specify font directory in game rules content
  • let the game use its own fonts, not fonts from the sample game in library
  • tweak some item creation to occur in character's pack, not on the ground
  • slightly balance various content
  • make sure the 'resolution' effect is not a drawback
  • make artifact weapon rarities more regular
  • avoid creating lit, open dungeon at the bottom, where foes have ranged weapons
  • number scenarios in user descriptions
  • correct, add and modify some in-game messages
  • let player hear unseen summonings performed by other actors
  • don't let actors hear blasts hitting walls, as opposed to hitting actors
  • when moving item out of shared stash, reset its timeouts
  • when ascending, shift timeouts of inventory as well
  • when creating item not on the ground, discover it
  • when dominating, auto-discover only if the item can't be discovered by use
  • let henchmen take into account their targets, as described in PLAYING.md
  • let only walkable tiles be explorable, for clear walls inside solid blocks
  • move to API 2.0.0 of sdl2-ttf and depend on corrected sdl2 (builds on Windows)
  • simplify code thanks to the new sdl2-ttf API
  • tweak travis scripts and building docs in README

v0.6.0.0, aka 'Too much to tell'

  • add and modify a lot of content: items, tiles, embedded items, scenarios
  • improve AI: targeting, stealth, moving in groups, item use, fleeing, etc.
  • make monsters more aggressive than animals
  • tie scenarios into a loose, optional storyline
  • add more level generators and more variety to room placement
  • make stairs not walkable and use them by bumping
  • align stair position on the levels they pass through
  • introduce noctovision
  • increase human vision to 12 so that normal speed missiles can be sidestepped
  • tweak and document weapon damage calculation
  • derive projectile damage mostly from their speed
  • make heavy projectiles better vs armor but easier to sidestep
  • improve hearing of unseen actions, actors and missiles impacts
  • let some missiles lit up on impact
  • make torches reusable flares and add blankets for dousing dynamic light
  • add detection effects and use them in items and tiles
  • make it possible to catch missiles, if not using weapons
  • make it possible to wait 0.1 of a turn, at the cost of no bracing
  • improve pathfinding, prefer less unknown, alterable and dark tiles on paths
  • slow down actors when acting at the same time, for speed with large factions
  • don't halve Calm at serious damage any more
  • eliminate alternative FOV modes, for speed
  • stop actors blocking FOV, for speed
  • let actor move diagonally to and from doors, for speed
  • improve blast (explosion) shapes visually and gameplay-wise
  • add SDL2 frontend and deprecate GTK frontend
  • add specialized square bitmap fonts and hack a scalable font
  • use middle dot instead of period on the map (except in teletype frontend)
  • add a browser frontend based on DOM, using ghcjs
  • improve targeting UI, e.g., cycle among items on the map
  • show an animation when actor teleports
  • add character stats menu and stat description texts
  • add item lore and organ lore menus
  • add a command to sort item slots and perform the sort at startup
  • add a single item manipulation menu and let it mark an item for later
  • make history display a menu and improve display of individual messages
  • display highscore dates according to the local timezone
  • make the help screen a menu, execute actions directly from it
  • rework the Main Menu
  • rework special positions highlight in all frontends
  • mark leader's target on the map (grey highlight)
  • visually mark currently chosen menu item and grey out impossible items
  • define mouse commands based on UI mode and screen area
  • let the game be fully playable only with mouse, use mouse wheel
  • pick menu items with mouse and with arrow keys
  • add more sanity checks for content
  • reorganize content in files to make rebasing on changed content easier
  • rework keybinding definition machinery
  • let clients, not the server, start frontends
  • version savefiles and move them aside if versions don't match
  • lots of bug fixes internal improvements and minor visual and text tweaks

v0.5.0.0, aka 'Halfway through space'

  • let AI put excess items in shared stash and use them out of shared stash
  • let UI multiple items pickup routine put items that don't fit into equipment into shared stash, if possible, not into inventory pack
  • re-enable the ability to hear close, invisible foes
  • add a few more AI and autonomous henchmen tactics (CTRL-T)
  • keep difficulty setting over session restart
  • change some game start keybindings
  • replace the Duel game mode with the Raid game mode
  • various bugfixes, minor improvements and balancing

v0.4.101.0, aka 'Officially fun'

  • the game is now officially fun to play
  • introduce unique boss monsters and unique artifact items
  • add animals that heal the player
  • let AI gang up, attempt stealth and react to player aggressiveness
  • spawn actors fast and close to the enemy
  • spawn actors less and less often on a given level, but with growing depth
  • prefer weapons with effects, if recharged
  • make the bracing melee bonus additive, not multiplicative
  • let explosions buffet actors around
  • make braced actors immune to translocation effects
  • use mouse for movement, actor selection, aiming
  • don't run straight with selected actors, but go-to cross-hair with them
  • speed up default frame rate, slow down projectiles visually
  • rework item manipulation UI
  • you can pick up many items at once and it costs only one turn
  • allow actors to apply and project from the shared stash
  • reverse messages shown in player diary
  • display actor organs and stats
  • split highscore tables wrt game modes
  • move score calculation formula to content
  • don't keep the default/example config file commented out; was misleading
  • I was naughty again and changed v0.5.0.0 of LambdaHack content API slightly one last time

v0.4.100.0, aka 'The last thaw'

  • unexpectedly thaw and freeze again v0.5.0.0 of LambdaHack content API
  • unexpectedly implement timeouts and temporary effects easily without FRP
  • make a couple of skill levels meaningful and tweak skills of some actors
  • make AI prefer exploration of easier levels
  • permit overfull HP and Calm
  • let non-projectile actors block view
  • make colorful characters bold (if it resizes your fonts, turn off via colorIsBold = False in config file or --noColorIsBold on commandline)
  • start the game with a screensaver safari mode
  • add i386 Linux and Windows compilation targets to Makefile

v0.4.99.0, aka 'Player escapes'

  • balance the example game content a bit (campaign still unbalanced)
  • various code and documentation tweaks and fixes
  • add cabal flag expose_internal that reveals internal library operations
  • merge FactionKind into ModeKind and rework completely the semantics
  • compatibility tweaks for Nixpkgs
  • define AI tactics, expose them to UI and add one more: follow-the-leader
  • share leader target between the UI and AI client of each faction
  • specify monster spawn rate per-cave
  • extend content validation and make it more user friendly
  • freeze v0.5.0.0 of LambdaHack content API

v0.2.14, aka 'Out of balance'

  • tons of new (unbalanced) content, content fields, effects and descriptions
  • add a simple cabal test in addition to make-test and travis-test
  • generate items and actors according to their rarities at various depths
  • redo weapon choice, combat bonuses and introduce armor
  • introduce skill levels for abilities (boolean for now, WIP)
  • remove regeneration, re-add through periodically activating items
  • ensure passable areas of randomly filled caves are well connected
  • make secondary factions leaderless
  • auto-tweak digital line epsilon to let projectiles evade obstacles
  • add shrapnel (explosions) and organs (body parts)
  • express actor kinds as item kinds (their trunk)
  • add dynamic lights through items, actors, projectiles
  • fix and improve item kind and item stats identification
  • make aspects additive from all equipment and organ items
  • split item effects into aspects, effects and item features
  • rework AI and structure it according to the Ability type
  • define Num instance for Dice to make writing it in content easier
  • remove the shared screen multiplayer mode and all support code, for now
  • rename all modules and nearly all other code entities
  • check and consume HP when calling friends and Calm when summoning
  • determine sight radius from items and cap it at current Calm/5
  • introduce Calm; use to hear nearby enemies and limit item abuse before death
  • let AI actors manage items and share them with party members
  • completely revamp item manipulation UI
  • add a command to cede control to AI
  • separate actor inventory, 10-item actor equipment and shared party stash
  • vi movement keys (hjklyubn) are now disabled by default
  • new movement keyset: laptop movement keys (uk8o79jl)

v0.2.12

  • improve and simplify dungeon generation
  • simplify running and permit multi-actor runs
  • let items explode and generate shrapnel projectiles
  • add game difficulty setting (initial HP scaling right now)
  • allow recording, playing back and looping commands
  • implement pathfinding via per-actor BFS over the whole level
  • extend setting targets for actors in UI tremendously
  • implement autoexplore, go-to-target, etc., as macros
  • let AI use pathfinding, switch leaders, pick levels to swarm to
  • force level/leader changes on spawners (even when played by humans)
  • extend and redesign UI bottom status lines
  • get rid of CPS style monads, aborts and WriterT
  • benchmark and optimize the code, in particular using Data.Vector
  • split off and use the external library assert-failure
  • simplify config files and limit the number of external dependencies

v0.2.10

  • screensaver game modes (AI vs AI)
  • improved AI (can now climbs stairs, etc.)
  • multiple, multi-floor staircases
  • multiple savefiles
  • configurable framerate and combat animations

v0.2.8

  • cooperative and competitive multiplayer (shared-screen only in this version)
  • overhauled searching
  • rewritten engine code to have a single server that sends restricted game state updates to many fat clients, while a thin frontend layer multiplexes visuals from a subset of the clients

v0.2.6.5

  • this is a minor release, primarily intended to fix the broken haddock documentation on Hackage
  • changes since 0.2.6 are mostly unrelated to gameplay:
    • strictly typed config files split into UI and rules
    • a switch from Text to String throughout the codebase
    • use of the external library miniutter for English sentence generation

v0.2.6

  • the Main Menu
  • improved and configurable mode of squad combat

v0.2.1

  • missiles flying for three turns (by an old kosmikus' idea)
  • visual feedback for targeting
  • animations of combat and individual monster moves

v0.2.0

  • the LambdaHack engine becomes a Haskell library
  • the LambdaHack game depends on the engine library