## [v0.11.0.1](https://github.com/LambdaHack/LambdaHack/compare/v0.11.0.0...v0.11.0.1) - Split the long Content.ModeKind texts into lines, [#283](https://github.com/LambdaHack/LambdaHack/issues/283) - In unit tests, re-use values from UnitTestHelpers and Game.LambdaHack.Common.Kind, [#286](https://github.com/LambdaHack/LambdaHack/issues/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](https://github.com/LambdaHack/LambdaHack/compare/v0.10.3.0...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](https://github.com/LambdaHack/LambdaHack/compare/v0.10.2.0...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](https://github.com/LambdaHack/LambdaHack/compare/v0.9.5.0...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](https://github.com/LambdaHack/LambdaHack/compare/v0.9.4.0...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](https://github.com/LambdaHack/LambdaHack/compare/v0.9.3.0...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'](https://github.com/LambdaHack/LambdaHack/compare/v0.8.3.0...v0.9.3.0) - 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](https://github.com/LambdaHack/LambdaHack/compare/v0.8.1.2...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](https://github.com/LambdaHack/LambdaHack/compare/v0.8.1.1...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](https://github.com/LambdaHack/LambdaHack/compare/v0.8.1.0...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](https://github.com/LambdaHack/LambdaHack/compare/v0.8.0.0...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'](https://github.com/LambdaHack/LambdaHack/compare/v0.7.1.0...v0.8.0.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.7.0.0...v0.7.1.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.6.2.0...v0.7.0.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.6.1.0...v0.6.2.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.6.0.0...v0.6.1.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.5.0.0...v0.6.0.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.4.101.0...v0.5.0.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.4.100.0...v0.4.101.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.4.99.0...v0.4.100.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.2.14...v0.4.99.0) - 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'](https://github.com/LambdaHack/LambdaHack/compare/v0.2.12...v0.2.14) - 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](https://github.com/LambdaHack/LambdaHack/compare/v0.2.10...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](https://github.com/LambdaHack/LambdaHack/compare/v0.2.8...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](https://github.com/LambdaHack/LambdaHack/compare/v0.2.6.5...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](https://github.com/LambdaHack/LambdaHack/compare/v0.2.6...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](https://github.com/LambdaHack/LambdaHack/compare/v0.2.1...v0.2.6) - the Main Menu - improved and configurable mode of squad combat ## [v0.2.1](https://github.com/LambdaHack/LambdaHack/compare/v0.2.0...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](https://github.com/LambdaHack/LambdaHack/compare/release-0.1.20110918...v0.2.6) - the LambdaHack engine becomes a Haskell library - the LambdaHack game depends on the engine library