-------------------------------------------------------------------------------- a0a21ad780 | Kyle Rawlins | 2023-03-23 19:39:52 -0400 fix: an unhandled no-ttyrec case -------------------------------------------------------------------------------- e0d47acfc0 | Kyle Rawlins | 2023-03-23 16:23:15 -0400 fix: a sync issue in webtiles shutdowns I *think* this might be why webtiles isn't reliable shutting down; when a lot of sockets are disconnected around the same time, some time the watcher can (somehow) get removed from the player's _receivers list before this gets called. -------------------------------------------------------------------------------- 4a46532650 | Kyle Rawlins | 2023-03-23 15:50:25 -0400 fix: don't disable ttyrecs in the default config -------------------------------------------------------------------------------- bbd5a6ad7e | Kyle Rawlins | 2023-03-23 15:43:33 -0400 feat: option to disable ttyrecs at the server level Previously you had to do this per-game, and it was a pain. -------------------------------------------------------------------------------- 5e84b56f07 | Nicholas Feinberg | 2023-03-23 12:33:25 -0700 Make Majin-Bo vampirism trigger on Polar Vortex (Monkooky) -------------------------------------------------------------------------------- 2eac9ac288 | Aliscans | 2023-03-23 10:48:49 -0400 FIX: Make the "browse character notes" screen obey menu_colour. The ability to highlight notes in different colours in the "browse character notes" display (constrolled with the menu_colour option) was lost with a02aae867c. This returns it, but with one small change. If a note is too long to display on a single line of the display, the colour is chosen based on the whole note, instead of assessing each line of output separately. -------------------------------------------------------------------------------- d60598b1e9 | Kyle Rawlins | 2023-03-23 10:47:17 -0400 fix: further repair work on `menu_colour` This has always been a weird option, because it is mostly about items, but has also (at some points) worked for things that aren't items, and really share no resemblance to items. This is pretty bug-prone (e.g. see 8abc85282e38), and has also just led to some of these options silently failing over time as people failed to maintain them (see #3056). This commit refactors the option so that the "any" or no-tag rules do not apply to any many, but rather any item menu. "any" is correspondingly renamed to "item" in the docs (though "any" is still usable for back compatibility). I've also fixed pickup and "resists" behavior, improved the documentation, and removed a few of these tags. In particular, spell/ability are broken, have been for a very long time (from just reading the code, I doubt they worked so long ago as 0.3, though I didn't actually test), so I've just removed them from the docs. I'm not opposed to them returning but in modern crawl it'd be a bit tricky, since they would need to not override the hard-coded rules for these menus. "notes" also doesn't work but #3056 will fix that (though to be honest, if this PR didn't exist I'd also just remove that tag). The help menu stuff probably semi-works (I didn't test carefully), though I'm really unsure of the value. I don't know if it would be crazy to make this option item-only, move the `note` one to a different option, and remove `help`. -------------------------------------------------------------------------------- b9d0489357 | Nicholas Feinberg | 2023-03-22 16:29:08 -0700 Make held ego demon weapons purple again Since purple is closer to red (the item tile) than green. -------------------------------------------------------------------------------- 4458efe7bc | Nicholas Feinberg | 2023-03-22 16:21:45 -0700 New plasma, weapon tiles (Sastreii) Plasma Beam and player doll demon ego/randart tiles. -------------------------------------------------------------------------------- 7f6bbad527 | Neil Moore | 2023-03-22 16:26:07 -0400 Remove an obsolete reference to EE stones [skip ci] -------------------------------------------------------------------------------- 01031c21c8 | Kyle Rawlins | 2023-03-22 13:31:01 -0400 fix: remove 2 altars from size 14 compressed_dpeg_circular_temple Not sure if this is the intended 14 altar plan, but it comes from taking the double listing of `C` as a cue, and seems to work. -------------------------------------------------------------------------------- 92c0bcffe8 | Nikolai Lavsky | 2023-03-22 20:18:47 +0300 docs: update `menu_colour` documentation a bit more `(` and `)` were the keys for displaying wielded and secondary weapons back in 0.4. This behaviour was moved to `}` in 0.5 (42d8d07399), then it was assigned to `Ctrl-v` in 0.10 (875129a2f9), and finally it was removed in 0.11 (ff9fb87a6f). The corresponding part in the options guide hasn't been updated since 2009. Also, rip rods. -------------------------------------------------------------------------------- 960216f51a | Kyle Rawlins | 2023-03-22 09:40:28 -0400 docs: update `menu_colour` documentation This was out of date in many ways, referring to various removed items, food, etc., and missing some tags that are actually useful. I've also tried to clarify the scope of this option as per discussion in #2873. (As a side note, it's non-ideal that notes are colored with this option, that should probably get broken out. It also seems like `any` prefixes shouldn't apply across menu types, or alternatively there should be a better prefix for indicating "items only".) I did remove a bunch of the examples from the docs, because they were outdated and somewhat confusingly redundant. It might be good to have more examples in here, but they'd need to be a bit more current and less redundant with the defaults. Maybe someone can pull a few from a community rc? Also fixed a few things in the actual defaults: * runes were missing a color because they are no longer misc items * removed old annotations related to food, this may cause some back-compat errors but that's probably ok at this point. -------------------------------------------------------------------------------- 0ad0bf95bc | Nicholas Feinberg | 2023-03-21 16:57:17 -0700 Add new randart staff tiles (Sastreii) Oooh! -------------------------------------------------------------------------------- 828ccac5a3 | Nicholas Feinberg | 2023-03-21 14:04:43 -0700 Remove an unused return type (Monkooky) -------------------------------------------------------------------------------- b1aff02ba6 | Nicholas Feinberg | 2023-03-21 11:25:36 -0700 Allow randartifying staves (dwetuski) -------------------------------------------------------------------------------- b09b86bb1d | Kate | 2023-03-21 15:13:52 +0000 Fix a test failure (advil) As per the comment, it would be nice if we could automatically check for spells with no monster implementation, since adding new spells to this list is very easily missed! -------------------------------------------------------------------------------- 7493c07aab | Nicholas Feinberg | 2023-03-20 17:49:16 -0700 Describe randart staff properties (master_daffy) -------------------------------------------------------------------------------- 9323dee000 | Nicholas Feinberg | 2023-03-20 11:56:43 -0700 Add some fun orbs to zigsprint Seems like a funny gimmick to go into a zig with an orb of guile or of mayhem. Doubt it's better than just grabbing Gong, but it's nice to give options :) -------------------------------------------------------------------------------- 0ff054e9dc | Kate | 2023-03-19 23:13:21 +0000 Let Battlesphere fire on any destructive spell Including non-conjurations, using the same spell list that Vehumet supports. Refactor to use a spflag for those spells, and list any known spells that would activate the Battlesphere in the spell description. -------------------------------------------------------------------------------- 27667f90d9 | Kate | 2023-03-19 19:55:18 +0000 Display Plasma Beam's targeter by default (acrobat) -------------------------------------------------------------------------------- 98134172ad | Nicholas Feinberg | 2023-03-19 12:38:08 -0700 Fix: Veh should support Plasma Beam -------------------------------------------------------------------------------- 1509c8bc92 | Kate | 2023-03-19 17:41:11 +0000 Adjust Xom mutation handling Remove mutflag::xom, which marked a subset of bad mutations that Xom was particularly likely to apply. Instead of using a special-cased way of choosing mutations for Xom's bad mutation action, just use the standard random mutation codepath but with a slightly higher chance of picking a bad mutation (a 50/50 split of good/bad, instead of 60/40 for normal random mutations). This should work out as giving a similar ratio of mutations but without the special-cased handling of some mutations being extra common. Closes #2614. -------------------------------------------------------------------------------- 79ad299dcf | Kate | 2023-03-19 17:41:11 +0000 Slightly reword Jiyva description (Implojin) Use alternate wording to indicate that anything marked as a "fellow slime" can eat items, not just jellies specifically. Closes #2960. -------------------------------------------------------------------------------- 9934a0ce24 | Nicholas Feinberg | 2023-03-18 18:26:45 -0700 Allow randart staves The itemization game for 'casters' has always been a bit less exciting than for more melee-focused characters. Melee characters have a wide variety of weapons to play with, and can try to enchant up their weapons, rebrand them, or maybe even luck into an exciting artefact. 'Casters' mostly look for an appropriate staff or two, or maybe some 'stat sticks' - but there isn't much upgrade potential. Once you have your staff, you're set. Tweak this a bit by allowing randart staves to generate. This should hopefully be exciting for players (wow, check out this super shiny item!) and might also lead to interesting strategic decisions - is this staff good enough to push more more toward a particular spell school, or casting in general? -------------------------------------------------------------------------------- e10d75a369 | Nicholas Feinberg | 2023-03-18 14:07:13 -0700 Remove _randart_is_conflicting Wildly redundant with _populate_jewel_intrinsic_artps(). -------------------------------------------------------------------------------- 314a488677 | Kate | 2023-03-18 19:24:52 +0000 Don't let Plasma Beam target allies or conjured monsters -------------------------------------------------------------------------------- 9550c5b0f0 | Kate | 2023-03-18 19:13:22 +0000 Show full beam paths in Plasma Beam's targeter Rather than just individual targets, so that it's a little clearer how it aims. -------------------------------------------------------------------------------- 950d97f59e | Kate | 2023-03-18 18:59:27 +0000 Don't let Plasma Beam target enemies through fog (gammafunk) -------------------------------------------------------------------------------- 5a111fc481 | hellmonk | 2023-03-18 11:39:51 -0700 feat: new spell, Plasma Beam Proposed lightning bolt replacement. It fires two beams at the most distant enemy within range, one elec and one fire. Properties are otherwise similar to lightning bolt. Goal is to trade the boltbounce minigame for a different kind of positional targeting. This needs some kind of handling for invis enemies but I can't decide how to do it. Closes #2902. -------------------------------------------------------------------------------- c239213254 | Kate | 2023-03-18 18:34:06 +0000 Reduce Ashenzari skill boost (again (again)) After multiple previous reductions it's still extremely strong. Continue gradually bumping it down to be a bit more reasonable. -------------------------------------------------------------------------------- b1c6e1a8ff | Kate | 2023-03-18 18:34:06 +0000 Move Ashenzari's trap detection to 4* Instead of frontloading so many useful passives, move one of the more desirable ones later. -------------------------------------------------------------------------------- 38b0942921 | Kate | 2023-03-18 18:34:06 +0000 Adjust messaging for Transference drain (CarefulOdds) To reflect it being a passive change to the ability. -------------------------------------------------------------------------------- 82bc4aa17e | hellmonk | 2023-03-18 11:26:27 -0700 feat: Sleepcap vault -------------------------------------------------------------------------------- 860c267598 | Nicholas Feinberg | 2023-03-18 11:22:20 -0700 Don't let spectral weapons attack themselves (ragingrage) One of the least impactful commits in Crawl's history. -------------------------------------------------------------------------------- 4ae07df7fc | Nicholas Feinberg | 2023-03-18 11:18:38 -0700 New weaponless Nessos & Sigmund variants (Sastreii) Technically Sigmund should really show an alt weapon in his left hand, but it'd take work, and it's kind of hard to get him to use a different weapon. -------------------------------------------------------------------------------- 7006a028af | Kate | 2023-03-18 15:20:32 +0000 Move an Armataur quaffing message Don't say that you slurp down a potion unless you've definitely actually done so - previously it would be possible for this message to display when cancelling a quaff. -------------------------------------------------------------------------------- 23479c02f2 | Nicholas Feinberg | 2023-03-17 22:09:55 -0700 Don't generate ego troll armour Oops! -------------------------------------------------------------------------------- be4bc1ceb8 | Nicholas Feinberg | 2023-03-17 15:48:18 -0700 Allow entering explore mode in dgamelaunch Don't see any good reason to prevent this. This has been configured since c088e799be5 (2014), when explore mode was first added. -------------------------------------------------------------------------------- 0bd9f85ce6 | Nicholas Feinberg | 2023-03-17 15:46:57 -0700 Add KILLED_BY_EXPLORING Tragically common, really. -------------------------------------------------------------------------------- a2f19c967e | Nicholas Feinberg | 2023-03-17 15:24:11 -0700 Properly ban contradictory scarf/orb randarts (acrobat) No orbs of light with +Inv, orbs of energy with -Cast, etc. Also allow more scarfs with harm, following the same logic as non-rF rings getting to have rF. -------------------------------------------------------------------------------- 585d364ce2 | Nicholas Feinberg | 2023-03-17 15:24:11 -0700 Dataify armour egos And deduplicate scarf/orb gen logic. -------------------------------------------------------------------------------- 417346db89 | Nicholas Feinberg | 2023-03-17 15:24:11 -0700 Force scarves and orbs to generate with egos Even as randarts. -------------------------------------------------------------------------------- d47c823769 | Nicholas Feinberg | 2023-03-17 15:24:11 -0700 Minor armour gen refactoring Flatten logic and tinker slightly. -------------------------------------------------------------------------------- 20749f2c85 | advil | 2023-03-17 17:01:48 -0400 feat: let lua scripts detect hup/ctrl-c This provides a dlua wrapper to crawl_state.seen_hups (which for scripts now reports both SIGHUP and SIGINT) and uses it in the seed explorer to react appropriately. Possibly it would be fine to expose this in clua? More generally, it would be nice if there were a more automated way to interrupt lua scripts on a signal, but I'm not sure what that is in the crawl setup, at least to do in a safe/clean way. Right now a stuck rc script will eventually trigger a SIGABRT in online circumstances if a regular kill fails, which does interrupt (and not particularly cleanly). Locally a stuck script usually requires a manual kill. -------------------------------------------------------------------------------- 08fc0cc78a | advil | 2023-03-17 17:01:48 -0400 fix: more tiles headless adjustments Handle a bunch more ways in which code should only conditionally depend on sdl-related state in headless mode. This is not nearly enough to get the full game running, and I'm not sure that'll be practical, but arena runs, as do some rc tests. (RC test mode is still disabled in this commit though, because it mostly crashes.) * Default -test mode to headless for local tiles also * Get ctrl-c working at the command line -------------------------------------------------------------------------------- b44def57f8 | advil | 2023-03-17 17:01:48 -0400 feat: allow running scripts in all builds The script/test code is pretty entangled, so this change entails linking some (more) debug code. But, I don't think that should be a big deal. I can't guarantee that all scripts work (and maybe some will need to explicitly check for the right build), but this does allow the seed explorer to work for straightforward cases outside of debug builds. -------------------------------------------------------------------------------- 981f4ca651 | advil | 2023-03-17 17:01:48 -0400 feat: don't use fake_pty for -test tests These generally don't need or want ncurses, and are currently running in headless mode anyways, so don't use fake_pty. In contrast, I've decided that the stress tests are better by default *not* run in headless mode, so that they exercise the full ncurses code path (though they now do work in headless mode). -------------------------------------------------------------------------------- 64c6ef89db | advil | 2023-03-17 17:01:48 -0400 feat: let arena and rc scripts run in headless mode The main effect of this is to lead stress tests work in headless mode. This does absolutely no verification of whether rc files are appropriate to run in headless mode, so a script (or just a normal rc file) that is interactive will hang. But, an explicit rc argument most be given, so it's on the user to verify. Arena should be fine, it's never interactive. -------------------------------------------------------------------------------- c9e3db4d4a | advil | 2023-03-17 17:01:48 -0400 Headless UI mode Headless mode is a CLI-triggered mode where crawl suppresses UI elements, either ncurses or sdl. For ncurses, all display operations are essentially replaced with noops (except that cursor position is simulated), and for sdl, an existing proto-implementation of the idea in the form of `crawl_state.tiles_disabled` is expanded and made more robust. (This was originally aimed at mapstat and objstat.) The only build where `-headless` is unavailable in is windows console (though windows tiles is not tested). One part of the point of this change is to do away with the need for fake_pty for things like running scripts from the command line; though to be clear, running certain tests in a way that exercises UI code is still valuable and won't change. * Currently, running rc scripts in headless mode isn't possible. This will be doable for console, but the current sdl headless code isn't robust enough to handle them. * This commit also forces headless mode for -script and -test for builds that can do that. * This lets ctrl-c send a HUP, and will interrupt tests. Still needs more adjustments as HUP has no impact while a long-running lua test or script is going. * This all works on webtiles builds, but webtiles server can't handle headless crawl processes (this may be possible to get working). -------------------------------------------------------------------------------- 5d03d06573 | Aliscans | 2023-03-17 17:27:22 +0000 Have Wall Jump's targeter only highlight monsters it could affect. As things stood, the targeter included every monster next to the landing location, revealing invisible monsters and obscuring the scope of the ability. It now only highlights monsters the action would try to attack. Closes #3008. Closes #3011. -------------------------------------------------------------------------------- 8574249b47 | Kate | 2023-03-17 17:27:22 +0000 Mark soul-bound monsters as immune to Simulacrum (#3038) Monster simulacrum takes priority over the player's, so make that clearer in the interface and don't let the player waste turns trying to target monsters that have already been soul-bound. Closes #3038. -------------------------------------------------------------------------------- c518acad8c | Kate | 2023-03-17 17:27:22 +0000 Remove unused code (Monkooky) -------------------------------------------------------------------------------- 333cc4477c | advil | 2023-03-17 10:56:59 -0400 fix: maybe make some menu code more robust This code can apparently crash, which isn't surprising given how insane the type handling is. However, I can't immediately see what is crashing. Probably this could use a bigger rewrite, but this commit tries to amp up the explicit type checking a bit so that if it crashes, it'll at least be more apparent why. -------------------------------------------------------------------------------- 5ad918d77d | Nicholas Feinberg | 2023-03-14 15:35:20 -0700 Don't allow double Harm/Resistance (lici) Oversight with scarf randarts, and a pre-existing issue with shield randarts. (You could get a weird shield with "rF+ rC+, rF+".) Would be nice to allow both of these stacking. Maybe sometime when someone wants to put in the work. -------------------------------------------------------------------------------- f0aa4a8bf9 | Nicholas Feinberg | 2023-03-14 13:33:54 -0700 Allow orb and scarf randarts It's cool and exciting to get randarts, and also provides extra incentives for players to use orb/scarf egos that they might normally not bother with. These will be quite rare indeed, which makes them all the more exciting! Reverts 614d7e5ffcadf8711dbdcfdefc0ba100785c5137 and implements the functionality it describes of 'guaranteeing a scarf ego'. -------------------------------------------------------------------------------- 1ff12e1e11 | advil | 2023-03-13 21:41:49 -0400 fix: show email in password reset CLI (gammafunk) Broken in dc488dc59d06da635 -------------------------------------------------------------------------------- c85679547a | Nicholas Feinberg | 2023-03-13 17:31:58 -0700 Give the Thermic Engine a dbrand (ragingrage) Tag the +ench on hit effect as Rev. -------------------------------------------------------------------------------- a8ba668304 | Nicholas Feinberg | 2023-03-11 16:38:42 -0800 Maybe fix heavy weapon delay? (acrobat) I need to take another look at this later. -------------------------------------------------------------------------------- c727b3d3d6 | Nicholas Feinberg | 2023-03-11 13:47:39 -0800 New Hood of the Assassin tiles (Sastreii) See also 358383bc755250ed4b6016580a4e583e6013edf8 and a7e42e2d2c60e0160f4cd9fd1aec4b594fd5dc50. -------------------------------------------------------------------------------- ab80c607aa | Nicholas Feinberg | 2023-03-11 13:47:39 -0800 Join the club (Sastreii) New skullcrusher tiles. -------------------------------------------------------------------------------- 0295b78d7d | advil | 2023-03-11 16:21:57 -0500 fix: prompt menu webtiles formatting (dilly) Unfortunately there seems to be a mismatch in how webtiles is handling multiline messages, where it should insert a space before every line that doesn't have a prefix, but isn't. Looking at the webtiles code this seems quite hard to fix, so I've retreated to individually printing the prompt menu lines. (This is how the old `G` menu did this, which is why it didn't have this bug before.) -------------------------------------------------------------------------------- 110b599a53 | Nikolai Lavsky | 2023-03-11 23:34:35 +0300 text: mention rFlCloud in Ignite Blood's description -------------------------------------------------------------------------------- 5f9855fb91 | robertxgray | 2023-03-11 14:41:02 -0500 Fix ccache caching The new ccache action adds a prefix and a timestamp suffix to the cache key by default. We are also adding another prefix and suffix in the workflow configuration. This doesn't work as expected in most cases so this commit removes the extra pre/suffixes from the configuration. -------------------------------------------------------------------------------- ff62baca66 | Nicholas Feinberg | 2023-03-11 07:46:25 -0800 Tweak AF_SLEEP messaging Don't spam about sleep spores unless the victim is actually put to sleep, or at least an attempt is made. -------------------------------------------------------------------------------- ba1e808681 | Nicholas Feinberg | 2023-03-11 07:46:25 -0800 Ease skyshark numbers down a bit Finding a middle ground between 0b89b74ca80c5 and 6ffb7e90e5a. turning a big dial taht says "skysharks" on it and constantly looking back at the audience for approval like a contestant on the price is right -------------------------------------------------------------------------------- 7c8b1a6b49 | Kate | 2023-03-11 15:26:06 +0000 Teach art-data.pl about orbs Should fix errors with the orb of Dispater's doll tile not being found. -------------------------------------------------------------------------------- c5d4c5acee | Kate | 2023-03-10 21:19:32 +0000 Update Meteoran vision range on getting the orb (#3041) Closes #3041. -------------------------------------------------------------------------------- 94e0f26ad8 | robertxgray | 2023-03-10 15:49:54 -0500 Fix Github Actions deprecation warnings * The current ccache action cannot be updated, it has been replaced with the most starred one. This obsoletes the cache action and the manual ccache stats management. * Update the checkout action to v3. * Update the setup-python action to v4. * Update the codecov action to v3. * Replace the obsolete set-outputs commands with the new GITHUB_OUTPUT environment file. -------------------------------------------------------------------------------- 2ed206a1a6 | robertxgray | 2023-03-10 15:49:54 -0500 Fix CI builds for Android and more * Update the Android Gradle plugin and use a compatible Gradle version. This improves the build times and fixes the SDK XML related warnings. * Ccache doesn't get hits on Android because the compiler's mtime is different in every build. Change the compiler check strategy to content. * The ccache configuration file created by the setup Github Action is ignored by current versions. This affects every build. New steps have been added to move the configuration files. * Proper fix for 093205a. I'm very sorry for that. * Fix a typo in the cache config for the AppImage builds. * Use the Maven Central repository instead of the deprecated JCenter. -------------------------------------------------------------------------------- 305f33218d | advil | 2023-03-09 10:23:06 -0500 test: maybe_bool test cases -------------------------------------------------------------------------------- 0c4e4566d2 | advil | 2023-03-09 10:23:06 -0500 build: maybe fix android build -------------------------------------------------------------------------------- 45891bb24c | advil | 2023-03-09 10:23:06 -0500 refactor: convert old maybe_bools to new maybe_bools This removes the old maybe_bool syntax entirely, and updates all uses of it in the codebase. (There are a lot of c-style casts that in principle should be static_casts here.) -------------------------------------------------------------------------------- 8838f259ad | advil | 2023-03-09 10:23:06 -0500 refactor: rewrite maybe_bool This commit rewrites maybe_bool to be, argubly, better. See below for motivation, but here are the practical notes up front: * `maybe_bool` becomes a class rather than an enum. * After this commit, nearly anywhere you would write MB_FALSE or MB_TRUE you would simply write `false` or `true`. * Where you would write MB_MAYBE you now should write `maybe_bool::maybe`. * Comparison to `true` or `false` is safe and will do exact comparison. (The latter may appear surprising, but it is because comparison will cause a bool to be cast to maybe_bool, rather than a maybe_bool to be cast down to bool.) * Semantics change: `maybe_bool::maybe` does not convert to true by default under any circumstance. * In cases where you would have previously written `mb == MB_TRUE` you can just rely on a bool cast (`maybe` does not convert to `true`). In cases where you would write `mb == MB_FALSE` you can write `!mb`. * frombool and tobool are replaced respectively by constructors and the class method maybe_bool::to_bool (as well as an explicit bool cast). * While bool explicit operators have weird rules and can be used implicitly in some cases, there are still times when you'll need to do the cast. In particular, if a function returns a bool, to return a maybe_bool you'll need to explicitly cast. * Mixing bools and maybe_bools in logical expressions generally requires an explicit cast. (If you write a condition that just uses !, that doesn't need one.) Old `maybe_bool` had the advantage of simplicity: it was just an enum and as long as these enum values are used consistently, it is pretty simple to use and as efficient as any integer-based type, with effectively no implementation code. However, there are a few complaints about it. First, the naming scheme was quite ad hoc across the enum values and various functions that used them. Second, and more importantly in my mind, the enum-based implementation led in a very non-clean way to implicit int and bool casts, and a very ad hoc semantics for this type, especially in its interaction with boolean expressions. Taken as a three-valued logic, it is very weird. The law of the excluded middle *is* valid (in the sense that `p || !p` is always true), but double negation elimination is *not* valid (i.e. `!!p != p`); the weaker double negation inference `!!!p == !p` does hold conceivably classing it with some paraconsistent logics, though I haven't found an exact analogue (see [1], though this logic doesn't much resemble L8 there, which has the same double negation pattern). At a practical level this ad hoc nature made mixing with bools in both directions weird and somewhat error prone; aside from the above concerns (which essentially result from MB_MAYBE implicitly casting to `true`), `true` would cast to the enum value MB_MAYBE, leading to clunky conversion code in a lot of places, needing to always use MB constants, and error-prone comparison with regular bools. This commit tries to systematize things more cleanly, albeit with a much more complicated implementation. The underlying data type does still amount to a fancy enum (now an enum class), but it's wrapped with a more clearly defined class, largely inspired by boost's logic::tribool. (I considered whether importing one of the various "`optional` but for c++11" packages out there might be a solution, but ultimately rejected this, because these classes tend to have an even weirder, for a bool-based type, set of implicit conversions to bool). A `bool` constructor is provided making it generally safe to use `true` and `false` as e.g. return values, and an explicit cast to bool is provided that has a better default than MB_MAYBE->true. (In some cases, this may be the desired semantics, of course, but this is still doable via `to_bool` or direct checks against false.) The operator semantics is based on the standard "Strong Kleene" three-valued logic operators, which provide a (imo) very sensible set of defaults for a three-valued logic. Note that because of the existence of the bool operator, this won't let you mix `maybe_bool`s in logical expressions together with bools without some explicit casting one way or the other. The implementation is nearly (but not quite) purely header-based. As part of this commit, I have implemented everything as a back-compatibility layer and purely just tried to clarify the semantics of various instances of maybe_bool in cases where it did get an implicit conversion. The bulk of this is around `can_wear_item` which does tend to treat its maybe return as truth-y. A future commit will convert MB_TRUE etc into their `maybe_bool::t` etc equivalents. [1] Kamide 2013, A Hierarchy of Weak Double Negations, Studia Logica 101.6 fix -------------------------------------------------------------------------------- f5068b961c | Nikolai Lavsky | 2023-03-09 15:09:12 +0300 fix: show rDrown and rBlind in the monster lookup (?/m) Previously, these resistances were displayed only when inspecting a monster via `xv`. But, for example, `?/mjelly` didn't mention rBlind and rDrown at all. In-game monster descriptions are constructed using a `monster *`. On the other hand, monster lookup produces descriptions using just the type and base type of a monster. The latter constructor initialized the basic resists, but it didn't check for rBlind nor rDrown. There was no way to check drowning resistance using only the type of a monster, so this commit adds a new utility function for that. -------------------------------------------------------------------------------- 1aabd4f9c5 | Nicholas Feinberg | 2023-03-07 18:25:41 -0800 Hide spectral weapon attack descriptions (acrobat) They're misleading now that spectral weapons use the player's stats for attacks, not the monster's. -------------------------------------------------------------------------------- 928e84d663 | Nicholas Feinberg | 2023-03-07 18:20:03 -0800 Fix knockback beams (acrobat) Restore the logic from before b7c8574cbb4cc21e112d13fa3a554c3b815787d8. -------------------------------------------------------------------------------- 512cf1e979 | Nicholas Feinberg | 2023-03-06 14:52:41 -0800 GET MAD! (Sastreii) New tile for the Wrath of Trog. Not the god wrath, the weapon. You know what I mean. -------------------------------------------------------------------------------- f88a04b62d | advil | 2023-03-05 16:27:48 -0500 fix: restore non-debug `show_more` This was apparently broken when I merged the android patch but no one noticed? (Removed in f8cea274af24, I think it was just mistaken for TOUCH_UI-specific code.) -------------------------------------------------------------------------------- 707647da51 | Kate | 2023-03-05 20:05:44 +0000 Improve handling of summoning prompts during AoE spells Spells that summon only flying monsters should now correctly not prompt with Eringya's Noxious Bog active. -------------------------------------------------------------------------------- caf70739d4 | Kate | 2023-03-04 21:51:40 +0000 Add new orb of Dispater tiles (Sastreii) For Dispater themself, as well as item and player doll tiles. Also update the description to match! -------------------------------------------------------------------------------- c246efe4b1 | Kate | 2023-03-04 18:17:49 +0000 Don't let Ru try to redirect butterfly attacks (#2988) Closes #2988. -------------------------------------------------------------------------------- 066f1b0f1d | Kate | 2023-03-04 17:53:19 +0000 Tweak holy_pan to remove teleport closets (#2979) Historically, Pan vaults got away with having teleport closets under the assumption that anyone going there would have plenty of means of flight, digging and/or teleportation, but it's also pretty simple to avoid in this case. Move one of the of the exits to the opposite side of the river, tweak some terrain to open up a pathway along one side of the river, and make a couple of spots (Elyilon's altar island and the pearl dragon cave) no_tele_into. Closes #2979. -------------------------------------------------------------------------------- e1c980b087 | Kate | 2023-03-04 17:07:21 +0000 Remove some iron grates from evilmike_geh (#2980) They seem to exist to allow players to dig out and fly across some areas of the lava, but could result in permaflying players getting trapped by teleporting into the lava area without a way to get through grates. The areas with grates also place stokers, which are theoretically able to summon through the grates but in practice were unlikely to do so successfully - removing the grates and opening up those areas allows the outer lava monsters a way in. Closes #2980. -------------------------------------------------------------------------------- 561648f94d | Kate | 2023-03-04 11:36:19 +0000 Fix gods protecting allies from hostile Irradiate (#3033) Closes #3033. -------------------------------------------------------------------------------- 08b95dd62f | Nicholas Feinberg | 2023-03-03 16:25:16 -0800 Remove ABIL_MAX_EVOKE This was only used in one place, where it wildly overestimated the number of evocable abilities the player might have. Replace it with a hardcoded cludge for now. -------------------------------------------------------------------------------- bd0d260d8e | Nicholas Feinberg | 2023-03-03 11:13:12 -0800 Add a crawling zombie skyshark tile (Sastreii) Only for player usage. -------------------------------------------------------------------------------- 320358a0d7 | Nicholas Feinberg | 2023-03-03 11:13:11 -0800 Allow cleaving insane monsters Match the behavior for trying to swap with neutrals in movement.cc. -------------------------------------------------------------------------------- 744a1ced0f | Nicholas Feinberg | 2023-03-03 10:00:19 -0800 Remove giant fish zombies (Sastreii) New tiles for skyshark and dream sheep zombies. Twisted... -------------------------------------------------------------------------------- 34551f5589 | Nicholas Feinberg | 2023-03-03 07:15:24 -0800 Break AF_BLODOZERK (Beargit) No more sleepy sharks! -------------------------------------------------------------------------------- 17996783a1 | Nicholas Feinberg | 2023-03-02 20:43:16 -0800 Simplify the spectral brand To make it easier to understand how the spectral brand works, rather than using the stats of a strange 'spectral weapon' monster to determine accuracy and damage, use the player's stats instead. (Then reduce pre-AC damage to 70%, matching cleaving.) This should make the brand scale more reasonably over the course of the game (especially in the early game), and make it easier to make future balance adjustments as needed. -------------------------------------------------------------------------------- 5a5fe0d677 | Nicholas Feinberg | 2023-03-02 16:35:48 -0800 New Sleepcap tile (Sastreii) 🍄💤 -------------------------------------------------------------------------------- 7c6808c8ce | Nicholas Feinberg | 2023-03-01 16:29:47 -0800 Fix a copy-paste error (nlavsky) -------------------------------------------------------------------------------- 7470db7bff | Nicholas Feinberg | 2023-03-01 16:15:47 -0800 New monster: sleepcap Playing with sleep mechanics a little more, sleepcaps are an early-D monster (native to D:4-8) with a sleepy twist. If they deal damage, they have a 50% chance to KO folks they hit. This is bad if there are more enemies around (since it lets them approach while you sleep), and also lets the sleepcap get in a second hit at you with the 2.5x sleepstab bonus. (Or another monster with much higher damage might get that hit...!) These replace the rather boring necrophages as normal D spawns, since those are basically more boring wights. Main design goal here is variety. Hopefully players like them! :) -------------------------------------------------------------------------------- 1c18f60749 | Kate | 2023-03-01 21:36:22 +0000 Don't crash when banished by a HD 96 monster It could happen to any of us, at any time... -------------------------------------------------------------------------------- 9d452a9ddb | Kate | 2023-03-01 21:36:22 +0000 Display melded items on the % overview There was already handling for this, but it was skipped and just displayed melded slots as temporarily unavailable (hiding the item). -------------------------------------------------------------------------------- d090ac843f | Kate | 2023-03-01 21:36:22 +0000 Adjust Harm display on the % overview screen As with other properties that are rarer/artefact-only, display Harm only if the player has any levels of it. Display it with two pips so that the fact that Harm has exactly two levels is visible to the player, move it and *Rage to the bottom (as the two properties in the second column that aren't just binary), and shift the equipment column over by a character to make a little more room. There are some ideas for a larger rework of the % screen, but in the meantime this should hopefully be an improvement. -------------------------------------------------------------------------------- a523dec638 | Zhang Kai | 2023-02-28 20:27:25 -0800 Update ability.txt Update this file and make some of the sentences smoother. -------------------------------------------------------------------------------- 38cc7db976 | Zhang Kai | 2023-02-28 20:27:12 -0800 Update monsters.txt Update this file and make some of the sentences smoother by the way. -------------------------------------------------------------------------------- 6f4d8801b8 | Zhang Kai | 2023-02-28 20:27:06 -0800 Update mutations.txt Update this file and make some of the sentences smoother by the way. -------------------------------------------------------------------------------- 6e8ec0b4a4 | Zhang Kai | 2023-02-28 20:27:01 -0800 Update spells.txt Update this file and make some of the sentences smoother by the way. -------------------------------------------------------------------------------- dd12edfdc1 | Zhang Kai | 2023-02-28 20:26:53 -0800 Update unrand.txt Update this file and make some of the sentences smoother by the way. -------------------------------------------------------------------------------- aef21d7d98 | Zhang Kai | 2023-02-28 20:26:40 -0800 Update help.txt Update this file and correct some pronouns by the way. -------------------------------------------------------------------------------- 1789cb11db | Rytis Petronis | 2023-02-28 10:22:10 -0800 Allow harm to stack Harm is a pretty silly and niche effect. Currently, multiple sources of Harm don't stack. It's rare that you'll have multiple usable sources of Harm, but on the occasion that you do, it seems like it'd be fun and distinctive to allow the effect to intensify somewhat. The formula used is as follows: - Damage dealt: 130% at one level of Harm, 145% at two levels. - Damage taken: 120% at one level of Harm, 130% at two levels. This is somewhat conservative. One level of Harm already pushes the game a bit toward 'rocket tag', in which one side or another of a fight dies instantly, and we don't want the effect to totally turn the game into a mess. But it's a straightforward formula, and should still be a noticable effect. For UI reasons, this is displayed as a single pip that goes from '.' to '+' to '!' as you accumulate Harm. The impact of this on the game should be incredibly minor compared to the reams of pixels that have been spilled on the subject, but I hope it brings joy to those it does touch. Closes #2646. -------------------------------------------------------------------------------- 841903a796 | advil | 2023-02-28 09:54:20 -0500 fix: don't let line_down move past the end of a menu I think there's some more general issue with how scrolling to the end is handled here, but this fix will do for now. -------------------------------------------------------------------------------- 80adb622cd | advil | 2023-02-28 09:46:15 -0500 fix: set a hover after pgdn with no hover If no hover was set but arrow selection is enabled (the main case for this is simply the i menu), the previous behavior for a while, which was unintended, was that pgdn worked but without setting a hover. This is not necessarily crazy behavior, but if you used an arrow key after this it moved the hover to 0 and scrolled, which is weird. This commit restores the intended behavior; this bug was just an off by one error where get_first_visible skipped the first subhead. -------------------------------------------------------------------------------- f32006e439 | advil | 2023-02-28 09:02:38 -0500 fix: tweak multicolumn scroll behavior If the hover is in a position where the menu can scroll, but the hover itself can't scroll (typically, it's in the right-hand column with a one-item section directly below as the last section), a down/up arrow would not do anything. This leads to the menu feeling kind of stuck -- it makes intuitive sense that the hover doesn't move, but the menu has further items that just don't get revealed. This commit adds a scrolling behavior for this case even with the hover not moving. In my testing it feels fairly natural, much better than the old behavior, but it's a bit ad hoc, so we'll see. -------------------------------------------------------------------------------- fe289a77b0 | advil | 2023-02-27 21:48:46 -0500 fix: show correct scroll % in multicolumn console menus I still only sort of understand this code, so I couldn't say why we manually track m_height distinct from m_region or why m_region is wrong on console (it seems ok on tiles), but this code needs to use the layout-calculated height to get the correct percentage. -------------------------------------------------------------------------------- b9f269a0db | advil | 2023-02-27 21:48:46 -0500 fix: maybe fix an off by one error This mismatched the tiles code it is based on, and though I can't replicate it, does seem like it might produce a crash. Changing it doesn't seem to break anything. -------------------------------------------------------------------------------- b249c134ee | Nicholas Feinberg | 2023-02-27 15:52:22 -0800 Clarify electricity AC piercing effect Rather than saying it 'partially' bypasses AC, be more explicit and say it ignores half AC. -------------------------------------------------------------------------------- f2dbd7b3e3 | Nicholas Feinberg | 2023-02-27 15:05:13 -0800 Make Hepliaklqana knights ogreishly strong Players have noted for years that knights are noticeably more useful than the other two ancestor types. To encourage more variety in ancestor choice, make knights attack at 150% delay, like ogres. This should preserve their core strength (being really tough!) without also making them as powerful offensively, carving out more of a niche for battlemages and hexers. -------------------------------------------------------------------------------- 76fbd3846b | Nicholas Feinberg | 2023-02-27 14:57:57 -0800 Make mulch excitingly damaging (ebonnov) It feels bad when your boomerangs and javelins and such break. However, we do want to have limited ammo for throwing weapons, to make them a limited consumable. We've talked about making them always 'mulch' (break) when thrown and multiplying out the quantities you're given, but this removes any existing tactical limits on held ammo and also has its own feel-bads. Let's try something different. Whenever a player's boomerang, javelin or large rock breaks, it deals extra damage (+33%). This mechanic is inspired by Breath of the Wild, and might make it feel a bit more exciting and fun when your item breaks, rather than just sad. This is a small buff to throwing overall, and a small nerf to javelins, which can no longer hit multiple creatures if they mulch (for messaging reasons). If folks like this, some things we could do further along these lines: - Add bonus effects to darts when they mulch. - Make players' throwing items only mulch on hit (not on miss), and increase mulch rates accordingly. -------------------------------------------------------------------------------- b1fd0ec52f | Nicholas Feinberg | 2023-02-27 09:46:58 -0800 Fix entire the typo (FizzleBang) Unbelievably, this has been around since kill counts were first added in dcf7801daff (2007). -------------------------------------------------------------------------------- 6c64550be9 | advil | 2023-02-27 07:36:42 -0500 fix: don't crash on cycle_hover under some circumstances This sometimes does or doesn't trigger, and it's a bit hard to figure out why, but it seems to be cycle_hover before there's a layout. -------------------------------------------------------------------------------- eb93a13fce | advil | 2023-02-26 23:54:52 -0500 fix: improve some type assumptions `std::min` needs to be able to deduce the same type for its arguments, and this was failing for this line on platforms where size_t is not an unsigned long (aka windows). Instead, cast the size_t down to int and just use ints. -------------------------------------------------------------------------------- 112adfe841 | advil | 2023-02-26 23:33:34 -0500 fix: unbreak plain console builds -------------------------------------------------------------------------------- 01416c3e00 | advil | 2023-02-26 23:25:20 -0500 fix: prevent a display bug in multicolumn multiline tiles menus The `do_layout` call for UIMenu is very side-effect-y. It's also used in the _get_preferred_size calculation for this class. But (for reasons that I don't fully grasp) the ui code will call _get_preferred_size at all sorts of strange times with quite speculative values. This may itself be some sort of bug, I'm not really sure; but the side effects were leading to rendering bugs. In particular, sometimes _get_preferred_size would be called with the max window width, which leads to rendering inventory items on a single line in a dense multi-column layout, and the line positions for this rendering choice would be cached. If `pack_buffers` gets called before a fresh do_layout call with the correct width happens, the menu spacing changes because of the cached values. For unclear reasons, this often happens on a pagedown, and also in various scrolling circumstances. This commit simply attempts to limit the side effects that matter during _get_preferred_size calls, rather than looking too deeply into the `ui` whys. -------------------------------------------------------------------------------- f0e381c690 | advil | 2023-02-26 23:25:20 -0500 feat: a grid layout mode for menus The two-column mode is really designed as a fallback, prioritizing top-bottom layout with one column unless there's overflow. This commit adds a different multi-column layout that fills left-right as much as possible (up to some limits), which turned out to be very easy to do once two-column mode was generalized. This mode is aimed at PromptMenu, specifically the travel prompt, though it might eventually have more uses. -------------------------------------------------------------------------------- 11f347f362 | advil | 2023-02-26 23:25:20 -0500 feat: a console multicolumn menu implementation This commit generalizes the implementation of MF_USE_TWO_COLUMNS for menus beyond just local tiles; two-column menus on console now work as well. This is kind of a basic implementation in some ways, and e.g. it will still use multiple columns if item names exceed the column width (for local tiles, it will actually wrap such item names). But, it works fairly well, and this is mainly an issue for artefacts whose name can be viewed by looking at the item. Subsidiary changes / notes: * the relevant option is given a more general name (with the old one as an alias) * the relevant option is explicitly applied only to item menus. The main case this affects is large search results in the help lookup menu, which in my testing looked pretty good as multi-column results. * no effect on webtiles -------------------------------------------------------------------------------- ab95473dd1 | advil | 2023-02-26 23:25:20 -0500 fix: improve hover behavior for local tiles multicolumn This was a bit of a mess, I think essentially because I never dealt with this when doing the initial hover implementation. Before this commit, the up/down keys cycled hover (in L-R and the top-bottom order), and the left/right keys did nothing (or changed mode if that was available). This commit implements sensible grid-based behavior for all four directions, with left/right still cycling modes for single-column menus only. (All of these menus have other keys for mode cycling.) -------------------------------------------------------------------------------- 1094a8e747 | advil | 2023-02-26 23:25:20 -0500 refactor: convert the travel prompt to a menu This is a somewhat involved refactor that should mostly have no impact on the use of this menu in regular play. Previously, the travel prompt simply printed a bunch of stuff in the message pane and prompted. In most normal cases this is fine, but it was not robust to overflowing the message pane, resulting in either a more, or lines that were simply not invisible. (The case that reliably hits this is wizmode &~, which is super annoying unless you have the branch hotkeys memorized, which I really, realy don't.) This commit implements a new Menu subclass that can format its menu entries to be shown in a message pane prompt, and run a regular input loop in the message pane. If the menu fits, it does this, otherwise, it uses a menu popup. The travel prompt now uses this feature, which also nicely separates formatting from menu logic. It's quite a bit more code, though. There's only one intended behavior change to this menu, which is to support tab as a "last destination" hotkey -- enter won't work when this menu is a popup. Otherwise, everything should behave pretty much the same as before when this menu is in prompt mode. The wizmode command is still a bit annoying because it doesn't fit every branch on one screen still in 80x24 console, but I have a planned future commit to address this. (In the longer run, a planned use case for this sort of approach is to add options to make some message pane input more mouse/touchpad friendly.) -------------------------------------------------------------------------------- c65c45c1d4 | Nicholas Feinberg | 2023-02-26 16:14:42 -0800 Move the Vaults rune lock inside (hellmonk) Long ago, Vaults got a 'rune lock' - the requirement that players find at least one of the fabled Runes of Zot before entering. This was added so that players would be encouraged to fight at least one of the final challenges of the Lair branches (Snake, Spider etc) at a time when they were still challenging. Before this lock was added, wise players fought those challenges much later, after getting so much XP and loot from Vaults etc that they were trivial. This was a big improvement! But there was one downside - lunatic players who wanted to get the silver or, god forbid, golden rune before getting any other runes (or even entering the Lair, perhaps!) were blocked from achieving their dreams. Tragic! So, this commit lets them do that. You no longer need a rune to enter the Vaults, but you do need a rune to leave. Wise play probably remains unchanged, There is a fairly strongly worded warning for players trying to enter the Vaults without a rune, with a requirement to type 'yes' to enter (ala stepping on a Zot trap, entering wizmode, etc). So I'm hoping this doesn't affect the experience for newer players. If it does, I'll rethink this! -------------------------------------------------------------------------------- b642276a43 | Nicholas Feinberg | 2023-02-26 15:34:32 -0800 Remove logic for the Ziggurat rune lock Obsolete since 99093fa9e1422ab71f3389fe3be6d9d46b52971a (2021). -------------------------------------------------------------------------------- d57b28dfd0 | Nicholas Feinberg | 2023-02-26 13:28:55 -0800 Fix? a "faith bug? (elliptic, acrobat) The game didn't prompt when you switched from an amulet directly to another amulet, because faith prompts only triggered on OPER_REMOVE/OPER_PUTON and we were checking OPER_TAKEOFF, a totally different thing. I don't understand how this code ever worked, but it seems to work now, in this case. Hopefully this doesn't break something else. -------------------------------------------------------------------------------- f0a3970a7c | Nicholas Feinberg | 2023-02-26 13:28:55 -0800 Tweak Labrys scaling (elliptic) To make it more impactful in normal conditions, change it from giving +1 enchant per visible TOUGH enemy and +3 per NASTY enemy to instead giving 3 times that amount, capping at a more reasonable +16 (matching the obsidian axe) rather than +27. Lower the base enchant by 1 so that everything lines up nicely. -------------------------------------------------------------------------------- 95585c18e7 | Kate | 2023-02-26 19:53:25 +0000 Fix a crash when entering some troves as a Felid Instead of trying to acquire weapons in some cases (and crashing), fall back to creating a random item if nothing useful can be found. -------------------------------------------------------------------------------- a136d5a445 | Kate | 2023-02-26 19:50:30 +0000 Convert the staff of Dispater into an orb Of the Hell/Pan lord unrands, the staff of Dispater is one where there's at least a small chance that a character strong enough to acquire it might still be able to make use of it, with evokable damnation being fairly powerful. However, using it means swapping weapons repeatedly to activate the ability. Convert it to an orb instead, and give it *Corrode and some bonus AC for some minor added flavour (such that the AC compensates for when corrosion kicks in, but with some hellish flavour and a downside along the lines of regular orbs). No tile yet! -------------------------------------------------------------------------------- aadfcccb73 | Kate | 2023-02-26 19:39:48 +0000 Let monsters get bonus AC/EV from artefacts Specifically from the AC/EV ARTPs (as opposed to from enchantment), which were previously ignored. They deserve to get to enjoy fun randarts too. -------------------------------------------------------------------------------- 093205a2af | advil | 2023-02-26 11:54:34 -0500 fix: (quick fix) disable a bad android build line This no doubt breaks the android build to remove, but it *really really really* should not be attempting to rm -f -r this directory! (which in a server build context, might be /var/lib/dgamelaunch or something -- luckily CDO has permissions set so this didn't work, hopefully true of any other servers configured like this). I'm not sure what the best fix for someone who is actually working on the android build process might be. -------------------------------------------------------------------------------- 6e0788376e | Kate | 2023-02-24 23:27:54 +0000 Don't let Wanderers start with excluded misc items No condenser vanes and tremorstones in the same game for lucky wanderers. -------------------------------------------------------------------------------- d7a24ef9e4 | Kate | 2023-02-24 22:48:13 +0000 Update Brain Feed description (CarefulOdds) -------------------------------------------------------------------------------- 038c08e353 | Kate | 2023-02-24 22:42:04 +0000 Don't increase charges of tremorstones/condenser vanes XP evokers remain very strong items for every character, and it's not necessary to compensate for losing access to one type. -------------------------------------------------------------------------------- 884ff3d523 | sdynet | 2023-02-24 22:42:04 +0000 Connect item sets: {vane and {Tremorstones Compared to other categories, Misc has many items with similar roles. Therefore, I think it is a suitable target to apply item sets. However, since this is taking one tactical means away from the player, I'm going to increase the number of charge by one(vane) and two(tremor). [Committer's note: adjusted vaults to still place thematically appropriate loot. Closes #2961. -kate] -------------------------------------------------------------------------------- 7bc24448d7 | Kate | 2023-02-24 22:41:59 +0000 Remove an obsolete walljump check (nlavsky) -------------------------------------------------------------------------------- 13d48797d6 | robertxgray | 2023-02-24 08:36:25 -0500 Fix doc files wider than 80 characters This may seem like a non-issue nowadays, but it is if you are playing on a smartphone. -------------------------------------------------------------------------------- b92711bcdf | Nicholas Feinberg | 2023-02-22 12:39:00 -0800 Apply acidic bite's acid damage pre-AC Matching its behavior before 7a729d47d399. It did almost nothing after that commit, since it had to deal post-AC damage to trigger the acid, but only did 1d1 acid base. Possible that this effect shouldn't require dealing post-AC damage at all, but that'd be inconsistent with other auxes. -------------------------------------------------------------------------------- d05cb21e94 | Nicholas Feinberg | 2023-02-22 12:22:30 -0800 Remove unused acid_strength param from splash_with_acid RIP death by slime walls ;_; -------------------------------------------------------------------------------- 7c544603b3 | Nikolai Lavsky | 2023-02-20 16:49:24 +0300 fix: don't allow cursing/uncursing wrong items Although `prompt_invent_item()` supports filtering items, it doesn't check if the selected item is appropriate. Curse Item and Shatter the Chains abilities don't have such checks either, so it was possible to use them on wrong items. The player could apply curses to non-equipped inventory items using Curse Item. Similarly, it was possible to press `*` and select a totally inappropriate item, e.g. a potion, when destroying a curse, which crashed the game. This commit fixes these bugs by ensuring that the item returned by `prompt_invent_item()` is indeed cursable and equipped when using Curse Item, or that it's a worn cursed item when using Shatter the Chains. Note that unlike `item_is_cursable(item)`, `item_is_selected(item, OSEL_CURSABLE)` also checks that the item is equipped. -------------------------------------------------------------------------------- 109b55a442 | gammafunk | 2023-02-19 22:02:39 -0600 feat: Some adjustments to sharkified vaults For beargit_carnivore_pack, use KMONS, so we can specify alternative for uniques that fail to place. Since komodos and skysharks don't have bands, use multiple glyphs to allow placing multiple of these. Place any choice from (on-average) two komodos, 1.5 skysharks, Grum, or Snorg. Also clean up syntax. Add skysharks to minmay_lair_end_frog_pond such that 1 of the on-average 3 tyrant leeches that place on that map will be a skyshark instead. Remove the patrolling tag that was previously placed just on tyrant leeches. The map is pretty big and dense with monsters, so having just having about two monsters stay close to the center won't do much. Closes #2996. -------------------------------------------------------------------------------- e9441fdd6e | kippig | 2023-02-19 22:02:29 -0600 Add some skysharks to Lair vaults Committer's Note: From PR #2996. This commit adds beargit_carnivore_pack, a carnivore-themed vault that places skysharks and other thematic monsters and uniques. I've cleaned up parts of a failed rebase, removing merge lines and fixing some syntax problems. I've withheld the change to minmay_lair_end_frog_pond, since for balance reasons we'll want to mix skysharks into that vault a bit more conservatively. I've kept the author's addition of skysharks to gammafunk_lair_ancient_temple as-is, which is done in the logical way. A subsequent commit will fix up aspects of beargit_carnivore_pack and add skysharks to minmay_lair_end_frog_pond. -------------------------------------------------------------------------------- 632d372b77 | Nikolai Lavsky | 2023-02-20 00:22:38 +0300 fix: allow resting near slime walls Since slime walls no longer damage the player, there's no reason to prevent resting near them. After this change, autotravel and Shift-movement still try to avoid slime walls, though. -------------------------------------------------------------------------------- 6ec518bcff | Nicholas Feinberg | 2023-02-19 11:49:37 -0800 Fix slime wall messaging (Undo) Don't message when you step near a wall if you're immune to slime walls (probably because you worship Jiyva). Also, redraw your AC and weapon when you worship or abandon J, just in case you were next to a wall. -------------------------------------------------------------------------------- 282d41900d | Nicholas Feinberg | 2023-02-19 11:25:21 -0800 Allow reviving felids & shafting players near slime walls No longer instantly lethal. -------------------------------------------------------------------------------- 9b1cab2718 | Nicholas Feinberg | 2023-02-19 11:21:09 -0800 Virtually buff longbows (acrobat) Continuing from 2f8d10eca674, increase longbow base damage by 1 and decrease base delay by 1. This makes a +0 longbow better than a +0 arbalest against a 0 AC enemy from sklvl 14 onward, and better than a 3xbow between sklvls 16-20. That is what we would call a 'niche'. -------------------------------------------------------------------------------- 160f7cfddd | Aliscans | 2023-02-18 23:01:40 -0800 Warn before launching inappropriate martial attacks Previously, the game asked for confirmation before attacking with (e.g.) a weapon inscribed with !a. It also did this before rampaging into a monster, but not for Wu Jian's "martial attacks". It now carries out the same checks before Wu Jian's lunge and whirlwind attacks, and does it before a wall jump if this attacks a monster. Closes #2962. -------------------------------------------------------------------------------- 2f8d10eca6 | Nicholas Feinberg | 2023-02-18 22:51:09 -0800 Remove the special case for longbow mindelay As noted in #2981, it's not very impactful. Let's avoid adding special cases for the sake of special cases. -------------------------------------------------------------------------------- 3287d911ca | Nicholas Feinberg | 2023-02-18 22:43:47 -0800 Fix an unintended SDL2 change -------------------------------------------------------------------------------- 694778e409 | Sergio Thompson | 2023-02-18 22:43:04 -0800 Add a new welcome message [Committer's note: cut three out of four suggested messages and rewrote the last.] Closes #2997. -------------------------------------------------------------------------------- 2b115b064e | Brian Power | 2023-02-18 22:21:01 -0800 Make yellow draconian look distinct from green draconian for people who are red-green colour-blind -------------------------------------------------------------------------------- 5ead6e5f92 | Antal Spector-Zabusky | 2023-02-18 22:20:20 -0800 Remove the "You had/have # spell level(s) left" line from Dj morgues Similarly, the "You couldn't/cannot memorise any spells" line. Dj don't keep track of spell levels or memorise spells. -------------------------------------------------------------------------------- ab5ac29ea4 | advil | 2023-02-18 14:46:18 -0500 build: pin a gradle version Method from official docs: https://docs.gradle.org/current/userguide/github-actions.html (Though, we aren't using gradlew..) -------------------------------------------------------------------------------- bee577a6c3 | Nicholas Feinberg | 2023-02-18 11:31:42 -0800 Fix At message for potion stacks (starpolemic) Don't claim that you drink all 10 potions of heal wounds, etc. -------------------------------------------------------------------------------- 6ffb7e90e5 | Nicholas Feinberg | 2023-02-18 11:31:42 -0800 Tweak sksysharks Decrease action speed from 15 to 10, so they can't become mighted and then berserk in one turn. Decrease move delay to 60% (from 100%) and add another tail slap to compensate. Increase attack damage by 20% and increase HP by 60% to make them more threatening. Shift defenses away from EV and toward AC. -------------------------------------------------------------------------------- 07707717f1 | Kate | 2023-02-18 19:03:07 +0000 Fix syntax for a trove veto -------------------------------------------------------------------------------- a761b1b143 | Kyle Rawlins | 2023-02-18 08:01:38 -0500 fix: update contribs for mac tiles capslock handling This is aimed to prevent MacOS builds (post catalina) from asking for input monitoring permission; it's unnecessarily alarming and isn't needed. Plus, as far as I can tell the permissions request resulted from a misimplementation in SDL2 of capslock handling in the first place. -------------------------------------------------------------------------------- e64f9170bb | Kyle Rawlins | 2023-02-17 10:01:33 -0500 fix: resolve a couple more warnings The outer-menu.cc is reported in #2891; I don't see it locally but it seems good to make this code a bit safer. The semicolon is just a pedantic warning. -------------------------------------------------------------------------------- eb7024b798 | Kyle Rawlins | 2023-02-17 09:30:59 -0500 fix: prevent some `random_var` warnings ...on current MacOS at least. As far as I can tell it should be fine to have all of these defaulted. -------------------------------------------------------------------------------- 1c7e38fe9f | Kyle Rawlins | 2023-02-17 09:25:53 -0500 fix: remove sprintf `sprintf` is marked as deprecated and generates many warnings on current MacOS builds. And indeed it does seem better to use at least snprintf in most cases. (At various points I instead used make_stringf for more idiomatic crawlcode, though.) -------------------------------------------------------------------------------- 7971cf19c3 | Nikolai Lavsky | 2023-02-17 01:16:44 +0300 fix: disallow unequipping cursed weapons It was possible to unequip and destroy a cursed weapon by simply switching to unarmed via `e-`. Similarly, this could be done in the unified unequip menu by pressing `c` and the weapon's letter. Compared to Shatter the Chains, shattering an item by unequipping it took 3 auts instead of 10, and it could be done even under silence. Also, the player could unequip the obsidian axe while mesmerized by an enemy. -------------------------------------------------------------------------------- 2ef04afb54 | Kate | 2023-02-14 15:50:30 +0000 Don't let the Storm card try to push dead monsters Fixes a crash when a collision kills something and then the card effect continues to try and push that thing. -------------------------------------------------------------------------------- a9a30cbeda | Kate | 2023-02-12 23:13:12 +0000 Remove an unused constant (PleasingFungus) -------------------------------------------------------------------------------- 08fbeb92c1 | Kate | 2023-02-12 22:57:29 +0000 Adjust channeling backfire effects To hopefully make orbs of energy a little more usable at lower skill levels, give a small flat bonus to resisting backfire effects, and don't backfire when casting a spell that's too high level to ever successfully channel (just bail out early instead). Additionally, change the actual effect of backfiring to always apply -Cast for a few turns, with a chance of also applying 1-5 Int drain (instead of a coinflip between confusion and Int drain). -------------------------------------------------------------------------------- ec953de308 | Kate | 2023-02-12 22:57:29 +0000 Give Arcjolt full LOS range Instead of letting it chain to anything within range 5, allow it to keep chaining to anything in LOS. Primarily changed just to simplify the spell, since having a full chain of monsters all the way to the edge of LOS is fairly rare. -------------------------------------------------------------------------------- 4aa5aa1482 | advil | 2023-02-12 15:44:27 -0500 fix: stop describing things as manuals of fighting (nlavsky) Also, try to clarify this (somewhat odd) code a bit more. -------------------------------------------------------------------------------- bab4234b37 | Nikolai Lavsky | 2023-02-12 22:16:32 +0300 fix: display the malmutated status icon in webtiles This got missed in b84343df53. -------------------------------------------------------------------------------- 5528072125 | Nicholas Feinberg | 2023-02-11 16:56:49 -0800 Remove support for removed scrolls Don't see any need to keep around special handling for ?recharge and the various ?curse scrolls. -------------------------------------------------------------------------------- 536dbf11e5 | Nicholas Feinberg | 2023-02-11 16:50:29 -0800 Fix: properly handle unid'd useless scrolls If the 'ident' param is passed, these should be considered useless. I don't think this ever matters at present. -------------------------------------------------------------------------------- b1c4c7f3ac | Nicholas Feinberg | 2023-02-11 16:44:44 -0800 Fix: don't give !magic to Djinni (BlurryCent) There's probably more bugs lurking along these lines. -------------------------------------------------------------------------------- bc771150d3 | Nicholas Feinberg | 2023-02-11 16:31:23 -0800 Tweak bloodzerk desc (dilly) Phrase it as 'if blood is drawn', not just 'if damage is dealt'. -------------------------------------------------------------------------------- 2cf8fcd27f | Nicholas Feinberg | 2023-02-11 16:27:55 -0800 Make Chain Lightning ignore demonic guardians (Zil) Oversight - I think I'd initially believed that god_protects() covered that case. Probably the set of things that god_protects() covers and should be the same as the set that demonic guardians are immune to. -------------------------------------------------------------------------------- afbfe9f00c | Nicholas Feinberg | 2023-02-11 16:24:46 -0800 Tweak frenzy/berserk behavior Remove some unintended overlap between checks. Let monsters with no attacks become frenzied (it's still great to neutralize em!), and let special allies (i.e. demonic guardians) go berserk. -------------------------------------------------------------------------------- b84343df53 | Nicholas Feinberg | 2023-02-11 16:15:54 -0800 New tiles (Sastreii) Skyshark, Storm Queen's Shield, and malmutated. -------------------------------------------------------------------------------- 3161bf10a1 | advil | 2023-02-11 13:30:58 -0500 fix: exclude removed items from the glyph to name cache This prevents e.g. a manual of slings from showing up under glyph lookup (and I assume many other items). Annoyingly, manual removedness status needs to check `plus`, so the usual removed item code won't work for it. -------------------------------------------------------------------------------- 9a087e29e1 | advil | 2023-02-11 13:18:33 -0500 fix: support BOOK_MANUAL lookup by exact name This fixes only a tiny fraction of weirdness related to manuals in the item help lookup menu, but it prevents the actual error popups. Remaining weird things (that I know about): * "Manual" shows up in the glyph menu, with a manual of fighting description. * All manuals show up in the glyph menu even though they have nearly identical descriptions. (Possibly only one should show up, with a generic description?) * When searching for "manual" normally, only the "Manual" shows up, and it has the manual of fighting description. * Removed manuals show up in the glyph menu (this one I know how to fix, so a following commit will take care of it) -------------------------------------------------------------------------------- 1a60562a26 | advil | 2023-02-11 12:24:18 -0500 fix: disable : and # in the help menu pre-game The previous behavior was that these would just exit out of the help menu. Now they are explicitly marked as disabled, and do nothing, if there is no game going. -------------------------------------------------------------------------------- c4145cabe6 | advil | 2023-02-11 11:57:03 -0500 refactor: convert various errors to ui::error For `die` calls: arguably, `die` should only be used for invalid game state where continuing isn't safe, or for detecting programming error (cases that should be found during debug). I've converted a few (not very many) `die` calls to simply do an error popup. There are still a few more ui cases that are arguable. I did a pass through all `die` calls but it may not have been exhaustive. For MSGCH_ERROR logging: this new ui::error call should be used in any case where the error might happen during a popup. I did a pass and found a bunch of these, but I still may have missed some. There also might be a bunch of cases where popups or menus use a different means to indicate an error state, that could be converted to this call. -------------------------------------------------------------------------------- 8e7229f42b | advil | 2023-02-11 11:57:03 -0500 refactor: generalize some popup code Previously there was (at least as far as I know) not really any single standard way to throw up a popup with a short (or long) message in it, leading to a bunch of ad hoc `ui::Popup` + `ui::Text` + CRT mode rendering calls that were all similar, but not quite identical, and also not very general. This replaces these with a single code path: * Use the formatted_scroller class so that we automatically get a bunch of features that just plain `ui::Text` doesn't have. Also, if someone wants a quick way to show longer text, this easily provides that. (There's some code that could be refactored to use this capability, but I haven't done that. * Wrap class instantiation in some convenience calls in the ui namespace. * Standardize various aspects of this across calls As part of this I fixed a bunch of formatted_scroller bugs: * webtiles spacing fixes * implement title in webtiles (this was just missing) * if easy_exit is set, allow clicking out of scroller popups * refactor so that a scroller can correctly handle subclassing key overrides, regular scroller key handling, and easy exit all at the same time. (Slightly complicates the api from the standard process_key). -------------------------------------------------------------------------------- 5a9884bb7c | Nicholas Feinberg | 2023-02-09 19:24:35 -0800 Refactor maybe_bloodify_square -------------------------------------------------------------------------------- 0b89b74ca8 | Nicholas Feinberg | 2023-02-09 19:24:33 -0800 New monster: skyshark Slicing through the Dungeon's air - oh, what graceful beasts! What a terrifying sight...! Skysharks are a speed-15 flying monster that becomes more dangerous once it tastes blood, first getting Might (+50% damage) and then going Berserk. Perhaps wise to kill them before that happens? They're currently intended as a high-end threat for Lair and a low-end Shoals monster, but they might migrate to the Desert once that lands. So to speak. Canonically, this species is related to, but distinct from, the skysharks that the Slick Slippers are made from. -------------------------------------------------------------------------------- c2c871d025 | Nicholas Feinberg | 2023-02-09 14:12:06 -0800 Remove unused arcjolt power -------------------------------------------------------------------------------- a6a79fd877 | Nicholas Feinberg | 2023-02-08 22:52:22 -0800 Fix: cap doom howl power (acrobat) Oops! -------------------------------------------------------------------------------- c2185399d4 | Kate | 2023-02-09 00:22:35 +0000 Fix Arcjolt range handling (#2875) Don't consider Arcjolt to have range 5 - like Static Discharge, it has range 1, requiring a target to be adjacent (but then can continue onward and hit further targets). The limit on how far it can travel is still shown clearly in the targeter. Fixes Spellforged Servitors with Arcjolt wasting turns doing nothing (thinking they're in range to cast it but then being unable to). Closes #2875. -------------------------------------------------------------------------------- 0b50240ab4 | Neil Moore | 2023-02-08 17:25:16 -0500 Add a sphinx quote. Somehow we have neglected to add any Yeats quotes in all these years, only one secondhand reference. This major omission is now now corrected. [skip ci] -------------------------------------------------------------------------------- f493690b3a | Nicholas Feinberg | 2023-02-08 12:45:13 -0800 Fix apportation + mimics (dilly, acrobat) Broken in 86a8295270962016579da244f3382e678c83a075. -------------------------------------------------------------------------------- bd6742b3f2 | Nicholas Feinberg | 2023-02-08 08:38:39 -0800 Add a message when stepping near slime walls (dilly) Beware the corrosion cost! -------------------------------------------------------------------------------- ab721bf1f9 | Nicholas Feinberg | 2023-02-08 08:32:21 -0800 Ban usk piety for nameless horrors (dilly) Don't encourage ridiculous miscast tech. -------------------------------------------------------------------------------- b7baff67ae | Nicholas Feinberg | 2023-02-08 08:21:43 -0800 Add a runrest stop for out-of-LOS shots (dilly) When something's shooting at your pal from outside your LOS, stop resting. -------------------------------------------------------------------------------- 8343f060c3 | Nicholas Feinberg | 2023-02-08 08:12:43 -0800 Add a message for monsters recalled away When a monster is recalled to a location outside your sight (by a convoker's Word of Recall spell), print a message so that they don't just vanish without explanation. -------------------------------------------------------------------------------- 7f663e2a95 | Nicholas Feinberg | 2023-02-08 08:05:25 -0800 Halve the chance of Irradiate malmutation To focus a bit more on the exciting parts of the spell (damaging enemies & contaminating the player), malmutate victims only on a coinflip chance. We could play with these numbers further as appropriate - for example, by making the chance depend on power and/or victim HD, or just by adjusting the flat rate. -------------------------------------------------------------------------------- e6a52f7cba | Nicholas Feinberg | 2023-02-07 17:46:49 -0800 Remove endotherms (꧁🌺𝓱𝓮𝓪𝓭𝓱𝓸𝓷𝓬𝓱𝓴𝓻𝓸𝔀🌺꧂) The text was both superfluous and incorrect. -------------------------------------------------------------------------------- 69c6e2d096 | Nicholas Feinberg | 2023-02-07 16:39:06 -0800 Fix a Storm Queen comment (acrobat) -------------------------------------------------------------------------------- 639cfe8b63 | Nicholas Feinberg | 2023-02-07 15:56:30 -0800 New unrand: Storm Queen's Shield The Disc of Storms is back, in completely unrelated form! Alternatively: did you ever want to be a shock serpent? The Storm Queen's Shield is a +5 kite shield of flight and rElec that has a chance to retaliate on block, lashing out with 3d7 of half-AC-checking electric damage. This effect triggers even up to range 3 (as with shock serpents). It's a bit like reflection, but it works on melee blocks (unlike reflection). Not sure this ended up being extremely exciting, but I did implement it, so let's see! -------------------------------------------------------------------------------- 0bc11aca90 | Nicholas Feinberg | 2023-02-07 15:56:30 -0800 Pass the attacker to shield_block_succeeded For the Storm Queen's Shield. -------------------------------------------------------------------------------- 9c67137058 | Nicholas Feinberg | 2023-02-07 15:56:23 -0800 Refactor shock serpent discharge To support other discharge fineffs. -------------------------------------------------------------------------------- bfdf073431 | advil | 2023-02-04 16:13:19 -0500 feat: try `w` for map mode add waypoint This key is currently unbound, and ctrl-w is blocked by browsers. So let's try just using the simplest possible binding for this. It may be prone to confusion with miskeys, in which case it might make sense to swap `w` and `W`? Resolves #2984 -------------------------------------------------------------------------------- 74f6264c45 | advil | 2023-02-04 14:46:10 -0500 fix: better handle a webtiles chroot error case A common webserver setup issue (on a new setup, or an upgrade from an old version of tornado) is that modern webtiles under a chroot requires a copy of the python library in the chroot. This is because any `import` after the chroot call is still looking for the python library at the same path as before, but paths have changed; older tornado (and a lot of older python code in general) simply didn't use locally scoped import. However, it is good python practice in a lot of cases, and are now used both in modern tornado and various parts of the webtiles server. This usually seems to fail first in tornado code (though I think that's not the only possibility) -- so this commit adds an explicit check for this and attempts to provide a more informative error message along with the exception. By its nature this is a bit hard to directly test locally... -------------------------------------------------------------------------------- 59b9271927 | advil | 2023-02-04 11:09:54 -0500 docs: update webtiles changelog This should include everything done so far in 0.30; there was a fair amount missing, so the commit accordingly does a bunch of reorganization to existing 0.30 notes. -------------------------------------------------------------------------------- 6493da8e45 | advil | 2023-02-04 09:58:06 -0500 fix: fully disallow python 2, tweak deprecation handling Python 2.7 was deprecated with the 0.29.0 release in Aug, and now crashes on start because of the use of a py33 module (py33 was released in 2012). It would probably be possible, in principle, to get py27 working again, but nearly all servers have updated, and I'm pretty tired of extreme backcompat hacks. This commit prevents the server from starting either with an old version of python, or with an old version of Tornado. In the future some backcompat commit can probably also be cleaned up, since I'm not sure this affects more than ~1 server. -------------------------------------------------------------------------------- ea05faddec | Nicholas Feinberg | 2023-02-03 13:59:18 -0800 Mention CBL checking half AC (acrobat) -------------------------------------------------------------------------------- 116ff8c4af | Nikolai Lavsky | 2023-02-02 18:47:39 +0300 fix: expire fire vulnerability when returning to a level It was possible to burn away monster's fire resistance using Scorch, leave the monster on another floor, return more than a hundred turns later, and the monster would still be vulnerable to fire. -------------------------------------------------------------------------------- f23d94013f | spiros | 2023-01-31 11:51:41 -0800 added leading space to text message on uselessness -------------------------------------------------------------------------------- 880c04f40e | Zhang Kai | 2023-01-31 11:51:16 -0800 Update tutorial.txt -------------------------------------------------------------------------------- b847cfa5cd | Zhang Kai | 2023-01-31 11:51:10 -0800 Update unrand.txt -------------------------------------------------------------------------------- dfc2f88e47 | Zhang Kai | 2023-01-31 11:51:03 -0800 Update spells.txt -------------------------------------------------------------------------------- 40cfa726b3 | Zhang Kai | 2023-01-31 11:50:57 -0800 Update monsters.txt -------------------------------------------------------------------------------- c44e5b395e | Zhang Kai | 2023-01-31 11:50:49 -0800 Update items.txt -------------------------------------------------------------------------------- c37f88b80d | Zhang Kai | 2023-01-31 11:50:43 -0800 Update features.txt -------------------------------------------------------------------------------- 43c3b1f7ca | Zhang Kai | 2023-01-31 11:50:34 -0800 Update clouds.txt -------------------------------------------------------------------------------- a00cedfdfe | Zhang Kai | 2023-01-31 11:50:22 -0800 Update ability.txt -------------------------------------------------------------------------------- c68057be0a | advil | 2023-01-29 10:17:08 -0500 test: add an arena test The arena call from #2955 is fairly useful because it exercises items in the arena (which none of the other tests do), and it's very quick to run. This commit adds it as a new stress test. -------------------------------------------------------------------------------- b6d103fe33 | advil | 2023-01-29 10:02:55 -0500 fix: add some arena item checks These functions all assume a reasonable value for `you`, which can't be assumed in the arena. These three checks have some overlap for the reported crash, but it seems good to cover a bunch of bases here since I think multiple code paths code apply, and some of the checks in this code that don't crash may still have undefined behavior. Resolves #2955 -------------------------------------------------------------------------------- d89dcf765f | Nicholas Feinberg | 2023-01-28 13:07:43 -0800 Fix the build -------------------------------------------------------------------------------- 9870b12c7c | Nicholas Feinberg | 2023-01-28 12:53:52 -0800 Wake monsters when they're smitten (Ge0ff) By Smiting, airstrike, waterstrike, resonance strike, throw ally, freeze... -------------------------------------------------------------------------------- 1587923927 | gammafunk | 2023-01-27 23:16:37 -0600 feat: Support up to 100 waypoints For establishing a user coordinate system on levels on the clua side, we need to be able to create at least one waypoint per permanent level. Crawl has almost 90 such levels, so 100 waypoints will cover these plus the extra waypoint needed for temporary levels such as portals, Pan, and the Abyss. This does add 90 waypoint slots to the save file and to travel memory, but at a cost of 9 bytes per waypoint (one short for a level ID and two ints for a coordinate), this doesn't matter. This commit just extends the allowed number of waypoints without allowing the in-game UI to add waypoints past the 10th. The additional waypoints can be created via clua's `travel.set_waypoint()` function and additionally deleted in the UI along with all other waypoints by using the "*" option. -------------------------------------------------------------------------------- c1506a1cf0 | gammafunk | 2023-01-27 18:49:19 -0600 feat: Remove an autoexplore trap (Lici, ebonnov) This vault places two `8`s and two `9`s, and it does so in a way that's likely to lead to autoexploring somewhat close to these monsters, due to the corner at the entrance. Add a couple glass tiles to reveal the innermost monsters (and loot) further before said corners are taken. I considered other adjustments, but went with ebonnov's suggestion, since it's as minimal as we're likely to get, and it's good to be very minimal when adjusting for this sort of thing. -------------------------------------------------------------------------------- 3e6e8c874d | Nicholas Feinberg | 2023-01-26 22:39:30 -0800 Make slippers suppress net warnings (ragingrage) Since you're immune to em. Also do some refactoring. -------------------------------------------------------------------------------- a6a225cb13 | Kate | 2023-01-26 17:03:08 +0000 Redraw evasion when flying over water as Merfolk (#2878) Closes #2878. -------------------------------------------------------------------------------- 9761204cdd | Kate | 2023-01-26 15:50:04 +0000 Update invisibility status description (#2957) Invisibility no longer causes contamination over time (just some initial contamination when activating it via evoking). Closes #2957. -------------------------------------------------------------------------------- cc4359ea44 | Nicholas Feinberg | 2023-01-25 13:01:40 -0800 Fix Hailstorm animation speed (various) Don't redraw for every single cell of the explosion. -------------------------------------------------------------------------------- eaa24f58ff | Kate | 2023-01-24 20:51:53 +0000 Fix Green Draconian breath not piercing enemies (#2832) Broken by the zap noise changes in d80880ac - using Mephitic Cloud as its origin spell caused it to be treated like a cloud spell that would always stop on hitting a target. Closes #2832. -------------------------------------------------------------------------------- 8ad61386b6 | Kate | 2023-01-24 20:06:34 +0000 Refactor messaging on escaping engulf (#2859) Don't print a message about slipping free from engulf if still adjacent to the monster engulfing you. Closes #2859. -------------------------------------------------------------------------------- 8ab98d0bbf | Kate | 2023-01-24 17:22:10 +0000 Allow equipping finger amulet rings in batform (#2835) Closes #2835. -------------------------------------------------------------------------------- db4ae3ece1 | Kate | 2023-01-22 22:14:19 +0000 Prompt when consumables would reset Victory bonus -------------------------------------------------------------------------------- 8d745af8aa | Kate | 2023-01-22 21:36:45 +0000 Handle wizmode stat changes correctly Properly checks for stat 0 when changing stats in wizmode. -------------------------------------------------------------------------------- 87fffd12f7 | Kate | 2023-01-22 21:36:45 +0000 Generalise unrand death effects Let monster death effects work on unrands than just the toga (although the toga is the only unrand with a death effect, since melee weapons can use melee_effects). -------------------------------------------------------------------------------- dc2f814f26 | Implojin | 2023-01-22 21:36:45 +0000 New unrand: toga "Victory" This is an early unrand with a variable bonus based on kills: As the player kills threatening monsters, this robe gradually gains AC, Int and Slay, capping out at +7 each. Beware -- Quaffing potions or reading scrolls in combat (with monsters visible) resets these bonuses to zero! [Committer's note: squashed commits and updated commit message. Fixes some logic for when to apply the bonuses, and adjusts messages/description. Closes #2920. -kate] -------------------------------------------------------------------------------- f4ac18a38d | Neil Moore | 2023-01-21 19:02:53 -0500 And yet another quote. Fine, I like prog, okay? Hope you're happy. [skip ci] -------------------------------------------------------------------------------- a8c43d9988 | Neil Moore | 2023-01-21 18:49:12 -0500 Add another pop music quote. I'm incorrigible, so please don't incorrige me. [skip ci] -------------------------------------------------------------------------------- cdc1b43e22 | Kate | 2023-01-21 21:59:13 +0000 Give Dispater an extra adjective To match the similarly-styled descriptions of Asmodeus and Ereshkigal. -------------------------------------------------------------------------------- bb11188b7b | Kate | 2023-01-21 21:59:13 +0000 Fix a typo in coding_conventions -------------------------------------------------------------------------------- 5c07829312 | Kate | 2023-01-21 21:59:13 +0000 Finish removing Flame Tongue It was used for Vehumet wrath and nothing else. -------------------------------------------------------------------------------- e3182b2870 | hellmonk | 2023-01-21 21:59:13 +0000 feat: Rework slime walls Reworks slime walls to apply 1 level of corrosion each to the player for as long as they remain adjacent instead of doing damage; they do nothing to monsters unless oozemancy is active, in which case they deal damage as before. [Committer's note: squashed commits and added handling to redraw stats. Some further Slime changes to go alongside this would also be good - in particular, more variation in layouts and monster pools, and possibly adding in some more uniques. Closes #2791. -kate] -------------------------------------------------------------------------------- 34404dee4a | Aliscans | 2023-01-21 21:59:13 +0000 Change the spelling of some words to Australian English. Change how some words are spelt to reflect the standard spelling on www.macquariedictionary.com.au. This only changes things in places where the spellings may be displayed to the user. I include the documentation in this. I haven't changed the changelog, or any of the contrib stuff. These include: armor => armour defense => defence offense => offence I haven't changed the Longfellow quote, as it appears to use the poet's original words. Replace "alternate" with "alternative", as the dictionary describes the "one possibility out of two" sense in which "alternate" is used as "a disputed usage". [Committer's note: squashed commits. Closes #2880. -kate] -------------------------------------------------------------------------------- 595c1f4b75 | Aliscans | 2023-01-21 21:59:13 +0000 Extend the first column of the dump action count to 7 characters long. Going from 5 to 7 characters means that 'Armour', 'Invoke', 'Ability' and 'Riposte' are printed in full. It increases the maximum row length from 106 to 108 characters, but does not affect the point at which 80 characters stops being wide enough. Move the "pad strings" code from _describe_action() to _sdump_action_counts(). -------------------------------------------------------------------------------- a1440bf155 | Aliscans | 2023-01-21 21:59:13 +0000 Record Wu Jian's Lunge and Whirlwind as CACT_ABIL, not CACT_INVOKE. Previously, Lunge, Whirlwind, Serpents Lash and Heavenly Storm were recorded with CACT_INVOKE, and Wall Jump with CACT_ABIL. This change means that Wu Jian's powers are now split into martial attacks (abilities which do not consume piety or fail if you are silenced) and other powers (invocations which do both). [Committer's note - fixed save compatability handling. Closes #2944. -kate] -------------------------------------------------------------------------------- df48620a09 | Nicholas Feinberg | 2023-01-20 13:44:46 -0800 Tweak hell unrand descriptions further (riverfiend) Worth noting explicitly that they must be wielded to be used. (Why did we decide on that, again..?) -------------------------------------------------------------------------------- 5e2a1faac7 | Kate | 2023-01-20 21:34:36 +0000 Don't allow placing zigfigs on temp terrain (#2797) They would be overwritten when the terrain expired, and had various messy interactions. In general it's safer not to allow changing terrain that's already temporarily changed. Closes #2797. -------------------------------------------------------------------------------- 08127ecf53 | Nikolai Lavsky | 2023-01-21 00:18:06 +0300 fix: allow Enter to exit the skills menu when drinking !xp As a followup to 9571b93c, this commit restores the previous behavior, allowing to exit the skills menu with Esc or Enter when drinking !xp. -------------------------------------------------------------------------------- 0bb7008f9d | Kate | 2023-01-20 21:10:08 +0000 Clarify Octopode Beastly Appendage description (#2919) Closes #2919. -------------------------------------------------------------------------------- 96b69d01bc | Nicholas Feinberg | 2023-01-20 13:02:29 -0800 Clarify hell lord unrand descriptions (powerbf, #2912) Don't claim that they can be 'evoked', since they no longer use V. Instead, describe them as 'granting the ability'. Resolves #2912. -------------------------------------------------------------------------------- 50ae3c0e08 | advil | 2023-01-20 15:45:23 -0500 fix: restore the unknown items toggle in \ menu -------------------------------------------------------------------------------- 2367cd04db | Nicholas Feinberg | 2023-01-19 21:15:51 -0800 Consecrated labrys tiles (CanOfWorms) -------------------------------------------------------------------------------- bc80c1ad91 | Neil Moore | 2023-01-19 21:43:20 -0500 Update copyright date. [skip ci] -------------------------------------------------------------------------------- 3340775977 | Neil Moore | 2023-01-19 16:31:16 -0500 Add a new splash screen (SpinningBird) A bit large, at my request, but IMO better to have to scale down than up. -------------------------------------------------------------------------------- 5b54d204dd | patrick | 2023-01-19 13:22:24 -0500 Fix a tiles make bug with MSYS git -------------------------------------------------------------------------------- a6d2a93c4a | robertxgray | 2023-01-19 11:50:44 -0500 Clean obsolete TOUCH_UI code The latest version of the Android port made the TOUCH_UI build option obsolete. Somehow some fragments of code survived the merge process and one of them broke the tile_use_small_layout option. Fixes #2921 -------------------------------------------------------------------------------- 754fce4c43 | advil | 2023-01-18 17:10:45 -0500 fix: prevent a divide by zero in weird cases This should only be triggerable under debug conditions, but let's handle the error conditions that lead to this crash elsewhere only. -------------------------------------------------------------------------------- 4c74721511 | advil | 2023-01-18 17:09:18 -0500 refactor: handle spflag::testing and spflag::monster together This generates an error, rather than a crash, if a non-wizard casts a testing spell. It also lets wizmode chars memorise debugging ray, instead of just casting it via &z. -------------------------------------------------------------------------------- 8d191d4e4e | advil | 2023-01-18 16:35:34 -0500 fix: don't check spflag::monster for non-spell casts Various abilities and items use `your_spells` to cast spells that may be only castable in the normal way by monsters, don't error on these. -------------------------------------------------------------------------------- bdb63f398d | advil | 2023-01-18 13:47:20 -0500 fix: remove whitespace in some menus This is to some degree intentional (see comment), but it isn't needed for id/enchant/brand. -------------------------------------------------------------------------------- fa0a19f920 | Nicholas Feinberg | 2023-01-18 09:37:49 -0800 Fix consecrated labrys enum order Oops! This breaks all unrands that have an enum after the obsidian axe in saves after 0ad051ed3b7deee9383e0b7a7b666411275f9e51. -------------------------------------------------------------------------------- 08df3a68dd | Nicholas Feinberg | 2023-01-18 09:36:27 -0800 Remove Morg (moreso) (dilly) Missed some vaults. -------------------------------------------------------------------------------- 031d1225b2 | advil | 2023-01-18 12:18:10 -0500 fix: prevent a miscast crash on wizmode casting This code would crash when miscasting (via &z etc) a spell in wizmode with no spell schools. The game will still crash if not in wizmode, but a wizmode cast just skips the miscast effect. -------------------------------------------------------------------------------- 3ae23987fd | advil | 2023-01-18 12:03:38 -0500 fix: add an explicit spflag::monster check in _do_cast Before this commit, _do_cast relied on spell-specific code to determine if spret::none was returned, which unsurprisingly was all over the place. Previously I suspect that spflag::monster was too unreliable to use here, but it should be accurate now. The barn door may be almost closed now... -------------------------------------------------------------------------------- 636a5c3615 | advil | 2023-01-18 11:21:35 -0500 lint: fix a weird indent -------------------------------------------------------------------------------- 9571b93c2c | advil | 2023-01-18 11:17:22 -0500 fix: swap default for ui::key_exits_popup It's safer not to shadow enter by default. -------------------------------------------------------------------------------- 83e5d64585 | advil | 2023-01-18 11:07:41 -0500 fix: allow enter to join religions -------------------------------------------------------------------------------- 6c2b13695a | advil | 2023-01-18 11:06:51 -0500 Revert "Revert "feat: standardize popup exiting keys"" This reverts commit fcc1e2b2aff5e3f200ff84aef7794a608b68ef71. -------------------------------------------------------------------------------- ba7862b69d | Nicholas Feinberg | 2023-01-18 08:02:56 -0800 Unbreak wizmode memorization -------------------------------------------------------------------------------- d14727376c | Nicholas Feinberg | 2023-01-18 07:57:49 -0800 Refactor memorization code (advil) Per request, repeatedly check that a spell that the player is trying to memorize is actually available for them to memorize, just in case. -------------------------------------------------------------------------------- fcc1e2b2af | Nicholas Feinberg | 2023-01-18 07:50:55 -0800 Revert "feat: standardize popup exiting keys" This broke joining religions, and the code is complex enough that I don't immediately see how to fix it. (It's because 'enter' is now configured to close UIs, I think?) This reverts commit df044eaf4f235edcf790c93cfc1c61d2c97afcfd. -------------------------------------------------------------------------------- 0ad051ed3b | Nicholas Feinberg | 2023-01-18 07:46:22 -0800 New unrand: the consecrated labrys Players have often asked: we have demon blades, demon tridents and demon whips, but why no demon axe? Of course, those wise enough to peruse the source code will know we've always had a demon axe - the obsidian axe. Now we have the blessed version! The consecrated labrys is a +5 holy broad axe (with +1 base damage, like other blessed weapon types) with sInv, Flight, and a gimmick - it gets bonus enchantment as scarier enemies come into view, working via the same threat mechanic as Ru's Sacrifice Courage. To discourage aggressive swapping, it also has Fragile, and for pleasantness, it caps out at +27 enchant. That might be too high, truthfully, but let's give it a shot - we can revisit scaling after folks play around with it a bit. S/o to bitdizzy for suggesting the ego effect. -------------------------------------------------------------------------------- f9ce66f82c | Nicholas Feinberg | 2023-01-18 07:46:22 -0800 New unrand -------------------------------------------------------------------------------- 870441aebb | advil | 2023-01-18 10:45:36 -0500 fix: don't crash on &z zaps with no player tohit We don't necessarily aim to keep &z fully working, but this commit should remove a whole class of wizmode crashes where the spell uses a zap, and the zap is lacking a player tohit. (This would also crash the memorise menu if memorised in wizmode or, uh, via bugs.) -------------------------------------------------------------------------------- 5a0d6e57be | Nikolai Lavsky | 2023-01-18 16:29:15 +0300 feat: add tiles to the mutation description popup Mutation tiles were already shown on the `A` and `?/u` screens, but now the players can see these tiles in all their double-size glory in the description popup. -------------------------------------------------------------------------------- c3a7216ad8 | Nicholas Feinberg | 2023-01-17 20:59:03 -0800 Probably fix unlimited memorization Closes #2947. -------------------------------------------------------------------------------- 2f0a8685bb | Nicholas Feinberg | 2023-01-17 19:54:32 -0800 Fix unlimited memorization power (maybe) (Implojin, #2947) I haven't tested this, so I'm not closing the issue. -------------------------------------------------------------------------------- 5fa2372673 | Nicholas Feinberg | 2023-01-17 19:50:58 -0800 Fix a sign comparison warning -------------------------------------------------------------------------------- d82a45a22e | Monkooky | 2023-01-17 18:13:29 -0800 Make divine vigour apply multiplicatively Closes #2935. Fixes #2910. -------------------------------------------------------------------------------- c3cde76320 | robertxgray | 2023-01-17 17:39:33 -0800 Fix estimation of the minimum usable window size We were using the m_fonts array to get the font sizes. This is wrong because caching leads to unpredictable array contents. Now we are using proper char width and height. It also has the benefit of improved precision. -------------------------------------------------------------------------------- ab5fb16433 | Aliscans | 2023-01-17 17:39:14 -0800 FIX: Stop libPNG shouting into the void. When run, tilegen.elf produced a large number of copies of two warning messages. Both are considered harmless here, but may distract people. This change tells libpng not to report those specific errors. Closes #2904. -------------------------------------------------------------------------------- 1029e49c50 | Antern | 2023-01-17 17:34:26 -0800 fix: local tiles sidebar height -------------------------------------------------------------------------------- d3cbc7c866 | Zhang Kai | 2023-01-17 17:29:57 -0800 Update unrand.txt -------------------------------------------------------------------------------- 6f51dd0f84 | Zhang Kai | 2023-01-17 17:29:32 -0800 Update spells.txt -------------------------------------------------------------------------------- fe5d03000b | Zhang Kai | 2023-01-17 17:28:48 -0800 Update monsters.txt -------------------------------------------------------------------------------- 23e4f76630 | Zhang Kai | 2023-01-17 17:28:26 -0800 Update items.txt -------------------------------------------------------------------------------- 4d610aba3f | Zhang Kai | 2023-01-17 17:27:55 -0800 Update commands.txt -------------------------------------------------------------------------------- bde2ad023b | Nicholas Feinberg | 2023-01-17 17:27:34 -0800 Re-remove embers -------------------------------------------------------------------------------- f6d4d4f6a7 | Zhang Kai | 2023-01-17 17:27:13 -0800 Update clouds.txt -------------------------------------------------------------------------------- 32faffd49c | hellmonk | 2023-01-17 17:23:57 -0800 properly monsterify sickly merfolk Make the 'sickly' merfolk actual monsters instead of vault defines and recolor them for console (no retile yet). -------------------------------------------------------------------------------- 7904f2a0a2 | hellmonk | 2023-01-17 17:23:16 -0800 nerf randarts Based on some discord feedback. Try to make high plus weapons and high stat properties slightly less common. No idea if this will be noticeable. -------------------------------------------------------------------------------- d1d138d441 | hellmonk | 2023-01-17 19:55:27 -0500 decouple gold aura duration and corpse size Killing bigger monsters gave you longer gold aura duration, which is mechanically weird (also not great that you could pseudo-count the duration by looking at the size of a gold stack that dropped!) Just roll independently instead, choosing numbers roughly equal to the case for human size. Gold amount being tied to corpse size is also weird in a post-chunk universe, but the gameplay implications there are mostly fine and it would be a significant balance change to decouple it - worth looking at if gozag needs another nerf, but I've left it alone for now. -------------------------------------------------------------------------------- df044eaf4f | advil | 2023-01-17 18:21:03 -0500 feat: standardize popup exiting keys The original goal of this commit was to consistently let right-click exit popups in local tiles; in some cases this just wasn't implemented, in some cases it wasn't implemented because right-click cycled mode. I have removed the latter functionality, following recent menu changes (an end goal here would be to allow clicking on the mode text itself to cycle). I may well have missed some cases, but as far as I know, every popup can now be exited with the mouse by right clicking. In some cases widgets do override right click, e.g. it does other things in menus, but right clicking outside of the popup always works. Unfortunately click handling is not very sophisticated, otherwise I'd also add left clicking out (like webtiles). Along the way I realized that this was all extremely inconsistent for keys as well. This commit makes things as consistent as I can, at the cost of sometimes removing exit keys, or even removing "any unbound key to exit" schemes. If people complain I can restore the latter -- but these were mostly in really odd places so it wasn't very predictable when it would work. -------------------------------------------------------------------------------- 3e05ae4a99 | Nicholas Feinberg | 2023-01-17 13:59:43 -0800 Don't give DjHW useless spells (Wrentha) A very dreadful rot indeed. -------------------------------------------------------------------------------- 3bb28391b4 | Nicholas Feinberg | 2023-01-17 13:59:16 -0800 New Heavy brand & Wucad Mu doll tiles (CanOfWorms) -------------------------------------------------------------------------------- cc886f7154 | Nicholas Feinberg | 2023-01-16 15:21:24 -0800 Add missing mutation resistance icons (CanOfWorms) -------------------------------------------------------------------------------- 0755cc6dcf | advil | 2023-01-16 16:16:34 -0500 fix: correct local tiles evokable tooltips These were impressively outdated, and also slightly broken. -------------------------------------------------------------------------------- 4dd8b1dda3 | advil | 2023-01-16 16:06:53 -0500 fix: tiles build -------------------------------------------------------------------------------- e7f8f89663 | advil | 2023-01-16 15:18:31 -0500 fix: improve evokable uselessness handling * fix some issues in cannot_evoke_item_reasons * show uselessness reason for evokables in description, generalize some describe code * use correct uselessness checks for describe hotkeys * dedup code in is_useless_item -------------------------------------------------------------------------------- 755734b53a | advil | 2023-01-16 15:18:31 -0500 feat: move evoke to UseItemMenu This brings evoke together in a mode cycle with read/quaff, and automatically adds various features from this menu. Evoking from the floor is disabled. (In the future, a generic use menu could be produced from these three item types.) As part of this, I cleaned up some of the evoke check code and converted it to use a `cannot_evoke_item_reason` call with the same API as reading/quaffing. Also, CMD_ZAP (unbound legacy CMD?) still uses a regular inventory menu prompt. -------------------------------------------------------------------------------- 452ae9f181 | advil | 2023-01-16 15:18:31 -0500 feat: toggle equip vs unequip modes in UseItemMenu This commit adds a key (bound right now to tab) that, in the equip menus, toggles to the corresponding unequip menu (or general unequip if there isn't one) and vice versa. This is a bit overengineered, but the end goal of this is that a new player only needs to remember one key to get to all equip menus from the main view (`e`). Note: the option `equip_unequip` also can accomplish this goal (in combination with the new equip menus). However, it makes it a bit too easy to accidentally unequip stuff, and also (wheals) new players mostly don't want to unequip stuff in modern crawl, so there's not a huge need to make it so immediately accessible. Other notes: * this commit attempts to do smarter hover saving on mode changes; it doesn't just preserve position, but item link if possible. This applies to all menu mode changes. * keyhelp code here is kind of involved... * commit should have no effect outside of equip/unequip menus aside from more consistent keyhelps. -------------------------------------------------------------------------------- 753c900711 | advil | 2023-01-16 15:18:30 -0500 fix: bounds check for knockback Unclear what can trigger this, but a recent crash appears to have. -------------------------------------------------------------------------------- abd8b8bc87 | Nicholas Feinberg | 2023-01-16 09:15:54 -0800 Add new mutation tiles (CanOfWorms) Various resistances and stat mutations, mostly. -------------------------------------------------------------------------------- 3898ba8535 | Nicholas Feinberg | 2023-01-16 09:03:22 -0800 New unrand tiles (CanOfWorms) Force Lance and Slick Slippers. -------------------------------------------------------------------------------- 638baaf3f0 | Nicholas Feinberg | 2023-01-15 12:49:06 -0800 Reduce consistency of Kiku's second gift (acrobat) Make it a little less predictable exactly which spells you'll get, so that Kiku runs have more variety. (Reduce gift size from 5 to 4.) -------------------------------------------------------------------------------- 38b2fafcf8 | Nicholas Feinberg | 2023-01-15 12:46:42 -0800 Fix tremorstones in fog (MainiacJoe) If there were visible tiles within radius 3, e.g. while in Heavenly Storm or a cloud of fog, tremorstones would quietly break. Unbreak em. -------------------------------------------------------------------------------- 14e8c2fdae | Nicholas Feinberg | 2023-01-15 12:35:13 -0800 Minor tremorstone refactoring Reorder variables to be declared closer to where they're used. -------------------------------------------------------------------------------- 930af78ca9 | Nicholas Feinberg | 2023-01-15 12:22:40 -0800 Give ?butterflies knockback (acrobat) To make its effect more comparable in strength to ?summoning, which it now alternates with, apply a powerful knockback to nearby creatures. Unlike other forms of knockback, this does no damage, mostly so that we don't have to worry about prompting the player. ("Really knock back the goblin in sanctuary..?") -------------------------------------------------------------------------------- 3916f1956a | Nicholas Feinberg | 2023-01-14 22:27:26 -0800 Move Lesser Beckoning to L2 From L3. It's just not as powerful effect as I expected it to be when I designed it back in fcbf9236af95 (2016). -------------------------------------------------------------------------------- e099caa7e7 | Monkooky | 2023-01-14 22:18:13 -0800 Clean up spell power code calc_spell_power previously took five parameters, four of which were unneeded. apply_intel, fail_rate_check, and scale were used in the call for raw_spell_fail to make calc_spell_power function as _skill_power * scale / 100. This has been corrected by replacing the call with _skill_power * scale / 100. cap_power was used in three calls: - spell failure, which no longer uses check_spell_power - target_desc, which now applies the cap twice - and one of the two calls for spell_range passed uncapped spell power. The only 'material' change is that the impact of schools on failure chance no longer depends on spell power cap. However, this does not have an impact unless you have 75 skill, and probably was not intended in the first place. [Committer's note: Did some misc cleanup.] Closes #2735. -------------------------------------------------------------------------------- acddeb6d44 | Nicholas Feinberg | 2023-01-14 21:44:25 -0800 Remove Morg This has always been an extremely unexciting unrand, both from a lore and a gameplay perspective. Moving it to the early game didn't change that. We can add it back if we ever find a good gimmick for it, but we've been trying for years without any success, so I'm skeptical. -------------------------------------------------------------------------------- 200c5c4a83 | Nicholas Feinberg | 2023-01-14 10:14:38 -0800 Actually fix vampiric draining info leak (|amethyst) 0af90f9a207b1d would leak info for non-susceptible monsters who got mirror-cloned. Oops! -------------------------------------------------------------------------------- 8cb723ed8b | Nicholas Feinberg | 2023-01-14 10:00:51 -0800 Buff Slick Slippers We must provide a more delicious bait. (+1 -> +2, EV +3 -> +5.) -------------------------------------------------------------------------------- 8abc85282e | Nikolai Lavsky | 2023-01-13 23:13:58 +0300 fix: don't highlight an "unrand" in the FAQ As a side effect of cf644656b, one of the FAQ entries had a light cyan color. Fix this by making the corresponding default `menu_colour` rule more specific. -------------------------------------------------------------------------------- 3ad151c646 | Kate | 2023-01-13 15:28:08 +0000 Allow looking up hell/pan lord unrands (nesea) They required special-casing in the lookup code since they're have the nogen flag. The faerie dragon armour still can't be looked up - allowing it would probably be more confusing than helpful, since its properties change whenever it generates. -------------------------------------------------------------------------------- 346586fe48 | Nicholas Feinberg | 2023-01-12 15:58:52 -0800 Add labels to unrand artefact effects To make special effects 'pop' more, make it more obvious when an unrand does something unusual, and correlate inscriptions with their effects, add inscriptions for various unrand effects that didn't have any and preface unrand effect descriptions with a corresponding inscription. This is incomplete and a little ugly but I'm tired of staring at unrands for now, sorry. -------------------------------------------------------------------------------- f9bf66eb98 | Nicholas Feinberg | 2023-01-12 15:58:52 -0800 Actually adjust dart prices d54f4be4f7bd5e5b2 claimed to do this but didn't (fully). -------------------------------------------------------------------------------- 881e3bac89 | Nikolai Lavsky | 2023-01-12 17:10:29 +0300 docs: add new equip/unequip menus to ?? screen and changelog Also, fix unequip menu's key in the manual. -------------------------------------------------------------------------------- d54f4be4f7 | Nicholas Feinberg | 2023-01-11 17:54:38 -0800 Increase throwing weapon prices (Lici) They were drastically cheaper than wands, despite being arguably better. Up the base price for a javelin to $30 (from $8), boomerangs to $20 (from $5), and large rocks to $15 (from $7). (They're rocks. They can only cost so much.) Also make darts a bit more expensive. -------------------------------------------------------------------------------- 3eed219d4b | Nicholas Feinberg | 2023-01-11 17:43:58 -0800 Simplify SPMSL prices Remove an unnecessary scaling factor. -------------------------------------------------------------------------------- c11e7ae810 | Nicholas Feinberg | 2023-01-11 11:07:21 -0800 Various changelog fixes -------------------------------------------------------------------------------- d6a5dd7a1f | scarf | 2023-01-10 08:06:11 -0800 feat: add electricity cloud trail Add a decorative cloud trail for ball lightning. Resolves #2925. -------------------------------------------------------------------------------- 57b83c3cc8 | scarf | 2023-01-10 07:59:21 -0800 feat: make ball lightning move away from player Resolves #2924. -------------------------------------------------------------------------------- fb9a8591bf | Monkooky | 2023-01-10 07:57:02 -0800 Update description of Pain Pain still exists as a monster spell, and is inaccurately described as causing a minor backlash. This fixes that. -------------------------------------------------------------------------------- 41e54f568c | Nicholas Feinberg | 2023-01-10 07:56:55 -0800 Cleanup vorpal unrands in changelog (ardl) Bloodbane didn't exist, and the others didn't need to be described in such detail. -------------------------------------------------------------------------------- ddc90eaa04 | advil | 2023-01-09 18:04:04 -0500 fix: signal equip_unequip behavior Also, disable selecting unarmed in equip menus when already unarmed, regardless of equip_unequip. -------------------------------------------------------------------------------- 91dd1e5a54 | advil | 2023-01-09 17:46:00 -0500 fix: improve equip/unequip warning behavior * Use menu now handles warnings only for non-equip items * Fix a mistake in a4aca974772 * Handle equip/unequip inscriptions better: they are now checked when any corresponding specific operation gets checked, and warnings are not checked for the general case. * Fix what seems to be a preexisting bug in amulet removal on swap * Explicitly check !u on unwield * Document -------------------------------------------------------------------------------- 0e44632947 | Nicholas Feinberg | 2023-01-09 14:05:54 -0800 docs: changelog through 0.30-a0-619 -------------------------------------------------------------------------------- 120588e8e2 | Nicholas Feinberg | 2023-01-09 12:33:37 -0800 Note light's effect on stealth (MainiacJoe) -------------------------------------------------------------------------------- d6c86c23d0 | Nicholas Feinberg | 2023-01-08 21:40:57 -0800 Remove the species size factor for SH For kite shields, large species got -0.5 SH and kobolds got +0.5 SH. For bucklers, kobolds got +1 SH and spriggans got +2 SH. This almost didn't matter and was very silly. The intent, I believe, was to simulate that shields covered a smaller or larger part of the wearer's body, but we don't really need to have a tiny bonus modifier for that. (It was also, I believe, totally undocumented.) -------------------------------------------------------------------------------- 5a1f34b0d0 | advil | 2023-01-09 00:37:03 -0500 fix: add a missing oper_type name -------------------------------------------------------------------------------- a4aca97477 | advil | 2023-01-09 00:24:26 -0500 fix: no double prompting for jewellery removal I didn't replicate this bug for weapons or armour, this commit should fix the jewellery case. Resolves #2916 (hopefully) -------------------------------------------------------------------------------- b49e76e7eb | nicolae-carpathia | 2023-01-08 21:19:38 -0500 Add a selection of various vaults I've been working on (#2601) * Add two vaults to Dis * Add some generic-threat float vaults * Add a large abstract-threat vault to large_abstract * Add a silly early-game vault to mini_monsters * Add a hydraferious vault to mini_monsters.des * Add a small arrival vault * Add a vault featuring everyone's favorite goblin uniques * Add some trove layouts * Add two more decorative float vaults -------------------------------------------------------------------------------- e5ea1257c2 | Nicholas Feinberg | 2023-01-08 12:31:13 -0800 Make Force Lance always knock targets back 1 space Better tabfeel when you knock something back one space from melee and can now reach to keep hitting em, instead of having to use a throwing weapon or evocable or something. (Ew, gross!) -------------------------------------------------------------------------------- dd512c7efb | Nicholas Feinberg | 2023-01-07 22:10:05 -0800 New early unrand: Force Lance The Force Lance is a Heavy lance (same weapon type as Wyrmbane - a spear with +2 base dam) that has a 1/3 chance of knocking back enemies it deals damage to, sending them 1-2 spaces back and potentially causing extra collision. I've marked it as an early unrand (like Throatcutter, etc) because I'm unsure if its damage really works out for the late game, but it might be quite strong for an early unrand. We can play with the numbers. Yes, this is a pun. I'm not sorry. -------------------------------------------------------------------------------- 150a0467c1 | Nicholas Feinberg | 2023-01-07 21:28:11 -0800 Fix rBlind description (BlurryCent) 0b05bf5e213 (April 2022, PleasingFungus) duplicated functionality for displaying monsters' rBlind added in 0fd21794c30 (October 2014, PleasingFungus). Deduplicate. -------------------------------------------------------------------------------- 5309dc90a7 | Nicholas Feinberg | 2023-01-07 15:58:37 -0800 Clarify Deal Four description (Booper) 'Deal' was an ambiguous term. -------------------------------------------------------------------------------- b513c0a51f | Nicholas Feinberg | 2023-01-07 14:48:41 -0800 Make the slick slippers +1 Just feels nicer. Vibes-based design. -------------------------------------------------------------------------------- 59b6b8e1d4 | Nicholas Feinberg | 2023-01-07 14:41:50 -0800 New unrand: slick slippers The slick slippers make melee attacks from adjacent enemies trample the player, moving both the player and the attacker in the direction of the attack. To help this effect trigger, they provide immunity to constriction, engulfing, netting and webs. Instead of AC, they give +3 EV. They are, like sharks, smooth as heck both ways. They're also very silly. -------------------------------------------------------------------------------- 0e55d2c15d | Kate | 2023-01-07 16:12:53 +0000 Make Shadow Step and Blinkbolt check constriction As with other movement-based abilities (Power Leap, Electric Charge, regular blinks, etc), make using Shadow Step or Blinkbolt count as escape attempts for constriction and cancel the ability on failure. Storm Form is immune to constriction so this isn't actually relevant for Blinkbolt in practice, but add the check anyway in case it becomes possible to Blinkbolt in some other way. -------------------------------------------------------------------------------- 182fdc4e28 | Kate | 2023-01-07 16:12:53 +0000 Adjust Blinkbolt targeting restrictions Don't allow targeting allies or blinking out of mesmerisation/fear. -------------------------------------------------------------------------------- a80edbb7d7 | Nikolai Lavsky | 2023-01-07 15:18:42 +0300 fix: make equip_unequip work again (#2915) After cd1ce1e3b, it wasn't possible to select an equipped item in the unified equip menu even if the `equip_unequip` option was set to true. Closes #2915. -------------------------------------------------------------------------------- b2882149bf | Roadster Tracker | 2023-01-06 22:20:17 -0800 Tweaking spider text labels to be more consistent Fixed #2742, changing front legs to front pincers, which we could also call Pedipalps if we wanted to follow more closely with real anatomy. Venomous is the more commonly used term for things that can poison, and technically is the right term here, so let's be consistent. -------------------------------------------------------------------------------- 56536a0467 | bfaires | 2023-01-06 22:04:56 -0800 Fix: Ref to scroll of ID may break in _identify() Break caused by auto_assign_item_slot() and swap_inv_slots(), when the ID'd item swaps with the scroll of ID. Parameter 'link' is already provided to accommodate this. Mainly, fixing this means scroll of ID will be assigned to its assigned item_slot if it was previously unknown. (Committer's note: simplified the check logic.) Closes #2811. -------------------------------------------------------------------------------- 51a0fb1b98 | Nicholas Feinberg | 2023-01-06 21:50:41 -0800 Tweak demonic crawlers To avoid stalemates, decrease regen by 50% (9 -> 6 HP/turn) and increase damage 25% (16 -> 20). -------------------------------------------------------------------------------- e18489c159 | pdpol | 2023-01-06 21:47:31 -0800 fix: Make a flavor gimmick wand no_pickup -------------------------------------------------------------------------------- ae655ce167 | Nicholas Feinberg | 2023-01-06 19:31:16 -0800 Fix an abyssal Vhi's crash (erf) Very weird. -------------------------------------------------------------------------------- b7c8574cbb | Monkooky | 2023-01-06 14:48:15 -0800 Decouple knockback from beam.cc Moves knockback from beam.cc to actor, removes the reliance of knockback code on an origin spell. (Committer's note: also simplifies messaging for Wind Blast/Nemelex's Storm card and some associated behaviors, e.g. not trying to find a ray path that can push a creature past an obstacle and not handling dispersal trap weirdness.) Closes #2906. -------------------------------------------------------------------------------- 01405fa21b | Aliscans | 2023-01-06 13:25:57 -0800 Add a few missing options to options_guide.txt Add explore_item_greed, messaging, suppress_startup_errors, sounds_on and tc_forbidden to options_guide.txt. Also correct the spelling of trap_item_highlight. -------------------------------------------------------------------------------- d5c1ca3ef2 | Nicholas Feinberg | 2023-01-06 12:29:17 -0800 Make Majin-Bo a one-hander The HP cost (and not having an enhancer staff!) is enough of a tradeoff for the HP vamp effect on this unrand. Few people were going into melee with a +6 vamp quarterstaff, so just make it a one-hander to encourage more use. -------------------------------------------------------------------------------- dfe09d59a3 | Nicholas Feinberg | 2023-01-06 12:27:58 -0800 Reduce Banish fail% Following up on b4a478afbafa2c27c14ee0a351f27461f6865492. Now that Banish is at 2*, make it usable at Invo 4-5 or so, instead of wanting Invo 7-8. -------------------------------------------------------------------------------- 0af90f9a20 | Nicholas Feinberg | 2023-01-05 23:03:50 -0800 Fix vamp drain mirror info leak (Yermak, 12694) Targeting a mirror-clone'd non-rN enemy (eg an ettin mirorred by a rakshasa) with Vampiric Draining would show 'not susceptible'. But you're not supposed to know that! -------------------------------------------------------------------------------- 91969c0fa5 | Nicholas Feinberg | 2023-01-05 18:47:21 -0800 Fix cloud description spacing (Yermak, 12570) There was a missing newline between the desription of opacity and 'clouds of this kind an adventurer makes will vanish quickly...' -------------------------------------------------------------------------------- 8d6c2bfbca | Nicholas Feinberg | 2023-01-05 18:44:35 -0800 Make insubstantial forms web immune (Yermak, 12627) Consistent with monsters, and with 'common sense' (whatever that means). -------------------------------------------------------------------------------- e6437df491 | Nicholas Feinberg | 2023-01-05 18:42:14 -0800 Don't suggest dropping books (Yermak, 12639) Fix a dated oversight in the manual. -------------------------------------------------------------------------------- 36a728ae67 | patrick | 2023-01-05 18:45:15 -0500 Fix some randbook names those damned underscores ;_; -------------------------------------------------------------------------------- 3c58d2bc28 | Nicholas Feinberg | 2023-01-03 16:16:25 -0800 Show spell max damage in descriptions Give players a better idea of what increased power might get em. -------------------------------------------------------------------------------- 0ab68b0ef8 | Nicholas Feinberg | 2023-01-03 16:16:02 -0800 Fix conjure ball lightning damage display Don't randomize it! -------------------------------------------------------------------------------- 1249b68b83 | Nicholas Feinberg | 2023-01-03 15:59:44 -0800 Brand weapon description fixes (ragingrage) -------------------------------------------------------------------------------- 21f81f4b3e | Nicholas Feinberg | 2023-01-03 15:53:09 -0800 Rewrite weapon brand descriptions Move them closer to the damage rating, and provide additional numbers for many brands. This is an attempt to make damage ratings more useful, and clarify that brands are not included in the rating. Remove "+ Flame", etc, from damage rates, since that was more confusing than helpful. -------------------------------------------------------------------------------- fd7c166f36 | hellmonk | 2023-01-03 13:55:14 -0500 fix: Display explosion noise for fulminant prism This is more consistent with other spells and is the most relevant noise value. -------------------------------------------------------------------------------- 23e55c9e0a | Nicholas Feinberg | 2023-01-02 13:06:47 -0800 Cap Will at +++++ (200) I always assumed it was capped here, but that was just a display artifact! (Hex power is capped at 200, so I believe this didn't matter except for WL/2 effects.) -------------------------------------------------------------------------------- 93115170b9 | nicolae-carpathia | 2022-12-31 18:16:51 -0500 Add more entries to randbook.txt (#2896) Add more nouns, adjectives, and gerunds to randbook.txt. Also, alphabetize the spell school nouns/adjectives by spell school. Add new book title formats, new proper names for wizards, etc. -------------------------------------------------------------------------------- e794ca7099 | Nicholas Feinberg | 2022-12-31 15:09:50 -0800 Make Doom Hounds' Howl Will-resistable For consistency with other mental effects, and to make Grunn's Doom Hounds a bit weaker, Doom Hounds' Howl can now be resisted with Will. It's a max (200) power effect, so it has about a 85% chance of hitting folks around 1 pip of will, 67% chance of hitting folks around 2 pips, and 7% at 4 pips. Willpower is halved in Tar, of course, so good luck with that... :) -------------------------------------------------------------------------------- 19bae12e61 | Nicholas Feinberg | 2022-12-31 14:49:15 -0800 Improve doom hound description Clarify explicitly that each one can only inflict Howl on you once, since players may not check the spell description. -------------------------------------------------------------------------------- cd7af8bf02 | Nicholas Feinberg | 2022-12-31 14:43:16 -0800 Add new splash screen (Micah C) -------------------------------------------------------------------------------- 084b5e0cf6 | Kate | 2022-12-31 16:41:11 +0000 Fix a missing ENDMAP -------------------------------------------------------------------------------- 472bc636d8 | nicolae-carpathia | 2022-12-31 10:13:12 -0500 Svaults sfor sbranches (#2632) Add some vaults of all kinds for the S-branches: entry, decor, monstriferous. Thanks to hellmonk and gammafunk for feedback. -------------------------------------------------------------------------------- 71422dec44 | nicolae-carpathia | 2022-12-31 09:58:01 -0500 Add some nostalgic vaults taken/borrowed from Nethack (#2547) Even though I don't play it anymore these days, if I hadn't played Nethack I would never have gotten into roguelikes in the first place, and I would probably have never made even a single vault for DCSS. As tribute to the games of my past, I converted a few vaults (so to speak) from Nethack into DCSS. -Add a Nethack-style shop which has fared poorly in this Dungeon, and an interpretation of Vlad's Tower. -Add a shop vault based on the Nethack Oracle level -------------------------------------------------------------------------------- dee14c521f | Nicholas Feinberg | 2022-12-30 15:48:01 -0800 Remove fast regen from a grab-bag of monsters No idea why slime creatures, bennu, searing wretches, steelbarb worms, starcursed masses, hellwings, or cacodemons had fast regen. It mostly didn't matter, and now it's gone. No compensation. -------------------------------------------------------------------------------- 18c750863f | Nicholas Feinberg | 2022-12-30 15:39:27 -0800 Nerf Demonic Crawler Will (Prakerore) From 100 to 60, to give more options for players to deal with them post-df30a72648cc7404845406d854965524b211e338. -------------------------------------------------------------------------------- 89cddaab80 | Nikolai Lavsky | 2022-12-30 02:13:03 +0300 fix: don't crash when wizmode-blinking into the map border It was possible to move into the map border via the `xm` wizmode command and crash the game. -------------------------------------------------------------------------------- 6f4a10e2d2 | Nicholas Feinberg | 2022-12-29 09:35:57 -0800 New ?acquirement quote (Ge0ff) Plus, rename dril. -------------------------------------------------------------------------------- 4a2fe84c73 | Nicholas Feinberg | 2022-12-29 09:30:50 -0800 Incorporate Heavy into monster damage descriptions xving a monster with a Heavy weapon will now factor the brand into what it can 'hit for up to'. -------------------------------------------------------------------------------- 0687761a96 | Nicholas Feinberg | 2022-12-29 09:28:47 -0800 Truncate Heavy description Try to avoid splitting the damage rating over multiple lines. -------------------------------------------------------------------------------- 9cf5a25fce | Nicholas Feinberg | 2022-12-29 09:28:11 -0800 Fix Heavy on ranged weapons (various) This code was ancient and hacky! -------------------------------------------------------------------------------- df30a72648 | Nicholas Feinberg | 2022-12-28 21:56:58 -0800 Rework demonic crawlers (Lici, acrobat) After the last round of reworks, Spider ended up a little tougher than I'd prefer. One culprit is the screaming demonic crawlers, which call swarms of enemies from all around. These step on bunyips' toes a bit (as fellow S enemies), so let's swap out the screaming (and their omni-resists) for a new gimmick: super fast regen. Like mini-Parghits, demonic crawlers now regen at 9 HP/turn, meaning that burst damage is needed to take them down. Let's try it out and see how it plays. -------------------------------------------------------------------------------- 486de37d69 | patrick | 2022-12-28 14:16:42 -0500 Edit quotes.txt some more Add two new quotes, move a recently-added quote, and edit punctuation in an existing quote. -------------------------------------------------------------------------------- 58aec57eca | advil | 2022-12-28 09:54:40 -0500 fix: disable misc from acquirement Reverts a change in 8e341f0f67. It seems that enabling misc also enables wands, which was unintentional. ...and weird, it looks like that'd lead to 1.5 weighting of wands in dungeon acquirement, and 0.5 of misc? see _find_acquirement_subtype -- I suspect the random_choose there should be removed. But I don't have time to investigate right now so I'm just going to revert. -------------------------------------------------------------------------------- 124715a40b | Nicholas Feinberg | 2022-12-27 22:31:28 -0800 Add a few missing quotes -------------------------------------------------------------------------------- f7fd966b4a | patrick | 2022-12-27 21:25:34 -0500 Make changes to nicolae_shop_unique_rings after the EV ring changes The One-of-a-King Ring store is getting some inventory changes for the new year. Making room for the 2023 models and all that. * Adjust the ranges of evasion rings. They used to be 1-3 for the worse ones and 5-7 for the better ones. Now that they're +5 by default, and Hare is now +10, the ranges are 1-4 for the worse ones and 6-9 for the better ones. * Tweak the variance on some of the other plus rolls. * Add comments. -------------------------------------------------------------------------------- 7d635642ba | Nicholas Feinberg | 2022-12-27 17:38:39 -0800 Fix up other evasion rings post-buff (nicolae) -------------------------------------------------------------------------------- e6aed4c269 | Nicholas Feinberg | 2022-12-27 15:48:52 -0800 Improve Lugonu Abyssal conversions Make Lucy altars a bit more than 3x as common in the Abyss, and give those who convert in the Abyss an instant 2*. This is intended to make conversion more enticing, without making getting Lugonu from a faded altar stronger. More general Lugonu buffs are still under consideration. -------------------------------------------------------------------------------- f5d82afd56 | Nicholas Feinberg | 2022-12-27 15:48:52 -0800 Protect Fedhasites from opp attacks (CarefulOdds) Moving out of a plant should follow the same logic as swapping with an ally - either way, adjacent foes can't follow to the same square you were just in, so they shouldn't get a chance to launch an opportunity attack on you. -------------------------------------------------------------------------------- c7247dd3ff | Nicholas Feinberg | 2022-12-27 15:48:52 -0800 Buff rings of evasion slightly Move 'em from +4 to +5. The former value stacked up poorly compared to other common rings, like AC and even Dexterity. -------------------------------------------------------------------------------- 4ce571a2c8 | Nicholas Feinberg | 2022-12-27 15:48:52 -0800 Clarify Vhi/MA casting speed -------------------------------------------------------------------------------- 1b0378597e | Nikolai Lavsky | 2022-12-27 21:25:09 +0300 fix: don't let monsters block attacks with an orb (u/kuniqsX) Due to a missing subtype check, orbs gave monsters an ability to block attacks. Big monsters with high HD received an especially large shield bonus from orbs. A frost giant could get up to 17 SH from a +0 kite shield, 23 SH from a +0 tower shield, and 38 SH from any orb. Reported in https://www.reddit.com/r/dcss/comments/zu9xl3/orbs_block_things_for_monsters/ -------------------------------------------------------------------------------- ef2d420e60 | advil | 2022-12-27 12:07:31 -0500 fix: quiet a platform-specific warning `%llu` is not guaranteed to line up with `uint64_t`, so use the correct printf specifier. (Seen in CI builds.) -------------------------------------------------------------------------------- 1df383f42f | advil | 2022-12-27 12:07:31 -0500 fix: local tiles glyph mode animations Noticed by Aliscans in #2904, but this warning was a symptom of a bug, not a false positive. Without these calls, zap animations don't display in local tiles glyph mode. -------------------------------------------------------------------------------- fc1376df4e | Nikolai Lavsky | 2022-12-27 14:23:41 +0300 fix: add a uselessness check for scrolls of brand weapon Similar to scrolls of enchant armour/weapon, consider scrolls of brand weapon to be temporarily useless if the player doesn't have a weapon to brand. -------------------------------------------------------------------------------- e2afbf3030 | hellmonk | 2022-12-26 19:13:12 -0500 Increase steam breath cooldown It's arguably the strongest draconian breath. Unclear why it had half the cooldown of the others. -------------------------------------------------------------------------------- 0a0f5a245f | Antanishin, Ernest | 2022-12-26 17:02:00 -0500 fix: highscore line buffer length enlarged from 1300 to 1500. -------------------------------------------------------------------------------- c8b2f71149 | Nicholas Feinberg | 2022-12-26 13:47:40 -0800 Replace Vorpal with Heavy (bitdizzy, hellmonk) Vorpal is a pretty bland brand. It's just more damage, everywhere, all the time. It's often fine but never exciting. So let's swap it out for something else I wanted to add anyway. Heavy is a new brand that increases weapon delay by 50% (the opposite of Speed), but increases weapon base damage by 80%. (This then gets multiplied by stats, skills, etc.) It works differently from Vorpal, Flaming etc because, if it was a post-AC effect, it would be utterly terrifying in monsters' hands. It's also much easier to display to players as a pre-AC effect - it'll show up properly in damage rates. Various unrands have been adjusted as appropriate. Currently the only ones that keeping Heavy are Sniper and the Dark Maul (with some tweaking), but it feels like there should be another good Heavy unrand design out there somewhere. The idea is that this should feel fun to use (big impacts per keypress), but should also be a bit scary (potentially multiple enemy actions per attack). It's very good against monsters with high AC, but quite bad if you're depending on auxes or slaying for damage. It's a land of contrasts. Let's try it out! -------------------------------------------------------------------------------- e4bbf75661 | advil | 2022-12-26 16:16:42 -0500 fix: quiet some gcc warnings (Aliscans) In the case of the `aux` parameter here, this now seems to be completely unused, so I have removed it rather than commented it out. -------------------------------------------------------------------------------- 7fabdf1491 | hellmonk | 2022-12-25 22:23:23 -0500 remove a gimmick entry vault It was a source of endless new player confusion and only had one exit. -------------------------------------------------------------------------------- 68bb171944 | advil | 2022-12-25 21:34:12 -0500 fix: handle vs and curing uselessness Followup to 41eeaaa. The problem was not the ailment check, but that the call to you.can_potion_heal with temp set to false would lead to !curing being marked as perma-useless to Vs. This commit refactors the logic to be clearer, since every species that can drink at all should be able to use curing (as far as I can see). -------------------------------------------------------------------------------- 8e341f0f67 | advil | 2022-12-25 21:25:41 -0500 feat: remove staves/misc from acquirement if fully id'd All acquirable items from both classes are now pointless to give if they've been seen before. Previously for misc types, this didn't matter much, as this was only used in troves (see 148af02efdf0ad). I did decide to put misc items back in regular acquirement circulation, with this check: the circumstances have changed quite a bit since 148af02efdf0ad and it seems to make sense to give previously unseen misc items. I don't feel strongly about this part of the commit, though. -------------------------------------------------------------------------------- ea934af5c9 | advil | 2022-12-25 21:17:41 -0500 fix: correct bounds for two checks against get_max_subtype `get_max_subtype` returns one past the max valid subtype (e.g. `NUM_WEAPONS`), correct the comparison operator in two ASSERTs. -------------------------------------------------------------------------------- fb95710a5e | advil | 2022-12-25 21:17:41 -0500 fix: don't try to acquire staves under sac hand (Monkooky) A non-fo char with a missing hand could still cause SK_STAVES to be rolled as a weapon acquirement skill, but then all weapon types for the skill would be useless or acquirement weight 0 (WPN_STAFF), causing the reservoir sampling line to never run at all, leading to a crash. The effect would be increased by staves skill, but probably possible on all sac hand chars. This code adds a (somewhat elaborate) check for this case, preventing most sac hand chars from getting staff weapons via acquirement. (I think it probably prevents staff unrands as well, which would be usable in principle -- probably fine?) Also, add an ASSERT specifically for this reservoir sampling failure case, and add some baseline acquirement testing to the makeitem test. The new test wouldn't have actually caught this case, but I think it might have caught a different recent issue, and it's still useful for hand debugging of acquirement (by modifying the setup code). -------------------------------------------------------------------------------- 74b111d446 | advil | 2022-12-25 21:17:41 -0500 fix: use correct var in an acquirement assert `type_wanted` here is subtype, not base_type, so this check was wrong and also mismatches the ASSERT in is_useless_item. -------------------------------------------------------------------------------- f74bfe16ba | hellmonk | 2022-12-25 20:52:32 -0500 fix: Always stop constriction under paralysis Fixes issue #2801. -------------------------------------------------------------------------------- 41eeaaa9f6 | hellmonk | 2022-12-25 20:27:11 -0500 fix: remove an erroneous uselessness check This was preventing vine stalkers from quaffing curing while poisoned or confused. It also applied to robe of vines, I think. -------------------------------------------------------------------------------- ee59754557 | hellmonk | 2022-12-25 20:09:03 -0500 Adjust summon mana viper Scale HP with HD like normal (for simplification) and start it 1 HD higher. This should be fine now that the summon cap is 1. HP breakeven is at 48 power. -------------------------------------------------------------------------------- 09da2da527 | hellmonk | 2022-12-25 19:54:24 -0500 remove confusing touch to-hit bonus Intended as a simplification more than a nerf, it used dex rather than power (weird). Can buff the spell in other ways if this makes a big difference. -------------------------------------------------------------------------------- c507713703 | hellmonk | 2022-12-25 19:52:47 -0500 reduce discharge self damage -------------------------------------------------------------------------------- e43150dd35 | Nikolai Lavsky | 2022-12-25 21:04:33 +0000 fix: don't visit item piles with useless glowing or artefact items On default settings, greedy explore travels to and stops at all piles of glowing or artefact items even when the items are useless for the character. This leads to a lot of unnecessary autoexpore interruptions for species with gear restrictions, especially for octopodes and felids. After this commit, greedy explore will ignore useless items if `explore_greedy_visit` is set to `artefacts` and/or `glowing_items` (the default). If it's set to `stacks`, explore will visit all piles, as before. -------------------------------------------------------------------------------- 4038c81314 | Nikolai Lavsky | 2022-12-25 21:04:33 +0000 fix: revisit item piles only if their size increases After df645b4c5, autoexplore visits all piles with glowing items or artefacts even when the piles don't have anything for autopickup. If the character encounters an already visited pile that has changed in size, autoexplore will travel to it again. If the stack's size has increased, there might be new interesting items. Otherwise, there is usually no reason to recheck a pile. Most of unnecessary pile revisits happen due to corpse decay, but they can also be caused by the player apporting items from piles or by Jiyva jellies eating items. After this commit, autoexplore won't revisit item piles after they get smaller. -------------------------------------------------------------------------------- 0af01429fa | advil | 2022-12-24 18:31:30 -0500 fix: mark a static (Aliscans) -------------------------------------------------------------------------------- cd1ce1e3ba | advil | 2022-12-24 18:08:58 -0500 feat: add a generalized unequip menu This moves the take off and remove popups to use UseItemMenu, and adds a general unequip pane to that menu. This new pane can be accessed via CMD_UNEQUIP, bound right now to `c` as the only free letter. There was various refactoring and tweaking in this commit to enable this, and these actions are now triggerable via use_an_item with the appropriate operatio value. Aspirational notes: * it might be better to connect the equip menus with the unequip menus somehow. Maybe allow unequipping from the equip menu? The easiest thing here would just be another hotkey that swaps between the two. * It would be really great if error messages for equip/unequip would show in this menu somehow. Unfortunately, they are all directly printed all over the place via mpr, so this is a bit involved to get going. Misc notes: * I moved a lot of the error messaging onto MSGCH_PROMPT. I'm not sure if this or the regular channel is really better, but this was very inconsistent before. Seems likely to still be inconsistent. * I marked jewellery as temp useless when in a form that doesn't allow it; this is for consistency with weapons/armour, which are already marked this way. -------------------------------------------------------------------------------- 7acccb668d | advil | 2022-12-24 18:08:58 -0500 feat: unified equip menu This adds a pane to the use item menu that shows all equipable items (weapons, armour, jewellery) and binds the new CMD_EQUIP to `e`. With this change comes a relatively big refactor of the use item code, both to clean up some of the messiness in 5a63ccc183, and just generally have more uniform codepaths. Some of the old api could perhaps be further removed / cleaned up, e.g. a lot of these functions probably shouldn't take an `item_def *` any more. Aside from the new command / menu features, this refactor isn't intended to change equipping. -------------------------------------------------------------------------------- 6c4b56ed3b | advil | 2022-12-24 18:08:58 -0500 refactor: separate weapon swap from regular wield code This code was smushed into one somewhat confusing function, despite the inputs and logic being fairly different. I'm pretty sure I've correctly detached them.. -------------------------------------------------------------------------------- df6ecd2dc0 | advil | 2022-12-24 18:08:58 -0500 refactor: simplify `wield_weapon` signature This function had a bunch of legacy unused parameters (one was still used, but only in now dead code). Simplify. -------------------------------------------------------------------------------- 2c0b3469a7 | Nikolai Lavsky | 2022-12-24 19:11:46 +0300 docs: update some links in the new developer docs -------------------------------------------------------------------------------- dc55766716 | Nicholas Feinberg | 2022-12-23 22:39:42 -0800 Welcome nlavsky to the devteam Cheers! :) -------------------------------------------------------------------------------- 4794bfbd1c | Nicholas Feinberg | 2022-12-23 13:44:20 -0800 Fix: don't claim the autumn katana is vorpal Broken since 5f824d10e6f (13+ months ago). -------------------------------------------------------------------------------- 27a1dae89b | Nicholas Feinberg | 2022-12-23 13:35:04 -0800 Rework Mad Mage's Maulers Make them more exciting for hitting things with by replacing regenMP (+0.4 MP/turn) with VampMP, which turns damage done in melee into MP. (Currently 1/8th of damage done, but I'll probably adjust that.) Make them even more appealing to melee brutes by replacing the Int-3 (which is potentially dangerous to low-int characters) with -Cast. -------------------------------------------------------------------------------- b4a2863f8f | Nikolai Lavsky | 2022-12-23 11:42:43 -0800 fix: make autoexplore wait for movement restrictions to expire If you wear an amulet of magic regeneration, it's possible to cast Momentum Strike and then restore MP before -Move times out. Pressing `o` will just print "You cannot move." and you'll have to use `5` or `.` to rest -Move off. Fix this by making autoexplore wait for -Move to expire before attempting to move. Tree form and Stuck status from Translocations miscasts also prevent autoexplore, so let's fix these cases too. -------------------------------------------------------------------------------- a9c6de93fa | RypoFalem | 2022-12-23 11:40:40 -0800 fix fsim with ranged weapons Use fake projectiles rather than whatever you're quivering -------------------------------------------------------------------------------- 946936b853 | advil | 2022-12-23 10:36:23 -0500 fix: remove butchering and destroying(??) -------------------------------------------------------------------------------- 8c47a4955b | Nicholas Feinberg | 2022-12-22 20:39:11 -0800 Fix Toxic Bog + Step from Time (#2749, Monkooky) Per the comment, end the toxic bog status when doing Chei's step from time or temporal distortion. The linked issue suggests also disabling L's Liquefication, Mark, and Mesm, but I unfortunately disagree. Mark is a status on the player, like any other duration, and stepping from time doesn't affect those. Ditto liquefication, which follows the player around. Mesm is more ambiguous, but if the mesmerizer is still around when the player returns from their step, they should still be affected. Fixes #2749. Closes #2893. -------------------------------------------------------------------------------- d44aff7e82 | Nicholas Feinberg | 2022-12-22 20:30:21 -0800 Checkwhite -------------------------------------------------------------------------------- 68f495328a | Zhang Kai | 2022-12-22 20:29:57 -0800 Update monsters.txt To make the words more uniform and the sentences more smooth, and adapt to line character limit -------------------------------------------------------------------------------- 10769c07a2 | Zhang Kai | 2022-12-22 20:29:52 -0800 Update spells.txt Update, make the words more uniform and the sentences more smooth, and adapt to line character limit. -------------------------------------------------------------------------------- 807956db86 | Zhang Kai | 2022-12-22 20:29:40 -0800 Update gods.txt Update, make the words more uniform and the sentences more smooth. -------------------------------------------------------------------------------- 18dac8f90a | Zhang Kai | 2022-12-22 20:29:34 -0800 Update ability.txt -------------------------------------------------------------------------------- 1eefe1720f | Zhang Kai | 2022-12-22 20:29:30 -0800 Create mutations.txt -------------------------------------------------------------------------------- 01a5972819 | Zhang Kai | 2022-12-22 20:29:25 -0800 Update spells.txt Update, make the words more uniform and the sentences more smooth, and adapt to line character limit. -------------------------------------------------------------------------------- b4612467ca | Zhang Kai | 2022-12-22 20:29:18 -0800 Create FAQ.txt -------------------------------------------------------------------------------- 906f8a8453 | Zhang Kai | 2022-12-22 20:29:09 -0800 Create help.txt -------------------------------------------------------------------------------- b5a9a196e2 | Zhang Kai | 2022-12-22 20:28:44 -0800 Create monflee.txt -------------------------------------------------------------------------------- f0747e9c1c | Zhang Kai | 2022-12-22 20:28:06 -0800 Create montitle.txt -------------------------------------------------------------------------------- 18619c1dc1 | hellmonk | 2022-12-22 20:27:10 -0800 remove invisibility from chaos effects It's a very annoying interface tax without sinv. To replace it, increase the odds of agility for the beam version and add a chance of resistance for both beam and attack flavor versions. -------------------------------------------------------------------------------- c876ba1704 | Nicholas Feinberg | 2022-12-22 20:25:46 -0800 Adjust stash.cc formatting for readability -------------------------------------------------------------------------------- 9bd54e8edc | pdpol | 2022-12-22 20:25:31 -0800 feat: Filter out useless altars from stash search -------------------------------------------------------------------------------- 663962266a | Nicholas Feinberg | 2022-12-22 18:30:18 -0800 Bump Heroism and Finesse ability costs Having Heroism be extremely cheap meant you basically wanted to use it for any even slightly threatening fight, which isn't awful, but isn't the most exciting thing ever, either. Since we want to pull Okawaru's strength back a bit toward other gods', increase Heroism's piety cost from 1 to 3-4, making it more suitable for threatening encounters. Raise Finesse's cost correspondingly, from 3-4 to 5-7. -------------------------------------------------------------------------------- 913f7af9ec | Nicholas Feinberg | 2022-12-22 18:25:49 -0800 Don't show .s for low stealth Falsely implies to players that replacing all your . with + means you've capped out on stealth. (There is no cap on stealth.) This looks a little weird at very low stealth, but let's try it out anyway. -------------------------------------------------------------------------------- 0d9051e15b | advil | 2022-12-22 15:06:41 -0500 refactor: consolidate potion uselessness code Previously, potion uselessness was handled in a superficial way by a bunch of checks in item-use.cc, and then in a much more fine-grained way on the actual quaff calls. The latter didn't expose the messaging to be usable elsewhere (as scrolls now do), and wasn't fully consistent with the other uselessness code. This commit refactors so that the potion code overall uses the same strategy as scrolls, except that this is plumbed directly into the `can_quaff` checks in potion.cc. * Expand temp uselessness to match almost exactly when potions won't work. This does now mark e.g. !heal as temp useless at full hp and so on, which could be annoying. (nlavsky was worried about making the action panel too flickery with some of these cases.) If so, I'd rather have the general case working and then special case what ui needs further changes. A few weird cases: brilliance no longer works under Trog, before it worked but its effects only matter if you cased. !invis still works when temp useless with an override, and I've fixed some of these cases. It's possible that effects prevented by armour (robe of folly, robe of vines) should be perma-useless? But generally that's not how we handle equip. * Show uselessness reasons in item descriptions. * Fix some corner cases: invis while wielding eos, !magic with full mp, curing with full hp and nothing to cure, brilliance with folly (prev marked as useless but drinkable), some flight check issues * Overall message consistency -------------------------------------------------------------------------------- 799d0685e7 | advil | 2022-12-21 19:55:42 -0500 refactor: adjust scroll uselessness reasons * Move `cannot_read_item_reason` to the same file as `is_useless_item` (not sure I care hugely which file they should be in, but they should be together). * Expand out perma-uselessness reasons. Everything should be covered now, and the function has an explicit `temp` param. * Reason priority should be better, and every scroll should show a reason in its description if temp or perma useless. * Various minor tweaks. One awkward case: after this commit, amnesia no longer works under Trog. Before, it worked, despite being marked as perma-useless. This could probably be overridden if necessary. -------------------------------------------------------------------------------- d016549fea | advil | 2022-12-21 16:26:10 -0500 Merge branch 'android' This at long last merges #1892 plus a few tweaks, mainly to CI and documentation. Resolves #1892 -------------------------------------------------------------------------------- f32fc37df5 | advil | 2022-12-21 13:43:33 -0500 docs: notes on command line android builds This is still a bit sketchy, as I never really got this to run all the way through (due to issues in my android build setup, as far as I can tell). However, I think there's enough here to get someone going. Eventually, it would be useful if someone added explicit fully replicable linux steps here using apt. (Unfortunately, my experience on mac was that the package manager based approaches I tried were horrendously broken, so I gave up on describing that exactly.) -------------------------------------------------------------------------------- 92a8e1e1ec | advil | 2022-12-21 13:43:04 -0500 fix: mac ccache location in CI -------------------------------------------------------------------------------- 89d08c6997 | advil | 2022-12-21 13:07:00 -0500 fix: update CI ccache location Since ccache 4.0 (2020-10-18), ccache changed the default location for the cache based on the XDG base directory specification. I'm not sure when this started appearing on our CI runners, but it appears that as of right now it has completely broken ccache saving. This commit should get the correct location. -------------------------------------------------------------------------------- cea3e4f894 | advil | 2022-12-21 12:16:45 -0500 build: ccache debugging info -------------------------------------------------------------------------------- 7ea5a21d01 | advil | 2022-12-21 11:09:24 -0500 build: another try at ccache I think this is unlikely to work, but we'll see... -------------------------------------------------------------------------------- 330ca2eb8e | advil | 2022-12-20 09:40:43 -0500 fix: maybe fix console build -------------------------------------------------------------------------------- 03497ec522 | Nicholas Feinberg | 2022-12-19 15:19:12 -0800 Remove MONS_NO_MONSTER from Orc spawn tables Fixes weird cases where Orc could spawn no monsters. Total monster count / XP drops by 3-5%, which is within margin of error. We can tweak a little more later if need be. -------------------------------------------------------------------------------- 5673dd7ce6 | Nicholas Feinberg | 2022-12-19 14:23:14 -0800 Enable Grinch Mode Allow players to opt out of the new holiday tiles, plus Halloween. -------------------------------------------------------------------------------- de979b18e0 | Nicholas Feinberg | 2022-12-19 14:23:14 -0800 Add cozy, easy-to-wear holiday hats (Sastreii) Downside: constant jingling gives -3 stealth. -------------------------------------------------------------------------------- ecbe3e46b9 | Nicholas Feinberg | 2022-12-19 14:23:14 -0800 Give Sigmund some holiday spirit (CanOfWorms) -------------------------------------------------------------------------------- c78de03d82 | advil | 2022-12-19 14:25:10 -0500 build: attempt to enable ccache for android This is a bit of a shot in the dark.. -------------------------------------------------------------------------------- 4f163fc199 | advil | 2022-12-19 10:44:05 -0500 build: cut a job from CI This seems like the most pointless of the current build matrix; I don't think anything is gained by testing these options in combination that won't be handled by the individual cases. -------------------------------------------------------------------------------- 6ac2e24f95 | advil | 2022-12-19 10:36:20 -0500 build: remove a duplicate CI job Seems to have been accidentally duplicated a couple years ago. -------------------------------------------------------------------------------- 367de1291c | advil | 2022-12-19 10:25:39 -0500 build: tweak CI order for android I'm pretty sure ccache is not working properly for the gradle build, this is an attempt to get more info. -------------------------------------------------------------------------------- 05911a2283 | advil | 2022-12-19 10:05:47 -0500 docs: add a note about android to INSTALL.md This could probably stand to have a bit more detail, but I don't understand this build process enough for that. -------------------------------------------------------------------------------- a54866c054 | advil | 2022-12-18 19:06:01 -0500 Merge branch 'master' into android -------------------------------------------------------------------------------- 84de5afbc5 | Josh Braendel | 2022-12-18 12:32:03 -0500 fix c++ warning [committer's note: renamed `copy`, since it doesn't have the semantics of std::copy. This is structured like the copy and swap paradigm, but this function isn't really a swap function; it's possible there's a more idiomatic c++ way of doing this whole thing, but FixedArray is not very idiomatic c++ in the first place. Resolves #2861] -------------------------------------------------------------------------------- 647bc5cc63 | advil | 2022-12-18 11:32:21 -0500 fix: explicitly cast ghost colours to int This prevents a warning in gcc. This probably means the related commit in #2861 is unnecessary, though the sign issue still remains, as detailed by the comment here. I spent a while trying to figure out how to disable this warning, but when I looked into the details of this exact bit of code, I think gcc was right to warn. -------------------------------------------------------------------------------- 47a42acea8 | advil | 2022-12-18 10:40:42 -0500 fix: correctly handle monsterless branches -------------------------------------------------------------------------------- fa4925f201 | advil | 2022-12-18 10:07:03 -0500 fix: remove a constraint from 4188047c905 This can (in principle) happen in lair as well, no reason to restrict this check to orc only. (I think I had this in for testing reasons and forgot to remove it.) -------------------------------------------------------------------------------- 8901f6c8b5 | gammafunk | 2022-12-16 17:15:27 -0600 feat: Some tweaks to three lair vaults pdpol_lair_cabin_in_the_woods: Give the human survivor some passable gear. A good_item war axe and lower tier good_item armour won't grant a lot loot value but will make this human slightly less trivial to defeat. Not to the extent that it's likely to kill a player, but it should make fighting the survivor a little more thematic. Replace the lua block with a simple KMONS with a fallback definition. Simplify some of the SUBST weights, and reglyph to put monsters on the usual glyphs and terrain on glyphs not reserved for item slots. pdpol_lair_cavern_descent: Rebalance monster placement to reduce the overall monster count, since it was pretty high for such a small and relatively open vault. Reglyph to put monsters in rough order of difficulty and simplify statements. For pdpol_lair_neglected_garden, a minor weight simplification. -------------------------------------------------------------------------------- 42e7360d12 | pdpol | 2022-12-16 16:59:44 -0600 Some monsters vaults and a decor vault for Lair pdpol_lair_neglected_garden: Someone hasn't taken care of their garden, but occasionally it takes care of itself. A decor garden vault with a withered theme that sometimes has healthy plants instead. pdpol_lair_cabin_in_the_woods: A horror-themed runed door vault inspired by The Evil Dead. pdpol_lair_cavern_descent: A descent into a watery cavern featuring eels and a variety of Lair monsters. Committer's Note: Squashed and rebased from commits in PR #2794. Added the commit message with a brief summary for each vault. Removed the pdpol_lair_dawg_pound vault in the original submission, since pdpol may rework that one or it just won't be merged. -------------------------------------------------------------------------------- 4188047c90 | advil | 2022-12-16 16:41:46 -0500 fix: veto levels where very few monsters are placed Probably the most important case here is 0, but I went with 3 because that is a lower bound on `_num_mons_wanted()`. -------------------------------------------------------------------------------- d5975efbca | Nicholas Feinberg | 2022-12-15 11:08:39 -0800 Fix momentum strike not giving XP (acrobat) Oops! -------------------------------------------------------------------------------- 5ca811292f | Alex | 2022-12-15 10:53:53 -0500 build: harden ci.yml permissions Signed-off-by: Alex -------------------------------------------------------------------------------- 3668837a89 | Nikolai Lavsky | 2022-12-15 10:25:44 -0500 fix: show perma uselessness in shop and shopping list menus The menus have been showing temp uselessness of items for a long time. For example, potions of invisibility were greyed out for characters with enough magic contamination even in previous versions. As a followup to 43e804b48, use perma-uselessness highlighting for these menus. -------------------------------------------------------------------------------- 9104f0fc43 | advil | 2022-12-14 14:36:46 -0500 fix: show misc evokables in quiver menu These appears to have gotten dropped via cut and paste error in cc732e7c341debec790. -------------------------------------------------------------------------------- 86641cc369 | Nikolai Lavsky | 2022-12-13 08:14:54 -0500 fix: don't leak usefulness of unidentified scrolls (#2877) After 4b7bca3bf, unidentified perma-useless scrolls are greyed out in the read menu. This affects ?butterflies and ?summoning for followers of Okawaru and ?teleport and ?blinking for Formicids. Also, it's not possible to read-identify permanently useless scrolls. Fix this by checking perma-uselessness only of identified scrolls. Closes #2877. -------------------------------------------------------------------------------- 4b7bca3bfa | advil | 2022-12-11 16:13:59 -0500 fix: adjust more cases of perma vs temp uselessness * Butterflies and summoning should be treated as perma-useless if allies are forbidden (either by oka or by ru). * blinking/tele should be treated as perma-useless for formicid. This also adjusts some of the scroll reason logic. I think this whole code path could stand to be refactored so that the temp parameter is propagated into the reason-generating code, and more perma-uselessness reasons are provided. But for now, I have done some hacky brute force checks to get this right, as well as reorded some of the reason priorities. -------------------------------------------------------------------------------- 2e3cb7ea4d | advil | 2022-12-11 15:36:16 -0500 feat: show usability for scrolls/potions in description The quality of scroll info here is a lot higher, because of the existence of `cannot_read_item_reason`. Cancellation already had some existing special casing, so I have included an informative message for it, but no other potions will print a reason as of this commit. To a lesser extent, this kind of info may also be useful for evokables, and perhaps other items too. -------------------------------------------------------------------------------- 9b11ac4179 | advil | 2022-12-11 14:31:02 -0500 fix: mark !cancellation as temp useless if it won't do anything The messaging and even item description was already handled for this case, this just gets coloring in quaff and the action panel. -------------------------------------------------------------------------------- b9dab8fb20 | advil | 2022-12-11 12:16:36 -0500 fix: further clean up the clumsy throwing check This shouldn't change behavior as far as I'm aware. The item type check is already covered (in a rather roundabout way) via the `throwing()` call, and is_throwable already takes an actor, so there's no need for player-specific code. -------------------------------------------------------------------------------- 03f49bf3ed | advil | 2022-12-11 11:02:53 -0500 fix: unnerf launching Bug introduced in 9e567866badc7; silly me for thinking that `clumsy_throwing` would only be checked for throwing. Resolves https://crawl.develz.org/mantis/view.php?id=12714 -------------------------------------------------------------------------------- 9e567866ba | advil | 2022-12-11 09:11:50 -0500 fix: nerf throwing This removes a pretty good tech reported in #2874 by acrobat. Via quiver, and also throw with the "toss anything" submenu, all species could do damage throws with any throwing ammo. I think this even probably prevented mulching. The bug originates in a8e9c987b86ad, which replaced a specific fumble check in ranged-attack.cc with an item type check. Resolves #2874 -------------------------------------------------------------------------------- e042605de7 | Nicholas Feinberg | 2022-12-10 17:36:22 -0800 Make ?butterfly weight match ?summoning (Prakerore) Oops! -------------------------------------------------------------------------------- cec5606451 | advil | 2022-12-10 20:33:05 -0500 fix: show classy draconians' flight Really, show flight for black draconian knights (nothing else gets flight). But, generality! Resolves #2752 Resolves #2770 -------------------------------------------------------------------------------- b646966af9 | Nicholas Feinberg | 2022-12-10 17:31:49 -0800 Make ?butt alternate with ?summ instead of ?fog To avoid inventory clutter, when ?butterflies were added, they were set up to alternate with ?fog - each game would only contain one or the other. This made sense to me conceptually, as both were 'defensive' items - you could protect yourself from a d:4 centaur by reading ?fog or by reading ?butterflies, and both would have advantages and disadvantages. Each has situations in which it's preferable, which is good! However, ?fog's niche is a bit more unique, especially in extended. So, let's change up the alternation: ?butterflies will now alternate with ?summoning. We'll see how this plays. -------------------------------------------------------------------------------- 7f7f6b1b85 | Nicholas Feinberg | 2022-12-10 17:31:44 -0800 Replace Cigotuvi's summoning scrolls with poison They only had summoning scrolls because summoning scrolls used to be 'scrolls of unholy creation', which created a thematically appropriate small abomination. Since those were replaced in a6578962e0 (almost a decade ago), summoning scrolls have been out of theme for Cigo's wizlab. Replace em with poison scrolls, which feel vaguely OK. -------------------------------------------------------------------------------- 9651f06ebd | Samantha Tobias | 2022-12-10 19:46:42 -0500 fix wizlab wizards "come into view" message (Flugkiller) Wizlab wizards did not have the M_UNIQUE flag, which caused them to get displayed in "come into view" messsages as "a " instead of "". this only happened when they came into view along with other monsters. This fixes the issue by giving them the M_UNIQUE flag. Resolves #2738 -------------------------------------------------------------------------------- 43e804b486 | advil | 2022-12-10 19:03:21 -0500 feat: tweak when temp uselessness is shown After this commit, items get temp useless highlighting in: * use item menus (e.g. quaff, read) * action panel Elsewhere, they should receive perma-uselessness highlighting, including: * inv menu * pickup/drop * drop messages * known item menu * stash search I changed `menu_colour_item_name` absolutely in order to get the drop message case, so this may have some further consequences. It's possible there's still missed cases. -------------------------------------------------------------------------------- 92f4fb2d71 | Nicholas Feinberg | 2022-12-10 12:08:47 -0800 Don't warn when zappin your spectral (Aoae, acrobat) You don't take damage when damaging your own spectral weapon, so don't bother warning about doing so with Arcjolt, Chain Lightning, Static Discharge, etc. -------------------------------------------------------------------------------- 87402fac92 | Nicholas Feinberg | 2022-12-10 12:01:17 -0800 Fix 'sink to the bottom' messages (elliptic) Creatures that can swim shouldn't sink to the bottom. -------------------------------------------------------------------------------- cbdd7f1727 | Nicholas Feinberg | 2022-12-10 11:55:08 -0800 Rewrite monster net immunity code For consistency with players in tree-form getting netted, let stationary monsters with melee attacks be netted. (In practice, I think this just affects... training dummies & the new abyssal starflowers?) -------------------------------------------------------------------------------- baa0261540 | Nicholas Feinberg | 2022-12-10 11:55:08 -0800 Don't allow Mighting monsters with no attacks Seems a bit pointless. -------------------------------------------------------------------------------- 4e368e6683 | Nicholas Feinberg | 2022-12-10 11:55:08 -0800 Allow applying Haste and Might to statues Probably Might should have a check for only affecting monsters with attacks. -------------------------------------------------------------------------------- d6ef553a8b | advil | 2022-12-10 09:46:51 -0500 build: comment and improve util/find_font This is in response to: https://github.com/crawl/crawl/pull/1367/commits/53545380446f6c79db6221757b9bb63 b4259b878 That commit is wrong, because fc-match always tries to return something, and if dejavu isn't installed, it will return something completely wrong e.g. verdana. Also, it seems to have a false premise that this script wasn't searching fontconfig directories -- because of the use of fc-list, it does search whatever fontconfig directories are around (and I've tested it out with macports' custom directories). However, this wasn't very apparent on a casual read of the script, so I've added a bunch of comments to clarify, and improved the fc-list call a bit. The addition of "-L" here is from: https://github.com/NixOS/nixpkgs/blob/master/pkgs/games/crawl/crawl_purify.patch It seems useful + safe enough to include for everyone. (That patch also seems to have the false premise re fontconfig? So I've added comments to head off the unnecessary change they included there.) -------------------------------------------------------------------------------- 9e77e4d916 | pdpol | 2022-12-09 16:55:51 -0500 fix: adjust monser placement in wad_wood_setup. An absdepth conditional was placing a harder monster set at shallower depths. This flips the condition, and also makes the transition point L:3 instead of L:4, which I think seems in line with the recent reduction to 5 floors. -------------------------------------------------------------------------------- 37d5509b11 | Perry Fraser | 2022-12-09 16:53:25 -0500 Add asserts for valid weapon subtypes for ?acqs. -------------------------------------------------------------------------------- bbba3d4eb4 | Perry Fraser | 2022-12-09 16:53:25 -0500 Don't crash when generating slings for ?acqs There was a rare crash that could occur when reading a scroll of acquirement where, when choosing a weapon, the now-defunct slings skill would be picked for the kind of weapon that should be generated. Specifically, _acquirement_weapon_subtype would attempt to iterate through every weapon trying desperately to find something that uses SK_SLINGS before eventually dying out of its main loop and returning 101 (OBJ_RANDOM), which was the initial value of result. Later on, the value returned from _acquirement_weapon_subtype is blindly used as the subtype for the object being generated, and /that/ subtype is then used in an index for testing if the item is able to be wielded, and /that/ causes a segfault. -------------------------------------------------------------------------------- 76bb9edea9 | bfaires | 2022-12-09 16:52:27 -0500 Fix int params to crawl.sendkeys() Currently crawl.sendkeys(6) sends "6" instead of keycode 6. Due to lua_isstring() returning true; ints considered valid strings. Moved number check ahead of lua_isstring() check. Made number check explicit; lua_isnumber() can return True for strings. -------------------------------------------------------------------------------- e848bf14ca | Roadster Tracker | 2022-12-09 16:51:10 -0500 Shrinks the size of chequers_temple_sunken There's a lot of empty water in this vault that really contributes absolutely nothing useful. Removing it to have flying and swimming species auto explore quicker. -------------------------------------------------------------------------------- 5004eecd7a | Roadster Tracker | 2022-12-09 16:51:10 -0500 Don't care about exploring the edge tiles The edge tiles aren't really that interesting to explore, nothing can go there. This change treats those tiles like translucent tiles, going through isn't possible and so don't even bother trying to visit. Fixes #2785 -------------------------------------------------------------------------------- eb60c0892e | Benjamin S Wolf | 2022-12-09 16:24:19 -0500 Remove defunct and completed todo -------------------------------------------------------------------------------- 1e1ebe7c07 | Duong Hoang | 2022-12-09 16:18:05 -0500 fix: a few css issues fix some syntax errors existing in the style.css [committer's note: these fixes were in a commit with a css style change for the "play now" div that I didn't take] -------------------------------------------------------------------------------- 41561af1f8 | Nikolai Lavsky | 2022-12-09 15:52:58 -0500 fix: improve handling of ?poison and ?fog under Still Winds These scrolls are already marked as useless under -Clouds, but there are two problems: * The player still can read and waste scrolls of poison without any effect. * Trying to read a scroll of fog prints "As you read the scroll of fog, it crumbles to dust.", even though it doesn't destroy the scroll. This commit fixes these issues. -------------------------------------------------------------------------------- 77163bc473 | Nikolai Lavsky | 2022-12-09 15:52:58 -0500 fix: add more uselessness checks for consumables There are several situations when the game doesn't let you use an item, but the item is not marked as useless. For example, scrolls are not considered useless in Gehenna or when you are confused or berserk. Scrolls of teleportation are greyed out in the Gauntlet, but not when you are under Stuck or -Tele status. Scrolls of enchant weapon/armour look exactly the same in your inventory when you have something to enchant and when there are no such items. This commit adds several uselessness checks for consumables. This affects not only the action panel, but also the `i`, `r`, `q`, and `v` menus and the quiver. -------------------------------------------------------------------------------- 6319d2f74e | Nikolai Lavsky | 2022-12-09 15:52:58 -0500 feat: grey out useless items on the action panel The game has a lot of situations when the player cannot use some consumables. There are branch-, god-, and status effect-specific item restrictions, some of which can be discovered only by trial and error. To better communicate these restrictions to players, grey out currently useless items on the action panel. -------------------------------------------------------------------------------- 5d0fae5569 | advil | 2022-12-09 11:41:51 -0500 build: ignore catch2 in unbrace This file already doesn't check hpp files, so catch2 v2 was fine. For build purposes I renamed catch_amalgamated.cpp to a .cc file, and so now unbrace tries to look at it. -------------------------------------------------------------------------------- f926380dec | advil | 2022-12-09 10:58:26 -0500 build: update checkwhite for catch2 v3 -------------------------------------------------------------------------------- 90188ab0ba | advil | 2022-12-09 10:43:36 -0500 build: update catch2 This updates our catch2 infrastructure to the latest version, 3.2.0. This is a pretty big version change for catch2, though since our catch2 tests are quite simple, it wasn't very impactful for the tests themselves. We were previously on v2.11.0. * v3 still supports an "amalgamated" build along the lines of what v2 did, but it is not the preferred way of building. However, the preferred way of building appears to require cmake. So I have therefore used the amalgamated build files. v3 is no longer header-only, and as indicated by the docs, is pretty slow to build (link especially) in this form. However, I don't think there's a viable alternative. * v3 does not support c++11. I have conditionally enabled c++14 when building catch2 tests, since the case where we can't support c++14 is production builds which don't need these tests. * Updating to v3 allows catch2 tests to build on arm mac (not possible in any version of v2 without backporting a patch), so this is a nice bonus. * This commit fixes an error and a bunch of warnings that showed up when updating the version. There's some extra catch2 stuff that I don't know what it is and didn't touch, I suspect it would need some attention though? -------------------------------------------------------------------------------- 523d8b781c | advil | 2022-12-09 10:43:36 -0500 fix: improve c++14 support We can't support c++14 generally because cao can't use it, but this commit allows crawl to build if the standard is set to c++14. Hopefully this won't be too brittle. -------------------------------------------------------------------------------- 7412bad402 | advil | 2022-12-08 16:08:38 -0500 build: move ci to ubuntu-20.04 This should hopefully be only temporary but there are a couple of issues that will need attention before we can run CI on ubuntu-22.04 (maybe more that we don't yet know about): * py3.6 is past its eol, and no longer usable. But, we shouldn't stop testing unless all servers are past this version. * catch2.hpp needs an update to work for some reason -------------------------------------------------------------------------------- 9a071d2b26 | advil | 2022-12-08 14:46:09 -0500 fix: possibly fix CI Looks like `ubuntu-latest` just changed, and the dejavu package name is one thing that broke. -------------------------------------------------------------------------------- 946f4849ff | Nicholas Feinberg | 2022-12-07 21:48:26 -0800 Fix sInv monster spellcasting logic (acrobat) Tracers didn't have can_see_invisible set, badly breaking targeting for spells like LRD when the player was invisible. Pretty funny, admittedly. -------------------------------------------------------------------------------- 7324886222 | Nicholas Feinberg | 2022-12-07 21:37:56 -0800 Add to-hit for Vhi's targeter I'd meant to do this when I first added it, but I ran out of... charge. -------------------------------------------------------------------------------- 5c55548130 | Nicholas Feinberg | 2022-12-07 21:22:30 -0800 Remove an un-needed 'else' -------------------------------------------------------------------------------- 1e86977b1d | Nikolai Lavsky | 2022-12-07 21:22:21 -0800 feat: display Resonance Strike damage in xv This should give players a better idea how much damage Zenata and ragged hierophants can deal at range. Also, this commit changes how the damage is displayed by the monster utility: (3d15+) -> ((3-7)d15). -------------------------------------------------------------------------------- 2fc4330e95 | Nicholas Feinberg | 2022-12-07 21:19:26 -0800 Discount Sniper (acrobat) Its default price doesn't take into account the very high delay (or the Acc+∞, but that's neither here nor there). Discount it from a bit under 1400 to a flat 800, matching Damnation. -------------------------------------------------------------------------------- c76752946b | advil | 2022-12-07 21:29:49 -0500 lint -------------------------------------------------------------------------------- f932412b2a | advil | 2022-12-07 20:49:07 -0500 feat: restful lobby endpoint Currently lobby info can be extracted in one of two ways. First, like beem, one can open a websockets connection and read the lobby json as it comes in. Second, and lesser known, is the rube goldberg machine that powers https://crawl.develz.org/. The way this works is that: (i) the server writes a "dglwhere" file in a specific format, (ii) the webtiles server admin exposes these via apache or the like[1], (iii) these are collected and parsed by a python script[2] on cdo and turned into aggregated json, and (iv) the cdo javascript side of things reads this json from disk. Historically, this format presumably was used by servers that were not running webtiles, but only one of those remains. This commit puts forward something that I hope will eventually replace a bunch of this, namely an endpoint that just directly generates the json that scripts like this would need. As usual, do not run bots on a server without permission, and don't scrape this frequently enough that a server admin would notice. This endpoint is very lightweight, so it has no restrictions or throttling, but it may need something if badly behaved bots are pointed at it (as they seem to be for most crawl infrastructure, sooner or later). [1] This is so lesser known that I think every server owner has forgotten about this step, and they have faded away over time except for cao. And it's not that the current cao admins actually remembered it either. [2] Script in question: https://github.com/crawl/dcss-website/blob/master/build-scripts/dgl-status-colle ct.py -------------------------------------------------------------------------------- 685d318daa | Nicholas Feinberg | 2022-12-07 14:41:02 -0800 Remove DID_KILL_PLANT Fedhas conduct It should be almost impossible for the player to hurt a plant under Fedhas, so no particular need to keep a conduct preventing you from doing the implausible. (You can still whack em in melee, but that's covered by the 'did attack friend' conduct.) -------------------------------------------------------------------------------- cb316572d5 | Zhang Kai | 2022-12-06 22:40:45 -0800 Create status.txt -------------------------------------------------------------------------------- 69fa218f66 | Nikolai Lavsky | 2022-12-06 22:39:47 -0800 fix: don't shelter projectiles from injuries Sheltering orbs of destruction from injuries does nothing, but ironbound preservers do it anyway. Friendly guardian golems are so friendly, they protect even hostile OoDs. This happens because of how `mons_aligned()` treats all projectiles. -------------------------------------------------------------------------------- 5902d59ca7 | Nicholas Feinberg | 2022-12-06 22:39:11 -0800 Fix checkwhite -------------------------------------------------------------------------------- bd94b87d25 | Zhang Kai | 2022-12-06 22:38:54 -0800 Update unrand.txt -------------------------------------------------------------------------------- c4c10c6247 | Zhang Kai | 2022-12-06 22:31:12 -0800 Update items.txt -------------------------------------------------------------------------------- e100a291cf | Zhang Kai | 2022-12-06 22:26:06 -0800 Update cards.txt -------------------------------------------------------------------------------- eb79e001ea | Zhang Kai | 2022-12-06 22:25:44 -0800 Update unident.txt -------------------------------------------------------------------------------- 3bdf3c9e3d | Zhang Kai | 2022-12-06 22:24:13 -0800 Update skills.txt -------------------------------------------------------------------------------- 7447358451 | Nicholas Feinberg | 2022-12-06 22:21:51 -0800 Fix various water issues (dilly) - Make large species move at normal speed in shallow water, matching the monster behaviour. (I agonized over this for years, but honestly it's fine. Water does other stuff, and most species aren't large.) - Don't double-message when entering water while invisible as a naga or other large-torso species. - Various other refactorings. This introduces at least one unforseen bug. Closes #2769. -------------------------------------------------------------------------------- ca3939328b | Nicholas Feinberg | 2022-12-06 21:59:19 -0800 Treat monsters with throwing weapons as ranged (acrobat) Don't allow rest/autotravel while an enemy with a throwing weapon is visible across impassable terrain. RIP Sergey's 38 streak. Fixes #2833. -------------------------------------------------------------------------------- 0b3c3f4973 | Roadster Tracker | 2022-12-06 21:54:24 -0800 Fixes this to be consistant with current penalties (Committer's note: reworded somewhat.) Fixes #2838 -------------------------------------------------------------------------------- 46e4cf009a | Zhang Kai | 2022-12-06 21:52:14 -0800 Update species.txt -------------------------------------------------------------------------------- 9f89ac5fbf | Zhang Kai | 2022-12-06 21:50:34 -0800 Update features.txt -------------------------------------------------------------------------------- 2b7a1c9105 | Zhang Kai | 2022-12-06 21:48:44 -0800 Update backgrounds.txt -------------------------------------------------------------------------------- b083acad24 | Nicholas Feinberg | 2022-12-06 21:44:26 -0800 Make Sniper +27 (hellmonk) The +0.4 base delay is very cool but very painful - Sniper mostly did less damage over time than a basic triple crossbow. At +27, it's still often a little weaker, but it's comparable and *much* cooler. -------------------------------------------------------------------------------- 26384909b7 | Nicholas Feinberg | 2022-12-06 21:37:31 -0800 Simplify partially-resistable attacks (hellmonk) Instead of ice, lava, and water being 40/55/40% resistable by their applicable resistance (respectively), make them all 50% resistable. This is a small nerf to hailstorm/glaciate/polar vortex/iceblast/flash freeze/etc, and a small buff to fire storm/bolt of magma/lava spit. (Except against vulnerable creatures.) We can add a little compensation damage later if it's really needed - this is just intended to simplify. -------------------------------------------------------------------------------- eff3892269 | Nicholas Feinberg | 2022-12-06 21:34:45 -0800 Add a special message for mindbursting GOBs They're nothing but minds! -------------------------------------------------------------------------------- ea827ebd68 | gammafunk | 2022-12-06 21:06:43 -0600 feat: Adjustments to an arrival vault For `tekkud_arrival_beachfront_property`, reduce the number of fog machines, since they're overlapping each other. Add yellow color to the floor for the tiles with sand floor tiles. Reorder DES, reindent, and checkwhite. -------------------------------------------------------------------------------- 84d97b07b6 | yrdzrfxndfvh | 2022-12-06 21:04:25 -0600 feat: A beachfront arrival vault The player arrives on D:1 at a large, abandoned beach front, where they can see misty open sea and abandoned shops. Level item generated in the vault can only place along the beach, implying that they too washed ashore. Committer's Note: Added a descriptive commit message. Part of PR #2796. -------------------------------------------------------------------------------- fe72c296f8 | Aliscans | 2022-12-06 10:36:01 -0500 fix: initialise you.sacrifice_piety. Initialise you.sacrifice_piety before Crawl copies it to a new character's save file. Clear the whole thing (when only the section between ABIL_FIRST_SACRIFICE and ABIL_FINAL_SACRIFICE is saved) as that's what FixedVector provides a function for. On Linux 3.16.0 with Crawl 0.30-a0-394-g3e4acdb0ae, this takes Crawl (on my system) from a situation where valgrind reports access to an uninitialised variable when I start a new character to one where it doesn't. [Committer's note: reformatted commit msg, added second para from PR description. Resolves #2863] -------------------------------------------------------------------------------- 3e4acdb0ae | advil | 2022-12-05 17:29:03 -0500 fix: clear monster seen flags for wizmode map wipes One (even one who wrote this command) might have thought it already did this, but it didn't. -------------------------------------------------------------------------------- 54b8e3be05 | advil | 2022-12-04 15:22:14 -0500 fix: don't block with many spectators on game end The `go_lobby` function is individually just a bit below the threshold of being a problem (though it could use some testing in production), but with a lot of spectators, this loop can easily be a problem when the player saves or otherwise ends the game. Even in local testing I'm seeing 500ms when 10+ spectators disconnect. This commit converts the loop to one that is called asynchronously (for backwards compatibility, via old-fashioned IOLoop callbacks). -------------------------------------------------------------------------------- 7679850db9 | advil | 2022-12-04 12:59:23 -0500 fix: improve (with hacks) map sending to spectators When a new spectator joins, `_send_everything` pushes out a whole bunch of json data which previously was sent to all sockets connected to a process. The biggest part of this is usually the map: a fully mapped level can involve a 100k+ json, and handling this turns out to be impactful, at least with many spectators. (I haven't profiled most aspects of this, but what I do know is that the deflate time on cao can be 3-10ms, which can get into human-noticeable territory with 10 or more spectators. Even on a very fast local machine I can get this into what are probably noticeable latencies with 20+ spectators.) This commit adds some heuristics on the server side so that, after some spectator(s) join, the next full map is sent only to those spectators. This should take map handling from linear with the number of spectators, to constant with the number of spectators. Webservers would need to restart to get this change. I also considered various more robust seeming versions of this, including trying to compress the map message only once. But this turns out to be extremely hard to do with how the deflate protocol works. And I expect that there's also json decoding penalties for the map on the receiver end. I may try to add something more systematic via control messages, but this change also has the advantage that it should work with any version of crawl that is currently played online. -------------------------------------------------------------------------------- f4ee2d632a | advil | 2022-12-04 12:59:23 -0500 refactor: clean up ws_handler send code This improves the organization of the send code, and adds some comments; should not change any behavior. (Was originally part of a bigger rewrite that I abandoned, that would have attempted to not deflate once per socket.) -------------------------------------------------------------------------------- 80c34de65d | advil | 2022-12-03 10:11:20 -0500 feat: prevent good mutations from causing unfixable stat zero Following 6a3c3ed53f1b it is possible to get stuck with stat zero via only base stats + good mutations. For example, a starting feee with two levels each of clever and agile has base 4 str, and -4 str from the mutations. Recent example: https://crawl.xtahua.com/crawl/morgue/sanka/morgue-sanka-20221201-183043.txt This char went from str 6 to 0 in one jiyva pass. (Note that the present commit doesn't actually check mutation loss, but it would have prevented the case in this morgue because loss happens before gain.) This is very rare for normal players so I think just hasn't come up, but on a jiyva char can happen rather easily (and rapidly) especially with an early jiyva conversion. This circumstance can effectively make a char non-viable, with the only counterplays being mutation potion luck, or preemptively raising stats. A 4str char possibly *should* consider the latter, but it doesn't really seem like a large set of "good" mutations is an amazing way to reinforce this message, and a char like the one above would have only ~1 opportunity to even do this. The commit only checks muts flagged with mutflag::good, so weak/dopey/clumsy could still cause stat 0 (not sure about whether they should be able to, as they may have the same fixability issues, but the circumstances are a lot different and would at least typically allow more time to preemptively raise stats). The commit also doesn't check items and so on, since if a mut causes stat 0 in combination with items, there is an immediate counterplay. The mutation is silently rerolled if it would cause stat 0. To do this, I refactored how stats + mutations are handled to be a bit more clearly data-ified. Interaction with the stats code is still somewhat brute force, though. -------------------------------------------------------------------------------- 8d7d949f56 | Kate | 2022-12-02 18:14:41 +0000 Don't allow Transference to work on projectiles -------------------------------------------------------------------------------- be348a5456 | advil | 2022-12-02 12:33:53 -0500 refactor: centralize some version-related metadata The goal of this is to make it straightforward for forks to change this metadata in one go, especially the bug report line (please send your bug reports to you, not us). Minorly improve what info is displayed where, e.g. show the build target with version number, show the bug tracker link on the version page, a few other things. -------------------------------------------------------------------------------- cbb7f7dcb2 | advil | 2022-12-02 12:30:16 -0500 fix: update morgue parsing from webtiles crashes Broken since 81ff5c4599e2d4d4d. A following commit will add a comment to dbg-asrt.cc that will give specific instructions on how not to break this in the future. -------------------------------------------------------------------------------- 814673872d | advil | 2022-12-02 09:22:06 -0500 fix: don't break admin panel on watchers -------------------------------------------------------------------------------- febfb9b408 | Kate | 2022-12-01 15:59:34 +0000 Fix a hints mode lua error (#2845) Closes #2845. -------------------------------------------------------------------------------- 471f0101a1 | Kate | 2022-12-01 15:59:34 +0000 Fix a hints mode typo (#2846) And reword slightly. Closes #2846. -------------------------------------------------------------------------------- f862984e2c | advil | 2022-12-01 09:04:49 -0500 fix: further tweak how player info is sent to spectators Also, comment some of this weirdness. -------------------------------------------------------------------------------- a738ffb698 | advil | 2022-12-01 08:54:16 -0500 fix: don't update time display on spectator connection This is a bit tricky to keep in sync, because the server-side version of this works differently than the webtiles client version. (I'm inclined to say the webtiles version is probably better and should be ported over to the c++ side, but that's a bigger project.) This commit sends the server-side time delta value on spectator connection, and uses the fact that this is only sent by `_send_everything` to ignore time updates in that case for the player. It's still possible for a spectator to be seeing slightly out of sync values for this on connection, but it now shouldn't ever be updated for the player on this case. -------------------------------------------------------------------------------- 6ea064c7b4 | advil | 2022-11-30 21:22:34 -0500 fix: remove debug code (ge0ff) -------------------------------------------------------------------------------- 72b080bd28 | advil | 2022-11-30 18:27:33 -0500 fix: add some missing crt checks These fix a way of getting the exceptions reported in https://crawl.develz.org/mantis/view.php?id=11387 namely, if a spectator joins while a crt menu is being displayed. In 2018 there were probably more of these, but now I think this is mainly the skill menu. (However, in current testing these exceptions do not cause anything like the symptoms seen in that mantis report..) -------------------------------------------------------------------------------- 06526a8a8b | advil | 2022-11-30 18:26:58 -0500 fix: clean up ui stack handled flag -------------------------------------------------------------------------------- 86d51d8b50 | advil | 2022-11-30 17:31:07 -0500 fix: don't keep processing webtiles ui-stack messages (dilly) The `ui-stack` message gets sent when a spectator joins, and consists of a sequence of menu descriptions. When a spectator was already viewing a submenu, and a new spectator joined, the same menus would be added to the old spectator's ui stack on top of other already displayed menus. This commit simply prevents processing of this message more than once, which is correct for the way it's currently used. -------------------------------------------------------------------------------- 5cb311bc9f | advil | 2022-11-26 16:57:25 -0500 fix: unbreak webtiles server config reload -------------------------------------------------------------------------------- 24c37cb796 | advil | 2022-11-26 10:37:05 -0500 fix: show IP for webtiles token logins 36e498a9c added this for regular logins, but not token logins for some reason. -------------------------------------------------------------------------------- eb1d99f871 | advil | 2022-11-26 10:31:37 -0500 feat: allow disabling anonymous spectating -------------------------------------------------------------------------------- 95c0257040 | advil | 2022-11-24 10:15:14 -0500 fix: don't allow treeform over deep water 80ed8d6641f added a check to allow transformations over dangerous terrain when the player has tempflight, but this missed an interaction with treeform. Treeform disables all sources of flight immediately, so if the player had tempflight (e.g. via !flight), this would lead to sequences like the following: You turn into a tree. Your roots penetrate the ground. You fall into the water! You can't survive in this terrain! You fly above the water, but the process is draining. Splash! You fall into the deep water. You sink to the bottom. For the duration the player is in deep water, they get emergency flight draining. (Permaflight had a correct version of this check.) To fix, move the tempflight check into `_flying_in_new_form` so the interaction with forms forbidding flight is handled correctly. Also, remove an obsolete Xom death check that looked at deep water/lava. -------------------------------------------------------------------------------- d37427bb62 | Neil Moore | 2022-11-22 19:05:13 -0500 Add a missing quote quote Does no one double-check my commits? You're playing with fire here. [skip ci] -------------------------------------------------------------------------------- 0ce2686038 | advil | 2022-11-22 12:34:44 -0500 fix: correct a slime-related bounds check -------------------------------------------------------------------------------- ad7725a93e | advil | 2022-11-19 09:43:51 -0500 fix: gitignore generated version info -------------------------------------------------------------------------------- 22bf6fb5de | advil | 2022-11-19 09:42:05 -0500 fix: remove generated file accidentally committed -------------------------------------------------------------------------------- 3872ae82dd | advil | 2022-11-19 09:36:58 -0500 fix: spell menu improvements (elliptic) (Eventually this menu needs to be refactored so that it's not a ToggleMenu...) * Fix a bug with the footer if the regular cast menu * put the action name in the header, so it's more quickly apparent what menu version is being shown. -------------------------------------------------------------------------------- 86fb4627a9 | advil | 2022-11-17 19:28:14 -0500 lint -------------------------------------------------------------------------------- 839099abd5 | advil | 2022-11-17 17:49:18 -0500 feat: show webtiles version to admins I didn't find a way to do this except via some brute force build stuff. It possibly would make sense to show this version info (or a much simplified version of it) somewhere in the lobby as well, but there's no immediately convenient place. -------------------------------------------------------------------------------- 93dc600154 | patrick | 2022-11-17 13:43:44 -0500 Update the entrance message for the Pan rune shop vault The other phrasing suggested to some that the pandemonium lord would leave you alone if you paid up for the rune, which is not the case. Now the announcement is a little more clear about how to get the rune, without suggesting how the panlord thinks about the situation, one way or another. "nicolae why does the pan lord want to kill its customers" i don't know buddy i'm not a pan lord -------------------------------------------------------------------------------- e7f957f1db | Nicholas Feinberg | 2022-11-15 16:38:06 -0800 Fix Devastator effect description (MIC132) It hits friends *and* foes! -------------------------------------------------------------------------------- f6b3ef1049 | advil | 2022-11-13 13:32:58 -0500 fix: remove an obsolete log message Tornado hasn't had blocking logging for a long time, and it seems that server admins tend to find this message alarming. Remove. -------------------------------------------------------------------------------- 76810e16d9 | advil | 2022-11-13 13:20:02 -0500 fix: use buffered writing mode for ttyrecs I can't see any good reason for this to be unbuffered, and only bad potential consequences. This does some flushes for good measure, but I'm not even sure these are necessary. Also, fix some misc timing logging stuff. -------------------------------------------------------------------------------- 0b7830ef10 | advil | 2022-11-13 13:20:02 -0500 feat: more manual timing logging Add a mechanism for explicitly logging slow IO. There's some redundancy with slow callback logging, but this is a lot more focused, provides precise information about when IO in particular is blocking, and is on by default. This is part of my continued quest to reduce lag on cao... -------------------------------------------------------------------------------- 30ec35652d | advil | 2022-11-13 13:20:02 -0500 refactor: clean up TerminalRecorder a bit In particular, separate object initialization from the calls that attempt to start the process. (This will eventually be needed for an async version of this class, anyways.) -------------------------------------------------------------------------------- 447f08457e | Nicholas Feinberg | 2022-11-12 13:51:32 -0800 Fix hurling damage ratings (Undo) -------------------------------------------------------------------------------- d0147acb1a | advil | 2022-11-10 18:44:08 -0500 fix: improve slow callback logging code 1. Rip out the old manual code, completely obsolete now. (The ony thing plausibly useful remaining was logging that connected up a username with blocking, but I don't think this is necessary.) 2. Add some try...except future-proofing, given the level of weird introspection this code is doing. 3. Improve logging for slow handlers on BaseAsyncIOLoop, which were logged in a quite useless way (but showing up as blocking on CAO). -------------------------------------------------------------------------------- 0d69a1922f | advil | 2022-11-07 20:16:59 -0500 feat: a webtiles config override specifically for live-debug mode To test things on production servers in live-debug mode, I'm often editing config.py in place. This isn't ideal (forgetting and not doing a dgl publish could lead to these setting tweaks ending up in production). So, add a way to override only settings for live-debug mode, based on the config.yml override. Of course, to test a config as close to possible as production, you probably don't want to heavily modify this. -------------------------------------------------------------------------------- 9a6ad51620 | advil | 2022-11-07 19:50:02 -0500 feat: configurable webtiles milestone tailing interval This feature is not used for current versions, and 1s strikes me as potentially quite aggressive for an old server with many seldom-played versions. Therefore, it seems useful to allow this interval to be configured. I kept the default at 1s for now, though. -------------------------------------------------------------------------------- 0b6ecbc06f | advil | 2022-11-07 19:45:21 -0500 fix: improve logging for RequestHandler and PeriodicCallback For both of these, the slow callback logging printed fairly anonymous info that made it hard to identify the actual source. This commit improves the situations for both classes. For PeriodicCallback, I was able to straightforwardly override `__repr__` since the object itself is used. The method for RequestHandler is more entertaining than good. -------------------------------------------------------------------------------- 4c39ff33d3 | advil | 2022-11-07 10:14:32 -0500 fix: improve repr-based callback logging in webtiles The default `repr`s for tornado callbacks were not very useful when trying to debug slow callbacks, which has led me to spend a fair amount of effort on relatively janky manual logging via the `@util.note_blocking_fun` decorator etc. This sort of worked, but wasn't very accurate beyond certain obvious functions (lots of false positives), and it's not very maintainable. I have done a dive into asyncio internals, and come up with a much better set of solutions. First, the `repr`s turn out to have not been useful simply because asyncio generates them with reprlib, which by default limits `repr`s for "other" to 20 chars. Since IOLoop callbacks from the webserver are essentially always wrapped in `functools.partial` (17 chars), they were pretty much guaranteed to have no useful info in them - but this is easily tweaked via the reprlib API. There are a bunch of other possibilities, but still always very long strings where 20 chars is just not enough. Second, a lot of the info here for many callbacks can be eliminated: to debug webtiles blocking callbacks, we don't really need calling info, just the name of the callback itself. This commit writes some custom repr code that fixes the reprlib limit, and handles some of the IOLoop-specific special cases much more nicely. It does use asyncio Handle internals a bit, but it looks likely to me that these internals are fairly stable. I think this probably fully obsoletes the manual blocker tracking code, and so if this remains true after some testing, a future code will likely just remove it entirely. -------------------------------------------------------------------------------- 6b83867211 | advil | 2022-11-06 21:28:52 -0500 fix: add COLLATE NOCASE to the username index ...needs to exactly match the query. -------------------------------------------------------------------------------- e1e7d3de80 | advil | 2022-11-06 21:00:02 -0500 fix: add a unique index for dglusers.username Despite being treated like it, username was neither indexed nor constrainted to be unique. In large user dbs (aka CAO, with around 100k rows), this was actually impacting performance -- lookup was on the order of 100ms there. This commit creates new databases with a unique index, and tries to add an index on upgrade. (Note that just a regular index doesn't see noticeable performance gains without something else; I was able to tune the queries in combination with a non-unique index, but I think it's safe just to enforce uniqueness.) I know that it's possible for this to fail, because uniqueness was not previously enforced except by side effect (CAO has some duplicate rows from 2007 right now), so it's handled relatively carefully. If an admin encounters the error here on upgrade, they probably should go and manually fix in their user db (typically you can do this by renaming one of the duplicates, but you should check carefully). -------------------------------------------------------------------------------- 1e81539c98 | advil | 2022-11-06 14:55:20 -0500 fix: more blocking annotation adjustments Because the dgl file update runs on a timeout, it was getting false positives for stuff that happens early in a connection, so explicitly prevent the timeout version from doing this. Also, in my local testing, some of these were false positives for MainHandler.get (namely the initial render of client.html). -------------------------------------------------------------------------------- 17a13138e6 | advil | 2022-11-06 10:15:16 -0500 fix: replace password tokens when generating new ones The recovery token code doesn't really ever automatically delete previously created tokens, prior to this commit this only happened on an actual password change. Because of this, generating a new token when the previous one(s) were unused would just lead to multiple potentially active tokens. It seems much less confusing (and perhaps more secure) to only allow one active recovery token at a time, so this commit deletes any old tokens on generating a new one. This will also clear out any expired tokens. If a token is expired and unused, it will still linger aside from these two cases (passwd change, passwd reset) -- not sure whether it would be better to delete these at some point? They probably do slowly build up over time. -------------------------------------------------------------------------------- 0c61f328b0 | advil | 2022-11-06 10:10:35 -0500 feat: allow customizing recovery token lifetime Also, default it to a longer value. Previous this was hardcoded to 1 hour, which is definitely a pretty safe option, but in practice was too short for servers where admins are doing the password resets. Basically it makes any admin-managed password reset that is not done synchronously fail. In a quick survey of best practices here (or at least practices), I found answers ranging from 1 to 24 hours. The previous value of 1 is still probably practical for servers that have email password resets. -------------------------------------------------------------------------------- dc488dc59d | advil | 2022-11-05 17:32:08 -0400 refactor: rewrite webtiles db code Since the very beginning (82b49a24b7ed1), webtiles has accessed its user databases by opening and then closing a connection on each access. I haven't been able to figure out any reason why it should do things this way (sqlite3 can certainly handle concurrency), and there are a bunch of reasons why this is bad: (a) it increases overhead on each call (an fopen is necessary each time, probably among other things), and (b) it leads to a bunch of bad code to minimize the number of db opens per each function. This commit rewrites the db access code to have a persistent connection to both of the sqlite3 databases. Because of this change, I was also able to majorly refactor most of the db calls so that there is much less duplicate code. This commit also changes (arguably) a bunch of stylistic stuff in this code, and improves aspects of the API. Along the way, I wrote unit tests for the major functions of this module. I'm not sure how significant the speedup is, but it isn't nothing; on a SSD in local testing this about halved the time of db calls (though from ~20ms to ~10ms, so may or may not be impactful). But I suspect on a server with a spinning disk (aka CAO), this will be quite noticeable. -------------------------------------------------------------------------------- 79de549745 | advil | 2022-11-05 17:30:36 -0400 feat: mark some potentially blocking functions -------------------------------------------------------------------------------- f58ed5266c | advil | 2022-11-04 19:47:31 -0400 refactor: clean up save info collection Previously, save info was collected for each game mode. In most scenarios, this results in many unnecessary calls to crawl binaries, because a single `-save-info-json USERNAME` call prints all saves for that binary. Webtiles already had a mechanism for distinguishing binaries that handles dgamelaunch-config setups correctly, so this commit takes that and uses it to reduce the number of calls when collecting save info for the lobby. Now, each binary is called at most once. This commit also slightly cleans up how the callback chain is constructing, and better comments this (slightly baffling) bit of code. -------------------------------------------------------------------------------- e9b783979b | advil | 2022-11-04 19:44:08 -0400 refactor: reorganize webtiles.config Move most module-level assignments to the top of this file, rather than scattered all over the place. Also, some tweaks to game info caching. -------------------------------------------------------------------------------- f0b7877050 | advil | 2022-11-03 09:40:43 -0400 fix: correctly handle game mode with non-mode options For the game mode encoded by the binary as "" (e.g. normal game mode), the code that collected modes on startup would fail if there were non-mode options in the option sequence. This fixes handling of "" modes. Also, add some comments to clarify what is happening here. -------------------------------------------------------------------------------- c8fac2a973 | advil | 2022-11-03 09:06:22 -0400 refactor: centralize some webtiles call construction code This refactors some common code from a few different places into the new GameConfig object. -------------------------------------------------------------------------------- faeacb97bc | advil | 2022-11-03 09:03:30 -0400 fix: eliminate some double error logging in webtiles 7915c1070c07 added logging for arbitrary exceptions that happen during crawl startup. However, sys.exit works by raising an exception, so any explicit calls to `err_exit` then resulted in multiply logged error messages (actually triple-logged because of "During handling" messages). So, only do the outer logging on exceptions other than SystemExit. -------------------------------------------------------------------------------- 04419e6e1e | advil | 2022-11-03 08:01:02 -0400 fix: cache some info across webserver reloads Previously, `collect_game_modes` was rerun on a HUP. Unfortunately this is a very heavy function with big game configs, as it runs the crawl binary for each game and blocks the whole time. This fix caches the gametype info for each binary across reloads, since in practice I think this will never change; this function should now only block on initial load (which is fine). -------------------------------------------------------------------------------- 682706514a | advil | 2022-10-31 10:17:00 -0400 fix: missing module -------------------------------------------------------------------------------- 7915c1070c | advil | 2022-10-31 09:44:41 -0400 fix: better log exceptions during webtiles startup If an exception happens in this phase on a production server, it seems to vanish into the ether. This commit adds explicit try blocks and logging. -------------------------------------------------------------------------------- 89bb51ec76 | advil | 2022-10-30 18:31:32 -0400 fix: adjust some game config validation details Previously, config.py game configs weren't actually validated, so this check seems to have some incorrect assumptions that flew under the radar. `pre_options` was not declared at all, and `client_path` was incorrectly described as required (if it is not set, the webserver will pick it up from the crawl binary). -------------------------------------------------------------------------------- 36bb253adc | advil | 2022-10-30 18:09:48 -0400 fix: adjust `send_json_options` behavior when unset This option was added in 0.14, and when unset was treated as False, I assume for compatibility with versions that were around at the time. However, very few servers even host versions this old now, and the code also handles gracefully if the crawl binary errors when called with the relevant option. I think it's time to get rid of this from active webtiles configs, and so this commit accordinatly treats it as True if it is unset. It can still be explicitly set to False for servers that are still running relevant versions (this may be a good idea for io-bound servers at least). -------------------------------------------------------------------------------- 398606ed4f | advil | 2022-10-30 18:09:48 -0400 feat: templating enhancements for webtiles game config Previously, webtiles allowed some minor string templating via %n and (recently) %v, but that was it. However, in practice, on production servers most game settings are repeated across many games, and some way of editing them all it once is necessary to avoid errors. Most servers (with only a few exceptions) dealt with this by running the dgamelaunch-config package, which layered a bunch of string templating on top of config.py (and other files). This commit adds some relatively major enhancements to game definitions in webtiles config that accomplishes the main goals here without needing an external package. The main new feature here is the ability to specify a partial game definition via a template, and then use that template to fill out a full game definition. There's a bunch of ways to use this, and it's probably somewhat overengineered even for the relatively complex setups on current production servers, but my hope is that (a) this will make life a lot easier for those managing large game configs, and (b) this will make life a lot easier for anyone who wants to make changes to how game configs are used. To give a flavor for how simplified this is (see config.py and base.yaml for full examples), the simplest use case is to define a template `default`, which will then be used by default on any other templates and game definitions, that has all the shared settings. The config.py example does this, allowing the games definition itself to be written as just: ``` games = collections.OrderedDict([ ("dcss-web-trunk", dict(version = "trunk", name="Play %v",)), ("seeded-web-trunk", dict(version = "trunk", name="Seeded", options=["-seed"])), ("tut-web-trunk", dict(version = "trunk", name="Tutorial", options=["-tutorial"])), ("sprint-web-trunk", dict(version = "trunk", name="Sprint %v", options=["-sprint"])), ]) ``` This code may overall still need some bugs shaken out as it goes into production, so server owners may prefer to let me test it out on CAO for a while before rewriting their configs. This commit along the way refactors a whole bunch of code. 1. Game loading is completely rewritten. It now supports game removals on HUP, and treats config module games in exactly the same way that yaml games are treated for loading purposes. 2. Game config string templating is restructured again: game configs are now in a custom mapping class, so most code can just get templated strings from objects of this class directly. (For convenience, I've still kept the `game_param` function introduced in a recent commit.) A bunch of older string templating code is cleaned up. 3. Lots of documentation. Though, this code now has a bit of an identity crisis as to where this documentation should be; it's split between config.py and base.yaml. Perhaps it should be in a third file. -------------------------------------------------------------------------------- c890208271 | advil | 2022-10-30 18:09:48 -0400 fix: unbreak webtiles dgl_mode=False This was freezing because of the ban check. (It appears that also, the main menu is semi-broken in this mode, but I'm not going to deal with that right now.) Also, better document the option. -------------------------------------------------------------------------------- e5acde7520 | Kate | 2022-10-29 19:30:58 +0100 Allow examining the map border again -------------------------------------------------------------------------------- 02c875d3d0 | Kate | 2022-10-29 19:30:24 +0100 Improve some targeter messaging For Simulacrum, Inner Flame and Poisonous Vapours - don't print "You can't see that place." when aiming at a monster that can't be affected. -------------------------------------------------------------------------------- 3f6d011563 | Nikolai Lavsky | 2022-10-29 19:30:24 +0100 fix: make Poisonous Vapours targeter ignore rPois enemies Otherwise the targeter always starts on the closest monster, even if the monster is resistant or immune to poison. Closes #2783. -------------------------------------------------------------------------------- b34b94214e | advil | 2022-10-29 13:33:41 -0400 fix: missing assignment -------------------------------------------------------------------------------- 8ab09dc110 | advil | 2022-10-28 18:03:50 -0400 fix: fix and generalize some webtiles templating code This was crashing if `version` wasn't set, so generalize. (Probably a bit over the top...) -------------------------------------------------------------------------------- 8f2769a82d | advil | 2022-10-28 14:27:49 -0400 feat: make creeping frost damage fully resistable As discussed in dev chat, this was not intended (a side effect of the zap type), and has been a surprising damage spike for players. This commit converts the damage part of this spell into BEAM_COLD so that it is normally resisted, but otherwise keeps the damage the same. It also documents flash freeze's resistance bypass (rime drakes etc), and documents creeping frost's `frozen` status bypassing rC. I considered whether to change rime drakes as well, but they are balanced in other ways so it would need more consideration (breath timer, and flash freeze itself does no damage with the frozen status already applied). -------------------------------------------------------------------------------- 85436e0a43 | hellmonk | 2022-10-27 21:53:43 -0400 randomly round englaciate duration -------------------------------------------------------------------------------- 9f0d5c6853 | hellmonk | 2022-10-27 21:24:56 -0400 Try a new haunt ghost formula Remove the deprecated stepdown_value call and just use random2avg to set ghost number. Seemed to give ok results in testing but can be adjusted if this is too consistent/inconsistent/otherwise "off". -------------------------------------------------------------------------------- f42c42fe99 | hellmonk | 2022-10-27 21:12:13 -0400 additional spell random rounding fixes -------------------------------------------------------------------------------- 6dfb9d8481 | advil | 2022-10-27 18:21:27 -0400 fix: a couple of mistakes -------------------------------------------------------------------------------- b515db48ae | advil | 2022-10-27 17:38:52 -0400 feat: enhance templating for webtiles game configs Previously, these allowed using the template string "%n" in certain game config fields, which would be replaced by the username. This commit expands this out a bit, with the target of some common setups on production servers, in particular to allow specifying a version string once and using it in a templated way. Some (quite minimal) examples in the default config, but this can be used in most path fields as well as pre_options, options, and the game binary name. -------------------------------------------------------------------------------- 6d2431741b | advil | 2022-10-27 10:38:08 -0400 fix: fix and refactor webtiles hidpi implementation This commit revamps the hidpi implemenation in 3925e268bea408. To get hidpi to work in a browser canvas object, the internal dimensions need to be twice that of the external dimensions (essentially). The normal way of implementing this is to multiply the internal dimensions by devicePixelRatio, and scale the canvas accordingly. We used to do this, but 3925e268bea40 changed things so that the external dimensions were halved. This was, according to the commit message, in order to prevent scaling artifacts on firefox. (Where the salient fact is that window.devicePixelRatio on some browsers, these days including chrome/firefox but not safari, also changes with browser zoom.) However, a consequence is that tile rendering is halved on hidpi devices, exactly not what should happen. This commit changes canvas sizes to be correct, and refactors a big chunk of hidpi rendering code to be somewhat clearer, and with better abstraction. Sadly, this change cannot work just by scaling the canvas, as browser pizel snapping from fractional pixels is quite varied and inconsistent. So, pixel snapping has to be implemented manually. The new approach is the same as before, just (maybe) a bit clearer: each tile is snapped to non-fractional locations and dimensions, and tile rendering happens in a fashion that scales to these dimensions. There's a lot of subtle potential bugs here. I suspect that the previous implementation that 3925e268be replaces wasn't wrong in using a scaled canvas, but rather had issues in its assumptions about pixel snapping. Why was this wrong for so long? The half-size tile rendering wasn't immediately noticeable because the dungeon is auto-scaled, and the monster list matches its scale to the dungeon. But, icons in menus and popups instantiate the problem, and scaling them to the dungeon size is not ideal. The action panel also had some workarounds for this that I didn't fully understand at the time. (I only noticed this myself after many years of working on this stuff because I switched from a regular-density monitor to a 4k monitor of similar size, even though I've used retina devices for a long time. Hidpi devices have been broken for so long that I won't be surprised if we get requests to readd this behavior as an option or something, menus may look odd now to people who have only ever played on hidpi.) I've tested this on a range of browsers, DPIs, map zoom levels, and browser zoom levels, and it seems to work across all of them at this point. -------------------------------------------------------------------------------- f7cf27c79d | advil | 2022-10-27 08:39:02 -0400 fix: maybe fix an arcjolt crash -------------------------------------------------------------------------------- 102857c98e | advil | 2022-10-26 22:16:38 -0400 fix: autotargeting for Vhi's electric charge This was quite involved because Vhi's has its own special targeting code (from when it was an ability). This code is involved enough that I don't immediately know exactly how to merge it with more general spell targeting code. This commit at least removes some of the special casing, but not all by a long stretch -- just enough to support non-interactive targeting (e.g. autofiring via the quiver). -------------------------------------------------------------------------------- f7783e6616 | advil | 2022-10-26 17:04:59 -0400 fix: numpad keys at cast prompt This lets numpad ./*/enter work at the (non-menu) cast prompt. -------------------------------------------------------------------------------- bdac0718f0 | Kate | 2022-10-25 19:25:09 +0100 Update a comment To clarify what effect_noise is and how it works, and hopefully prevent future cases of spells having an effect_noise but not using it anywhere! -------------------------------------------------------------------------------- eaf674384c | Kate | 2022-10-25 19:18:06 +0100 Adjust monster dragon spell noisiness Dragons were special-cased to be extra noisy on casting their spells, but it only applied to their breath weapons, and not to the Serpent of Hell's Summon Dragon and Xtahua's Paralyse (which thematically are also cast by roaring). Make those get their bonus noise, and don't make Bai Suzhen's wizardly (pre-dragonform) spellcasting extra noisy. -------------------------------------------------------------------------------- 6ace9fa8eb | Kate | 2022-10-25 19:18:06 +0100 Make Malign Gateway's horrible noise audible It claims to make a horrible noise and shake the dungeon but then makes no actual sound - give it 15 noise. -------------------------------------------------------------------------------- 8190f5fdf4 | Kate | 2022-10-25 19:18:06 +0100 Adjust noise for lightning-based spells Lightning Bolt, Arcjolt and Chain Lightning are all intended to be especially noisy, but the changes to zap noise now cause them to create their noise on every target hit, instead of just once at the casting position. Rather than special-casing them again, keep the new behaviour but reduce the bonus noise for Lightning Bolt and Arcjolt. Chain Lightning gets to just be extremely noisy, as is fitting for a level 9 spell. -------------------------------------------------------------------------------- 667f962bc3 | Kate | 2022-10-25 19:18:06 +0100 Let monster zaps make noise on hit When setting up beams for zap-based monster spells, the loudness value was discarded, making them silent on hit. There's no obvious reason that they should work differently, so allow them to work the same way as player zaps, and make noise happen when the player is hit by a beam. -------------------------------------------------------------------------------- d80880ac2d | Kate | 2022-10-25 19:18:06 +0100 Refactor zap noise handling Remove loudness from the zap_info struct, and base the noise made on hit by zaps on the loudness of the associated spell. Enchantments make no noise on hit, and explosions still have their noise calculated separately based on radius, but otherwise all zaps make noise equal to the spell's effect noise (if present), or the spell level. In general, zaps that were historically player spells (Bolt of Fire/Cold etc) already made some noise, but this commit adds noise to many monster-only zaps that previously made no noise on hit. Probably this is fine, but there's room for more adjustments if needed by adjusting effect noise individually (as is currently done for cloud-based spells which have a low effect noise). -------------------------------------------------------------------------------- 1022a3223f | Kate | 2022-10-25 19:18:06 +0100 Simplify noise on casting a spell Instead of having a semi-arbitrary noise value assigned to every spell, have all spells create noise equal to their spell level on cast. "Effect noise" remains and can be used for spells that should be extra noisy for some reason (either just when cast, for example with Lightning Bolt, or at a specific time/location, for example with Passage of Golubria). A few spells are specifically flagged as silent to allow them to be used for stabbing sleeping monsters (Ensorcelled Hibernation and Passwall, as well as Silence since it'll always be silent anyway). Very few spells end up with noticeable changes as a result - most spells already had noise approximately equal to their spell level, with some drift as spell levels changed. Zap-based spells also have a separate noise value when they hit something, which will be adjusted separately. -------------------------------------------------------------------------------- ae38170b09 | advil | 2022-10-25 13:51:15 -0400 feat: full CLI for dgl flag management Previously, for anything other than bans or holds you needed to use dgamelaunch-config scripts, or set the flags manually via sqlite itself. This provides a cli for setting all (in-use) flags. It also updates to reserve the new flags in use on CDI; these are not currently used by webtiles at all except via this interface, and there's some cosmetic options that alert the user about this. This commit also refactors some of the other CLI subcommands and improves error messages. -------------------------------------------------------------------------------- eb1268decc | advil | 2022-10-25 11:09:13 -0400 fix: don't let blocking enemies riposte off fencer's gloves d843f3a48cabf41 refactored most of the riposte check code into `maybe_riposte`, but not the player check, and then didn't include the player check in the call for the shield block case. This commit moves the player check into this function. Seen via: https://www.reddit.com/r/dcss/comments/ycouo3/riposte_blocking_bug/ -------------------------------------------------------------------------------- f115ab0292 | advil | 2022-10-24 17:34:00 -0400 fix: spell menu prompt in non-cast calls to `list_spells` For casting and describing spells, e6dd553d160feaab tried to put an informative prompt in the menu footer (previously there was no indication at all of what this menu was). Unfortunately, this conflicted with how quiver/amensia/adjust call list_spells, by changing the title. This commit always puts an informative prompt in the footer and allows only customizing the verb. It also fixes some weirdness with adjust (though that code probably needs a custom menu...) Resolves #2792 -------------------------------------------------------------------------------- 7d6cbdfea6 | Kate | 2022-10-23 23:31:01 +0100 Capitalise the Lochaber axe (Aliscans) And fix a missing comma in its inscription. -------------------------------------------------------------------------------- 0f8422e3f7 | Kate | 2022-10-23 23:31:01 +0100 Remove more obsolete missile handling code This code was also presumably dead since the ranged combat refactor. Pre-refactor players had an AC-based chance to resist curare, which can stay gone, and Xom is now amused by the player being caught in nets again. -------------------------------------------------------------------------------- 95ba73633e | Kate | 2022-10-23 23:31:01 +0100 Improve Jiyva's jelly missile mutation Now that it works at all, give it a more noticeable effect. -------------------------------------------------------------------------------- 1a7143a415 | Kate | 2022-10-23 23:31:01 +0100 Fix Jiyva's jelly missile mutation It did nothing, and had (possibly?) been broken since 2014's ranged combat refactor. Since all monster projectiles except throwing nets now mulch (and it can't eat nets), it no longer needs to destroy the item - but do allow it to eat javelins mid-flight so they don't pierce past the player (saving any precious jellies behind you!) -------------------------------------------------------------------------------- 959d978c02 | Kate | 2022-10-23 23:31:01 +0100 Remove an obsolete reference to Scattershot -------------------------------------------------------------------------------- 026cb31310 | advil | 2022-10-20 08:54:52 -0400 fix: add a final delay to the arcjolt animation Locally, this timing is a bit better, and this also allows for a final delay for Options.reduce_animations. -------------------------------------------------------------------------------- dc4b735fe1 | advil | 2022-10-19 16:40:53 -0400 fix: remove more python2 oops, missed -------------------------------------------------------------------------------- 583829d9f1 | advil | 2022-10-19 16:39:54 -0400 fix: remove python2 Python2 is fully deprecated for webtiles, and keeping around old testing and requirements sends the wrong message. Remove all this. Also, update a doc. (To be clear, this doesn't break anything that is still working on py2.) -------------------------------------------------------------------------------- 96a745ab99 | Nicholas Feinberg | 2022-10-19 12:06:07 -0700 Increase ranged weapon brand variety The ranged weapon loot game is made a little less exciting by the smaller pool of brands to work with. Play around with it some. - Add electrocution and antimagic to the pool for all ranged weapons. (Crossbows artefacts could already have elec.) - Replace venom with draining brand for ranged weapons, since there is nothing good or exciting about the ranged venom brand experience, and draining is a perfectly fun brand to play with. -------------------------------------------------------------------------------- b4a478afba | Nicholas Feinberg | 2022-10-19 11:51:06 -0700 Move Lucy's Banish to 2* Now that Bend Space is gone. -------------------------------------------------------------------------------- 793202b318 | Nicholas Feinberg | 2022-10-19 11:50:44 -0700 Cut Bend Space Just an incredibly unexciting ability. Lucy has plenty of other fun effects - we can do better than this. -------------------------------------------------------------------------------- 80b981deb3 | Nicholas Feinberg | 2022-10-19 11:50:44 -0700 Give Lugonu wrath protection To encourage conversion, make Lugonu banish 2d3 nearby foes whenever another god's wrath triggers. Should be very good against many wrath types. (Too good?) -------------------------------------------------------------------------------- 2f725a73e1 | Nicholas Feinberg | 2022-10-19 11:50:44 -0700 Make Banishment cause malmutation on resist Makes it feel less bad to fail, and gives you a better chance for next time. -------------------------------------------------------------------------------- 0ec75d9ef4 | advil | 2022-10-17 17:53:28 -0400 fix: rename some old autofight options, document The documentation was very confusing, and not helped by the fact that these options have changed out from under their old names and impact many non-throwing quiver attacks. I've renamed the options to something better, and kept the old options for backwards compatibility. Also, hopefully the documentation is a bit clearer now. -------------------------------------------------------------------------------- 7342b43953 | advil | 2022-10-17 13:02:06 -0400 fix: use name overrides in pluralised mlist names This fixes a meatsprint bug, where if more than one of a custom monster is in view, the monster's regular type name was shown in the monster list (e.g. "hell knight" instead of "fleshlord"). Probably this bug applies elsewhere too. I have not carefully tested whether the plurals involved all come out right. -------------------------------------------------------------------------------- db1af66bbf | advil | 2022-10-17 11:43:10 -0400 fix: remove socket state from slow callback logging I haven't found this info to be particularly revealing for diagnosing slow callbacks. -------------------------------------------------------------------------------- 70bf11b127 | advil | 2022-10-17 11:14:57 -0400 fix: missing explicit anon user handling in a log message -------------------------------------------------------------------------------- a49068932a | advil | 2022-10-17 11:04:02 -0400 feat: show webtiles socket info to admin users On a reload, show current socket stats and username info in the admin panel. This does not refresh except manually. This may or may not turn out to be useful, but otherwise there's right now no good way of getting info about usernames in the lobby or spectating. This also lets admin users more easily see what held accounts are currently doing. -------------------------------------------------------------------------------- 0f741e3f8e | Nicholas Feinberg | 2022-10-16 21:20:16 -0700 Make Fedhas protect trees from harm For consistency with shooting through other plants. I believe we should be able to remove the 'hurting plants' conduct in a follow-up commit. -------------------------------------------------------------------------------- 84690aa778 | Nicholas Feinberg | 2022-10-16 21:11:43 -0700 Add extra messages for Armataur potion/scroll muts To emphasize what's happening and make it clearer to players when the muts are taking effect. -------------------------------------------------------------------------------- 72a7dafe43 | Nicholas Feinberg | 2022-10-16 21:11:43 -0700 Allow stabbing distracted batty mons (acrobat) While they're actually distracted, not just batting about. -------------------------------------------------------------------------------- 93faf69470 | Nicholas Feinberg | 2022-10-16 21:11:38 -0700 Don't display damage ratings for darts (Undo) They were wrong. -------------------------------------------------------------------------------- 5c880eff19 | Nicholas Feinberg | 2022-10-16 21:11:38 -0700 Don't create wretched spriggan druids (Sergey) The on-death might is quite a bit silly as an effect from a supposedly beneficial god ability. (Kiku's Unearth Wretches.) -------------------------------------------------------------------------------- eff92bb211 | Nicholas Feinberg | 2022-10-16 21:11:38 -0700 Clean up transformations + webs (acrobat) Treeform should only destroy temporary webs, as with spider form. Dragon form shouldn't destroy any webs - monster dragons don't! (Both still destroy nets - trees because stationary creatures can't be netted, dragons because they're too big to be netted.) -------------------------------------------------------------------------------- 6f7e019470 | Nicholas Feinberg | 2022-10-16 21:11:38 -0700 Make Ashenzari print messages when blocking malevolence To make it clearer to players that Ashenzari does this - many players hadn't realized. Should feel good. Hopefully won't be too annoying that it interrupts runrest. -------------------------------------------------------------------------------- 5eb3a25a7d | Nicholas Feinberg | 2022-10-16 21:11:38 -0700 Make J's jellies immune to player mass hexes (Sergey) Mass hexes, e.g. ?fear, previously caused friendly jellies to become hostile (permanently) without penance. Setting up penance seems painful and annoying, and I'd like to make J give full protection to jellies later, so let's just start on that now. -------------------------------------------------------------------------------- 8a68597c01 | Nicholas Feinberg | 2022-10-16 21:11:38 -0700 Make Gozag block hostile soul binding I.e. from necromancers/pharoah ants. For consistency with player simulacrae. Some argument that these should both be changed to work under gozag, since they're based on souls now, or something. -------------------------------------------------------------------------------- f371ce1921 | hellmonk | 2022-10-16 17:10:17 -0400 random round toxic radiance numbers -------------------------------------------------------------------------------- c09304477a | hellmonk | 2022-10-16 16:56:41 -0400 randomly round lrd damage -------------------------------------------------------------------------------- 74d67f175d | hellmonk | 2022-10-16 16:37:32 -0400 random round some summon durations -------------------------------------------------------------------------------- 0a2392f0f4 | hellmonk | 2022-10-16 16:27:48 -0400 random round collision damage -------------------------------------------------------------------------------- 4b46babb21 | Kate | 2022-10-15 22:41:51 +0100 Apply sacrifice rejection penalties on Ru abandonment Fixes it being possible to get a quicker reroll of your first set of Ru sacrifice offers by abandoning and re-worshipping Ru. Abandoning Ru now applies the same penalties that manually rejecting sacrifices would have (but those penalties are now a lot lower than previously, due to the previous commit's bugfix). -------------------------------------------------------------------------------- 9bfbb5f4d0 | Kate | 2022-10-15 22:41:51 +0100 Fix Ru faith penalties always applying to Reject Sacrifices Since 26bd780f50c, manually rejecting a set of sacrifices via the Ru ability has applied a bonus penalty, which was intended to apply only when an amulet of faith was removed. Fixing this is a reasonably large buff to rejecting sacrifices (especially early ones), but hopefully that's fine considering that rejecting sacrifices is usually a bad idea anyway. If not then the base penalties could easily be increased. -------------------------------------------------------------------------------- 60c05b4e74 | advil | 2022-10-15 17:34:09 -0400 fix: maybe fix tremorstones with reduce_animation (Rytisgit) -------------------------------------------------------------------------------- 2d03c1e4d5 | advil | 2022-10-15 16:39:54 -0400 More checkwhite Lots of accumulated stuff for checkwhite -a -------------------------------------------------------------------------------- fe74333c6a | Kate | 2022-10-15 20:23:18 +0100 Checkwhite -------------------------------------------------------------------------------- fa9835406b | Kate | 2022-10-15 19:56:42 +0100 Let wizmode superheal clear barbs And move exhaustion and sickness from regular heal to superheal, since they're no longer common status effects. -------------------------------------------------------------------------------- b7e7e335b1 | advil | 2022-10-15 14:55:43 -0400 feat: better webtiles username ban management Since 0.28 or so, I have behind the scenes been distributing code to server admins that bans some slurs in usernames for account creation. This commit substantially enhances that code and builds it in to the webtiles server. This does not add any banned usernames to the repo / default config, but does make them quite a bit easier to add. Highlights: 1. A config option `banned` that can be used to indicate disallowed usernames, including handling some basic leet-speak translation, letter repeats, etc. Currently, these are disallowed for account creation only, and database bans are a distinct concept (but see 4 below). See documentation in config.py on how to use the more complex possibilities here. 2. The ability to load this list from a yml (or txt) file, similar to Alex's config.yml override. The format of the option is designed to be easily encoded in yml, and also line up with the (simpler) yml banned names format for the scoring db. This also means that admins no longer have to see / have visible on their screen slurs that are written out in a config file. (To be honest, this problem was the main impetus for me starting work on this set of changes.) 3. A distinct bans.py module that is self-contained and can be pulled into other crawl projects (e.g. scoring, tourney). I'm hoping that we can start to share some bits of infrastructure-wide config like this across servers, projects, etc... 4. Options for the command line utility that can check config-based bans against the user database, and automatically ban accounts. As noted in several comments, this code makes it very easy for admins to run into https://en.wikipedia.org/wiki/Scunthorpe_problem, so exercise care with the more powerful username matching options. There's preliminary allowlist code that can be expanded if this is desireable. This probably makes it overall easier for an attacker to come up with ways around username restrictions (by removing some things, such as my exact leet-speak decoding, from obscurity). But, I do hope that this commit still overall improves the situation for server admins. In the worst case scenario this is no different than the the previous state of affairs: it acts as a preventative for more casual abuse, and account holds fill the role of dealing with more persistent attackers. -------------------------------------------------------------------------------- f98c3da03f | advil | 2022-10-14 14:41:18 -0400 feat: default `reduce_animations` to true on webtiles Crawl's animations have long been a problem for webtiles. They work by using precisely timed delays (ranging from as short as 25ms up to a few hundred ms) combined with many redraws at interim stages as e.g. a beam path unfolds square by square. This works fine locally, but on webtiles this is all run on the server side, so a redraw is (a) at the mercy of the network, which can impact this timing substantially, and (b) causes a spike in map data sent to the server. Ideally, if animations are desirable on webtiles it would be much, much better to run them in the client, but this is something noone has ever implemented (and it doesn't sound very easy to do). The situation is so bad that stronger players tend to just turn off animations altogether. However, doing so leads to no visual feedback at all for ranged attacks that use animations. This commit threads the needle a bit, and by default shows most animations with just one delay + one graphic. It's possible this will still be too underinformative for newer players, and this commit might need to be reverted. As more background: A worst case scenario has been that firing or drawing beam animations became so laggy on webtiles, that in some conditions it has been slower than the key repeat timing or are slow enough for lag to impact webtiles server performance, see e.g. 0b5ff556b1e2, 0306a414dbaaa, e645bd13c135ed, etc. These commits involved hotspots that were improvable, but I think this option potentially provides a much better default solution. -------------------------------------------------------------------------------- 12470dd2fc | advil | 2022-10-14 14:41:18 -0400 refactor: various adjustments to animation reduction * Rename to just `reduce_animations` -- make it more general, and don't add another case where players can be confused about what a beam is. (Probably we'd want to implement this eventually for non-beam animations like rune lock, anyways.) * Refactor so that the combo of a delay + a redraw is abstracted, rather than being pasted in many places. * Small tweaks to how and when the final delays happen * Implement for disaster area as well as upheaval * options guide documentation Resolves #2635 -------------------------------------------------------------------------------- 2d2572e83d | Rytis Petronis | 2022-10-14 14:40:48 -0400 feat: add an option to reduce redraws for animations The reduce_beam_redraw option now decides whether to draw whole beam at once instead of animating every tile seperately with screen redraws in between. To achieve this the bolt::draw function is modified to return after setting the tile to the bolt but before trying to redraw. The redraw is then done only once outside the loop in which bolt::draw function is called to draw the whole beam at once. [committer's note: previously, the only choices for animations were to have the full animation (at a customized rate), or to show nothing at all. This provides a useful intermediate option that will be particularly valuable on webtiles. Note that a following commit will rename this option to `reduce_animations`.] -------------------------------------------------------------------------------- f0224bf7b6 | hellmonk | 2022-10-13 21:45:05 -0400 randomly round dispersal confuse duration -------------------------------------------------------------------------------- c94a717997 | hellmonk | 2022-10-13 21:43:34 -0400 randomly round intoxication chance -------------------------------------------------------------------------------- 9c5b80c1dc | hellmonk | 2022-10-13 21:28:03 -0400 fix: Apply statue form damage bonus after AC This bonus is intended to compensate for slower attack speed, but applying before AC meant it did slightly more than that. I don't think this changes much tbh. -------------------------------------------------------------------------------- 2b27a225a3 | Nicholas Feinberg | 2022-10-13 11:56:08 -0700 Move Anguish into a later Kiku gift (IguanaIguana) Mostly to make the second spell gift nondeterministic. Worth doing some further shuffling around here, maybe reducing gift size somewhat. -------------------------------------------------------------------------------- 2b75c2a55d | advil | 2022-10-13 14:43:25 -0400 fix: make InvMenu examining a bit less crash-prone InvMenu keeps turning out to have been used in various cases for non-inventory items (e.g. via DescMenu). A more ambitious refactor idea might be to actually just intentionally turn this into a more general item menu class, but I won't do that right now. This commit makes examine_index behave more gracefully if the menu items are not `InvMenuItem`s, something that would have also headed off crashes for a use case like that fixed in 475f425cf99f. (And probably other DescMenu uses.) -------------------------------------------------------------------------------- 475f425cf9 | advil | 2022-10-13 13:00:50 -0400 fix: prevent a help lookup crash This code uses DescMenu, which for some reason, is a subclass of InvMenu, which is expecting its items to correspond to inventory items. We need to override on_examine therefore to prevent crashes. The following comment in directn.cc unfortunately still remains unresolved: `// XX this probably shouldn't use InvMenu, why does it?` -------------------------------------------------------------------------------- e22c4ad894 | hellmonk | 2022-10-12 22:53:24 -0400 fix: Update battlesphere HD when recalling -------------------------------------------------------------------------------- c2e06944d9 | hellmonk | 2022-10-12 22:28:29 -0400 adjust Shatter damage Random round and apply AC normally, rather than with a penalty of 1 -------------------------------------------------------------------------------- e375a5e35f | hellmonk | 2022-10-12 22:21:40 -0400 randomly round ddoor power checks -------------------------------------------------------------------------------- 8b876d146b | hellmonk | 2022-10-12 22:19:25 -0400 randomly round disjunction duration -------------------------------------------------------------------------------- 4eb8f405f2 | advil | 2022-10-12 20:33:50 -0400 docs: update server admin comment for config.py Make this comment a little bit more general, so as not to mislead someone running a dgamelaunch-config server (which will no doubt break if someone does try to use config.yml there). -------------------------------------------------------------------------------- 902f57cb4f | advil | 2022-10-12 20:26:52 -0400 refactor: adjust how games are loaded dgamelaunch-config servers currently can't load from games.d (and because of the default values, attempting to prevents servers from starting), but with the previous sequence of commits, the default is never to put games configuration in the config module at all. This commit adjusts how the double bind is resolved. By default, if `games` is defined in the config module, games.d files are not loaded. This can be overridden by setting the old option `use_game_yaml` to True, if someone wants this for some reason. I've also fixed up a few issues in how games are loaded. For backwards compatibility, the old option `games_config_dir` is treated as a boolean-like that will have the same effect (previously it was set to None to prevent reading games.d on some servers). This commit also adjust the config.py documentation accordingly and puts back in the games dictionary as an example. (Together with previous commits) resolves #2655 -------------------------------------------------------------------------------- 30c107533f | Alex Jurkiewicz | 2022-10-12 20:23:32 -0400 refactor: Keep use_game_yaml setting Required by dgl-config. -------------------------------------------------------------------------------- 55547e2a59 | Alex Jurkiewicz | 2022-10-12 20:23:32 -0400 refactor: Move all game definitions to games.d/ Manually specifying games in config.py is deprecated. Instead, add them to a YAML file in games.d/. This reduces the pain of pulling in upstream changes to config.py. (Support for config.py-specified game definitions is not going anywhere while dgamelaunch requires it.) -------------------------------------------------------------------------------- 9dacfef450 | Alex Jurkiewicz | 2022-10-12 20:23:32 -0400 feat: Support webserver config.yml override file Rather than requiring server operators to modify config.py in-place (and deal with the pain of merge conflicts when updating webtiles server code), allow them to specify server-specific configuration in a .gitignore'd config.yml file. -------------------------------------------------------------------------------- 79d7498bdb | Alex Jurkiewicz | 2022-10-12 20:23:32 -0400 refactor!: Hardcode games_config_dir There's no need to support customising the 'games.d/' path, and might just end up confusing in future. Also, simplify and improve the messaging related to loading game configs in this directory. The existing messaging was slightly verbose, a holdover from its original development. Finally, improve the sanity checking to ensure YAML files are maps (not eg lists or single values). This was already asserted implicitly, but now will be handled without instantly crashing. BREAKING CHANGE: webserver config option games_config_dir removed (now is always "games.d"). -------------------------------------------------------------------------------- 6b895097cc | advil | 2022-10-12 17:36:52 -0400 fix: remove some missed commented code -------------------------------------------------------------------------------- d42a0f4da5 | advil | 2022-10-12 17:32:10 -0400 feat: waypoints for all levels (gammafunk) Two changes: relax the constraints on when waypoints can be set, and ensure that waypoint housekeeping is correctly done for waypoints on non-connected levels and especially in the abyss. (Luckily, I think the conditions under which rune detection needs an update are identical to those under which waypoints need reset.) These are marginally useful at best for a human user on some of these levels, so possibly only the lua API should allow e.g. waypoints in the abyss. But, they are useful for a bot that needs to establish reference points. UI note: the `G` command does not work on non-connected levels, but waypoints can still be accessed and traveled to interactively on these levels in a slightly clunkier way via `X`. I haven't actually checked the lua API so if it has a restriction like this for waypoint travel, that may be worth removing. But I have the sense that the use case of this is really for reference points, not travel. -------------------------------------------------------------------------------- 98ac1a292c | Nicholas Feinberg | 2022-10-12 09:51:20 -0700 Re-fix damage ratings aa749bd8e47d5e8e434b133971969834f8024a58 was incoherent. -------------------------------------------------------------------------------- 41c1d76940 | hellmonk | 2022-10-11 23:48:44 -0400 correct the firestorm targeter It is always possible to get a radius 3 firestorm if power is > 0. -------------------------------------------------------------------------------- 4b55263497 | hellmonk | 2022-10-11 23:38:45 -0400 random round arcjolt damage -------------------------------------------------------------------------------- defe565e8d | hellmonk | 2022-10-11 23:10:30 -0400 cleanup -------------------------------------------------------------------------------- bdec91c41a | hellmonk | 2022-10-11 23:10:30 -0400 feat: Icy lair entrance -------------------------------------------------------------------------------- 568b07f25b | hellmonk | 2022-10-11 23:10:30 -0400 adjust minmay_lair_entry_lava Replace the fire dragon with a crab and adjust the vault to prevent vetos. -------------------------------------------------------------------------------- 03e9ba43c7 | hellmonk | 2022-10-11 22:40:12 -0400 randomize confuse/para duration on monsters -------------------------------------------------------------------------------- be970518db | hellmonk | 2022-10-11 22:38:54 -0400 random round confusing touch duration Rather than having breakpoints at low power. -------------------------------------------------------------------------------- aa749bd8e4 | Nicholas Feinberg | 2022-10-11 13:47:54 -0700 Fix UC/Throwing damage rating (#2748) We incorrectly multiplied damage by weapon skill, but that doesn't occur in actual combat. Fixes #2748. -------------------------------------------------------------------------------- 7bf8e6d787 | advil | 2022-10-10 19:49:55 -0400 docs: tweak macos build instructions Try to clarify various aspects of the build instructions, and make it even clearer that the Xcode install isnt' because we are using Xcode. -------------------------------------------------------------------------------- 1121274140 | hellmonk | 2022-10-09 20:23:59 -0400 adjust Kiku actives Reduce the power of wretches and increase its piety cost slightly. Reduce the piety cost of torment. -------------------------------------------------------------------------------- 3111722afa | hellmonk | 2022-10-09 20:10:15 -0400 checkwhite -------------------------------------------------------------------------------- ba8dcd3c80 | hellmonk | 2022-10-09 20:09:45 -0400 round mephitic cloud duration -------------------------------------------------------------------------------- 88f5cd7b0b | hellmonk | 2022-10-09 20:04:31 -0400 correctly cap hibernation at 50 power -------------------------------------------------------------------------------- 3abaafb9f6 | hellmonk | 2022-10-09 19:58:12 -0400 randomize slow hex duration -------------------------------------------------------------------------------- 0740ab4923 | hellmonk | 2022-10-09 19:46:51 -0400 remove slow's hex power buff -------------------------------------------------------------------------------- fbc3a94d58 | hellmonk | 2022-10-09 19:39:09 -0400 remove hidden hibernation power stepdown As far as I can tell, this wasn't accounted for in the targeter. -------------------------------------------------------------------------------- 97d66968fd | Nicholas Feinberg | 2022-10-09 14:16:02 -0700 And unnerf endoplasms (see last commit) -------------------------------------------------------------------------------- 46bee08b82 | Nicholas Feinberg | 2022-10-09 14:15:39 -0700 Derandomize monster Freeze damage dice Make the damage display simple to display without being misleading. -------------------------------------------------------------------------------- 7c5df11ecf | hellmonk | 2022-10-09 16:57:59 -0400 random round dragon call duration -------------------------------------------------------------------------------- 6ac44c9753 | hellmonk | 2022-10-09 16:48:00 -0400 random round infest status duration -------------------------------------------------------------------------------- 3c8e1c8089 | hellmonk | 2022-10-09 16:35:21 -0400 randomly round summon hydra heads Removes yet another power breakpoint; this is a slight buff. -------------------------------------------------------------------------------- 2dd1c91445 | hellmonk | 2022-10-09 16:27:31 -0400 Adjust noxious bog duration Slightly increase variance and randomly round. -------------------------------------------------------------------------------- 2d71ba6e3a | hellmonk | 2022-10-09 16:19:41 -0400 random round bogcloud duration ... when igniting poison with bog tiles in los. -------------------------------------------------------------------------------- 6c849f5caf | hellmonk | 2022-10-09 16:15:28 -0400 adjust Portal Projectile rounding Randomly round accuracy bonus with throwables and duration. -------------------------------------------------------------------------------- e18b8abeca | hellmonk | 2022-10-09 15:44:02 -0400 randomly round freeze max damage. Also brings damage/turn into line with ramparts. -------------------------------------------------------------------------------- 04c3547f4f | advil | 2022-10-09 14:34:56 -0400 feat: mention pan lord flavor color in description This started because it seemed like the ETC_RANDOM possibility is flavorful enough to be worth mentioning explicitly, but I realized it would be good to always include even regular colors. -------------------------------------------------------------------------------- e52a3cb02f | Kate | 2022-10-09 18:26:48 +0100 Reduce the chance per floor of ecumenical altars Redesigned ecumenical altars are generally a much more desirable option than their original fully-random design. They're also more complex (requiring manually checking each individual altar to see its god options). Reduce their chance from 1/2 to 1/4 per floor from D:1-3, so that they'll still be fairly frequent options (available in over half of games), but not so overwhelmingly likely to be some of the first altars found in every game. -------------------------------------------------------------------------------- cb0039aa0c | Kate | 2022-10-08 23:22:05 +0100 Adjust an ecumenical altar vault Reduce its weight slightly, and limit it to two ecumenical altars - placing multiple ecumenical altars now offers a lot more information and a wider selection of gods before committing. -------------------------------------------------------------------------------- e547ba4400 | advil | 2022-10-07 11:12:24 -0400 fix: clean up after a few tests These tests spawn monsters but were not getting rid of them afterwards. Also, a few comments. -------------------------------------------------------------------------------- f7f13252f9 | advil | 2022-10-07 10:48:54 -0400 fix: Ds mutations conflicting with beak after 15c3b865de76 Mutations that block the same eq slot are treated as being in physiological conflict, so after the linked commit beak also blocks horns/antennae. (This may not have been intentional with this commit, it seems not to have been part of the original beak design.) However, for whatever reason, the conflict marking for deletion needs to be handled separately, so deletion of beak on conflict was failing. The main consequence was that beak would block Ds horns but the resolution code couldn't remove beak, leading to test failures (but maybe silent failure in a real game?) This commit adds the conflict marking to match 15c3b865de76 and prevent crashes. However, it may be desireable to treat beak vs horns differently, which would require some hardcoding somewhere (or refactoring). As a side note, there's a comment here that indicates a similar thing might have come up for antennae, but I cannot find current code in physiology_mutation_conflict that matches this comment. It's also possible that affected Ds games would need explicit save compat for this fix that I haven't added (if so, they'll be missing some horns they are due.) -------------------------------------------------------------------------------- 8710fb66a6 | advil | 2022-10-07 10:14:12 -0400 fix: don't crash if mut_species test removes flight Because this would happen at 0,0, this caused a bounds check crash. Possibly rare for this test, as this doesn't seem like it could be a new thing. -------------------------------------------------------------------------------- f2db51d15e | Nicholas Feinberg | 2022-10-05 07:25:59 -0700 Revert "fix: correct webtiles hidpi implementation" Probably cauing visual artifacts. Rolling back for now. This reverts commit c90f4eb94e883a330bf49edabe2f271034f0982d. -------------------------------------------------------------------------------- edb9141078 | Michael Del Monte | 2022-10-04 14:21:34 -0700 Adds `ac`, `ev`, and `sh` functions to the lua `you` object. -------------------------------------------------------------------------------- 09a5e214e2 | Nicholas Feinberg | 2022-10-04 10:41:14 -0700 Mention weakness stinger blocking cloaks (Huan) In the mutation description. -------------------------------------------------------------------------------- 2cd6803ab7 | Kate | 2022-10-04 17:13:57 +0100 Remove the Palentonga roll mutation (#2766) It was still randomly obtainable (by any species, but with no actual effect). Closes #2766. -------------------------------------------------------------------------------- be4c2caf12 | advil | 2022-10-04 11:17:08 -0400 fix: two typos -------------------------------------------------------------------------------- 4ec62bdb57 | Nicholas Feinberg | 2022-10-04 07:39:56 -0700 Add CipHuK's acrobat icon to UNUSED (#2607) -------------------------------------------------------------------------------- 36afe0b79d | Nicholas Feinberg | 2022-10-04 07:36:35 -0700 Recolour acrobat icon (Sastreii) To reduce similarity to the the 'magic regeneration' amulet icon. Closes #2607. -------------------------------------------------------------------------------- 5a3754191e | Marcelo Henrique Cerri | 2022-10-04 07:25:52 -0700 Add show_blood option (default true) Add a new option show_blood to control if blood splatters and bloody corpses should be shown, or should be replaced with skeletons and nothing respectively. Might be nice to have tile variants for a few monsters as well, eg flayed ghost. Closes #2357. -------------------------------------------------------------------------------- c90f4eb94e | advil | 2022-10-04 07:09:31 -0700 fix: correct webtiles hidpi implementation This commit reverts 3925e268bea408. To get hidpi to work in a browser canvas object, the internal dimensions need to be twice that of the external dimensions (essentially). The normal way of implementing this is to multiply the internal dimensions by devicePixelRatio, and scale the canvas accordingly. We used to do this, but 3925e268bea40 changed things so that the external dimensions were halved. This was, according to the commit message, in order to prevent scaling artifacts on firefox. (Where the salient fact is that window.devicePixelRatio on some browsers, these days including chrome/firefox but not safari, also changes with browser zoom.) However, a consequence is that tile rendering is halved on hidpi devices, exactly not what should happen. This change also made for a lot of messy code that had to interact directly with devicePixelRatio. The half-size tile rendering wasn't immediately noticeable because the dungeon is auto-scaled, and the monster list matches its scale to the dungeon. But, icons in menus and popups instantiate the problem, and scaling them to the dungeon size is not ideal. The action panel also had some workarounds for this that I didn't fully understand at the time. (I only noticed this myself after many years of working on this stuff because I switched from a regular-density monitor to a 4k monitor of similar size, even though I've used retina devices for a long time. Hidpi devices have been broken for so long that I won't be surprised if we get requests to readd this behavior as an option or something, menus may look odd now to people who have only ever played on hidpi.) In my testing so far, I can't really detect any rendering differences between the approach after this commit and the approach in 3925e268bea408. However, I'm not exactly sure of what the original issues were, and this commit should be tested on a non-hidpi device before merge. -------------------------------------------------------------------------------- 01b79a254e | Nicholas Feinberg | 2022-10-03 22:15:17 -0700 Book rebalance, pt 2 Add a new book, Maxwell's Memoranda, to shift books back toward an average of 3 per book. (I believe this is about as close as we can get - we're exactly one spell over at present.) -------------------------------------------------------------------------------- aa07282108 | Nicholas Feinberg | 2022-10-03 21:51:24 -0700 Note insubstantiality in spell targeters For Sticky Flame and Fastroot (wand of roots), since it affects both. -------------------------------------------------------------------------------- 8d5dd66c5c | Monkooky | 2022-10-03 21:36:58 -0700 Documents insubstantial in the monster x-V view As per title. Also documents Sticky Flame's inability to stick to insubstantial monsters. -------------------------------------------------------------------------------- 6573418d01 | Nicholas Feinberg | 2022-10-03 21:29:59 -0700 Fix: Don't let Spriggans cast Swiftness (Monkooky) While in water, they were incorrectly counted as being slow, allowing them to cast Swiftness and then run around outside the water. Nice! Anyway, now they can't. Closes #2739. -------------------------------------------------------------------------------- d8d8a64377 | Zhang Kai | 2022-10-03 21:17:54 -0700 Update gods.txt (Chinese translation) Closes #2716. -------------------------------------------------------------------------------- 7032f90272 | Zhang Kai | 2022-10-03 21:15:54 -0700 Update ability.txt (Chinese translation) Closes #2715. -------------------------------------------------------------------------------- 317d1de1b5 | 张凯 | 2022-10-03 21:14:48 -0700 Update clouds.txt (Chinese translation) Closes #2692. -------------------------------------------------------------------------------- a836afdb34 | 张凯 | 2022-10-03 21:13:29 -0700 Update branches.txt -------------------------------------------------------------------------------- 0d51db2871 | 张凯 | 2022-10-03 21:07:44 -0700 Update spells.txt (Chinese translation) Closes #2690. -------------------------------------------------------------------------------- e521aab31e | 张凯 | 2022-10-03 21:04:06 -0700 Update monsters.txt (Chinese translation) Closes #2663. -------------------------------------------------------------------------------- 17fea662fc | Nicholas Feinberg | 2022-10-03 20:58:24 -0700 Book rebalance, pt 1 Start moving books back toward an average of 3 spells per book. -------------------------------------------------------------------------------- 1efd971db8 | 张凯 | 2022-10-03 20:56:45 -0700 Update commands.txt -------------------------------------------------------------------------------- 15c3b865de | Monkooky | 2022-10-03 20:49:28 -0700 Update mutation.cc so ashenzari correctly blocks beaks -------------------------------------------------------------------------------- 960f186ce7 | kd7uiy | 2022-10-03 20:45:58 -0700 New nickname for Xom Added a new option for Xom's nickname, Xom the Chaotic. -------------------------------------------------------------------------------- 22508d058b | Nicholas Feinberg | 2022-10-03 20:44:05 -0700 Fix infusion cost (pisastrish) Various things that killed the defender could result in infusion not costing MP, e.g. special unrand effects. Fix this by paying infusion MP costs earlier. Closes #2712. -------------------------------------------------------------------------------- 6a831dfdda | Nicholas Feinberg | 2022-10-03 20:25:00 -0700 Simplify Mad Mage's Maulers Make them use the same damage multipler per MP spent as normal infusion gloves, instead of 50%. -------------------------------------------------------------------------------- 8c06622978 | Nicholas Feinberg | 2022-10-03 17:26:17 -0700 New Armataur player tile (Sastreii) Get riiiipped -------------------------------------------------------------------------------- f89613a6cc | Kate | 2022-10-04 00:02:29 +0100 Fix Momentum Strike not applying -Move on friendly fire -------------------------------------------------------------------------------- 5dbf5516b7 | Kate | 2022-10-03 23:36:12 +0100 Update docs for no_tele_into (advil) It is, and always has been, very funny to teleport the player into hellion island. (In general, no_tele_into should only be used to prevent the player from getting trapped - big groups of monsters and dangerous vaults are just tough luck!) -------------------------------------------------------------------------------- 33132b1f91 | Kate | 2022-10-03 23:36:12 +0100 Rebrace -------------------------------------------------------------------------------- 22c9a3c0ff | advil | 2022-10-03 11:54:21 -0400 refactor: don't end ozo's on temporal distortion (hellmonk) This commit refactors the movement aspect of chei's temporal distortion and step from time to use a RAII object for common code, and allow a bit more flexibility for ice movement expiry. After this commit, neither rampart's nor ozo's expire with temporal distortion, and they both do with step from time. The difference between the two abilities could be easily changed, the difference between the two spells a bit less so. The internal player implementation is slightly messy because I don't want to try to change the actor/monster ::moveto signature. -------------------------------------------------------------------------------- 2a4cff5a3b | advil | 2022-10-03 11:01:23 -0400 fix: bog and rampart status descriptions Both missing `status`, hence weren't properly showing up. I've also tweaked the wording of the bog status message to indicate the toxic bog immunity it grants. -------------------------------------------------------------------------------- c626debdff | Monkooky | 2022-10-03 07:39:50 -0700 Stop momentum strike from using vhi's checks momentum strike case was missing a break; -------------------------------------------------------------------------------- d9c2deaf24 | Nicholas Feinberg | 2022-10-02 22:08:15 -0700 Improve low-power Lesser Beckoning Halve power cap from 100 to 50, and increase min range from 2 to 3. Should make it more usable for reasonable characters. -------------------------------------------------------------------------------- 105a1d9ad3 | Nicholas Feinberg | 2022-10-02 22:06:13 -0700 Fix Armataur manual abbreviation (elliptic) AT -> At, matching Merfolk etc. -------------------------------------------------------------------------------- d62a825edf | Nicholas Feinberg | 2022-10-02 21:10:00 -0700 Rework Armataur aptitudes Magic and throwing aptitudes were bad to encourage use of the rolling charge, which no longer exists. Upgrade those and defensive apts (HP, Armour), plus Stealth as a funny combo with rampage. Then shift other apts down to compensate for overall buffs. Try to avoid overlap with Hill Orc and Ogres. -------------------------------------------------------------------------------- ce2a380349 | Nicholas Feinberg | 2022-10-02 21:10:00 -0700 Cut Armataur Curl Sort of a complicated effect that's hard for players to do that much with. Let's spend our complexity budget elsewhere. -------------------------------------------------------------------------------- f2e57c08ab | Nicholas Feinberg | 2022-10-02 21:09:45 -0700 Add 'tongue' Armataur mutations The main feature here is that Armataurs get double potion effects. Double healing! Double status effect duration! Double degeneration, double mutations, double !xp! It's chaos here. (Healing/mp restore from cure/!hw/!magic/!ambrosia is doubled, other durations are doubled.) Then flip it around a little and make scroll reading 50% slower. This is not a large penalty, just sort of a cute twist. They're reverse mummies..? (This will probably get cut eventually.) The code added in potion.cc is godawful and I'm very sorry. -------------------------------------------------------------------------------- c40470cdd7 | Nicholas Feinberg | 2022-10-02 20:55:46 -0700 Give Armataurs Rollpage It's rampaging, but roll-themed. Seems like a cute property for a species to have, and an armadillo-pangolin species needs to roll up in some way. -------------------------------------------------------------------------------- 2a6e7f69e1 | Nicholas Feinberg | 2022-10-02 20:55:46 -0700 New spell: Vhi's Electric Charge (L3 Tloc/Air) As promised, the palentonga rolling charge has become a spell. Some notable differences: - The extra damage is electric, rather than physical. That is, enemies with rElec take no extra damage from an electric charge. - Power adds a little more bonus damage, up to 33% at max power. (That is, a total of +133% damage at max range.) - Since some users won't have sInv, the spell now passes through intervening enemies, and does its darned best to displace anything on the final space. (Blinking, teleporting, banishing, or just murdering as needed.) - Stationary enemies are invalid landing targets, on the principle that they really shouldn't be moved and are rarely invisible. Fingers crossed. It's in the Warper start book, replacing Gell's Gravitas, as part of an attempt to make the start more focused on being a 'warrior-mage'. It might be a little strong at level 3, but we can retune it as needed. It is probably very buggy. I'm quite scared. Tile by Sastreii. -------------------------------------------------------------------------------- eb9d758594 | Nicholas Feinberg | 2022-10-02 20:55:46 -0700 Remove Rolling Charge This ability still seems quite fun, but it seems like it'll work better as a spell (where it can combine with many different species in interesting ways) than as a species (where it only combines with a few backgrounds in distinctive ways). Let's move it out for now. Also remove Armataurs' innate sinv, since that only existed for Rolling Charge UI reasons. -------------------------------------------------------------------------------- ba81c3259c | Nicholas Feinberg | 2022-10-02 20:55:32 -0700 Rename Palentonga to Armataur The name 'palentonga' was intended to be a bit more subtle than 'felid', 'octopode' or even 'barachian' - to be an 'animal-person' species name that merely hinted toward the species (pangolin), rather than shouting it from the rooftops. But of course, they weren't exactly pangolins - they were giant, and had four legs plus two arms... This was too many things at once! If the concept was simple and familiar, we could have used a more exotic name, and the rest of the flavour would have put players on the right path. But as it was, players were lost. There was no resonance. So, let's rename em. 'Armataur' is a simple 'armadillo' + 'centaur' combination. (Yes, I know that properly they should be 'cenadillos'...) The abbreviation is At, to avoid ambiguity with the Artificer start. It's exciting, it's hip, it's fun. Let's try it out. -------------------------------------------------------------------------------- 4db885d750 | advil | 2022-10-02 13:26:35 -0400 fix: don't do excursions during shopping list purchases Shop menus work with various data structures that are wiped out by a level excursion (the shop data itself, plus item data for anything in the shop). Buying an unid'd item could, however, trigger a level excursion if other items of the same type are on the shopping list on different levels. This commit refactors so that (a) there's a way of preventing level excursions (causes a crash by default if enabled), (b) the shopping list will detect if excursions are disallowed and store what needs to be done, and (c) there's a way to manually trigger any postponed excursions. This is possibly still a bit brittle if no_excursions are used more widely, since the shopping list update will need to be manually called in other cases. But, it's still better than allowing arbitrary excursions as a side effect of apparently innocuous id calls. Historically I would guess this bug was widely possible, though I suspect it shouldn't be any more. Resolves #2760 -------------------------------------------------------------------------------- 1cb5dbfd7a | gammafunk | 2022-10-01 21:14:00 -0500 feat: Adjust an oklob stair vault (CarefulOdds) This vault is pretty polarizing among players since it guards all three downstairs with oklobs and places in Lair. Hence it forces you to fight through the vault to proceed, and this can involve reseting the fight until your combat results are favorable enough. Stationary monsters are always difficult to work with in terms of avoiding trivial resets of fights, but if we wanted to prevent this, we'd have to remove stationary monsters. This commit doesn't do that, but it does rebalance things a bit so that the vault places less often, and when it does place we're usually not forced to fight through it. Lower the weight to 2 and have the third staircase place inside only 1/3 the time. It's not as interesting to seal off only one staircase, so always place at least two. It's fun to torment players once and a while with mandatory stationary monsters, but with these changes mandatory clearing of this vault will be much more rare. Also remove placement in Elf and Depths, since by then oklobs are a bit less interesting as opponents, and while there's still somewhat formidible in Elf, the theme isn't really there. Move the placement in Snake to Swamp, where the thorn hunters this vault uses for post-Lair make more sense, and remove the acid blobs. -------------------------------------------------------------------------------- dd20fb75b6 | Nicholas Feinberg | 2022-10-01 11:55:24 -0700 Fix Arcjolt uselessness check -------------------------------------------------------------------------------- 972bcd5032 | Nicholas Feinberg | 2022-10-01 11:48:39 -0700 Fix Arcjolt animation -------------------------------------------------------------------------------- bc10bd73c2 | Kate | 2022-10-01 11:30:43 +0100 Add message for casting Momentum Strike with no target -------------------------------------------------------------------------------- 3c4d611d4f | Kate | 2022-10-01 11:12:31 +0100 Reword Momentum Strike uselessness message -------------------------------------------------------------------------------- c5509c9e31 | Nicholas Feinberg | 2022-09-30 20:53:23 -0700 Fix holy unrand fallbacks (elliptic) Don't place randart vorpal eudaemon blades! -------------------------------------------------------------------------------- d1b97b9b04 | Nicholas Feinberg | 2022-09-30 20:50:23 -0700 Increase player base regen by 0.2 (elliptic) To make early game resting less annoying. Someone can revert or comp this later, if desired. -------------------------------------------------------------------------------- 85af917532 | Nicholas Feinberg | 2022-09-29 21:10:15 -0700 Only trigger Momentum -Move on a hit Remove a feels-bad. I'm a little concerned about balance here, but hopefully it's fine. -------------------------------------------------------------------------------- 06f667207d | Monkooky | 2022-09-29 13:28:04 -0400 Fixes power leap, line pass, and shadow step (#2756) -------------------------------------------------------------------------------- 0b976cbdc4 | Nicholas Feinberg | 2022-09-28 20:52:16 -0700 Clean up Momentum Strike's -Move Make it only prevent voluntary physical movement - walking, flying around, hopping, etc. Translocations are still unaffected, as are other sources of movement - so you can be trampled, etc. Rewrite the descriptions to be a little clearer. Also rename the old -Move from -Go to Stuck. -------------------------------------------------------------------------------- 62a5988fa7 | Nicholas Feinberg | 2022-09-28 20:24:55 -0700 Don't arcjolt rElec+++ enemies Fixes a warning when arcjolting next to a summoned lightning spire. -------------------------------------------------------------------------------- 5d06c95188 | Nicholas Feinberg | 2022-09-28 10:16:58 -0700 Continue to ruin ebering's vision (Monkooky) Remove an overlooked reference to astral vision / xray_vision, per 1891117ce. -------------------------------------------------------------------------------- 1891117ce2 | Nicholas Feinberg | 2022-09-27 19:03:23 -0700 Remove Ashenzari's Astral Vision (hellmonk) Very thematic, but quite buggy - breaks monster AI, resting, etc. Let's axe it for now. Could maybe bring it back someday as an active, similar to old Ash. -------------------------------------------------------------------------------- 83d47c8028 | Nicholas Feinberg | 2022-09-27 17:47:20 -0700 Rework Volcanic Tap into Momentum Strike Switch it from Conj/Fire/Earth to Conj/Tloc, to reduce the number of spells in the starting book and to push more toward hybrid-friendly schools. Also frontload the power of the spell a bit more. Tile is a placeholder. -------------------------------------------------------------------------------- c060d6dac2 | Nicholas Feinberg | 2022-09-27 17:18:09 -0700 Add new loading art (Gompami) Kobold with a triple crossbow! -------------------------------------------------------------------------------- 2ba88f6271 | Nicholas Feinberg | 2022-09-27 14:05:35 -0700 Fix Airstrike (nicolae) Very bad merge in 068b7645628b362d40088dc8c96a52e76a035056. -------------------------------------------------------------------------------- dd60e06945 | Kate | 2022-09-27 15:58:33 +0100 Fix monster spellcasting test failure -------------------------------------------------------------------------------- cfceee88d3 | advil | 2022-09-27 07:55:25 -0400 fix: don't crash in hailstorm targeting 068b7645628b seems to have a bad cut and paste that removes the return value here, leading to crashiness. -------------------------------------------------------------------------------- 068b764562 | Nicholas Feinberg | 2022-09-26 21:57:55 -0700 New spell: Volcanic Tap (L2 Cj/Earth/Fire) Try three at a level 2 start spell for Reaver. Volcanic Tap is a range 4 smitey (but capable of missing) damage spell, comparable to Stone Arrow. However, it locks the player in place with -Move for 5-8 turns after a cast, and can't be recast until that status wears off. For the first few dungeon floors, it's a 'cast once per fight' spell - a strong pull toward continuing to cast rather than immediately switching to armour. Later, it becomes more situational, since getting locked in place in fights against multiple enemies can be extremely dangerous. Let's try it out. -------------------------------------------------------------------------------- 895c20ea24 | Nicholas Feinberg | 2022-09-26 21:57:55 -0700 Tweak Hailstorm To maybe make it more appealing to Reaver, move it to level 3 and give it a miss chance. This should also serve the cause of making more spells care about accuracy. -------------------------------------------------------------------------------- 161da3a0d4 | Nicholas Feinberg | 2022-09-26 21:57:43 -0700 New background: Reaver A new warrior-mage background, Reavers primarily focus on melee combat, but have a small set of backup spells to use for tough situations. These spells have limitations (Drain, -Move, or simply positioning) that make them difficult or impractical to use as a primary offense. Reavers are intended to be a flexible background - shifting more toward melee, casting, or neither (remaining a hybrid) as the game goes on. Tile by Sastreii. Partially reverts 1cc687962fc2b6 (2011). -------------------------------------------------------------------------------- f478ae5f9b | Nicholas Feinberg | 2022-09-26 21:53:45 -0700 Switch out Ice Elementalist's Hailstorm for SIB Players have historically been a bit unhappy with Hailstorm as the top-end of the Ice Elementalist spellset. It's an interesting spell, but tricky to use effectively, especially without Summon Ice Beast or Metabolic Englaciation to help maintain distance between the player and their enemies. That trickiness suits Reaver exactly, though, so I'm stealing the spell from IE. In exchange, Summon Ice Beast returns to the IE start. 1b49dfe8c25f9 (2021) removed Summon Ice Beast because it was 'overly defining' for the background (and we already have another background defined by summons!). However, now that there's a 1-beast summon limit on the spell and now that it's not stealing attention from Hailstorm, that should be much less of a problem. Let's try it out! -------------------------------------------------------------------------------- 833205f978 | Nicholas Feinberg | 2022-09-26 21:53:37 -0700 New spell: Kiss of Death L1 Conj/Necro. Does high draining damage to an adjacent foe, starting at 2d5 and rising to 2d13 at max (25) power. However, also inflicts heavy drain on the player, equivalent to a use of Ru's Apocalypse. Can bail you out of a tough spot early on, but be careful about over-using it! Intended as a starting spell for the new Reaver background. Kiku can also grant it. Tile by Sastreii. -------------------------------------------------------------------------------- b106f4c828 | Kate | 2022-09-26 21:55:49 +0100 Let Static Discharge affect rElec monsters As long as they're not completely immune to electricity, they should still be valid targets. Also fix resistance being applied twice for its damage. -------------------------------------------------------------------------------- 71e3da25a7 | Kate | 2022-09-26 21:55:49 +0100 Fix missing save compat for a removed vault -------------------------------------------------------------------------------- d541229a0b | hellmonk3 | 2022-09-26 16:50:46 -0400 feat: hermit pendant guarded unrand Also, adjust pendant capitalization (elliptic) -------------------------------------------------------------------------------- f412724dd0 | hellmonk3 | 2022-09-26 16:40:49 -0400 feat: new Okawaru overflow Teaches the player what a real friend looks like. -------------------------------------------------------------------------------- 343ea32564 | advil | 2022-09-26 12:43:43 -0400 fix: save compat for 1eb326923381 Without this, saves where the vault has already placed will crash on loading the level. Alternatively one could disable this vault in the save compat, but I don't have a test save with the vault on hand. -------------------------------------------------------------------------------- 7f746667c4 | Nicholas Feinberg | 2022-09-25 22:19:34 -0700 Fix @ attack delay with haste + finesse (elliptic) Don't claim that haste stacks nicely with finesse in @. I'm not sure when this became broken - it looks like maybe we tried to factor out haste when displaying attack speed in @, and didn't fix the finesse code after we started including haste? -------------------------------------------------------------------------------- 4d237caa85 | Nicholas Feinberg | 2022-09-25 22:10:59 -0700 Let formicids shaft through Tomb I believe this was only forbidden by accident; shafts can't generate as random malevolence effects in Tomb, which incidentally broke Formicid self-shaft. -------------------------------------------------------------------------------- 30045a6dda | Nicholas Feinberg | 2022-09-25 22:06:32 -0700 Mark delvers pre-shafted (acrobat) Don't allow delvers to be shafted in D, for lore and kindness reasons. -------------------------------------------------------------------------------- 10421eeba7 | Nicholas Feinberg | 2022-09-25 21:56:41 -0700 Give lochaber axe *Drain (acrobat) To discourage swapping for higher-damage weapons against single targets. Lochaber axe is an oldschool weapon - if you just toss it aside for newfangled 'bardiches' and 'executioner's axes' at the least excuse, you deserve to get haunted! acrobat also suggested giving a vorpal brand, but that seems excessive to me. If you want the spectacular power of a 5x5 cleave, you shouldn't get mega damage per hit too! -------------------------------------------------------------------------------- 03d90e2e6d | Nicholas Feinberg | 2022-09-25 19:22:19 -0700 Display monster Arcjolt damage (ardl) -------------------------------------------------------------------------------- 748be8cbb9 | Nicholas Feinberg | 2022-09-25 19:18:36 -0700 Remove AK (the background tile) Missed a spot earlier. Partially reverts 1d83d27b2f203060e91c6742e3b95ad49ca714ac, in a sense. -------------------------------------------------------------------------------- fbc108b0ab | Nicholas Feinberg | 2022-09-25 19:15:22 -0700 Fix: banished pharaohs shouldn't bind souls (ardl) Only killing pharaoh ants should trigger the bind soul effect. -------------------------------------------------------------------------------- 7370640ec8 | Nicholas Feinberg | 2022-09-25 14:10:51 -0700 Remove unused targeter_shotgun Gone but not forgotten 7, add fighter flag to mostly compensate accuracy, add XP multiplier to mostly compensate XP. -------------------------------------------------------------------------------- ea98e250e0 | advil | 2022-09-20 17:08:18 -0400 feat: more butterflies This commit makes two changes: * Substantially increase the density of range 2 butterflies. * Approximately double the total amount of butterflies, placing the second set further from the player. Too far? Not enough? I'm not sure... It might be more sensible to explicitly randomize based on local density, not number, but this commit works with existing summon placement tricks. Because it doesn't do this, this commit maybe makes things too strong in enclosed areas? But it doesn't do anything about butterflies dying easily. -------------------------------------------------------------------------------- 630cfc4551 | Nicholas Feinberg | 2022-09-19 21:27:31 -0700 Fix delvers + ?fog + ?butterflies (Monkooky, Solitudinal) Don't show ?butterflies in the unknown items list after you've already found a ?fog on the floor - item sets make that impossible. Closes #2711. -------------------------------------------------------------------------------- b40fab5c76 | Nicholas Feinberg | 2022-09-18 13:37:51 -0700 Make fleeing monsters enter clouds Someone in #dcss suggested this, but I can't find their post again now that I'm looking for it. Anyway, it seems fun. If this makes the Cause Fear spell too powerful, we may simply have to r-word it. -------------------------------------------------------------------------------- 8056f4cfa4 | Nicholas Feinberg | 2022-09-18 13:33:12 -0700 New Cinder Acolyte (Sastreii) -------------------------------------------------------------------------------- ba5a0857d8 | Nicholas Feinberg | 2022-09-18 13:29:25 -0700 Make friendlies avoid blastsparks (acrobat) Make it take a little more work to blow up your pals. -------------------------------------------------------------------------------- 3d28bfe2ac | Nicholas Feinberg | 2022-09-18 13:25:17 -0700 Prompt before walking into blastsparks And don't autoexplore into em, etc. -------------------------------------------------------------------------------- 28931fb96c | Nicholas Feinberg | 2022-09-18 12:58:36 -0700 Make monsters cheat when casting Sandblast (hellmonk) It's too much of a pain to make them take 1.5x time, so make em take 1x instead of 2x. -LOC! -------------------------------------------------------------------------------- 5188dcd197 | Nicholas Feinberg | 2022-09-18 12:57:47 -0700 Fix Arcjolt noise (acrobat) -------------------------------------------------------------------------------- aceff491a1 | Nicholas Feinberg | 2022-09-18 12:54:27 -0700 Make the Robe of Misfortune an early unrand (gammafunk) Seems funny. -------------------------------------------------------------------------------- cbaa6ad2a4 | robertxgray | 2022-09-18 20:28:10 +0100 Fix missing newline in the options guide This breaks the corresponding help dialog in small screens. Bug introduced in f02deff4a79ecda93b89ecfb91e49eea323dc6f2. -------------------------------------------------------------------------------- 78081006d9 | Kate | 2022-09-18 20:25:35 +0100 Fix Golubria timers being stopped by terrain changes (#2728) If all the existing passages of Golubria on a level were temporarily removed (for example by casting Noxious Bog, or by an elemental wellspring creating water), their timers wouldn't resume when the terrain expired and they'd remain permanently (or until restarted by some other action such as reloading the game or casting the spell again). Fix by reapplying the relevant level state whenever any passages are created again. Closes #2728. -------------------------------------------------------------------------------- 51eefa89be | advil | 2022-09-17 14:08:41 -0400 fix: remove a spurious file (Goratrix) Thematic name, but no idea where this came from. -------------------------------------------------------------------------------- 90ed53a01c | advil | 2022-09-17 11:05:59 -0400 fix: tweak shapeshifter notes * indicate known shapeshifters on seen notes in chardumps. (Note: this still doesn't apply to shifters that change out of LOS, their known flag gets dropped in this case) * Reorder the "change" note and any following "seen" note, it makes more sense this way. The ordering here seems to be a little bit delicate, so hopefully these changes (especially the second one) doesn't have any further unexpected side effects... -------------------------------------------------------------------------------- 91d0c66ccf | hellmonk | 2022-09-16 22:52:57 -0400 reduce static discharge damage Still a bit too good with lower power cap. -------------------------------------------------------------------------------- 2a1322497e | advil | 2022-09-14 12:58:21 -0400 fix: mostly disable item actions in menu describe popups The examine changes in 0.29 made it possible to get to describe popups in basically every item-oriented menu, and by default, item actions were enabled for these popups. Aside from the regular inventory menu, these actions are more weird than useful, and some are quite buggy (e.g. (d)rop from the drop menu). In a few cases I can imagine these making sense, but the describe popup action code is not very well suited to custom item lists, so it is a lot more straightforward to simply blanket disable for most InvMenus. Still enabled for regular inventory, and stash menus (but in this case, only ground item actions show up). Resolves #2713 -------------------------------------------------------------------------------- b27577e5d9 | Kate | 2022-09-13 20:45:13 +0100 Fix Arcjolt crashing on dismissed summons -------------------------------------------------------------------------------- c8d74c9d4e | Kate | 2022-09-13 19:38:21 +0100 Show when monsters are hurt by Arcjolt -------------------------------------------------------------------------------- ecb607e51a | Kate | 2022-09-13 19:30:34 +0100 Don't let Arcjolt travel through walls/out of LOS Letting Arcjolt travel through metal walls is intended to be for theme reasons but is inconsistent with how metal walls interact with other lightning spells, and also allows damaging monsters inside vaults from safety. Also fix the spell being able to continue past the caster's LOS. -------------------------------------------------------------------------------- a018f8e90f | advil | 2022-09-12 20:46:10 -0400 fix: maybe quiet another gcc warning A silly warning deserves a silly macro solution. Resolves #2658, and half of #2673 -------------------------------------------------------------------------------- 66a3b8458b | advil | 2022-09-12 20:38:26 -0400 fix: maybe quiet a gcc warning These conditions on wchars were written in an overly involved way that was preventing gcc from detecting that `key` was defined or unused for every condition. -------------------------------------------------------------------------------- 3b1a8e4ee4 | advil | 2022-09-12 17:53:24 -0400 fix: use only annotated tags for version info The new CI script for building debs uses an action that has a bug whereby it can create a (lightweight) tag to hang files on in trunk, independent of the current branch. This, unfortunately, has played havoc with our versioning. And even more unfortunately, it does not appear that a regular pull/fetch will ever remove stale local tags, so servers need some workaround. To fix this issue and also prevent it from happening again, this commit changes the version scripts to use only annotated tags -- the release guide explicitly uses annotated tags, and I think we have been pretty consistent about it. This also seems more consistent with the intended distinction here (from the git-tag man page, "Annotated tags are meant for release while lightweight tags are meant for private or temporary object labels"). Also, no one currently around can figure out why we are using `--tags` in the version info in the first place, something which appears to go back as far as 2f656a0430f3. -------------------------------------------------------------------------------- 95531337e3 | Nicholas Feinberg | 2022-09-12 13:13:32 -0700 Fix blastsparks + hop (Bardcore) -------------------------------------------------------------------------------- 744e84de5b | advil | 2022-09-12 10:04:14 -0400 feat: `tile_display_mode` for local tiles This implements both hybrid and glyph mode for local tiles, in the dungeon view only. Visually, the implementation matches webtiles reasonably closely, including the awful square rendering in hybrid mode. Glyphs mode is probably more accurately rendered than webtiles as it uses some weird hacks to get the grid to exactly match the font size. Unfortunately extending this to show glyphs in other contexts (sidebar, popups, etc) is a fair amount more work, given the way this is all implemented. (Overall, this is a much more involved patch than the webtiles glyph implementation was, because local tiles defined out most of the necessary info.) This commit also fixes a bug in background rendering in local tiles where the rectangle offset shouldn't have used the glyph offset. -------------------------------------------------------------------------------- 5625c4ed77 | advil | 2022-09-12 10:02:13 -0400 Revert "task: add a trunk reminder for the 0.29 tournament" This reverts commit be8da3892a6db78639d8a0adbdc467c1312d330c. -------------------------------------------------------------------------------- c3f1650bb9 | Nicholas Feinberg | 2022-09-11 21:16:19 -0700 Fix: don't place zombies without attacks For example, via Kiku's Unearth Wretches. -------------------------------------------------------------------------------- c067630892 | advil | 2022-09-11 22:08:08 -0400 fix: more AK tag_upgrade fixes -------------------------------------------------------------------------------- 1eb3269233 | hellmonk3 | 2022-09-11 21:50:38 -0400 remove grunt_zot_stairs_overgrown This vault was spoilery, weird, and not very good by modern crawl standards. -------------------------------------------------------------------------------- 367992a1e3 | hellmonk3 | 2022-09-11 21:49:33 -0400 feat: New early unrand, the Hermit's pendant An amulet of faith that sets your invocations skill to 14 and evocations skill to 0 while worn. Description by Pleasingungus, tile by Sastreii. -------------------------------------------------------------------------------- fa959c11ff | hellmonk3 | 2022-09-11 21:31:25 -0400 nerf Simulacrum The power scaling was a bit too good. -------------------------------------------------------------------------------- 7436db4de4 | hellmonk3 | 2022-09-11 21:30:03 -0400 rework Ignacio spawn rate (#2719) Rather than scaling with runes just do a flat 10% per pan floor in games where he spawns. Let people actually see the lad. -------------------------------------------------------------------------------- 2fa46d2e7a | hellmonk3 | 2022-09-11 20:52:19 -0400 feat: Allow branded quickblade generation seems to be disallowed for legacy reasons; quickblades are already quite rare so it seems fine to allow eg acquiring a branded one. -------------------------------------------------------------------------------- 0feb890e1c | advil | 2022-09-11 20:49:01 -0400 fix: fully remove AK from job selection It was still possible to choose AK by doing jobs first, but then you could only pick species randomly and got converted to a monk on game start. This commit will also fix a tag_upgrade build failure. -------------------------------------------------------------------------------- 8307c4eb84 | advil | 2022-09-11 20:45:48 -0400 fix: webtiles build? e63b5e06755426 commented out `TILEP_PART_DRCHEAD` with a note, but doing this prevents webtiles from building. If this part of e63b5e06 were to be reverted, this commit should be reverted too. -------------------------------------------------------------------------------- a6dd27ae95 | advil | 2022-09-11 20:33:53 -0400 feat: show range in scorch targeter This was implicit, in that out-of-range enemies wouldn't highlight, but it's still very useful ui feedback to so out-of-range squares grayed out. This commit also refactors so that scorch directly uses the targeter when choosing targets, and there is therefore only one code path for ui and actual casting. -------------------------------------------------------------------------------- a887aabcbf | hellmonk3 | 2022-09-11 20:20:31 -0400 feat: Upgrade dk_xom_monty_hall The iguana wasn't much of a "prize" compared to the jellies. Upgrade it to a friendly goblin, with the bonus of matching xom's friendship vault lore. -------------------------------------------------------------------------------- 3b22beffe7 | robertxgray | 2022-09-11 20:17:23 -0400 Add the developer name to the metainfo -------------------------------------------------------------------------------- 921e097f49 | robertxgray | 2022-09-11 20:17:23 -0400 Build debian packages using github actions The script debian_changelog.py checks if the latest version in debian/changelog is the same as the release. If they are not the same, then an automatic entry is added: crawl (2:0.99.0-1) unstable; urgency=low * New upstream release. -- Crawl bot Mon, 01 Jan 2022 12:12:12 +0000 -------------------------------------------------------------------------------- 2701b9a906 | robertxgray | 2022-09-11 20:17:23 -0400 New XDG_NAME build variable This variable configures the XDG resource names. The default names are: - org.develz.Crawl_console (console build) - org.develz.Crawl_tiles (tiles build) -------------------------------------------------------------------------------- 6869e69685 | robertxgray | 2022-09-11 20:17:23 -0400 Configure GitHub Actions for AppImage builds -------------------------------------------------------------------------------- 8c09ba367f | robertxgray | 2022-09-11 20:17:23 -0400 Update AppImage and AppStream - AppImage: Fix missing fonts - AppImage: Prepare files for GitHub Actions - AppStream: Use reverse domain names as identifiers - AppStream: Add content rating -------------------------------------------------------------------------------- 9bf192ea13 | robertxgray | 2022-09-11 20:17:23 -0400 Fix some paths on AppImage builds GAME is used to set the name of the executable. Define SAVEDIR because the current path is used otherwise. -------------------------------------------------------------------------------- b3285335bf | robertxgray | 2022-09-11 20:17:23 -0400 Standardize Linux packages - New build target: install-xdg-data. Installs some files required by Linux packages according to the XDG specifications (freedesktop.org). Related resources stored in crawl-ref/source/xdg-data - New build target: appimage. Builds a Linux AppImage with the help of the install-xdg-data target and the linuxdeploy tool. - Debian build updated to make use of the install-xdg-data target. Common files have been removed from the debian folder. Fixed missing icon in crawl menu item if crawl-tiles is not installed. Use Debian's uses machine-readable format for copyright file. Remove menu files based on CTTE #741573. - Documentation and man page updated. Closes #464 Closes #1256 Closes #2049 -------------------------------------------------------------------------------- 9ddfead1bb | mainiacjoe | 2022-09-11 20:14:43 -0400 Permit a Temple map to actually be placed. (#2688) I suspect this TAG typo is preventing the level builder from choosing this map. -------------------------------------------------------------------------------- 4cabb3c838 | Nicholas Feinberg | 2022-09-11 16:21:10 -0700 Fix the build..? -------------------------------------------------------------------------------- 82223dbcf9 | Nicholas Feinberg | 2022-09-11 16:00:18 -0700 Add rF- and rC- badmuts to the general pool These are impactful without being crippling, and change the way that you evaluate threats. Let people enjoy these without having to get Qazlal wrath first! Getting rF- from an OOF is rough, but so are a lot of malmuts. Players will figure things out. :) -------------------------------------------------------------------------------- cc36c8f8a0 | Nicholas Feinberg | 2022-09-11 15:11:23 -0700 Remove conjure flame further MMaybe fix the tag-upgrade build? -------------------------------------------------------------------------------- 26221c613b | Nicholas Feinberg | 2022-09-11 14:02:01 -0700 Readjust Manifold Assault When I first created Manifold Assault, I intended for it to be an incentive for 'melee' characters to hybridize. In practice, it's mostly used by transmuters, since they don't have to balance the costs of getting a spell castable in armour. It's popular there, and that's fine, but the original design goal isn't being accomplished. So, lower Manifold Assault to L4 (from L5), and make it hit half as many targets when used with UC. (It's hard to send your own limbs through twisty space without breaking em!) We'll see how this does. It might be cooler for this to apply contam on cast with UC instead (per ebering). I may revise this. -------------------------------------------------------------------------------- ed78777e1f | Nicholas Feinberg | 2022-09-11 13:56:25 -0700 Fix Hexslinger abbrev (elliptic) -------------------------------------------------------------------------------- bfaf442b86 | Nicholas Feinberg | 2022-09-11 13:55:23 -0700 Actually add Arcjolt tile Oops... -------------------------------------------------------------------------------- e63b5e0675 | Nicholas Feinberg | 2022-09-11 13:55:19 -0700 Remove Abyssal Knight Dungeon Crawl once had many, many zealot backgrounds. The dev team has been steadily moving away from this, because picking a god is a big, interesting, exciting moment in each game. A zealot start has to do something really valuable to justify taking that away. Historically, abyssal knights' big thing was starting in the abyss. This was a fun little minigame, a bit like delver - the bold could wander a bit to try to pick up an extra scroll or potion, the reasonable could race for the exit, and then you could start a normal game. It was a little taste of something different, especially for newer players. However, a series of changes have steadily eroded that experience. Items no longer generate in the Abyss, and you now start on the exit. The correct move is almost always to hit > immediately. It's a nothingburger. Sad! Removing Abyssal Knight from the starting backgrounds allows us to make Lugonu much stronger. Altars to Lugonu scattered around the Abyss are meant as an incentive to worship, but the consequences of your old god's wrath are harsh enough that it's rarely right to do so, and it also feels bad - if you wanted to play a Lugonu worshipper, you'd just start AK! We can now (in subsequent commits) fix both problems. Last and certainly least, this means that adding another background to the centre column of the background picker doesn't add a new row to the display. :) Closes #2689. -------------------------------------------------------------------------------- 06a4886a65 | Nicholas Feinberg | 2022-09-11 13:54:21 -0700 Add Arcjolt tile (Sastreii) -------------------------------------------------------------------------------- 2207dc9a4c | Nicholas Feinberg | 2022-09-11 13:48:29 -0700 Allow Spellforged Servitors to cast Arcjolt -------------------------------------------------------------------------------- 2fb67d7a0d | Nicholas Feinberg | 2022-09-11 13:48:26 -0700 New spell: Arcjolt (L5 Conj/Air) Fires an electrical blast that hits everything adjacent to you, adjacent to creatures adjacent to you, etc, etc, up to the spell's range. It also goes through metal walls, for theme reason. Damage is exactly Fireball's, but ignoring half AC and higher variance. (This may be too strong - my feeling is that the targeting is more restrictive, but I could be wrong.) No big design goal, it just seems fun. -------------------------------------------------------------------------------- 5a0acc285a | Nicholas Feinberg | 2022-09-11 13:46:45 -0700 Add missing blastsparks art Oops! -------------------------------------------------------------------------------- 7e3f6f0d8d | Nicholas Feinberg | 2022-09-11 13:44:03 -0700 Rename Arcane Marksman to Hexslinger Arcane Markspersons have very long and clunky name, which also reads as weirdly gendered/anthrocentric. For the sake of the octopodes among us, rename to the sexier name of 'Hexslinger'. It's a pun! Other names considered: - Archer-Mage - Arcane Sniper - Hexbow -------------------------------------------------------------------------------- ed66197fdc | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Reduce salamander base damage Again, per 71f743befe3 but without the math. -------------------------------------------------------------------------------- db108d344f | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Reduce shock serpent retaliation damage by 25% Try to make them a little less punishing to fight. -------------------------------------------------------------------------------- f5932fce55 | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Reduce orc knight and orc warlord damage Per 71f743befe3, but without the meticulous mathmetical analysis. -------------------------------------------------------------------------------- 97a1fe776a | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Pull naga warriors back further Even after 76187f39e07, they remain an overwhelmingly dominant Snake and indeed midgame killer. Cut off a few hp and points of base damage. -------------------------------------------------------------------------------- e50850e3d0 | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Reduce boulder beetle damage somewhat They're a fast-moving, tough enemy for their depth. Reduce their damage from 32 to a more aesthetically pleasing 27 to give players a little more wiggle room when dealing with them. -------------------------------------------------------------------------------- 189654fd88 | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Reduce orc warrior damage again In 6e9d80e302b, orc warrior damage was reduced to partially compensate for the attack speed changes in 581982f5c1d5 and the weapon damage increase in d9c6a3bf672d99. This was not really a full compensation, though. Comparison for the three most common orc warrior weapons (by killcount): 0.26: Dam/Hit Delay Dam/Aut War Axe 30 12.5 24 Halberd 32 12.5 25 Glaive 34 13.5 26 0.27: Dam/Hit Delay Dam/Aut War Axe 26 10 26 Halberd 28 10 28 Glaive 30 10 30 That is, ignoring AC (which we shouldn't), damage over time was higher across the board in 0.27 onward. To compensate, knock 3 damage back off orc warrior. -------------------------------------------------------------------------------- 41f77ac28b | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Reduce two-headed ogre damage somewhat Their damage was increased along with their attack delay, but they're getting somewhat too many kills now. Let's pull that back down now, and add a pleasing symmetry with one-headed ogre attack damage while we're at it. -------------------------------------------------------------------------------- b375b1e849 | Nicholas Feinberg | 2022-09-11 13:40:02 -0700 Move hydras a little deeper In D and Lair: they're iconic, but getting too many kills. Scootch em a floor or two deeper, to give players more time to gear up and prep. -------------------------------------------------------------------------------- a70db94c74 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 New draconian tiles (Sastreii) -------------------------------------------------------------------------------- 7e7a2aba73 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Remove the MP cost from evoke blink/invisibility Redundant with their newer drawbacks (-Blink and Drain respectively), and felt weird with the Drain-on-failure of Invis particularly. Adds more of a reason to care about +Blink even if you have the spell castable, since it now works when you're out of MP. -------------------------------------------------------------------------------- 13bd0ecfb8 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Autoshoot when bumping with a ranged weapon Extremely annoying to play ranged characters and get randomly prompted. -------------------------------------------------------------------------------- cf644656b2 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Give unrands their own colour Teal (per nicolae/ebering), to help players keep an eye out for really special unique properties. -------------------------------------------------------------------------------- e5bca228d6 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Give mummies innate Faith (Lici) Mummies have never had a really fun distinct playstyle, and the loss of food made that even more obvious. Give them something new and fun to play with: innate Faith, equivalent to always wearing the corresponding amulet. -------------------------------------------------------------------------------- 95544447e1 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Make walking tomes silenceable Consider them to be reading their spells. It seems good for them to have more weaknesses, and makes some sense in terms of consistency that spells in spellbooks do need to be verbally read to take effect. -------------------------------------------------------------------------------- 0aaa971b33 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Show possibilities for faded altars Ecumenical (aka faded) altars are intended to increase the variety of the game, by encouraging players to take a risk (get an unknown god) in exchange for an upside (earlier god, small piety or other bonus). There are a few problems with the design, however. Proper play requires thinking about all ~25 possible gods you could get, which is both overwhelming if done seriously, and often bad enough (in the worst case) to discourage altar use entirely. It's also discouraging for those who really dislike certain gods. Instead, let's show a preview of three possible gods you might get, similar to how /polymorph now works. Players can now see a description of each god (reducing the barrier to entry for newer players), and then get one randomly. -------------------------------------------------------------------------------- b03bc503e8 | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Make batty monsters their own BEH (acrobat) So that it's possible to see when batty monsters are unaware of the player, make 'batty' and 'wandering' separate states. This is probably buggy. -------------------------------------------------------------------------------- 421d095d5f | Nicholas Feinberg | 2022-09-11 13:39:26 -0700 Reduce short sword base delay (elliptic) Early-game compensation for the damage reduction in e8845773e3cb. -------------------------------------------------------------------------------- 5f81fb4344 | Nicholas Feinberg | 2022-09-11 13:39:25 -0700 Add UC damage ratings in the @ UI By overwhelming popular demand. Would love to plop em somewhere more visible, maybe in a new tab of %. -------------------------------------------------------------------------------- 4715a6a9d8 | Nicholas Feinberg | 2022-09-11 13:39:25 -0700 Add tiles for Kindle Blastsparks (Sastreii) -------------------------------------------------------------------------------- 638e43912b | Nicholas Feinberg | 2022-09-11 13:39:25 -0700 Remove Corpse Rot Corpse Rot has been a troubled spell for quite a long time. We've gone through many iterations on it, and few have made players happy. Let's hope Cigotuvi's Dreadful Rot has a better run at it. Also rewrite Kiku gift code. -------------------------------------------------------------------------------- 522f029d39 | Nicholas Feinberg | 2022-09-11 13:39:25 -0700 Remove Conjure Flame As discussed in the preceding commits, Conjure Flame was a cool and powerful spell, but the 'ember' mechanic (necessary for balance purposes) was confusing and frustrating for players. Hopefully Kindle Blastsparks and Cigotuvi's Dreadful Rot will together fill its niche. -------------------------------------------------------------------------------- 08ca5ef3b5 | Nicholas Feinberg | 2022-09-11 13:39:25 -0700 New spell: Cigotuvi's Dreadful Rot (L2 Nec/Air/Pois) Part B of the plan to replace Conjure Flame and Corpse Rot, Cigotuvi's Dreadful Rot plops a single-tile cloud of miasma onto the caster and drains them. (Your flesh rots into miasma!) You get one turn of miasma immunity, but after that, if you're not undead, you'd better hustle out of there. Cloud duration scales with power. (The drain is because this is a very strong effect.) Any creature which is vulnerable to miasma avoids it for dear life, so it's a great way to make some space if you're in a jam. If you have some way to trick monsters into it, though - Gell's Gravitas, Lesser Beckoning, potions of attraction, orbs of mayhem... well, they're in for a bad time! It's also hilariously good against Robin specifically. The hope is that this will be more intuitive than Conjure Flame (with its delayed 'embers' that monsters stomp on), and won't have the self-buff or positioning issues of Corpse Rot. Also it hopefully won't be wildly overpowered. Let's try it! Replaces Conjure Flame in the Hedge Wizard start. Also available as a Kiku gift. -------------------------------------------------------------------------------- debd7cae40 | Nicholas Feinberg | 2022-09-11 13:39:25 -0700 New spell: Kindle Blastsparks (L3 Fire/Air/Tloc) Conjure Flame is a strong effect, but the current incarnation has proven confusing and unintuitive for players. Let's try something a little bit different. Kindle Blastsparks creates a cloud of blastsparks on the caster's tile. When any creature moves *into* that cloud (eg a monster chasing the caster), or when that cloud is hit by fire damage (fireball, wand of flame, etc), it explodes in a 3x3 blast. The blast does low damage, but it also knocks back any creature not at its center, pushing them away. This allows for a whole bunch of cute tricks. Damage currently scales with power from 2d10 to 2d18ish. If players often find it undesirable to increase power, because they'd rather blast themselves as a cheeky movement trick, then we can instead scale cloud dur or knockback chance on power. Replaces Conjure Flame in the FE start book. It's a bit unsynergistic with HW's spells (imp, meph...), so I want to do something else there. -------------------------------------------------------------------------------- c0703345a7 | Nicholas Feinberg | 2022-09-10 15:34:52 -0700 More simulacrum tiles (Sastreii) For X-shaped monsters and orb-shaped monsters. -------------------------------------------------------------------------------- 8b159a9891 | Nicholas Feinberg | 2022-09-09 22:22:48 -0700 Fix: don't mark ?poison dangerous under Q (ThMeInTeam) Or with the robe of clouds. -------------------------------------------------------------------------------- e6a4009bfd | Nicholas Feinberg | 2022-09-09 20:37:27 -0700 Tweak hand crossbow stats Increase base delay by 1 point. In general, we have 1-handed weapons take less skill than 2-handed weapons, since players need some XP to invest in Shields with, but we also have ranged weapons take a bit more skill than comparable melee weapons, since melee weapons also need XP for a ranged option (throwing, evo, invo, etc). A hand crossbow is along the same lines as a double sword or eveningstar (16 skill to mindelay), so set its base delay a little higher, requiring 18 skill. Decrease base damage by 1 point, to 16. This is mostly so people feel happier that an arbalest does more damage than a hand crossbow. (But maybe we should rename it to 'hand cannon' anyway.) -------------------------------------------------------------------------------- 90e3122c3a | advil | 2022-09-08 09:01:21 -0400 fix: add a multidrop sanity check -------------------------------------------------------------------------------- 2e61a25929 | advil | 2022-09-06 13:49:45 -0400 fix: sync webtiles hover on UseItemMenu `,` This completely overrides the superclass code, and so needs to duplicate the webtiles sync call. (Without this, `,` left the webtiles hover on a header, even though the crawl binary had the correct position.) -------------------------------------------------------------------------------- d67112afd3 | advil | 2022-09-06 13:46:10 -0400 fix: suppress initial mouse hover on menu display If the mouse cursor is over a hoverable menu item when a menu pops up, even if it isn't currently visible, a mouseenter event is generated. This can lead to fairly unintuitive initial selections if the mouse is in the wrong place. This commit suppresses hover entirely on initial display. It might be nice to do this in a slightly more nuanced way, but I think this commit is a net improvement. -------------------------------------------------------------------------------- 86a8295270 | Nicholas Feinberg | 2022-09-05 15:21:11 -0700 Maybe fix the famous serpent's lash mimic bug Check for mimics on entering a space, not at end of turn. Is this right? Who knows. -------------------------------------------------------------------------------- 784eafce7f | Nicholas Feinberg | 2022-09-04 21:50:15 -0700 Clarify effects of Strength (acrobat) -------------------------------------------------------------------------------- b2d611f6b1 | advil | 2022-09-02 09:08:51 -0400 fix: remove an unnecessary game links optimization As a bonus, this change makes it a lot easier to customize game links. -------------------------------------------------------------------------------- 1cef19eb02 | Kate | 2022-09-01 21:33:25 +0100 Fix Natasha respawning as neutral when dying while frenzied -------------------------------------------------------------------------------- 86fc33db47 | Kate | 2022-09-01 21:33:18 +0100 Fix frenzied and non-frenzied slime creatures merging -------------------------------------------------------------------------------- e5163829ff | advil | 2022-09-01 14:09:59 -0400 fix: relocate an item use check I thought I was being clever to centralize this check, but without some more refactoring it needs to be done in operation-specific code. This commit prevents crashes when wielding/wearing floor items with a full inventory (jewellery was already ok). -------------------------------------------------------------------------------- 5a63ccc183 | advil | 2022-09-01 00:29:56 -0400 fix: get equip menu mode toggling to fully work This was missing the part that actually let this work, sigh. This implementation is kind of brute force, in order to get something at all to work. -------------------------------------------------------------------------------- c6058ea1ff | advil | 2022-08-31 23:42:59 -0400 fix: item type changing for read/drink menu This was somewhat embarassingly broken as initially implemented. This commit is a quick pass to get it to work, but this would need some refining. -------------------------------------------------------------------------------- ec41be8ddc | advil | 2022-08-31 20:54:24 -0400 fix: some empty menu crashes -------------------------------------------------------------------------------- bbf338a72c | advil | 2022-08-30 08:38:05 -0400 fix: explicitly handle a webtiles error case Occasional exceptions like: 2022-08-30 05:12:17,081 WARN: #5978 Error while handling JSON message (''{"has_focus":true,"generation_id":null,"widget_id"'...')! Traceback (most recent call last): File "/chroot/crawl-master/webserver/webtiles/ws_handler.py", line 1104, in on_message self.process.handle_input(message) File "/chroot/crawl-master/webserver/webtiles/process_handler.py", line 923, in handle_input self.conn.send_message(utf8(msg)) File "/chroot/crawl-master/webserver/webtiles/util.py", line 89, in wrapped return f(*args, **kwargs) File "/chroot/crawl-master/webserver/webtiles/connection.py", line 113, in send_message self.socket.sendto(utf8(data), self.crawl_socketpath) FileNotFoundError: [Errno 2] No such file or directory I'm not sure I exactly understand what is causing this (it seems to be the same connection repeatedly), but this commit causes the socket to explicitly close when it does happen. -------------------------------------------------------------------------------- f629c1b73e | robertxgray | 2022-08-30 01:37:06 +0200 Fix missing docs in Android build -------------------------------------------------------------------------------- 806c11bf1d | Nicholas Feinberg | 2022-08-29 07:30:52 -0700 Fix Artificer manual description (#2689) They don't start with a short sword anymore! -------------------------------------------------------------------------------- b3c18b1f4e | Nicholas Feinberg | 2022-08-29 07:30:52 -0700 Fix: make rC+++ monsters immune to Refrig again Broken in aed3a0c8d8a132d27718dec265e5da983d5dda97 . I forgot how monster resists worked. -------------------------------------------------------------------------------- c6d0f036a7 | Kate | 2022-08-28 23:20:42 +0100 Fix monsters not waking up when resisting mass enchantments Monsters that are completely immune to any given mass enchantment still won't necessarily be alerted by them, but any monster that resists Cause Fear, Anguish or Discord will now properly wake up. -------------------------------------------------------------------------------- 20e1baf61b | robertxgray | 2022-08-28 22:55:36 +0200 Update Android build to 0.29 - Remove ammunition from the small layout. - Add zot.cc to the native source files list. -------------------------------------------------------------------------------- 0dbf925e60 | robertxgray | 2022-08-28 21:42:59 +0200 Merge branch 'master-upstream' -------------------------------------------------------------------------------- cf5b79f35d | robertxgray | 2022-08-28 21:31:30 +0200 Minor Android changes - Fix some graphical errors when rotating and/or resuming the app. - Move staircase keys in numeric keyboard to match the upper keyboard. - Update gradle. -------------------------------------------------------------------------------- 42789b21ef | Nicholas Feinberg | 2022-08-27 22:28:52 -0700 Restrict lemuel geyser map depths To D:11-. Nasty autoexplore trap earlier. Still a little bit later, so maybe we should do something more with these. -------------------------------------------------------------------------------- 0dc136218d | robertxgray | 2022-08-27 22:57:01 +0200 Toggle tab icons is Android exclusive This function is unlikely to be useful in other platforms and may confuse users swapping between layouts. -------------------------------------------------------------------------------- d07543615f | robertxgray | 2022-08-27 22:56:46 +0200 Rename option: tile_window_minimum => tile_window_limit_size I think the old name was a bit confusing. -------------------------------------------------------------------------------- fd59ed72b1 | robertxgray | 2022-08-27 22:56:35 +0200 Responsive layout The local tiles interface is now able to change between the normal and small layouts as a response to a resize event. Android devices continue using the small layout by default. Some tablets and laptops may be big enough for the normal layout, but more testing is required. Other devices use the small layout only when the available size is too small for the normal layout. -------------------------------------------------------------------------------- 011bda1208 | Kate | 2022-08-27 17:15:36 +0100 Fix some unrand effects not scaling with time taken -------------------------------------------------------------------------------- 28f7cfb6c4 | Kate | 2022-08-27 17:15:36 +0100 Fix Wereblood shout chance not scaling with time taken -------------------------------------------------------------------------------- 372c29fc68 | Kate | 2022-08-27 17:15:36 +0100 Fix spacing -------------------------------------------------------------------------------- 86255a743f | Nicholas Feinberg | 2022-08-27 09:14:35 -0700 Fix shield delay description They were incorrectly claiming to act like body armour wrt ranged weapon attack speed. -------------------------------------------------------------------------------- be8da3892a | gammafunk | 2022-08-26 15:20:46 -0500 task: add a trunk reminder for the 0.29 tournament -------------------------------------------------------------------------------- 695f716631 | advil | 2022-08-26 14:20:30 -0400 fix: one more blocking annotation It's basically expected that this call will trigger a slow callback alert; this keeps it from being attributed to something else. -------------------------------------------------------------------------------- cfff12708b | advil | 2022-08-26 14:06:34 -0400 fix: unbreak slow callback logging too quick cut & paste... -------------------------------------------------------------------------------- 743cabc681 | advil | 2022-08-26 10:40:00 -0400 fix: prevent massive strings in py27 I know I said that py27 is deprecated, but it's probably better not to do it by making players lag. What was happening here is that the annotate function gets called a lot and appends to a string, but without the context manager in play, the string was never getting cleared, amounting to a fairly rapid memory leak. At the rate this append happens, this code was easily producing a string that hit memory limits, and so I'm pretty sure once this happened each append would trigger a non-trivial swap (and block). This commit refactors so that this annotate call is a (nearly) noop in py27, and also adds in a truncation sanity check (since this error case could still happen if this function isn't called right). Unfortunately I haven't figured out a more clever / elegant way to get username info into the slow callback messaging. I've also simply removed the problem call, since it's better not to make send_message heavy, and I believe the urgency of seeing usernames there is removed by 5d08c370806fe (on CAO I'm currently never seeing blocking in this function any more, which is what should be expected from now on). -------------------------------------------------------------------------------- cf6e50daae | advil | 2022-08-26 09:59:40 -0400 docs: separate changelog for the webtiles server I've ended up writing out most of these in github issues at each release, so it seems useful to reorganize this info into an actual changelog that is stored in the repository. The main audience for this changelog is server admins, and devs who don't normally work on the server, so it is much more technically focused than the game changelog. This commit goes back through my notes from these issues to fill in a few past versions (I think basically to when I and aidanh started actively working on the server, before this it was relatively dormant except for bugfixes back to the original implementation). I expect I've missed details for the old versions, though. The 0.29.0 notes are more guaranteed to be complete. (Also, I've taken this opportunity to impose some of my own aesthetic changelog preferences here.) -------------------------------------------------------------------------------- 142975f185 | Nicholas Feinberg | 2022-08-24 22:29:05 -0700 Fix: ozo's fridge targeter + Hep (CarefulOdds) Don't claim it'll damage Hep ancestors, Fed plants, etc. -------------------------------------------------------------------------------- 557434ed05 | Nicholas Feinberg | 2022-08-24 22:23:32 -0700 Cap Static Discharge power at 50 (hellmonk) 100 power is a lot for a level 2 spell. -------------------------------------------------------------------------------- 09854fe43d | hellmonk | 2022-08-24 22:11:15 -0400 feat: Adjust the silence spell To make it a bit more attractive to characters with low spellpower, increase the fixed portion of the duration and decrease the power-dependent portion. Also, remove the casting noise (this doesn't do anything). -------------------------------------------------------------------------------- 93aa2d5b49 | advil | 2022-08-24 21:49:39 -0400 fix: mark more potential blocking functions in webtiles -------------------------------------------------------------------------------- acc37e2db0 | advil | 2022-08-24 13:04:03 -0400 fix: don't crash on ' in pickup sigh -------------------------------------------------------------------------------- 5e824e72be | advil | 2022-08-24 13:04:03 -0400 fix: fix a webtiles log message -------------------------------------------------------------------------------- e60ba3568b | Nicholas Feinberg | 2022-08-23 20:18:39 -0700 Revert "Switch numpad 5 back to 'wait'" Reverting and reverting in the widening gyre. The committer cannot hear the player; the centre (of the numpad) cannot hold... chaos reigns. This reverts commit 4c767a20b829d4591a964c99a805ecd90d16041d. -------------------------------------------------------------------------------- 64df0e423e | Nicholas Feinberg | 2022-08-23 20:17:40 -0700 Fix: no attacks of opportunity in Sanctuary (#2685) Closes #2685. -------------------------------------------------------------------------------- 5d08c37080 | advil | 2022-08-23 17:24:19 -0400 fix: make webtiles UDS socket connection fully nonblocking On linux (or at least CAO), if the socket buffer gets filled, the server appears to just sleep for the timeout length, and then close the socket. Since the timeout length is 10s, this badly lags the whole server, often causing more timeouts. I'm not sure why this is happening -- it is not the behavior that I would expect (rather, I'd expect it to block until the crawl binary catches up on its input), but in any case, it is bad. There is already code that handles just dropping input if the buffer fills, so setting this to simple non-blocking at least works on CAO in my testing. -------------------------------------------------------------------------------- 8e1c26396d | advil | 2022-08-23 16:17:40 -0400 fix: more webtiles logging -------------------------------------------------------------------------------- e059d3dbb2 | advil | 2022-08-23 14:43:17 -0400 fix: mark some more potential blocking funs (webtiles) -------------------------------------------------------------------------------- f9c0e7fdb7 | advil | 2022-08-23 14:20:41 -0400 fix: reorder CK_NUMPAD_5 binding canonical binding needs to be last -------------------------------------------------------------------------------- afde610a49 | Nicholas Feinberg | 2022-08-23 10:52:58 -0700 Fix a CREDIT per request -------------------------------------------------------------------------------- 9c555d0772 | advil | 2022-08-23 13:49:48 -0400 fix: eliminate some unnecessary disk i/o This extra stat may or may not matter, but this function is definitely a hotspot on cao. -------------------------------------------------------------------------------- 4cc3fdd212 | advil | 2022-08-23 12:24:20 -0400 feat: logging options for asyncio slow callbacks The default debug mode for logging these is fairly useless (for our code at least, it just reports the Tornado code as the problem), and is not ideal for production either. This commit adapts code from the aiodebug package to do lightweight logging to help find slow callbacks. Unfortunately I don't think it is possible to detect hotspots, or at least doing so requires much more advanced techniques than I know about, so to look for blocking code you need to explicitly decorate relevant functions or code. I've done some likely candidates in this commit. This decorator is extremely lightweight, though it's still possible I may need to reverse this part of the commit later. -------------------------------------------------------------------------------- 6d867f7e1d | advil | 2022-08-23 12:24:19 -0400 feat: load logging for webtiles This is mainly for production debugging, and is spammy, so is disabled by default. It responds to HUP. -------------------------------------------------------------------------------- dcc30181a8 | Nicholas Feinberg | 2022-08-23 07:09:26 -0700 Consider rPois- enemies affected by ?poison (dilly) oops -------------------------------------------------------------------------------- d8047c6341 | Nicholas Feinberg | 2022-08-22 21:09:40 -0700 Fix: bring the eye of draining screen back Oops! -------------------------------------------------------------------------------- 3885252ca9 | Nicholas Feinberg | 2022-08-22 20:48:13 -0700 New splash screen by PhilosopherOpposite Licensed under CC0. Source: https://www.reddit.com/r/dcss/comments/wu6f2o/comment/ilcg25z/ -------------------------------------------------------------------------------- 310bbde435 | Nicholas Feinberg | 2022-08-22 20:36:05 -0700 Fix: don't let lochaber axe go through grates (acrobat) -------------------------------------------------------------------------------- 4c767a20b8 | Nicholas Feinberg | 2022-08-22 20:27:39 -0700 Switch numpad 5 back to 'wait' This is symmetric with the other numpad keys. Just as they spend one turn moving in some direction, '5' spends one turn moving in no direction. Partially reverts 0d6ea506dcc. -------------------------------------------------------------------------------- cc983562f6 | Nicholas Feinberg | 2022-08-22 20:25:50 -0700 Fix Ozocubu's Refrigeration usefulness check (dilly) If enemies were weaker than allies, it'd claim there were no targets in range. -------------------------------------------------------------------------------- 94fe547ab8 | advil | 2022-08-22 11:16:49 -0400 fix: numpad keys at the `G` prompt (wheals) These keys were working in some of the subprompts, but not the main prompt. -------------------------------------------------------------------------------- 7c9e10e132 | advil | 2022-08-21 18:57:36 -0400 fix: adjust some numpad key behavior This should enable NP enter as well as numpad scrolling in a bunch of cases, including the main menu. -------------------------------------------------------------------------------- 3a90980b9d | Nicholas Feinberg | 2022-08-21 10:16:49 -0700 Fix Oka throwing weapon gift default force_more (Lici) Broken in 9ffc8e8dbe0b832c. -------------------------------------------------------------------------------- a7cffc901d | Nicholas Feinberg | 2022-08-19 21:34:51 -0700 Fix: give octopodes storm tentacles (dilly) -------------------------------------------------------------------------------- c9032a9cac | advil | 2022-08-19 11:36:49 -0400 fix: unbreak change email/pw This has apparently been broken since 45d3ea808a7ee. Possibly most webtiles servers haven't been restarted since then? Anyways, I only got a report about this today. -------------------------------------------------------------------------------- f48d83f5e2 | advil | 2022-08-18 18:24:55 -0400 fix: add a try...except block in the terminal handler I'm seeing OSErrors on disconnect on this call on CAO in py3. I'm not entirely sure why this isn't happening on my test device, but I'm pretty sure it's simply that a read ends up timed badly with respect to the crawl process ending. Also looks like CBR2 is doing this, so it's probably a linux thing. So, treat it like an error flag. -------------------------------------------------------------------------------- 69b7b797bf | Nicholas Feinberg | 2022-08-18 14:43:18 -0700 Fix: changelog but but (Ge0ff) And remove Lair:6 again. -------------------------------------------------------------------------------- 844d9cd41c | advil | 2022-08-18 16:49:09 -0400 docs: update changelog * reorder sections alphabetically * mention a new local tiles option -------------------------------------------------------------------------------- 1d49662b45 | advil | 2022-08-18 12:11:56 -0400 fix: don't show (g)oto for cases where travel will fail Use a previously static travel check. I'm really surprised I couldn't find an already-existing public function along these lines, so maybe I missed something. (Though, the usual check for a visible monster and then fedhas passthrough + maybe other stuff is done manually in a really large number of cases, so maybe not.) -------------------------------------------------------------------------------- e58dc06b8e | advil | 2022-08-18 12:11:56 -0400 fix: exit conditions for full_describe_square Mentioned in https://crawl.develz.org/mantis/view.php?id=12687 -------------------------------------------------------------------------------- 47a6bb87d6 | Nicholas Feinberg | 2022-08-17 22:04:29 -0700 Fix: remove those those (FizzleBang) -------------------------------------------------------------------------------- 5fe6d566dd | advil | 2022-08-17 22:17:31 -0400 fix: make frog hop targeting exactly match fuzzing Previously, targeting was affected weirdly by statues (see mantis 12697), because it inherited some incorrect logic from explosions. It may have been possible to fix this simply, by changing a param in the beam call, but I have done something a bit more ambitious: this commit uses the exact same targeter code for both targeting and the fuzzing itself. Along the way it adds some more generally useful infrastructure for doing this kind of thing, in particular, a subclass of rectangle_iterator designed for iterating over affected squares of a targeter. (Also, replace a static that annoyed me in targeting code with an actual copy constructor on FixedArray.) -------------------------------------------------------------------------------- 509654366e | advil | 2022-08-17 19:37:15 -0400 fix: send signed Xom piety to webtiles This was maxed against 0 and then cast to an unsigned int on top of that making it very hard to know if you are Xom's special toy on webtiles. Followup to a1f3fc70dd8b21 which at least sent the value to webtiles, but missed the sign issue. Resolves https://crawl.develz.org/mantis/view.php?id=12565 and probably some closed stuff, including #2186. -------------------------------------------------------------------------------- 24050441d8 | advil | 2022-08-17 19:21:31 -0400 fix: don't tell players they are already flying Resolves https://crawl.develz.org/mantis/view.php?id=12700 -------------------------------------------------------------------------------- bc57f8fbdb | advil | 2022-08-17 15:56:06 -0400 fix: let CMD_MENU_EXAMINE on right click work in webtiles I noticed while updating the changelog that I had missed this. Hopefully not too much of a feature to be adding this late... -------------------------------------------------------------------------------- ad17d311a4 | advil | 2022-08-17 15:35:15 -0400 fix: WJC extra spacing As implemented, webtiles needs the binary to be sending preformatted text for any extra screens, but getLongDescription unwraps by default. (The diagrams were saved because indentation also indicates preformatting.) Also, adjust spacing of the text w.r.t. the diagrams, and fix some bad linebreaking. Resolves #2648 -------------------------------------------------------------------------------- 5abcae952a | advil | 2022-08-17 15:01:11 -0400 docs: changelog tweaks Mostly misc UI things. -------------------------------------------------------------------------------- 6eeae00818 | advil | 2022-08-17 14:28:44 -0400 build: bump CI actions/cache version -------------------------------------------------------------------------------- 31cfa1876a | advil | 2022-08-17 14:28:44 -0400 build: use pkg-config for rltiles cross-compiling on mac When building a universal binary or cross-compiling, this tool needs to avoid being linked to a cross-compiled libpng dep for the other architecture. Following the approach used for windows cross-compiling, we just force the issue with pkg-config. This adds some extra deps to the mac release build, but most people doing that will have them already satisfied or easily be able to add them via homebrew or macports. -------------------------------------------------------------------------------- 1249214d54 | advil | 2022-08-17 14:28:44 -0400 build: fix use of DEPCXX when cross-compiling on mac This code from old universal binaries was breaking current universal binaries, by passing the wrong `-target` to rltiles via DEPCXX. This was masked on my M1 test machine because the x86 `tilegen.elf` just ran under rosetta. -------------------------------------------------------------------------------- 7a48c89a40 | advil | 2022-08-17 14:28:44 -0400 build: try universal builds again Runners that support cross-compiling are now available, so let's try that out in CI. It is fairly excruciatingly slow with an empty cache, so it may end up being necessary to disable this by default just for the sake of CI not taking forever. But maybe with caching it'll be ok. -------------------------------------------------------------------------------- 4018c0d16e | Nicholas Feinberg | 2022-08-17 10:14:13 -0700 Clarify TLA mechanics (FizzBang) -------------------------------------------------------------------------------- e7f5c69dce | Nicholas Feinberg | 2022-08-17 10:07:12 -0700 Make enemies more reluctant to enter poison clouds They underestimated them pretty badly, which made scrolls of poison much more lethal than was intended. -------------------------------------------------------------------------------- 6990b1bffc | patrick | 2022-08-16 17:09:53 -0400 Fix a typo in the Condemnation description It is important to have consistent names for your archangels. One must be conscientious of the lore. -------------------------------------------------------------------------------- ee5d04aabb | Nicholas Feinberg | 2022-08-16 12:44:23 -0700 Halve Okawaru throwing gifts By popular demand. It's been a bit excessive ever since other ammo was removed. Doing this via quantity, rather than via gift timer, to avoid messing with the piety curve. Let's reconsider that later. -------------------------------------------------------------------------------- 9ffc8e8dbe | Nicholas Feinberg | 2022-08-16 12:44:23 -0700 Update Oka gift message (Bamboomancer) Plus some comments. -------------------------------------------------------------------------------- 47afbbedbb | advil | 2022-08-16 15:15:26 -0400 lint: unbrace -------------------------------------------------------------------------------- 619dfb4ed5 | advil | 2022-08-16 13:40:13 -0400 fix: a very old off-by-one error in `join_the_dots` I've convinced myself that this is not intentional, good to fix, and safe to fix. We'll see -- this pathfinding method is heavily used. The issue appears to originate from 883396a6ffc, and is that `cur.insert(cur.begin() + random2(cur.size()), *ai);` cannot insert at the end of `cur`. Since `cur` starts empty in the relevant loop, and at most three things can be inserted, this insertion or the resulting behavior is completely deterministic in a number of circumstances and at least always deterministic in what the third element is if there are three. The most visible one I am aware of was when pathfinding near a masked region (a vault), if the path gets pushed N or S by a mask, and needs to eventually get the other direction, emergent behavior can (must?) cause the path to continue deterministically N or S until it hits something (e.g. the map boundary), and then make a loop back, also moving straight. This often looks quite weird, especially if there is a long distance to the map boundary. Example (I was able to replicate this exact case using the seed and spent some time investigating it): https://www.reddit.com/r/dcss/comments/wl9yrm/odd_shallow_water_formation_should _i_be_looking/ This commit also includes some useful debug code that I wouldn't want to write again, and tries to comment the pathfinding part of this algorithm to the best of my understanding (it's odd). I've also isolated the rng here, to try to control the impact of calling jtd and random draws before and after for any future changes to this algorith (since it had a very unpredictable effect due to the varying number of draws). This may or may not be futile. -------------------------------------------------------------------------------- 7c58e119a4 | Alex Jurkiewicz | 2022-08-15 16:25:01 -0700 Remove unused variable ui.cc:2174:9: warning: variable 'ew' set but not used [-Wunused-but-set-variable] int ew = 0; ^ -------------------------------------------------------------------------------- 17b7e71a25 | Nikolai Lavsky | 2022-08-15 16:24:01 -0700 fix: don't offer Meteorae potion petitions with invisibility Since Meteorae can become invisible only via the shadow form, there is no point to offer them petitions with the invisibility potion. -------------------------------------------------------------------------------- fc2ad454c0 | Nicholas Feinberg | 2022-08-15 16:23:21 -0700 Disable opportunity attacks when swapping Since the enemy can't follow you directly anyway. Probably this should also apply to moving out of a fedhas plant. -------------------------------------------------------------------------------- 9f74c4bd0f | Nicholas Feinberg | 2022-08-15 16:23:21 -0700 Turn sandblast into speedblast Player feedback feels very strongly that 2x delay is too high. By popular demand, let's try it at 1.5x delay instead. -------------------------------------------------------------------------------- 569b05d6ff | Rytis Petronis | 2022-08-14 23:08:34 -0700 Add sentei_temple_godly_chess chessboard temple for 17 gods [ Committer's note: Closes #2636. Taught the gods a bit more opening theory. ] -------------------------------------------------------------------------------- 87b1fcd763 | Nicholas Feinberg | 2022-08-14 18:37:39 -0700 Put meteorans and palentongae in jail Add them to a silly arrival vault, and remove dwarves again (rip). -------------------------------------------------------------------------------- c98ce4fa87 | Nicholas Feinberg | 2022-08-14 18:35:08 -0700 New player species tiles (Sastreii) Octopode, meteoran and palentonga. Vault only. -------------------------------------------------------------------------------- 074fecc49e | Nicholas Feinberg | 2022-08-14 18:25:40 -0700 Add a tiles section to the changelog -------------------------------------------------------------------------------- fc20370e89 | Nicholas Feinberg | 2022-08-14 13:51:49 -0700 Fix changelog formatting -------------------------------------------------------------------------------- ce01778f00 | Nicholas Feinberg | 2022-08-14 13:50:11 -0700 Remove Deep Dwarves (from the changelog) (Goratrix) -------------------------------------------------------------------------------- d913b07440 | Nicholas Feinberg | 2022-08-14 11:24:53 -0700 Assorted changelog fixes and tweaks -------------------------------------------------------------------------------- b5b6a5fa4f | Nicholas Feinberg | 2022-08-14 11:24:53 -0700 Cut Artificer iceblast starting charges (acrobat) Nine /iceblast on d:1 was a bit much. Take it down to five. -------------------------------------------------------------------------------- e50532568f | Edgar A. Bering IV | 2022-08-14 10:50:28 -0700 Revert "Simplify Drain Life logic" This reverts commit 5bf4a2a1db00f9f780ff1542a8ce14cca4721bce. The commit message says that players don't cast Drain Life anymore but Yredelemnul's Drain Life ability still exists and uses SPELL_DRAIN_LIFE under the hood. -------------------------------------------------------------------------------- cbed440bb6 | Nicholas Feinberg | 2022-08-14 10:29:54 -0700 Docs: changelog through 0.29-a0-1033 -------------------------------------------------------------------------------- b6c65ffae6 | Nicholas Feinberg | 2022-08-13 18:10:34 -0700 Rephrase -Scroll/-Potion mutation desc (#2629) Avoid use of the term 'threatened' where it would be ambiguous. -------------------------------------------------------------------------------- 2b1b757b24 | Nicholas Feinberg | 2022-08-13 18:03:08 -0700 Fix: don't "fizzle" on v-v (#2649) This code is a nightmare. Fixes #2649. -------------------------------------------------------------------------------- 489732b8f0 | Nicholas Feinberg | 2022-08-13 15:01:49 -0700 Don't consider all items to be in sets (Plaidstone) oops -------------------------------------------------------------------------------- f5f8719cae | gammafunk | 2022-08-13 16:10:09 -0500 fix: Correct tagging in an arrival vault (acrobat) For kb_arrival_jail, this vault was only partially updated for species removals and additions. It now has cells with no corresponding monster that are also not appropriately tagged for no_tele_into and no_item_gen. Fix this by putting in additional species monsters in the empty cells. Some of the newer species monsters don't have appropriate tiles for use as decorative monsters, but we'll hopefully be getting those soon. Instead of resizing the vault only to revert that change later, fill the empty cells with random species monsters that we can use. Also reglyph the vault to use glyphs with no default definition. -------------------------------------------------------------------------------- 3196055cea | Nicholas Feinberg | 2022-08-13 13:59:36 -0700 Remove starting item spoilers Don't allow players to determine which items from a given set will spawn in a game by checking the 'unknown items' list after picking an artificer, delver or wanderer. -------------------------------------------------------------------------------- de8b1eb099 | Nicholas Feinberg | 2022-08-13 12:37:00 -0700 Tweak Ozocubu's Refrigeration damage further To try to make the positional aspect of the spell's damage more noticable, make the adjacency penalty for damage 2/3rds / 1/3rd for 1 / 2 adjacent creatures (was 3/4ths / 1/2). -------------------------------------------------------------------------------- cd8c55af63 | advil | 2022-08-11 17:02:10 -0400 fix: correctly initialize seed info for ancient games For games prior to `TAG_MINOR_SEEDS`, seed info was not getting set at all. For games prior to `TAG_MINOR_GAMESEEDS`, they were incorrectly getting the default value for deterministic_pregen (true). -------------------------------------------------------------------------------- 659819d403 | advil | 2022-08-11 14:26:14 -0400 fix: ancient save compat The fixup in 83a48905f1 can lead to crashes on very old saves (testing with a 0.11 save) because these props don't exist. Creating empty versions seems to make things ok. -------------------------------------------------------------------------------- cb49e86079 | advil | 2022-08-11 12:23:01 -0400 fix: fix exiting popup version of the yesno prompt The popup version was exiting too vigorously, because of changes in how keyhandling work. This commit brings its behavior more in line with the message prompt version, where incorrect keys (I have restricted this to just alpha keys) will now show an error message instead of exiting. -------------------------------------------------------------------------------- ec03ce3624 | advil | 2022-08-11 11:59:32 -0400 fix: add a couple of !d checks Resolves #985, and one was also missing from the describe popup drop call. (For Reasons, `drop_item` itself does not perform this check, in contrast to e.g. the wield call.) -------------------------------------------------------------------------------- 6ae1a4a2c7 | advil | 2022-08-10 14:08:46 -0400 fix: handle color in "Found..." messages correctly This had two parts. First: the use of a closing tag in message.cc is simply incorrect, on the current state of things -- colour strings are valid without closing tags, though closing tags must match if present, so wrapping an open and a closing tag around an arbitrary colour string therefore does not guarantee a valid colour string (bug introduced in ae15d2e64f). This at long last resolves #1224. Second: using `formatted_mpr` in the travel.cc for some "Found..." messages is incompatible with consistent coloring given the current state of things, because it eliminates any sense of a default color. So even with the first fix, messages with sub-coloring were not affected correctly by a `message_colour` rc line (e.g. when an un-id'd scroll was in the same message as something else). N.b. if `formatted_string` was refactored to use a more stack-like representation internally, as in #1249, then the second fix at least wouldn't be necessary. However, that PR has been languishing for a long time, and is a bit overkill for this bug in any case, given that the use of formatted_mpr is extremely rare (maybe should be eliminated). -------------------------------------------------------------------------------- 3e17be3ea5 | advil | 2022-08-10 11:29:46 -0400 fix: remove an `mpr` overload in favor of `formatted_mpr` These are redundant, and the `mpr` overload is used exactly once; I think the `mpr` overload was only added (in dbf363a7764) because it's easy to miss the existence of `formatted_mpr` (which is in a different header). I have also prevented the implicit cast that led to the issue in 6ad10583fd2. The alternative, removing `formatted_mpr` and leaving only the overload, is maybe simpler as an API, but `formatted_mpr` has a bunch more params than regular `mpr`, and also I think it is worth someone knowing this conversion is happening and handling it explicitly. This commit reverts dbf363a776. -------------------------------------------------------------------------------- eaf7ee7e1e | advil | 2022-08-10 11:02:37 -0400 fix: complicate to_colour_string defaults Yet another adjustment to 29c30a7bfa8. That commit was really tailored at dealing with passing information to webtiles as flat text. However, to_colour_string is used internally in all sorts of places in ways that are subtly affected by this change. Rather than try to rework those, I'm semi-reverting 29c30a7bfa8 so that the default behavior is the same as what it was prior to that commit, and mostly only webtiles uses of it explicitly set a default color. -------------------------------------------------------------------------------- 4f9e239c0e | advil | 2022-08-09 20:47:27 -0400 fix: simplify some duplicated code -------------------------------------------------------------------------------- 84f7d21838 | advil | 2022-08-09 20:28:22 -0400 fix: various skill menu fixes Mostly for the experience menu (see #2597), which was extremely broken in autotraining mode. 1. In autotraining mode, use you.training for the !xp defaults (rather than every single skill) 2. Let any visible skill be selectable; previously, you could get a skill to show up under SKM_SHOW_DEFAULT and when toggled back to -, it would become unselectable (conspiring with 3 below) but still visible. This was doable in either manual mode or !xp mode. 3. Don't define SKM_HELP to coincide with the default value for `MenuItem::m_item_id`: this led by weird side effects to unselectable menu items (via 2) entering help mode. (Which to top it off, is not otherwise enabled in !xp mode and is somewhat buggy.) 4. Correctly implement selection cycling for numeric hotkeys -------------------------------------------------------------------------------- 6b6670bd90 | advil | 2022-08-09 12:20:35 -0400 fix: click handling in `InvMenu`s (Goratrix) Yet another case where there are misc keys hardcoded that shouldn't be (unfortunately this commit does not fix the overall problem). Also, fixed some downcasting to an unsigned char for no good reason. -------------------------------------------------------------------------------- 091d24779b | advil | 2022-08-09 11:47:21 -0400 fix: clean up UseItemMenu mode code Make this implementation slightly less brute force. Also, add keyhelp, and fix a local tiles visual bug in this menu. -------------------------------------------------------------------------------- 236c7fd91e | Nicholas Feinberg | 2022-08-08 21:26:42 -0700 Tweak weapon brand display (acrobat) Do show venom brand in the damage rating, don't show dispersal. -------------------------------------------------------------------------------- 1598f19b23 | advil | 2022-08-08 22:42:34 -0400 fix: restore some fire inscription behavior This code is all a bit messy, but this commit more or less brings things back to what the manual says should happen. (E.g. you can inscribe your silver javelins with =f to prevent autoquivering.) Resolves #2418 -------------------------------------------------------------------------------- a8c0faee3b | advil | 2022-08-08 17:41:17 -0400 fix: maybe fix AltGr in local tiles See #2623. I'm pretty sure the comment there that cf85d11 was responsible is right, and this fix targets that issue. But, I don't have a windows machine on hand to test. Also, alt handling got rewritten somewhat since then so I don't know if the new code breaks it further. What I can verify at least is that this all works correctly with mac alt keys. -------------------------------------------------------------------------------- 0638b6a9f9 | advil | 2022-08-08 16:56:37 -0400 fix: don't generate empty extra religion screens in webtiles More generally, don't insert a default in colour strings unless the first op is a text op. This bug is continued fallout from 29c30a7. I think this fix probably subsumes edc2efc2671c but not f9470816a (since blank colour strings will still get a default tag). -------------------------------------------------------------------------------- 5fcc5c1eac | advil | 2022-08-08 16:02:04 -0400 fix: implement local tiles menu clicking as clicking Previously, clicking menu items was implemented via a key event using the menu's hotkey. This implements a proper clicking interface. Because CK_MOUSE_CLICK is sent by ui code on arbitrary clicks regardless of location, I used the less common CK_MOUSE_B1 for clicks specifically on a (selectable) menu item. Along the way I also implemented right click to examine. Resolves #2639 -------------------------------------------------------------------------------- 8251ee3229 | advil | 2022-08-08 15:12:16 -0400 fix: numpad movement in local tiles Partial revert of dbb8aaeb5fe9d6. I don't think I can entirely prevent this from being returned in some circumstances, so I've just given up and dealt with it in the menu code. What was happening is that two quick events came in succession, the second suppressing the first, but the `break` here sent processing back into a loop that needed another key to break it. Resolves #2644 -------------------------------------------------------------------------------- 73cb963dcd | Nicholas Feinberg | 2022-08-08 10:17:51 -0700 Rework Gong description (Lici) Avoid implying spirit shield? -------------------------------------------------------------------------------- 60c99734e7 | Nicholas Feinberg | 2022-08-07 13:43:14 -0700 Fix messages for unseen dream sheep (CarefulOdds) You could be told about dream sheep sparkling even when you couldn't actually see them. This is incredibly niche! -------------------------------------------------------------------------------- 949cc1d0fb | Nicholas Feinberg | 2022-08-06 13:48:58 -0700 Swap out AM ?vuln for ?poison Scrolls of vulnerability were intended to provide an early game tool to help Arcane Markspersons hex effectively, but early game enemies have such low Will that vulnerability has little effect on them. Swap it out for the newish Scroll of Poison, which should help them fight foes at range. -------------------------------------------------------------------------------- fab9b68f5b | Nicholas Feinberg | 2022-08-06 13:36:37 -0700 A tisket, a tasket, new tiles from (Sastreii) Finisher, Jorgrun, and Octopode/Felid lichform. -------------------------------------------------------------------------------- 0dd7720b37 | Nicholas Feinberg | 2022-08-05 14:44:41 -0700 Fix a Zenata monspeak typo (ebird) -------------------------------------------------------------------------------- 6e1c3f9eef | Nicholas Feinberg | 2022-08-05 12:11:29 -0700 Update more things for deep abyss -------------------------------------------------------------------------------- 417cb75212 | Nicholas Feinberg | 2022-08-05 12:11:29 -0700 Fix deep abyss spawns Don't exclude them from XP tracking, oops. Also simplify and refactor logic generally. -------------------------------------------------------------------------------- 08a8388b2b | Nicholas Feinberg | 2022-08-05 12:11:29 -0700 Don't force alligators to always be patrolling Added in 7d59d745cd3 (2010). The plan seems to have been to make alligators 'semi-neutral' - they'd only attack if you came within four spaces of them. As best I can tell, the latter part of this plan was never implemented. -------------------------------------------------------------------------------- 3a827bf7a4 | Nicholas Feinberg | 2022-08-05 12:11:29 -0700 Deduplicate some abyss spawn logic -------------------------------------------------------------------------------- 36053be5b9 | Nicholas Feinberg | 2022-08-05 12:11:29 -0700 Decrease deep abyss exit spawn rate (Oneirical) A bit too easy to dip in and out of Abyss:6-7 as desired. -------------------------------------------------------------------------------- 458353e8b9 | Nicholas Feinberg | 2022-08-05 12:11:29 -0700 Display current attack delay in weapon description Oops, forgot to commit this after writing it up some days ago. -------------------------------------------------------------------------------- f35a41adde | Nicholas Feinberg | 2022-08-05 12:11:29 -0700 Shift Frozen Ramparts damage later (acrobat) Adding +6 damage to it when making it check AC made it quite a bit too strong at low level. Reduce the base damage to 1 and increase damage gained from spellpower by 50%. -------------------------------------------------------------------------------- 1987434951 | advil | 2022-08-04 16:29:42 -0400 fix: don't start resting if `can_rest_here` is false bdabc8c6d3d1 ran afoul of one of the weird pitfalls of this code, that rest/wait fail messaging is handled in a different place than rest/wait start messaging. Possibly this can/should be cleaned up, but I don't immediately know what else it would break, so I've just updated the relevant check in _start_running to be exactly parallel. Also commented the point in the code where this trap can be found. -------------------------------------------------------------------------------- f6f7e2dfe7 | riverfiend | 2022-08-03 22:44:34 -0400 fix: Changes to god wrath (#2606) Give Makh 2 more greater servants as suggested in code comments. Remove unnecessary slow duration checks in Chei, Trog wrath. Remove jellies from Jiyva wrath spawns. Fuzz minor minion numbers for Lugonu wrath summons. Modify Zin mutation removal logic to be more understandable. Make Zin wrath fall through to other effects if all player mutations are bad. Update wrath descriptions for Chei, Yred, and Ely. See original pull request for full explanation of the old wrath behaviors. -------------------------------------------------------------------------------- 82fb55b1ac | nlavsky | 2022-08-03 22:17:43 -0400 fix: no hostile Necrotise skeletons (#2630) For consistency with other ally-creating spells under Okawaru or Sacrifice Love, this commit blocks the Animate Skeleton part of the Necrotise spell. -------------------------------------------------------------------------------- 8a7feb118f | gammafunk | 2022-08-03 15:24:36 -0500 feat: Adjust Ice Cave simulacra Entropy weaver simulacra are great at killing players, but are far nastier in melee than their originating monster due to their relatively high HD and how af_cold works. Players tend to not expect this, given that entropy weaver melee at its normal placement depth is only dangerous when the player has poor AC (e.g. when highly corroded). We can use hydra simulacra with the appropriate numbers of heads to have a similar effect, but one that somewhat better telegraphs the level of danger. This commit uses 3-headed hydra simulacra in the top-end "cruel" set for easy ice caves, 7-headed hydra simulacra in that same set for hard ice caves, and removes entropy weaver simulacra from the simulacra lists. For ice_cave_hellmonk_azure_passage, now that jellies and eyes can be simulacra, we replace entropy weaver simulacra and other less-in theme simulacra with slime creature and great orb of eye simulacra. The non-jelly/eye we still use are shapeshifter and glowing shapeshifter simulacra. These changes are a nerf to ice caves, but ice caves could stand a mild nerf, especially for easy ice caves. -------------------------------------------------------------------------------- c5c9f59d18 | Kate | 2022-08-02 21:58:16 +0100 Fix compiler warnings And rebrace. -------------------------------------------------------------------------------- 4a18f31a58 | Nicholas Feinberg | 2022-08-01 18:38:10 -0700 Give palentongas +2 strength Make them a little better at using heavy armour, etc. -------------------------------------------------------------------------------- 3e1970ce6f | Nicholas Feinberg | 2022-08-01 18:38:06 -0700 Slash Palentonga roll attack noise When I designed Palentongas, I added 12 noise to them so that it wouldn't always be correct to use roll attacks. Now that we've had a while to play with them, I suspect this was the wrong call. Roll attacks are Palentonga's cool thing - players should want to use them very heavily, and we should design the UI to support that. Reduce noise to one-third, 4 noise. This is mostly there as a justification for preventing roll-sleep-stabs, but isn't really noisier than the melee combat itself. -------------------------------------------------------------------------------- e9813d02cc | Nicholas Feinberg | 2022-08-01 18:14:16 -0700 Simplify Airstrike (CarefulOdds) Make it a simple dice roll, rather than the sum of a flat value (based on empty space nearby) and a random2avg call. This increases average damage by 0.5 per cast, and increases max damage considerably in open space. Gastronok now does 2d34 if you're in totally empty space, which might be a bit much? -------------------------------------------------------------------------------- 68da1b8662 | Nicholas Feinberg | 2022-08-01 17:56:01 -0700 Don't count conjured 'mons' for Fridge (acrobat) Probably an orb of destruction can't insulate you from freezing... I guess? -------------------------------------------------------------------------------- 78424f4fe2 | Nicholas Feinberg | 2022-08-01 17:56:01 -0700 Don't spawn ponderous gloves (ebonnov, CarefulOdds) It's only supposed to be on body armour! Excepting one unrand, ha. The tradeoff is too awful otherwise. -------------------------------------------------------------------------------- f828392251 | Nicholas Feinberg | 2022-08-01 17:56:01 -0700 Don't show invisible monsters in the Refrig targeter Oops! Also don't leak info about monsters outside LOS but adjacent to monsters you do see. -------------------------------------------------------------------------------- 9d01ccc615 | Nicholas Feinberg | 2022-08-01 17:56:01 -0700 Don't spam messages in local tiles When there are invisible monsters nearby. Broken by bdabc8c6d3d15eae00cd2e427f43c04c37675bc5 . -------------------------------------------------------------------------------- df0a18e73c | advil | 2022-08-01 15:39:38 -0400 feat: mode cycling for use item menus This lets you cycle between wield/wear/puton, and read/quaff (depending on starting mode). It's a pretty rough and ready implementation, but recent menu changes made it possible to implement this way. The cycle keys are the usual ones (arrow keys, !), but it's currently not hinted -- e.g. the feature is secret for now. Ideally, a similar change would happen for the remove menus before this becomes fully baked, but that's a bit more work, since those are regular `InvMenu`s. -------------------------------------------------------------------------------- af557a844c | advil | 2022-08-01 15:37:00 -0400 feat: differentiate passable/impassable water in console Previously, both of these used the same glyph by default, ≈, and relied on color to differentiate. This has accessibility issues, and also is annoying in builder debugging / scripting contexts (where e.g. dump_map doesn't output color). This commit switches shallow water to use a regular tilde. Colors stay the same, but it's possible they could use further tweaking after this change. -------------------------------------------------------------------------------- 8b785cd64e | advil | 2022-08-01 12:59:05 -0400 fix: limit vaults builder tag effects to vaults This is a followup to c37658a0fea4; the effect here isn't really a false positive, in that it can impact seed stability on local games when the binary isn't restarted. The situation is that Vaults layouts, in order to place vaults used elsewhere, typically need to ensure they are non-opaque to the builder. The means by which it does this (tags like transparent and passable), then become part of the vault's state, and persist to any later reuse. 2170ac5abdc97a already limited the effect of `passable` to uses when placing a vault in Vaults, but the v_rooms.lua code (for reasons that are not entirely clear to me) used the `transparent` tag to a similar effect. Changing this to `passable` has the same effect and prevents the seed stability issues (at least, in my testing). It would be nice if there were a better way of resetting vault tags to the des cache state without restarting the binary? This commit also fixes what seems to have been a logic error in the interaction between passable and opaque, from 2170ac5abdc97a, where the passable tag would not result in MMT_PASSABLE outside vaults, but would also prevent MMT_OPAQUE where appropriate. (This was probably creating a whole bunch of unnecessary vetoes for affected vaults..) -------------------------------------------------------------------------------- 79d4c32e18 | Nicholas Feinberg | 2022-08-01 07:43:13 -0700 Simplify weapon attack descriptions (#2326) When a monster is wielding a weapon, merge that weapon's damage and plusses into the damage shown into xv. Still can't quite show brands, but better something than nothing. Before: "can hit for up to 16 with its +5 giant club of flaming..." After: "can hit for up to 45 + Flame with its weapon..." -------------------------------------------------------------------------------- aed3a0c8d8 | Nicholas Feinberg | 2022-07-31 21:55:21 -0700 Experimental: redesign Ozocubu's Refrigeration In DCSS, spells are most exciting when they're context sensitive. You cast Fireball or Freezing Cloud when the terrain and enemy positions suit it. It's fine to have strong spells, but it's not very fun to have one spell which is so universally good that you can repeatedly cast it to clear the great majority of fights. Ozo's Fridge fell in this category. Let's experiment with making it a bit more situation-dependent. This commit increases its damage by ~10% and removes the -Potion gimmick, but reduces damage against creatures that are adjacent to others (including the player). The current formula reduces damage by 25% if there's one creature adjacent and by 50% if there are two or more, but this should be considered very much a first draft. Concerns I've seen about this design: 1. It'll cause players to lure enemies so you can fight one-on-one. This is generally wise, but I don't think a screen-wide AOE particularly pushes players to do this, even if it's worse against clumps of enemies. 2. It'll be hard for players to tell what's happening. I've done some work on the targeter to try to show how much enemies are affected, and probably some work could be done on printed messages if necessary. -------------------------------------------------------------------------------- 9e354a60c6 | Nicholas Feinberg | 2022-07-31 21:55:21 -0700 Make Refrigeration and Ramparts check AC and do more damage One of the trickier things to teach new players is that AC works against elemental attacks. Fireball, bolt of cold, etc - AC will help! It's a simple, consistent mechanic that has big implications across play. This becomes much trickier, and more confusing, when an arbitrary subset of spells do *not* check AC. What, ultimately, is the difference between a flash freeze, a freezing cloud, and a Refrigeration? Why should the latter ignore AC while the former two don't? Can't all that thick armour insulate you from the cold? If a spell doesn't have a lot else going on in terms of mechanical distinctiveness, we can have it ignore AC as its one big Thing. That's how Freeze works, and that's fine. But adding it into spells that have many other mechanical distinctions is both unnecessary and confusing. Let's not. Freezing Ramparts and Ozocubu's Refrigeration both now check AC and do more damage (+6 for Framparts, +10 for Refrigeration), based on a vague average of AC in relevant parts of the game. -------------------------------------------------------------------------------- 733a6eaeeb | Nicholas Feinberg | 2022-07-31 21:55:21 -0700 Simplify LOS attack effect logic Simplify and unify code for damaging players and monsters with Drain Life, Ozocubu's Refrigeration, and the Singing Sword. Remove the fairly redundant message announcing everything you hit. -------------------------------------------------------------------------------- 5bf4a2a1db | Nicholas Feinberg | 2022-07-31 21:55:21 -0700 Simplify Drain Life logic Now that players can no longer cast it, no need to special-case summons. -------------------------------------------------------------------------------- 572474d683 | advil | 2022-07-31 18:56:10 -0400 fix: maybe fix a gcc warning -------------------------------------------------------------------------------- 7483850d73 | advil | 2022-07-31 17:52:02 -0400 feat: generalize `F` to fire any targeted item This gives a quicker way of accessing e.g. the targeter for scroll of fear than quivering it. Behavior on launchers and ammo remains the same as before, and you can still use `*` to toss any item. There's a lot of special cases to deal with here in terms of preconditions, so it may be that there are more cases where this menu should be prevented altogether. Also, fix a bug where untargeted firing of disabled items would show the targeter prompt; now it just messages right away. (This is pretty niche, previously you would have to do something like quiver a potion of magic to see this.) -------------------------------------------------------------------------------- 2d25de79ac | advil | 2022-07-31 13:38:16 -0400 feat: readable keycodes for some non-ascii keys This is a fairly inelegant approach that gets the job done for now; it lets "F1" (etc) for function keys, "NPx" for numpad key x, as well as "Down", "PgDn", etc for navigation keys, work as keycodes. These can appear in contexts where a \{} keycode is valid, as well as directly in the [] brackets in a `bindkey` rc line. -------------------------------------------------------------------------------- c1b7fc97e0 | advil | 2022-07-31 11:13:23 -0400 fix: a few more CK_NUMPAD_ENTER bindings Map mode, more, doll editor, text input. -------------------------------------------------------------------------------- afa891f487 | gammafunk | 2022-07-31 09:24:58 -0500 fix: Correct grammar (Solitudinal) For the description of the lunar statue from Lehudib's WizLab and the Zot statue from the Ten Rune Challenge Sprint. Closes #2637. -------------------------------------------------------------------------------- ac7da5f7f0 | advil | 2022-07-30 18:32:34 -0400 fix: update hover on local tiles click If you hover with a mouse, then use arrows to move the hover away, then click without moving the mouse at all, the currently hovered item (not under the mouse) gets activated. This commit updates the hover on mousedown, so that when the click is processed (on mouse up), the item under the mouse is what does get clicked. -------------------------------------------------------------------------------- 43c84944fd | Nicholas Feinberg | 2022-07-30 12:59:58 -0700 Marble at these new tiles (Sastreii) New Tukima's Wizlab marble wall tiles. -------------------------------------------------------------------------------- dbb8aaeb5f | advil | 2022-07-30 15:37:00 -0400 fix: suppress more instances of CK_NO_KEY in local tiles 0d6ea506dcc got one way of producing this keycode, but not the only one. It would be better to fully suppress this in `wait_event`, but I think that would require more of a refactor. -------------------------------------------------------------------------------- 619506e67d | Nicholas Feinberg | 2022-07-30 11:12:11 -0700 Add icons for Brilliance and Resistance (Sastreii) -------------------------------------------------------------------------------- 8769cd89f2 | Nicholas Feinberg | 2022-07-30 11:12:11 -0700 Scale up some art [pun?] (Sastreii) New tiles for Faerie Dragon Scales and basilisks. -------------------------------------------------------------------------------- a52d00042f | advil | 2022-07-30 13:27:47 -0400 fix: accept more keybinds (again) in webtiles 8027019649d8 was too restrictive in its raw key arrow key check; we want to also accept raw arrow keys in new macro definitions. This approach is somewhat hacky (possibly the server should explicitly indicate this mode similar to raw key input mode) but it works. -------------------------------------------------------------------------------- f9470816a2 | advil | 2022-07-30 13:03:10 -0400 fix: correct formatted_string::trim implementation The first pass at this function only trimmed whitespace outside of color tags, which was previously reasonable for the main use cases. However, 29c30a7bfa8 broke that assumption, leading to dead space in some popups. This commit is a full formatted_string::trim implementation that trims whitespace regardless of color tags. -------------------------------------------------------------------------------- edc2efc267 | advil | 2022-07-30 13:03:10 -0400 fix: remove empty spans in newgame buttons Because these are using a css flex layout with equal sizes, empty spans generated from a color string have a weird effect on these buttons. Since 29c30a7bfa80, the strings used for these buttons are guaranteed to have an empty span. Possibly the approach in that commit should be revisited, and I'm unclear on why the button spans are formatted this way, but for now, fix the local problem in the newgame buttons by removing empty spans. -------------------------------------------------------------------------------- 4c7e25f38b | gammafunk | 2022-07-30 11:43:31 -0500 doc: Update a comment Despite what some people claim, hammers and maces are not equivalent! -------------------------------------------------------------------------------- b5fe8ed81c | advil | 2022-07-30 10:42:59 -0400 fix: skill menu alignment issue (Goratrix) -------------------------------------------------------------------------------- 10f4acb857 | advil | 2022-07-30 10:15:17 -0400 fix: fix describe menu issues (xv, ctrl-x) I had completely missed that this exists and uses InvMenu for some reason, and so it needs custom examine code. There was also an issue where (because of inheriting from InvMenu) it needs to override some overridden key bindings. Resolves #2638 -------------------------------------------------------------------------------- c8bbfd0a37 | advil | 2022-07-29 18:02:18 -0400 fix: restore targeting CK_NUMPAD_ENTER binding (Nefhilion) Possibly this should be handled via numpad_to_regular? But right now this is all manual, and probably got deleted by accident. -------------------------------------------------------------------------------- fab03dca74 | advil | 2022-07-29 17:51:09 -0400 fix: use correct index when describing memorized spells -------------------------------------------------------------------------------- 5fb1e05c50 | Nicholas Feinberg | 2022-07-29 14:20:38 -0700 Occasionally generate hand crossbows Oops! Objstat says this increases hand crossbow drops in a 3-rune game by 30-40% or so, but the baseline is quite low. -------------------------------------------------------------------------------- d064c1aaf2 | Nicholas Feinberg | 2022-07-29 11:17:27 -0700 Confirm that #2634 is fixed Closes #2634. -------------------------------------------------------------------------------- 6693796725 | Nicholas Feinberg | 2022-07-29 11:11:52 -0700 Maybe fix a local tiles newgame crash -------------------------------------------------------------------------------- 1ab02bc704 | advil | 2022-07-29 13:50:17 -0400 fix: add some missing `static`s -------------------------------------------------------------------------------- 33dda2a4a5 | advil | 2022-07-29 13:37:46 -0400 feat: scroll by item type hotkeys in InvMenu Long-requested feature, now finally easy to implement. This commit also fixes a number of hover syncing bugs with webtiles that came up while testing it. -------------------------------------------------------------------------------- 29c30a7bfa | advil | 2022-07-29 13:37:46 -0400 fix: explicit default foreground for to_colour_string When the crawl binary renders colour strings, it uses lightgray as the default foreground color. However, this is not explicitly part of the string, so the webtiles color parsing code was not inserting a lightgray span, leading to artifacts. This commit ensures that this default is present in all autogenerated colour strings; it may or may not have some side effects I haven't noticed. (N.b. trying to change this on the webtiles side breaks a *lot* of formatting, unfortunately.) -------------------------------------------------------------------------------- e6dd553d16 | advil | 2022-07-29 13:37:46 -0400 fix: improve cast/view spell menu minorly These still shouldn't be distinct, but for now, this generalizes the toggle keys to commands, and adds a hint to the more indicating which type of menu you are in. -------------------------------------------------------------------------------- 70d6ccd9e9 | advil | 2022-07-29 13:37:46 -0400 fix: generalize some ToggleableMenu code to menu commands This moves `?` to help generally, adds a way to set toggle keys from commands, and then uses CMD_MENU_HELP for the toggle for relevant menus on the basis that this is essentially the help mode for these menus (thanks Kate). -------------------------------------------------------------------------------- 8027019649 | advil | 2022-07-29 13:37:46 -0400 fix: explicit handling for macro raw input mode This seems to have only been working accidentally, by passing everything to the server. But this relied on the server sending back hover info, which seems to be broken by recent changes [I am not sure this was intentional]. Anyways, it's better to just manually implement this so that the client knows it is in manual input mode and can act accordingly, rather than having everything work by side effect. -------------------------------------------------------------------------------- e1bd305f2e | advil | 2022-07-29 13:37:46 -0400 fix: backtrack on a new binding I want to reserve tab/shift-tab for a hypothetical future where keyhelps are widgets, not text. -------------------------------------------------------------------------------- 39874f90f9 | advil | 2022-07-29 13:37:46 -0400 fix: disable examine in KnownMenu Also, make esc abort reset mode rather than close the menu, and provide a hint that ctrl-d + * will reset everything. -------------------------------------------------------------------------------- e010e3413a | advil | 2022-07-29 13:37:46 -0400 fix: don't crash when examining floor items in UseItemMenu Needed to be implemented. Also, prevent a crash when examining unarmed. -------------------------------------------------------------------------------- 9f78f2f222 | advil | 2022-07-29 13:37:46 -0400 fix: yet more memorize menu tweaks * reset hover when switching to/from the hidden spell pane * enable CMD_MENU_EXAMINE bindings (which allows using the examine key on the hidden spell pane) * Remove MF_ANYPRINTABLE, I find that this leads to too many accidental menu exits when using the hide/show features -------------------------------------------------------------------------------- 2c367d4636 | advil | 2022-07-29 13:37:46 -0400 fix: remove legacy ' binding in webtiles This is repurposed to be CMD_MENU_EXAMINE, so pass it to the server. -------------------------------------------------------------------------------- 5930f321ed | advil | 2022-07-29 13:37:46 -0400 fix: don't read keybinds on first rc pass This lets the webtiles menu command check work correctly (we apparentlly cannot rely on `tiles.is_controlled_from_web()` during the first rc pass). Possibly this change should be webtiles-only? But I don't think it will have negative impacts.. -------------------------------------------------------------------------------- fc0b34fa67 | advil | 2022-07-29 13:37:46 -0400 fix: derive keyhelps from command binding This is all fairly painful, brittle code, but this commit at least reduces some hardcoded key assumptions... -------------------------------------------------------------------------------- d8e63177a4 | advil | 2022-07-29 13:37:46 -0400 fix: memorize menu hover issues * don't snap to hover on the server side when receiving scroll information from the client side; this leads to the two being out of sync, and lettering potentially being calculated incorrectly. * don't hover letter-selected singleselect items - most singleselect menus exit (so this doesn't matter), and the memorize menu relied on the previous behavior. (Hopefully no impact outside this menu..) -------------------------------------------------------------------------------- 8c06e03c53 | advil | 2022-07-29 13:37:46 -0400 fix: webtiles mouse hover when menu size decreases Two webtiles bugs: * the visible item range wasn't correctly recalculated when a menu size changed without scrolling * the hover event handlers were getting wiped out when a menu size decreases; particularly noticeable in the spell menu. I'm still not 100% sure why this was happening, but it seems most likely to be a side effect of the `clear()` call on the container? -------------------------------------------------------------------------------- dca162d7b1 | advil | 2022-07-29 13:37:46 -0400 fix: correctly sanitize mouse hover in memorize menu With menu_arrow_control=false, hover can still be set by the mouse, but `set_hover` does not apply the sanitizing `min` check (because it doesn't change it at all). This commit adds a corresponding check for this case in `update_menu`, which should be called whenever `items.size()` may have changed. -------------------------------------------------------------------------------- 83eecf6fab | advil | 2022-07-29 13:37:46 -0400 fix: various issues with the `F` menu Previous commits broke some of the keybinds for this menu, which needed attention anyways. The "throw any item" menu was different from the * menu only if you had a wielded launcher at this point, so it was a little silly to have both. Also, fix a bunch of the messaging, generalize some of the validity checks. -------------------------------------------------------------------------------- b7493b8c6f | advil | 2022-07-29 13:37:46 -0400 feat: add CMD_MENU_EXAMINE and support code The Menu superclass had some support for the concept of describing a menu item, via ACT_EXAMINE and all the cycling stuff, and nearly every Menu subclass uses it somehow, but for whatever reason handling was left to manual subclass code. This commit generalizes the standard pattern into the superclass, hopefully making it more straightforward to write code that does whatever description popup is needed. Along the way, this change makes it possible to add a distinct "examine selected menu item" command, which I have bound to `\\` and `'`. The latter replaces a rather ancient compatibility binding, we'll see if this bothers people. Some misc refactoring that happened as part of this: * clean up acquirement menu a bit * enable hover in mutation menu, various deck menus * improve some shop menu behaviors, stash search menu behaviors * fix a weird casting preselect bug -------------------------------------------------------------------------------- 9571f3400c | advil | 2022-07-29 13:37:46 -0400 docs: comment Menu class hierarchy I'm tired of trying to keep all this in my head and inevitably forgetting StackFiveMenu or whatever. No doubt this comment will go stale at some point, and there are ways of programmatically generating this, but I think it's still better to have as just a text comment in an easy place than not. Also, remove a reference to a nonexistent class. -------------------------------------------------------------------------------- 3c416a43b8 | advil | 2022-07-29 13:37:46 -0400 refactor: improvements to UseItemMenu This is mostly pulling code into UseItemMenu, though I did not succeed yet in eliminating the outer loop. * Restructure API around operation_types, instead of object selectors, and use this to set title prompts inside the menu * Move non-terminating key handling into process_key * other misc tweaks -------------------------------------------------------------------------------- 5e10d65620 | advil | 2022-07-29 13:37:46 -0400 fix: name some magical menu constants Also, rewrite the key function that uses these, as it was pretty confused (I think, not in ways that mattered). -------------------------------------------------------------------------------- d406f26c7b | advil | 2022-07-29 13:37:46 -0400 refactor: abstract more menu actions to commands Abstract various selection commands to CMD_MENU_... actions, and refactor Menu::process_key accordingly. Hopefully won't break subclasses in ways that my testing has so far missed, as this is a relatively major change in how input is handled across all menus. This commit should by itself not result in much behavior change (a few minor bugfixes and one exception below). Notes: * This adds a new keymap context specifically for multiselect menus, as a way of having keybinds that target just that case. It's maybe a bit heavy handed, but works surprisingly well. * Behavior change: enter in a multiselect menu with no selection does not exit. I will probably adjust this some more. * Remove multiselect count in menu title, as it was redundant with footer. * Remove MF_PRESELECT, as it wasn't needed for anything (despite a few bits of code that say what they're doing is "preselecting"). -------------------------------------------------------------------------------- 9e8725f314 | advil | 2022-07-29 13:37:46 -0400 refactor: updates to webtiles keyhandling This is my latest take on how to do webtiles keyhandling in a way that points towards a more modern approach, while supporting old game versions. Followup to 7b1be97da7. * For versions following this commit, convert numpad and function key handling to use modern `code` values rather than keycodes. This has widespread browser support in 2022 and should be more robust than the previous keycode-based approach. * Remove keycode overrides from game.js, with a new division of labor and clearer handling for legacy keycodes. Now all the client needs to do to use updated keyhandling is enable `code` mappings. * Support for some new internal keycodes: ctrl+shift bindings; modified space, del, enter, bksp, esc; numpad =/enter, F keys through F19, fix delete handling (this is the only one that works on older versions). Still to be done: fix alt handling, convert modifier handling to use `code`. This commit attempts to support all versions and all possible cache states for non-versioned code (which on some servers may require a server restart to refresh). We'll see if that actually works. -------------------------------------------------------------------------------- e3431fa5fd | advil | 2022-07-29 13:37:46 -0400 feat: a few more mac-oriented console keys Plus, some comments. -------------------------------------------------------------------------------- df642b0ec9 | advil | 2022-07-29 13:37:46 -0400 fix: tweaks for ncurses keycode handling * Add and update various comments * Fix (I hope) the keycode for numpad / in application mode, this seems to have simply been wrong (but only tested on mac...) * Add a mapping for keypad = * add rxvt-style handling of function keys for mac Terminal.app defaults, working around what seems to be buggy terminal behavior * add human-readable names for F keys through F24 for ncurses. I didn't add keycodes because this is annoying to do for stupid reasons. Probably not widely supported, but they work on iTerm2! * some misc menu fixes that got rolled in -------------------------------------------------------------------------------- 0d6ea506dc | advil | 2022-07-29 13:37:46 -0400 refactor: Revamp SDL keycode handling Main changes: * Finally, convert to internal keycodes for SDL keycodes where we have internal keycodes. This lets a bunch of keycodes be unconditionally defined, and means that all build targets will use the same keycodes for these keys/key combos (though they vary in what is available). It does mean that SDL keycodes will change, breaking existing macro files, but also that the same macro defs will (largely) work across all build targets. Also, some combos will no longer work (see below). * Expand the set of internal keycodes: Support ctrl+shift for arrow (etc) keys; explicitly support modifiers for enter, bksp, esc, del; a few missing numpad cases. * Revamp how alt is handled. Well, it uses the original principle (just shifting the key space by -3000), but is now applied more systematically to all non-ascii keys. For ascii keys, alt is still not intercepted because these days this is used to input unicode chars on many OSs. I've fixed some mac issues with this. * Implement option modifier support for macs. This uses the same hacky keycode shifting as alt, just with a bigger number (-20000). * Refactor the SDL keycode translation code so that it makes more sense. * Fix some macro menu bugs, show naming for basically all keys correctly now. (Some UTF issues still maybe?) * Fix some lingering issues with numpad key suppression (before, it was returning a textinput CK_NO_KEY event as well as the key event.) What is missing or iffy: * The previous code had incomprehensible, hacky, modifier handling code that (sort of) worked on absolutely every key. I've moved away from this, where the practical impact is the ctrl works on a lot less stuff. In particular, ctrl + fn keys is not implemented. If people were using this, I can probably bring it back. Also, ctrl with whatever random SDL keycodes you have will not work, because this was a really bad idea. Shift is also fairly variable, though I'm not sure it's more-so. * Numpad with ctrl and shift is a bit weird. Previously, on SDL numpad keys were just mapped to arrow keys. Since we have numpad numbers, I mapped to those and added bindings. But, to get movement commands to work, ctrl/shift on the numpad turn the key into its corresponding arrow key. Also, in menu code numpad keys act like arrow keys. It's all a bit messy. * Haven't checked if some of the new keycodes can be added to webtiles Resolves #1228 -------------------------------------------------------------------------------- 4075c45985 | advil | 2022-07-29 13:37:46 -0400 fix: handle uppercase prompt menu defaults (Fix the macro menu "really clear" prompt, maybe others) -------------------------------------------------------------------------------- 2a601844f1 | advil | 2022-07-29 13:37:46 -0400 refactor: generalize some numpad handling For popups, menus, etc we want numpad special keys to be handled uniformly with their regular counterpoints basically all the time. Before there was a lot of ugly special casing for this that often has had mistakes, missing mappings, etc. This commit generalizes the mappings so that they are translated behind the scenes on all menus except the macro menus, as well as scrollers. Keymaps do still allow changing the numpad keys specifically. Some waffling on what to do with numbers. Previously, most menus did no translation at all for them (rendering them inert), and for these menus, they get translated to numbers now. (Most keyboards with a numlock should be able to turn this off and get navigation keys still.) The skill menu had some (incorrectly implemented?) hardcoding to let 2/4/6/8 act as direction keys, and I've left this (/fixed this to be) active. Possibly this should be done uniformly? Not sure what players will expect. (Also, some misc unrelated comments) -------------------------------------------------------------------------------- 2d6fbdf044 | advil | 2022-07-29 13:37:46 -0400 refactor: make menu quantity selection non-default This was a default possibility, I assume, from back in the days where Menus were used almost entirely for items, and managing stacks mattered for more things (e.g. weight). Nowadays I'm aware of only two menus that even need this (drop and pickup), and even here this is not an option that users have much of a reason to use. Swap the meaning of the flag and the corresponding defaults so that menus have to enable this rather than disable it; in principle this also simplifies using digits for other things in some Menus. -------------------------------------------------------------------------------- 2ec3508d20 | advil | 2022-07-29 13:37:46 -0400 fix: improve overriding options for Menu subclasses Avoid hacky pre_process with a cleaner set of things to override (mainly used for help right now), implement handling for `-`. Numpad handling is very ad hoc here still, maybe menus should always collapse numpad equivalents to their regular keys in a systematic way? -------------------------------------------------------------------------------- 0719e5db6c | advil | 2022-07-29 13:37:46 -0400 fix: tweak what bindkeys are allowed * blanket disallow rebinding esc and mouse commands in popups/menus * mark CK_MOUSE_MOVE as synthetic * ignore menu key rebinds in webtiles specifically. Most of these "work" but (rightly?) don't send UI state back to the webtiles client, so they result in inconsistent client/server UI state, and are basically just a recipe for bug reports as-is. I'm not sure how to do this without implementing the abstract commands on the client side and transmitting keybinds, which seems extremely involved. -------------------------------------------------------------------------------- 2f41a18165 | advil | 2022-07-29 13:37:46 -0400 feat: CMD_MENU_... for menu navigation bindings This is part of my attempt to somehow get some order out of the keybindings used across different menus, by putting a layer of abstraction between individual keys and menu actions. This is only a partial implementation that focuses on navigation: by design there's quite a bit of falling back on the old process_key, partly because I'm undecided about how to handle some of the general cases, and also because there are many, many, menu-specific bindings that don't seem like they should obviously be implemented in a general way. Some key missing things: * Most aspects of this in webtiles -- I'm completely undecided about how or even if to handle this. Many of the keybinds covered in this commit have full javascript parallel implementations for snappier UI. * Many more menu special cases * select/activate actions * user rebinding. Right now this is completely disabled, because I think there's certain things we would not want to allow at all (e.g. bindings for mouse buttons, CMD_MENU_EXIT, stuff like this). Of course, this is advanced rc stuff, so it call fall under caveat emptor? -------------------------------------------------------------------------------- 0a7a3d12f8 | Nicholas Feinberg | 2022-07-27 21:55:23 -0700 Maybe fix a revival untransform crash (Oneirical) Very scary to do almost anything while dead. -------------------------------------------------------------------------------- fe0b616f53 | Nicholas Feinberg | 2022-07-27 17:27:53 -0700 Fix Meteoran manual positioning (FizzleBang) -------------------------------------------------------------------------------- 6e406bff71 | Nicholas Feinberg | 2022-07-26 18:05:04 -0700 Give a +1 to the AM starting sling It's still slightly weaker than the Hu starting shortbow, but perhaps a little less sad. -------------------------------------------------------------------------------- 9a622b1e81 | Nicholas Feinberg | 2022-07-26 17:45:31 -0700 More Abyssal tiles (Sastreii) A tweak to Louise and a rework of the Mad Acolyte of Lugonu. -------------------------------------------------------------------------------- 44044ebd20 | Nicholas Feinberg | 2022-07-26 17:45:31 -0700 Maybe fix a Golubria + floor ID bug (But I couldn't repro the problem.) -------------------------------------------------------------------------------- 5d2155ec51 | gammafunk | 2022-07-26 10:27:05 -0500 fix: Remove an unecessary subvault (Goratrix) The vault grunt_ashenzari_visionary_trees is one of two fallback vaults placed when information about Lair branches isn't available. However we don't need two distinct vaults for this case, as fallback never happens in an actual game. Remove the trees vault, leaving grunt_ashenzari_visionary_lava as the fallback, and add allow_dup to the latter so it can be used twice. -------------------------------------------------------------------------------- d064cfad1c | Nicholas Feinberg | 2022-07-25 23:06:30 -0700 Fix: don't double sandblast delay on miscasts This was not intended, and is (IMO) a bug. -------------------------------------------------------------------------------- 52dc46e822 | Nicholas Feinberg | 2022-07-25 23:03:52 -0700 Buff sandblast accuracy To make missing with an extra-slow spell less painful. This has a pretty small effect in the cases I tested, but maybe it helps. -------------------------------------------------------------------------------- f6505d1e93 | Nicholas Feinberg | 2022-07-25 23:01:35 -0700 Increase sticky flame damage by 25% vs monsters Sticky Flame has taken some hits in recent versions, not least due to attacks of opportunities weakening kiting. Now that it's not in the Fire Elementalist start, it can afford to be a bit stronger. This doesn't affect the displayed damage, which only shows the initial impact. TODO: clean up and unify this. This does not affect sticky flame damage on players. -------------------------------------------------------------------------------- 416d80c6de | Nicholas Feinberg | 2022-07-25 23:01:35 -0700 Increase Flame Wave damage Continuing the saga of dde70e7af44 and daab1c2f9be. Average damage per round (pre-AC): 0 power 100 power Original 5 25 Post-nerf 4 14 Post-buff 4 17 Current 4 21 We're gonna find the perfect number. It's in there somewhere. -------------------------------------------------------------------------------- 98872c3ec8 | Nicholas Feinberg | 2022-07-25 23:01:35 -0700 Increase Irradiate contamination Irradiate is widely considered an extremely strong spell, 'trivializing' many encounters and much stronger than other spells of its level. The 'contamination' limit, intended to balance it by limited access to other contamination-causing effects, has become less relevant as those other sources (Haste, Invisibility spell, Controlled Blink...) have left the game. It's not a bad thing for Crawl to have strong spells, but we want players to be making exciting strategic choices, and to be excited to upgrade from lower level spells to higher ones. We've recently reduced the spell's max damage, but this hasn't really made any signifcant impact on its power. So, let's dial it back a little, from 3-4 'safe' uses before hitting yellow contamination to 2-3. I expect it will still be quite powerful, but perhaps somewhat more situational. This commit also changes the threshold at which contamination goes from dark grey (trace) to light grey (you're near yellow contamination), such that being in light grey still warns you that one more Irradiate could put you into yellow. This affects pretty few other effects now - evokable invisibility was the only other one that had the same logic, and you really don't want to use that in grey contam regardless. Currently: 1000-1500 contam (light grey is 3.5k, yellow is 5k) Best case: 4 safe casts at 1k contam each (5th puts you at yellow contam guaranteed, ignoring contam reduction over time). Worst case: 3 safe casts at 1.5k contam each (5th is guaranteed yellow). New: 1250-2000 contam (light grey is 3k, yellow is 5k) Best case: 3 safe casts at 1.25k contam each (4th is yellow guaranteed, ignoring contam reduction over time) Worst case: 2 safe casts at 2k ea (3rd is yellow guaranteed). -------------------------------------------------------------------------------- 906f1d757c | Kate | 2022-07-25 21:30:03 +0100 Make unidentified ?butterflies fizzle under Okawaru As with scrolls of summoning - instead of summoning hostiles have the scroll just fizzle if read-identified under Okawaru or with Sacrifice Love. -------------------------------------------------------------------------------- 4287b5424a | Kate | 2022-07-25 21:29:59 +0100 Update some halo descriptions To make it clearer that the accuracy bonus doesn't apply against the owner of the halo. Also correct an inaccurate comment. -------------------------------------------------------------------------------- a87ceb1aab | gammafunk | 2022-07-25 15:06:40 -0500 fix: Remove unreachable items from a vault (dilly) The vault grunt_ashenzari_visionary didn't have tagging to prevent level items from generating inside its unreachable areas. Its `no_tele_into` tagging was also a bit suspicious in that it only masked certain squares. Add no_item_gen and no_tele_into to the subvault tags to prevent any problems. Also rework the terrain and monster placement inside these vaults. Although weights were chosen to make monster closets unlikely, they didn't fully prevent them, and the simple SUBST used meant that solid features had to be very sparse. Make a grid of wall location glyphs for the non-Shoals subvaults, placing walls only on these locations and thinning out the walls as appropriate to give the sight sense open areas versus walled areas. This also allows us to use trees in the Swamp subvault. Adjust monster placement use place: tags so we don't have hard-coded lists of decorative monsters that easily go stale. -------------------------------------------------------------------------------- 88e6f02907 | Neil Moore | 2022-07-24 23:39:04 -0400 Add a missing word [skip ci] -------------------------------------------------------------------------------- 35202b1573 | Nicholas Feinberg | 2022-07-24 20:07:42 -0700 Maybe fix ?id uselessness (Lightli) Broken by the addition of scrolls of butterflies. -------------------------------------------------------------------------------- 30c7767f5c | Nicholas Feinberg | 2022-07-24 11:22:09 -0700 Add Naga recolour tiles (Lyre) -------------------------------------------------------------------------------- 030b2a9e5e | Nicholas Feinberg | 2022-07-24 11:22:09 -0700 Add Djinni recolour tiles (Lyre) -------------------------------------------------------------------------------- 370ae71bdb | Nicholas Feinberg | 2022-07-24 11:22:09 -0700 Revivify Borgnjor's Mausoleum (Sastreii) New floor & wall tiles for the famous wizlab. -------------------------------------------------------------------------------- 68d77ee5f7 | Nicholas Feinberg | 2022-07-24 11:22:09 -0700 Dance with the stars (Sastreii) Add animated starflower tile variants. -------------------------------------------------------------------------------- 552816ba1b | Nicholas Feinberg | 2022-07-24 11:22:09 -0700 Don't autoexplore into krakens (ardl, CarefulOdds) Krakens weren't considered dangerous until they woke up and started spawning tentacles, since they couldn't path to the player. Fixes #2556. -------------------------------------------------------------------------------- 46b74f5a98 | Nicholas Feinberg | 2022-07-24 11:22:09 -0700 Remove KRAKEN_TENTACLE_RANGE Unused since 26b18322453b0e8f90b8bb6dee5690025d588116 (2010). -------------------------------------------------------------------------------- 86a584de0a | Nicholas Feinberg | 2022-07-24 11:22:09 -0700 Add a new ancient tile (Sastreii) Ancient zyme. -------------------------------------------------------------------------------- 0f71de6fce | Kate | 2022-07-23 13:19:55 +0100 Don't let troves ask for ?butterflies under Okawaru Since they're useless otherwise, so don't make for a meaningful toll. Worshippers of Ashenzari that have sacrificed love can still be asked for scrolls of butterflies, but that's possibly enough of an edge case to allow them to get away with. -------------------------------------------------------------------------------- 46a8461d6a | riverfiend | 2022-07-22 20:01:36 -0700 Make classed draconians match their base color Now that each classed drac maps neatly onto a base drac color, it's silly for the white draconian stormcaller to be brown, or for the black draconian knight to be cyan. The line-up isn't perfect, classed dracs are kept on light colors to help them stick out in vaults that explicitly use different base colors. -------------------------------------------------------------------------------- 1931ea0d09 | Nikolai Lavsky | 2022-07-22 19:48:58 -0700 fix: tweak shield offsets for several elves and spriggans This commit fixes shield offsets for the following monster tiles: * deep elf pyromancer, zephyrmancer, and demonologist; * spriggan berserker and air mage. -------------------------------------------------------------------------------- cd2578efcb | Nikolai Lavsky | 2022-07-22 19:48:28 -0700 fix: tweak spacing on the dungeon overview screen As a followup to ed30ed24e, this commit fixes column alignment in the two-columns mode. -------------------------------------------------------------------------------- 6e3fbd0ac6 | Nicholas Feinberg | 2022-07-22 18:49:08 -0700 Fix op/dr hat use (ebird) Closes #2625. -------------------------------------------------------------------------------- d4eca3973b | Nicholas Feinberg | 2022-07-22 18:33:46 -0700 Don't let Ashenzari block innate mutations (Nomi) Oops! -------------------------------------------------------------------------------- 9542dc02ca | Nicholas Feinberg | 2022-07-22 16:46:43 -0700 Make Ashenzari block curse-shattering mutations Just a really excessively brutal feel-bad otherwise. -------------------------------------------------------------------------------- 65808cdf32 | Nicholas Feinberg | 2022-07-22 15:56:22 -0700 Add new mutation tiles (Sastreii) SInv, horns, antennae, and passive mapping (the thing DD got and Meteorans still get). -------------------------------------------------------------------------------- 1b0b605977 | Nicholas Feinberg | 2022-07-22 15:56:22 -0700 Add Teleporting status & icon (Sastreii) -------------------------------------------------------------------------------- 0687760f0c | Nicholas Feinberg | 2022-07-22 15:56:22 -0700 Add some uniquely abyssal tiles (Sastreii) New Mlioglotl and Louise tiles. -------------------------------------------------------------------------------- 2c4c91d9db | Kate | 2022-07-21 19:41:55 +0100 Give scrolls of butterflies their own summon type Since the spell has been removed, treat them the same way as scrolls of summoning (and re-remove the spell enum at TAG_MAJOR_VERSION 35). This reverts commit 1595a9cb2e31c54c4631752689330e52b5ae3b26. -------------------------------------------------------------------------------- 85def6a6a5 | Kate | 2022-07-21 19:41:55 +0100 Fix summon scrolls being readable under no-allies conducts Scrolls of summoning and butterflies are marked as useless under Sacrifice Love and while worshipping Okawaru, but previously could still be read (with no effect other than wasting a turn for ?summoning, and with ?butterflies creating friendly monsters that then turned hostile) - prevent reading them while under a no-allies conduct. -------------------------------------------------------------------------------- cbf53edc00 | Kate | 2022-07-21 19:41:34 +0100 Fix inverted logic in a butterfly check -------------------------------------------------------------------------------- cf90b5c518 | Nicholas Feinberg | 2022-07-21 07:55:08 -0700 Maybe fix an obscure Abyss exit bug (CarefulOdds) meaning that the game considered it to be temporary terrain. A water nymph was killed in the same action that the exit was spawned. I was unable to repro the issue, but I believe that the game still considered the exit to be part of the nymph's temporary terrain. This tries to clean up that situation. Closes #2618. -------------------------------------------------------------------------------- 1595a9cb2e | advil | 2022-07-21 10:34:42 -0400 fix: unremove `SPELL_SUMMON_BUTTERFLIES` -------------------------------------------------------------------------------- cbe080d7e0 | Nicholas Feinberg | 2022-07-20 19:05:23 -0700 Scroll of butterflies icon (Sastreii) -------------------------------------------------------------------------------- fb1a3fa8b1 | Nicholas Feinberg | 2022-07-20 11:27:01 -0700 Let a thousand starflowers bloom (Sastreii) New Starflower tile. -------------------------------------------------------------------------------- b26ba3297d | Nicholas Feinberg | 2022-07-19 22:02:55 -0700 Fix the build? -------------------------------------------------------------------------------- ff774ecaa7 | Nicholas Feinberg | 2022-07-19 22:01:23 -0700 Brutally nerf butterfly EV 25 -> 15. This is intended to make scrolls of butterflies more effective against ranged attacks. Centaurs go from having a 20% chance of hitting a butterfly to a 44% chance. Deep elf master archers go from 42% to 65%. Dropping to 12 EV would be even better, but I don't yet have the heart... poor butterflies... -------------------------------------------------------------------------------- 0affbf219e | Nicholas Feinberg | 2022-07-19 21:58:36 -0700 Add a targeter for ?butterflies And fix the ?summoning targeter. -------------------------------------------------------------------------------- dfd6e90d5d | Nicholas Feinberg | 2022-07-19 21:53:27 -0700 Begin the Butterfly Bargain (kate) Make troves not charge ?fog if your game only generates ?butterflies. -------------------------------------------------------------------------------- 4e36813289 | Nicholas Feinberg | 2022-07-19 21:24:37 -0700 Set scroll of fog to alternate with butterflies Delver is unaffected. -------------------------------------------------------------------------------- df2fad6ba1 | Nicholas Feinberg | 2022-07-19 21:24:36 -0700 New scroll: scroll of butterflies For many years, there were suggestions to turn the 'summon butterflies' effect from random uselessness into its own scroll (c.f. 17b97e55154e). Before we had 'alternate item' tech, this would have caused inventory clutter. But now we can have variety without causing UI issues or option overload, and with the removal of the Summon Butterflies spell, the only other analogous effect is a Xom action! A subsequent commit will make this an alternate for scrolls of fog. -------------------------------------------------------------------------------- 230be3ade3 | Nicholas Feinberg | 2022-07-19 21:21:17 -0700 Maybe silence some compilation warnings -------------------------------------------------------------------------------- 7b45a56547 | Kate | 2022-07-19 18:04:56 +0100 Don't list Deep Dwarves on the aptitudes menu (#12704) -------------------------------------------------------------------------------- ee4989fb63 | Nicholas Feinberg | 2022-07-19 09:54:00 -0700 Fix: don't spawn monsters in portals (CarefulOdds, Goratrix) Broken in 74bf5736c0002df9636fc6333b837f5770b722dd . -------------------------------------------------------------------------------- 4df2a8d2dc | robertxgray | 2022-07-19 16:46:31 +0200 Build a single ABI in Android build tests -------------------------------------------------------------------------------- fc89b1a5bd | Edgar A. Bering IV | 2022-07-18 20:57:32 -0700 docs: changelog through 0.29-a0-875 -------------------------------------------------------------------------------- 74bf5736c0 | Nicholas Feinberg | 2022-07-18 19:07:50 -0700 Remove env.spawn_random_rate (riverfiend, acrobat) This field was extremely useless and mostly misleadingly misused. This might fix a bug with orb spawns not spawning in Temple. At any rate, they spawn there now. -------------------------------------------------------------------------------- 76f050b3ff | Nicholas Feinberg | 2022-07-18 19:07:50 -0700 Intermediate state -------------------------------------------------------------------------------- 9d4207de54 | Nikolai Lavsky | 2022-07-18 15:10:52 -0700 fix: allow Poisonous Vapours to work under Still Winds Allow Poisonous Vapours to work under -Clouds, since as of 3f0e5c0cc there are no clouds involved. -------------------------------------------------------------------------------- 797fff5ad1 | Nicholas Feinberg | 2022-07-17 11:55:30 -0700 Mark elementals and animated weapons/armour M_UNBLINDABLE They have no eyes. Possibly tomes should go this way too. Undecided. -------------------------------------------------------------------------------- 9694c85c73 | Nicholas Feinberg | 2022-07-17 11:55:30 -0700 Mark slime creatures M_UNBLINDABLE (graveyardigan) Looks like an oversight - all other jellies have this. -------------------------------------------------------------------------------- 2c972031a6 | Kate | 2022-07-17 03:34:55 +0100 Fix various Step from Time pathfinding interactions (acrobat) Don't let monsters path towards the player during Step from Time if marked or if (0,0) was visible from the location where the ability was used, and don't let monsters re-target the player while they're at (0,0) if they fail a stealth check. It's entirely feasible that this makes Step from Time work completely differently to how it used to, but since nobody really understood how it worked in the first place that's probably fine. -------------------------------------------------------------------------------- 4f890cd2dc | Kate | 2022-07-17 01:32:14 +0100 Fix slimified Dowan/Duvessa handling Slimified monsters shouldn't be able to turn hostile again, as this causes messy interactions with Jiyva penance prompts. Instead treat slimify similarly to banishment and anger the other twin (along with some speech lines for Dowan, but none for Duvessa since her perma-berserk means they'll never be used). -------------------------------------------------------------------------------- db86c2195a | Kate | 2022-07-17 01:32:03 +0100 Fix some Dowan/Duvessa speech handling when dueled If it's even possible to duel one of Dowan/Duvessa, fixes the surviving twin acting as if the dueled twin had been banished. If the player abandons Okawaru mid-duel with one of the twins, the other will still act like the dueled twin is dead on their return, but this is probably impossible to do in the first place anyway. -------------------------------------------------------------------------------- b03dc68cea | Kate | 2022-07-16 23:18:58 +0100 Trim a floor from Lair To continue shortening some of the branches which outstay their welcome, as discussed in PR #1898 and partially implemented with 0.28's shortening of Depths. More substantial changes have been discussed for the future (such as only generating one S branch per game, and only one of Hell or Pan for the extended endgame), but in the meantime shortening Lair slightly is a good step in the right direction. Monster spawns and vault depths are mostly adjusted such that the new Lair:1 is equivalent to the old Lair:2. -------------------------------------------------------------------------------- 0545e20025 | Nicholas Feinberg | 2022-07-16 13:30:26 -0700 Ban useless attack orders against invisible foes Prevent wasting time. This is sort of weirdly inconsistent (we allow attack orders when you have no allies at all) and should probably be rethought. -------------------------------------------------------------------------------- a8a175f626 | Nicholas Feinberg | 2022-07-16 13:19:34 -0700 Warn when ordering an attack on an invisible foe If some or all of your allies can't see invisible. -------------------------------------------------------------------------------- 6811fc6c64 | Nicholas Feinberg | 2022-07-16 13:03:59 -0700 Simplify frozen ramparts code (Gammafunk) The loop was a copy-paste from slime wall code - it's redundant here. -------------------------------------------------------------------------------- 27034753ed | Nicholas Feinberg | 2022-07-16 13:03:42 -0700 Simplify god spell hate code -------------------------------------------------------------------------------- 9cde7d24d7 | Kate | 2022-07-16 19:52:21 +0100 Apply coding conventions -------------------------------------------------------------------------------- c8ba4cecf6 | Kate | 2022-07-16 19:52:21 +0100 Remove obsolete evocations enhancer handling Also tied in to Pakellas, this has been unused for years and makes the code for all evokers unnecessarily more complicated. -------------------------------------------------------------------------------- 1d18206e20 | Kate | 2022-07-16 19:52:21 +0100 Remove obsolete Pakellas code There's no reason for all this to still exist, since Pakellas doesn't pretend to be anywhere near functional if a player does somehow transfer a Pakellas-worshipping save to a modern version, and any future reimplementation of the god would need to be a redesign from scratch. Just keep around the minimum amount of code to allow transferring without crashing or completely breaking the game, and don't punish players for abandoning Pakellas. -------------------------------------------------------------------------------- 0e1e14f5ec | Kate | 2022-07-16 19:52:21 +0100 Fix some dancing weapon interactions under Gozag (#2530) Fixes dancing weapon kills not granting wereblood stacks, as well as possibly some other very niche interactions such as hints mode kill messages not displaying. Closes #2530. -------------------------------------------------------------------------------- 9f61a2287f | Kate | 2022-07-16 19:52:21 +0100 Let Gozag give gold in the Abyss again Missed from the rest of the reverts in ba36221789. -------------------------------------------------------------------------------- 9b1aa3ac5b | Nicholas Feinberg | 2022-07-15 22:05:20 -0700 Display weapons for zombie orcs Fixes #2476. -------------------------------------------------------------------------------- f0f64f35a9 | Nicholas Feinberg | 2022-07-15 22:00:55 -0700 Update Parghit desc to match art (ShaperMC) :( goodbye, wiry frame Closes #2482. -------------------------------------------------------------------------------- dc776d099f | Nicholas Feinberg | 2022-07-15 21:58:15 -0700 Fix yet another fishtail bug (ardl) Don't unmeld boots while in statue form after leaving water. Merfolk fishtail bugs are my Moby Dick. Someone please rescue me. Fixes #2537. -------------------------------------------------------------------------------- a3d7043d74 | Nicholas Feinberg | 2022-07-15 21:46:16 -0700 Fix unneeded Devastator attack prompts Closes #2554. Also future-proof the sceptre of torment. -------------------------------------------------------------------------------- 1ba91cf0d7 | Nicholas Feinberg | 2022-07-15 21:42:16 -0700 Refactor melee_attack bad attack code -------------------------------------------------------------------------------- 6deee45b7e | Nicholas Feinberg | 2022-07-15 21:18:47 -0700 Shift goblin weapon tile up one pixel This is an attempt to fix #2557, but I haven't bothered to compile webtiles to test it. -------------------------------------------------------------------------------- 5add3c4762 | Nicholas Feinberg | 2022-07-15 18:37:58 -0700 Don't show fake frozen ramparts floors Fixes #2609. -------------------------------------------------------------------------------- 16f3739923 | Nicholas Feinberg | 2022-07-15 18:28:26 -0700 Refactor is_seen_foo_wall functions -------------------------------------------------------------------------------- 777627f9b7 | Nicholas Feinberg | 2022-07-15 18:15:26 -0700 Don't autoexclude friendly statues (CarefulOdds) Closes #2612. -------------------------------------------------------------------------------- bdabc8c6d3 | Nicholas Feinberg | 2022-07-15 17:50:12 -0700 Fix: allow autoexplore with inhibited regen (various) Yet another in a very long series of issues with i_feel_safe(), a876b224025 fixed various issues with resting while inhibited regen prevented the player from healing. However, it unintentionally broke many other things that depend on i_feel_safe(), such as autoexplore, running, interlevel travel, spell memorization, etc etc. It also gave a very confusing message - it was not at all clear that inhibited regen was at fault. This refactors the code to split out the relevant check into a new can_rest_here() function. (Maybe that function should also call i_feel_safe()?) It will almost certainly cause new issues. This closes #2595. -------------------------------------------------------------------------------- 24c0ca63c9 | gammafunk | 2022-07-15 12:57:06 -0500 fix: Properly tag two transporter vaults The vaults gammafunk_sealed_arena and gammafunk_sealed_library were not placing under their usual FLOAT orient. When various transporter vaults were unified so their Vaults branch variants didn't need to be separate vaults, these two got that treatment, but without proper tagging with transparent for the outside and opaque for the inside. The passable tag they were given meant they always failed to place as FLOAT vaults. Also add salamander tyrants to gammafunk_sealed_library as alternates for nagaraja, since that's appropriate for this vault. -------------------------------------------------------------------------------- 2802c0ca9a | Nicholas Feinberg | 2022-07-15 07:18:24 -0700 Clarify Dispersal Will checks (Booper) -------------------------------------------------------------------------------- 6161e89988 | Nicholas Feinberg | 2022-07-14 22:10:12 -0700 Dial back corrosive bolt scaling a bit (Ge0ff) Accidental side effect from monster wand changes. (0fff342652f313) Deep elf sorcerer: 3d25 -> 3d20 -> 3d21. Ancient lich: 3d35 -> 3d42 -> 3d34. -------------------------------------------------------------------------------- e8845773e3 | Nicholas Feinberg | 2022-07-14 10:00:40 -0700 Nerf short blade damage (acrobat) When we switched long blades to using dexterity for damage, we made short blades do likewise purely for player intuition. It felt very odd that the smaller, more 'dextrous' short blades would use strength if long blades used dex. At the time, I noted (in 85b37ae345e8) that short blades might need a compensatory nerf. This was indeed the case. A pretty middling endgame character (15 str, 25 dex, 15 fighting & short blades) was getting the equivalent of an extra ring of slaying compared to the old status quo, which seemed neither necessary nor helpful - it made short blades less interesting by helping players just plow through everything with them, rather than needing to stab, etc. To compensate, shift base damage on quick blades, short swords and rapiers down 1. Daggers are unaffected - their base damage is already quite low and they're mostly used early game, where the stat difference is lower. Short swords don't really need the nerf either, but I worry there's not enough differentiation between them and rapiers otherwise. I considered removing stat scaling from short blades entirely, but that seemed like a more complex change (another special case). Let's try this for now. -------------------------------------------------------------------------------- 0fff342652 | Nicholas Feinberg | 2022-07-14 08:48:19 -0700 Brutally nerf Ijyb In general, DCSS tries to provide some form of tactical counterplay for threats. If you see a hydra on D:6, it's a normal-speed melee threat, so you can walk away. A cyclops is slow; a centaur is fast, but does much less damage and drops its bow in melee. As the iconic splash screen of Ijyb melting a player with a wand of acid depicts, Ijyb (and other early game wand-users) went a bit too far - long ranged, very high damage threats. Let's try dialing them back to more reasonable numbers for their depth and see how it plays. Wand Old New /acid 3d12 3d9 /light 3d12 3d9 /qsilver 3d14 3d9 /mindburst 1d22 1d20 /iceblast 3d8 3d8 /flame 3d3 3d5 Also, simplify the logic to remove a bonus special case for wands. GOOE Mindburst damage increased slightly, purple draconian quicksilver bolt damage decreased slightly, various corrosive bolt casters' damage decreased slightly. -------------------------------------------------------------------------------- e0f87948b3 | Nicholas Feinberg | 2022-07-14 07:43:31 -0700 Give the amulet of vitality a shop price Somewhat arbitrary. -------------------------------------------------------------------------------- 116ddc6ace | Nicholas Feinberg | 2022-07-13 20:26:33 -0700 More explicitly document Zin hell effect resistance This was canonically classed as 'protection from Chaos', but I don't think hell effects are really all that chaotic. No more than half the other things in Crawl, anyway. We should probably make poly resistance a little clearer, too. -------------------------------------------------------------------------------- 303e14b210 | Nicholas Feinberg | 2022-07-13 20:20:14 -0700 Don't let Yred derived undead attack out of LOS (ebering) This was an oversight during the recentish Yred rework. This might not be the right way to fix this (perhaps we should add an unlimited duration fake abjuration?), but eh, close enough. -------------------------------------------------------------------------------- 4793fd635e | Nicholas Feinberg | 2022-07-13 11:31:57 -0700 Add another welcome message -------------------------------------------------------------------------------- 385bb11a5b | Nicholas Feinberg | 2022-07-12 17:15:33 -0700 Add studio walls (Sastreii) For later use in vaults. -------------------------------------------------------------------------------- 174bc33265 | patrick | 2022-07-12 16:25:51 -0400 Fix errors in some recently-added variable-altar temples I had somehow missed that get_altar_counts returns a string, not a number. I have fixed the erroneous temples. -------------------------------------------------------------------------------- 139bfe3b0c | Nicholas Feinberg | 2022-07-12 12:37:01 -0700 Fix beams stopping at target (dilly) Only stop when you'd hit an ally, not when you'd hit an enemy, ha. -------------------------------------------------------------------------------- a65acad94f | David Damerell | 2022-07-12 18:35:05 +0100 Change acquirement's description to match new acquirement Another highly important change for ebering. :-) -------------------------------------------------------------------------------- 1e95ca9f62 | gammafunk | 2022-07-11 23:37:41 -0500 fix: Airstrike damage for monster This no longer has a minimum base damage, but the relevant code wasn't fully updated. -------------------------------------------------------------------------------- 34b5299d54 | Nicholas Feinberg | 2022-07-11 19:02:01 -0700 Add reflect icon for monsters (Sastreii, acrobat) To make it a little more obvious when your iron shot is about to come back hilariously toward you. -------------------------------------------------------------------------------- 72eb547380 | Nicholas Feinberg | 2022-07-11 18:51:26 -0700 Add a skeleton for new Lerny tiles (Sastreii) Skeletal Lernaean hydra tiles. -------------------------------------------------------------------------------- 412af75db4 | Nicholas Feinberg | 2022-07-11 18:27:59 -0700 Make phantoms avoid teleport closets (leNuup) -------------------------------------------------------------------------------- cb1280458a | Edgar A. Bering IV | 2022-07-10 23:58:36 -0500 vaults: give thematic (and good) loot to bailey warlords Warlords get a one chance in three to get a good_item weapon, but an orc warlord with a good_item greatsword looks out of place in an axe baily, so let's outfit them particularly and force the good_item since the warlords are quite early. -------------------------------------------------------------------------------- bc3a993a49 | hellmonk | 2022-07-10 20:02:53 -0400 feat: Minor artifact price adjustments -------------------------------------------------------------------------------- 9d1704292e | hellmonk | 2022-07-10 19:51:58 -0400 feat: Rework scroll prices. Bring these more into line with rarity/utility. -------------------------------------------------------------------------------- a07a83588e | hellmonk | 2022-07-10 19:36:33 -0400 feat: Rework wand shop prices Scale cost linearly with charges and rearrange the hex effects. -------------------------------------------------------------------------------- 80bc156356 | hellmonk | 2022-07-10 18:47:58 -0400 Reduce irradiate max damage -------------------------------------------------------------------------------- 72347fce65 | Nicholas Feinberg | 2022-07-10 13:42:02 -0700 Auto-stop-at-target when firing toward allies Instead of prompting ("really shoot toward your goblin?"), use '.' targeting mode automatically if your shot might otherwise miss an enemy and hit an ally. TODO: find remaining cases that this needs to apply to, then remove the overshoot_prompt boolean. -------------------------------------------------------------------------------- d827844252 | Nicholas Feinberg | 2022-07-08 11:19:01 -0700 Fix: Allow zapping /roots through ancestors (acrobat) -------------------------------------------------------------------------------- c37b1572da | patrick | 2022-07-07 20:37:50 -0400 Remove scythes from ghost vaults with Xom altars (ebird) Looks like the removal of scythes missed one. Rather than replacing them with reskinned halberds, just remove them from the list. -------------------------------------------------------------------------------- a620ab95ad | Kate | 2022-07-07 18:56:23 +0100 Fix the mountain boots showing messages on all beams (#2599) Closes #2599. -------------------------------------------------------------------------------- 66395355a5 | Nicholas Feinberg | 2022-07-06 16:45:08 -0700 Hackily 'fix' a vp webtiles mut menu bug (rhaal) -------------------------------------------------------------------------------- 1caec59328 | Nicholas Feinberg | 2022-07-06 16:41:20 -0700 Don't randomize displayed aux damage (acrobat) Display the max damage for all auxes, including demonic touch. -------------------------------------------------------------------------------- 94b489e0ae | Nicholas Feinberg | 2022-07-05 07:54:28 -0700 Simplify hex miscasts (acrobat) Hasting foes is a little too vicious, and also adds extra complexity in terms of preventing the player from instantly excommunicating themself by using Spellbinder with Cheibriados. -------------------------------------------------------------------------------- 2d5a0d7a41 | Nicholas Feinberg | 2022-07-05 07:39:38 -0700 Don't call bad miscasts 'potentially lethal' (riverfiend) That's not limited to top-tier miscasts (the severity is based on your MHP, not current HP, so lower colored miscasts can also be lethal), and it's not accurate for eg hex miscasts (which can't directly damage you). -------------------------------------------------------------------------------- 9904bce7a6 | Nicholas Feinberg | 2022-07-04 22:50:25 -0700 Replace hex miscast effect (riverfiend) Wiping player effects didn't make much sense for modern hexes (since the school has fairly few durations that would be affected by cancellation), and was quite abusable. Replace it by hasting nearby enemies. -------------------------------------------------------------------------------- 82769f0e0c | Nicholas Feinberg | 2022-07-04 14:03:47 -0700 New lochaber axe tile (Sastreii) -------------------------------------------------------------------------------- 41c3e4b865 | Edgar A. Bering IV | 2022-07-04 10:42:22 -0500 docs: update CREDITS.txt -------------------------------------------------------------------------------- 0d988dd55d | advil | 2022-07-04 10:44:28 -0400 fix: remove a double exponentiation in a lua call Seems to be just a misunderstanding in how bitfield iteration works. I have also added a compile check for this bitfield's range value, which had gotten out of sync. -------------------------------------------------------------------------------- 4a14ea37d6 | Nicholas Feinberg | 2022-07-03 22:22:39 -0700 No attacks of opportunity for constricted foes (acrobat) Since they can't follow. -------------------------------------------------------------------------------- 49d5403b4a | advil | 2022-07-03 22:16:27 -0400 fix: add a missing nullptr check in a lua call -------------------------------------------------------------------------------- 8c06add4a9 | Nicholas Feinberg | 2022-07-03 18:30:04 -0700 Don't stop /roots tracers at invisible foes (dilly) Oops! -------------------------------------------------------------------------------- 3812dd5c9c | hellmonk3 | 2022-07-03 14:34:17 -0500 feat: silent ossuary map All but the outer edge of the map is silenced. Typical ossuary monster set. -------------------------------------------------------------------------------- df645b4c5c | Rytis Petronis | 2022-07-03 14:21:06 -0500 feat: option for adjusting explore_greedy non-autopickup item visits explore_greedy_visit is added as an rc file option to adjust explore_greedy behavior. By default greedy explore travels to piles of items on each square in addition to items that are eligible for autopickup. This setting allows to also/only go to enchanted items or artefacts instead by providing a list option explore_greedy_visit, supporting - stacks: makes explore_greedy visit stacks even if they don't necessarily have target auto pickup items - glowing_items: makes explore_greedy visit glowing_items, even if not in a stack - artefacts: makes explore_greedy visit artefacts, even if not in a stack The default is updated to `explore_greedy_visit = glowing_items,artefacts`, as stack-visiting is a behavior more for console UI smoothness and accessibility than any gameplay reasons; visiting glowing_items and artefacts should allow the default player to loot efficiently (finding goodies). -------------------------------------------------------------------------------- a2102b4d9d | patrick | 2022-07-03 12:50:04 -0400 Add a randbook.txt entry (hellmonk) -------------------------------------------------------------------------------- 426022cc84 | patrick | 2022-07-03 12:20:13 -0400 Add some more options to randbook.txt Add some more options for naming random-generated spellbooks. I kept all of the existing options, except for (most of) the nouns and adjectives for Air Magic that were about flight, since that spell is no longer part of the school. -------------------------------------------------------------------------------- eadc89832f | damerell | 2022-07-03 10:22:26 -0500 fix: correctly produce strings of the form "one hundred and one" In Australian English there is an "and" after "hundred" in numbers of this kind. (Source: I asked all the Aussies I know.) -------------------------------------------------------------------------------- 5b9a7de867 | patrick | 2022-07-03 09:43:12 -0500 vaults: add several new temples, add section for tiny temples Adds several new temples, including several variable-size temples, an edit of my old great_sept temple so it has a chance to place 7 altars again, a temple where demons yell at you, and a temple featuring Lugonu's victory over the temple gods. [ Committer's note: removed a use of permarock, tweaked some colours. ] -------------------------------------------------------------------------------- b127be5c9c | Kate | 2022-07-03 15:12:42 +0100 Cancel constriction enchantments on Duel (acrobat) The actual constriction damage/effect was already cancelled by the duel, but the roots/zombie hands enchantments weren't ended so were still displaying visually on monsters. -------------------------------------------------------------------------------- d130422d61 | Nicholas Feinberg | 2022-07-03 07:00:03 -0700 Fix a refactoring oversight (Aliscans) -------------------------------------------------------------------------------- 34511f41fd | Nicholas Feinberg | 2022-07-02 20:58:20 -0700 Remove the prompt for firing at unhittable enemies This drives me absolutely nuts, and has for years. There's no point in this prompt! Just don't fire. -------------------------------------------------------------------------------- 13870d9ccb | Nicholas Feinberg | 2022-07-02 20:42:21 -0700 Don't allow distortion blinking during aoops This has a reasonable chance of crashing the game, I think. It certainly spooks me out. -------------------------------------------------------------------------------- 163208c30e | Nicholas Feinberg | 2022-07-02 20:40:45 -0700 Rename Necrotize -> Necrotise (|amethyst) Follow Australian English. -------------------------------------------------------------------------------- d32efaa14b | Nicholas Feinberg | 2022-07-02 20:34:07 -0700 Rename: bouda -> gnoll bouda To clarify to players what species it is, since that's relevant to its function and otherwise not obvious from the name. -------------------------------------------------------------------------------- 471e52b980 | Nicholas Feinberg | 2022-07-02 20:25:33 -0700 Allow friendly torpor snails to slow foes Way back in 2014, when I first added torpor snails, I prevented friendly torpor snails from slowing enemies. In 18cebf10d87e656198, I wrote: Disables the aura entirely, since it'd be hilariously abusable otherwise. (As long as the Enslave spell remains in the game...) Enslave has been gone for a long time, as is Shadow Creatures, and /charm charges are quite limited. Let's simplify, and let players have fun. Also double torpor snail Will (40 -> 80), just to make sure there's not *too* much fun being had. -------------------------------------------------------------------------------- 8cd43ee5b5 | Nicholas Feinberg | 2022-07-02 20:20:47 -0700 New statuesque beauties (Sastreii) New statue form tiles for all species. -------------------------------------------------------------------------------- 7df905bfc2 | Nicholas Feinberg | 2022-07-02 20:15:28 -0700 Re-add ranged to-hit % display -------------------------------------------------------------------------------- 4cfcd3498a | Nicholas Feinberg | 2022-07-02 20:12:14 -0700 Unify melee & ranged combat noise For consistency, make both melee & ranged attacks make noise proportionate to the damage done at the defender's location. -------------------------------------------------------------------------------- 1c776c33a3 | Nicholas Feinberg | 2022-07-02 19:56:25 -0700 Remove unused should_alert_defender var Unused since the removal of darts of sleeping (9adfa933843a, 2019). -------------------------------------------------------------------------------- 800ede72b0 | Nicholas Feinberg | 2022-07-02 13:03:44 -0700 Simplify ranged weapon noise There's no particular need for different ranged weapons to make different amounts of noise. -------------------------------------------------------------------------------- 90d98aa4a7 | Nicholas Feinberg | 2022-07-02 12:57:55 -0700 Readjust Spriggan ranged apt (acrobat) Going from +2 slings to +2 ranged weapons was expected to be a buff, but in practice it was a bit much. Spriggans are already quite good at ranged weapons without a positive aptitude, by virtue of their high dexterity and fast movement speed - let's move them down to +0 for now. -------------------------------------------------------------------------------- a0f254aafb | Nicholas Feinberg | 2022-07-02 12:57:35 -0700 Don't let roots go through enemies and walls Oops! -------------------------------------------------------------------------------- 14d1036c72 | Nicholas Feinberg | 2022-07-02 12:57:35 -0700 Make monsters not zap roots at constricted players Waste of charges. -------------------------------------------------------------------------------- 7a8fcbc185 | Neil Moore | 2022-07-02 01:26:09 -0400 Add a quote for shambling mangroves, thanks to Prof Neil Peart. -------------------------------------------------------------------------------- 40bbea3e73 | Nicholas Feinberg | 2022-07-01 19:36:50 -0700 Clarify fencer's gloves' effect (4L2A) -------------------------------------------------------------------------------- 9e05a5b3ab | Nicholas Feinberg | 2022-07-01 19:36:50 -0700 Fix a roots vs player crash (HendSelp) -------------------------------------------------------------------------------- 37b1a91500 | gammafunk | 2022-07-01 17:53:59 -0500 fix: Update a clua monster info function When the `holiness()` monster info method is called with no arguments, it's supposed return the holiness as a string, but the implementation was incorrect, so fix this. -------------------------------------------------------------------------------- e5ab06ae1c | Nicholas Feinberg | 2022-07-01 15:10:04 -0700 Set up wand of roots damage For players, the goal is for the base damage to be about 1/3rd of an iceblast use - 2d4 at 0 evo (compared to iceblast's 3d7) and 2d14 at 27 evo (compared to iceblast's 3d27). Roots does multiple turns of damage (increasing over time) & also has bonus utility (doesn't hit allies, doesn't check rC, wastes monster turns), so this seems reasonable as a starting point. For monsters, this matches Jorgrun's Grasping Roots spell. Ijyb will deal about 2d4 with it (I believe!), and other monsters will scale. -------------------------------------------------------------------------------- 5507e99a2f | Nicholas Feinberg | 2022-07-01 15:10:04 -0700 Refactor constriction Try to more clearly split up different ways to be constricted. -------------------------------------------------------------------------------- a4b73df947 | Nicholas Feinberg | 2022-07-01 15:10:04 -0700 Alternate wand of roots with wand of iceblast -------------------------------------------------------------------------------- ddcf899e2d | Nicholas Feinberg | 2022-07-01 15:10:04 -0700 New item: wand of roots Continuing the theme of alt items, wands of roots are a new item that will alternate with /iceblast. They fire a 3x3 (fireball-sized) effect which constricts its victims (ala BVC), with a duration that scales with wand power. -------------------------------------------------------------------------------- b44b3c5ca4 | Nicholas Feinberg | 2022-07-01 15:10:04 -0700 Refactor Grasping Roots -------------------------------------------------------------------------------- 652cadfb38 | Aliscans | 2022-07-01 15:31:57 -0500 feat: only list gods you can ever worship in the dungeon overview & dump Different gods forbid worship from different species. This change gives a way for the player to check which gods are available, and hides irrelevant information about whether an unusable altar has been found. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 7e300f6e71 | Perry Fraser | 2022-07-01 15:25:30 -0500 refactor: wearing/removing armour This refactors a good bit of the logic for taking off armour, as well as a few other things in the inventory wear/unwear section. I also removed a few TODOs, clarified the semantics of the return values of the wear/unwear armour functions (they are not used anywhere anyway [ Committer's note: they are used in clua to indicate success, but the inverted return values changed by this commit were not correct ]), and added a few doc comments for some of the less intuitive functions. [ Committer's note: Closes #2340. Rebased and fixed up, restored overzealously removed inscription checking prompts. ] -------------------------------------------------------------------------------- 8ec7be85a6 | Perry Fraser | 2022-07-01 14:45:37 -0500 fix: prompt once on tiles for wearing risky items On Tiles, you would be prompted twice if you wanted to wear an item that was potentially dangerous (e.g., {Contam}). This removes the redundant check_warning_inscriptions that were happening when handling these clicks. -------------------------------------------------------------------------------- 24d99152b8 | Edgar A. Bering IV | 2022-07-01 11:31:03 -0500 feat: warn when an orb of energy backfire was guaranteed (Cebolla) Closes #2449 -------------------------------------------------------------------------------- bb76e39405 | Edgar A. Bering IV | 2022-07-01 09:22:23 -0500 fix: don't print wereblood messages silenced -------------------------------------------------------------------------------- 4d7333d4e2 | ruxi | 2022-06-30 22:35:56 -0500 feat: describe storm form's insubstantialness Closes #2509 -------------------------------------------------------------------------------- 250d9ad825 | RojjaCebolla | 2022-06-30 22:12:23 -0500 feat: set hp_colour to higher defaults This might subtly hint to newer players that things have gone awry sooner. -------------------------------------------------------------------------------- 7e9ac4eb86 | Reono | 2022-06-30 22:03:45 -0500 vaults: new vaults by reono Closes #2516 -------------------------------------------------------------------------------- a24da20820 | Nicholas Feinberg | 2022-06-30 15:08:20 -0700 Break out extra throwing base damage separately Try to make throwing damage rates clearer. -------------------------------------------------------------------------------- 4d60fd9eac | Nicholas Feinberg | 2022-06-30 15:08:20 -0700 Unhide Damnation's damage rating (CarefulOdds) I'd forgotten that Damnation did normal arbalest damage in addition to the Damnation burst. -------------------------------------------------------------------------------- 2e8140cf71 | Kate | 2022-06-30 22:47:27 +0100 Fix spelling -------------------------------------------------------------------------------- 18b9c4ed99 | Kate | 2022-06-30 22:47:27 +0100 Interrupt delays on paralysis/petrification/sleep Sleep already interrupted some delays, but not all. Make all three of paralysis, petrification and sleep consistently interrupt delays, including stair travel, and don't allow resuming delays such as equipping/unequipping armour when interrupted by one of these effects. -------------------------------------------------------------------------------- e8933c00c5 | Kate | 2022-06-30 22:47:27 +0100 Update Spriggan's Knife description -------------------------------------------------------------------------------- 967b614d45 | Kate | 2022-06-30 22:47:27 +0100 Remove some unused stab messaging These stab messages haven't been able to be used since 9c76b8a688. The stab strengths here should probably also be enum-ified instead of being magic numbers. -------------------------------------------------------------------------------- a993524b14 | Kate | 2022-06-30 22:47:27 +0100 Fix tag_upgrade compilation Remove HINT_SEEN_RANDART yet again, and remove an unused function. -------------------------------------------------------------------------------- dd995151d0 | Nicholas Feinberg | 2022-06-30 14:21:14 -0700 Fix minor hints mode issues -------------------------------------------------------------------------------- 1c741a5a2c | Brian Power | 2022-06-30 16:05:59 -0500 refactor: externalise hints text Move hints text to the database, with some lua support. Closes #2271 -------------------------------------------------------------------------------- e2a13e336d | U-DESKTOP-2MKRQ21\rosst | 2022-06-30 13:51:37 -0500 text: speech, death, and banishment lines for some uniques Erolcha gets a banishment line, as a notable early banisher. Louise gets a banishment line, for the Lore. New speech lines for Grum, Kirke, Lodul, Margery, Sojobo and Snorg. Polyphemus gets a rare death message, also for the Lore. [ Closes #2481 ] -------------------------------------------------------------------------------- 3f25a06b81 | Edgar A. Bering IV | 2022-06-30 11:41:19 -0500 feat: make monster airstrike damage match player's, display -------------------------------------------------------------------------------- 4c3e83d15c | hellmonk | 2022-06-30 11:19:58 -0500 feat: Display airstrike and discharge damage -------------------------------------------------------------------------------- d72e128878 | hellmonk | 2022-06-30 11:19:36 -0500 feat: Rework the static discharge formulas Primarily so that damage can be displayed in future. Don't rely on division by power to recur, just caclulate the number of arcs to do upfront and do them at full power. Additionally, random round all of the formulas to avoid messy power breakpoints. New numbers give mostly similar damage at low power, I think. At high power with a lot of targets things can get a bit wilder. If it's a problem, can cap power at 50 instead of 100. -------------------------------------------------------------------------------- b575a813fa | Edgar A. Bering IV | 2022-06-30 10:39:00 -0500 feat: rework and rename gnoll shaman -> bouda (nikheizen) Gnoll shamans are somewhat lackluster as an enemy. They fit the "support priest" archetype pretty well, but unfortunately this not as effective early on as its Deep Troll counterpart in Depths/Vaults. Early game has shorter fights and monsters have to get to business more quickly as every turn matters. This commit reworks them into "Bouda," and also creates a monster type who can more easily bridge the gap between early dungeon Orc Wizards and the more powerful spellcasters who can show up later on. This is accomplished by giving them support spells that work more rapidly: a new "Hunting Call" is like battlecry, but applies swiftness in favor of might (helping a gnoll pack swarm better without being too strong of a buff early), and Weakening Gaze, fitting the Evil Eye flavour. As an instant gaze attack, Weakening Gaze does a better job of debuffing the player in a noticable way than Corona, particularly in the quicker fights of the early game. Bouda are characters from Northeast African folklore who are shapeshifters that turn into jackals. They have the power of the Evil Eye which curses others with spectacular misfortune. The term is historically one of exclusion-othering someone by calling them Bouda is analogous to the European tradition of naming folks as witches. In crawl they have all the malevolent energy of their mythological basis, but here it is directed towards the player-the dungeon's one true outgroup. Closes #1969. Based on that PR -------------------------------------------------------------------------------- 477250c084 | advil | 2022-06-30 09:13:41 -0400 fix: improve wording in weapon descriptions I just wanted to fix this wording, but I found a whole bunch of other issues here that could be better and I don't have time to fix right now. (Most misleading is that this item desc code ignores shield delay.) -------------------------------------------------------------------------------- 358383bc75 | amcnicky | 2022-06-29 22:27:01 -0500 tiles: hood of the Assassin hood of the Assassin - made sharper, more like a hood, and shifted colour palette towards red. Finishes half of #1387 Closes #1569 -------------------------------------------------------------------------------- 20e0cd1ebb | RojjaCebolla | 2022-06-29 18:06:32 -0500 vaults: a few maps featuring starflowers An abyssal rune vault and four exit vaults. [ Committer's note: Closes #2466. Squashed and rebased. Tweaked monster stats a bit more. Adjusted harpoon shot AI logic. Updated the rune vault for runelight usage. ] -------------------------------------------------------------------------------- 122d04a4e0 | RojjaCebolla | 2022-06-29 18:06:32 -0500 feat: new monser "Starflower", an abyssal oklob A stationary plant/tentacle hybrid monster with harpoon shot, reach 3 distortion melee, reach 2 melee, and an additional melee attack. Meant as a vault-placed monster for abyssal vaults, guarding an exit or a rune or what have you, as a threat that's dangerous to be close to, but can be neutralized if the harpoon shot can be blocked or avoided somehow. -------------------------------------------------------------------------------- a47bfe3f80 | Edgar A. Bering IV | 2022-06-29 17:32:43 -0500 feat: don't fire harpoon shots if a melee attack is possible Affects Harold, who now won't try to pull you back unless you're out of pole arm range. Also affects the monster added in the next commit. -------------------------------------------------------------------------------- b7bb9d756e | patrick | 2022-06-29 16:31:50 -0500 vaults: some abstract decor vaults to float.des Some more abstract vaults based on geometric designs, except these ones are big so they go in float.des. [ Closes #2559 ] -------------------------------------------------------------------------------- ff91a8ed75 | patrick | 2022-06-29 16:31:50 -0500 vaults: two new theme shops Features a shop that sells big spellbooks and one which is much smaller and sillier. -------------------------------------------------------------------------------- 26dd769911 | patrick | 2022-06-29 16:31:50 -0500 vaults: a simple generic overflow altar Just a simple altar. Some water, some lava, some altars. -------------------------------------------------------------------------------- 8e6dc78163 | patrick | 2022-06-29 16:31:50 -0500 vaults: various designs for mini_features.des Add some decor vaults based on geometric patterns and designs. -------------------------------------------------------------------------------- 0912897232 | Edgar A. Bering IV | 2022-06-29 15:48:11 -0500 fix: remove a debug weight (hellmonk) -------------------------------------------------------------------------------- 184eed5aab | Edgar A. Bering IV | 2022-06-29 15:36:47 -0500 feat: rare low-altar count temples The (higher-weight) cousins of the Temple with every god. One is a small, colourful, crystalline grotto with exactly one altar. The other is an abandoned empty temple with no altars at all! -------------------------------------------------------------------------------- 1659c76842 | Edgar A. Bering IV | 2022-06-29 14:07:19 -0500 feat: enable small Temples With the addition of small Temple maps, lower the minimum Temple size to 6. The distribution used has a picewise linear probability density function, starting with a 2.5% chance of a temple of size 6, rising to its maximum at size 13.5, (roughly 10% each for sizes 13 and 14) and then decreasing to a 2.5% chance of a temple of size 21. This is a bit more verbose than using 6 + random2avg(16,2), but the latter makes the extremes too small. A distribution that falls off harder in the direction of larger temples might be interesting but it's a somewhat tricky balancing act. -------------------------------------------------------------------------------- 1f4f75ee32 | Edgar A. Bering IV | 2022-06-29 14:05:40 -0500 feat: add random2min and random2max For when distributions with various polynomial pdfs are desired. -------------------------------------------------------------------------------- d6dbc1d939 | hellmonk3 | 2022-06-29 12:07:58 -0500 feat: nine new temples - hellmonk_temple_micro_hex 6-8-10 altars -hellmonk_temple_forest_ring 8-9-12-13 altars - hellmonk_temple_of_storms 7, 8, 11, 15, or 19 altars. - hellmonk_temple_divided_pantheon Places any odd number of altars from 7 to 19. - hellmonk_choose_your_character Rare temple with every god. - hellmonk_temple_rainy 6, 8, 9, or 10 gods. - hellmonk_temple_flakie 6, 8, 10, or 12 gods. - hellmonk_temple_beads 6-10 gods. - hellmonk_temple_two_chambers 6-8, 12, or 15 gods. Co-authored-by: hellmonk Co-authored-by: Edgar A. Bering IV -------------------------------------------------------------------------------- 221c65d467 | Perry Fraser | 2022-06-29 11:02:28 -0500 fix: correct desc. grammar for CANT_SEE_YOU status -------------------------------------------------------------------------------- da9226009b | Alex Jurkiewicz | 2022-06-29 10:39:55 -0500 refactor: tag out some Pakellas-specific code Closes #2475 -------------------------------------------------------------------------------- fe44c63f7f | Alex Jurkiewicz | 2022-06-29 10:36:26 -0500 refactor: simplify player mp/hp-on-kill implementation Split a large conditional into smaller blocks for clarity. Also, further isolate Pakellas logic so it can be more easily removed when TAG_MAJOR_VERSION increases to 35. [ Closes #2475 ] -------------------------------------------------------------------------------- e5bf7c5c39 | RojjaCebolla | 2022-06-29 10:16:37 -0500 feat: reduce the +stab effect on Spriggan's Knife by 50% Most monsters die in a single hit from the Spriggan's Knife; those that survive take massive damage and can be quickly dispatched with a couple more stabs. Stabs that result from netted/webbed/petrifying/invisible/confused often leave the target open for further stabbing, as the condition still applies. This is especially overpowered with irresistible status effects such as that from Line Pass. To make this less of a guaranteed instakill, add a coinflip(). It may take a few tries before the target dies. -------------------------------------------------------------------------------- 7d34257905 | 4Hooves2Appendages | 2022-06-29 09:59:06 -0500 text: quotes for charm and Mephetic cloud Plus some quotation mark fixes. -------------------------------------------------------------------------------- 85b6c24e30 | spicyCebolla | 2022-06-29 09:49:01 -0500 vaults: arrival vaults by SpicyCebolla - spicycebolla_arrival_risky_transporter This teaches that using a transporter can be risky: the 'porter takes you from pretty safe terrain to a wide open space. [ Committer's note: simplified the substitutions, cleaned up, added sightlines. ] - spicycebolla_arrival_clurvy a few simple 20% chances of theme variations, giving different iterations on a forgotten stand of trees (possibly long forgotten) [ Committer's note: adjusted tree colouration, prevented a small chance of a teleport closet ] - spicycebolla_green_bress_n_ham - spicycebolla_green_bress_n_ham_2 Simple arrivals. - spicycebolla_arrival_ecumenical Places a faded altar with stairs (or a very lucky teleport) required to reach it. [ Committer's note: This slightly increases the 87.5% chance of a D:1-3 faded altar, but not so much that it matters. Closes #2492 ] -------------------------------------------------------------------------------- 91da1267ba | spicyCebolla | 2022-06-29 09:08:56 -0500 fix: entry vault missing some blood relevant to #704 -------------------------------------------------------------------------------- cd6ae0ea07 | Edgar A. Bering IV | 2022-06-29 08:43:01 -0500 fix: scary damage fraction at tier 2 (Sentei) -------------------------------------------------------------------------------- 9e4779279f | Edgar A. Bering IV | 2022-06-29 07:39:57 -0500 vaults: tweak two arrival vaults -------------------------------------------------------------------------------- dc9d147ae0 | Edgar A. Bering IV | 2022-06-29 07:33:42 -0500 text: sling changes in zh/items.txt -------------------------------------------------------------------------------- 8f12646833 | Edgar A. Bering IV | 2022-06-29 07:32:55 -0500 lint: checkwhite -------------------------------------------------------------------------------- 4208692735 | 张凯 | 2022-06-29 07:24:08 -0500 text: update zh/items.txt Updated translations. -------------------------------------------------------------------------------- 3d7fbe0af2 | nicolae-carpathia | 2022-06-28 23:44:41 -0500 vaults: add several small vaults containing transporters to mini_features.des Add several small vaults which use transporters in ways besides just setting off an optional murder zone. Some, with "diode" in their names, allow the player to only move in one direction down one or more hallways. The others just make weird intersections. -------------------------------------------------------------------------------- a39a8af6d9 | Nicholas Feinberg | 2022-06-28 21:39:11 -0700 Adjust arbalest and hand crossbow (acrobat) Make arbalest a bit weaker earlier on, and make hand crossbow more competitive as a 'high-tier' one-hander. See this graphic: https://media.discordapp.net/attachments/205316046230388737/991216806184366130/r ange.PNG -------------------------------------------------------------------------------- 5686a2c4f1 | Edgar A. Bering IV | 2022-06-28 22:19:44 -0500 text: some quotes citation editing -------------------------------------------------------------------------------- 836e7b5932 | Edgar A. Bering IV | 2022-06-28 21:42:35 -0500 text: a new Orb adjective and welcome message (Rosstin) Closes #2485 -------------------------------------------------------------------------------- 6bb282b620 | Nicholas Feinberg | 2022-06-28 12:33:36 -0700 Simplify jewellery price code Make stat ring prices match AC/EV ring prices - they don't seem substantially better or worse. -------------------------------------------------------------------------------- 89c9ce7d72 | Nicholas Feinberg | 2022-06-28 12:32:14 -0700 Remove an unused var -------------------------------------------------------------------------------- 50f2ce223d | Nicholas Feinberg | 2022-06-28 12:00:49 -0700 Don't let large players flounder in toxic bogs The DNGN_SHALLOW_WATER check here was redundant, and only affected bogs. -------------------------------------------------------------------------------- a706738f4e | advil | 2022-06-28 12:37:20 -0400 fix: update some throw/launch code These are a couple of places that relied on get_item() being always ammo, from the original newquiver implementation. This was still approximately true for throwing/launching, until ce39da1c22d. However, ce39da1c22d is supposed to be the correct way to set a tile, etc. This commit makes ce39da1c22d work correctly, so I have reverted 0fc3c4380c. -------------------------------------------------------------------------------- 0fc3c4380c | Nicholas Feinberg | 2022-06-28 06:52:31 -0700 Revert "Fix quivered launcher tile" This reverts commit ce39da1c22d85fa8819e7db12783cbae1a8eb494. -------------------------------------------------------------------------------- ce39da1c22 | Nicholas Feinberg | 2022-06-27 22:27:28 -0700 Fix quivered launcher tile Farewell, mysterious ❌. -------------------------------------------------------------------------------- 64f5989226 | advil | 2022-06-27 10:27:08 -0700 fix: don't use levelgen checks for TRJ splitting (particleface) The TRJ splitting code doesn't use normal summon placement code (which would typically be `find_habitable_spot_near`), but rather repurposes some levelgen placement code, that has the right adjacenty check for TRJ. However, because this code is otherwise used only in levelgen, it enforced an `MMT_NO_MONS` mask check. A result is that if you can manage to fight TRJ in the loot vaults, it won't split. This commit simply conditionalizes the levelgen check, so that the placement-finding code can be used either way. On a quick glance, this should bring it in line with regular summon placement; there isn't an explicit los check but I expect that's approximated by the floodfill. -------------------------------------------------------------------------------- 7f417c9bbb | Nicholas Feinberg | 2022-06-26 18:22:17 -0700 Turn fustibaluses into hand crossbows Fixes a crash when trying to fire fustibali. Easier than retaining support for them. This will result in some funny randart names, since those will include the old name of the weapon. Not bothering with a minor tag. -------------------------------------------------------------------------------- ac13c76575 | gammafunk | 2022-06-26 18:29:46 -0500 feat: New runed door tiles from Sastreii The old tiles used a light blue color for the runes that didn't contrast well with the blues used for clear doors. This set of tiles uses an orange color for runes that has better contrast. -------------------------------------------------------------------------------- 0fec994a2d | advil | 2022-06-26 13:15:32 -0700 fix: remove an unnecessary `fixup_skills` call This fixup is uniformly called on characters after they've loaded at the end of _post_init, and it's much safer to call it after loading anyways. So, remove the early call for the ranged merger fixup -- the _post_init call does accomplishes the same thing. -------------------------------------------------------------------------------- 365da2f8ac | Nicholas Feinberg | 2022-06-26 12:32:08 -0700 Fixup a gnoll save compat crash? Boy, this code is scary. -------------------------------------------------------------------------------- 6dac4ea423 | Nicholas Feinberg | 2022-06-25 22:41:36 -0700 Don't give old gnolls huge Ranged Weapons skill (CarefulOdds) oops -------------------------------------------------------------------------------- f28ee254f9 | Kate | 2022-06-25 21:48:00 +0100 Scale potion of attraction effect with time taken Fixes fast actions resulting in monsters being pulled more effectively with a potion of attraction active. -------------------------------------------------------------------------------- 7753eeab26 | Kate | 2022-06-25 21:48:00 +0100 Compress some bad mutations to 2 levels As with the other similar chance-based bad mutations (shoutitis and deterioration, and now also -Scroll and -Potion), reduce teleportitis and berserkitis to 2 levels, with the first level being equivalent to somewhere between the old levels 1 and 2, and the second level equivalent to the old level 3. -------------------------------------------------------------------------------- 769091470e | Nicholas Feinberg | 2022-06-25 13:24:45 -0700 Save ranged quiver actions Closes #2506. -------------------------------------------------------------------------------- 55bc7a5df9 | Nicholas Feinberg | 2022-06-25 12:34:16 -0700 Nerf walking crystal tomes HD 20 -> 15, crystal spear damage 3d40 -> 3d34. XP unchanged. -------------------------------------------------------------------------------- 7b5732409f | Nicholas Feinberg | 2022-06-25 12:17:12 -0700 Remove fustibaluses Fustibaluses were originally created as an upgrade for players using the Slings weapon skill. Now that all ranged weapons use one skill, players can easily upgrade from slings into bows or crossbows. There's nothing particularly resonant about fustibaluses thematically, and they don't fill any gap in the loot game not filled by other items, so there's no need to keep 'em around. If we want more ranged weapon types, it'd make more sense to add more exciting weapon types like the cho-ko-nu, composite bow or woomera. -------------------------------------------------------------------------------- e572f60725 | Nicholas Feinberg | 2022-06-25 12:15:51 -0700 Readjust ranged weapons' stats and distribution Shortbows and slings are more common. Longbows are now rarer and more common later. Hand crossbows tend to show up in Vaults, as an eveningstar-ish upgraded one-hander. Arbalests are shifted around. Triple crossbows are unchanged. -------------------------------------------------------------------------------- ef730cc156 | Nicholas Feinberg | 2022-06-25 12:15:50 -0700 Don't give hand crossbows out to kobolds They're being positioned as a later-game weapon. -------------------------------------------------------------------------------- 941941d4ec | Nicholas Feinberg | 2022-06-25 12:15:50 -0700 Make Punk a custom weapon type In preparation for fustibalus removal. -------------------------------------------------------------------------------- 1416de1b61 | Nicholas Feinberg | 2022-06-25 12:11:09 -0700 Remove hunting from slings I renamed 'slings' to 'hunting slings' in b938532f5e to avoid confusion with the name of the skill. Now that Slings skill is no more, we can go back to the shorter and punchier name. -------------------------------------------------------------------------------- 33dec36d26 | Nicholas Feinberg | 2022-06-25 12:11:09 -0700 Tweak titles Most of the old Bows titles work fine for Ranged Weapons, but 'Archer' isn't quite right for many weapons. Trade it out for Fighting's 'Skirmisher' title, and replace that one with 'Trooper'. -------------------------------------------------------------------------------- 586177b653 | Nicholas Feinberg | 2022-06-25 12:11:09 -0700 Merge ranged skills (ebering) DCSS's ranged weapon types aren't very well differentiated. Slings, bows, and crossbow games all tend to play very similarly - much moreso than different magic schools, and still more than different melee weapon types, like polearms and axes. We've spent quite a long time trying to differentiate the ranged weapons further. The main differences at present are fairly arbitrary differences in stats - damage, accuracy, speed, brands, generation frequency, handedness... there's quite a lot of them, but they don't add up to much interesting. Historically, ammo frequency was another difference along those lines - it had more impact, but (by encouraging fiddly weapon swapping) that impact was mostly negative. There are also quite few ranged weapons per skill. We have about half a dozen weapons for each melee weapon type, but there are only two or three per ranged weapon skill. (And that's after the last rework that added three more!) So, let's merge em. As one consolidated type, Ranged Weapons will have a better chance at earning their place in Crawl. Very few species had different apts for different ranged weapon types. most of those have been given their best apt for the new skill, or something reasonably close to it. The skill screen has been reorganized, which will be quite disorienting for some, but I think it does a better job of showing that 'Throwing' is quite a different type of skill from the Ranged Weapon skill. Other names I considered for the skill: - Launchers/Launching (unpleasant) - Missiles (futuristic) - Bows & Slings (what about xbows?) - Slings & Arrows (cute, but likewise) Ranged Weapons has history - Throwing used to be called this, long, long ago - so that gets some bonus callback points. A subsequent commit will adjust weapon stats and frequency. -------------------------------------------------------------------------------- 7c5339f103 | Nicholas Feinberg | 2022-06-25 12:11:09 -0700 Remove weapon choice for Hu/AM In preparation for merging ranged weapon skills. -------------------------------------------------------------------------------- a8f87797a9 | Nicholas Feinberg | 2022-06-25 12:07:39 -0700 Unify Xom reach cleave with lochaber axe Simplify the code by making all polearms work the same way under Xom's Cleave status as the Lochaber Axe does normally. -------------------------------------------------------------------------------- bdae368155 | Nicholas Feinberg | 2022-06-25 11:53:34 -0700 Two cool new tiles (Sastreii) Slime simulacrae and lochaber axe. -------------------------------------------------------------------------------- 60cadc97f0 | Goratrix | 2022-06-25 07:43:47 -0700 Stat mutation description adjustment Add spaces between the stat names and the numbers (to be consistent with all the other similar mutation descriptions) and change Int/Str to Str/Int for consistency with the order of the stats in the ui and elsewhere. -------------------------------------------------------------------------------- 5b5c5c9dfb | Kate | 2022-06-25 11:40:13 +0100 Fix conflicting vault-defined monster and item renames Both using the "name:" tag caused them to be incorrectly parsed, breaking monster renames. -------------------------------------------------------------------------------- 2f1814c7b2 | Nicholas Feinberg | 2022-06-24 21:54:03 -0700 Checkwhite -------------------------------------------------------------------------------- 1248423c9f | Nicholas Feinberg | 2022-06-24 21:23:22 -0700 Unrig big pig dig (buh) Don't let formicids dig via the quiver in forms that meld mandibles. -------------------------------------------------------------------------------- 3f287b9546 | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Remove scythes Scythes, as it stands, are something of a gag weapon. Their stats are ludicrously terrible - there are very few cases in which it's right to use a scythe. Gags are great! But it's not great to pull jokes on newer players, and it's not good to discourage new players from using that cool looking weapon they just got from scary ol' Sigmund. We could add some funky gimmick to scythes, but honestly, the polearm weapon progression already works quite well. Instead, let's turn scythes into a purely cosmetic item - a reskin for halberds. Sigmund and reapers can still have their iconic weapon, and players can actually use 'em if they so please. Win-win! Unrand scythes remain unchanged. -------------------------------------------------------------------------------- f0ca2457bd | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Remove scythes from vaults In preparation for full removal. -------------------------------------------------------------------------------- ff0870d9f4 | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Base unrand scythes off halberds In preparation for scythe removal. -------------------------------------------------------------------------------- ec28fa79f6 | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Make reapers & Sigmund wield renamed halberds In preparation for scythe removal. -------------------------------------------------------------------------------- 3702571b76 | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Remove support for shared-description item renames Not currently needed and a bit of a pain to get working fully. -------------------------------------------------------------------------------- f0e39d631f | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Give Crazy Yiuf his hammers back Retheme the maces as hammers. A little theme goes a long way. I considered re-adding hammers in some of the other places they were formerly used, eg the 'hammer & chisel' vault in Orc, but didn't feel excited about it. They can be special for Yiuf. -------------------------------------------------------------------------------- e866d9a976 | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Make item tile: and wtile: support variants For e.g. enchanted/randart weapons/armour. (Only weapons currently support variants for held tiles.) -------------------------------------------------------------------------------- 99da04ecca | Nicholas Feinberg | 2022-06-24 21:06:43 -0700 Support vault-defined item names/descs Time to get up to some big time nonsense. -------------------------------------------------------------------------------- 32ab5fea29 | Kate | 2022-06-24 21:55:44 +0100 Fix a Zot clock crash (#2567) By removing bezotting level 4 - it was supposed to only be reached at Zot clock zero, but due to how AUTs were rounded to display as turns, it was possible to reach while less than a full turn (0-9 AUT) remained. As a Meteoran with a scarf of shadows equipped, this allowed the player to reach 0 LOS and crash. Closes #2567. -------------------------------------------------------------------------------- e598fa6640 | Kate | 2022-06-24 21:46:54 +0100 Add some Zot clock messages to default force_more The new messages for being drained at 0 Zot clock, specifically. -------------------------------------------------------------------------------- 7eeb665c8c | Kate | 2022-06-24 14:38:24 +0100 Fix spelling -------------------------------------------------------------------------------- 98ab2a97b9 | Nikolai Lavsky | 2022-06-24 16:12:42 +0300 fix: let pieces from Xom's chessboard affect frenzied monsters Continuing with the removal of restrictions on attacking frenzied monsters, let the pieces affect insane enemies. -------------------------------------------------------------------------------- c3b6d67b95 | Nikolai Lavsky | 2022-06-24 16:12:24 +0300 fix: further fix grammar for artefact bardings with Regen There are two different attunement messages for items with Regen. The first one is displayed when a character puts on such item while at full health. When an injured character puts on an item with Regen and then reaches full health, the second message is printed. The first attunement message was fixed in 68df51542, and this commit fixes the second one. -------------------------------------------------------------------------------- 5f5fd466e5 | Nikolai Lavsky | 2022-06-24 16:11:46 +0300 fix: remove a stray function declaration The corresponding function definition was removed in 7ca12cd9. -------------------------------------------------------------------------------- 7e06a55bdf | Nikolai Lavsky | 2022-06-24 16:11:46 +0300 fix: don't crash when &s-ing a useless skill Training an unusable skill, like a magic school on a Dj or Invocations on a Dg, via the &s command crashes the game. Training a sacrificed skill doesn't crash the game, but has no effect, so let's disable it as well. -------------------------------------------------------------------------------- e04d5b83ea | Nikolai Lavsky | 2022-06-24 16:11:46 +0300 feat: show current skill level in &s This commit reduces the need to use the `m` menu while experimenting with the skills in wiz-mode. Also, it fixes the messaging. For example, when Fighting is changed 10.5 -> 10, the message will be "Lowered Fighting to skill level 10.0." instead of "Reset Fighting to skill level 10.0." -------------------------------------------------------------------------------- ba467f2e49 | Edgar A. Bering IV | 2022-06-24 08:09:59 -0500 docs: update CREDITS.txt -------------------------------------------------------------------------------- 0d03ebdc04 | Rytis Petronis | 2022-06-24 08:07:08 -0500 feat: make -Scroll and -Potion regular 2-tier bad mutations Two tiers are added to both MUT_READ_SAFETY and MUT_DRINK_SAFETY mutations to make it more in line with the other bad mutations, and the latter is added to the general bad mutation pool. To make the 2 tiers work correctly the _is_damage_threatening function has an added variable to decide on the safety level with which to evaluate the threat. Ru's sacrifice now sets the mutation at tier 2, which is the same severity as before this commit. This commit also adjusts the weight of both mutations to 7 (average) from 10 (most common). [ Committer's note: Squashed, rebased, checked whitespace. Closes #2573 ] -------------------------------------------------------------------------------- b80629599b | 4Hooves2Appendages | 2022-06-24 07:21:45 -0500 feat: give arachnids 'skitter' shouts This commit creates two new shout types: 1) S_SKITTER, for medium and larger many-legged monsters, normal noise. 2) S_FAINT_SKITTER, for little and small many-legged monsters, quiet noise level. For a variety of arachnids and insects, replaces S_HISS with new shouts. [ Committer's note: Fixed whitespace, made faint skitters quiet, kept Pharaoh Ants as S_MOAN: it's louder so it helps bring more spiders for their gimmick. Closes #2575 ] -------------------------------------------------------------------------------- 626dbc2b52 | Edgar A. Bering IV | 2022-06-24 07:08:05 -0500 feat: restore the nearby altar for AK start flavour -------------------------------------------------------------------------------- b66ea993e3 | Spencer Baugh | 2022-06-24 15:03:44 +0300 feat: make AK start standing on exit It's basically a spoiler that an exit always generates near the AK starting spawn. If the player doesn't know that, they'll waste a fair bit of piety using Depart the Abyss. That could be fine, except that now that means their starting escape mechanism, Bend Space, will be offline for the first few levels of the Dungeon, defeating the purpose of bumping AK piety to make it available. We could make the exit just generate in LOS, but there's nothing really tactically interesting about walking a few squares and maybe getting very unlucky, so just have AK start out standing on the exit. -------------------------------------------------------------------------------- 5c1d49f3b4 | Edgar A. Bering IV | 2022-06-24 07:00:08 -0500 fix: take proper note of banishment depth (Goratrix) -------------------------------------------------------------------------------- a64570c9d2 | Nikolai Lavsky | 2022-06-24 04:47:12 +0300 fix: tweak teleportitis-related messaging and status display This commit fixes two issues with teleportitis messaging and status display: * although teleportitis is suppressed in the Abyss since db80c5092, the ``%`` screen shows ``Rnd*Tele`` there; * after 6b4f085fc, ``stairs.cc:_gauntlet_effect()`` doesn't print "You feel stable on this floor." for players with teleportitis, since ``player.cc:player_teleport()`` always returns ``0`` when the player is in the Gauntlet. Currently, ``spl-transloc.cc:_teleport_player()`` has code for preventing teleportitis while in the Abyss. Adding an extra check into ``player_teleport()`` allows aborting such teleports a couple function calls earlier, in ``player-reacts.cc:player_reacts()``. Also, let's give ``int player_teleport()`` a more descriptive name. -------------------------------------------------------------------------------- e176fc164b | Nikolai Lavsky | 2022-06-24 04:47:12 +0300 fix: mark teleportitis as suppressed in more cases Currently, the mutations screen displays this mutation as suppressed only when the player is in tree form. This commit marks the mutation as inactive when all teleports are forbidden or while the player is in the Abyss. -------------------------------------------------------------------------------- 5f01ad7185 | robertxgray | 2022-06-23 20:44:11 -0500 Quote for Gozag's altar Francisco de Quevedo, _Poderoso caballero es don Dinero_. 1603. -------------------------------------------------------------------------------- 85323850a6 | nlavsky | 2022-06-23 20:42:12 -0500 fix: apply item_slot when seeing monsters use unid'd scrolls or potions When a monster uses a scroll or potion, it identifies the consumable and applies autoinscriptions. But unlike other methods of item identification, it didn't change inventory letters according to the ``item_slot`` option. -------------------------------------------------------------------------------- 859816b266 | Nicholas Feinberg | 2022-06-23 17:24:58 -0700 Fix (?) throwing damage rates (Lici) This isn't a great display - it'd be really nice to clarify where the extra base damage is coming from. Oh well! -------------------------------------------------------------------------------- 87332871fa | Nicholas Feinberg | 2022-06-23 17:09:14 -0700 Don't crash when a dead monster cleaves E.g. if they're killed by minotaur retaliation midway through an axe swing. Broken in 437f8d1d3d7ac52eafa3a8e7bdbfce506b4eac7f. -------------------------------------------------------------------------------- 5ff2a30383 | Edgar A. Bering IV | 2022-06-23 06:59:30 -0500 fix: cap all beam wand charges for Wn start (acrobat) -------------------------------------------------------------------------------- c25378c239 | gammafunk | 2022-06-23 01:38:29 -0500 fix: Correct a mutation description (acrboat) For Sacrifice Experience, we now only lower XL by one each time, so reflect this on the mutation screen. Also mention this change in the changelog. -------------------------------------------------------------------------------- 12ee2bf84d | Nicholas Feinberg | 2022-06-22 21:37:15 -0700 Unbrace -------------------------------------------------------------------------------- 1aa759944b | Nicholas Feinberg | 2022-06-22 19:25:25 -0700 Allow banished monsters to appear after Abyss:1 (acrobat) Previously, there was an oversight (?) in which banished monsters would only ever appear on Abyss:1. Make them follow you through the whole Abyss instead. This is a little silly (are they taking the stairs down?!), but prevents you from losing the Royal Jelly on a lower Abyss level, for example. -------------------------------------------------------------------------------- 26d293caef | Nicholas Feinberg | 2022-06-22 11:50:49 -0700 Ramp up deep Abyss spawn rates Make many more monsters spawn on Abyss:6 and :7, and give em a chance to spawn near the player. (This is a hacky breakpoint.) -------------------------------------------------------------------------------- dd63cfa21d | Nicholas Feinberg | 2022-06-22 11:27:04 -0700 Add some truly stellar new tiles (Sastreii) New runelight tiles, to make it clearer when the player is near the abyssal rune (or perhaps other ones someday?) -------------------------------------------------------------------------------- ff9cad4a3d | gammafunk | 2022-06-21 23:37:40 -0500 fix: Place Grunn with his band (dilly) We need the "band" mon spec designator in the uniq_grunn vault, otherwise Grunn places without any rare puppers. -------------------------------------------------------------------------------- be5fe9cee2 | Nicholas Feinberg | 2022-06-21 18:09:47 -0700 New small abomination tiles (Sastreii) Eww, gross! These might not be small enough. We'll see. -------------------------------------------------------------------------------- 910882235c | Kate | 2022-06-21 23:37:41 +0100 Increase chances of a Jiyva altar at Slime entry Previously there were a small fixed number of Slime entry vaults that always placed a Jiyva altar, with their total weight resulting in roughly a 1/2 chance to see one in any given game. Instead let all Slime entries place Jiyva altars, with a 2/3 chance. -------------------------------------------------------------------------------- d0a8d1b88b | Kate | 2022-06-21 23:37:41 +0100 Rebrace -------------------------------------------------------------------------------- 25bf049393 | Kate | 2022-06-21 23:37:41 +0100 Don't let Irradiate affect conjured monsters (CarefulOdds) -------------------------------------------------------------------------------- 28b9d68c38 | wheals | 2022-06-22 00:36:07 +0300 fix: really don't generate rare temples outside the 1% chance -------------------------------------------------------------------------------- 94431d12f0 | Edgar A. Bering IV | 2022-06-21 22:38:04 +0300 feat: don't generate rare temples as a part of normal generation Only pick them for their tag. -------------------------------------------------------------------------------- 7553cd0caa | Edgar A. Bering IV | 2022-06-21 20:53:51 +0300 feat: select the size of the Temple in C++ Temple size has a major impact on god selection: a big Temple means getting your choice god-but it might take until D:7. A small temple scatters the gods over the overflow range. Both experiences are good for the game, but before this commit the chance of a given temple size was controlled by the sundry weights of the different temple maps. This control was brittle, and indeed b444dcf96dcc4 marked a big shift in the prevalence of larger temples (thanks to acrobat for pointing out how large this impact was), that was not intended. This commit changes temple selection to work as follows: First a 1% roll decides to select a rare temple. Current rare temples are the Lugonu, Jiyva, and Ignis temples. Rare temples are those that should create special moments outside of the usual temple system. Failing the 1% roll, the temple size is rolled. Currently this is 9 + random2avg(13,2), but this can be adjusted (and will be to accomodate some smaller temples coming in subsequent commits). -------------------------------------------------------------------------------- 1ace0e5f75 | patrick | 2022-06-21 12:23:09 -0400 Change mountain boots' name back to mountain boots Painting the bike shed one final time. This reverts the commit where I changed it. -------------------------------------------------------------------------------- 4e50b17284 | Edgar A. Bering IV | 2022-06-21 13:32:33 +0300 fix: a crash and a check -------------------------------------------------------------------------------- 1c8a42db57 | Edgar A. Bering IV | 2022-06-21 09:56:56 +0300 docs: changelog through 0.29-a0-653-gd47aff6735 -------------------------------------------------------------------------------- d47aff6735 | Nicholas Feinberg | 2022-06-20 22:32:40 -0700 Remove a probably unused function? As far as I can tell, the "item()" function is *only* used in Volcanoes, and it is *not* used in the slot-setting mode. Don't believe it was documented, either. If this breaks stuff, please revert this. -------------------------------------------------------------------------------- 45357cb20f | Nicholas Feinberg | 2022-06-20 22:25:19 -0700 Fix item exclusion for shops Shops with excluded items would hold an empty list (treated as 'any item') instead. -------------------------------------------------------------------------------- 437f8d1d3d | patrick | 2022-06-20 22:00:43 -0700 Add a new unrand: the lochaber axe Long long ago, bardiches used to be known as lochaber axes, until they were renamed in commit 8b14a9, on December 13, 2007, presumably so that players wouldn't think they were some kind of axe. The lochaber axe was gone... but not forgotten... It's back, reimplemented as an unrand, and this time, there's no problem if players think it's some kind of axe. Because it is. The lochaber axe has both reach and cleaving, and combines them both into a sort of "super-cleave", aka "reave", which attacks everybody in a radius of 2 with each swing. Additionally, due to its nature as a combination of polearm and axe, either skill can be used to wield it -- the higher of your Polearms or Axes skill will be used to determine its damage and delay. Currently, it's statted out as a +5 bardiche with -1 to base accuracy and +1 to base damage and base delay. Currently uses the old tile for lochaber axes, although it will probably need something more menacing before it's ready for prime-time. Much thanks to PleasingFungus for coding assistance, and gammafunk for discussions, the lochaber axe tile, and not immediately reverting this. -------------------------------------------------------------------------------- 8101c4d66a | patrick | 2022-06-20 22:36:36 -0400 Make some cosmetic changes to the mountain boots Now they're the boots of the Mountain, and their effect is renamed from the descriptive-but-not-super-flavorful "rDislodge" to the somewhat-more-flavorful "steadfast". Also the description of the effect is clarified somewhat more precisely. thank you for your time. love, nicolae -------------------------------------------------------------------------------- 45c230d69a | hellmonk3 | 2022-06-20 15:55:43 -0400 feat: New Orc ending (#2454) Salted Orc, if you will. -------------------------------------------------------------------------------- 6b26cc9f40 | advil | 2022-06-19 12:16:09 -0700 fix: generalize a bit of abyss rune code I think this change will also fix another case of odd messaging after getting the rune, on leaving the abyss. -------------------------------------------------------------------------------- b07f931dc7 | Nicholas Feinberg | 2022-06-19 11:41:38 -0700 Remove the old ct_skills array Unused since 7c1a5597fd584d (2014). -------------------------------------------------------------------------------- da25f7726e | Nicholas Feinberg | 2022-06-19 11:33:12 -0700 Fix a misleading rune message -------------------------------------------------------------------------------- e8efa2268b | Nicholas Feinberg | 2022-06-19 11:27:33 -0700 Don't show item hints for corpses in tiles It's a bit silly to tell people to mess around with a purely decorative object - quite confusing. -------------------------------------------------------------------------------- 0428525265 | Nicholas Feinberg | 2022-06-19 11:19:15 -0700 Grunn tile (Sastreii) Unique's is back baby. It's good again. Awoouu (wolf Howl) -------------------------------------------------------------------------------- a013cefcf8 | Nicholas Feinberg | 2022-06-18 22:38:41 -0700 Remove obsolete code for throwing hunters -------------------------------------------------------------------------------- 3454511d3d | neo-bop | 2022-06-19 08:35:50 +0300 docs: fixed grammar mistake -------------------------------------------------------------------------------- b59bef153c | Nicholas Feinberg | 2022-06-19 08:31:14 +0300 text: add Grunn dialogue Rough pass, a mix of Grum-isms plus some kvetching about being a lil bit dead. Also, in Hell. [ Closes #2459 ] -------------------------------------------------------------------------------- d0c25b80c2 | hellmonk | 2022-06-19 08:31:08 +0300 feat: Grunn the Punished Alt-timeline version of Grum who has a pack of doom hounds. Appears in Depths, Crypt, and Zot. -------------------------------------------------------------------------------- 29a8cdef9d | RojjaCebolla | 2022-06-19 08:19:07 +0300 fix: undefined local entry '_ashenzari_heavens_' It was only missing one % symbol. [ Closes #2431 ] -------------------------------------------------------------------------------- e81f215762 | RojjaCebolla | 2022-06-19 08:19:01 +0300 fix: no godspeak entry for 'Xom zero miscast effect' -------------------------------------------------------------------------------- ff17717bc1 | RojjaCebolla | 2022-06-19 08:18:51 +0300 text: remove quote db entries for deprecated items -------------------------------------------------------------------------------- de4a49754e | RojjaCebolla | 2022-06-19 08:18:46 +0300 text: add a description for the spriggan hatter -------------------------------------------------------------------------------- c2a2f2613b | Nicholas Feinberg | 2022-06-18 21:20:36 -0700 Don't cover the entire Abyss with exits ...once you get the rune. ??doh -------------------------------------------------------------------------------- 155753f734 | Nicholas Feinberg | 2022-06-18 21:20:21 -0700 Don't erode runelights They're important for finding runes! -------------------------------------------------------------------------------- 6e2bebc5d0 | Nicholas Feinberg | 2022-06-18 16:07:40 -0700 Make Abyss seven levels deep Attempt to make the Abyss sufficiently spooky to make 15-rune players worried about spending much time at the bottom. Megaziggers will probably have no issues, but that's fine. Might want to adjust spawn rates and/or spawn tables further - these are a big mess. -------------------------------------------------------------------------------- 781b4ac09e | Edgar A. Bering IV | 2022-06-19 00:34:14 +0300 feat: force a minimum entry depth on the Abyss In lieu of the previous anti-scumming mechanism, which threw the baby out with the bathwater and created an unpleasant experience with a lot of special cases, this introduces a minimum depth mechanic for the abyss. Upon entry from any source (distortion, banishment, exiting pandemonium through the abyss, entering an abyss portal) the player is sent to the highest depth so far achieved. In combination with the rune-guide improvements, a continued dearth of items, and the XL scaled depth-increasing-on-teleport mechanic, this should give a better experience to the recently punished mid-game banishment victim and the 3rd rune hunter, while still dissuading the scummer (who will rapidly find themselves on A:5) than the no-xp abyss did. If A:5 is not harsh enough to be a deterrant we can add greater depths as needed. -------------------------------------------------------------------------------- ae2251da70 | advil | 2022-06-19 00:34:14 +0300 fix: messaging for leaving and missing the abyssal rune This prop needs to be reset so that the messaging when reentering the abyss is correct, and we might as well indicate that the player missed out. [ Closes #2572 ] -------------------------------------------------------------------------------- 8e0c6649c8 | advil | 2022-06-19 00:22:02 +0300 fix: rewrite abyssal rune detection The first pass implementation relied on being able to store rune memory purely in map_knowledge, and use this at various points in time to detect both rune generation and removal. The abyss code makes this impractical. The rewritten version stores rune memory in a player prop that gets synced with map_knowledge; this is much more robust in my testing. -------------------------------------------------------------------------------- d66da3e29f | advil | 2022-06-19 00:22:02 +0300 feat: abyssal rune detection In newabyss players want to get in and out of the abyss as quickly as possible, but there's a lot of variation in how quickly people find the run, and it can really drag on with no rewards if this doesn't happen quickly. When you're at a rune depth, there's not a lot you can do to find the rune beyond just wandering and/or looking for vaults via giveaway tiles (these could be removed if this current commit goes forward). This commit implements an idea where all players detect the presence and map location of the abyssal rune, and also detect if the map shifts and it vanishes. This gives players a much more concrete goal, as long as the rune has generated. I am still not entirely sure if this is a good idea, but in my testing it works way better than I expected. The rune typically generates pretty far from you and then you have a bit of a race towards it, both (a) simply navigating the abyss between you and it, and (b) figuring out how to even get into the vault. I'd theorycrafted this as making it too easy to find the rune, but I'm not sure it (typically) is at all. But, it probably needs more playtesting. Also, by the nature of abyss code, I am at best medium sure that I added this hook in all the places that it needs to be in. -------------------------------------------------------------------------------- ba36221789 | Edgar A. Bering IV | 2022-06-19 00:22:02 +0300 revert: unrewarding abyss This reverts most of the "no-XP" abyss changes, specifically: fcf54068 feat: prevent gaining experience in the Abyss d764ef0d feat: give an XP reward for the abyssal rune 010f2a22 feat: don't grant piety in the Abyss 0647d936 Refactor piety gain prevention in the Abyss 6c1bee59 feat: reduce wretched star malmutation rate 050a5067 fix: turn down wretched stars corrupting pulse a bit more The no XP abyss did stop abyss scumming, but at too great a cost. While some players enjoyed the stealth-emphasis-increase of the XP being concentrated in the rune, the overall result wasn't good. So this reverts the changes that revolve around XP, in preparation for the following commits. Not reverted are: - the changes to exit and stair spawn rates. These remain increased, in anticipation of the subsequent anti-scum mechanic making them desireable. - the removal of items outside of vaults. Items still have the potential to be a grind-trap (more a trap than "optimal" scumming), but the abyss isn't supposed to be a place players want to linger so let's not give them too many reasons to stay beyond a rune. -------------------------------------------------------------------------------- 39ea5eca17 | Nicholas Feinberg | 2022-06-18 13:14:11 -0700 Despoiler the Abyss rune (mostly) Replace external uses of the secret 'abyss rune tile' with a new 'runelight' feature, which stops autoexplore and is explicitly described as indicating the presence of a nearby rune. Possible that some or all of the internal tiles in these vaults should also be replaced with runelights, for those with dungeon mapping mutations or similar. Art is placeholder. -------------------------------------------------------------------------------- 7f7ec87276 | Edgar A. Bering IV | 2022-06-18 22:48:14 +0300 text: clarify battlesphere's description -------------------------------------------------------------------------------- a996378906 | Edgar A. Bering IV | 2022-06-18 17:28:42 +0300 fix: idiomatic randomness (PleasingFungus) -------------------------------------------------------------------------------- 39d4558d33 | Edgar A. Bering IV | 2022-06-18 16:54:40 +0300 refactor: remove dead quantity code for launcher ammo -------------------------------------------------------------------------------- 14c03f4a0f | Edgar A. Bering IV | 2022-06-18 16:54:14 +0300 feat: reduce stone availability and make them always mulch Stones are very good on D:1-2, and while they quickly fall off remain useful for characters for a bit longer, or as a "poke the monster quietly before walking away to pull a small number of foes" tool. They're also all over the dungeon in massive numbers, and are re-usable to boot. Now that they're not used for Sandblast, their primary gameplay function is early game plinking. To make this plinking a bit more interesting this commit reduces the supply of stones in each pile, and makes stones always mulch when used. In the very early game this should put significant pressure on the use of stones in an interesting way, with them becoming plentiful closer to the time the player has better things to do than plink away. -------------------------------------------------------------------------------- 8217bd198b | Edgar A. Bering IV | 2022-06-18 16:29:11 +0300 feat: damage ratings for thrown items -------------------------------------------------------------------------------- e4689427c4 | Edgar A. Bering IV | 2022-06-18 09:48:43 +0300 fix: remove a stray random altar from overflow range -------------------------------------------------------------------------------- 13ace881f2 | patrick | 2022-06-17 11:09:41 -0400 Let randart bardings generate with rPois The code prevented randart bardings from generating with properties that were already innate to barding wearers. At the time, this was just nagas, and nagas already have rPois and SInv. Now palentongas can wear bardings, and they lack rPois, so now it makes sense for randart bardings to be able to generate with rPois. Since nagas and palentongas both have innate SInv, SInv is still excluded from the properties randart bardings can have. -------------------------------------------------------------------------------- d6e8e0e227 | Edgar A. Bering IV | 2022-06-17 16:15:19 +0300 feat: re-vitalize Vitality Regeneration and 15 hit points aren't much. Vitality has been on the "to redesign" list for a long time. Some of the possibilities discussed are very close to what ultimately became the dreamshard amulet. It was also suggested, and discarded, as a possible early-game unrand. Let's buff it out of this awkward place. The 15 hp are traded for two pips of MP regen and an additional hp regen pip. Lore has it the amulet kept Borgnjor alive in her final days before descending into undeath, so it's also now evil. -------------------------------------------------------------------------------- 2e310f0204 | Edgar A. Bering IV | 2022-06-17 14:12:33 +0300 text: remove a randart name with an unpleasant connotation -------------------------------------------------------------------------------- 7a6b98fccd | Nicholas Feinberg | 2022-06-16 20:16:32 -0700 Adjust Ru mutations (acrobat) After the change to make Sacrifice Experience properly affect your current XL in c127bba4f6dc8, Sacrifice Experience was comparatively underpriced. It had a considerably more negative effect on the player across the board than the Frailty sacrifice, but gave only 40 piety to Frailty's 45! Rather than set experience to its proper value, which would have to be very high (perhaps ~60 piety?), instead cut its effect in half and sacrifice one level per sacrifice. (This has the additional advantage of simplicity.) Then make the following adjustments: - Experience: 40 -> 35 piety - Frail: 45 -> 35 piety (compare Sacrifice Love at 40) - Weak-Willed: 38 -> 35 piety (for neatness) - Eye: 20 -> 25 piety (think this was undervalued) I don't think any of these will make a dramatic impact on the Ru experience, but they should make things very slightly tidier overall. -------------------------------------------------------------------------------- c53de2f800 | Nicholas Feinberg | 2022-06-16 19:43:03 -0700 Add a rock-solid new artefact tile (Sastreii) Mountain boots get their own tile. Bye (again), boots of the spider. Player doll doesn't match, but that's not a big deal. -------------------------------------------------------------------------------- deedd76f10 | Nicholas Feinberg | 2022-06-16 12:49:37 -0700 Fix ignis wrath + mountain boots (nicolae) -------------------------------------------------------------------------------- 2001307d0b | advil | 2022-06-16 09:27:48 -0400 fix: remove pakellas 's color -------------------------------------------------------------------------------- f2c431b9b9 | patrick | 2022-06-15 21:42:22 -0700 Add a new unrand, the +3 mountain boots {rDislodge, rC+} Gives dislodge resistance, keeping the player from being moved by external non-translocation sources. (Trampling, shafts, tentacles, etc.) Currently uses the tiles for the spider boots, which weren't being used anyway, but will probably need actual tiles at some point. -------------------------------------------------------------------------------- b8e136fc6a | Nicholas Feinberg | 2022-06-15 17:31:43 -0700 Double Airstrike's empty space bonus To encourage more tactical and positional thinking, make Airstrike somewhat better against enemies in open areas and worse against enemies not surrounded by open space. Sometimes it'll be the right spell to use, sometimes you'll want to reposition or use another tool from your toolbox. -------------------------------------------------------------------------------- 91acacb2e3 | gammafunk | 2022-06-15 18:07:51 -0500 fix: A teleport closet (riverfiend) In nicolae_swamp_secret_spriggan_hideout, a wall could sometimes place and seal off an area. -------------------------------------------------------------------------------- 99610632ab | Kate | 2022-06-15 23:50:13 +0100 Remove Kiku's undead duplication passive In practice, the changes to necromancy spells making them easier to make use of (in addition to them interacting more favourably with Unearth Wretches) make Kiku fairly strong already. Duplicating undead on top of that resulted in excessively huge hordes being a little too easy to create. This reverts commit 2fcf5398dde68d34f8f1d11118976734faf3d690. -------------------------------------------------------------------------------- b56f46d856 | advil | 2022-06-15 15:51:10 -0400 fix: attitude check for poisonous vapours disabling Previously this would appear to be enabled with susceptible allies in view. It was oddly hard to see what the exact right way to implement this is, but wont_attack is what some other spells in this code use, so it should do for now. -------------------------------------------------------------------------------- 5f3c444be0 | Edgar A. Bering IV | 2022-06-15 21:57:46 +0300 feat: make animated armour fly For consistency with dancing weapons and the notion of "spirit", as well as removing a gameplay synergy with Leda's, let's make these buddies fly about. -------------------------------------------------------------------------------- ed4851bcc5 | Nicholas Feinberg | 2022-06-15 10:21:38 -0700 Fix stat mut descs (Goratrix) -------------------------------------------------------------------------------- ddeeb70f77 | Nicholas Feinberg | 2022-06-15 09:39:44 -0700 Pull out zot.cc from timed-effects.cc More than enough stuff to deserve its own file. -------------------------------------------------------------------------------- 6a3c3ed53f | Nicholas Feinberg | 2022-06-15 09:28:23 -0700 Make positive stat muts more impactful (various) The "str +2" etc muts are reasonably helpful, but don't meaningfully impact playstyle or player decisions. Let's make them more impactful by making each one give +4 to the primary stat and -1 to the other stats, enough to shift the player towards that stat in a very serious way. Since each mut only has two levels, it seems like it'll be quite rare for those -1 stats to cause stat zeroes. Theming/naming could use another pass. -------------------------------------------------------------------------------- 3118c4fcd2 | Nicholas Feinberg | 2022-06-15 09:28:23 -0700 Apply monster wand damage nerfs more generally To somewhat reduce the classic "instantly melted by ijyb with a wand of acid" scenario, instead of special-casing Mindburst specifically, make all monsters do 2/3rds damage with all wands. This is a brutal nerf to /flame monsters. -------------------------------------------------------------------------------- f530d57ad0 | Nicholas Feinberg | 2022-06-15 09:28:23 -0700 Update fo mut desc For giant clubs. -------------------------------------------------------------------------------- b1b9a4145c | Nicholas Feinberg | 2022-06-15 09:28:23 -0700 Don't force /para in hellmonk_paralyzer -------------------------------------------------------------------------------- 800f0a2745 | Nicholas Feinberg | 2022-06-15 09:28:23 -0700 Remove Ar wand printing code No longer relevant, now that ar start wands aren't randomized with item sets. -------------------------------------------------------------------------------- c0164372c5 | Edgar A. Bering IV | 2022-06-15 19:26:28 +0300 feat: move timed hell effects to level arrival Timed hell effects were intended to punish lingering and encourage taking on the Hells "all in one go". The XP gated, but time-applied nature of them meant that even traversing a larg end level could be needlessly punishing. After several attempts at turning tuning knobs, they're still not in a great place, and push players to stair-dance, do a hell partially then go to Pan for a bit, etc. This commit moves the effects to apply on each level descent. Players doing the hells "all in one go" preferring to dive over fight won't get hit too badly, (just enough for some seasoning), but stair dancing to clear a tough encompass part way through will meet stiff penalty. Branch-wide conducts are unchanged. The numbers will probably need some further tuning to get them "just right" in the tension-versus-too-punishing department, but let's start with these. -------------------------------------------------------------------------------- 1680f32a72 | Nicholas Feinberg | 2022-06-15 07:07:10 -0700 Don't overexaggerate hand-pairs (wheals) Overcorrection. -------------------------------------------------------------------------------- d8304a5bf4 | Nicholas Feinberg | 2022-06-14 22:34:29 -0700 Let formicids wield giant clubs again Reverts 9a20582491d1. At the time, giant clubs were thought to be so strong that formcids would be unmotivated to use their shield gimmick. Today, that seems less likely. -------------------------------------------------------------------------------- 69c401ce25 | Nicholas Feinberg | 2022-06-14 20:18:34 -0700 Fix the build? -------------------------------------------------------------------------------- 57363d2029 | Nicholas Feinberg | 2022-06-14 19:27:36 -0700 Pull mindburst out of the hex set I've been persuaded for now that it's sufficiently distinct from para/charming. We might change this later. -------------------------------------------------------------------------------- 3bc56fe6af | Nicholas Feinberg | 2022-06-14 19:27:34 -0700 New wand tiles (Sastreii) -------------------------------------------------------------------------------- c4eff49456 | Nicholas Feinberg | 2022-06-14 19:27:34 -0700 Relax the no-excluded-items policy. To avoid startscumming, have artificer go back to always having a wand of charming, regardless of which hex wand will spawn for the rest of the game. Also let hellmonk's paralyzer always spawn a para wand, as a meme. -------------------------------------------------------------------------------- 5a9699462f | Nicholas Feinberg | 2022-06-14 19:27:32 -0700 New item: wand of quicksilver (ebering) An alternate for the wand of acid, wands of quicksilver shoot dispelling bolts. They do slightly more damage than /acid, with a perhaps slightly less broadly applicable affect. You can also zap yourself, if you like pain! (I'm hoping self-zapping isn't *too* strong. It doesn't help with contam, fwiw.) -------------------------------------------------------------------------------- 376ae5a38f | Nicholas Feinberg | 2022-06-14 19:27:31 -0700 Add 'any beam wand' shorthand -------------------------------------------------------------------------------- 4f8b61c030 | Nicholas Feinberg | 2022-06-14 19:27:31 -0700 Make wands of light alternate with acid wands Half of games will have one, half will have the other. -------------------------------------------------------------------------------- 48b2cc46b9 | Nicholas Feinberg | 2022-06-14 19:26:47 -0700 New item: wand of light Intended as an alternate for wands of acid, wands of light fire a beam that blinds targets for a duration dependent on HD. The beam checks AC and EV normally, but no resists. It's otherwise identical to acid. If it hits a player, it has a 1/3 chance of confusing them for 2-3 turns. (Since players can't be blinded.) The goal is that this has a broadly similar use case to acid (high damage beam that ignores most resists & applies a debilitating effect), but plays somewhat differently. It'll be more useful for stabbers, and somewhat helpful defensively (by reducing enemy accuracy instead of AC). I'm very undecided on the blinding effect duration. Buff wand of light -------------------------------------------------------------------------------- c28e0ee30e | Nicholas Feinberg | 2022-06-14 19:26:14 -0700 New feature: item sets One of the most exciting things is adding new features: items, monsters, etc. However, the problem with items is that each distinct item type fills up an inventory slot. This is both a UI burden and a decision-making issue: it's possible to give out too many options, leading to analysis paralysis or most players simply ignoring most of what they have. So, here's an alternate approach. Pull wands of mindburst, paralysis, and charming into an 'item' set, and make the game only spawn one of the three types in any given game. Artificer starts with whatever is chosen. (This hopefully won't lead to startscumming.) Item specs (i.e. vaults) automatically exclude the wands which *weren't* chosen from the set, and I did some tweaks to make sure that all vaults should still work. Wand generation weights are tweaked slightly - the combined slot is slightly less common than mindburst plus para plus charm were together. (NOTE: A later commit will pull mindburst back out of the item set, leaving only charming + paralysis to alternate.) I have high hopes for this design technology. We'll see how it plays! -------------------------------------------------------------------------------- 1f97f7987d | Nicholas Feinberg | 2022-06-14 18:28:00 -0700 Let parghit throw ruk (dilly) What silly code! -------------------------------------------------------------------------------- 3e51bf9b82 | Nicholas Feinberg | 2022-06-14 18:24:28 -0700 Don't injury bond ioods (riverfiend) And do some code cleanup while I'm here. -------------------------------------------------------------------------------- 53e7fda734 | Edgar A. Bering IV | 2022-06-15 01:13:45 +0300 vaults: new demonic serial vault Encountering "common demons" at a time when they're a threat and not summons is a rare occurance in crawl. This serial vault, a shameless ripoff of serial_undead, places some demonic themed decor on a dungeon level to give it a "demonic feel". Spooky. Featuring demonic trees and plants, plus 5, 4, and 3 tier demons. -------------------------------------------------------------------------------- 58cc3432a3 | Edgar A. Bering IV | 2022-06-15 01:13:45 +0300 vaults: adjust serial_undead to modern D spawn tables -------------------------------------------------------------------------------- b10a8bf730 | advil | 2022-06-14 17:33:08 -0400 feat: indicate zot clock death risk in status light This might be overkill, since I think the likelihood of a player drained this much actually dying of the zot clock itself is rather low, but it seems useful to try out. In the end, rather than fancy punctuation, I simply added ", death" if the next zot clock 0 would kill. The color tweaks here bring this in line with the overview screen, though in contrast to there, the color is always stepped up if the player is drained enough to be risking death. (If `always_show_zot` is off though, for non-meteorae, clocks >=1000 turns are still not shown, though.) I also tweaked magenta->lightmagenta mainly for the sake of webtiles where regular magenta looks a bit dull (possibly just my badly calibrated monitor). -------------------------------------------------------------------------------- ed30ed24e1 | advil | 2022-06-14 17:32:48 -0400 feat: add zot clock to dungeon overview This displays in both the dungeon overview popup, and in morgues. Whether it displays follows the usual rules for showing the zot clock: it is forced by always_show_zot or meteorae, and otherwise only shows info if the bezotting level is >0. This also clearly indicates when the player is in death range as well as which branches they need to watch out for. Unfortunately, though I tried very hard, I just could not get this info into a three-column display. (I tried both inline approaches, and two-row branch displays; the former doesn't have enough space, and the latter looked quite bad.) Therefore, if any zot clocks are shown, it flips to a two-column display. Possibly confusing? I should also note that there are enough special cases here that I really doubt I got all the spacing to look right in all cases (as much as I did try to generalize the code for this a bit). -------------------------------------------------------------------------------- e82337ba6a | Nicholas Feinberg | 2022-06-13 21:38:19 -0700 Fix batty monsters + Mark (dilly) Don't make Mark turn batty monsters into unstoppable killing machines. This has been broken since 7f122b9c1a7 (2013), when Vault Sentinels and hence Mark were first added. -------------------------------------------------------------------------------- e9a90b782e | advil | 2022-06-13 17:15:01 -0400 fix: reword autofire message with mp 0 When autofiring an mp-using quivered action with mp 0, this still somewhat confusingly gave the "reckless" message. Just give an out-of-MP message. Also, reword a use of "mana" to "magic", afaik "mana" is not canon outside of some function names. -------------------------------------------------------------------------------- 113927532b | advil | 2022-06-13 16:46:26 -0400 feat: explore_wall_bias tweaks * don't consider just cardinal directions in checking for adjacent walls. (Fair warning, I don't know why it originally did this, so this change could be breaking something?) * let explore_wall_bias be negative, to prioritize open space. I should add that the use case of this option remains somewhat theoretical. There seems to be some historical idea that setting this to positive values would speed up eploration, but in my testing this is really far from correct: it adds sometimes 100s of turns to exploring a level, because it can drastically increase the amount of backtracking. Similar for negative values. It *might* be useful for meteorans as it possibly deprioritizes things they don't want to explore anyways, but the total explore time if you do a full explore is definitely still increased. In my testing for negative values what tends to get deprioritized are corners and corridors, which is what I was hoping for. But it's hard to say anything conclusive about whether this would be an improvement.. -------------------------------------------------------------------------------- 1de43cadea | advil | 2022-06-13 09:46:39 -0400 fix: float issue for webtiles pgdn / last menu item calculations After the new pgdn code from c0181ea820b1, in some cases the last menu item was not being calculated correctly because of minute (~ 0.1) overlap of the last menu item with the footer, I assume because of floating point inaccuracy. This caused pagedown to not consistently move to the last element in a menu that is larger than one page. This commit tries to fix this by just adding a bit of heuristic margin; I don't think this error should ever be more than 1px or so. -------------------------------------------------------------------------------- b72297ba39 | gammafunk | 2022-06-13 05:40:34 -0500 feat: Rename the Hedge Wizard abbreviation to HW When Wizard was renamed to Hedge Wizard in 0.26, we avoided changing the background abbreviation. This was to avoid the hassle of retroactively renaming combos, but it left us in an awkward situation where the two class names were different yet the combo names remained unchanged. We're sure we want to regard the historical Wizard class as equivalent to current Hedge Wizard, and with release coming soon, now is a good time to rename the abbreviation and do a retroactive rename in Sequell. This commit renames the abbreviation Wz to HW and renames all related enums and image filenames for good measure. I've also updated the lookup key for background descriptions in all language files that previously had entries for Wizard, but I've not changed any of the language text. -------------------------------------------------------------------------------- afbf2c5d25 | Nicholas Feinberg | 2022-06-12 21:09:02 -0700 Make allies not autotarget Kiku wretches They're harmless, and autotargeting em might prevent the player from using targeted effects like Simulacrum or Infestation on em - they can die after the invocation & before the player gets a turn! -------------------------------------------------------------------------------- 3281e725f0 | Nicholas Feinberg | 2022-06-12 21:02:14 -0700 Increase formicid dexterity by +3 Now that dexterity is the only stat that matters for shields, formicids could use a teensy bit more of it. This increases their SH as follows: - With bucklers: (3 * 38 * (3*2 + 13) / 26) / 200 = +0.4. - With kite shields: +0.6. - With tower shields: +0.85. -------------------------------------------------------------------------------- 0dc89cf053 | Nicholas Feinberg | 2022-06-11 22:54:11 -0700 Rock out, skillfully (Lightli) New gimmick Meteoran earth magic title. Perhaps too silly. -------------------------------------------------------------------------------- c323245b08 | Nicholas Feinberg | 2022-06-11 22:10:43 -0700 Tone down Amaemon's loot An enchanted demon whip of venom pre-lair is just a bit too much reward to be handing out so often. Turn down the enchantment to the same level as Grum's, maybe -2 to +1 or so. -------------------------------------------------------------------------------- 1b89ca2c71 | Nicholas Feinberg | 2022-06-11 21:30:13 -0700 Fix petrifying/frozen + aoops (acrobat) The wrong function was being called to determine whether monsters were slower than the player (and hence unable to get attacks of opportunity on them). Closes #2529. -------------------------------------------------------------------------------- bc6e321ce9 | Nicholas Feinberg | 2022-06-11 21:13:46 -0700 Fix simulac/dchan + wretches (dilly) Broken by 2ca5787500ec8efac2b55a44e937fbcb8f280d80. -------------------------------------------------------------------------------- e9b4822f2a | Nicholas Feinberg | 2022-06-11 20:48:55 -0700 Increase Sandblast's range Compensate for slowness and make spriggan nonsense a lil less fiddly. -------------------------------------------------------------------------------- 8aee0ca6de | Nicholas Feinberg | 2022-06-11 20:45:58 -0700 Add enums for random beams Clarify the secret meaning of an enum range. -------------------------------------------------------------------------------- 9aa79d2f82 | Kate | 2022-06-12 00:40:56 +0100 Fix an invisibility uselessness message -------------------------------------------------------------------------------- a50e9794a5 | Kate | 2022-06-12 00:40:56 +0100 Suppress glow while in shadow form As mostly-flavour change to Dithmenos shadow form, let it suppress glow from Corona, as well as innate Meteoran glow and other effects that light up the player. -------------------------------------------------------------------------------- 8197eedfc6 | Kate | 2022-06-12 00:40:56 +0100 Don't reduce Corona's duration against invisible players It's unclear why it was extremely short-duration against players that were invisible - in the very unlikely event that a monster manages to land Corona on an invisible player, they should get the actual intended benefit for doing so. -------------------------------------------------------------------------------- 40ec974cc1 | Kate | 2022-06-12 00:40:48 +0100 Improve messaging for Kiku spell gifts Handle cases where Kiku fails to offer any new spells, or where the player can only learn a limited subset of the capstone spell gifts. -------------------------------------------------------------------------------- 7a16c6de65 | advil | 2022-06-11 09:48:03 -0400 fix: don't let broodmother spawning crash the arena The foes for summon spiders were set wrong. This commit generalizes some code and should perhaps be applied further for the sake of future-proofing, since any of these summoning spells that just sets the foe to MHITYOU would crash in the arena if it were ever callable in the arena. -------------------------------------------------------------------------------- d29158461a | advil | 2022-06-11 09:48:03 -0400 fix: hide some references to "you" in the arena I think the conditions that set the UI flags for these are also wrong for the arena, but it was easier just to hide them. Currently, the mon info codepath is not used for AI so this is just cosmetic. -------------------------------------------------------------------------------- 64e4043184 | sdynet | 2022-06-10 22:50:37 -0400 Tiny improvement of Oct's ring It's a bit more useful, and I've adjusted the numbers slightly to fit the theme (8) -------------------------------------------------------------------------------- 3e17c549df | Nicholas Feinberg | 2022-06-10 18:33:17 -0700 Turn Sandblast into Slowblast The idea of a spell that uses up ammunition of some kind is pretty cool. You can use less powerful spells to conserve ammo, and then use the big spell for special occasions - if you have other spells available, there's no inconvenience similar to switching between different weapons. However, at level 1, you won't *have* other spells available. So the only way to preserve stones for Sandblast is to switch to melee for chaff... which isn't very exciting! Instead, let's play with a new mechanic that I've wanted to try out for Earth Magic for a while. Sandblast now no longer consumes stones, but instead takes twice as long to cast as normal spells. In testing, this gave it a distinctive and spicy character, but still felt quite powerful. (It's probably a slight nerf to D:1 EE and maybe a buff for D:2-3, which seems fine.) I'll keep an eye out for other places to use the ammo mechanic, though it might not involve stones. -------------------------------------------------------------------------------- a02bf68b3c | Nicholas Feinberg | 2022-06-10 14:39:34 -0700 Remove water (potion [colour logic]) Obsolete since d34118a48d77f2a9bb4910353feb4662b87d51c0 (2012). -------------------------------------------------------------------------------- bafdd74861 | advil | 2022-06-10 14:16:22 -0400 fix: give death and suffering their due -------------------------------------------------------------------------------- 359e09b9d1 | advil | 2022-06-08 16:47:42 -0400 fix: minor tweaks to mac console exec script * add a condition to run this directly from the repo without a containing app * refactor the app name logic * add an error case * add a comment explaining how to use a different terminal app (real wish: a user-friendly way to do this) -------------------------------------------------------------------------------- 883231c05f | advil | 2022-06-08 10:17:55 -0400 fix: reword middle Ru sac level As pointed out in: https://crawl.develz.org/tavern/viewtopic.php?f=8&t=27288 it's a bit hard to figure out whether "significant" or "major" is bigger. (The answer is "major".) I changed "significant" to "medium", which to me reads as both bigger than "modest" and less than "major". -------------------------------------------------------------------------------- 43b9904bd1 | Nicholas Feinberg | 2022-06-07 19:10:39 -0700 Fix Chei + rampaging randarts (dilly) Artefacts with rampage weren't being rejected from acquirement because they weren't ID'd enough. Ridiculous. -------------------------------------------------------------------------------- 2ca5787500 | Nicholas Feinberg | 2022-06-07 16:05:25 -0700 Don't freeze jelly spawns' souls (ebering) Casting simulac on the royal jelly's buddlylings didn't even work. -------------------------------------------------------------------------------- 3b24f45cc1 | Nicholas Feinberg | 2022-06-06 20:47:35 -0700 Make concentrated venom decay over time Looks like an oversight in 6ecf17fd6c (15 months ago). -------------------------------------------------------------------------------- 62b45afb52 | Nicholas Feinberg | 2022-06-06 20:46:07 -0700 Allow raising invisible foes from the dead (ebering) Also allow raising simulacs from out of LOS. -------------------------------------------------------------------------------- 81b289dbe5 | Neil Moore | 2022-06-05 05:43:12 -0400 Simplify slightly -------------------------------------------------------------------------------- cc0464ae43 | Edgar A. Bering IV | 2022-06-05 11:00:37 +0300 text: list kiku gift spells in the description -------------------------------------------------------------------------------- ffc1d7fb78 | Nicholas Feinberg | 2022-06-04 16:47:50 -0700 Fix webtiles monster descriptions Broken by new status icons. -------------------------------------------------------------------------------- 81e455f4c2 | advil | 2022-06-04 17:59:13 -0400 fix: prioritize non-removed species for species::from_str_loose The main effect of this is that &rorc in wizmode turns you into a hill orc, not a lava orc. (You can still use exact strings to get the removed species.) -------------------------------------------------------------------------------- e87547aa71 | advil | 2022-06-04 17:59:13 -0400 fix: move a bunch of option defaults out of dat/defaults I would prefer if only lua options had their defaults set in these files. We are a ways from there but these two really don't need to be done in an include; one of them even had its default split between c++ and the include. Everything that is left here is either lua or a text_pattern (where for reasons I haven't discerned, text_pattern defaults never seem to be set in c++). -------------------------------------------------------------------------------- 32f4ba3753 | Nicholas Feinberg | 2022-06-04 14:27:25 -0700 Turn off explore_auto_rest for Meteorans It's usually better to keep moving. -------------------------------------------------------------------------------- 8f12ed8835 | Nicholas Feinberg | 2022-06-04 14:23:59 -0700 Fix the build oops -------------------------------------------------------------------------------- 3a238a73d9 | Nicholas Feinberg | 2022-06-04 14:21:48 -0700 End the terror of tentacle segment zombies Too spooky...................... -------------------------------------------------------------------------------- 1c0eb391a4 | Nicholas Feinberg | 2022-06-04 14:18:25 -0700 Fix sprint combo bans Don't display delver in the jobs list if you haven't chosen a species yet, and don't allow Meteoran at all. (Sprints have no zot clock.) -------------------------------------------------------------------------------- 10a518f58f | Nicholas Feinberg | 2022-06-04 13:56:02 -0700 Add many new status icons (Sastreii) - Antimagic - Concentrated Venom - Dazed - rF- (fire vuln) - Partially & fully charged (floating eyes) - Injury Bond - Repel Missiles - Simulacrum - Still Winds - Waterlogged (phial) - Weakened Whee! -------------------------------------------------------------------------------- 05c506a3cf | Nicholas Feinberg | 2022-06-04 13:56:02 -0700 Store tile icons as a list We'd run out of space in a 64-bit int to store more status icons for tiles, and we want a bunch more! Turn em into a list. -------------------------------------------------------------------------------- 075992c915 | advil | 2022-06-02 15:01:32 -0400 fix: don't wipe out Ru muts with change_species_to This code was promoted from a wizmode function, where things didn't need to be absolutely perfect, to being used in fixups. Among other issues, it overlooked Ru sacs, which are implemented as innate mutations. I'm not perfectly confident that the following code won't mess with sacs in some way I don't understand, but this fix works for the straightforward cases. -------------------------------------------------------------------------------- af1fc19f1b | advil | 2022-06-01 17:55:51 -0400 fix: tiles umbra/halo interactions This logic is exactly copied from showsymb.cc (this was working for console) minus the silence stuff. Resolves #2561 -------------------------------------------------------------------------------- bfd55560d8 | advil | 2022-06-01 16:58:58 -0400 fix: a tag major upgrade crash As long as these enum values exist, we apparently need to give them a color. (I haven't looked very deeply into why.) -------------------------------------------------------------------------------- da7b1fbfba | advil | 2022-06-01 16:44:43 -0400 fix: misc tag upgrade things visible locally, but not in CI -------------------------------------------------------------------------------- cd130a58c2 | advil | 2022-06-01 16:37:08 -0400 fix: remove halfling -------------------------------------------------------------------------------- 223e3869e7 | advil | 2022-06-01 16:14:08 -0400 fix: tag major #ifdefs for aptitudes.h This was apparently never implemented, but didn't matter. I don't know why this didn't break before. -------------------------------------------------------------------------------- a137e16256 | advil | 2022-06-01 15:41:03 -0400 fix: major tag bracketing for removed species Now that this enum is not fully conditionalized, specific removed species need to be marked for the tag upgrade CI test to succeed. -------------------------------------------------------------------------------- 5014999b08 | advil | 2022-06-01 14:27:52 -0400 fix: default `create_enum` to false in species gen As recently discovered, alphabetically generating an enum that is serialized as a number is a really bad idea if you want to preserve any sort of save compatibility. Disable by default the enum-generating option for species_gen.py, and adjust docs and yaml files accordingly. I considered removing this option entirely but it may be useful for less experience coders playing with the code, if you're just adding one species in a private fork (or don't care very much about your players' save files) it's fine/useful. This only didn't come up between 2018 and now out of sheer luck; Dj reused an existing hardcoded enum value, Gn and Pa's alphabetical order matches the order in which they were added, and My didn't exist for long enough for the bug to get noticed (or reported, at least). I think everything else has been a revamp or removal. -------------------------------------------------------------------------------- 26aeb8ffec | advil | 2022-06-01 12:25:49 -0400 fix: avoid a potential divide by 0 error The calc_hp code can be triggered during fixups, at a point where hp_max (which is recalculated on load during _post_init) is not yet set, causing a divide by 0 error. Just skip the rescaling for this case. Also add an explicit dprf for species changes. -------------------------------------------------------------------------------- 200812b14b | advil | 2022-06-01 11:41:13 -0400 fix: pa/me/my fixup fix (real) fa20dd96a133 fixed meoteoric Pas correctly, but turned Me into My (with Me muts at least). This commit fixes the original fixup, and adds a new fixup for My generated along the way. -------------------------------------------------------------------------------- dd5a78fe54 | Kate | 2022-06-01 13:01:57 +0100 Don't suppress Meteoran glow in forms The one form where it would make a big difference either way (shadow form) already doesn't suppress glow since it's a form that keeps mutations. Making the glow permanent allows potions/scarves of invisibility to be properly marked as permanently useless, instead of being left on autopickup because they were technically only "temporarily" useless previously. -------------------------------------------------------------------------------- 67b01d5277 | Kate | 2022-06-01 12:47:49 +0100 Mark scarves of invisibility useless when perma-backlit -------------------------------------------------------------------------------- 1b1fc82263 | Kate | 2022-06-01 12:14:08 +0100 Allow ice beast zombies again As natural monsters, they should be zombifiable the same way as other weird-but-living creatures like sky beasts, unseen horrors and jellies are. -------------------------------------------------------------------------------- fa20dd96a1 | Nicholas Feinberg | 2022-05-31 21:17:56 -0700 Stop turning palentongas into meteorans? Try to fix the build. This is very scary code and may be quite wrong. -------------------------------------------------------------------------------- 05f53baf05 | Nicholas Feinberg | 2022-05-31 17:38:00 -0700 Merge deep, mountain and hill dwarves DD were a very cool experiment. By removing passive regeneration, they asked: if misplays in any fight have consequences (HP loss) that extend beyond that fight, does the game become more dynamic and exciting? 'No regen' over time works great in many games - Spelunky, Cogmind, Desktop Dungeons, Slay the Spire, Hoplite, etc, etc. If I were designing a new game today, I'd very likely not have passive regen over time! However, Crawl is designed to have very large numbers of fights in each game, over a time much longer than any of the above games. Playing 'optimally' throughout every fight for a whole game is exhausting! DD largely circumvent their own gimmick by a variety of 'allowed' healing mechanisms - e.g. vampiric weapons, Vampiric Draining, Makhleb, Ru, Elyvilon (if one must), and now Jiyva. The final result is a species that's quite powerful, but enjoyable for only a select few. As such, let's call this experiment to a close. Whisper 'Farewell' when you leave, Dimli... -------------------------------------------------------------------------------- 1352289c90 | Nicholas Feinberg | 2022-05-31 17:37:32 -0700 New species: Meteoran Time pressure often creates exciting gameplay and interesting tradeoffs. Baseline Dungeon Crawl uses the Zot Clock to add a very weak form of time pressure, but there's so much variety between the playstyles of different species and backgrounds that a tight clock for some would be almost impossible for others. So, let's try limiting that gameplay to just one species! Meteorae have an exciting variety of bonuses - great attributes and aptitudes across the board, passive mapping, and exploration healing, regaining HP and MP when viewing new territory. In exchange, they have one big downside: instead of getting 6,000 turns of Zot clock for each floor, they get 600! The big concern here is whether this species can be made fun without also being made wildly, boringly 'overpowered'. Lots of levers and knobs to tweak, so let's give it a shot! Extra notes: - Meteorae are humanoid beings. (In the night sky, they look like dots because they're very far up.) Hat tip to Neil Gaiman's Stardust. - This commit has a silly 'flavour' gimmick where Meteorae's LOS radius decreases by 2 when they have less than 50 turns left of Zot clock, and again when they have less than 10. Darkness is closing in... - Meteorae glow in the dark. Permanent backlit status (not halo!): +enemy to hit, -stealth, disables invis. Suppressed in forms. Seems funny. Credit to hellmonk for the initial version of this species and pushing to make 'em happen. :) -------------------------------------------------------------------------------- 7c30feaf68 | Nicholas Feinberg | 2022-05-31 17:36:39 -0700 Add a description for short-lived -------------------------------------------------------------------------------- 611cb8dbe1 | Nicholas Feinberg | 2022-05-31 17:36:31 -0700 Soften the Zot clock Instant death is something DCSS has flirted with from time to time, and generally ends up steering away from. In a game as long as DCSS, instantly dying from falling into lava is just a bit too cruel. So, too, goeth the Zot clock. Soften it by making it apply extremely heavy drain for the first few hits, roughly 1/3rd of max HP each time. Only at very low max HP will it now kill the player. (I'd wanted to remove this too, but I think Xomscumming would still be possible without it.) After Zot draining, the player gets another 1k turns on the clock (200 for Meteorae). Let's try this out and see how it goes. -------------------------------------------------------------------------------- 4d55d654a6 | Nicholas Feinberg | 2022-05-31 17:08:02 -0700 Crumble Animate Dead zombies on leaving the floor Tragically seemed to only lead to unfun strats. My heart weeps. -------------------------------------------------------------------------------- 81a890a79d | Neil Moore | 2022-05-31 19:11:12 -0400 Update copyright date -------------------------------------------------------------------------------- a956f109cc | Neil Moore | 2022-05-31 19:11:12 -0400 gather_monster: strip backslash-newline in kmons() The Head Instructor definition has an unstripped backslash, resulting in `make monster` giving the error: util/monster/vault_monster_data.h:50:1: warning: unknown escape sequence: '\040' -------------------------------------------------------------------------------- 59ce8b2d47 | Nicholas Feinberg | 2022-05-31 14:01:06 -0700 X Gonna Zombify Ya (Sastreii) New zombie tiles for jellies, orbs and Xs. -------------------------------------------------------------------------------- c852659d43 | advil | 2022-05-30 09:55:12 -0400 fix: handling of animating objects on banishment This reverts an incidental part of df715e3894bdc; after this commit the animating object for dancing weapons was getting unconditionally destroyed on banishment. The ENCH_ABJ check here is necessary to identify animated objects that are temporary but not summoned. In addition, I think it is correct to only set UNIQ_LOST_IN_ABYSS on temporarily animated objects, because otherwise (in principle) duplicates would be possible. I'm not 100% sure that KILL_BANISHED will do something sensible on a temp animated weapon, independent of this codepath though? It may still go on the transit list... -------------------------------------------------------------------------------- 90894fac46 | Neil Moore | 2022-05-30 02:32:10 -0400 Simplify mephitic movement check. Now that there is no damage to worry about (0.28-a0-1521-g870370a84aO) -------------------------------------------------------------------------------- e2af7f97bc | Neil Moore | 2022-05-30 02:14:08 -0400 Finish promoting Sastreeii The commit 0.28-a0-623-g7f772adbe3 neglected to remove them from the (implicitly non-dev) contributors list. Fix that. [skip ci] -------------------------------------------------------------------------------- bdf32494f2 | Neil Moore | 2022-05-29 23:41:05 -0400 Move orbs to lightgrey, animal skins to red. Orbs had the same colour as cloaks and scarves, despite being in a completely different slot. Rather than move orbs to cyan with their slotmates, put them on a mostly-free colour. This requires, or at least suggests, moving the one other lightgrey armour, animal skins, to another colour. Since skins are functionally identical to robes (this is, as far as I know, the only remaining instance of functionally-identical items distinguished purely for flavour reasons), put the two on the same colour. Also move CPA in the relevant switch, to keep the (now fewer) white armours together. -------------------------------------------------------------------------------- 906aab00d3 | Nicholas Feinberg | 2022-05-29 17:25:01 -0700 Remove ice beasts' skeletons -------------------------------------------------------------------------------- 7c1fb6cc08 | Nicholas Feinberg | 2022-05-29 11:16:22 -0700 Fix jelly/orb/orb guardian zombie tiles A bit hacky, but good enough for now. -------------------------------------------------------------------------------- f985e02bcb | Nicholas Feinberg | 2022-05-29 10:46:17 -0700 Dispel with the illusion of zombies Don't allow insubstantial zombies, e.g. player illusions. (Arguably those should be MH_NONLIVING anyway.) -------------------------------------------------------------------------------- e4dad5d916 | advil | 2022-05-29 13:12:52 -0400 refactor: remove mons_zombifiable 88678701b151 made this equivalent (indirectly) to mons_class_can_be_zombified, and I'm now pretty sure this is correct. The only reason that has come up to have them distinct is to allow some kinds of monsters to place in vaults but not generate randomly, but this can also be accomplished by setting the M_NO_GEN_DERIVED flag, so the only function of both of these existing at this point is confusion. Also removes a bunch of lua stuff that I think is now useless since corpses are purely cosmetic; if I'm wrong it's easy enough to revert. Possibly what is needed is now similar functions that act on monsters? -------------------------------------------------------------------------------- f59ac788ac | Nicholas Feinberg | 2022-05-28 17:25:58 -0700 Fix stab logging with spriggan's knife (Rhaal) -------------------------------------------------------------------------------- a64e7d0afd | Nicholas Feinberg | 2022-05-28 17:12:25 -0700 More body mutation tiles (Sastreii) Large bone plates, sharp scales, and thin skeletal structure. -------------------------------------------------------------------------------- 343b47744d | Nicholas Feinberg | 2022-05-28 17:12:25 -0700 Add missing Bearserk description -------------------------------------------------------------------------------- 793eeb5391 | advil | 2022-05-28 14:34:57 -0400 fix: some issues for shops you aren't in Don't show purchase costs, don't allow marking items for purchase. Shopping list is still editable, but `$` is disabled. (You can view shops in this mode via stash search.) -------------------------------------------------------------------------------- 901c68f7c3 | advil | 2022-05-28 12:30:32 -0400 fix: incremental shopping menu improvements This menu is still incredibly confusing, but here are a few tweaks. * when in describe mode, enter on a hovered item describes it, keyhint changes correspondingly * the purchase keyhint disappears when nothing is selected * the cost hint accurately reflects when you are purchasing the shopping list items. Missing: * the difference between shopping list items being selected and regular items being selected is very confusing * keyhints for `$`, `.` * hover-based way of interacting with shopping list * should `.` have mode-sensitive behavior? * use general menu keyhint code, instead of custom more -------------------------------------------------------------------------------- 711e9a50b0 | Kate | 2022-05-28 17:15:28 +0100 Update some Kiku descriptions (#12703) -------------------------------------------------------------------------------- a2e7fffb44 | Nicholas Feinberg | 2022-05-27 17:28:32 -0700 Add tiles for ?/U (mutation lookup) -------------------------------------------------------------------------------- 99dc0984f0 | Nicholas Feinberg | 2022-05-27 17:22:06 -0700 Add the ultimate big brain meme (Sastreii) Average Chei fan vs average !mutation enjoyer..? -------------------------------------------------------------------------------- ec6baf379c | Nicholas Feinberg | 2022-05-27 14:28:43 -0700 Add mutation lookup -------------------------------------------------------------------------------- 5bb2ffafd0 | Kate | 2022-05-27 19:51:12 +0100 Prevent some unsuitable monster skeletons -------------------------------------------------------------------------------- 6e53cefa51 | Kate | 2022-05-27 19:02:44 +0100 Remove an unnecessary non-flag -------------------------------------------------------------------------------- 50bc209b2e | Kate | 2022-05-27 19:01:19 +0100 Allow shapeshifter zombies Fixes a build failure, since a vault relies on them working. Historically shapeshifter zombies have been allowed to be placed by vaults or reanimated by the player, but didn't generate randomly (which they now will). -------------------------------------------------------------------------------- 88678701b1 | advil | 2022-05-27 13:33:42 -0400 fix: prevent zombifying various undead (Rhaal) Also shapeshifters. As the comments note, I'm fairly unsure of what the division of labor is supposed to be for the relevant zombification functions so I haven't collapsed anything (though I believe it would be safe to if this commmit is correct). -------------------------------------------------------------------------------- e94edfd80f | advil | 2022-05-27 12:07:01 -0400 fix: header build tests Needed to ensure tileidx_t is defined for the new mutation icon function. Also fixed a few misc warnings I noticed. -------------------------------------------------------------------------------- e007cd9fbb | advil | 2022-05-27 11:01:12 -0400 fix: typo Hadn't saved the file -------------------------------------------------------------------------------- b6e6f924de | advil | 2022-05-27 10:58:46 -0400 fix: prevent another player tile crash (Aliscans) See #2544 -------------------------------------------------------------------------------- 281f2b06d5 | gammafunk | 2022-05-27 03:30:13 -0500 fix: Correct a Makefile variable (Goratrix) A typo was introduced in 08a933d9 that broke compilation on some platforms. -------------------------------------------------------------------------------- 17b79114eb | Nicholas Feinberg | 2022-05-26 20:23:57 -0700 Display mutation tiles in-game (Sastreii) Sweet! -------------------------------------------------------------------------------- 08a933d9be | Nicholas Feinberg | 2022-05-26 20:23:57 -0700 First mutation tiles (Sastreii) Scales, fangs & clarity. Not yet supported in-game. -------------------------------------------------------------------------------- 10c3c7b3e5 | gammafunk | 2022-05-26 18:07:26 -0500 fix: Prevent teleports into a closet (Sergey) For evilmike_makhleb_hellhole, the chamber with neutral humans sealed by an iron grate needs `no_tele_into`, in case one teleports inside and has no digging. -------------------------------------------------------------------------------- 10b964d8d7 | Kate | 2022-05-26 17:28:12 +0100 Actually allow all natural monsters to be zombified Without crashing on reading des files this time - non-natural monsters with corpses (such as pearl dragons and demonic crawlers) can still also be zombified. -------------------------------------------------------------------------------- ac2d4088d3 | advil | 2022-05-26 09:42:56 -0400 fix: disallow player tile mons:dancing_weapon This crashes. For some animated objects you can still set a tile like `tile_player_tile = tile:mons_spectral_lbl`, but this unfortunately isn't available for dancing weapons proper. It seems reasonable (at some level) to implement this but I won't be doing it myself right now. Probably the simplest thing would be to just add some dancing weapons to the player tile name pairs? (Implementing a full on dancing weapon tile mode is much more annoying, because dancing weapons set their tiles based on a real item that is technically in their inventory.) resolves #2544 -------------------------------------------------------------------------------- 77b3608bb8 | Nicholas Feinberg | 2022-05-25 16:29:21 -0700 Revert "Allow all natural monsters to be zombified" Broke the build. TODO: unrevert me. This reverts commit 2245875f922b5f5f3da7fd50e32a253ad6a85885. -------------------------------------------------------------------------------- 7bd733b9cc | Kate | 2022-05-25 23:10:23 +0100 Fix a compiler warning (shadowed params) -------------------------------------------------------------------------------- 2cb01fd4ca | Kate | 2022-05-25 22:52:50 +0100 Don't allow derived undead with no attacks Require monsters to at least have an attack of some sort to be able to be zombified, or to have either an attack or some spells to be a Yredelemnul bound soul. -------------------------------------------------------------------------------- 2245875f92 | Kate | 2022-05-25 21:45:51 +0100 Allow all natural monsters to be zombified Whether or not a monster leaves an actual corpse item is now purely cosmetic, so there's no small arbitrary set of otherwise-living monsters (eg unseen horrors, orb guardians) that Animate Dead doesn't work on. -------------------------------------------------------------------------------- a88943ba61 | Kate | 2022-05-25 21:15:22 +0100 Fix Simulacrum not working on demons It could be cast on them, but wouldn't actually do anything. To be fully consistent with its lore and with Death Channel's behaviour, let it work on any monster with a soul (all natural, demonic and holy monsters, including natural monsters with no corpses). -------------------------------------------------------------------------------- 12ac202842 | advil | 2022-05-25 13:00:42 -0400 fix: save after world_reacts on level entry There's a save call in `floor_transition`, and a new level is saved on generation. However, these save states are not at a point where the player can ever have control over the game, because there's always a following world_reacts cycle. Because of this, if a crash happens after these saves but before a real save, the game is rolled back to a time that is impossible to get to in any other way -- time 0 after level entry. This is the bug discovered by personjerry and mentioned in f3dacdeeaaba2. To be clear, it's *not* (imo) a bug that you can roll back time by intentionally force quitting or killing a local game in this way, that's just a variant of ordinary savescumming -- this commit doesn't prevent using force quits to roll back time[1]. But what it does ensure is that a crash rolls back time to a possible game state. The implementation is very brute force and adds Yet Another Bool to `crawl_state`. Along the way I fixed what I think is a bug in sprint save checkpoints -- the level state wouldn't get saved, so a crash in sprint could at least in principle lead to a save with a very inconsistent player / level state. As a side note, the fact that outside of regular save+quit the player and the level are typically saved independently (something I hadn't grasped before this fix), could lead to all sorts of other weirdnesses on crash. [1] This could be desireable but it's not entirely clear to me how to do it, and it's also quite platform-specific. -------------------------------------------------------------------------------- 0e957ee05f | advil | 2022-05-25 07:58:56 -0400 Revert "Revert "Make new stairs fast after crashing (advil)"" There's a bug here, which is that the game state is saved before stair travel time (as well as seen_monsters_react) is applied, but this happens independently of this flag, and so this revert did not fix it. So killing the crawl process, forcing a crash, immediately after stair descent always rolls back whatever stair time there was as well as the initial hits. Also possibly a bug that the crash isn't saving? I'm not sure why it wouldn't. Also, I kind of want to say that force-quitting a local game is essentially a form of save-scumming and so I'm slightly mixed on whether this is really what I'd call a bug. This reverts commit f3dacdeeaaba24e7937b459bf04e6c4ca36dcd6f. -------------------------------------------------------------------------------- 69413ace17 | Nicholas Feinberg | 2022-05-24 20:56:20 -0700 Make the simulacrum targeter smarter (CarefulOdds) Only target valid enemies. -------------------------------------------------------------------------------- 771e844529 | Nicholas Feinberg | 2022-05-24 20:42:02 -0700 Remove prompt for inner flaming friendlies You want to set your friends on fire? Go wild, bud. -------------------------------------------------------------------------------- 34935aedf5 | Nicholas Feinberg | 2022-05-24 20:40:15 -0700 Make the inner flame targeter smarter No targeting will-immune guys, etc. -------------------------------------------------------------------------------- f3dacdeeaa | Nicholas Feinberg | 2022-05-24 20:06:42 -0700 Revert "Make new stairs fast after crashing (advil)" As personjerry notes, this allows quick-moving players to cheat and get fast stair descents by force-quitting the game. I wouldn't have believed it if I hadn't seen it! This reverts commit 653eee55725701cece7eb2daeb7dd585f623eeee. -------------------------------------------------------------------------------- 93865b4adf | Nicholas Feinberg | 2022-05-24 18:04:02 -0700 Allow casting simulacrum on demons (kate, ardl) Consistent with Death Channel. -------------------------------------------------------------------------------- 6d556a0ce6 | Nicholas Feinberg | 2022-05-24 17:06:14 -0700 Ban very low enchantment randart armour It's sort of funny to generate a -7 randart barding, but it's never ever getting worn. Floor it at -2, in the spirit of the hat of the Alchemist. -------------------------------------------------------------------------------- 62b78b4225 | Nicholas Feinberg | 2022-05-23 21:19:21 -0700 Simplify Death Channel (Monkooky) Remove the ability to recast while the duration is active, forcing all specters to expire before you can get a fresh batch. This should hopefully make gameplay with it a little more dynamic, and also improve UI a bit - you no longer need to remember to recasting when the expiration message appears. It still seemed quite strong in testing, but other adjustments can always be made if need be. -------------------------------------------------------------------------------- 78b83d787e | Nicholas Feinberg | 2022-05-23 21:07:44 -0700 Let death channel work with enemy necromancy Simpler to have it work with all corpse-eating effects. -------------------------------------------------------------------------------- e40278f558 | Nicholas Feinberg | 2022-05-23 21:04:18 -0700 Increase Necrotize skeleton duration Try to make em a little more relevant. -------------------------------------------------------------------------------- dfe5cd140f | Nicholas Feinberg | 2022-05-22 20:45:33 -0700 Reorganize necromantic effects Make Infestation consume corpses. The only Necromancy spells that stack are now Death Channel + one of (Infestation, Simualcrum, Animate Dead, Necrotize) + Corpse Rot. TODO: we should make necromancy spells that consume corpses still give out monster organs (eg dragon armour) as appropriate. -------------------------------------------------------------------------------- acb4ef3bc5 | Nicholas Feinberg | 2022-05-22 07:21:09 -0700 Vulnerability, anguish, and decay (Sastreii) New tiles for the amulet of Elemental Vulnerabilty, Anguish, and Necrotize. -------------------------------------------------------------------------------- e5599a681e | Nicholas Feinberg | 2022-05-21 22:19:03 -0700 New early-game fixedart: the amulet of Elemental Vulnerabilty AC+8, rPois, rC--, rF--. Would you wear it? I would :) -------------------------------------------------------------------------------- 88dec836d1 | Nicholas Feinberg | 2022-05-21 21:56:30 -0700 Remove Pain (Lightli) Update the Necromancer background description. -------------------------------------------------------------------------------- 9071f44f2d | Nicholas Feinberg | 2022-05-21 21:13:30 -0700 Release the God of Metal (Sastreii) New Kiku invo tiles. -------------------------------------------------------------------------------- d254ca66d9 | Kate | 2022-05-21 13:16:41 +0100 Fix some commas in unrand inscriptions Remove Damnation's comma (it was trimmed out anyway due to not having any other properties) and give it to Condemnation. -------------------------------------------------------------------------------- e57f7f99b4 | Nicholas Feinberg | 2022-05-20 17:17:11 -0700 Remove condemnation fallback (advil, gammafunk) No need to special case this - it's ok to very rarely generate randart trishulas. -------------------------------------------------------------------------------- e4d8c67b05 | Nicholas Feinberg | 2022-05-20 17:03:32 -0700 Finish shortening Condemnation's name oops -------------------------------------------------------------------------------- ca8cdc03c0 | Nicholas Feinberg | 2022-05-20 17:02:39 -0700 Clarify Condemnation's holiness Remove skip_ego and remove the 'Barbs of' to make space. -------------------------------------------------------------------------------- 48891804b8 | Nicholas Feinberg | 2022-05-20 17:01:56 -0700 Condemn some placeholder dev tiles (Sastreii) New tiles for the trishula "Condemnation". -------------------------------------------------------------------------------- 50448035db | Nicholas Feinberg | 2022-05-20 09:10:19 -0700 Tweak Condemnation lore Clarify in the weapon description why it inflicts anguish (thematically), and move the noises further in line with the lore. -------------------------------------------------------------------------------- df083b7a6e | Nicholas Feinberg | 2022-05-20 07:09:34 -0700 Add missing Condemnation doll tile -------------------------------------------------------------------------------- f74b082263 | advil | 2022-05-20 09:34:20 -0400 fix: correct weapon stats for UNRAND_WOE The description was showing numeric stats for a regular exec axe. Also, fix an unrelated ∞. At this point all ∞s besides those in art-data.txt are correctly conditionalized. -------------------------------------------------------------------------------- e4767303ab | advil | 2022-05-20 09:34:20 -0400 fix: conditionalize a few more ∞s -------------------------------------------------------------------------------- a9ffdc3c7e | Nicholas Feinberg | 2022-05-20 05:57:51 -0700 Remove an accidental addition -------------------------------------------------------------------------------- 97dee8cd24 | Nicholas Feinberg | 2022-05-19 21:58:38 -0700 New unrand: the trishula "Barbs of Condemnation" The weapon of a long-gone archangel of judgment, this is a +8 trishula that inflicts 4-8 turns of Anguish on hit. (That is, victims have their damage mirrored back to them.) It also gives flying, rN+, and makes angel noises. Fun! It's a one-hander so that the anguish damage is more relevant (rather than the weapon damage more quickly & directly murdering everything), a polearm to synergize with allies, and a trishula for thematic & mechanical variety. (We already have a perfectly good demon trident unrand.) For more details, please read the description of Barachi in the Crawl manual. -------------------------------------------------------------------------------- 5c6f5cd5d9 | Nicholas Feinberg | 2022-05-19 21:38:24 -0700 Actually decay anguish over time ??oops -------------------------------------------------------------------------------- 93c1fc3693 | advil | 2022-05-19 20:47:50 -0400 fix: remove wrong comment, use "inf" (PF) -------------------------------------------------------------------------------- 667b474bfb | advil | 2022-05-19 20:41:17 -0400 fix: respect char_set=ascii in hud We've been using ∞ to indicate immunity for a while now, but this was shown even if the player tried to force ascii. I chose `!` semi-arbitrarily as potentially indicating the right thing, maybe there's better options. -------------------------------------------------------------------------------- 96ad54b138 | advil | 2022-05-19 18:11:32 -0400 feat: use .tsv for objstat outputs instead of .txt These already are tsv files, and using the extension makes it easier to auto-open them in a spreadsheet app and so on. This change approved by gammafunk(tm). -------------------------------------------------------------------------------- 53bdb1016d | advil | 2022-05-19 18:06:05 -0400 fix: tweak precision for NumOOD in objstat These are reporting rare enough events that with just to digits of precision, a lot of stuff that is non-0 shows up either as 0.00 or 0.01. An extra digit on top of the default seems to be enough that most values can be compared when working in the 1000 iters range. -------------------------------------------------------------------------------- f113fcf677 | advil | 2022-05-19 16:55:32 -0400 feat: add some monster OOD info to objstat The relative depth values correlate with this, but it's interesting and potentially useful to pull out OOD info specifically. At the moment for large iters, the NumOOD field very rarely exceeds 0.01 for individual monsters that do place in my testing, so I may need to tweak this further for it to be useful. -------------------------------------------------------------------------------- 763a1779be | advil | 2022-05-19 11:14:18 -0400 feat: add some basic monster depth info to objstat Two new fields derived from mon-pick-data.h. These are a bit rough but still informative in my testing. RelativeDepth: the current depth minus the average depth based on regular placement tables. So more negative is more out of depth, more positive is more under depth. So for example a fire dragon placing on D:9 gets RelativeDepth -11, because its average placement (rounded) is 20. Out-of-branch monsters get 0 for this, so the following Num stat is what is used to calculate the average. NumInBranch: Counts monsters that are generated by the regular branch placement tables. For individual monsters, this will either be the total count or 0. (Maybe NumOutOfBranch would be more useful as a directly viewable stat?) A few caveats: neither uniques nor derived undead ever count as in-branch. I did it like this because there is already an average function, but it might also or instead be nice to have an explicit OoD number, maybe something like the closest depth range edge minus current depth. E.g. the fire dragon in the example above is also over-OoD, because its minimum placement is D:14 (placed by a vault), and this is a bit hard to directly reconstruct. Maybe later. -------------------------------------------------------------------------------- fbfa42419e | Nicholas Feinberg | 2022-05-18 14:35:18 -0700 Fix corpse description (Lightli) -------------------------------------------------------------------------------- f02deff4a7 | advil | 2022-05-18 16:25:48 -0400 refactor: convert `pregen_dungeon` to enum, clean up parsing This option was previously implemented with the double bool for three values strat; this converts it to a 3-valued enum and uses this to clean up the parsing code as well. Sort of annoying to have yet another tiny little enum.h around, but I guess that's what we do. -------------------------------------------------------------------------------- 9e3099983f | Nicholas Feinberg | 2022-05-18 12:42:42 -0700 Remove Animate Skeleton's remains Just a few spare leg and arm bones floating around. -------------------------------------------------------------------------------- a536a90030 | Nicholas Feinberg | 2022-05-18 12:38:31 -0700 Remove excruciating wounds The description. -------------------------------------------------------------------------------- aae9a6c917 | Nicholas Feinberg | 2022-05-18 12:36:35 -0700 Fix OOD fuzzing Broken in 18a14b5c600 (almost exactly a year ago) to *not* weight away from the edges. Oops! -------------------------------------------------------------------------------- 3b62d05871 | Kate | 2022-05-18 19:01:44 +0100 Apply coding conventions -------------------------------------------------------------------------------- e11e1e56b0 | Kate | 2022-05-18 19:01:18 +0100 Fix Corpse Rot's description for !cancellation And clarify a comment to explain why short_text needs to be in adjective form. -------------------------------------------------------------------------------- 0f0961c20d | Kate | 2022-05-18 18:48:17 +0100 Give Unearth Wretches an ability targeter -------------------------------------------------------------------------------- ed0ba456c6 | advil | 2022-05-18 11:41:36 -0400 fix: remove some unused functions (Goratrix) -------------------------------------------------------------------------------- 5dfcd41d59 | Nicholas Feinberg | 2022-05-18 07:07:00 -0700 Ban anime zombies from attacking outside LOS, again -------------------------------------------------------------------------------- ef7be07a3d | Nicholas Feinberg | 2022-05-18 07:07:00 -0700 Update kiku desc -------------------------------------------------------------------------------- eecb74a380 | Nicholas Feinberg | 2022-05-18 07:07:00 -0700 New Kiku ability: Unearth Wretches Replacing corpse drop, this summons a few wretched, near-death souls for you to practice necromancy on. They're zero XP, paralysed, 1 HP, 0 will, and die in a few turns. Rough! -------------------------------------------------------------------------------- c36bb38398 | Nicholas Feinberg | 2022-05-18 07:07:00 -0700 Retheme simulac -------------------------------------------------------------------------------- 9dfb08f9a7 | Nicholas Feinberg | 2022-05-18 07:06:57 -0700 Re-rework animate dead Make the zombies unlimited duration, but have them crumble when the caster re-casts this spell. This is intended to avoid the boring play pattern of repeatedly casting the spell at the start of every fight, and to encourage somewhat more dynamic and fun decision-making. Also reduce power scaling to make the spell more usable by 'hybrids'. -------------------------------------------------------------------------------- 3a8266931e | Nicholas Feinberg | 2022-05-18 07:06:27 -0700 Fix some animate dead issues Re-add messages and fix a bug where enemies would create hostile zombies while animate dead was active. Also add simulac messages and tweak necrotize skeleton messages. -------------------------------------------------------------------------------- b89b5c0cdd | Nicholas Feinberg | 2022-05-18 07:06:27 -0700 Ban Gozag from animating gold corpses -------------------------------------------------------------------------------- 20812cadf4 | Nicholas Feinberg | 2022-05-18 07:06:27 -0700 Apply refactoring & fixes to all on-death necromancy effects -------------------------------------------------------------------------------- ef05d3b997 | Nicholas Feinberg | 2022-05-18 07:06:27 -0700 Update Kiku description -------------------------------------------------------------------------------- 5cd8600749 | Nicholas Feinberg | 2022-05-18 07:06:27 -0700 Move Tukima's Dance from Maledictions to Weapons Purely vibes-based change. -------------------------------------------------------------------------------- 14519f8a5a | Nicholas Feinberg | 2022-05-18 07:06:27 -0700 Remove the Book of Pain Gutted. -------------------------------------------------------------------------------- 1025688b39 | hellmonk | 2022-05-18 07:06:27 -0700 Rearrange kiku spell gifts -------------------------------------------------------------------------------- 2fcf5398dd | hellmonk | 2022-05-18 07:06:16 -0700 Kiku duplicate undead passive To replace corpse drop, give Kiku a piety-dependent chance to grant an extra ally each time one would be generated from a necromancy spell or the reaping brand. This applies to all of the derived undead spells and infestation, and simulacrum rolls independently for each simulacrum generated. Starts off at about 14% chance at 30 piety and rises linearly to 25% at max piety. -------------------------------------------------------------------------------- cdf6c57b5d | hellmonk | 2022-05-18 07:06:07 -0700 remove kiku corpse drop -------------------------------------------------------------------------------- 8cd6c6eb39 | hellmonk | 2022-05-18 07:06:07 -0700 Remove excruciating wounds It outlived warp weapon by more than 5 years, somehow. -------------------------------------------------------------------------------- 613369fe0c | hellmonk | 2022-05-18 07:06:04 -0700 feat: Replace pain/aniskele with Necrotize New level 1 spell, identical damage/range/etc to pain. No self damage. On damaging a skeleton-having monster, applies a 10 aut status that animates its skeleton on death with a summon duration of 2. This should, I think, be limited enough to work without being overpowered but may need further adjustment. WL check plus low damage should keep it from being a good use of a turn past the relatively early part of the game. Necrotize -> make a skeleton -> can't hit the next guy behind it may not feel very good, so could try some kind of random targeting with less range. -------------------------------------------------------------------------------- 38ecc28c78 | hellmonk | 2022-05-18 07:02:25 -0700 feat: Rework corpse rot Apply the effect on kill for a duration, scaling with power. Tentatively moved to level 4 necro/poison/air. Plenty of room to toggle here. -------------------------------------------------------------------------------- a05d3bcdc0 | hellmonk | 2022-05-18 07:02:25 -0700 feat: rework simulacrum Simulacrum is now a smite-targeted spell that places an irresistable status. A monster that dies with the status will spawn a power-dependent number of simulacra (no longer depends on monster size). I think this is enough of a difference to distinguish it from dchan and infestation. Desperately needs a status icon and better lore. -------------------------------------------------------------------------------- 8cec33880d | hellmonk | 2022-05-18 07:02:25 -0700 feat: Rework Animate Dead Move this spell toward a dchan-like model. For the duration of the effect, monsters with corpses have power dependent chance to become zombies. Duration also scales with power, and the zombies crumble when the effect ends. Numbers very preliminary. -------------------------------------------------------------------------------- 653eee5572 | Nicholas Feinberg | 2022-05-18 06:29:49 -0700 Make new stairs fast after crashing (advil) If you crash while descending the stairs into a new level, you should still have a 'fast' descent rather than a 'slow' one. -------------------------------------------------------------------------------- afbd6decc1 | Nicholas Feinberg | 2022-05-17 22:15:05 -0700 Make it fast to enter new stairs (catern) Historically, it's been twice as fast to enter new levels as to re-enter old ones. Fast entries made players die in surprising ways less often when entering new floors, and slow re-entries provided valuable discouragement to "stair-dancing". However, they also produced some big feel-bad moments when players got clobbered while taking new stairs to a new level - "I thought I was safe the first time I took the stairs!" Align things a bit more with player intuitions by making it faster to take stairs (or trapdoors, or shafts) that the player does not know the destination of, instead of basing it on whether the level is 'new'. -------------------------------------------------------------------------------- ecc9850ee1 | Nicholas Feinberg | 2022-05-17 22:08:15 -0700 Move an orphaned boolean Looks like this got split up for no good reason at some point. -------------------------------------------------------------------------------- 57f2fb0196 | Nicholas Feinberg | 2022-05-17 21:13:22 -0700 Make D shafts even nicer 5c17abdc72d04c8214fdcadc9cb7d8cf9756b66e used felid revival logic to place the player after a shaft, but that logic was not very good at placing the player out of sight of enemies. Write some new logic. (Perhaps we should change felid revival instead..?) -------------------------------------------------------------------------------- 77450f2105 | Nikolai Lavsky | 2022-05-17 09:45:49 -0400 fix: restore scroll-swinging and scroll-tossing speed (12701) After a8e9c987b8, scroll-swinging takes 3 auts instead of 15 auts. Also, the speed of tossing items depends on the wielded weapon and can be slowed by armour instead of being 15 auts. This commit restores the old speeds. -------------------------------------------------------------------------------- c0181ea820 | advil | 2022-05-16 13:21:45 -0400 fix: rewrite webtiles menu pgup/pgdn This was previously a bit of a mess; the behavior of the two was almost never symmetric, and there were all sorts of messy interactions with headers (because they are rendered in a smaller font). This rewrite doesn't solve everything but it generally has much better behavior on both of these points. * refactor so that these are largely using shared code, making symmetry much easier * redo pgup to use set_bottom_visible rather than do an ad-hoc size calculation (that was also wrong). This makes it much closer to how pgdn is implemented. * when recalculating hover after paging, ignore headers. This overall leads to much more consistent behavior. (Though it still has some weird cases..) N.b. possibly this should be ported to local tiles too, but in practic local tiles paging (which uses a different approach) is less susceptible to these issues. Alternatively, webtiles paging could get the local tiles algorithm, which scrolls by pixels? * heuristics for hover at the end Also fix a bug for menu.last_visible calculation with size 1 menus. -------------------------------------------------------------------------------- a44e0411cd | advil | 2022-05-16 13:07:18 -0400 fix: improve local tiles menu pgup/pgdn This tweaks local tiles paging in menus to be more consistent in various ways. Main changes: * use top of menu items, not bottom, to calculate first visible. (I've never understood why it was implemented the other way, so hopefully this doesn't break some case I haven't thought of..) * halve the impact of the shade on scrolling margin, tweak the shade's alpha value * ignore initial visible headers in preserving relative hover for pgup/pgdn * preserve a scroll context that is 1.5x the max line height when scrolling via pgup/pgdn (previously there was no context except as a side effect of the shade). This resolves #2515 This mostly won't affect console, except for the header change (which should be an improvement). -------------------------------------------------------------------------------- 83a48905f1 | advil | 2022-05-15 16:13:17 -0400 fix: really old save compat for random draconians debd2d6947 and f64331b8c2b added new RANDOM_ monster types without save compat for random draconian placement types used in zigs. A save that crashed while generating a zig level before these commits would (following these commits) then crash while trying to generate the zig level, because the random monster types are no longer valid. This commit is quite approximate, but handles the crash seen in a save here: https://crawl.develz.org/mantis/view.php?id=6308 (As of this commit, this save no longer crashes.) -------------------------------------------------------------------------------- 12f7694b2d | advil | 2022-05-15 14:51:06 -0400 fix: repair an ancient fixup In current dcss, NUM_BOOKS drastically exceeds MAX_SUBTYPES. This doesn't matter, because nothing (after this commit) assumes that books are relevant to MAX_SUBTYPES, and this is why (I'm assuming) there was no prior COMPILE_CHECK for this case. However, this one fixup assumed that there were enough force_autopickup slots that there was a value for NUM_BOOKS, leading to a crash on saves from this era. It's possible that MAX_SUBTYPES should be increased to prevent future confusion, but I instead just added a COMPILE_CHECK to validate the specific assumptions current force_autopickup needs, and changed the fixup. Found via the save in: https://crawl.develz.org/mantis/view.php?id=6308 (though this isn't either of the crashes noted there) -------------------------------------------------------------------------------- 5075937ec3 | Kate | 2022-05-14 12:21:03 +0100 Fix compilation -------------------------------------------------------------------------------- 559d8e5bd9 | Nicholas Feinberg | 2022-05-13 22:12:58 -0700 Fix felid zot death message You didn't enter a new level -------------------------------------------------------------------------------- fc8527a98e | Nicholas Feinberg | 2022-05-13 22:12:58 -0700 Warn while resting and bezotted -------------------------------------------------------------------------------- f845f52a54 | Nicholas Feinberg | 2022-05-13 22:12:58 -0700 Make zot death messages more exciting -------------------------------------------------------------------------------- 9596d59a08 | advil | 2022-05-13 16:55:55 -0400 fix: mark closets as notele in ossuary_zaba_flooded This is a bit of an overkill / quick fix, in that (as far as I can tell) closets generated by the flooding algorithm here are guaranteed to be deep water, and so marking all deep water as notele seems to do the trick. Probably it would be better if this algorithm didn't generate closets at all, but someone would have to understand it to fix that. Relevant mainly to species that can inhabit deep water of course. Recently trapped a player in: https://cbro.berotato.org/morgue/pigah/morgue-pigah-20220513-145335.txt -------------------------------------------------------------------------------- d843f3a48c | Nicholas Feinberg | 2022-05-12 13:42:24 -0700 Trigger riposte on blocks Historically, one of the issues with riposte was that it interacted poorly with shields. Shield blocks triggered before dodges, so they made riposte less effective. We didn't want to make riposte trigger on blocks, for both power level concerns and worries about diluting the focus of the mechanic (toward "dex-centric", dodgy characters). But now riposte is unrand only, so we can go wild! This should avoid feel-bad shield/riposte interactions going forward. -------------------------------------------------------------------------------- 6c28700d94 | Nicholas Feinberg | 2022-05-12 13:30:57 -0700 Increase 'large' species shield aptitudes Following 7b68f1b707db and ffcb275ae500, 'large' species ended up substantially worse at using shields than before. Increase their Shields aptitude by 1 point (14%) to compensate. This affects trolls, ogres, nagas, palentongatrices, and formicids. -------------------------------------------------------------------------------- 477518b81c | advil | 2022-05-12 14:50:41 -0400 refactor: more options cleanup Move several things out of reset_options that don't need to be there. -------------------------------------------------------------------------------- 1debfa714c | advil | 2022-05-12 14:21:33 -0400 refactor: standardize parsing of wiz_mode, explore_mode This moves these options to be `MultipleChoiceGameOption`s for standardized parsing, default setting, etc. The implementation in builds that disable these is slightly different than previously. In DGL builds, these options cannot be set but do produce an error (previously silent) indicating that they are disabled for the build. CLO behavior is unchanged. In !WIZARD builds, the option field is now present in the Options object, but cannot be set via rc or command line so is basically inert, aside from erroring (previously this case was also silent). If the error is annoying for some reason it would be possible to restore the old silent behavior, but I'm not seeing a lot of reasons why this error would be bad. -------------------------------------------------------------------------------- 6c54550755 | advil | 2022-05-12 14:21:33 -0400 refactor: clean up handling of -wizard and -explore Rather than having the CLO parsing code set an option value which then interacts with the defaults in a complicated way, have fixup code check the options directly after all option handling is done, and promote WIZ_NEVER to WIZ_NO as needed. This has the benefit of getting a more sensible interaction of the CLO and rc options (not that I would imagine this comes up much); but the main goal is just to simplify the defaults a bit. -------------------------------------------------------------------------------- 8f4046f52e | advil | 2022-05-12 14:21:33 -0400 refactor: standardize a few more enum-like options Following 6e02c14617caef94b9e -------------------------------------------------------------------------------- 5c17abdc72 | Nicholas Feinberg | 2022-05-12 09:31:23 -0700 Make D shafts nicer (Sergey) Shafting is exciting when it means having to find a way back up to safer levels. Shafting into a position when you're surrounded by later-game enemies, however, tends to feel very unfair - it's often surviveable, but doesn't feel like a reasonable or just challenge. Borrow felid revival logic to make D shafts try to send the player to somewhere outside LOS of monsters. Shafts in other branches remain unchanged. This helpfully differentiates shafts further from teleport traps, which try to send the player *to* monsters, and alarm traps, which send monsters to players. -------------------------------------------------------------------------------- 6e02c14617 | advil | 2022-05-12 11:26:03 -0400 refactor: standardize custom enum-like options This converts various options with custom handling to MultipleChoiceGameOptions (all that I'm seeing that are obvious candidates for it). This gets: (i) better default handling, (ii) more standardized error messages, (iii) less code duplication, (iv) for many of these, more general bool-like parsing (accepting yes/true/1 and no/false/0 for all bool-like args). The only downside is that for a few of these, the else case (usually mapping to the default) didn't impose any constraints, so it may introduce some spurious errors. I've worked around this by adding some extra mappings for several of these. Remaining options with custom handling do something on top of just putting enum-like values into an Options member variable, so would need a more involved approach. -------------------------------------------------------------------------------- 12f90c9db4 | Nicholas Feinberg | 2022-05-12 07:56:49 -0700 Double demonic touch damage (hellmonk) Current demonic touch is generally considered a bit weak. Let's try making it wildly overpowered and then see where we want it to settle. -------------------------------------------------------------------------------- 3b3f824e1b | Nicholas Feinberg | 2022-05-12 07:49:26 -0700 Remove stoker's M_MAINTAIN_RANGE We must preserve orb spiders' mechanical uniqueness of 'being incredibly annoying'. Wind blast is quite enough on its own :) Also, increase their creeping infernos' durations so that they can do something before expiring. -------------------------------------------------------------------------------- ccd5019c30 | gammafunk | 2022-05-12 09:36:50 -0500 fix: Adjust a mini vault (Lici) For dispersion_dpeg, this vault dates from when traps could work out of LOS, hence monsters inside could easily teleport if they woke up before the player reached the vault. This wasn't a great gimmick overall, and the vault's contents would be relatively hard to access without blink, apport, etc. Rework the vault to feature a guaranteed path out of the center through either nothing or non-permanent teleport traps. Also use clear walls to prevent the vault from having spoiler/autoexplore issues. At least if the monsters don't disperse from the vault before the player arrives, the player will have enough time plan out their actions before monsters reach the traps. Also simplify loot placment and reformat DES. -------------------------------------------------------------------------------- e13fd1374b | gammafunk | 2022-05-11 18:43:41 -0500 fix: Adjustments to an arrival vault (personjerry) The vault erik_arrival_cave_to_temple had an area in a subvault that could place monsters and loot fully encased in stone. Have this area always place a door, introducing some clear stone so it won't be as much of a spoiler and autoexplore trap. The other subvault for this map placed monsters immediately behind a door followed by nasty monsters and altars behind digable walls. Remove the door to improve spoilers/autoexplore, and put the nasty area behind a runed door. Tone down the Abyss monster set to not place demonic crawlers on D:1, instead placing only the 5 class demon that can generate in the abyss. Fix `no_item_gen` masking and also add `no_monster_gen` masking to this section. -------------------------------------------------------------------------------- 846e4a0bbc | advil | 2022-05-10 14:45:14 -0400 fix: use rng::UI for help lookup (gammafunk) Previously, this would use the gameplay UI. I'm not sure this was particularly exploitable without crashes or the like, but would allow the player to tweak this rng in a fairly controlled way. -------------------------------------------------------------------------------- 17b9a4b632 | advil | 2022-05-10 12:34:24 -0400 fix: remove debug code -------------------------------------------------------------------------------- 1b0d357a27 | advil | 2022-05-10 12:34:24 -0400 fix: don't let help mark unrands as existing e9b396fb1906e62 generates the unrand to show its info in help lookup, and a side effect of the generation call marks the unrand as existing in you.unique_items. In consequence, a player can force arbitrary unrands that haven't yet generated to be (potentially) converted to fallback randarts by looking them up. I'm not sure if this is good for players to do or not but it's at least a very good bug. Resolves: https://crawl.develz.org/mantis/view.php?id=12702 -------------------------------------------------------------------------------- 12a17119fa | advil | 2022-05-10 12:34:24 -0400 fix: unbreak UNIQ_LOST_IN_ABYSS A bit too late, since it's now exceptionally rare for this to come in to play, but oh well. Since 850bfe61e39c27fcd unique item status would get (incorrectly, I believe) cast down to bool when setting UNIQ_LOST_IN_ABYSS, and get converted to UNIQ_EXISTS as a consequence. This tries to clarify the current statue of the API and restores what's left of this mechanism. -------------------------------------------------------------------------------- 47a863cc1b | Nicholas Feinberg | 2022-05-08 10:32:00 -0700 New wind drake & acid dragon tiles (Sastreii) -------------------------------------------------------------------------------- 297d3b089c | hellmonk | 2022-05-07 21:14:54 -0700 buff kiku torment Don't require a corpse. -------------------------------------------------------------------------------- f1fea46640 | hellmonk | 2022-05-07 21:06:13 -0700 feat: allow ranged pain Expand Kiku's brand capstone to ranged. -------------------------------------------------------------------------------- 665335d0ad | hellmonk | 2022-05-07 21:04:34 -0700 fix: correct kiku rtorm formula It was possible for partial torment protection to roll 0 damage reduction, but give the protection message anyway. Always reducing damage by at least 1 if the kiku passive triggers seems fine. -------------------------------------------------------------------------------- d8082fcd2d | Kate | 2022-05-07 22:34:36 +0100 Remove some obsolete default runrest_ignores (gammafunk) -------------------------------------------------------------------------------- 23c34f7495 | Kate | 2022-05-07 21:57:18 +0100 Adjust AM species recommendations Don't recommend Troll (since throwing is no longer a starting option), replacing them with Gnoll (since AM benefits from training lots of skills). -------------------------------------------------------------------------------- 9e3a32f71c | Nicholas Feinberg | 2022-05-07 09:33:35 -0700 Don't claim to clatter in silence (Monkooky) -------------------------------------------------------------------------------- 3d288355ac | Nicholas Feinberg | 2022-05-07 09:27:25 -0700 Fix artefact MP prop unequip effects -------------------------------------------------------------------------------- 94e2008b86 | Nicholas Feinberg | 2022-05-07 09:20:37 -0700 Remove MP when un-equipping +MP items (ɯ|s|ı|ʍ|o|ǝ|ɯ) Encourage making choices ("do I want +MP or wizardry?), rather than swapping off your =mp halfway through every fight. -------------------------------------------------------------------------------- 6960b1960d | Nicholas Feinberg | 2022-05-05 21:43:30 -0700 Tweak Gauntlet description (jumble) The last line was intended to describe the path through the Gauntlet arenas, but came across as saying 'once you enter a Gauntlet, the only way out may be through the arenas & the minotaur'. You can see the path through the arenas once you're there, so there's no need for this text. -------------------------------------------------------------------------------- 8b6f518c11 | Nicholas Feinberg | 2022-05-05 09:37:35 -0700 Deduplicate the 'soothsayer' title (Ge0ff) Replace Ashenzari's Soothsayer title (duplicates a Nem title) with a riff on Scottish freemasonry, plus shift some stuff around. -------------------------------------------------------------------------------- 7bf7899b20 | Nicholas Feinberg | 2022-05-05 08:46:13 -0700 Reduce some paralysis durations As part of the ongoing quest to make DCSS a little nicer and reduce 'feel bad moments', reduce the max paralysis duration for the Paralyse spell and from various god wraths from 7 to 5. Also remove some dead code and simplify logic for demonic magic. This does not affect the player paralysing monsters, only the player being paralysed. -------------------------------------------------------------------------------- b2816e9c68 | Nicholas Feinberg | 2022-05-05 07:05:13 -0700 Cap Zenata summons (Ge0ff) -------------------------------------------------------------------------------- f50f0a9fbc | Nicholas Feinberg | 2022-05-04 16:51:57 -0700 Fix the build -------------------------------------------------------------------------------- 4f0bcfc870 | Nicholas Feinberg | 2022-05-04 16:33:06 -0700 Randomize Gastronok's hair This is a little silly, but so's Gastronok. Gastronaut remains a player tile exclusive. -------------------------------------------------------------------------------- c08b2e8bf8 | nicolae-carpathia | 2022-05-03 17:09:34 -0400 Add the most nicolae demonic rune vault possible (#2260) * Add the most nicolae demonic rune vault possible I have reached my apotheosis: I have put a rune in a shop. Since the demonic rune repeats if you don't pick it up, I figured it would be the best option for a rune shop. (The abyssal rune also reappears if you don't pick it up, but the theme is easier to fit into Pandemonium.) If you already have the rune, the shop instead places another kind of rarity: a figurine of a ziggurat. (The only other really rare item I could think of was a quad damage, and I've been explicitly told multiple times that I'm not allowed to use those outside of Sprint. Tyranny!) Out of 25 generated shops, the stats on the price of a demonic rune: Minimum: 3804 Maximum: 8647 Average: 6640.76 St Dev: 1412.1 I didn't check the price stats on the zigfig because the rune is the real draw here. The vault also places fat stacks of cash, three other shops, and demon-summoning monsters from other branches as visitors. Enjoy! * Make adjustments to the pan bazaar rune vault Make some changes based on feedback from the other devs: 1) If you already have the demonic rune, instead of selling a zigfig, the central shop now just sells randarts. (I had underestimated the importance of zigfigs.) 2) The difficulty has been turned up a bit. The area outside the central area places more monsters now. 3) A few of the nonruniferous shops have been tweaked. -------------------------------------------------------------------------------- 277feda236 | gammafunk | 2022-05-03 11:26:53 -0500 fix: Remove an unused variable -------------------------------------------------------------------------------- d82a6b94f7 | gammafunk | 2022-05-03 11:11:21 -0500 fix: Adjustments to an arrival vault For `spicycebolla_arrival_teleportal_tutorial`, rename this vault to `spicycebolla_arrival_transporter_tutorial`, since the feature in question is called a transporter. Add a missing level connector to the path leading from the hatch. Remove some SUBST and SHUFFLE, relying in the default undefined glyph mapping to floor as well as the natural vault rotations that occur for variation. Reglyph and reorder transporter statements to straightforward entry/dest order, so the transporter definitions are easier to read. -------------------------------------------------------------------------------- 5102b3be25 | Nicholas Feinberg | 2022-05-02 18:34:57 -0700 Remove two-headed ogres from Lodul's band It's a bit mean to toss average 5, max 10 2-headed ogres at a D:9 player, much less accompany them with friends. Let's just make em basic ogres and see how that goes. -------------------------------------------------------------------------------- 84a40017fa | Nicholas Feinberg | 2022-05-02 18:15:34 -0700 Remove scrolls of holy word Scrolls of holy word are more or less the least interesting type of scroll currently in the game. They're irrelevant for the vast majority of the game, and when they are useful later on, it's not in a particularly interesting way. They don't create exciting situations or memorable moments, just inventory clutter. Let's cut em. TSO's holy word remains in place... for now. -------------------------------------------------------------------------------- fac262f41b | Nicholas Feinberg | 2022-05-02 18:15:34 -0700 New item: scroll of poison Inspired by the late and largely unlamented 'sea of fire' Ignis ability, the scroll of poison fills every unoccupied space on the screen with poison clouds for 10-20 turns. Early on, it can be a way to escape enemies or to attack them from range with impunity, especially with a source of rPois or some !curing. Later, it can damage enemies reckless enough to advance through, block more dangerous clouds, reveal invisible enemies, be ignited with Ignite Poison, trick enemies into walking into other clouds you've placed... and so on. It also can amuse Xom. It's closest to the condenser vane in use, but unlike the vane, it doesn't place clouds directly on enemies, place non-poison clouds, scale with Evo, or recharge. -------------------------------------------------------------------------------- 06c70da812 | advil | 2022-05-02 18:09:41 -0400 fix: remove =g inscription on autopickup ignore Otherwise autopickup gets stuck. This is similar to code that removes this inscription when explicitly dropping something. There's still a weird UI interaction with [a] and items that are being targeted for autopickup only because of a =g, but one that seems mostly harmless.. -------------------------------------------------------------------------------- 91724d5b39 | Nicholas Feinberg | 2022-05-01 16:16:31 -0700 Standardize screamitis conditions (ardl) Maybe don't scream at foxfires. -------------------------------------------------------------------------------- b5314be063 | advil | 2022-05-01 10:42:12 -0400 docs: document stair delays (catern) Previously, the stair-dancing penalty on re-entering levels was not documented except insofar as it was possible to notice it from the time indicator in-game. There's some discussion in the dev channel about whether this delay "matters", but if it exists, it should be documented at least minimally. Add a note to the manual and to the hints mode stair description. -------------------------------------------------------------------------------- d956c00756 | gammafunk | 2022-04-30 23:50:47 -0500 fix: Tweak monster placement in an early vault (dilly) For `dilly_guarded_unrand_morg`, the second-highest tier monster glyph probably shouldn't be an out-of-depth necrophage on D:2-D:3 when we're also placing either Natasha or phantom, both of which are pretty strong monsters at that depth. This vault is small and already places plenty of additional monsters. Have the second-highest tier monster simply be another derived undead on D:2-D:4, using it for something stronger only when the vault is placed at higher depth. -------------------------------------------------------------------------------- adf2fefa87 | Nicholas Feinberg | 2022-04-30 16:40:44 -0700 Fix natural_leader assignments The natural_leader field claimed to affect monster behavior, leading monsters to try to 'follow their leader'. This was a lie. The only effect that the field had was to credit the band leader for kills - 'killed by a 2-headed ogre (led by Lodul)'. This commit fixes documentation & adjusts many monsters. Notables include merfolk aquamancers/impalers/javelineers, Lodul, Josephina, Ilsuiw (+credit) and skeletal warriors, alligators, spriggan defenders (-credit). -------------------------------------------------------------------------------- c2b5878c41 | Nicholas Feinberg | 2022-04-30 14:06:13 -0700 Remove item destruction (Tukima^G) It's an unecessary gotcha/feelbad for Gozagites to permanently destroy weapons they've animated with Tukima's Dance. It also invites weird tactics - tukima-ing bad weapons to turn them into gold. Instead, don't. -------------------------------------------------------------------------------- a876b22402 | advil | 2022-04-30 09:43:04 -0400 fix: tweak rest/wait with inhibited regen Background terminology: CMD_REST triggers a "rest delay" if there's hp/mp/ancestor hp/barbs to rest off (details configurable), or a "wait delay" (which lasts a fixed amount of time) otherwise. Before this commit: * if you do CMD_REST with an inhibiting monster in view that can't reach you, a wait delay is started and lasts the full wait time (unless a reachable monster shows up of course). For example, a monster across deep water with no (direct-ish) path to you. * if an inhibiting monster that can't reach you enters view during either a rest or wait delay, it counts as safe and nothing happens, so if the monster stays in view, a rest proceeds infinitely (which gets detected and triggers a crash). A wait finishes normally. After this commit: * CMD_REST doesn't work at all with an inhibiting monster in view * both rest and wait delays are interrupted by an inhibiting monster, even if it can't reach you. We'll see whether this is annoying for some reason. A more nuanced behavior would be possible if there are common use-cases for waiting with an inhibiting monster that can't reach you in view. (It may still be possible to force an infinite rest by disabling seen monster interrupts. One complication here is that there is currently no particularly good way to detect when the -Regen status actually turns on, because it all happens indirectly. But possibly the game should also detect this and send a full_hp interrupt in this case.) -------------------------------------------------------------------------------- d383c6f625 | gammafunk | 2022-04-30 02:56:29 -0500 fix: Don't consider launcher skills for ammo gifts (elliptic) Before ammo removal in a8e9c987, Okawaru could gift ammo for launchers based on skill training. The gifting code wasn't updated for ammo removal, hence Oka is gifting excessive/unwanted throwing gifts for players with launcher skills trained. Update the relevant code to only consider throwing skill. -------------------------------------------------------------------------------- 921d912d32 | gammafunk | 2022-04-29 04:01:54 -0500 feat: Some adjustments to unrand vaults dilly_guarded_unrand_throatcut: Scale the monsters better with depth. Adjust the skeleton placement so that it's spread within each of the two rooms, so that both rooms always get skeletons. dilly_guarded_unrand_morg: Adjust monster set and placement to better scale with depth. Use spectral things and simulacra and a wight band for the single "boss" monster on D:5-7, and use either skeletal warrior or less commonly a death knight for the boss monster on D:8-D:9. Give the dead trees their usual custom description, and give them special coloring for console. dilly_guarded_unrand_devastator: Rework the monster list to better connect with the themes of Devastator, and improve scaling with depth. Use ogres as the basic threat, using normal ones for D:4-6 and two-headed ogres for D:7-12. Introduce one gargoyles for D:7-D:9, adding more for D:10-12, also adding a boulder beetle for that same range. Place the unrand centrally in the vault, and make all statues use the "orb" tile, since that visually best matches the theme. Closes #2527. -------------------------------------------------------------------------------- b676c2808e | dilly | 2022-04-29 04:01:28 -0500 Some guarded unrand vaults For Morg, Devastator, and Throatcut. Committer's Note: Squashed commits and reworded commit message. -------------------------------------------------------------------------------- 5854e031c7 | advil | 2022-04-28 15:45:11 -0400 fix: ignore some disabled interrupts in rest checks Before this commit, disabling rest interrupts could result in infinite rests (and then a crash on demand in code attempting to detect them). This commit changes things so that if hp or mp interrupts are disabled, they are not factored into whether a rest can be started -- so if both are disabled, resting actually becomes impossible (and a wait will be started instead). That is, a rest that can't be interrupted is never started. I think this may still have a weird interaction with ancestor_hp, which I don't quite understand and haven't changed. -------------------------------------------------------------------------------- 2d807254ef | advil | 2022-04-28 15:36:51 -0400 fix: hardcode an activity interrupt for barb removal No rc options should be able to trigger an infinite rest, but currently because of the way resting is implemented, if the regular interrupt conditions are satisfied before the barb duration is cleared, only a message interrupt (easily disableable) remains to stop the rest, making it easy to force an infinite rest. In the past this has typically happened by accident (e.g. as in 8ed1089bbe3), but it could also be used to force a crash on demand and reset levels. This commit takes a slightly hacky approach, and sends a full hp interrupt explicitly when barbs are removed. It doesn't seem worth adding a specific barb interrupt. But as long as barbs' interaction with resting is hardcoded (see player::is_sufficiently_rested), something hardcoded needs to happen on the end of a barb duration. -------------------------------------------------------------------------------- 8ed1089bbe | advil | 2022-04-27 19:24:32 -0400 fix: don't parse bad channels as no channel in runrest rc lines This was happening because the crawl code returns nil on the error case for parsing a channel name, which is then passed to crawl.message_filter as a channel arg. Since this function supports channel as an optional arg, nil maps to no channel (-1). So the gammafunk rc line `ignore += pray:` actually sets a runrest_ignore for basically any message. After this change, the code errors and prevents the line from being used at all, in line with what happens in channel parsing in initfile.cc. Also fixes a buggy ignore involving Jiyva. (Though probably this should only look for one word channel names?) Note that this doesn't fix a larger issue leading to this commit, which is that it is still possible to write runrest_ignore_message lines that trip the buggy rest ASSERT under the right circumstances. -------------------------------------------------------------------------------- 541a27f54d | Kate | 2022-04-26 21:19:08 +0100 Destroy melded cursed items on Ash abandonment They were just falling off instead, leaving the player with cursed items in their inventory. -------------------------------------------------------------------------------- ccd5be9afd | advil | 2022-04-26 13:57:08 -0400 fix: improve arena cancel/end behavior * Remove all delays on cancelling, these are just confusing. * Show popup if any trials have occurred, even if no explicit t:1 flag has been set. I guess it may not be super informative with only one trial, but there's no other good way to see the log if you want it. This includes even the cancellation case, but only if at least one complete trial has occurred. * Add some more messaging around cancelling. I wonder if there are interesting stats the final popup could show? While testing this I noticed all sorts of other flaky behavior. Sampling: Sometimes cancelling still results in a delay with a blank screen. In console when I hit space during the first trial, there is a redraw that wipes out half the banner. Sometimes the cursor shows up in an ugly way (but sometimes it doesn't). -------------------------------------------------------------------------------- 2679155cab | advil | 2022-04-26 13:57:08 -0400 fix: more consistent right click handling in main menu As noted in #2528, a bunch of main menu popups or submenus weren't correctly handling right clicks to exit. This should standardize the behavior. (Caveats: I still don't really understand why right click is best detected using `CK_MOUSE_CMD`, and I had do something a bit dodgy to get good handling of this for the seed/arena text entry boxes. Also, what would be much better is a click outside to close behavior, similar to how webtiles mouse handling works, which would probably address the touchscreen issues in that #2528.) -------------------------------------------------------------------------------- 7bc237e783 | Nicholas Feinberg | 2022-04-24 15:23:45 -0700 Nerf Vv melee again Post-602b31c20e3eccb, Vv became a lil too lethal. Move melee down to 35/35, from 45/45. -------------------------------------------------------------------------------- 7276a9ff7f | advil | 2022-04-24 13:56:04 -0400 refactor: misc opengl comments / refactoring This is not a very focused commit, just a bunch of tweaking and some commenting I added while trying to understand parts of this code a little bit better. -------------------------------------------------------------------------------- b366d0e2d1 | advil | 2022-04-24 13:42:24 -0400 fix: tile sheet tweaks for better packing This is basically an emergency patch to get the player.png tile sheet size below height 2048, which won't work as a long term solution for the relevant issues but can be back-ported to 0.28 at least. If the tile sheet size exceeds 2048, on local tiles, it requires a 1024x4096 size texture atlas. Any modern hardware will support this, but a non-trivial amount of older or cheaper hardware won't[1]. Before 0.28, we had been able to keep most tile sheets to 1024x1024 with the exception of wall.png and player.png, both at 1024x2048. This is still not ideal (https://crawl.develz.org/mantis/view.php?id=11378), but this is something like 1% of graphics cards these days, as opposed to 6% for not supported 1024x4096. Various additions in 0.28 pushed player.png up across this threshold. In the long run, it would be much better if tile sheets were automatically split up and the implementation weren't tied to the size of the tile sheet. However, the tech cost for doing this is really painful, as the local tiles buffer implementation is really deeply tied to the assumption that each texture atlas is stored in a single 2D texture. So since I was able to tweak things to get player.png down a bit, I'm going with that for now. [1] https://feedback.wildfiregames.com/report/opengl/feature/GL_MAX_TEXTURE_SIZE -------------------------------------------------------------------------------- 370832a12f | advil | 2022-04-24 13:23:57 -0400 fix: remove lava orcs ...from the tile sheet. -------------------------------------------------------------------------------- 0917bc69df | advil | 2022-04-22 15:41:51 -0400 fix: add a missing MF_ARROWS_SELECT check (elliptic) This was correct in webtiles, missing in local menu code. Practical impact: with `menu_arrow_control=false` this lets space act as page down (where before it would be a noop under this setting). -------------------------------------------------------------------------------- cb44be3569 | advil | 2022-04-22 12:56:40 -0400 fix: force build sqlite from contribs on msys2 This addresses the following issue (in a probably non-ideal way): on current msys2 `pkg-config sqlite3 --cflags-only-I` returns `-IC:/msys64/mingw64/include`. For reasons that aren't entirely clear to me (maybe just to suppress warnings) we sed -I into -isystem. This runs right up against https://github.com/msys2/MINGW-packages/issues/10761, breaking the build in a fairly basic way. It would probably be somewhat better to find a way to allow building of sqlite3 via pkg-config, but for now I'm just going to disable this, which does fix the msys2 build in my testing. Resolves #2440. -------------------------------------------------------------------------------- 7790a0e70a | Nicholas Feinberg | 2022-04-21 21:33:47 -0700 Tweak tile saturation (ardl, others) Make salamanders slightly easier to see in lava, and wind drakes slightly easier to see in shallow water. -------------------------------------------------------------------------------- bb8214d451 | Nicholas Feinberg | 2022-04-21 21:33:47 -0700 Buff Hat of the Bear Spirit (ardl) :berserk: -------------------------------------------------------------------------------- d15c067e26 | Nicholas Feinberg | 2022-04-21 21:33:47 -0700 Make allies default to attacking One of the most confusing and annoying things for players about allies is that, by default, they will not attack enemies. If you or your ally is hit by an enemy, or if you attack an enemy or order an attack, or if you tell your allies to wait/guard, they'll attack; otherwise they'll follow you uselessly. This feels buggy to players - understandably! Change allies to default to attacking enemies instead. This is a slight buff to summoning allies out of sight of enemies & a nerf to trying to sneak around while hanging out with allies, but hopefully is a net improvement to the player experience. -------------------------------------------------------------------------------- 46f7bbceaa | Nicholas Feinberg | 2022-04-21 21:33:47 -0700 Move D enemies that encourage retreating later (dilly) Certain monsters are designed to have 'strong phases' and 'weak phases'. Sky Beasts go invisible and visible; Death Knights turn their pain mirror on and off. It's often wise for players to retreat while those monsters are in their 'strong' state & to fight again later. With the addition of 'attacks of opportunity', this is sometimes more dangerous. To compensate, move death knights & sky beasts slightly deeper. -------------------------------------------------------------------------------- a87a4c8c21 | Nicholas Feinberg | 2022-04-21 21:33:47 -0700 Don't rate Damnation's damage (particleface) It's off the charts! -------------------------------------------------------------------------------- 1716ac0dbf | Nicholas Feinberg | 2022-04-21 21:33:47 -0700 Simplify damage rating display (ebering, elliptic) The "damage per time" display was more misleading than helpful, since it didn't account for enemy AC and also rounded delay aggressively. The latter is fixable, the former isn't. Since delay is displayed on the line above, let players do the math & simplify the damage rating down to a single line. -------------------------------------------------------------------------------- e2f44be95a | gammafunk | 2022-04-20 13:15:54 -0500 feat: Rebalance the slime special room Remove the dependency on absdepth, instead using simple monster lists conditioned by branch. We don't need weight scaling by depth for a vault placing only on Lair:$ and endgame branches. Remove the endoplasms completely, since they're total chaff, using more jellies instead in Lair and more slime creatures in Slime and Depths. Likewise don't use jellies in Slime and Depths. Nerf the amount of rockslimes, treating them on par with acid blobs as the top tier threats, favoring quicksilver oozes and to a lesser extent azure jellies. This tones down the vault in Lair:6 a good deal, but you're still getting two top tier slimes on-average, decent numbers of mid-tier slimes, and the removal of endoplasms. It will remain a quite nasty (and rare) Lair:6 vault that will cause the player to abandon the level for a while in many cases. The vault should also now pose a better threat in Slime and Depths with all the chaff removed; in these places the top tier slime monsters get higher weighting. We also introduce golden eyes and shining eyes in these branches. -------------------------------------------------------------------------------- 3af9d588a4 | gammafunk | 2022-04-20 13:15:29 -0500 feat: Simplify chances for special rooms For the `special_room` vault, currently there's a 0.5% chance to place this vault in Slime, a 1% chance to place this in Orc, Spider, Crypt, and Pan, and a 3% chance to place it elsewhere. There's no reason to have different yet extremely similar chances for this vault among the non-extended branches. This commit uses a 2% chance for non-extended branches and 1% for the Hells and Pan. This will reduce the frequency of special rooms somewhat, but the vault does have `allow_dup` and hence still has a decent chance of being seen one or more times for each complete game. The 1% chance for extended branches isn't quite justified either. Arguably it might have some impact on balance for the Hells. For Pan we have potentially infinite levels, so it may be good to reduce its frequency. I'll keep it at 1% in these branches and leave any adjustment to people wanting to tweak extended. -------------------------------------------------------------------------------- 5774675eae | gammafunk | 2022-04-20 12:58:52 -0500 fix: Clean up DES syntax -------------------------------------------------------------------------------- 24ffce5b50 | advil | 2022-04-19 10:25:44 -0400 docs: update map mode help with ctrl-c change Since 4d47a7520311 this no longer forgets item info. -------------------------------------------------------------------------------- 6efceafd81 | Neil Moore | 2022-04-19 01:00:30 -0400 Simplify calls to, and defaults for, clear_map(). Make the clear_items argument default to false, since that is usually (in fact, now, always) how we call it. No one currently calls clear_map() with clear_items == true or clear_mons == false, so this could be simplified even further, but I didn't want to take that step quite yet. Specifically, I didn't want to rename the function to "clear_map_monsters()" or such, since it does also clear clouds. -------------------------------------------------------------------------------- 4d47a75203 | Neil Moore | 2022-04-19 00:55:45 -0400 Clear monsters but not items, on Ctrl-C and X Ctrl-C. The idea being that, nowadays (unlike when these commands were introduced), most items cannot be moved or destroyed once they have been seen, so there is very rarely a reason to want to forget them. Arguably these commands should also forget corpses, since they do decay. But I did not want to add that extra complexity to clear_map's interface. -------------------------------------------------------------------------------- 1ff7896281 | Nicholas Feinberg | 2022-04-16 20:22:31 -0700 Simplify Lugonu's Bend Space Remove the damage component (tiny and irrelevant) and the chance of blinking monsters away from the origin (actively counterproductive). Make it much more likely to blink monsters away from the destination. Remove invocations scaling - Lucy's other abilities offer great incentive for invo training already, so there's no particular need to complicate this one. -------------------------------------------------------------------------------- 68df138881 | Nicholas Feinberg | 2022-04-15 09:20:30 -0700 Make hell knights into priests Make them evil without making TSO celebrate the deaths of 6/7 orcs. -------------------------------------------------------------------------------- af92d4a5d6 | Nicholas Feinberg | 2022-04-15 09:03:32 -0700 Make Hell Knights evil again (catern) Lost this when they lost Pain. Slightly hacky. -------------------------------------------------------------------------------- 76187f39e0 | Nicholas Feinberg | 2022-04-15 08:59:26 -0700 Cut naga warrior hp by 20% They're by far the top killer in Snake since their buff, and players note that their tankiness to killpower ratio is a bit high. Let's dial them back some. -------------------------------------------------------------------------------- b41bcbb86e | Nicholas Feinberg | 2022-04-12 15:46:29 -0700 No Usk piety for non-hostiles (Ge0ff) "how to tele-frag Crazy Yiuf with 0 Invo: 1. summon 100 spammals and slowly build up piety..." -------------------------------------------------------------------------------- b4c28e87c6 | Nicholas Feinberg | 2022-04-12 09:05:37 -0700 Fix/simplify damage rating + ench/slay Base damage was incorrectly treated as about twice as good as it is on average. Damage rates are now about 2x mean damage. -------------------------------------------------------------------------------- 5e1b129e87 | Nicholas Feinberg | 2022-04-12 08:47:45 -0700 Fix Yara's + Petrify (various) Dispelling the 'petrifying' status should not cause 'petrified'. -------------------------------------------------------------------------------- 4a08ba55a3 | Nicholas Feinberg | 2022-04-12 08:31:40 -0700 Remove brand damage rating Think it was more misleading than helpful. -------------------------------------------------------------------------------- 52719c12eb | Nicholas Feinberg | 2022-04-11 21:10:59 -0700 Display a 'damage rating' in weapon descriptions I don't like some parts of this (the brand rating should probably live with the brand description) but it's better than nothing, maybe. Let's see! -------------------------------------------------------------------------------- 0b05bf5e21 | Nicholas Feinberg | 2022-04-11 21:07:53 -0700 Describe monster unblindability (Lici) -------------------------------------------------------------------------------- 65376010d4 | Nicholas Feinberg | 2022-04-11 20:59:33 -0700 Fix penetrating launchers + throwing (particleface) Thrown items would inherit penetration from a wielded weapon (eg, the Storm Bow), allowing them to pass through enemies and shields. Fix this. -------------------------------------------------------------------------------- bb24c3b5da | Nicholas Feinberg | 2022-04-11 20:53:47 -0700 Simplify some throwing checks -------------------------------------------------------------------------------- 28c3e03cda | Nicholas Feinberg | 2022-04-11 20:47:21 -0700 Give Usk piety for summons and such Hopefully this isn't abuseable! It seems nice, though. -------------------------------------------------------------------------------- 72f4aa029e | Nicholas Feinberg | 2022-04-11 20:27:18 -0700 Simplify -------------------------------------------------------------------------------- 7bc3a90fb7 | Nicholas Feinberg | 2022-04-11 20:00:58 -0700 Don't recommend OgHu/TrHu (ardl) Since they can't throw the game anymore. -------------------------------------------------------------------------------- 050149af67 | Kate | 2022-04-09 18:03:57 +0100 Fix Delatra's Gloves not healing on lignification quaff-id (#2521) Adds a check for whether the gloves are worn before triggering the potion effect, so that as long as they're unmelded when the potion is quaffed the player will still be healed on quaff-id. Closes #2521. -------------------------------------------------------------------------------- 68df515428 | Neil Moore | 2022-04-04 18:38:01 -0400 Fix grammar for artefact bardings with Regen (jillest) Fixes #2514. -------------------------------------------------------------------------------- f1c400731a | Aliscans | 2022-04-02 14:55:46 +0100 FIX Remove an erronous "the" from a message. The player can see invisible monsters which are bribed, charmed or hexed. When the status is lost, the monster may suddenly vanish. This changes the message this generates from "You can no longer detect the Sigmund." to "You can no longer detect Sigmund.". The "the" is retained for non-unique monsters. -------------------------------------------------------------------------------- 9f8742066b | Nicholas Feinberg | 2022-04-01 20:59:30 -0700 End the day Fly away, little mayflies. Come again another day. -------------------------------------------------------------------------------- ad05b8d819 | hellmonk | 2022-04-01 00:19:50 -0400 mayflytaurs -------------------------------------------------------------------------------- b333ed421b | hellmonk | 2022-03-31 22:39:26 -0400 delete a buggy vault -------------------------------------------------------------------------------- d16b76e6b1 | Kate | 2022-03-29 20:54:26 +0100 Stop constriction on transforming into an immune form -------------------------------------------------------------------------------- 2ae49fcbb9 | Nicholas Feinberg | 2022-03-29 07:28:01 -0700 Replace Oka's Warrior title (Ge0ff) Duplicates a Fighting title. -------------------------------------------------------------------------------- af6dd05e2f | advil | 2022-03-28 20:38:42 -0400 fix: add some 0 checks for %s in quiver code mod 0 can result in a divide by 0 error (really, it's undefined per the spec). -------------------------------------------------------------------------------- b00dd7cb4b | advil | 2022-03-28 17:37:51 -0400 fix: clarify the conditions of a movement message As illustrated in a discussion on discord this morning, this message didn't succeed in explaining what the exact problem is. Make it more specific. -------------------------------------------------------------------------------- f2db06da9e | Nicholas Feinberg | 2022-03-28 10:32:14 -0700 Allow creeping frost animation to be disabled (Lici) -------------------------------------------------------------------------------- 43bc051769 | Nicholas Feinberg | 2022-03-28 08:04:08 -0700 Correct Weak status description (dilly) -------------------------------------------------------------------------------- cbd9eb2193 | Nicholas Feinberg | 2022-03-27 14:56:41 -0700 Prevent 'failure to reach' for protected allies If you can freely shoot through Hep ancestors, Fedhas plants, etc, you should probably be able to reach through them as well. -------------------------------------------------------------------------------- d3370f49d2 | Nicholas Feinberg | 2022-03-27 14:56:41 -0700 Narrow Amaemon's range some Cut D:12, Orc:1, and Lair:4 from the spawn range. Poor fella just wasn't getting any kills there. -------------------------------------------------------------------------------- 11dafa56b2 | Nicholas Feinberg | 2022-03-27 14:56:41 -0700 Make Parghit's will indomitable 100 -> 140. Make him a lil trickier to hex. -------------------------------------------------------------------------------- 4e025c60ea | Nikolai Lavsky | 2022-03-27 09:58:00 -0700 fix: display Irradiate damage in monster descriptions -------------------------------------------------------------------------------- ecccbbdb84 | Nicholas Feinberg | 2022-03-26 14:23:15 -0700 Nerf mummies (increase consumable generation) To further compensate for attacks of opportunity & to adjust difficulty downward, generate about 18% more potions and about 12% more scrolls. Might be good to do a second pass at this point and shave down weights of 'strategic' scrolls (?ew, ?ea, ?bw, ?amnesia, ?id, ?acq) somewhat. -------------------------------------------------------------------------------- 7fa12cc219 | Nicholas Feinberg | 2022-03-26 14:06:36 -0700 Actually simplify Majin-Bo damage ??doh -------------------------------------------------------------------------------- 093c7b3b58 | Nicholas Feinberg | 2022-03-26 13:42:19 -0700 Simplify Majin-Bo vampirism Majin-Bo has a great deal of variance, both strategic (not affecting demons/undead, forbidden by good gods) and tactical (heals for 1d at a 60% chance). Simplify by upgrading the healing to a 100% chance. -------------------------------------------------------------------------------- b34f9e133a | sdynet | 2022-03-25 09:45:25 -0700 Update Korean translation (gods.txt) Closes #2497. -------------------------------------------------------------------------------- e4682ce883 | Kate | 2022-03-24 19:01:32 +0000 Fix a yellow draconian acid splash check Don't splash onto battlespheres/spectral weapons/god-protected friendlies. -------------------------------------------------------------------------------- 543d47181c | Kate | 2022-03-24 19:01:32 +0000 Reword some attack prompts -------------------------------------------------------------------------------- defda700fc | Kate | 2022-03-24 19:00:30 +0000 Don't consider avatars valid targets for Cleansing Flame (surr) Prevents battlespheres/spectral weapons from giving prompts when activating Cleansing Flame, since the effect itself already ignores them. -------------------------------------------------------------------------------- efd9c33606 | Kate | 2022-03-23 15:48:29 +0000 Prevent piety troves from generating under Yredelemnul (hellmonk) -------------------------------------------------------------------------------- 4c793a2ed2 | Nicholas Feinberg | 2022-03-23 07:39:03 -0700 Disable AF_BLINK for AOOPs Crashes if the blink frog blinks into the player. -------------------------------------------------------------------------------- 3c90f9a769 | Nicholas Feinberg | 2022-03-21 17:24:01 -0700 Increase Hexer attack speed Compensating for the loss when monster attack went to speed 1. -------------------------------------------------------------------------------- 7659ce593d | Kate | 2022-03-19 11:41:59 +0000 Remove Haste from spell libraries on ancient save transfers It crashed when cast, since it's now a monster-only spell. Also clean up some duplicate checks for other spells that have been entirely removed. -------------------------------------------------------------------------------- da187f2e07 | advil | 2022-03-18 15:28:15 -0400 docs: fix/clarify runrest prepend vs append The docs are overall not very consistent, but for options where it matters, there seems to be a preference to teach ^= as the default. I've switched runrest_stop_message and runrest_ignore_message to this, since this is what you need to do to override defaults (in fact there was a non-working snippet here following 80dc71225541). I've also tried to clarify that ^= matters for the interaction of the two. -------------------------------------------------------------------------------- 497ad06e87 | Nicholas Feinberg | 2022-03-18 08:26:51 -0700 Remove self destructs of opportunity Fix a crash with creeping infernos and generally reduce surprising weirdness. -------------------------------------------------------------------------------- 83ea962da3 | Kate | 2022-03-17 17:11:21 +0000 Mark necromancy spellbooks as evil (#2491) Closes #2491. -------------------------------------------------------------------------------- 48ae54a172 | Kate | 2022-03-17 17:11:21 +0000 Fix messaging for -Potion/Scroll durations in Hell -------------------------------------------------------------------------------- fed8413159 | Kate | 2022-03-17 17:11:21 +0000 Adjust some mutation descriptions Clarify that demonic touch grants a new aux attack instead of changing the standard off-hand punch, and remove some redundant details for claws. -------------------------------------------------------------------------------- a4d04cda05 | Nikolai Lavsky | 2022-03-17 17:01:25 +0000 fix: add a space for fellow slimes Fixes a missing space in the monster list. -------------------------------------------------------------------------------- 9d40539af8 | Nicholas Feinberg | 2022-03-17 08:59:58 -0700 Improve creeping frost animation Display it as appearing on all cells that are adjacent to walls and don't contain visible allies of the caster. This should hopefully clarify how it works. -------------------------------------------------------------------------------- 2178c42546 | Nicholas Feinberg | 2022-03-16 12:26:16 -0700 Don't tell ball lightning to rot Fix a bug in which taking stairs while adjacent to ball lightning would claim the ball lightning 'stayed behind to rot'. -------------------------------------------------------------------------------- 92b06acc75 | Nicholas Feinberg | 2022-03-16 12:19:52 -0700 Mark Anguish as dispellable (Dinky) It is magical, after all. -------------------------------------------------------------------------------- 2a1340cf14 | Nicholas Feinberg | 2022-03-16 12:18:11 -0700 Bump up shadow dragon scales AC From 10 to 11. Puts em a bit higher than storm dragon scales, but with an arguably worse innate ego, and still a point below gold dragons. -------------------------------------------------------------------------------- 41199d4a87 | Alex Jurkiewicz | 2022-03-15 11:12:25 +0200 Add MUT_DEVOUR_ON_KILL description -------------------------------------------------------------------------------- 0902485e31 | Alex Jurkiewicz | 2022-03-15 11:12:25 +0200 Convert Ghoul devour-on-kill to a mutation This behaviour was previously hard-coded. I considered an alternate implementation of creating US_HUNGRY_UNDEAD. This ended up creating a lot more code and making undead state checks more complex, so I discarded it. -------------------------------------------------------------------------------- f9362112df | advil | 2022-03-13 17:01:39 -0400 docs: improve keymap documentation in options guide The main point of this change was to add K4, which was missing entirely, but I cleaned up and clarified a bunch of other things here. -------------------------------------------------------------------------------- a02f740833 | Perry Fraser | 2022-03-12 22:16:33 +0000 fix: remove surprious space in regen description -------------------------------------------------------------------------------- 1fd2556b9a | Nicholas Feinberg | 2022-03-12 08:44:37 -0800 Prevent opportunity attacks from slower monsters When moving away from monsters that move more slowly than the player, don't allow those monsters a chance at launching an opportunity attack. Such attacks are unintuitive and don't serve any design purpose. This affects the worm vs human and most monsters vs felid/spriggan dynamic. -------------------------------------------------------------------------------- 0ef121a99b | Kate | 2022-03-12 15:48:41 +0000 Add a (redundant?) orb check Preventing pickup AI from considering orbs for two-handing/dual-wielding monsters. -------------------------------------------------------------------------------- d808a8bb3c | Kate | 2022-03-12 15:45:21 +0000 Allow gifting orbs to Beogh orcs Giving your allies orbs of mayhem is now possible, if potentially unwise! -------------------------------------------------------------------------------- 7c249980d5 | Kate | 2022-03-12 15:40:29 +0000 Update a hint To reflect the fact that orbs also take up the offhand slot, for ranged weapon users. -------------------------------------------------------------------------------- 1c2307e1b3 | Nicholas Feinberg | 2022-03-12 07:05:33 -0800 More early-game monster nerfs In the interest of adjusting difficulty, tune down base damage and/or HP slightly on adders, phantoms, scorpions, and Sigmund. -------------------------------------------------------------------------------- 1251d06ae9 | Kate | 2022-03-12 14:51:58 +0000 Don't let monsters wield two weapons and a shield No more 3-handed blademasters. -------------------------------------------------------------------------------- e21a839c99 | Nicholas Feinberg | 2022-03-12 06:43:05 -0800 Make hunters more dextrous Since that's quite important for them now. -------------------------------------------------------------------------------- 389c0b56f3 | Edgar A. Bering IV | 2022-03-08 17:28:25 +0200 docs: fix changelog (gammafunk) -------------------------------------------------------------------------------- 17cd264cf9 | Edgar A. Bering IV | 2022-03-08 17:23:29 +0200 docs: update changelog -------------------------------------------------------------------------------- 8310661d2b | Edgar A. Bering IV | 2022-03-08 16:10:51 +0200 fix: don't give frightened monsters opportunity attacks (iamserjio) -------------------------------------------------------------------------------- 84ccd498e3 | Edgar A. Bering IV | 2022-03-08 08:33:34 +0200 wip changelog -------------------------------------------------------------------------------- d4eb659eea | advil | 2022-03-07 17:16:21 -0500 fix: allow anon spectating I guess everyone assumed that this was disabled because of account hold stuff and that's why no one told me this was broken, but it was just broken by mistake. -------------------------------------------------------------------------------- 1586fc07ea | Kate | 2022-03-07 02:03:29 +0000 Adjust an ice cave entrance ice_cave_statue_garden_transporter could place fast simulacra so close to the player that they couldn't safely leave if they decided to immediately abandon the vault after entry. Put the exit adjacent to the entrance, and move some of the monsters further away. Nagas and Chei worshippers are still out of luck against harpy simulacra, but at least can't get constricted by anaconda simulacra when trying to leave. Nagas of Chei simply suffer (and maybe this and similar portal vaults should be reworked further to make leaving safely always be possible). -------------------------------------------------------------------------------- 2e7ade144c | hellmonk | 2022-03-06 20:15:57 -0500 brutally nerf baileys Baileys had a very high kill rate and closing attacks probably make it worse. -------------------------------------------------------------------------------- 5627465c62 | Kate | 2022-03-06 17:27:00 +0000 Fix Ignite Poison's targeter leaking information It displayed the locations of invisible poisoned monsters - don't count them during the spell tracer. -------------------------------------------------------------------------------- e8b325be47 | Nicholas Feinberg | 2022-03-06 07:05:14 -0800 New Vv and Zenata tiles (Sastreii) Oooooh -------------------------------------------------------------------------------- f56f883ddd | Nicholas Feinberg | 2022-03-05 11:16:01 -0800 GOOE adjustments - Remove rPois (why is it there? Predates Stone Soup) - Remove from Depths - Roughly double Vaults weight, replacing wizards Try to have em place somewhere they have a chance of working. -------------------------------------------------------------------------------- b1efcce96a | Nicholas Feinberg | 2022-03-05 11:05:07 -0800 Uncomment a very important line (Yermak) Oops! -------------------------------------------------------------------------------- d32acbc352 | Nicholas Feinberg | 2022-03-05 10:57:33 -0800 Show LRD damage in monster desc (ardl) -------------------------------------------------------------------------------- 404d694432 | Nicholas Feinberg | 2022-03-05 10:49:50 -0800 Unrand tweaks - Glaive of the Guard: ench +8 -> +5. Ludicrously strong. - Damnation: 3d14 -> 2d14. Compensation for ammo removal. (Funny alternative: drain on fire...? Probably better not.) - Gyre & Gimble: ench +7 -> +12. Make it more competitive with non-unrand short blades. -------------------------------------------------------------------------------- d12d1d25ed | Nicholas Feinberg | 2022-03-05 10:46:01 -0800 Swap radroaches and meliai in spider Latter seem more threatening in practice. -------------------------------------------------------------------------------- f2a2391c1e | Nicholas Feinberg | 2022-03-05 10:44:31 -0800 Reduce meliai Spider gen Too rude. -------------------------------------------------------------------------------- 7e222a1f62 | Nicholas Feinberg | 2022-03-05 10:39:53 -0800 Reduce merfolk net gen (meowsim) To reduce "chain netting" of the player & general overabundance of nets in Shoals, drop from a 1/4 to 1/8 chance of any given merfolk spawning in with a throwing net. Average drops from 8.4 to 4.5 nets per Shoals. -------------------------------------------------------------------------------- d469af4107 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Implement closing attacks An experimental way to discourage long-distance luring or so-called 'pillar dancing', which tends to be rather repetitive and not very fun. Gives monsters a 1/3 chance to get a free attack when the player moves away from them. This only costs energy for enemies that attack slowly, like ogres and juggernauts. Wu Jian martial attacks & rampaging give immunity, and monsters that don't move fast enough to follow you can't attack. This should have a minimal impact on most normal fights, and even allow repositioning across a reasonable distance with adjacent enemies. -------------------------------------------------------------------------------- 7d8c13d22b | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Revert "Re-randomize energy temporarily" Obsoleted by closing attacks. This reverts commit 333b8329f1cbc402d63d599db9b7d6ba7397d29b. -------------------------------------------------------------------------------- a581b86abd | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Don't recommend pillar dancing Fie! -------------------------------------------------------------------------------- eff9672185 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Improve characters' starting kits (Hellmonk) One of the most interesting and exciting decisions in Dungeon Crawl is when and where to use your consumable items. In the very early game, characters may not yet have any consumables, which diminishes the tactical aspect of the game. So, let's try to give most characters some options which, if used wisely, can help them with a tough situation. - All 'mages' ('pure casters') start with a potion of magic. - Gladiators get a throwing weapon; javelin, large rock or boomerangs. - Monks get a potion of ambrosia. (See, it's divine.) - Hunters get a scroll of immo. - Brigands get an additional poisoned & curare dart. - Artificers trade their xom piece for nine charges of iceblast. - Wanderers get an additional random potion or scroll. - Delvers get nothing, for now, since I'm already pretty happy with how they play. They're a challenge anyway, really. :) - Berserkers and Cinder Acolytes likewise get nothing. They already have perfectly good early game buttons. - Abyssal Knights start at 60 piety (just over 2*) instead of 38 (just over 1*). This should allow them to use Bend Space if needed. (I think they're still quite weak.) - Chaos Knights get Artificer's xom chesspiece. - Transmuters get a potion of lignification, which should work well with their unarmed combat focus. It's also very thematic. - Warpers get more boomerangs of dispersal. - Arkane Markspersons get a scroll of vulnerability. - Enchanters get another potion of invisibility. - Fighters are unchanged. This should also be a nice compensation for various recent changes that increased early game difficulty. -------------------------------------------------------------------------------- 6e15ea0a97 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Weaken early spawns somewhat Take top killers and make em a bit less common. (Ogres, centaurs, water moccassins, 2hos, and hydras.) Also move Harold a bit deeper. Lad is a terror. -------------------------------------------------------------------------------- 614883fcd9 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Make ogres attack more slowly To make their gimmick more noticeable and easier to reason about, make em swing at 1.5 aut/per instead of 1.3. Buff damage slightly, but not enough to fully compensate (ignoring AC). Change 2HOs, ogre mages, Erolcha, thunderhulks and Lodul to match. Considered including ettins too, but it might be a bit much... -------------------------------------------------------------------------------- 68b12284db | Edgar A. Bering IV | 2022-03-05 15:37:22 +0200 docs: update CREDITS.txt -------------------------------------------------------------------------------- 24134d049f | Perry Fraser | 2022-03-05 15:22:12 +0200 fix: make color tags render in MessageRegion [ Closes #2302. ] -------------------------------------------------------------------------------- 80730f7218 | Kate | 2022-03-04 22:09:13 +0000 Improve wording in ranged weapon descriptions -------------------------------------------------------------------------------- 811e9ec5e5 | Kate | 2022-03-04 22:09:13 +0000 Reduce the amount of wand charges in a shop The gimmick of the vault is overcharged wands, but guaranteeing the maximum number of charges is already a significant amount compared to normal generation, so giving a 66% bonus on top of that was excessive. Reduce it to 25%, and slightly reduce the prices. -------------------------------------------------------------------------------- cad78a6a97 | Aliscans | 2022-03-04 22:32:03 +0200 feat: don't highlight Vehumet offers if you also have book learning. This changes the meaning of "blue spell at the top of the list" from "spell Vehumet is offering you" to "spell which is only available because Vehumet is offering it to you". Vehumet can withdraw the offer, but you cannot lose the book. This change doesn't affect the religion screen. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 3d610745aa | Nicholas Feinberg | 2022-03-04 11:33:08 -0800 Add mon-death asserts Try to hunt down an odd rare crash. -------------------------------------------------------------------------------- 0cb962c1f0 | Antanishin, Ernest | 2022-03-04 19:58:56 +0200 feat: add tile_sidebar_pixels option The option allows one to resize inventory and spells icons in local tiles. It works in the same way as tile_cell_pixels for the dungeon tiles. [ Committer's note: Closes #2147, renamed option. ] -------------------------------------------------------------------------------- e5966c3f1e | Nicholas Feinberg | 2022-03-04 06:57:57 -0800 Tweak Sheza's Dance cast messages (SpicyCebolla) -------------------------------------------------------------------------------- 1a685ed5de | Edgar A. Bering IV | 2022-03-04 16:56:40 +0200 feat: distinguish drain levels in monster list (Aliscans) Closes #2411 -------------------------------------------------------------------------------- 85c4641d08 | Aliscans | 2022-03-04 16:08:38 +0200 feat: add annotations for distracted monsters Most of the reasons for a monster_info having MB_DISTRACTED give a description when the monster is selected on the level map, but not all. This creates two flags to fill in the gap. Monsters which you can see, but which can't see you because of invisibility, are described as "can't see you" in the examine surroundings command and monster list summary. Monsters which are distracted (possibly because they are attacking a summoned monster rather than you) ar described as "not watching you" or as "distracted". Co-authored-by: Aliscans -------------------------------------------------------------------------------- 602b31c20e | Nicholas Feinberg | 2022-03-03 20:06:52 -0800 Revise new uniques I'm quite happy with how Amaemon is doing post-nerf, but the others don't seem to be all there yet. Let's adjust. - Lodul: +8 avg mhp (62 -> 70) - Parghit: +large rocks, +damage (50/40/40; was 40/35/35). - Josephina: +HD (15 -> 18), +damage (10 -> 27), +HP (130 -> 150), +cast frequency (Seracfall 24 -> 36), +flash freeze - Vv: +damage (27/27 -> 45/45), +HD (21 -> 23), +HP (210 -> 270), +Will (120 -> 140), +25% cast frequency - Zenata: -HD (18 -> 15), -HP (240 -> 180), move from Depths/Zot to Elf/Vaults/Crypt, haste dancing weapons on cast. Also fix the Sheza's Dance casting message. -------------------------------------------------------------------------------- 4b928d7a4c | Nicholas Feinberg | 2022-03-03 19:49:42 -0800 New unique tiles (Sastreii) Amaemon, Josephina, and Parghit. Also properly display weapons for the former two - I initially forgot to have them show held weapons. -------------------------------------------------------------------------------- 20d21d4356 | Edgar A. Bering IV | 2022-03-03 23:35:32 +0200 lint: checkwhite -------------------------------------------------------------------------------- 645c86315e | Edgar A. Bering IV | 2022-03-03 23:15:23 +0200 vaults: fix a typo -------------------------------------------------------------------------------- dd60b7245b | RojjaCebolla | 2022-03-03 23:01:03 +0200 vaults: two arrivals by spicyCebolla spicycebolla_arrival_teleporter_tutorial Teleporters generally only show up in dangerous scenarios; this puts a pair of teleporters into an arrival vault for people to play with. These can also be used to juke gnolls and panlords, in times of need. (Inspired by the "throwing tutorial" key holder vault in Brogue, which shows up early and often in dungeon generation, helpiing the player learn that items can be thrown to trigger traps from a distance.) spicycebolla_arrival_xxxplode Minmay style. [ Committer's note: cleaned up some des, moved organization to small, fixed a teleport closet. Closes #2458 ] -------------------------------------------------------------------------------- 0f8c3457c7 | DreamDust | 2022-03-03 22:28:46 +0200 vaults: minivaults by DreamDust dreamdust_wishing_well Mini vault featuring a wishing well with some gold sprinkled around it. There's a small chance of a scroll of acquirement generating. Partially inspired by Nethack, + some nostalgia for when we used to be able to quaff from magic fountains in Crawl. [ Committer's note: simplified the terrain, the effect will be a bit more subtle but that's fine. ] dreamdust_mushroom_princess Just a simple vault featuring a princess statue surrounded by mushrooms. dreamdust_princess_bridge A bridge over a pond and a little courtyard area off to the side. dreamdust_princess_corridor A decorative corridor with three variations: summer, fall, and abyssal. [ Committer's note: also simplify some feature renames in a previous DreamDust vault, don't want to go overboard with these. All vaults edited based on review by hellmonk. Closes #2135 ] -------------------------------------------------------------------------------- 12ad11c1a6 | DreamDust | 2022-03-03 22:28:46 +0200 vaults: a DreamDust overflow temple A fancy temple dedicated to the three good gods. [ Committer's note: converted to an overflow temple ] -------------------------------------------------------------------------------- e8bc28a0cf | DreamDust | 2022-03-03 22:27:54 +0200 vaults: float vaults by DreamDust dreamdust_dug_too_deep The dwarves dug a little too deep and unearthed... a Balrug! Even a mighty dwarf hero (with a potentially good weapon to loot!) fell in battle to the demon. RIP. Maybe this is why we don't see deep dwarves much anymore. Hmmmm... The idea behind this vault is to place a single Balrug early enough that it's a serious (but not unmanageable) threat. I added a downhatch close by if players need to escape in a hurry. There are also warning signs in advance (all the dwarf corpses and the suspicious volcanic floor tiles outside the Balrug room). [ Committer's note: Added a runed door for the balrug, adjusted transparency, traded volcanic floor for blood. ] dreamdust_wu_jian_sword_trials A Wu Jian-themed vault. Challenge three increasingly powerful sword-wielders for their increasingly good swords. [ Committer's note: Adjusted depth range, added monsters to the earlier trial, trimmed arenas, added transperency. ] dreamdust_merry_men Inspired by Robin Hood and his band of merry men. Features a forest with a bunch of archers and a good bow and aides to banditry to loot in the center. [ Committer's note: Adjusted layout to prevent teleport closets, monster counts, loot. ] dreamdust_tengu_aerie A large nest of tengus. They keep their shiny loot in the center... along with their fledglings (wait, are we the baddies??). [ Committer's note: moved the crystal walls to the middle, put the rock wall on the outside (so the reavers can bolt bounce their omnibolts), and thinned the monster density. ] dreamdust_hydra_shepherd A shepherd is raising a flock (?) of hydras down in the Depths! Some players might regret abandoning their flaming weapons after finishing Lair/Swamp, haha. [ Committer's note: upgraded the cyclops to a stone giant, added a small chance for a really high head count. ] dreamdust_elfheim The home of Duvessa and Dowan. The more-practical Duvessa has training dummies in her room, while the vain Dowan has a large mirror to admire himself with. [ Committer's note: cut down on custom tiling/colouring a bit. ] -------------------------------------------------------------------------------- 7b655af5e2 | DreamDust | 2022-03-03 20:48:24 +0200 vaults: arrivals by DreamDust dreamdust_arrival_beginning_and_end Arrival vault that resembles the central orb chamber in Zot:5. Thought it would be cute (especially for new players) to realize it at the end of the orb run. dreamdust_arrival_sigmund_warning Beware the dreaded Sigmund, slayer of noobs! (and everyone else tbh, lol) -------------------------------------------------------------------------------- 0dae59b3db | DreamDust | 2022-03-01 21:11:17 +0200 Seven new vaults [ Committer's note: Edited accounting for gammafunk's feedback, thinned monster densities in a few places. Closes #2184. ] dreamdust_cave_troll Just a deep troll tucked away in a little cave. Using orient:northwest because I like how it looks when the level generator makes a path to the vault. Feels like a nice, cozy cave deep in the rock. dreamdust_gnoll_farm Just some simple gnoll farmers trying to make an honest living. dreamdust_gnoll_shepherd A cute little gnoll shepherd and his flock of dream sheep (or herd of yaks). dreamdust_wasp_nest A wasp/hornet nest! dreamdust_looks_like_rain A portal to the elemental plane of air briefly opened and spat out some clouds and monsters! dreamdust_zin_vs_xom Zin and Xom are having a skirmish in Zot. I think it's a nice contrast between Order and Chaos. dreamdust_under_siege The general idea is that you have a chance of going down some stairs and finding yourself in a little fortress under siege (usually by a swarm of undead). -------------------------------------------------------------------------------- 1125b37a9b | Nicholas Feinberg | 2022-02-28 17:35:56 -0800 Describe eruption damage in xv (ardl) This is a hack; the correct fix would be to make a zap. -------------------------------------------------------------------------------- 162f3ce599 | Nicholas Feinberg | 2022-02-28 17:21:31 -0800 Fix @ display for launchers with armour Broken by 9445043ebcbc046d65807a91ab1288053957184b. Closes #2450. -------------------------------------------------------------------------------- 945431f764 | Implojin | 2022-02-27 21:53:51 +0200 feat: add a new randart name of @god_name@'s Attic -------------------------------------------------------------------------------- 230a35465e | RojjaCebolla | 2022-02-27 21:52:43 +0200 text: new adjective and verbs for ran dart names, plus usage * Teach Trog adjectives and verbs example item names now possible: the Foo... (general) of Hungering Death of the Rescuing Gods of the Glowing God of Uskayaw, Screaming (trog) of Glamorous Victory of the Hopping Regicide of Barnacled Death (oka) of Okawaru, Healing (xom) "Xom, Gnashing and Baking" of Healing Xom -------------------------------------------------------------------------------- ce1ebfb2c9 | robertxgray | 2022-02-27 14:45:29 -0500 Update typed-ast to 1.4.3 This is required to run the server on Python 3.10+ -------------------------------------------------------------------------------- cf85d113b3 | Diego Essaya | 2022-02-27 14:40:39 -0500 fix: click + key modifier detection in tiles Fixes #898 -------------------------------------------------------------------------------- 9cf36f4b4d | RojjaCebolla | 2022-02-27 20:20:21 +0200 feat: remove identification scrolls from troves In the past year, identification scrolls have become increasingly less important as gear now is automatically identified, and never cursed. By the time players get into a trove, they generally will have no further use for scrolls of identify, so those should be removed from the trove.good_scroll table. In their place, we now have immolation scrolls, which are a fun tool for safely fighting large armies, and torment scrolls, so that these troves can be just as fun for demons/undead as they are for other species. These two additions are equally as common as scrolls of holy word. Finally, a small chance of the very powerful summon scroll. -------------------------------------------------------------------------------- ba8e22afda | Nicholas Feinberg | 2022-02-27 10:08:25 -0800 Move mu necro enhancers earlier XL 13/26 is too late to be relevant. Shift to XL 3/13 instead. -------------------------------------------------------------------------------- 54f80b8ed5 | Elliott Bernstein | 2022-02-27 20:08:00 +0200 fix: when felid has 2 lives, show actual died-now xp needed for next life Co-authored-by: Elliott Bernstein -------------------------------------------------------------------------------- b3188875b7 | Nicholas Feinberg | 2022-02-27 08:25:02 -0800 Adjust wight/necrophage XP They're pretty similar threats. Move necrophage to about 80 XP (from about 120, higher than a black bear or ogre) and bump wights to about 75 XP (from 60ish). -------------------------------------------------------------------------------- 7cd8c5c774 | Nicholas Feinberg | 2022-02-27 08:17:44 -0800 Tweak Phial of Floods description Clarify air breathing requirement. -------------------------------------------------------------------------------- 5b244fca1f | advil | 2022-02-26 09:48:58 -0500 fix: handle undefined item slots with action_panel_glyphs=true This can specifically cause a crash when dropping an artefact and then picking up something in the same slot, where it tries to get a glyph on an undefined item_def and artefact-related properties are in an inconsistent state. Possibly a pseudo-bug that flags are not reset for this case, or that get_item_glyph tries to do something for this case? (I think otherwise, this call was mostly was stable.) Resolves #2434 -------------------------------------------------------------------------------- ceb61267dd | advil | 2022-02-25 17:02:44 -0500 fix: improve some randart name grammar seems to need a determiner or noun. (I'm still not sure this is the most coherent randart name I've ever seen.) -------------------------------------------------------------------------------- 51b9c0fbd8 | gammafunk | 2022-02-25 09:59:46 -0600 fix: Remove a ghost vault restriction For ebering_ghost_funeral_grove, remove the restriction preventing Swamp:$ placement, since it no longer uses trees for its outer border. -------------------------------------------------------------------------------- 0a02b1cf4f | Nicholas Feinberg | 2022-02-24 17:15:28 -0800 Don't spawn Amaemon on D:7 Too rude. -------------------------------------------------------------------------------- f2abdc9806 | Nicholas Feinberg | 2022-02-24 13:48:19 -0800 Tweak frog hop targeter Don't show known invalid destinations as possible (occupied by actors, such as the player, or dangerous terrain). -------------------------------------------------------------------------------- ce79c09f71 | Nicholas Feinberg | 2022-02-24 08:03:50 -0800 Remove D skeletons too Missed em in the last commit, whoops. -------------------------------------------------------------------------------- 0c351c38d6 | Nicholas Feinberg | 2022-02-24 07:31:53 -0800 Bump down Amaeemon's HP/HD He was doing a little more direct damage than I wanted. HP from 92.5 to 87.5, HD from 10 to 7 (reducing accuracy and poison damage). -------------------------------------------------------------------------------- 29cdfe4e04 | Nicholas Feinberg | 2022-02-24 07:23:26 -0800 Remove most D zombies (hellmonk) Zombies aren't very exciting enemies. They're like other, existing monsters, except they don't have any cool gimmicks or definining features that those monsters have, and they make a bunch of nice items (poison darts/spells, ice magic, necro magic) useless. They're also not great for UI - it's harder to tell at a glance what you're fighting, or how tough it is. Let's cut em from normal D spawns. This is an early-game TSO nerf, but probably an overall buff to players. -------------------------------------------------------------------------------- 17f627cfee | Nicholas Feinberg | 2022-02-23 18:59:54 -0800 Fix missing regen space (ardl) -------------------------------------------------------------------------------- c45ea81df0 | nicolae-carpathia | 2022-02-23 21:42:27 -0500 Fix an error with a generic overflow vault that is NOT how the shuffle command works, did i write this at two in the morning, damn -------------------------------------------------------------------------------- 748a509809 | advil | 2022-02-23 18:55:44 -0500 fix: sanity check item quantity surely it is safe to add such a simple sanity check to low level item code, right? -------------------------------------------------------------------------------- 18cb72b20d | advil | 2022-02-23 18:33:38 -0500 fix: more info on invalid item tags.cc crashes The error for item_def::is_valid() had messaging, but it uses dprfs so wasn't visible in crashlogs. Since the game is going to crash anyways, let's actually print out these error messages. I've also reworded a bunch of them. -------------------------------------------------------------------------------- 9445043ebc | Nicholas Feinberg | 2022-02-23 09:27:28 -0800 Don't slow clumsy bashes with armour When attacking with launchers. -------------------------------------------------------------------------------- 989f1d9ccb | Nicholas Feinberg | 2022-02-23 08:33:23 -0800 Bring back Summon Scorpions tile Forgot this when adding Amaemon, whoops! -------------------------------------------------------------------------------- 7b0a884809 | advil | 2022-02-23 09:05:10 -0500 fix: tweak wording in a rampage prompt Rampaging is in general fine for wielded_weapon_check; it's only if your rampaging would trigger an attack that this verb is used in messaging. -------------------------------------------------------------------------------- f982a884d8 | Nicholas Feinberg | 2022-02-22 22:04:18 -0800 Remove anguish on leaving levels Maybe the cause of the mystery anguish bug..? Also, I hate this switch quite a lot. -------------------------------------------------------------------------------- 4a66f2e2b5 | Nicholas Feinberg | 2022-02-22 20:59:03 -0800 Allow LRDing Vvurtles (Nomi) Oversight! -------------------------------------------------------------------------------- 235afadefe | Nicholas Feinberg | 2022-02-22 18:54:55 -0800 Update job recs for og/tr (Lici) Now that you can't start with large rocks as Hu or AM, don't recommend them to trolls or ogres. AE background rec for ogre is semi-arbitrary. Seemed to have a high recent winrate for not excessively dubious reasons (wasn't a nem choice, wasn't one player streaking, etc). Seems reasonable for apts and so on (bouncing less dangerous when you have high HP). Might add Gl as a rec if a-good-start lands. -------------------------------------------------------------------------------- 8e21839460 | Nicholas Feinberg | 2022-02-22 18:42:21 -0800 Don't mention monster ammo When cursoring over a monster, and printing something like Here: a centaur, wielding a +0 shortbow, quivering arrows Cut the bit about 'quivering arrows'. Meaningless verbiage :) -------------------------------------------------------------------------------- 7cd6805d08 | Nicholas Feinberg | 2022-02-22 18:35:08 -0800 Fix: Don't slow throws with armour (Yermak, 12688) Oops! -------------------------------------------------------------------------------- 2e1b08cf00 | advil | 2022-02-22 21:25:47 -0500 feat: readd quivering/firing ranged weapons It's proven somewhat confusing to many players that the relevant UI elements no longer worked with launchers after ammo removal. This commit restores the ability to quiver launchers, allowing them (if quivered) to be triggered on default keybinds using `f` and `p`, as well as `v` and tab regardless of what is quivered. I've restored some corresponding options as well. It's entirely possible their defaults should be different than they used to be, if these are better viewed as compatibility options now. But for now, launchers are in the fire order (this never got removed), and `launcher_autoquiver` defaults to true. -------------------------------------------------------------------------------- 015645fbfe | advil | 2022-02-22 21:25:47 -0500 feat: add an explicit toss submenu Tossing is currently in a weird state where as more and more things become quiverable, they have two types of actions that could apply, making them harder to figure out how to toss. This is all sort of still in a mess for other menus, but this (quite basic) submenu is guaranteed to always use `ammo_to_action` and therefore only throw. -------------------------------------------------------------------------------- c7997b95f3 | Nicholas Feinberg | 2022-02-22 12:05:53 -0800 Launcher reform: update sling descriptions RIP rock v sling bullet dynamic -------------------------------------------------------------------------------- 542faf17db | Nicholas Feinberg | 2022-02-22 08:10:15 -0800 Fix a Jiyva jelly crash (?) If the player is damaged by a monster that's already dead (eg a guardian golem's inner flame), don't try to point jellies in its direction. I couldn't repro the crash, so not sure about this fix. -------------------------------------------------------------------------------- 28b64116f0 | Nicholas Feinberg | 2022-02-22 07:29:36 -0800 Roll-back post-AEVP delay launcher buffs When adding AEVP to launcher delay in af6a381e141a, I'd assumed that would be a considerable nerf that called for compensation. With the change to use dex for launcher damage shortly after, however, that no longer seems called for. Revert to more or less the weapon stats from a852ce8369264a3a4759b99df0bbba7645a78c97. -------------------------------------------------------------------------------- e3fb4bd5a4 | Nicholas Feinberg | 2022-02-21 19:05:10 -0800 Re-add launcher to-hit display (pdpol) This is a bit of a hack. Closes #2438. -------------------------------------------------------------------------------- 79605ca0cb | advil | 2022-02-21 19:50:11 -0500 fix: hide account hold div on force-logout Unintentionally still displayed after an account gets force logged out when an account hold is escalated to a ban. -------------------------------------------------------------------------------- 36e498a9cf | advil | 2022-02-21 19:50:11 -0500 feat: improve account-related logging This more consistently shows the IP address, and puts a substring that is very easily matched for scripts that want to pull out account-related logging from the main log. (This only will reliably log things that happen while a player is connected, so releasing a hold or removing a ban still won't show up here.) -------------------------------------------------------------------------------- 6e3aafee17 | Nicholas Feinberg | 2022-02-21 15:00:42 -0800 Fix fix -------------------------------------------------------------------------------- a21e45360d | Nicholas Feinberg | 2022-02-21 14:58:04 -0800 Fix kaux/ckaux Broken in 4e44252f3f24252e461ee3764b93ec7b8ad007b5, 9 months ago. -------------------------------------------------------------------------------- c9553a8f79 | Nicholas Feinberg | 2022-02-21 13:03:01 -0800 Pull back slightly on SpHu (Lightli) To compensate for dex increasing ranged weapon damage, make fustibali 2-handed and 3xbows unusable for spriggans. -------------------------------------------------------------------------------- 16cad56b0c | Nicholas Feinberg | 2022-02-21 09:47:50 -0800 Maybe fix a tossing crash (ardl) -------------------------------------------------------------------------------- 299514152f | advil | 2022-02-21 12:22:16 -0500 fix: (re)allow launching from `F` Previously this was implemented via ammo, which is gone. But it seems very confusing to not have launchers selectable from this menu, which after this change became limited only to throwing. This commit is a bit of a quick hack to do this, may need some more work. This means you can't use `F` any more to toss away a wielded launcher, though this is still possible via quivering it (with `Q**`). You can still toss a non-wielded launcher from this menu. More generally, it might be good to also allow quivering newlaunchers so that they still work with `f`/`p` (especially the latter, it's confusing that CMD_AUTOFIRE no longer has a way to fire for this case), but this will not be as easy so I'm not going to get to it immediately. The division of labor for autofight/autofire introduced with quivers may need some rethinking. -------------------------------------------------------------------------------- ca6a0d2473 | advil | 2022-02-21 12:06:24 -0500 fix: reenable anonymous spectating -------------------------------------------------------------------------------- 9aa386d172 | advil | 2022-02-21 09:44:16 -0500 fix: show lobby in a stable order with account holds I only had tested this in a python version where all dicts are ordered. Also, remove some traces of a pre-py27 compatibility shim for OrderedDict. (If anyone is still running this on py26, I don't know what to say. But probably not, because webtiles.load_games already dropped this.) -------------------------------------------------------------------------------- a23d9638d5 | Nicholas Feinberg | 2022-02-20 19:04:59 -0800 Give Vv a quote (ebering) There's probably better quotes from The Fifth Season - this was the first reasonable one I found. -------------------------------------------------------------------------------- 6546220326 | Nicholas Feinberg | 2022-02-20 19:04:48 -0800 Give Amaemon a signature weapon Don't drop that whip! -------------------------------------------------------------------------------- c2a82b186b | Nicholas Feinberg | 2022-02-20 15:47:36 -0800 Re-remove HINT_SEEN_RANDART Missed a few spots in 4be7dbf86b841721fccbcb6690ed74273671146d . -------------------------------------------------------------------------------- 2ef5e920f0 | Nicholas Feinberg | 2022-02-20 14:32:13 -0800 Remove Amaemon's corpse Every person is a whole world unto himself... but perhaps not a whole species. -------------------------------------------------------------------------------- d601ab35b5 | Nicholas Feinberg | 2022-02-20 13:30:48 -0800 Revert "chore: add a trunk reminder for the 0.28 tournament" This reverts commit 03a7b78be7a97b61e3ccfaa102cec36b0ca111bc. -------------------------------------------------------------------------------- 599418656c | Nicholas Feinberg | 2022-02-20 13:28:26 -0800 Ru melee redirection refactoring -------------------------------------------------------------------------------- 65f304602f | Nicholas Feinberg | 2022-02-20 12:35:52 -0800 Unbrace files.cc -------------------------------------------------------------------------------- 9fbeeb3dcf | Nicholas Feinberg | 2022-02-20 12:33:39 -0800 More mut description tweaks Cut more mut descriptions that are (IMO) non-actionable, and add the overlooked MUT_FANGS to dataified descriptions. -------------------------------------------------------------------------------- ca93a6e943 | Nicholas Feinberg | 2022-02-20 12:33:39 -0800 Trim Jiyva mut descriptions I don't think that the details here are helpful to players. You can't really control these muts, so what do detailed numbers get you? How will you play differently? It doesn't seem like something that will meaningfully affect play. -------------------------------------------------------------------------------- b9ea505e61 | Nicholas Feinberg | 2022-02-20 12:33:39 -0800 Tweak Ru eye desc -------------------------------------------------------------------------------- 507d7b0529 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Programmatic aux descriptions -------------------------------------------------------------------------------- b4860018a3 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Dataify aux attack trigger chances -------------------------------------------------------------------------------- adaf126bc6 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Fancy Lua horns description -------------------------------------------------------------------------------- bb7b57aa70 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Beak -------------------------------------------------------------------------------- 0ef5763bac | advil | 2022-02-20 12:33:36 -0800 docs: attempt to despoiler various aux/retaliation muts I say "attempt" because this stuff is complicated enough that there may be all sorts of mistakes in here still, or even some random rolls I've missed entirely. In many cases I have chosen to give slightly round numbers (e.g. 40% rather than 38%), maybe these should be made exact. Also, this is a lot of numbers, but I think we have become pro-numbers enough for this sort of change. This commit began in response to https://www.reddit.com/r/dcss/comments/svj867/demonic_touch_utterly_useless/ where it became apparent that how this particular mut worked was completely opaque to players (especially since its behavior is pretty atypical), but once I started doing this it became clear to me that basically all of these would be better with more information. I've tried to get all of the direct combat effects in this change. Some of the Ru mutations that are responsive (e.g. no potion heal) could maybe use similar work. -------------------------------------------------------------------------------- c3e01e4e4d | Nicholas Feinberg | 2022-02-20 12:29:54 -0800 Fix Josephina vault (geekosaur) ??oops -------------------------------------------------------------------------------- fffab11c1d | Nicholas Feinberg | 2022-02-20 12:27:44 -0800 Add item descriptions to monster So no one ever has to maintain the ldb book entries ever again. This is quite ugly but mostly works? -------------------------------------------------------------------------------- cd8f6311e7 | Nicholas Feinberg | 2022-02-20 12:27:21 -0800 dgn_place_item refactoring -------------------------------------------------------------------------------- 96d55e26a3 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Checkwhite hints changes -------------------------------------------------------------------------------- 5e4a951760 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Add a malevolence (explore trap) hint -------------------------------------------------------------------------------- 4be7dbf86b | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 More hints updates Remove references to allies stealing XP (now only true for Beogh), and rewrite HINT_YOU_RESIST to be a bit clearer (maybe!). Remove HINT_SEEN_RANDART (would generally only show up once a randart was already IDed) and tweak the description of Spellcasting skill. Don't bother noting demon tiers, and don't claim that statues are notable or hide 'special areas'. -------------------------------------------------------------------------------- 0c76a2f6e3 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Remove HINT_FLEEING_MONSTER Mostly obsolete since 5cea4aff0001 (2012), 13c00676f0 and f1aa33a6750 (2013), and completely obsolete after b8068419c757 (2015). -------------------------------------------------------------------------------- fc0c1e2a9a | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Fixup HINT_EXCOMMUNICATE Don't claim you get wrath for abandoning a good god (or Ru) and not worshipping a new god. Also, dedent. -------------------------------------------------------------------------------- 491e7b286d | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Update HINT_CONVERT -------------------------------------------------------------------------------- bc0daef7cc | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Cleanup NEW_ABILITY_GOD -------------------------------------------------------------------------------- 477d20c3ff | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Misc hints cleanup -------------------------------------------------------------------------------- ca3a83724e | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Simplify wand use advice logic -------------------------------------------------------------------------------- 566ef67269 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Remove HINT_SEEN_CARRION Irrelevant in a post-butchering world. -------------------------------------------------------------------------------- d8e2eab272 | advil | 2022-02-20 15:24:02 -0500 refactor: clean up `chr` chunk loading This was sort of impressively convoluted and bad: the tag code read chr chunk data directly into `you`, and then a `player_save_info` object was constructed from that. In most cases, this was wrapped in code that made a copy of `you` and then restored it after getting the info object. There were also all sorts of inconsistencies in what data was stored in this object. I'm guessing no one really wanted to mess with this old code where the cost of breaking things is high, but I'm going to give it a short here. This commit: * Cleans up `player_save_info` to exactly match the data in the `chr` chunk, aside from version info (and doll info used for tiles main menus). Add a few fields, remove one (`experience`) that seems to be completely unused. * Add a constructor to `player_save_info` to handle default values a bit more cleanly * Rewrite the tag code to read directly to a player_save_info object, and only copy data into `you` on demand * more comments, code reordering to match chunk data order, slightly better error messages in a few cases -------------------------------------------------------------------------------- 57cb919b73 | advil | 2022-02-20 15:24:02 -0500 fix: simplify and fix setup for save info CLOs `-save-version` was broken because it didn't correctly reset paths. In addition, I'm pretty sure that these don't need a full options reset. (Possibly I'm wrong, we'll see -- if there's mysterious uninitialized memory crashes, it'll probably just break the webtiles save viewer again and nothing else.) -------------------------------------------------------------------------------- 8aa3a5f11e | advil | 2022-02-20 15:24:02 -0500 fix: webtiles save info collection This broke around b939be14790 but I hadn't sat down to figure out what happened until now. (Amazed that there was never an actual issue about this that I'm aware of!) It may have been sort of a blessing in disguise as at least on CAO this callback chain has become pretty heavy and often times out. We'll see... -------------------------------------------------------------------------------- e9b396fb19 | Nicholas Feinberg | 2022-02-20 12:22:37 -0800 Allow looking up unrands in ?/I This was surprisingly annoying! -------------------------------------------------------------------------------- 8338fcb62e | Nicholas Feinberg | 2022-02-20 12:21:12 -0800 Don't let nymphs/elios port to unseen foes (dinky) That is, if you're invisible, don't let water nymphs waterport or eleionomae treeport to you. Also, dedent the water nymph logic. -------------------------------------------------------------------------------- 15338bc10e | Nicholas Feinberg | 2022-02-20 12:20:01 -0800 Tweak Merfolk weapon aptitudes (Hellmonk) Trade a point of Polearms for a point of Long Blades. At +3 polearms, Merfolk will still be extremely strong polearms users, but it'd be nice for them to occasionally have some reason to do something else. (Especially with impending changes to long blades.) -------------------------------------------------------------------------------- 32946d4e34 | Nicholas Feinberg | 2022-02-20 12:19:30 -0800 Make Jiyva less verbal Jiyva doesn't seem like much of a talker. Possible that J penance should be rethought regardless, but for now... -------------------------------------------------------------------------------- 68506e6fbd | Nicholas Feinberg | 2022-02-20 12:19:07 -0800 Disable the MCC targeter by default It seemed to mostly confuse players by leading them to think that the spell was targeted, since they could move the cursor around while in the targeter. It's also not super useful, since whatever monster is highlighted when you start the spell may not be the eventual victim. The MCC targeter can still be seen by quivering and (f)iring the spell, or by adjusting the rcfile. -------------------------------------------------------------------------------- d9437148fb | Nicholas Feinberg | 2022-02-20 12:18:29 -0800 Slot name: armour -> body armour To avoid confusion that the Armour skill only applies to the Armour slot. -------------------------------------------------------------------------------- 67d208b9ac | Nicholas Feinberg | 2022-02-20 12:16:14 -0800 Remove most uniques from Tomb Tomb has its own thing going, and most of these guys aren't really scary by the time you get there. (<0.6% recentish killratio.) Also drop Mara and Parghit from Crypt; former for killratio reasons (0.2%) and latter for thematic ones. Parghit is a winner! He's heading for the orb! No reason for him to be in the Crypt. -------------------------------------------------------------------------------- 06d020a549 | Nicholas Feinberg | 2022-02-20 12:16:14 -0800 New unique: Zenata, Seeker of Sheza Zenata is another late-game unique (appearing in Depths, Zot &c), borrowing a bit from the Desolation of Salt and putting a twist on it. She's taken the ragged hierophants' "Resonance Strike", which is like airstrike that gets bonus damage from adjacent constructs instead of from open spaces, and uses it in conjuction with a new "Sheza's Dance" spell, which summons 2-4 dancing weapons. To encourage players to kill her, she comes with a high-tier weapon with some plusses already on it. Zenata's theme is intended to expand slightly on the Desolation lore. She entered the Dungeon to look for secrets of the old Sheza/Sargol cult, the Divine Twins that ran the Desolation of Salt before it was a desolation. The bits and pieces she found required her to replace more and more of her flesh with metal to unlock their power... but hey, upgrade! :) -------------------------------------------------------------------------------- 226d363e7e | Nicholas Feinberg | 2022-02-20 12:16:14 -0800 New unique: Vv the Exile Vv is a combination of ironbound frosthearts (Creeping Frost) and Salamander Tyrants (Eruption/Pyroclastic Surge), appearing in Depths, Zot, Crypt and Tomb. She's themed as a new species, the Stoneborn, sentient earth elementals. She also has strong defenses and AF_FIRE and AF_COLD melee. I haven't yet added any loot for her, to incentivize players to tussle with her. The XP and curiosity might be enough for now. The theme is intended to push in a different direction from uniques like Parghit and Josephina. The former expand on existing lore. Vv, by contrast, expands the world of DCSS by suggesting the existence of something greater outside the game's current bounds. -------------------------------------------------------------------------------- 375cf7ae12 | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 Fix new VISUAL monspeak entries -------------------------------------------------------------------------------- 69db86b63c | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Lodul the Thundrous Lodul is an ironbound thunderhulk who's been sent to patrol outside the Vaults, in late D. He's got a weaker version of Call Down Lightning (lower HD) and a big band of ogres and two-headed ogres to help him keep distance from the player. Defensively, he looks a lot like Erolcha. His loot is a big pile of gold. Nothing like cash to bribe players into potentially risky fights :) -------------------------------------------------------------------------------- 9cfbde7411 | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Amaemon the Diabolical Poisoner Amaemon is Crawl's first demonspawn unique, appearing in mid-D, early Lair and Orc:1. Alongside his orange demon companion, Amaemon summons scorpions (the classic returns!) and casts Concentrate Venom, upgrading his allies' poison into curare. To encourage players to try to kill him, he wields a demon whip of venom, with 1% chance of the unique Snakebite. -------------------------------------------------------------------------------- 618b504a9a | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Josephina the Ice-Lich As one more 'alt-timeline' unique, Josephina is an upgraded version of Josephine. She appears in late Vaults, Depths, Crypt, Tomb and Zot, and borrows Wendigo Seracfall (turning simulacrula into 3d33 bombs) to add to her classic Ghostly Fireball. She comes with a guaranteed randart ring of ice. I suspect a lot of the numbers here will need more fine-tuning. She might be a bit of a glass cannon at the moment, especially with the rF-, and I think the placement range is probably a bit off. -------------------------------------------------------------------------------- 141cb85572 | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Parghit the Mighty Following the example of Maggie/Margery, Parghit is an "alt-timeline" version of Pargi. Parghit appears in late Depths, Zot, Crypt and Tomb, and sports high-enchantment golden dragon scales (with a 1% chance of wearing the Dragon King) and an astonishing 27 HP regenerated per turn. He's definitely killable, but best not underestimated. I considered also giving him large rocks. It seemed rude, but I might go back to that if it seems appropriate. Credit Hellmonk for several parts of this idea. -------------------------------------------------------------------------------- 920eff52f4 | Nicholas Feinberg | 2022-02-20 12:15:54 -0800 Mark dummy species mons as NO_GEN_DERIVED Don't spawn Palentonga zombies in Crypt. They're not real monsters! -------------------------------------------------------------------------------- 1eaea45740 | Nicholas Feinberg | 2022-02-20 12:12:34 -0800 Change the Woodcutter's Axe into a battleaxe Pushing back a bit on the original design principle, make skill matter a bit more (multiplying a higher base damage & augmenting a lower base accuracy), and add another tradeoff (2-hander status). I'm not adding save compat, so anyone upgrading from an older version can have both an off-hand and the woodcutter's axe until they unequip something. Bonus! :) -------------------------------------------------------------------------------- e3029af5aa | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Make ranged weapons use dex instead of str for damage After e08ca24d97b194, strength became extremely valuable for ranged weapons. It increased damage quadratically: not just multiplying the base damage of the weapon, but also increasing attack speed while wearing armour. This isn't the end of the world, but it does seem more intuitive that dexterity should be the desirable stat for ranged weapons. So, let's make ranged weapon damage scale with dex instead of str. Str is still quite valuable for ranged characters to allow them to use heavier armour, just a bit less so. -------------------------------------------------------------------------------- 85b37ae345 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Make blades use dex instead of str (hellmonk) To differentiate long blades further from other weapon classes, make Dex increase their damage instead of Str, in exactly the same way. It would feel very weird if lbl used dex but sbl still used str, so change sbl to match as well. Possible that some sbl nerfs could be called for after this? Probably it's fine. -------------------------------------------------------------------------------- 7cd8695230 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Ammo removal: more hints updates -------------------------------------------------------------------------------- af6a381e14 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Add AEVP to ranged weapon delay Ranged characters in Crawl generally feel rather similar to melee characters. Other than dealing with ammo - which tends to be mostly busywork, rather than a meaningful or interesting set of choices - ranged characters feel like polearm users with a very very long pole. This is not great for variety, and it's also not very intuitive. A player could reasonably expect that a ranged character should look different from a melee character - Robin Hood and Legolas aren't running around in plate armour! So, let's fix that. As of this commit, AEVP is now added to missile weapon attack delay. As usual, this is reduced significantly by Str and slightly by Armour skill. Some sample numbers: - Starting human hunter in leather: +0.042 delay - Starting human hunter in plate: +0.864 delay - 30 str, 16 armour, plate: +0.253 delay - 50 str, 27 armour, plate: +0.097 delay - 50 str, 27 armour, crystal plate: +0.159 delay - 5 str, 0 armour, crystal plate: +2.645 delay - 20 str, 10 armour, swamp dragon: +0.066 delay (Delays below 0.1 are randomized with every attack. For example, an added delay of 0.042 has a 42% chance of slowing an attack by 0.1.) In compensation, ranged weapons' have gotten various buffs; most weapons have seen their base damage has been increased, and slings have seen their base delay decreased. The expectation is that players will be encouraged to choose somewhat lighter armour than they might otherwise, making ranged characters feel more different from melee. It also makes ranged weapons somewhat less attractive as a swap for melee characters. All numbers subject to change. -------------------------------------------------------------------------------- 34d9ade26b | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Update the quick-start guide for ammo removal -------------------------------------------------------------------------------- b9b4b4cd67 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Give kobolds +3 xbows As something they're better at than other races (being mechanically inclined), it's nice to accentuate that strength a little more than their former +2. Plus, it's funny to give a race that has a big obvious disadvantage for ranged combat (reduced LOS) a great apt for it - creates a different kind of experience! -------------------------------------------------------------------------------- 216ade4d86 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove an unused variable (Aliscans) -------------------------------------------------------------------------------- ed46df0f1f | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Mark launcher ammo as removed (Aliscans) -------------------------------------------------------------------------------- a852ce8369 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Play with ranged weapon stats more Following some thinking about ranged weapons, here's a new set of ammoless stats. Philosophy: - Slings are high-skill 1-handers. Hunting slings are vaguely like war axes, and fustibaluses are no longer ultra-rare but are now more like broad axes. - Bows are high-skill 2-handers. - Crossbows are lower-skill - it takes fairly little to get the hand crossbow or the arbalest to mindelay. The triple crossbow is still high-skill, but it's quite rare, so doesn't define the 'feel' of the class, much as you can't rely on finding a triple sword as a lbl user or an exec axe as an axe user. (Unless a gifting god gets involved.) If we're going to keep all these item classes, it would be great to have some more obvious and pronounced gimmicks. I suspect we'll end up merging or removing some of these at some point, but that's a larger project than I'm ready for right now. TODO: make fustibali spawn at a higher rate - right now they're about 1/5th as common as I'd like. -------------------------------------------------------------------------------- 9b9ebdfc37 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove launcher ammo from the \ menu (Aliscans) -------------------------------------------------------------------------------- a30ec57329 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove throwing weapon hunter start (Aliscans) Throwing weapons were always an odd fit for the hunter background. They aren't a primary playstyle or 'killdudes' method like ranged weapons, but they were presented in the same way. Now that hunter's lost its short sword, it's an especially odd fit. Let's cut the throwing start for now. I think in the near future we might bring back additional throwing ammo as a supplement to another background, either Gladiator or Brigand (or perhaps both?). -------------------------------------------------------------------------------- cb38ff9839 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove webtiles launcher quiver -------------------------------------------------------------------------------- d562ef3a11 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove the short sword from the hunter start No longer needed. -------------------------------------------------------------------------------- 39307501d7 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Adjust ranged weapon stats post-ammo Mostly reduce numbers across the board, since players are no longer constrained by ammo. Slings are a little sad about the loss of sling bullets and so don't get hit quite as hard as the others. I playtested these and kept turning numbers downward until just mashing o-tab on a HuHu would get me killed somewhere in early-mid D. (With no numerical tweaks, it was pretty trivial to reach Lair, and probably to just win.) -------------------------------------------------------------------------------- 3bbc7b7260 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove ammo from vaults, sprints & the tutorial -------------------------------------------------------------------------------- 13dfb44323 | Nicholas Feinberg | 2022-02-20 12:05:38 -0800 Adjust item gen for ammo removal Drop non-vault loot proportionate to the weight of old arrows, bolts, etc. Counting vaults, overall game loot will be slightly higher - maybe about 2%? -------------------------------------------------------------------------------- 4fc27e4f60 | Nicholas Feinberg | 2022-02-20 12:04:49 -0800 Allow firing with v Since launchers no longer use ammo, there's no reason for them to interact with the quiver system. Instead, make them fire using 'v', like polearms or other melee weapons. Tab also works. If people request, maybe there could be an option to have 'f' always fire a held ranged weapon, rather than using the quiver. -------------------------------------------------------------------------------- a8e9c987b8 | Nicholas Feinberg | 2022-02-20 12:04:47 -0800 Remove launcher ammo Ranged weapons in Crawl have long contained a painful tension. On the one hand, their design suggests that the player is expected to use them as their primary means of killing enemies. They have dedicated weapon skills, imposing a substantial strategic cost to reach mindelay with any given type, and there's a tactical cost to switching between them and melee weapons. On the other hand, the limited ammo supply suggests the player is expected to conserve ammo in some way. The only real way to do this is to use other means (i.e. melee weapons) to kill some enemies. However, there's still more than enough ammo to kill any really threatening enemy, and later on there tends to be more than enough ammo to make its limitations meaningless, especially for followers of Okawaru. Thus, ammo currently provides no really interesting tactical or strategic decisions, just busywork. It seems that ammo should either be made much more restrictive, so that the player is rewarded for engaging with it, or removed. If we made ammo much scarcer, such that players could only kill a few very dangerous enemies with it, players would generally be forced to train something else as their primary 'killdudes' skill, and use ranged combat as a supplement. This would end up looking quite a lot like Throwing or Evocations, but with a worse UI, since players would need to switch weapons rather than just pressing 'F' or 'V'. This seems uncompelling. As such, let's cut ammo entirely. Monsters *already* had infinite ammo, and players can follow suit. Subsequent commits will deal with the small print. -------------------------------------------------------------------------------- d09b832af6 | Nicholas Feinberg | 2022-02-20 11:48:37 -0800 Remove launcher ammo acquirement This will be meaningless very soon. (See following commits.) -------------------------------------------------------------------------------- 8efb068a30 | advil | 2022-02-19 14:01:43 -0500 feat: indicate stateful ?tele behavior in ItemUseMenu The stateful behavior of scrolls of teleportation is kind of easy to forget about, and also unique (I think) among consumables. Because of this, it seems helpful to indicate if it will cancel an existing teleport explicitly. I've done this in the `r` menu, another place this could be done is in the item description itself. -------------------------------------------------------------------------------- ba4477c8fd | Nicholas Feinberg | 2022-02-19 07:47:14 -0800 Add Ignis to db_lint (SpicyCebolla) -------------------------------------------------------------------------------- 4040846114 | Nicholas Feinberg | 2022-02-18 21:46:58 -0800 Fix Throatcutter player tile (Gwynnette) -------------------------------------------------------------------------------- 06d03a830b | Nicholas Feinberg | 2022-02-18 12:21:35 -0800 Remove a spurious tracer check Didn't quite think that one out. -------------------------------------------------------------------------------- 097e55589a | Nicholas Feinberg | 2022-02-18 12:20:20 -0800 Fix quiver/summon warnings (CarefulOdds) Don't check for interactions with ongoing AOE attacks (OTR, Polar Vortex, &c) when you're just quivering a summon spell. Only check on cast. Closes #2429. -------------------------------------------------------------------------------- 99c160cdfe | Nicholas Feinberg | 2022-02-18 11:01:33 -0800 Fix Shilleiagh noise (frdfg) When Devastator was added in 9cc3ee3f91d, it was intended to make 7 noise with every hit. However, since it was an explosion, it accidentally made 15 noise instead, and hence the wiki noted it as making 'fireball-level noise'. This continued for 10 years until 58ad9d9fa3b, which accidentally muted it while trying to make Irradiate silent. This commit restores Devastator to its intended 7 noise per hit. -------------------------------------------------------------------------------- 5b5bac981a | advil | 2022-02-18 10:14:58 -0500 feat: a means of preventing player ghosts from held accounts This is implemented a bit generally for maximum compatibility, but because it uses the new `-no-player-bones` option, a held account will not be able to start games with crawl binaries that do not support this. This applies both to old versions and forks. I will cherry-pick the options commit to a few stable versions back. Should have no impact on servers that aren't using account holds. -------------------------------------------------------------------------------- abffb2d2b2 | advil | 2022-02-18 09:28:53 -0500 feat: add a CLO to prevent writing player bones This is not really intended as a player facing feature (it doesn't prevent ghosts from being generated or anything like that), but as an option to support community management features on webtiles. Implementing as a separate commit to make it easier to backport. -------------------------------------------------------------------------------- 078de9bc30 | Nicholas Feinberg | 2022-02-17 19:49:28 -0800 Display irradiate damage in monster (ardl) -------------------------------------------------------------------------------- 501f64c9ef | Edgar A. Bering IV | 2022-02-18 04:39:55 +0200 feat: smooth early super ood cap and document In des syntax the glyph `8` means depth * 2 + 4. A "super ood". The glyph `9` means depth + 5, a "moderate ood". Both of these are constrained in D:1-8 at present, the maximum vault OOD is depth * 2 over D:1-8. This cap expires after D:5 for `9`, but continues to impact the meaning of `8` until D:8. The result is that from D:8 to D:9 there's a large jump in difficulty of vaults. This commit smooths things, so that the additive term goes up by 1 for each floor afte D:8 until reaching its full value by D:12 (at which point `8` means max depth since the cap of D's OOD table is 27). -------------------------------------------------------------------------------- baf749a769 | CipHuK | 2022-02-16 19:39:45 -0800 Fix: Don't warn on trying to summon rPois allies This is quite fragile, but maybe it's less annoying than the alternative. It'd be good to do the same trick for toxic bog and fliers. [Committer's note: did various cleanup and fixes.] Closes #2424. -------------------------------------------------------------------------------- 189f89ecda | advil | 2022-02-16 17:53:56 -0500 fix: check webtiles db flags more consistently and act on them This improves the handling of using the cli to change the ban/hold state of players who are currently logged in. The main change to db access is that the flags are updated when starting a game, and changes (in either direction) should take effect immediately. To get this to work I had to improve some of the logout handling (which previously relied on a reload, and couldn't be triggered from the server). Hopefully the I/O cost of this extra db check on I/O-bound servers isn't impactful, we'll see. This commit also fixes a bug where a held account that tries to spectate got the error info through the wrong message (well, the right one didn't exist yet) causing the user/password boxes to reappear. -------------------------------------------------------------------------------- 613497d651 | advil | 2022-02-16 17:01:34 -0500 feat: add a cli command to list only account holds In a real server in practice, the bans list can get pretty nsfw / unpleasant to see. So it's useful to have a way to look only at account holds for normal maintenance. -------------------------------------------------------------------------------- dac63da4db | advil | 2022-02-16 15:39:14 -0500 fix: allow disabling yaml games definitions Since these aren't templated on dgl setups, they are a bit of a pain to deal with even if the goal is just to remove the default one from trunk or prevent its installation. This commit provides another approach, where you can set the directory to `None` and skip loading yaml game definitions altogether. -------------------------------------------------------------------------------- 0523dad39a | gammafunk | 2022-02-16 11:55:29 -0600 fix: Add a missing vault definition and refactor For bailey_polearm_vampire_castle_hellmonk, one of the vampire weapon definitions was missing its vampirism ego, which the others all had. Also reformat the monster definition, simplify NSUBST syntax, and align indent. -------------------------------------------------------------------------------- 0a07039d5a | Nicholas Feinberg | 2022-02-15 21:23:51 -0800 Tweak branch entrance noise messages (Booper) "Less far" is very awkward. Closes #2427. -------------------------------------------------------------------------------- 6e81df9875 | Nicholas Feinberg | 2022-02-15 20:46:08 -0800 Fix an typo (FizzleBang) -------------------------------------------------------------------------------- 4b50743c59 | hellmonk | 2022-02-15 20:13:30 -0500 nerf vampire castle bailey -------------------------------------------------------------------------------- 37f86683bf | advil | 2022-02-14 18:34:46 -0500 feat: webtiles reload on SIGHUP This is a long requested feature whose implementation is made more tractable by the separation of config.py and the webtiles.config module. I'd still definitely put this in the "experimental features" category. It will probably go badly for at least some options, but I've tested it on the account disable-type features I added recently, and it works well for those. Game data reload looks to work fine but I haven't tested it very carefully (e.g. no idea what would happen if someone is playing a game that got removed, etc.) The implementation is tied to an option and disabled by default, both because I'm not sure how well it will work in practice, and because I have the impression some dgl setups may have used SIGHUP to stop the server at some point, and enabling this by default would break init.d scripts. -------------------------------------------------------------------------------- 45d3ea808a | advil | 2022-02-14 18:11:52 -0500 feat: various account management enhancements Nick restriction improvements: * Allow defining a custom name check function in config. Some things are a bit easier to do this way than with a regex. Two restricted registration modes: * set `new_accounts_disabled` to disable new account creation altogether. This is a bit quick and dirty, and users currently don't get an error until they hit the submit button. * set `new_accounts_hold` to allow new account creation, but mark any new accounts with an "account hold" flag. This flag: - prevents login via ssh, where relevant. (It just sets the ban flag, so messaging to players may be confusing..) - prevents the account's games from appearing in the lobby or being spectated. - prevents the account from using chat. - prevents the account from spectating altogether. (Of course they can log out and spectate as anonymous.) - Players with this flag can still play games. - This flag is implemented as a new dgamelaunch db flag. Since dgl itself hasn't added any flags in like 15 years, hopefully this is safe. The account hold flags can be set and cleared via the wtutil.py command line tool. I'd like to add an admin panel interface too, but that isn't done. Ths flag, if set, has an effect even when the new account hold mode isn't enabled, so it can also be used as a kind of soft ban if someone is causing trouble in chat but for whatever reason isn't judged to merit an outright ban. -------------------------------------------------------------------------------- 0f647bec9a | advil | 2022-02-14 09:38:39 -0500 fix: check ban flag for token logins I think I didn't add this before because it is awkward to check at the point of login without adding another db call. However, user flags are collected from the db shortly after the point of checking the token, so this is a perfectly workable point to check the ban flag again. (Some of this code could perhaps be consolidated.) -------------------------------------------------------------------------------- 60f898f876 | advil | 2022-02-13 17:12:39 -0500 feat: more verbose new account logging This information was accessible, but needed digging in the logs by cross-referencing a socket, or digging in the db. I could see an argument that the email value is better not reported in a logfile, but I'm going to include it for now. -------------------------------------------------------------------------------- 80d8537514 | advil | 2022-02-13 17:11:19 -0500 fix: handle nonexistent accounts in ban checks This was crashing on None values and therefore not displaying the "login failed" message. -------------------------------------------------------------------------------- 25f29fbe20 | advil | 2022-02-13 15:18:29 -0500 fix: stabilize serpent of hell placement The previous code was a bit of a pain to understand, and also seems to have never been updated for pregeneration. This simplifies the calculation, and restructures it to not rely on player exploration. It is still entirely possible for hell end vaults to mess this up. -------------------------------------------------------------------------------- 88c9fad16d | hellmonk | 2022-02-12 23:37:05 -0500 Unthin early D loot This was reduced as part of D:1 item gen changes but seems to have been unnecessary. Taking this back up to prior levels. -------------------------------------------------------------------------------- 93358da72b | hellmonk | 2022-02-09 21:59:09 -0500 feat: Xom orb gift speech -------------------------------------------------------------------------------- 6187a340c9 | hellmonk | 2022-02-09 21:28:40 -0500 slightly nerf bailey_axe_minmay_hex_keep -------------------------------------------------------------------------------- 258763100d | hellmonk | 2022-02-09 21:26:26 -0500 fix floor tiles in a bailey -------------------------------------------------------------------------------- 1f87ffd4f4 | hellmonk | 2022-02-09 21:24:55 -0500 fix: Nightstalker stealth Give 50 stealth at mutlevel 3 instead of 48. -------------------------------------------------------------------------------- ee772dd00f | advil | 2022-02-08 10:38:20 -0500 fix: regularize confused self-attacks (perryprog) Previously, there was basically one way where a monster could accidentally hit itself while confused (with a number of other rare special cases): if it targeted another monster, `mmov` would be reset after the `fight_melee` call, and then the later there's an additional 1/6 chance for a self-attack. There's code that appears intended to handle a similar player case in `_monster_move`, as well as a chance on top of the monster rolling mmov as 0,0, but these were unreachable due to variously an earlier batch of code that handles attacking the player, and an early return if `mmov.origin()` is true. This commit regularizes things to what appears to be intended. Further tweaks may be justified, and in particular I'm not sure the purely random chance of self-attacking is needed. After this commit: 2/3 chance of stumbling, with a 1/n chance of rolling 0,0 (n=habitable spaces), and then a 1/6 chance of a self-attack. So *probably* rare enough to be not worth kiting to get. If the monster targets another monster, or (now fixed) the player: a 1/6 chance of a self-attack on top of the swing. Oddly (?), this doesn't change energy and the monster always gets a swing for this case, so they attack twice for the usual energy cost. As noted in the comments, I'm interpreting this as a kind of slapstick effect. But it might be more consistent if that 1/6 roll attacked themselves *instead* of the intended target, not sure. -------------------------------------------------------------------------------- debf4667c2 | advil | 2022-02-06 12:40:32 -0500 fix: don't crash on theft during EquipOnDelay Hopefully the reference `equip` is ok in this case, but it seems to work in testing and this is how EquipOffDelay handled it. Relevant crashlog: https://crawl.project357.org/morgue/cpf86/crash-cpf86-20220206-105923.txt -------------------------------------------------------------------------------- c37658a0fe | advil | 2022-02-05 15:34:50 -0500 fix: invert some mistaken transparency logic This seems to be the opposite of what was intended in 7e0d850643. On top of the wrong transparency logic, the fact that these vaults can get a transparent tag added if they are used in vaults was generating false positives in seed testing (where the transparent tag persists to a later run). I'm not actually sure its great for the vaults layout code to force-add `transparent` like that (even though I probably added it), but I'm leaving that alone for now. -------------------------------------------------------------------------------- 01c6783841 | robertxgray | 2022-02-05 18:22:06 +0100 Merge branch 'master-upstream' -------------------------------------------------------------------------------- f8c823261f | advil | 2022-02-05 10:38:52 -0500 fix: various dancing weapon death message issues * give the "strangely unrewarding" message in the abyss (and other no-xp scenarios). Also applies to simulacra. * Don't give a goldify message in the abyss (and other no-xp scenarios). * Handle goldify better for a couple of spell special cases as well. Also, add an explicit ASSERT in dancing weapon tile code based on a recent crash report. -------------------------------------------------------------------------------- 03a7b78be7 | advil | 2022-02-04 14:47:43 -0500 chore: add a trunk reminder for the 0.28 tournament -------------------------------------------------------------------------------- 2e6bf50d99 | Nicholas Feinberg | 2022-02-04 08:16:33 -0800 Add Oozemancy ability tile (Sastreii) -------------------------------------------------------------------------------- 95d2506d3f | Nicholas Feinberg | 2022-02-04 08:02:31 -0800 Post-final changelog updates (Ge0ff) -------------------------------------------------------------------------------- 58af29d98f | gammafunk | 2022-02-04 08:48:45 -0600 Update the Debian changelog for 0.28 (cherry picked from commit c65acfa365c381bc93a5adae01e2246700b84dc4) -------------------------------------------------------------------------------- da9a4e44c3 | gammafunk | 2022-02-04 08:48:32 -0600 Final 0.28.0 changelog (cherry picked from commit 1f18f1326188bb30cc2e2468d6abd7c50934ed76) -------------------------------------------------------------------------------- 93cd696043 | gammafunk | 2022-02-04 08:48:19 -0600 Checkwhite (cherry picked from commit 5a74557163c3c3b12ce7de0173ff567a5bd4a380) -------------------------------------------------------------------------------- 837932c90e | Edgar A. Bering IV | 2022-02-03 18:53:05 -0500 docs: update CREDITS.txt -------------------------------------------------------------------------------- 2c38d6c9ec | Kate | 2022-02-03 23:48:24 +0000 Fix a crash on Jiyva jelly spawns Caused by damage from YOU_FAULTLESS (such as a guardian golem's clouds) triggering a jelly to try and spawn with a dummy monster set as its foe. -------------------------------------------------------------------------------- 3050e97935 | Edgar A. Bering IV | 2022-02-03 15:03:58 -0600 tiles: jiyva oozemancy tile Some slime wall in the invocations lozenge. Could use improvement. Closes #2394 -------------------------------------------------------------------------------- ad4ee0f8b3 | RojjaCebolla | 2022-02-03 14:37:04 -0600 text: add descriptions to mutations.txt for no-skill-training mutations for Demonspawn cloud immunity for Engulf and Noise Suppression for various Ru sacrifice muts [ Committer's note: Squashed and rebased, removed removed mutations. Closes #2391 ] -------------------------------------------------------------------------------- 66d9a3572a | RojjaCebolla | 2022-02-03 14:37:04 -0600 fix: a typo in the description of repulsion field -------------------------------------------------------------------------------- d89ecb8dae | Edgar A. Bering IV | 2022-02-03 14:36:22 -0600 fix: tweak staff of Olgreb description To make it clear it is used via the 'a' menu now. Closes #2400 -------------------------------------------------------------------------------- de281f79f8 | Edgar A. Bering IV | 2022-02-03 14:36:22 -0600 docs: update the manual -------------------------------------------------------------------------------- c270d1dad5 | Nicholas Feinberg | 2022-02-03 09:05:12 -0800 Changelog tweaks -------------------------------------------------------------------------------- c5fe22d4ff | Perry Fraser | 2022-02-03 07:45:21 -0800 fix: correct hint for stat increases per 6 levels Change introduced in 03ef38a. -------------------------------------------------------------------------------- 85bba54663 | gammafunk | 2022-02-03 07:44:43 -0800 Update the changelog Near final for 0.28.0, but probably more tweaks to this to come. -------------------------------------------------------------------------------- 1732ff48e7 | Edgar A. Bering IV | 2022-02-02 23:19:51 -0600 fix: default runrest ignore transformation ending messages As reported in #2189 the default options repeatedly interrupt resting for transmuters, and this is particularly noticable in the early game when spell power is low. This commit adds a default ignore for all transformation-expiring-soon messages and for transformation end messages for all good forms. Wisp, Bat, Pig, and Tree form still interrupt rest, as these are far more likely for the player to want to rest off. This commit does entail a tradeoff: it makes the experience smoother for newer players in the early game at the expense of requiring a player who wants to remain in a form while auto-exploring/auto-traveling to edit their rc. It's not clear to me that there's a way to easily satisfy both use cases, someone will need to edit their rc. This change shifts the onus to do so to what are probably more experienced players. Closes #2189 -------------------------------------------------------------------------------- e854522c82 | Edgar A. Bering IV | 2022-02-02 23:19:51 -0600 fix: prefer foes for default inner flame target (12676) -------------------------------------------------------------------------------- 0c4cd36759 | Edgar A. Bering IV | 2022-02-02 23:19:51 -0600 fix: allow trog (and other divine allies) to spawn in clouds (12675) Removes an ancient and undocumented hack to avoid placing divine allies in particular in clouds (except with Xom). Since summons from other sources can appear in clouds just fine, let's go with the simpler, consistent approach here. -------------------------------------------------------------------------------- 81e803b10a | advil | 2022-02-02 23:42:39 -0500 fix: update some mac plist stuff I have no idea why LSRequiresNativeExecution was previously being ignored (the 0.27.1 release has this set and runs fine under Rosetta), but as of the 0.28-b1 release artifacts, it is *not* being ignored and this prevents it from running under Rosetta. I'm not sure why this was even set in the first place. I've also adjusted the minimum version field to what we actually build for. Probably more values here need a pass, e.g. the bundle id is pretty outdated. -------------------------------------------------------------------------------- e7179d36cc | advil | 2022-02-02 21:01:04 -0500 fix: adjust mouse hover suppress timing (ebering) This was mainly tested in firefox, which takes about 10-20ms to deliver mouseevents to the menu after a scroll, so 80ms seemed nice and conservative. However, in Safari, the timing seems to be more on the order of 100ms. (Maybe it's intentionally delaying them if they result from rendering rather than actual mouse movement?) I've upped this timeout to 200ms. Even with a value that might in principle be noticeable, I wasn't able to generate any intentional physical motion that revealed the suppression when trying to use a mouse. Unfortunately this change does make it a lot easier for the timeouts to overlap, which a simple bool doesn't handle very well, leading to the more involved approach here. -------------------------------------------------------------------------------- 1d65ae1bb4 | advil | 2022-02-02 16:01:02 -0500 fix: handle webtiles SIGHUP messaging differently SIGHUP indicates that something killed the process. While this can happen for various reasons, it mostly happens on some form of disconnect. If the player is around to see this message (as in Mantis 11595), they probably hit the back button or something, and it's misleading to describe this as a crash ("Unfortunately your game terminated due to an error."). In any case, there's no crash report on a SIGHUP. This commit adds a new message in client.js that'll require caches to catch up, but until then the default case message is fine, and prints the exit reason. More or less resolves https://crawl.develz.org/mantis/view.php?id=11595 -------------------------------------------------------------------------------- b207118a1a | Kate | 2022-02-02 20:31:37 +0000 Reduce Wucad Mu's channeling effectiveness (atomjack) The new formulae resulted in Wucad Mu scaling much more strongly than intended, up to approximately a 99% chance to make spellcasting free at 27 Evocations skill. Ideally the formulae will be reworked in the longer term to also make the effect scale better for regular orbs of energy at lower skill, but in the meantime reduce the ceiling by counting Wucad Mu as 1.5 sources of channeling instead of 2, and removing the stacking effect of multiple sources on the backfire rate. -------------------------------------------------------------------------------- 3f3a666523 | advil | 2022-02-02 15:14:16 -0500 fix: further issues with non-casting monster descriptions df0a5da549d686d didn't get this case right -------------------------------------------------------------------------------- 139f01a7f8 | advil | 2022-02-02 15:14:16 -0500 fix: scroll more sanely in webtiles Page up/down was overshooting. This commit seems to bring it to a better place (although the interaction with the shade is messy). I'm not sure why this code was previously commented, as far as I can tell (aside from compensating for the shade) it was correct, so hopefully there isn't some problem I didn't find. Resolves https://crawl.develz.org/mantis/view.php?id=12193 -------------------------------------------------------------------------------- 28f407b12d | Edgar A. Bering IV | 2022-02-02 14:04:40 -0600 fix: inform the player that using yaras on fedhas summons doesn't work (12670) -------------------------------------------------------------------------------- 0a91294c2c | Edgar A. Bering IV | 2022-02-02 14:03:14 -0600 fix: don't double prompt for monsters with Yara's (12669) Using stop_attack_prompt and firing a tracer is overkill. The former uses a better verb and works well with modern hitfuncs. The latter includes a self-damage check. It would be great if the former could be converted but that's not a small task and is likely to introduce a bunch of new double prompt bugs. For now I've gone with checking for self-damage separately. -------------------------------------------------------------------------------- 9d6eb31067 | Edgar A. Bering IV | 2022-02-02 13:47:22 -0600 fix: account for guile in ctouch display (dilly) -------------------------------------------------------------------------------- 2e2478e390 | advil | 2022-02-02 14:18:54 -0500 fix: handle a few more numpad keys in menus Resolves https://crawl.develz.org/mantis/view.php?id=12641 (and a few others that I spotted). -------------------------------------------------------------------------------- df0a5da549 | advil | 2022-02-02 13:59:38 -0500 fix: handle webtiles spellset parsing a bit better The webtiles code replaces the spellset in a monster description body with a placeholder. Previously it did this by regenerating the full spellset string and doing a simple `replace_all`. This obvious relies on deterministic behavior for `describe_spellset`, something not true of spells that have some random elemental coloring. This webtiles code could probably use some major refactoring, and possible the spellset should be separated out at the level of monster_info fields, but to fix this for release I've done something a bit simpler (and hackier). When generating a spellset description for webtiles, the monster description code inserts some delimiters, and these delimiters are used to insert the placeholder. I've also inserted some code to explicitly detect this sort of bug both when inserting the placeholder, and in the webtiles js code that was going wrong as a result of this bug. (For the latter, the colour string markers that remained in the body were getting parsed as tags by the browser, or maybe jquery, and wiping out the div where the real spellset was supposed to be inserted.) -------------------------------------------------------------------------------- a2763057c1 | gammafunk | 2022-02-02 10:45:19 -0600 feat: Updates to octagon-themed float vaults For minmay's set of octagon vaults, namely `minmay_shoctagon`, `minmay_roctagon`, `minmay_firetagon`, and, yes of course, `minmay_coctagon`, updates to placement, monster sets, loot, and syntax. These vaults all have a lower-tier monster set that places 8 monsters on-average along with a single out-of-depth "boss" monster, but the monster sets don't change much with depth. I've updated the maps to have appropriate monsters for earlier Dungeon (either D:10-D:12 or D:12-D:13, depending on the map), late Dungeon, Elf, and Depths. For Depths, all vaults can now place on every level of that branch. I've replaced `ident:type` with `ident:all` in all cases. Simplify the loot/monster placement logic to not have a rare chance to add a lot more of either monsters or loot. Nearly doubling the loot doesn't work well in a vault where the loot is already generous and every loot item is thematic. Remove these rare substitutions in the common setup function. Tweak the NSUBST to place a few more monsters so we keep the same average. For the unrand weapon item, follow the lead of `minmay_coctagon` and have thematic randart weapons of the same weapon class but of subtypes different from the unrand. This way we're not placing e.g. the Arc Blade 100% of the time, like a guarded unrand vault. Also add to these vaults some other thematically appropriate unrands with randart alternative to these vaults in cases when unrands exist. -------------------------------------------------------------------------------- d243af8c8e | gammafunk | 2022-02-02 10:45:00 -0600 feat: Update a vampire-themed float vault For `lemuel_vampire_tower`, revamp the vault to have better monsters that scale with depth of placement. We remove the down-hatch, since it served little purpose other than limiting placement. Move the guaranteed altar to where the down hatch was, and put a superb_item on the altar to go along with the other two loot items. Allow the vault to place on the final levels of Dungeon, Depths, and Crypt. Rework the monster tiers to follow a more logical progression, using monsters appropriate for placement depth. For the vampire boss, place a vampire for earlier Dungeon, upgrading to a vampire knight, with a placement of either Jory or a vampire knight decked out with thematic equipment of high quality for Crypt and Depths. -------------------------------------------------------------------------------- 292b7dfcfe | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a Depths float vault For `gammafunk_depths_water_palace`, update the monster list to be more current with the Depths roster. Instead of solo water elementals at certain locations, use merfolk exclusively, but have a chance for two of these locations near the central chamber entrance to be elemental wellsprings. Reglyph a bit as necessary. -------------------------------------------------------------------------------- 727057aadf | gammafunk | 2022-02-02 10:29:20 -0600 fix: Wrap a DES line -------------------------------------------------------------------------------- 10b4fd4ada | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a Depths float vault For `lightli_eight_chambers`, make the monster sets more appropriate for Depths, removing the orc and poison themed sets, which don't really have appropriate monsters, replacing them with earth, tengu, and spriggan themed ones. Revamp the other sets to be more coherent in terms of threat level. -------------------------------------------------------------------------------- c803637380 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a Depths float vault For `hangedman_six_sided_sadism`, update the monster lists to remove some of the less interesting monsters from outside the branch. Use an appropriate SUBST to thin out two of the monster sets instead of having `nothing` in the monster list. -------------------------------------------------------------------------------- f436032661 | gammafunk | 2022-02-02 10:29:20 -0600 fix: Clean up syntax of a float vault -------------------------------------------------------------------------------- 05b2614ef2 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a fire-themed float vault For `lemuel_flame_loot_2`, replace teleport closet areas with simple lava. The vault requires flight or translocations to reach, and said closets didn't add anything to the vault aside from requiring `no_tele_into` masking. Add depth scaling, adding more monsters and loot as placement depth increases. Use two tiers of fiery monsters, with a single boss monster and a lower tier of support monsters. Allow fire monsters to generate as level lava spawns, but turn off level monster gen elsewhere in the vault. -------------------------------------------------------------------------------- 0f297cac12 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update placement of a float vault For `onia_ninara_swampy_vault`, don't place this vault in Depths, since there's not an appropriate set of Swamp-themed monsters that are appropriate difficulty for Depths. Refactor syntax and glyph usage. -------------------------------------------------------------------------------- 695ac6beb5 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a troll-themed float vault For `lemuel_troll_bridge`, make the monsters scale better with depth. For later Dungeon, upgrade yaks to death yaks and upgrade trolls. For Depths, we replace the timid yak genus monsters with wizards, since it seems like wizards would be scared of being eaten by trolls. Place fewer monsters at earlier depths, since 10 trolls guaranteed on D:9 is a little much. -------------------------------------------------------------------------------- 14386d3767 | gammafunk | 2022-02-02 10:29:19 -0600 feat: Update a Depths mummy-themed vault For `lemuel_minitomb`, update the vault to monsters that are appropriate challenges for Depths, and revamp the appearance, layout, and loot. Don't use plain mummies, using spectral things at the low end, along with guardian mummies and mummy priests to go along with the single royal mummy. Replace some of the gold in the final chamber with super and star item loot, which is a more meaningful award. Use tomb-theme wall and floor tiles, and make the layout more favorable to monsters in the final two chambers. Allow the vault to place in all of Depths and Crypt. -------------------------------------------------------------------------------- 6705b9cb7d | gammafunk | 2022-02-02 10:29:19 -0600 feat: Update a Depths float vault For `minmay_skeletal_surprise`, use a better substitution setup and add more Depths-appropriate nasties monsters. Namely mix in a small chance for ancient/dread liches, keeping averages the same. For the nastier monsters that place in the gold rooms, place a superb or star item instead of just more gold. -------------------------------------------------------------------------------- e7567d4e05 | advil | 2022-02-02 11:07:07 -0500 fix: fix a rounding issue in webtiles bars This fixes the specific issue reported, but I couldn't swear that there are still no overflow issues. What was happening is that at the exact hp values reported in the issue, the main bar was 96.88% and the decrease bar ended up as 3.13%. Resolves #2384 -------------------------------------------------------------------------------- 69f475c709 | advil | 2022-02-02 10:29:52 -0500 docs: changelog updates Mostly editing/expanding UI/options bullet points -------------------------------------------------------------------------------- 72cdf85f72 | wheals | 2022-02-02 10:51:39 +0200 fix: ASSERT tripped with targeted destruction cards -------------------------------------------------------------------------------- 62a80824bf | Edgar A. Bering IV | 2022-02-01 22:56:19 -0600 fix: always give a message when a net trap fails to trigger For clarity. -------------------------------------------------------------------------------- 9fc6a9d840 | Nicholas Feinberg | 2022-02-01 15:57:34 -0800 Remove a reference to exploration traps C.f. 86c161e70f1664227c2cfe580500b2e3d2ef0146. -------------------------------------------------------------------------------- 89e12c0570 | Nicholas Feinberg | 2022-02-01 09:42:45 -0800 Fix toxic bog XP (Oneirical) It passed you->as_monster() into the temp map marker code (which is null), instead of the expected MID_PLAYER. -------------------------------------------------------------------------------- 8eb35efe60 | advil | 2022-01-31 22:58:10 -0500 fix: eliminate a bad memory access When the player had no wieldable inventory items, toggling the show all mode could lead to the deleted inv_header being modified. Write a custom clear() function for this class that explicitly sets nullptr. (Some day it would be nice if Menu classes used shared_ptrs or something...) -------------------------------------------------------------------------------- 581ba40fa7 | advil | 2022-01-31 16:16:31 -0500 docs: more color diagnostics for terminal These are intended to flag to putty users using certain options that their terminal is misconfigured. (I have *absolutely no idea* why putty is misrendering either of these. It's not impossible that at least the two block one is a low-level bug in our curses code? -------------------------------------------------------------------------------- a1db9ad13e | advil | 2022-01-31 16:16:31 -0500 fix: color spell letters by utility in more menus This was already done in the memorize menu. It looks more consistent overall, and also draws less attention to whatever is going on with putty's bg color swapping in blink_brightens_background mode. -------------------------------------------------------------------------------- 2ed287c6d8 | advil | 2022-01-31 16:16:31 -0500 fix: indicate compatibility mode for putty in more cases This was getting suppressed for players using blink_brightens_background, but the results of this mode are (currently) kind of odd, so we need to print the info about compatibility mode even then. Wording tweaked slightly in consequences. -------------------------------------------------------------------------------- b1d7ae0460 | wheals | 2022-01-31 20:16:04 +0200 fix: Numpad '*' and '+' in newgame menu (#12666) -------------------------------------------------------------------------------- ccf83627c4 | wheals | 2022-01-31 19:57:20 +0200 feat: allow closing the webtiles chat with F12 (Yermak) -------------------------------------------------------------------------------- 190321e9dd | advil | 2022-01-31 12:21:03 -0500 fix: restore item class hotkeys to id menu (Lici) No guarantees this behavior will stay forever, but it was unintentionally remove in fc454544111 so I'm restoring it for now. -------------------------------------------------------------------------------- 0a9fdd57f5 | advil | 2022-01-31 11:43:50 -0500 fix: menu selection for `prompt_invent_menu`s (gressup) These menus do manual keyhandling (which should eventually be refactored) and so CK_ENTER needed its own manual handling here. Affects most noticeably fire menu, but maybe all sorts of other misc ones. -------------------------------------------------------------------------------- 93984085d6 | wheals | 2022-01-31 18:28:56 +0200 fix: select all menu items when pressing a type shortcut Because the second iteration of the loop did not have the MF_SINGLESELECT check, using a non-primary hotkey to select things you had already scrolled past did not reliably select all items. The best way to reproduce this was to have several weapons in your inventory, scroll down past them on the (d)rop screen, and then press ). The topmost weapon would not be selected. (More specifically, I suspect it was being selected twice, leading to it being deselected.) -------------------------------------------------------------------------------- 238b2ceb19 | wheals | 2022-01-31 18:01:49 +0200 fix: time out drain when returning to a level (#12663) Wasn't updated when monster drain was made temporary. -------------------------------------------------------------------------------- 0aac2aca22 | wheals | 2022-01-31 17:57:46 +0200 fix: easy_floor_use when your (sub-)inventory is empty (#12667) -------------------------------------------------------------------------------- 171a82f519 | wheals | 2022-01-31 17:49:07 +0200 fix: restore spacebar behaviour in autoexplore autopickup prompt (#12671) -------------------------------------------------------------------------------- 15a0a6fec6 | wheals | 2022-01-31 17:19:41 +0200 fix: standardize penance piety display (#12565) Webtiles showed the piety rank even under penance, but console/local tiles did not. -------------------------------------------------------------------------------- 236b832b77 | wheals | 2022-01-31 17:14:28 +0200 fix: scroll of fear success chance (#12665, Yermak) The targetter did not properly reflect the power cap. The same bug probably also affected Anguish and Discord. -------------------------------------------------------------------------------- 9887b6b090 | wheals | 2022-01-31 17:04:59 +0200 fix: on the spellcasting menu casts the last spell again This was broken for both menu_arrow_control = true and false. The previous behavior was restored if arrow control is off; if arrow control is on, the menu automatically defaults to hovering over the last-cast spell, which means that pressing enter will cast that spell. Either way, the last-cast spell is shown with a '+' after the hotkey instead of a '-'. This does not restore the behavior when the player knows only one spell; that was mostly for newbies who are presumably keeping the default of true for arrow control. -------------------------------------------------------------------------------- 7f48f510a0 | Nicholas Feinberg | 2022-01-30 12:30:15 -0800 Fix (?) orb of wrath uselessness check Match the call to go_berserk() in melee-attack.cc triggered by you.angry() (which is the effect of an orb of wrath). -------------------------------------------------------------------------------- e4388f8e44 | advil | 2022-01-30 12:28:15 -0500 fix: correct shopping list menu more lettering This was doing the wrong thing on letters > 'z', which resulted in invalid UTF-8 and prevented the menu message from ever getting to the webtiles client. Resolves https://crawl.develz.org/mantis/view.php?id=12672 -------------------------------------------------------------------------------- a79f92ac9c | Nicholas Feinberg | 2022-01-29 14:47:47 -0800 Remove explicit fix slot support Unused since bf516ccc1f22f3449c9dce1c7828d97747f247d2 (2007) and unlikely to be used in future. -------------------------------------------------------------------------------- bf593b16ee | Nicholas Feinberg | 2022-01-28 17:25:33 -0800 Fix negative energy mutation description -------------------------------------------------------------------------------- e65d7fc6d1 | RojjaCebolla | 2022-01-28 19:25:24 -0500 fixup! Add descriptions for a few resistance mutations continuing to noodle on this. advil: "add explicitly any relevant abbreviations" -------------------------------------------------------------------------------- e889dcbc7e | RojjaCebolla | 2022-01-28 19:25:24 -0500 Add descriptions for a few resistance mutations Filling some holes in mutations.txt -------------------------------------------------------------------------------- ef7f3e67aa | advil | 2022-01-28 12:46:25 -0500 docs: a few more species mutation descriptions Also, tweaked hop to have more detail. Some of these touch on related fakemuts that wouldn't otherwise be currently described. -------------------------------------------------------------------------------- 9e681642b6 | Nicholas Feinberg | 2022-01-28 09:28:44 -0800 Tweak Mlioglotl Make him demonic holiness to better match player expectations (re vulnerability to holy word), and make his Lugonu abilities priestly rather than magical. -------------------------------------------------------------------------------- b194023da8 | advil | 2022-01-28 11:48:09 -0500 fix: don't list removed muts in describe debug code Also, put a static inside its only direct consumer. -------------------------------------------------------------------------------- 2e94016dc0 | Implojin | 2022-01-28 11:40:34 -0500 fix: lowercase help lookup on ctrl-o The keybinds shown on ctrl-o were outdated, this aligns it with how help lookup currently works. -------------------------------------------------------------------------------- 60158a2511 | Nicholas Feinberg | 2022-01-28 07:50:19 -0800 Add missing dj species mut descs (advil) -------------------------------------------------------------------------------- 13803eac2f | advil | 2022-01-28 10:44:29 -0500 feat: debug code to display muts without a description This is pretty spammy so not enabled by default. I've also restored the debug build `validate_mutations` call to the describe mut menu, if this was intentionally removed (it's a bit spammy too) it could be gated behind the new DEBUG_MUTATIONS define. -------------------------------------------------------------------------------- 59a240f8a5 | advil | 2022-01-28 10:22:38 -0500 fix: adjust some casing in mut short names These short names are being used as popup titles for `A` screen popups, and given this it is better to systematically uppercase relevant abbreviations. Because this field was designed for the % screen list, there was mostly a lowercase convention for these fields (with a few exceptions), but it doesn't seem to matter in any technical way if this casing is adjusted; db lookup is case insensitive. They look ok in the short list too, and a few things were already cased there. (Also because these have been designed for brevity, they often don't work well as titles, and I think in the long run it may be good to have an explicit "title" field of some kind in this data that allows writing a better one. But that's a bit of a project.) -------------------------------------------------------------------------------- e4976b13b8 | advil | 2022-01-28 10:00:28 -0500 fix: don't show (level 1/1) in mutation descriptions This seems to me more confusing than useful, I guess one might argue with this though. -------------------------------------------------------------------------------- a75d3d97ab | advil | 2022-01-27 20:52:29 -0500 fix: update SECURITY.md Someone needs to remember to do this again in a few weeks. Resolves #2107 -------------------------------------------------------------------------------- 08fb2288ea | advil | 2022-01-27 20:45:25 -0500 fix: quivering ammo from item description This call needed to correctly handle the ammo quiver (and the inscribe check), and to avoid code duplication I pulled similar relevant code out of ActionSelectMenu into its own call. Overall, this whole setup could possibly use some simplification at this point, it was written to support arbitrary numbers of quivers but I am not sure that's ever going to be realistic. Resolves #2257 -------------------------------------------------------------------------------- 022ca4c890 | advil | 2022-01-27 14:15:01 -0500 fix: suppress mores during describe actions This prevents graphical glitches in console and a hard-to-spot key input prompt in webtiles. Just suppressing the more is not an ideal solution as it can make you miss force_mores, but I'm not sure there's an alternative that wouldn't take some major refactoring. (I could imagine an RAII object that instead of suppressing output, collected it in a message tee and showed a popup if there was a force_more. But this is definitely in non-freeze territory.) Resolves #2232 -------------------------------------------------------------------------------- 0446c0dae4 | advil | 2022-01-26 23:07:21 -0500 fix: use menu api instead of deleteAll in a few menus -------------------------------------------------------------------------------- 068bf27d47 | advil | 2022-01-26 23:00:18 -0500 fix: reset scroll on spell search If the scroller was sufficiently far down, a search could result in no menu lines visible in console because the scroll didn't get adjusted. I haven't quite figured out why the Scroller m_scroll sanitization, which appears to be correctly implemented, doesn't kick in until a manual scroll. Maybe there's a missing _allocate? In any case, this commit explicitly manages the scroll for spell search, trying to keep it on the same spell if possible, but otherwise resetting to the top. Resolves #2303 -------------------------------------------------------------------------------- a859fcf985 | advil | 2022-01-26 16:57:37 -0500 ci: reset cache for mingw builds Or rather, change the cache key, which is apparently the way to do this right now. (The old cache gets erased if not accessed in 7 days.) -------------------------------------------------------------------------------- b8ed39c57d | Alex Jurkiewicz | 2022-01-26 16:16:26 -0500 Change return signature for set_rc Return boolean success. Also add a missing import used in on_message. Fixes #2382. -------------------------------------------------------------------------------- b0e57e52b4 | advil | 2022-01-26 12:43:07 -0500 fix: explicitly set UI_NORMAL before load_level in webtiles Messaging from portals happens during load_level, but on new char creation, UI_CRT is set by the character selection popups, and wasn't cleared in webtiles until load_dungeon. Since this state change is what is required for the initial show() call to the `normal` div in webtiles for this case, a more triggered during load_level would still wait for input but with the entire game div invisible. This is what led to the delver bug when landing on a level with a portal. Arguably it is also a bug that this messaging happens so early on initial load, but this seems extremely hard to change (marker init can't be moved later without what I seem to remember is complete disaster, so it would require deferring marker init messaging somehow). Resolves #2318, mantis 12343. -------------------------------------------------------------------------------- 53e83337bc | Alex Jurkiewicz | 2022-01-26 09:37:48 -0500 Use append for lists, not add Fixes #2380. -------------------------------------------------------------------------------- 12fcac58f8 | Nicholas Feinberg | 2022-01-25 18:03:19 -0800 Fix: clarify Conjure Flame description Try to explain how a rather complex spell works, without misleading newer players into thinking that re-casting the spell is the only way to get the embers to burn. -------------------------------------------------------------------------------- f2d273c862 | advil | 2022-01-25 15:51:46 -0500 fix: add a missing from future import (TZer0) -------------------------------------------------------------------------------- 94f35f3178 | advil | 2022-01-25 13:28:47 -0500 docs: remove a reference to CRD in the release guide since we haven't been doing that in as long as I've been a dev. -------------------------------------------------------------------------------- f1a7530480 | advil | 2022-01-25 13:04:53 -0500 fix: reenable * in UseItemMenu Probably broken in 673f3e5d658 -------------------------------------------------------------------------------- 87a8dc699f | advil | 2022-01-25 12:57:32 -0500 fix: make the unwield menu item usable Previously, this menu item was basically cosmetic, and didn't have a hotkey, preventing it from being hovered (in local tiles at least). This commit turns it into a real menu item that can be selected. While I was at it I improved some of the visuals of this item -- it uses form/species custom unarmed attack strings (though a lot of forms simply prevent this menu altogether), and indicates visually if unarmed is currently chosen. To match previous behavior, this menu starts with the first real item selected. We'll see if this is confusing or not. -------------------------------------------------------------------------------- 6d66802b9f | advil | 2022-01-25 11:22:10 -0500 fix: improve all items known case in KnownItemsMenu This fixes up the keyhelp to not show the toggle key, and absorbs the '-' keypress rather than just exiting the menu. This code needs some work still... -------------------------------------------------------------------------------- 2dc3af7c02 | advil | 2022-01-25 11:12:37 -0500 fix: adjust local tiles mouse hover behavior * get hover switching section to work in use and quiver menus, bringing these in line with webtiles * with arrow selection on, don't lose hover on MouseLeave * ignore mouse click keycode except on noselect menus. (Generally, this keycode only seems to happen when clicking outside of a window, which is extra confusing for anything else.) * don't draw hover for MF_NOSELECT menus, it makes the user think they can click and do something -------------------------------------------------------------------------------- 9123634e07 | advil | 2022-01-24 20:39:05 -0500 feat: quiver menu lettering improvements A long-time complaint about the newquiver menu is that the hotkeys are fairly arbitrary. This is challenging to resolve, since things that appear in this menu come from items, spells, and abilities, and there are likely to be collisions past the most basic of characters. A lot of players with this complaint have their preference for which lettering is the most important (I think that team item is the most vocal, because the old quiver menu just used item lettering), but these can't be mutually resolved. This commit attempts to use some of the fancier technology from UseItemMenu to resolve this problem. It adds a new mode to the quiver menu that focuses in on one of the three categories and uses the lettering from that category; the UI improvements from UseItemMenu hopefully make it easier to switch between the categories (e.g. arrow keys move smoothly between them, mouse hover changes categories*, and there's a toggle key as well. Focus mode on/off is implemented via a persistent option, so while you can manually set the rc option, it just remembers whatever mode you last had it in. Within a single play session it also remembers the section while in focus mode. So a typical use case for someone who doesn't quiver anything except items would be to hit ! to put the menu in focus mode, and not think about it ever again (until they upgrade, I suppose). This commit also involved a bunch of related fixes for stuff in Menu and UseItemMenu, as well as moving the quiver menu keyhelp to the footer. [*] n.b. there's been a regression somewhere along the line where this stopped working on local tiles, I'll deal with that separately. -------------------------------------------------------------------------------- cc9c2818f3 | advil | 2022-01-24 19:40:21 -0500 fix: guard against potential recursion in UseItemMenu Discovered while working on the quiver menu. I think this actually prevents some hover glitching at the moment. -------------------------------------------------------------------------------- 508f987c07 | advil | 2022-01-24 17:31:20 -0500 fix: fix some webtiles color string bugs This code didn't handle hand-generated nested color strings very well. More exactly recreate the stack algorithm from the crawl binary (still a bit different though). Should now work for any amount of foreground nesting, at least. -------------------------------------------------------------------------------- c496ab42f3 | advil | 2022-01-24 13:52:44 -0500 fix: correct exit logic for ability quiver submenu (Aliscans) -------------------------------------------------------------------------------- f64c0c316f | advil | 2022-01-24 13:52:43 -0500 feat: quiver menu section headings This is an old wishlist item and now that the cycle_header call and support code exists, becomes a lot more practical. Some minor other visual improvements to this menu as well. -------------------------------------------------------------------------------- cc732e7c34 | advil | 2022-01-24 13:01:45 -0500 refactor: clean up some messy quiver menu code Refactor a bunch of checks into the menu class, improve api for checking whether there are actions to quiver. Should not change behavior. -------------------------------------------------------------------------------- 283549b12f | advil | 2022-01-24 11:24:54 -0500 fix: fix use item section toggle with arrow control off -------------------------------------------------------------------------------- 673f3e5d65 | advil | 2022-01-24 11:05:06 -0500 fix: clean up some messy use item menu code This simplifies the use item menu so it doesn't have to entirely rebuild the menu every time the section changes. Rather, this commit adds an enable/disable toggle at the MenuEntry level that suppresses all hotkeys when disabled, and then changes this for relevant entries when switching sections. It also generalizes the section-switching code using the newer cycle_headers pattern. In addition, a minor visual tweak: indent non-hotkeyed items in these menus so that there horizontal position doesn't change on section change. -------------------------------------------------------------------------------- 55149d5790 | advil | 2022-01-24 11:05:06 -0500 fix: default `easy_floor_use` to false This option applies the action (read, wield, etc) to the floor item immediately on pressing ',' in the relevant menu if there is exactly one item of the right type on the floor. This behavior is really inconsistent with how menus work in general, and with what ',' does when there's more than one item. I'm keeping the option since it's been a default for a very long time. If people really don't like this new default I'm open to doing something further; one idea might be that if there's one item, assign it an actual (non-comma / non-letter) hotkey. -------------------------------------------------------------------------------- f728b707aa | Perry Fraser | 2022-01-23 13:46:06 -0800 fix: set FTILE in kennysheep_arrival_seaside stair -------------------------------------------------------------------------------- c66546352e | advil | 2022-01-23 11:10:02 -0500 fix: initialize a bool (Goratrix) This was resulting (depending on random local circumstances) in the first viewmap command sometimes being dropped spuriously. -------------------------------------------------------------------------------- 6e7a31e4fc | advil | 2022-01-23 10:58:36 -0500 fix: map touch input backspace to esc The lack of esc is one of the more immediate issues for using an on-screen keyboard, and using backspace seems like a workable solution. Backspace is prominent on these any touch virtual keyboard I've seen and would otherwise just go (almost) unused on touch input (in fact sending a fairly useless ctrl-h, which maybe needs a webtiles workaround in general). This only affects key input events handled via the mobile input button, so doesn't affect normal play or touch devices with physical keyboards. -------------------------------------------------------------------------------- e5bbfea7ee | advil | 2022-01-23 10:19:52 -0500 feat: use DESC_INVENTORY_EQUIP for carried stash search results Suggestion from u/SvalbardCaretaker -------------------------------------------------------------------------------- ee65da1d57 | advil | 2022-01-23 10:06:59 -0500 fix: select first travelable item in stash search Some players use this menu as a quick shortcut while collecting items that they are sure already exist, and I guess having to hit ','+enter is too much work. This lets enter immediately travel to the first travelable item. I'm undecided as of yet what to do with the lettering: I respect that many players have some muscle memory for ctrl-f a, but on the other hand, I don't think the fact that a kind of dodgy UI decision is enshrined in people's muscle memory is a good reason to keep it. I'm definitely opposed to making items on the current position fully unselectable in this UI, as was done (for carried items) in response to https://crawl.develz.org/tavern/viewtopic.php?f=8&t=20374. This makes the whole UI less usable and there's a ton of players who don't need or want the reversion that was (rather unconstructively) advocated for in that old thread. -------------------------------------------------------------------------------- 820543e53a | advil | 2022-01-22 19:38:17 -0500 fix: enable feature actions in full square describe Under this one code path (which happens with multiple describable things on the same square) a bool was not correctly applied. -------------------------------------------------------------------------------- 70179d601d | advil | 2022-01-22 19:22:08 -0500 fix: further fix describe item actions (perryprog) inventory items can't be expected to have a valid item index relative to env.items. -------------------------------------------------------------------------------- c30f734a66 | advil | 2022-01-22 16:14:06 -0500 fix: remove debug code -------------------------------------------------------------------------------- 86ee99c729 | advil | 2022-01-22 15:52:08 -0500 fix: parens -------------------------------------------------------------------------------- d457d2bfb3 | advil | 2022-01-22 15:42:00 -0500 fix: expand item index check from b35b39474d43 Reading and quaffing shouldn't work for this case either (and will crash). -------------------------------------------------------------------------------- b35b39474d | advil | 2022-01-22 15:11:05 -0500 fix: prevent pickup of non-env items via describe actions If an item_def is otherwise valid but is a copy of a real item in `env.items`, and the player is in the right position, this code would allow trying to pick it up and then crash. Add a check for a valid index. (The logic here is patterned off of `invalid_monster_index`.) The immediate effect is on descriptions accessed via stash search, and it would be better to actually allow the (g)et to work in this case, but it may be somewhat unavoidable that stash search is working with copies, so getting (g)et to work will be a bit of a project. -------------------------------------------------------------------------------- a0c2dbb3aa | advil | 2022-01-22 14:54:55 -0500 fix: reentrant calls to show_map via descriptions When viewing a staircase description, you can now use ]/[ in the description popup to go right to the map view on the other side. Since description popups are possible in `X` view, this could lead to weird stacking of map view UIs that were really not designed to happen. There was also a (possibly independent, but I'm not entirely sure) set of bugs where exiting the describe popup wasn't handled right and made the player travel to the stair location. This commit fixes all of this by refactoring `show_map` to allow graceful reentry without creating a new map view layer. Well, the behavior is graceful, the code isn't, but it'll do for now. -------------------------------------------------------------------------------- af8930e228 | nlavsky | 2022-01-22 10:52:22 -0600 fix: unmute the horn of Geryon "A hideous howling noise" was a lie: the horn has never produced a sound. This commit gives the horn a proper noise. -------------------------------------------------------------------------------- 050a50673c | Edgar A. Bering IV | 2022-01-21 15:26:51 -0600 fix: turn down wretched stars corrupting pulse a bit more Temporary mutations were turned down as they don't expire while in the Abyss. Even with that change, a handful of wretched star encounters could quickly add up. A handful of temporary mutations is an interesting challenge to overcome; receiving all of them gets to be a bit much. This commit reduces the casting frequency again, and also makes the chance to apply a temporary mutation scale down with the number of temporary mutations. -------------------------------------------------------------------------------- 3197508d1c | advil | 2022-01-21 15:42:09 -0500 fix: autocreate dgl status file dir (Pinkbeast) On default settings, this is automatically created on login or account creation, but until this happens a lot of warnings are generated by the timeout. I couldn't think of a good reason not to just create it if needed. -------------------------------------------------------------------------------- 8b1c90781f | advil | 2022-01-21 15:14:35 -0500 docs: update webtiles docs (WSL, other tweaks) * Incorporate Pinkbeast's discussion from: http://crawl.montres.org.uk/wsl-webtiles.txt. * Restructure prerequisites vs actually running the server * Note about UTF-8 * Other editing -------------------------------------------------------------------------------- daab1c2f9b | Nicholas Feinberg | 2022-01-20 13:47:34 -0800 Increase flam.wav damage by 20%ish dde70e7af44 was a well-deserved nerf, but overshot somewhat. Let's dial it back the other way. Average damage per round (pre-AC): 0 power 100 power Original 5 25 Post-nerf 4 14 Current 4 17 Easy to make further adjustments. -------------------------------------------------------------------------------- a624279079 | advil | 2022-01-20 16:05:37 -0500 fix: linebreak Y/N popup prompts (ebering) It is very unclear to me whether adding automatic linebreaking would be a good idea to MenuEntry items (which are used for many things), so I added a convenience function that only does this happen on demand, and used it for `yesno` calls. N.b. it works fine on Menu titles, but console regular menu entries do not work with multiline text. I also did a bit of relevant MenuEntry refactoring. -------------------------------------------------------------------------------- 47742a1d20 | advil | 2022-01-20 16:04:46 -0500 fix: tweak console hover rendering on yes/no prompts There is a difference in how hovers render for formatted vs non-formatted menus; this basically results in the hover being the width of the menu for non-formatted ones. Since yes/no menu prompts are pretty variable, this can sometimes be odd (and it's worse if someone overflows the terminal width). So, as a quick workaround, just mark this with MF_ALLOW_FORMATTING. -------------------------------------------------------------------------------- ae24e75c0c | Edgar A. Bering IV | 2022-01-20 14:14:50 -0600 feat: print what can't be picked up when prompting Could be verbose on large stacks with very greedy autopickup, but it's been a big screw for me to not know what is in the cell and have to stop and examine it before answering the "couldn't pick up" question. -------------------------------------------------------------------------------- 2a4342cb04 | Monkooky | 2022-01-20 14:14:50 -0600 feat: prompt to disable autopickup items of a type during autoexplore [ Committer's note: Re-wrote the patch to use more crawl codebase idioms and the new ask_always parameter to yesno previously implemented. Closes #2367. Closes #1873. ] -------------------------------------------------------------------------------- 4ed01045b5 | Edgar A. Bering IV | 2022-01-20 14:14:50 -0600 feat: removed unused yesnoquit It was partially provided to the lua API in 2008 when implementing toll zigurats for prompting if the player wanted to pay. Or at the same time, that ended up using yesno. Subsequently it slowly rotted against the weight of the FIXME: looking to be a real mess and disuse in the main codebase. This might be a pain point for some clua users, but yesno is quite full featured and ternary decisions (yes/no/quit) can be factored into nested binary decisions by those downstream users. -------------------------------------------------------------------------------- fa79eddd99 | Edgar A. Bering IV | 2022-01-20 14:14:50 -0600 feat: add "always" prompting to yesno There's one place in particular where we ask the player a specific question about a one-time situation that we can generalize both technically and sensibly for ui: "Could not pick up an item here" prompts. There may be others, so I've implemented this as a way to prompt for either a one-time or global change. Previously, a general [A]lways prompt was available via yesnoquit, but that has been unused for 6 years, has a FIXME for being a mess, and is missing some updates and modernizations of yesno. -------------------------------------------------------------------------------- 4b4a722d26 | advil | 2022-01-20 13:25:02 -0500 fix: further adjust some format specs `%llu` produces warnings on mac/linux, and the exact definition of size_t is not guaranteed by anything, so use the `%zu` format spec instead. -------------------------------------------------------------------------------- 886a180965 | Zarchan | 2022-01-20 11:46:42 -0600 feat: no more accidental lava related item destruction. Checks if the tile a player is on will destroy items, and if so prompts the player before continuing. [ Committer's note: Closes #2353. Tweaked and specialized the prompt. ] -------------------------------------------------------------------------------- 932a3574db | Zarchan | 2022-01-20 10:22:51 -0600 docs: update monster_list_colour documentation -------------------------------------------------------------------------------- ec4c6a5604 | advil | 2022-01-20 10:45:04 -0500 fix: tweak webtiles mouse hover behavior with multiple popups Previously, if you open a popup over a menu, and closed the popup, the mouse position at the time would determine hover, which can be a bit confusing (especially big menus where the mouse is likely to be somewhere in the menu, and especially for arrow key selection). This keeps hover on the previously hovered item (if any) when focus is returned. We'll see if something even more fine-grained would be better, e.g. suppress hover if previous item was not selected by mouse. It's also still TBD under what conditions if any a pure mousemove (with no leave or enter events) should set the hover, right now it doesn't. -------------------------------------------------------------------------------- 16e8fc0620 | Chris Landry | 2022-01-20 09:26:38 -0600 fix: update wizard armor gen with new egos [ Committer's note: Checkwhite and made consistent with weapon egos. Closes #2373. ] -------------------------------------------------------------------------------- a69ad8bafb | Aliscans | 2022-01-20 09:26:38 -0600 fix: correct spelling of skilful Was "skillful", but this is not a valid spelling according to https://www.australian-dictionary.com.au/wordcheck/. Closes #2372. -------------------------------------------------------------------------------- 83964af658 | Aliscans | 2022-01-20 09:26:38 -0600 fix: correct spelling of wilful Was "willful", but this is not a valid spelling according to https://www.australian-dictionary.com.au/wordcheck/. -------------------------------------------------------------------------------- d61996a82c | Aliscans | 2022-01-20 09:26:38 -0600 fix: pluralise ghosts with the same name as "2 ghosts called " The previous version gave "2 's ghosts", which was poor English. This form of words makes sense if they are ghosts of the same character or of different ones. -------------------------------------------------------------------------------- 903a904aa7 | Chris Landry | 2022-01-20 09:26:38 -0600 fix: some numeric compiler warnings Closes #2369 -------------------------------------------------------------------------------- 4a4240be9d | Aliscans | 2022-01-20 09:26:38 -0600 fix: a compiler warning In _genus_factoring(), mon is set in a loop. This is always set as "types" and "genera" are set in _count_monster_types(), which builds them both from the same list of monsters. This is not apparent to a code coverage tool, so set it to nullptr. Closes #2371 -------------------------------------------------------------------------------- d6fec0f1ec | Edgar A. Bering IV | 2022-01-20 09:26:38 -0600 docs: update CREDITS.txt -------------------------------------------------------------------------------- a72db329a9 | advil | 2022-01-20 09:59:04 -0500 fix: prevent webtiles mouse hover from scrolling This commit tweaks two related pieces of mouse hover behavior: * don't snap a mouse-hovered item into view; this was kind of confusing when it happened (by hovering a partly visible menu element). * apply a tiny bit of margin to what counts as partly visible for mouse hover purposes. This is very heuristic so it may need some tweaking or adjustment for different resolutions. Without this, it's sometimes possible to be hovering something you can't even tell is there. I first consider just making partly visible elements unhoverable by mouse, but this was also confusing. -------------------------------------------------------------------------------- a885d4b3d6 | advil | 2022-01-19 22:14:03 -0500 fix: tweak popup window heights This accomplishes two things: * prevent overlapping with the chat box in most regular browser circumstances, which has bugged me for a while * provide a workaround for the 100vh issue on iOS Safari, by simply leaving more blank space There might be better workarounds available. We'll see if people find the extra vertical space too much, or if it needs some more responsivity. -------------------------------------------------------------------------------- a88e694cbd | advil | 2022-01-19 22:14:03 -0500 fix: exert more control over iOS virtual keyboards The behavior is still somewhat flaky (a few bugs noted in comments), but this commit brings improvements. Basically, it tries to never let anything else but the mobile input box have focus, while the keyboard is displayed -- this is apparently what it takes on iOS to keep the keyboard up. Once it's down, focusing a text input doesn't bring it back up, and despite trying many recipes, I could not find a way to programmatically bring it back up. This prevented several alternative approaches that I considered, e.g. using a timeout. The focus control involved here is quite aggressive and hopefully won't break anything on Android. This also does some better styling of the mobile input box, rather than relying on the browser focus highlight. -------------------------------------------------------------------------------- d61c85c099 | advil | 2022-01-19 22:14:03 -0500 fix: clicking in multiselect webtiles menus Because there were previously no multiselect+ arrow menus, the code was sending enter (which only works for singleselect). For now send space; this commit is a placeholder for a non-keycode-based solution. -------------------------------------------------------------------------------- 6000d10c1c | advil | 2022-01-19 22:14:03 -0500 fix: make canvases non-selectable On touchscreens (ios), it is a bit too easy to long tap and select the canvas, which is then somewhat annoying to undo. This commit isn't a real solution because it is still possible to long top the canvas, but it prevents the canvas itself from being selected. (In my testing, some very thin element to the left of the canvas gets selected?) This means that if you tap the canvas itself the selection disappears. -------------------------------------------------------------------------------- 0a9ec5b959 | advil | 2022-01-19 22:14:03 -0500 fix: suppress click after touchend clickoutside At least on iOS, the click was still getting processed after the popup was closed, leading to spurious things happening. -------------------------------------------------------------------------------- 9c9f7e8d09 | advil | 2022-01-19 22:14:03 -0500 fix: let webtiles mouse dungeon clicks interrupt travel/repeats Previously, the click was just discarded during interruptible travel/repeats. This change will let the fake key enter the key handling queue, and `kbhit()` return true, which is the main check for interrupting such things. I think it's ok to return a keycode unconditionally for click handling, and CK_MOUSE_CLICK is innocuous, but we'll see. -------------------------------------------------------------------------------- 8cf2c06242 | advil | 2022-01-19 22:13:37 -0500 fix: improve mobile input box behavior This commit should prevent spurious shifting (which I believe was happening because the first letter of the input box is capitalized), and hide autocomplete/spelling suggestions at least on iOS. It also attempts to hide the cursor, and uses a placeholder instead of text. (Since anything that tries to edit the box is prevented, this should always be visible, I hope.) -------------------------------------------------------------------------------- 7722353844 | robertxgray | 2022-01-19 22:10:13 -0500 feat: better support for mobile browsers This is a minimum set of features and fixes to make the WebTiles interface playable on mobile browsers. - Added an optional auxiliary input field that can be focused to enable virtual keybards. - Added a new option tile_web_mobile_input_helper to enable or disable the input field. - Fix touch zoom and scroll disabled when a popup is shown. - Allow popups to be closed with touch events. - Fix some minor display issues on small screens. [Committer's note: squashed and edited commit message. Several tweaks aimed at iOS follow in subsequent commits from me. -advil] Closes #2221, closes #2332 -------------------------------------------------------------------------------- ee0477cf1a | Edgar A. Bering IV | 2022-01-19 20:40:53 -0600 fix: a typo (ManiacJoe) -------------------------------------------------------------------------------- 623ef8b387 | Crestwave | 2022-01-19 20:26:13 -0600 fix: add support for Haiku These are patches applied by upstream packagers. -------------------------------------------------------------------------------- 72eb5c4738 | Edgar A. Bering IV | 2022-01-19 19:53:49 -0600 docs: update CREDITS.txt -------------------------------------------------------------------------------- 12e810a91a | Edgar A. Bering IV | 2022-01-19 19:49:35 -0600 fix: update runrest_stop defaults for modern times and old doors Closes #2346, Closes #2368 -------------------------------------------------------------------------------- e87ddf7535 | Edgar A. Bering IV | 2022-01-19 18:54:23 -0600 feat: give out some fancy shields in Snake Give Naga Warriors a chance of getting a good_item shield. Overall this will result in an average of 2-3 good shields per Snake. With the lootfeel shifts of Spider and Swamp, and Shoals' throwing items, Snake was already somewhat distinguished by the chance of getting a kite or tower shield off of a Naga warrior. Adding a small chance for the shield to be fancy should make this pop a bit more as lootfeel. -------------------------------------------------------------------------------- 477bb3ace5 | hellmonk | 2022-01-19 18:43:26 -0600 feat: two new spider ends Adds a broodmother end and a themed ending that only places non-spiders. -------------------------------------------------------------------------------- acdfd95529 | hellmonk | 2022-01-19 18:29:16 -0600 feat: update floodkiller_spider_rune_tomb Add new monsters and some loot, cut density a bit. -------------------------------------------------------------------------------- 1478b6322d | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust arachne_lair spider end Reglyph and add new monsters and loot, fix some substs. -------------------------------------------------------------------------------- dbc70543e1 | hellmonk | 2022-01-19 18:29:16 -0600 feat: update grunt_spider_rune_island Add new monsters and loot, reglyph. -------------------------------------------------------------------------------- 9ca27bf259 | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust grunt_spider_rune_parallel add new monsters and loot, reduce density slightly. -------------------------------------------------------------------------------- 46fceaadd4 | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust guppyfry_spider_rune add new monsters and loot -------------------------------------------------------------------------------- 86b270519b | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust grunt_spider_rune_circles Add worms and loot, rewrite some of the monster randomization. -------------------------------------------------------------------------------- 85af5c1198 | hellmonk | 2022-01-19 18:29:15 -0600 feat: update and reglyph spider_rune_water Add a few of the new monsters, change trash mob randomization, add some loot. -------------------------------------------------------------------------------- dee6c067ee | hellmonk | 2022-01-19 18:29:15 -0600 feat: loot function for spider ends Not in use yet, but soon? -------------------------------------------------------------------------------- c6f6baafec | hellmonk | 2022-01-19 18:29:15 -0600 feat: two spider minivaults featuring some of the new monsters -------------------------------------------------------------------------------- aeca334d3e | hellmonk | 2022-01-19 18:20:09 -0600 feat: adjustments to non-end spider vaults -------------------------------------------------------------------------------- 9e22a525d0 | hellmonk | 2022-01-19 18:20:02 -0600 feat: two new spider entry vaults -------------------------------------------------------------------------------- 88295113b6 | hellmonk | 2022-01-19 18:19:57 -0600 feat: update spider entry vaults -------------------------------------------------------------------------------- 77cbbf62ba | Aliscans | 2022-01-19 10:58:41 -0500 fix: Make space toggle the selected item in shop menus. Pressing either Space or Return had attempted to buy the selected items. This changes Space to match the effect '.' has, which matches the behaviour b5dea8a184 added to various other prompts. The effect of the space bar remains undocumented. -------------------------------------------------------------------------------- 1695149f81 | Kate | 2022-01-19 06:27:41 +0000 Checkwhite -------------------------------------------------------------------------------- e73e3526bd | Nicholas Feinberg | 2022-01-18 22:03:15 -0800 Cleanup meatsprint des We no longer need to specify ident:all or no_pickup, since both are always true. -------------------------------------------------------------------------------- 95a8017c83 | advil | 2022-01-18 21:00:48 -0500 feat: arrow key navigation for the memorize As a bonus, I made left and right work to move between menu panes, as it felt fairly natural. At some point I'll experiment with generalizing this beyond this menu. -------------------------------------------------------------------------------- 7369b063a1 | advil | 2022-01-18 20:50:27 -0500 feat: arrow selection for spell cast/describe menu Also some minor formatting tweaks. There's still one extremely minor issue I can't track down, where this menu's with changes on ! in webtiles. -------------------------------------------------------------------------------- 52c9ff9b3a | advil | 2022-01-18 20:15:09 -0500 feat: enable arrow selection for ability menu Pretty straightforward, no special tweaks needed that I'm aware of. -------------------------------------------------------------------------------- 2eedf47f95 | advil | 2022-01-18 20:11:35 -0500 fix: improve webtiles menu pageup In menus with variable height menu items, this was occasionally overshooting the last visible. This commit fixes the problem, but for pageup maybe the relative hover position should be handled differently. -------------------------------------------------------------------------------- 99ac4a3411 | advil | 2022-01-18 20:11:35 -0500 feat: stash search menu improvements The ultimate aim of this is to make this menu workable with arrow key selection. Previously, carried item results weren't hotkeyed at all (presumably because travel is pointless), but this didn't quite work for arrow selection. * All stash search results are selectable. * Visually, items at the player's feet and in their inventory are grouped together, and the former are now clearly indicated in the menu. A hotkey (,) quick-moves the menu between these sections. * In travel mode, selecting an item at the player's position doesn't do anything; previously this was true for carried items (because they weren't selectable) but did open for things on the ground. Possibly it would be clearer to do something in this case, maybe a message? Or open a description? These items are also greyed out in travel mode. * Subheads are now cyan for better readability * Various supporting Menu API improvements (including some bits that are probably extremely useful in the future but didn't end up fully needed here.) It would be possible, but I found it a bit confusing on first implementation, to start the menu with the first item not at the player's position selected. Will revisit this on feedback. I think with the , hotkey this isn't as important. Other TBD improvements: the keyhelp could be improved and standardized, I think it might be good to support right click to describe in this menu. -------------------------------------------------------------------------------- 060a6a1bfc | Kate | 2022-01-18 17:22:39 +0000 Fix some spell description typos -------------------------------------------------------------------------------- 417bf1fd16 | Edgar A. Bering IV | 2022-01-18 09:03:21 -0600 fix: a teleport closet (12658) -------------------------------------------------------------------------------- cbc3b0e11f | Edgar A. Bering IV | 2022-01-18 09:00:01 -0600 docs: changelog through 0.28-a0-1557-g548886b -------------------------------------------------------------------------------- 548886b2ed | Edgar A. Bering IV | 2022-01-17 21:53:49 -0600 feat: slightly increase the orb floor drop rate Since orbs, unlike shields, don't come as monster gear currently. -------------------------------------------------------------------------------- 303e8cf5e6 | Edgar A. Bering IV | 2022-01-17 21:53:49 -0600 fix: tune down guile a lil bit -------------------------------------------------------------------------------- 9ae15a6949 | Nicholas Feinberg | 2022-01-17 18:42:51 -0800 Move Passwall check to a better place The confusingly similarly named casting_ and _spell uselessness checks are for different things - casting_ is only for costs, Ru sacrifices, and a few other broad things, whereas whereas spell_ checks everything else. -------------------------------------------------------------------------------- 6f2a123a96 | Nicholas Feinberg | 2022-01-17 18:42:28 -0800 Make Call Imp fight alongside you Typo in 877f77fdfb4cba3a06bde7f51e1239edfa655e6c . -------------------------------------------------------------------------------- 6a8d134351 | Edgar A. Bering IV | 2022-01-17 20:38:49 -0600 fix: restrict passwall's constriction restriction to passwall -------------------------------------------------------------------------------- ad4bc827a9 | Edgar A. Bering IV | 2022-01-17 20:26:09 -0600 text: clarify transmutations spell power effects -------------------------------------------------------------------------------- 877f77fdfb | Edgar A. Bering IV | 2022-01-17 20:00:32 -0600 text: clarify the spellpower dependence of Summonings spells (10906) -------------------------------------------------------------------------------- eb7d2789bd | Edgar A. Bering IV | 2022-01-17 19:03:05 -0600 feat: stop teleporting passwall obstructing monsters (5107, 12041) The player has paid the MP and delay cost, if we can't shift the target abort. The lack of space only occurs in packed vaults and specific vaults and allows for cheesing more than it adds gameplay. Closes #2127 -------------------------------------------------------------------------------- 753840947a | Edgar A. Bering IV | 2022-01-17 18:21:26 -0600 fix: trigger explore traps on passwall end immediately (12647, 11952) The "free turn" exempting players from traps was unintuitive and surprising. Unlike doors and fog, which do bring new tiles into view, remaining completely in place and triggering a trap in a subsequent turn breaks the feel and expectation of trap effects. -------------------------------------------------------------------------------- a3b06d5894 | Edgar A. Bering IV | 2022-01-17 18:04:44 -0600 fix: prevent passwall while constricted Constriction interrupts passwall, but then you can just start again. Not that it's a good idea often, but for consistency with stair delays constriction blocks passwall. -------------------------------------------------------------------------------- 15810a7b44 | Edgar A. Bering IV | 2022-01-17 17:25:48 -0600 fix: treat Passwall like stair and shaft-self delays Treating Passwall like a usual delay, as opposed to a multi-turn move commitment like shaft self and stairs, created all sorts of weird things as documented in Mantis #12239, #11825, and #10961. Treating it like a stair or shaft self delay makes it behave more like "movement" and gives it a consistent set of rules. -------------------------------------------------------------------------------- 957fa82e37 | Edgar A. Bering IV | 2022-01-17 17:25:36 -0600 fix: adjust some inapprorpiate uses of force interrupts -------------------------------------------------------------------------------- 945cd3f27e | Nicholas Feinberg | 2022-01-17 13:35:51 -0800 Fix thunderhulk armour (Nomi) -------------------------------------------------------------------------------- ef8730868c | Edgar A. Bering IV | 2022-01-17 15:15:57 -0600 fix: respect FTILE when destroying terrain Closes #1628 -------------------------------------------------------------------------------- e92cbb8f83 | Edgar A. Bering IV | 2022-01-17 14:20:18 -0600 fix: enrage elven twins taken to duel If a player duels one sibling have the other react as if they're already dead. This is because there are only three ways out of the arena for the player - their death (so who cares) - the death of the elven twin they're dueling (so the twin's gonna be mad when they get back) - renouncing okawaru within the arena to escape (twin's still mad that you dared do such a thing, also a ridiculous edge case) Closes #2325 -------------------------------------------------------------------------------- 7dfede7c9b | Edgar A. Bering IV | 2022-01-17 13:52:20 -0600 fix: the build -------------------------------------------------------------------------------- eb816f4f03 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: set pet_target when using a LOS attack spell Relevant for Hepliaklqana followers in the days of shooting through your Hep ancestor. Closes #2256. -------------------------------------------------------------------------------- 4c6099d30f | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: don't offer to throw_item_no_quiver if you're a cat Closes #2348. -------------------------------------------------------------------------------- b657c59d09 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: keep grey dracs unbreathing in dragon form Since everyone else keeps their breath weapon and grey dracs don't get one they should get this! Closes #2349 -------------------------------------------------------------------------------- 933e3b857f | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: add breaks to a switch statement 467f337aae6 did not intend these fallthroughs. Closes #2350. -------------------------------------------------------------------------------- 9ba09be145 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: don't try to die repeatedly if pending revival Prevent reflection and other misc bound soul related crashes when the revival is triggered by something on the monster's turn. Closes #2323. -------------------------------------------------------------------------------- 5967ad2b6c | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: don't offer unavailable gods in interlevel travel Closes #2315 -------------------------------------------------------------------------------- a1f3fc70dd | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: correct the Xom webtiles moodmeter Closes #2186 -------------------------------------------------------------------------------- 811ca023a5 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: a teleport closet in an arrival Closes #2151 -------------------------------------------------------------------------------- ee5c5fb8bb | advil | 2022-01-17 14:04:51 -0500 fix: re-allow `w-` Originates from fc4545441119, because of the new tag, `-` in this menu needed a menu-specific check. Also, generalize this code a bit, and add the macro submenu to the list as well. Resolves #2363 -------------------------------------------------------------------------------- 570b316de1 | advil | 2022-01-17 13:58:17 -0500 fix: default for menu_arrow_control intended to be true, oops -------------------------------------------------------------------------------- 866c7d65e6 | advil | 2022-01-17 13:44:10 -0500 docs: remove a spurious plural I already fixed one mismatch between this heading and ToC but missed the plural. -------------------------------------------------------------------------------- 7af6551d5a | advil | 2022-01-17 13:35:47 -0500 feat: option to disable arrow key menu control I admit that 50% of the reason I'm adding this is so that the 1% of the player base that is enraged by >90s UI features will stop bugging me. But I suspect it could also be useful for accessibility purposes to be able to disable hover in console -- for example I doubt it works well with screen readers without some specific effort that I don't really know how to do. As a side effect this option does disable arrow control for all menus that had it added in the 0.27 cycle. -------------------------------------------------------------------------------- be3f6fb03a | advil | 2022-01-17 11:25:42 -0500 docs: move auto_hide_spells to a different section I think this was probably in 3-a because its consequences do happen during pickup, but I think it's probably more intuitive for it to be in the "Command Enhancements" section with most other spell options. -------------------------------------------------------------------------------- 8903882b62 | advil | 2022-01-17 11:15:20 -0500 fix: swap order in add_alias calls oops -------------------------------------------------------------------------------- 6c7bc2a1f9 | advil | 2022-01-17 11:07:18 -0500 refactor: rename `.._brand` options to `.._highlight` I assume there's some charming retro-roguelike and/or Australian explanation for the use of "brand" here, but it seems completely non-standard now and extremely confusing. I chose "highlight" as a much more intuitive name. I also rewrote a fair amount of the options guide for these beyond the name, partly with an eye towards including all the search terms I initially tried when looking for this code the other day. This is a full internal rename as well. The actual implementation of these options is very odd and could use some refactoring, but I'm not going to do that right now. Needs testing on Windows (CI should be enough). -------------------------------------------------------------------------------- 7e9bcdcf84 | advil | 2022-01-17 10:09:11 -0500 feat: add shift-left/right as line up/down menu shortcuts This is because in my testing I've found terminals that by default only define shift left/right and not up/down, and shift left/right weren't doing anything at all in any menus. For completeness I added this in webtiles also, though shift up/down already worked there. -------------------------------------------------------------------------------- 066c4f1fa3 | advil | 2022-01-17 10:09:11 -0500 fix: correctly handle console shift arrows if defined Previously, the crawl binary got ncurses keycodes that were not ignored by the binary but not interpreted properly. This translates the keycodes to crawl's internal scheme, so that they are recognized by e.g. the menu code. If people had macros for these keycodes they will need to remap. Worth noting that these being correctly produced is pretty variable. E.g. in my testing, iTerm defines all of them, mac terminal defines only left and right, and putty defines none of them. Usually (always?) what happens instead is that the terminal sends the escape codes for regular arrow keys. It would be possible to configure them in at least some terminals using the escape codes that I noted in the comments. -------------------------------------------------------------------------------- e72afd5fc6 | Kate | 2022-01-17 06:53:36 +0000 Don't let monsters try to re-polymorph a polymorphed player Fixes monsters wasting charges and turns emptying their wands of polymorph after already having succeeded at polymorphing the player. -------------------------------------------------------------------------------- 5f3ffaac98 | Kate | 2022-01-17 06:53:36 +0000 Let monsters use spell_logic for zapping wands Doesn't have any effect currently, but makes it possible to add better logic for deciding whether to zap a wand where needed. -------------------------------------------------------------------------------- 8550a1e9b9 | Kate | 2022-01-17 06:53:36 +0000 Mark confusion beams as harmless to monsters with clarity -------------------------------------------------------------------------------- 870370a84a | Kate | 2022-01-17 06:53:36 +0000 Remove Mephitic Cloud's damage It did 0-2 damage, which was mostly insignificant but resulted in it not being consistently marked as useless against targets with clarity (with a hack for the player to mark it harmless unless below 2HP). Instead remove the damage and handle clarity properly. -------------------------------------------------------------------------------- c3277d3759 | hellmonk | 2022-01-16 21:24:36 -0500 tweak some spider monsters Make some of the new spider enemies a little frailer. -------------------------------------------------------------------------------- c307741d3e | hellmonk | 2022-01-16 20:49:56 -0500 feat: tweak layout_spider_delve Adjust parameters to avoid generating big open levels so frequently. -------------------------------------------------------------------------------- be868bca14 | advil | 2022-01-15 22:20:35 -0500 fix: tone down default `may_stab_brand` (G-flex) This was set to yellow, which by default on most terminals is extremely bright as a background color, with poor contrast with many foreground glyph colors. Most players were either used to this and didn't notice, or playing in 8 color putty where this comes out as `brown`, not the brighter yellow that putty is also capable of displaying (but doesn't on default settings). I think `brown` (which is typically a sort of mustard color) has much better contrast on terminals I've tried anyways, and it's not otherwise used for a monster highlight, so let's go with that. -------------------------------------------------------------------------------- 020f416216 | advil | 2022-01-15 21:55:53 -0500 fix: revert main menu hover changes Using lightgrey with a manually inverted foreground color seems safer overall in terms of contrast since this menu doesn't need to ever change foreground color; unfortunately the implementation (which I've just restored) is all a bit ad hoc. Possibly this hover scheme could be better generalized. -------------------------------------------------------------------------------- 37088b3766 | advil | 2022-01-15 21:55:53 -0500 fix: tweak hover color for 8 color consoles This moves it from lightgray to blue, since the latter has much better overall contrast with all foreground colors. -------------------------------------------------------------------------------- 81556d0073 | advil | 2022-01-15 21:55:53 -0500 feat: color/display diagnostic popup The somewhat odd situation has emerged several times recently that console players don't realize that their terminal is running in some variant of an 8 color compatibility mode. First, when allow_extended_colors=true was made the default and people thought 16 color mode was "new", and then more recently, when putty users have been complaining about the new menu hover being too non-contrasty. (I'll actually change that, but this isn't that commit.) This popup provides in-game information that is mostly relevant to console players about what their terminal and options are actually doing. It's largely aimed to make it clear to putty users that something is wrong, but should be more generally useful. For other build targets most of the information isn't relevant, but it still shows the color palettes corresponding to the 8/16 ANSI colors. The popup is slightly hidden, under `?!`. I can imagine a later approach where it is under an "advanced" submenu of the game menu, especially if it eventually becomes an interactive popup. But for now this also lets it be used at the main menu. Still needs testing on windows. -------------------------------------------------------------------------------- 3e5f17529f | advil | 2022-01-15 21:55:53 -0500 feat: support background colors in formatted_string This is not something that I think we should start using much, or really even at all, but it's very useful for diagnostic purposes. -------------------------------------------------------------------------------- e4f4046303 | Kate | 2022-01-15 22:42:27 +0000 Don't allow attempting to enter Malign Gateway portals It was very rarely possible to even try since usually the portal would be blocked by the tentacle, and having it deal a small amount of damage and blink the player is unnecessarily complicated compared to just treating it consistently as a solid feature. -------------------------------------------------------------------------------- 142ac7cd73 | Kate | 2022-01-15 22:42:27 +0000 Don't use Malign Gateways as walls for Creeping Frost (#2359) They're sort of solid for most purposes, but shouldn't be valid targets for Creeping Frost. Closes #2359. -------------------------------------------------------------------------------- 0647d9364e | Kate | 2022-01-15 21:31:10 +0000 Refactor piety gain prevention in the Abyss Fixes a number of bugs: Ru and Ashenzari will no longer offer new sacrifices/curses from exploring or killing monsters in the Abyss, but if the player enters with one already available, they can still gain piety from taking it. Gods in general will no longer give misleading messages about accepting your kills in the Abyss. Beogh will no longer gift new followers or upgrade weapons/armour/classes of existing followers, but will still give existing followers healing. Hints mode won't give a hint about gaining XP for killing a monster in the Abyss. Yredelemnul piety will be properly tracked on gaining zombie followers. Converting to Lugonu or picking your first god as a monk in the Abyss will properly give bonus piety. -------------------------------------------------------------------------------- d0f6b136d3 | hellmonk | 2022-01-13 23:31:53 -0500 feat: shrink some spider bands Make the monster density a little less overwhelming. -------------------------------------------------------------------------------- 5ff2a343f8 | hellmonk | 2022-01-13 23:19:47 -0500 rework orb of destruction damage formulas Removes a secret hidden power stepdown and makes the formula linear. The new formula is roughly equivalent damage to the old at low power, somewhat worse at about 100 power, and very slightly worse at 200 power. Additionally, to emphasize the positional aspect of the spell, change the damage dropoff at low distance to more harshly penalize point-blank iood casts. Distance 1 now deals a wimpy 30% damage (was 50%) and 60% at range 2 (was 70%). Range 3 and above are unchanged. Can be adjusted further if this is an overnerf. -------------------------------------------------------------------------------- 054e75b119 | Kate | 2022-01-14 01:03:26 +0000 Reword an ushabti cast message -------------------------------------------------------------------------------- b10ca78fad | Kate | 2022-01-14 01:00:15 +0000 Fix inventory menu colouring not being used in item menus Possibly the new item selection menus could use a new menu_colour category, but previously they used the inventory category so keeping that behaviour seems reasonable. -------------------------------------------------------------------------------- 3893175d92 | Nicholas Feinberg | 2022-01-12 22:10:48 -0800 Add Summon Hell Sentinel description (Nomi) Oversight in ff29be1aa77. -------------------------------------------------------------------------------- 8c907de6ad | advil | 2022-01-12 19:12:58 -0500 fix: memorise menu ui tweaks * convert to keyhelp, remove custom set_more calls, make keyhelp more consistent with others. * fix various spacing issues, including interactions of search and divine exegesis, search width in local tiles, column alignment consistency. * Indent the more if the title is indented (both tiles targets). I'm not actually sure I like how this looks but it leads to a more consistent UI behavior with console spacing. It also prevents window size jumping in local tiles in various cases. What would be better is if the more column width itself could be adjusted, but that seems extremely hard. The code to generate this menu's keyhelp remains an unholy mess of c and c++ style string formatting. -------------------------------------------------------------------------------- 839a4452db | Nicholas Feinberg | 2022-01-12 11:25:18 -0800 Turn Spider noise back down (ardl) It was quieted down back when web sense was removed, but Spider monsters are a lot more lively now - players don't need as big a party to have fun. We can re-revert this if spider feels too lonely with normal noise. -------------------------------------------------------------------------------- 9e29e62679 | Nicholas Feinberg | 2022-01-12 11:24:43 -0800 Revert "REVERTME: increase orb rate for testing" Initial testing is done. This reverts commit 8dc402e3264e5ac93cec5fabe3b95c5186369434. -------------------------------------------------------------------------------- 98be2d08f0 | Nicholas Feinberg | 2022-01-12 11:24:32 -0800 Revert "force Spider generation for testing" Initial testing is done. This reverts commit be321230710a090a0a22678120c99eebdee71df4. -------------------------------------------------------------------------------- 99b08493b7 | Nicholas Feinberg | 2022-01-12 11:24:19 -0800 Revert "REVERTME: Make infusion gloves very common" Initial testing is done. This reverts commit e3c729c0851fa3275ad841092a6c6a803fe431f6. -------------------------------------------------------------------------------- 21c982267c | Nicholas Feinberg | 2022-01-12 11:04:02 -0800 Halve Anguish damage (ebering) It was a bit much. -------------------------------------------------------------------------------- f88bddc06d | advil | 2022-01-12 13:41:39 -0500 fix: fix hover colors on 8 color consoles and standardize On 8 color consoles, a darkgrey background color as hover shows up as black. This commit uses lightgrey in an 8 color setting instead. Otherwise, I think darkgrey looks better, though it's possible opinions may differ. (If they do, we'll find out soon, since I've applied this standardization to the main menu as well -- it used its own custom hover color.) -------------------------------------------------------------------------------- 61e5acc4d9 | advil | 2022-01-12 13:41:39 -0500 doc: further clarify some console color logic Add a contenful comment to the relevant code, and restructure the options documentation. -------------------------------------------------------------------------------- ab9d7fee88 | Edgar A. Bering IV | 2022-01-12 10:26:41 -0600 feat: reduce poison dart quantity At current quantities a character can always have a mega ammount past the early game, and is incentivsed to use them whenever they lack a stronger ranged alternative at minimal cost. Let's lower the stack size to put a bit more strategic pressure on their use. Poison darts are in a bit of an awkward place relative to their other thrown siblings, it might make more sense to move the poison brand to boomers and have darts only be specialty items, but that's for a future consideration. -------------------------------------------------------------------------------- 3c2d7996e7 | Kiëd Llaentenn | 2022-01-12 09:38:14 -0600 fix: make Trog tantrum if orb of energy is used An orb of energy is primarily used for enhancing spellcasting, so it makes sense that it should be considered a wizardly item and thus that Trog should frown upon its use. -------------------------------------------------------------------------------- 5f9446187d | nlavsky | 2022-01-12 09:37:25 -0600 feat: don't grant explore piety to Jiyva worshippers in the Slime Pits Granting exploration piety in the Slime Pits encourages Jiyva worshippers to fully explore this threat-free branch. A dozen tests show that if the player dives the Slime Pits and joins Jiyva on the last floor, they'll have 63-105 piety from auto-exploring the rest of the branch. The average is 86 piety, which is three stars. Joining Jiyva before entering the branch guarantees that the player will get to 100+ piety and reach four stars after fully exploring the Pits. -------------------------------------------------------------------------------- 253b278887 | Edgar A. Bering IV | 2022-01-12 09:36:08 -0600 fix: throatcutter doll tile -------------------------------------------------------------------------------- 08698888e4 | Edgar A. Bering IV | 2022-01-11 22:14:14 -0600 feat: an untended Ignis altar temple 12 altars with nice plants and roaring votive fires, plus an Ignis altar and some ecumenical altars with sputtering smoke and cobwebs. Less dramatic than pdpol_scorched_temple to tell a more subtued ecumenical story about abandonment. -------------------------------------------------------------------------------- 7e3bb95383 | paul | 2022-01-11 22:14:14 -0600 feat: a rare Ignis-themed temple [ Committer's note: Closes #2219. Tweaked the lava lake room and the tile and console colours, used granite statues instead of stone arches for the broken pillars for consistency. Added water to the smaller rooms and wall contrasts. ] -------------------------------------------------------------------------------- 7d64a5f647 | paul | 2022-01-11 22:14:14 -0600 fix: an off by one error in a temple vault altar count It looks like minmay_temple_bridge_d expects to place 17 or 18 altars but there are only markers for 16 or 17. -------------------------------------------------------------------------------- a01311f068 | paul | 2022-01-11 22:14:14 -0600 fix: a comment on pow_rolls default value -------------------------------------------------------------------------------- a6001f96d0 | advil | 2022-01-11 19:52:28 -0500 feat: add `bold_brightens_foreground=force` Recently it came up that it can be helpful for console readability to be able to use bold weight on bright colors even on modern terminals, not just as a workaround; people (and by people I mean ebering) had been doing this just by using 8 color mode. This commit provides an option to not ignore bold_brightens_foreground in 16 color mode. -------------------------------------------------------------------------------- 24bb901ea4 | advil | 2022-01-11 19:52:28 -0500 fix: more consistent shopping list menu keyhelp Move the shopping list keyhelp to the more, make it more consistent with other keyhelps (especially shops). This also fixes a number of misc base class issues: * correctly handle default keyhelp more init * spacing in default keyhelp * generalize some code for lettering in keyhelps * update_more timing -------------------------------------------------------------------------------- 0a3215c577 | Edgar A. Bering IV | 2022-01-11 17:40:07 -0600 fix: don't feel guilty for choppin firewood Don't cause Anguish damage when attacking firewood. -------------------------------------------------------------------------------- 8196b01e9b | Kate | 2022-01-11 07:31:45 +0000 Fix Xom granting ~4 potions of experience at once Caused by !XP now caring about effect power. -------------------------------------------------------------------------------- 077359a4bf | Perry Fraser | 2022-01-10 20:44:47 -0600 fix: display_bar should clamp negative values * fix: display_bar should clamp negative values If a bar was displayed of something with a negative value (like with EV) then text such as "EV: none (normally )" could be displayed. This function is only used for values that aren't meaningful when negative, so let's clamp any negative values to zero. -------------------------------------------------------------------------------- a4b24466b4 | Edgar A. Bering IV | 2022-01-10 19:31:10 -0600 fix: an anguishing crash -------------------------------------------------------------------------------- da10c1d967 | Edgar A. Bering IV | 2022-01-10 18:44:32 -0600 tiles: throatcutter and maulers (Sastreii) Closes #2322 -------------------------------------------------------------------------------- fc45454411 | advil | 2022-01-10 18:51:03 -0500 fix: disable item class hotkeys in UseItemMenu This adds nothing except surprises, especially the case noticed by ebering, where an optimistic person might imagine that the `r` menu has a help dialog and instead read the first scroll. Implementation is ugly.. -------------------------------------------------------------------------------- 7509e2a2af | Perry Fraser | 2022-01-10 17:22:17 -0600 fix: phial should always engulf the center target Previously, if the phial of floods knocked a target back onto a non-floor or water feature like a staircase, then no flooding would generate at that location (fine) and consequently no waterlogging/engulfing (not fine). Let's instead make create_feat_splash return a set of coordinates, and add back the center location before iterating over monsters to waterlog. Closes #2331. -------------------------------------------------------------------------------- 744777c2d9 | advil | 2022-01-10 18:20:58 -0500 feat: enable arrow keys for shopping list menu Also, improve the behavior of a subprompt for long item names. -------------------------------------------------------------------------------- 74d9c6da68 | advil | 2022-01-10 18:20:58 -0500 fix: show hover by default for shop menu -------------------------------------------------------------------------------- 486f26dfa3 | Edgar A. Bering IV | 2022-01-10 17:19:12 -0600 fix: an intermittent levelgen crash An operator precedence bug. The necessary check is covered by !feat_is_gate in the changed conditional. -------------------------------------------------------------------------------- 273aa18710 | advil | 2022-01-10 17:35:54 -0500 fix: don't check gold for MSG_NOTHING_CARRIED -------------------------------------------------------------------------------- 7cf701f5d5 | advil | 2022-01-10 17:35:54 -0500 fix: don't crash when cycling hover on an empty menu This is an old one, but I guess it's harder to trigger without item menus. -------------------------------------------------------------------------------- 6dc9c6bb35 | Perry Fraser | 2022-01-10 16:31:03 -0600 fix: properly describe moving staircases When you climbed down a staircase while Xom was sliding them around, you could get the message " slides away from you right [...]". The stair was being described by feature_description_at which only uses the player map knowledge, which means the staircase would be DNGN_UNSEEN. This uses feature_description instead to get around that. -------------------------------------------------------------------------------- 56126dae6c | advil | 2022-01-10 17:24:17 -0500 fix: properly sync non-templated mores to webtiles -------------------------------------------------------------------------------- 62e843ad78 | advil | 2022-01-10 17:07:09 -0500 fix: crash during settings_db initial generation Reported by @Walther in #2332 -------------------------------------------------------------------------------- 442d625886 | advil | 2022-01-10 17:06:53 -0500 fix: don't send crash milestones over webtiles sockets This appeared in 6ef7baa362 but shouldn't be applied to the case of crash milestones. (a) this code is super heavy and not safe after a crash, and (b) it has timing issues with the socket closing, and so was causing recursive crashes on a dead socket. (This is why no crash milestones have appeared for the last couple weeks, they've all been recursive crashes which don't generate milestones.) To be clear, after this commit crashes will still be written directly to the milestones file. -------------------------------------------------------------------------------- 981f6e296f | robertxgray | 2022-01-10 15:43:02 -0600 fix: check negative energy resistance when casting vampiric drain The game doesn't warn the player when casting vampiric drain on natural monsters with immunity to negative energy (Josephine). -------------------------------------------------------------------------------- 841984c3b6 | Aliscans | 2022-01-10 15:33:48 -0600 fix: stop artefact amulets of faith from flashing on first worshipping Gozag The game checked ignore_faith_reason() when a non-demigod puts on an amulet of faith, and checked is_useless_item() when one committed to a god. These give different results for artefacts (which are never considered "useless"). It now checks ignore_faith_reason() in both cases, and there is no special message when a character wearing an amulet of faith worships Ashenzari, Gozag or Ignis. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 8b0d500728 | Aliscans | 2022-01-10 15:31:07 -0600 feat: mark identify scrolls as useless once everything is identified. Create a "have identified all potions and scrolls" prop. Scrolls of identify are treated as useless if it is set. It's updated on game load if the version has changed, and also whenever set_ident_type() changes something. This also refactors several checks for complete identification to check this prop. [ Committer's note: Closes #2244. Added Mu special casing. ] -------------------------------------------------------------------------------- 6790c33dfa | advil | 2022-01-10 15:57:59 -0500 fix: don't divide by 0 in keyhelp rendering missed because clang doesn't crash, gcc does -------------------------------------------------------------------------------- 1e88248612 | advil | 2022-01-10 15:04:48 -0500 fix: update acquire menu to work with item menu changes The acquire menu had its own custom keyhandling for some reason; this commit removes this and uses the `Menu` default keyhandling. It also updates this menu's keyhelp to use the new API (and fixes some issues in that API that I had missed). -------------------------------------------------------------------------------- 30118fcd2b | advil | 2022-01-10 15:04:48 -0500 fix: remove old cursor code This has been semi-broken for some time, completely broken on webtiles, and was also a fairly bad implementation of the idea to begin with. It is superseded by the new hover code, so let's just kill it completely. -------------------------------------------------------------------------------- b5dea8a184 | advil | 2022-01-10 15:04:48 -0500 feat: arrow key controls for item menus This ended up being a fairly big change that needed to be mostly done at once. This affects every item menu except stash search and shopping list (which I'll do in a later commit). Because this affects a *lot* of different UI elements, there may be some more testing needed... Menu-general changes: * Arrows controlling hover is fully implemented for multiselect menus (previously only for singleselect menus). In webtiles and tiles, shift+arrow have the old behavior, but I haven't gotten this to work on console. * MF_ALWAYS_SHOW_MORE is removed; a more is now visible iff it is non-empty. * New flag, MF_INIT_HOVER: if set, show hover on initial display. Previously menus have needed to manually call `cycle_hover`. This is on for all item menus except the regular inventory. * New virtual method, get_keyhelp: generate a keyhelp more for both the case of a menu with scroll bars, and a menu without. Designed to be overridden, see the known item menu for an example. * scroller keyhelp is shown in more cases and fully implemented in tiles targets (before it was only complete for console) * Many hover issues fixed and tweaked, especially in webtiles * Old multiselect cursor stuff is disabled, will be removed in a separate commit * In multi-select menus '.' does not change the hover. (If people want a key that does this it could be arranged, but it isn't so clear anyone has been using the old cursor -- it was broken on webtiles anyways.) Item menu changes: * MF_ARROWS_SELECT is on for any item menu unless it is MF_NOSELECT * Bugs in multiselect category selection fixed, category selection snaps category into view UseItemMenu: * better indication of `easy_floor_use`. (Though, from a UI perspective, I'm not a fan of this being on by default, it's not very consistent...) * hovering can cross that inv/floor boundry and reletters items when it does so. (Needs to ping the server on webtiles unfortunately.) -------------------------------------------------------------------------------- cdc11d4697 | advil | 2022-01-10 15:04:48 -0500 refactor: remove `easy_quit_item_prompts` (wheals) Since c5434703b61cb9, these prompts have been quite hard to get to, and are perhaps on the verge of disappearing altogether. I think this option may have also targeted worry about some potential item-wasting cases (maybe enchant scrolls and the like), but if so, these cases are long gone as well. At this point, this micro-option doesn't serve much purpose, so remove (retaining the current default behavior). -------------------------------------------------------------------------------- 20fba0d420 | advil | 2022-01-10 15:04:47 -0500 refactor: simplify drop ui Previously, the drop menu would let you drop to a prompt by hitting enter with nothing selected. This is not very useful, and the code was a mess; plus I plan to change the behavior of enter somewhat in a later commit. (I guess there may be players out there who will need to remap enter+letter to letter+enter at the worst?) If there's really demand for the prompt mode it may be better to integrate it with prompt_invent_item and get a working codepath for the toggle. But for now just make this function much more straightforward -- as of this commit, enter with nothing selected just exits. -------------------------------------------------------------------------------- 95bfa34988 | advil | 2022-01-10 15:04:47 -0500 feat: clean up and generalize menu keyhelp code This commit generalizes the keyhelp code and makes most of it less client-specific: * show scroll keyhelp on all clients * refactor the templating code for adding in the percent so that it can be used on local tiles and is a bit less ad hoc (it's still weird though). * refactor so that keyhelp can be overridden. -------------------------------------------------------------------------------- 84980b0d82 | advil | 2022-01-10 15:04:47 -0500 fix: adjust shop keyhelp The right-click hint is only accurate for local tiles; for webtiles any click outside will work but a right-click inside will not -- too complex to describe, but also now standardized. -------------------------------------------------------------------------------- 370c3107d9 | advil | 2022-01-10 15:04:47 -0500 fix: modernize some inventory code -------------------------------------------------------------------------------- dc4cd7eb33 | Edgar A. Bering IV | 2022-01-10 13:53:10 -0600 fix: don't scan for unlinked items midway through abyss vault generation -------------------------------------------------------------------------------- 66ff00425e | Goratrix | 2022-01-10 11:01:11 -0600 fix: small tweaks to crystal spear projectile tiles Correct size and remove stray pixel in crystal_spear1.png and clean up the rest of the tiles. -------------------------------------------------------------------------------- d6a3831c70 | Nikolai Lavsky | 2022-01-10 10:54:02 -0600 feat: display potion/scroll rarity on the item knowledge screen As a followup to 2f15ad60, this commit makes it easier to compare potion/scroll rarities by displaying all of them on one screen. When deciding which unidentified consumables to use in order to survive, players often check the `\-` screen to see possible outcomes. So it makes the item knowledge screen a perfect place for this information. -------------------------------------------------------------------------------- aeb352d00f | Perry Fraser | 2022-01-10 10:35:06 -0600 fix: skip title on tiles integration tests -------------------------------------------------------------------------------- 78a2654a08 | Edgar A. Bering IV | 2022-01-10 10:30:02 -0600 text: update some Yred translation keys -------------------------------------------------------------------------------- 374218e70b | Zhang Kai | 2022-01-10 10:29:21 -0600 text: update Chinese translations of ability.txt Add translations. 增添翻译。 [ Committer's note: Fixed whitespace, Closes #2203. ] -------------------------------------------------------------------------------- 9084b0ae73 | Aliscans | 2022-01-10 10:11:47 -0600 fix: remove references to Hell from feat_is_branch_exit() Delete DNGN_ENTER_HELL, as the function returns false whether it's listed separately or not. Delete DNGN_EXIT_HELL and feat_is_hell_subbranch_exit(), and adjust the callers to accommodate this. This should not affect game behaviour. Also remove feat_is_hell_subbranch_exit() from is_feature_fudged(), as is_feature() now returns true for these and CMD_GO_UPSTAIRS. -------------------------------------------------------------------------------- a2056f7337 | Aliscans | 2022-01-10 10:11:47 -0600 fix: remove references to Hell from feat_is_branch_entrance() feat_is_hell_subbranch_exit() can simply be deleted, as the function returns false whether it's listed separately or not. The response to DNGN_ENTER_HELL changes from false to true, so change the functions which call it to accommodate this. The things which should behave differently are: - Hints mode now treats DNGN_ENTER_HELL as a branch entrance. - In lua (dlib), is_branch_entrance() now returns true for DNGN_ENTER_HELL. This isn't used in the Crawl source at present. -------------------------------------------------------------------------------- 2965a4dc42 | Aliscans | 2022-01-10 10:11:47 -0600 refactor: split DNGN_ENTER_HELL into one feature per destination Replace DNGN_ENTER_HELL with DNGN_EXIT_COCYTUS, DNGN_EXIT_DIS, DNGN_EXIT_GEHENNA or DNGN_EXIT_TARTARUS for gates leading out of those branches. This means that the descriptions for these are more appropriate, and makes it easier to change how one of them looks in a console build. [ Committer's note: Closes #2173. Tweaked descriptions and made these PORTAL_EXIT features. ] -------------------------------------------------------------------------------- b131497017 | Edgar A. Bering IV | 2022-01-10 09:31:43 -0600 fix: ensure Mennas never speaks across attitude changes Closes #2330 -------------------------------------------------------------------------------- a049f037fa | Edgar A. Bering IV | 2022-01-10 09:27:31 -0600 feat: some bound Donald dialog -------------------------------------------------------------------------------- c586ae71bd | Edgar A. Bering IV | 2022-01-10 08:29:55 -0600 fix: clarify shallow water's effect on large movement Closes #2345 -------------------------------------------------------------------------------- a5a8893891 | Edgar A. Bering IV | 2022-01-09 17:46:38 -0600 fix: a teleport closet in Nemelex: the Gamble Closes #2138. Closes #2126. -------------------------------------------------------------------------------- 47dfaac58e | DreamDust | 2022-01-09 17:23:04 -0600 fix: prevent breaking level connectivity (#2137) Closes #2039 Adds extra padding to nicolae_take_the_stairs -------------------------------------------------------------------------------- 108eccecdf | Aliscans | 2022-01-09 17:21:26 -0600 fix: use the standard names for monsters in "comes into view" messages. (#2132) Change the "comes into view" messages to use the names the game normally uses for each monster by preference, rather than a name based on the monster type. This particularly affects dancing weapons and ugly things. The game still uses different names (based on the "genus") when a lot of different monsters come into view at once. This should fix bug #0012649. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 6c55d0bc0c | Edgar A. Bering IV | 2022-01-09 16:07:00 -0600 feat: display to hit chance for targeted drac breath weapons Closes #2165. This also resolves some internal todos around zap mappings for breath abilities. -------------------------------------------------------------------------------- c9894997ea | Kate | 2022-01-09 21:27:37 +0000 Adjust Kiku book gift logic Add Anguish as an option to the second book, move Agony from the second book to the first, and rework the logic for picking spells. The first book now guarantees Animate Skeleton, and then picks 3 spells at random from Pain, Corpse Rot, Sublimation of Blood, Vampiric Draining, and Agony. The second book guarantees Animate Dead, then picks 4 from Anguish, Dispel Undead, Borgnjor's Vile Clutch, Excruciating Wounds, Death Channel, and Simulacrum. This simplifies much of the logic while retaining the guarantee of a corpse-using spell in each book, and slightly increases the variation in spell choices for each book. -------------------------------------------------------------------------------- de96f65983 | Kate | 2022-01-09 21:27:37 +0000 Update options_guide defaults -------------------------------------------------------------------------------- 6bfe6b3ffa | Kate | 2022-01-09 21:27:25 +0000 Apply coding conventions -------------------------------------------------------------------------------- 6a3f3e4ae6 | Nicholas Feinberg | 2022-01-09 12:48:20 -0800 Fix a crash? -------------------------------------------------------------------------------- 7e5176108a | Nicholas Feinberg | 2022-01-09 11:48:21 -0800 Fix a name mispelling For years, I was very confident I knew how to spell Yred's name. For years, I was wrong! Oops. -------------------------------------------------------------------------------- 467f337aae | Nicholas Feinberg | 2022-01-09 11:34:41 -0800 New spell: Anguish (L4 Hex/Necro) With Yred's Injury Mirror ability removed, the design space of 'retalation damage' that it occupied has become open. Anguish puts a different spin on that idea, causing affected monsters to take twice the damage they deal for the duration of the affect. Assorted notes: - The theme is 'haunted by the damage you've done'. Horrible, supernatural visions of the wounds you've caused appearing on your own body, that kind of thing. - For flavour reasons, it doesn't work on mindless creatures, but it does work on intelligent demons and undead. - It's not a straight port of Injury Mirror as a player-based duration, largely because, without the piety cost of Injury Mirror, it'd suffer from the 'buff problem' of something you'd want to have online at all times. Probably there's some way to deal with that, but in general, Crawl spells work better as things you cast on enemies. - It's taken Corona's spot in the status effect icons, because Corona is now a somewhat uncommon effect on monsters (mostly just from Ru retaliation?) and not that important. We should strongly consider refactoring the status effects to not be packed into a single int, either by adding a second int (lol) or by using a list like sane people. We don't need to scrounge for a few dozen bytes per monster... it's 2022, for heaven's sake. - It's Hexes because it checks Will and I wanted to make a hex, and it's Necromancy for flavour (somewhat difficult to conceptualize as pure hexes) and to suggest fun synergy with undead allies. (Enemies hitting your zombies triggers anguish too, which is big thematic!) - I'm very unsure about balance. Lots of levers and knobs to pull, so let's try it out! -------------------------------------------------------------------------------- af83eef3db | Nicholas Feinberg | 2022-01-09 09:55:52 -0800 Remove support for Yred injury mirror Since it was removed in b4513a33dfc258858182bc1aa8ffa57d82efba1c . -------------------------------------------------------------------------------- aff854cc17 | Nicholas Feinberg | 2022-01-09 07:39:54 -0800 Give XP for frenzied monsters' deaths Frenzied monsters (from orbs of mayhem, Discord, or datura darts) gave no XP due to a detail of their implementation. In general, it's better for players to get XP for their kills (mostly for reasons of 'fun'), so let's fix that here. Balance issues are best handled through other mechanisms. -------------------------------------------------------------------------------- 82390b3a13 | Edgar A. Bering IV | 2022-01-08 11:31:44 -0600 fix: don't strip ashenzari abandoners naked (Aliscans) -------------------------------------------------------------------------------- 0490bf50c2 | Nicholas Feinberg | 2022-01-08 09:20:02 -0800 New hats (CanOfWorms) This code is very bad. -------------------------------------------------------------------------------- ec1d49878b | Nicholas Feinberg | 2022-01-08 08:34:59 -0800 Woodcutter/dreamshard tiles (Sastreii) Like a dream... keep trying, skeleton -------------------------------------------------------------------------------- 39c23d704c | Nicholas Feinberg | 2022-01-08 08:30:36 -0800 Update waypoint docs (Slacking) Don't claim that show_waypoints exists; it hasn't for quite some time. (Since f2373cbd01457d94902, 2016.) -------------------------------------------------------------------------------- 3e8e36ac5f | Edgar A. Bering IV | 2022-01-08 10:06:31 -0600 fix: nerf seracfall Reviewing tvs and play data, wendigo had big assists with shard shrikes (whose prevalence was turned down). Cocytus remained an outlier among the hells, with wendigo getting the lion's share of hell kills. So let's tone down seracfall damage a bit. -------------------------------------------------------------------------------- a82b073101 | Edgar A. Bering IV | 2022-01-08 09:43:47 -0600 fix: use abyss regeneration for wizard level regeneration Closes #2342 -------------------------------------------------------------------------------- f3d713df7a | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 refactor: give !xp power scaling -------------------------------------------------------------------------------- d764ef0d23 | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: give an XP reward for the abyssal rune With the abyss now stripped of most rewards, let's give the rune a stronger incentive. It gives a potionlike effect for potions of XP equivalent to two potions of XP (due to how its implemented it gives slightly less skill XP than quaffing two !xp, but it's still a nice blob of skill XP and two XLs). -------------------------------------------------------------------------------- d21ca1c0ff | Kate | 2022-01-07 14:43:57 -0600 feat: make Abyss exits and staircases slightly more common With the changes to prevent scumming for XP or items in the Abyss, make exits slightly more common to try and make Abyss trips tend to be shorter (especially for characters that reach/are pulled to greater depths). -------------------------------------------------------------------------------- 6c1bee596d | Kate | 2022-01-07 14:43:57 -0600 feat: reduce wretched star malmutation rate Since it's no longer possible to work off temporary mutations while in the Abyss, make wretched stars only ever apply 1 bad mutation at a time with Corrupting Pulse, and reduce its casting weight so that it's more likely to be possible to deal with them without racking up a huge amount of bad mutations for the current Abyss trip. -------------------------------------------------------------------------------- 010f2a2272 | Kate | 2022-01-07 14:43:57 -0600 feat: don't grant piety in the Abyss Alongside XP gain and item generation, it also shouldn't be possible to gain piety in the Abyss, or to goldify corpses under Gozag. Uskayaw is an exception, since the piety isn't persistent, and likewise Yredelemnul still works normally. -------------------------------------------------------------------------------- 3b305989a8 | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: increase abyss plunge rate The chance to fall deeper into the abyss is meant to increase the challenge, discourage scumming at high levels, and speed strong characters to the rune encounters. The chance is a bit low, this tunes it up. -------------------------------------------------------------------------------- 578a0bbfb4 | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: remove abyss random item generation The second half of abyss scumming, collecting consumables on Abyss:1 and departing promptly on the first offered XP gate exit. Again, this has historically been regarded as not-worth-the-risk, but the shifting nature of the end game means that balance has changed. Vaults can still place items, but vaults are scary and sufficiently rare that this should be low enough percentage to be not a good idea to scum. -------------------------------------------------------------------------------- fcf540680d | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: prevent gaining experience in the Abyss Abyss scumming has been present in the game for a long time, a lingering design wart where the running thinking is that the risks outweigh the benefits. With the changes to the Hells and Tomb this wisdom is a bit lackluster; indeed the strategic damage of the Hells can be countered by "working off" the stat and HP drain in the abyss. This commit locks out progress towards all XP-gated effects except the abyss progress timer. The player gets messaging to show Abyss monsters grant no rewards. -------------------------------------------------------------------------------- 19973ebb7a | Nicholas Feinberg | 2022-01-07 11:29:03 -0800 Fix some mutation comments -------------------------------------------------------------------------------- 79b0f14e7e | Nicholas Feinberg | 2022-01-07 11:27:09 -0800 Fix a mutation crash? -------------------------------------------------------------------------------- a4934feff6 | Kate | 2022-01-07 18:27:16 +0000 Remove the strength bonus from bite damage It was the only attack remaining with a special-cased stat bonus on top of the regular stat multipliers, and it was mostly an insignificant bonus. Increase base bite damage by 1 for bite attacks (which does include VS bite bite although this didn't previously benefit from the strength bonus), and give Dragon Form an effective extra 2 levels of fangs since this would be the main case where the strength bonus was actually noticeable. -------------------------------------------------------------------------------- ed6f2ea202 | Nicholas Feinberg | 2022-01-07 09:45:50 -0800 Remove a misleadingly named function undead_mutation_rot sounded like it would rot the player for trying to mutate. But it was just a thin alias over a bool check! -------------------------------------------------------------------------------- 8ce13c4dff | Nicholas Feinberg | 2022-01-07 09:43:38 -0800 Simplify delete_mutation() (gammafunk, Sauken) Replace a complex and hard-to-reason about loop with some classic unweighted reservoir sampling. -------------------------------------------------------------------------------- 082bef1587 | Nicholas Feinberg | 2022-01-07 08:02:30 -0800 Remove many diverse spells (dilly) RIP big spellbooks. -------------------------------------------------------------------------------- 7c84da036a | Nicholas Feinberg | 2022-01-06 18:33:56 -0800 Remove most angel sInv (Yermak) Largely redundant with haloes. Seraph keeps it as a 'boss', and profane servitor of course has an unhalo. -------------------------------------------------------------------------------- c19253909b | Nicholas Feinberg | 2022-01-06 18:17:08 -0800 Remove sInv from guardian mummies (kate) Plenty of other Tomb enemies still have it, and it's odd for guardian mummies to keep sInv while the 'higher threat' mummy priests don't. -------------------------------------------------------------------------------- 493c1fd462 | Nicholas Feinberg | 2022-01-06 18:09:36 -0800 Strip sInv from various enemies Now that Invisibility isn't a player-castable spell, we can dial back on monster sinv and prune it off some monsters. This cuts sInv from: - shrikes (both) - orc high priests, deep elf high priests, mummy priests, hierophants - water nymphs - ancient zymes, worldbinders, tentacled starspawn - jiangshi - shadow imp, chaos spawn, sun demon, ynoxinul - mlio minderbender, grinder, rupert Things that still have sInv: - spriggans, nagas, trolls and jellies - vault guards - "wizards" (some) - high-tier demons & all angels - some statues and some other stuff Plausible that more pruning is called for in future. -------------------------------------------------------------------------------- f95308ed99 | Kate | 2022-01-06 04:12:50 +0000 Add an ability targeter for Hepliaklqana Idealise -------------------------------------------------------------------------------- a4a8cb2b72 | Nicholas Feinberg | 2022-01-05 19:50:16 -0800 Remove the Tomb of Dorokhle Enormously complex, very weird (it'd turn into Blink in various cases?), and rather pointless. -------------------------------------------------------------------------------- 445fb3080f | Nicholas Feinberg | 2022-01-05 19:41:24 -0800 Add Enfeeble tile (Sastreii) -------------------------------------------------------------------------------- 32e282a20f | Kate | 2022-01-06 02:17:53 +0000 Simplify Jiyva tendril disarm chance To not check strength/dexterity - just use a straight monster HD check, and don't give "fighter" tagged monsters a bonus to their HD. -------------------------------------------------------------------------------- 0b286ecb3d | Kate | 2022-01-06 02:12:11 +0000 Fix retaliation dealing 0 damage with Confusing Touch active -------------------------------------------------------------------------------- 2894324c5e | Kate | 2022-01-06 02:12:11 +0000 Adjust Minotaur retialiation chance To be based on XL instead of stats, as with other incidental strength and dexterity checks. Now grants around a 25% chance to retaliate at XL1, and around a 50% chance at XL27, which is comparable to the previous chances for a Minotaur with average stats. -------------------------------------------------------------------------------- a8dd43b1d0 | Edgar A. Bering IV | 2022-01-05 11:34:09 -0600 tiles: radioactive spikes (Sastreii) -------------------------------------------------------------------------------- 7885d49575 | Edgar A. Bering IV | 2022-01-05 11:17:34 -0600 fix: account for orbs in invis_allowed (#12662) -------------------------------------------------------------------------------- 4df0f3684d | Edgar A. Bering IV | 2022-01-04 22:05:20 -0600 fix: spacing -------------------------------------------------------------------------------- ffcb275ae5 | Kate | 2022-01-05 02:18:06 +0000 Increase kite shield and tower shield encumbrance They were tuned a little low with the new formula. Tower shields now have similar penalties (for normal-sized species) to before the rework, and kite shields still have lower penalties until around 8 skill. -------------------------------------------------------------------------------- ee2755802b | Kate | 2022-01-05 01:41:15 +0000 Refactor aux attack accuracy Factor in some accuracy bonuses/penalties that previously weren't handled for aux attacks (palentonga roll/transformation/halo bonuses, and invisibility/umbra penalties), and don't make Confusing Touch affect aux attack accuracy or damage. -------------------------------------------------------------------------------- 4b82a7ed23 | Kate | 2022-01-05 01:41:15 +0000 Rework offhand punch checks Simplify the check for offhand punches and make them overall slightly more likely to trigger - don't make heavy armour reduce the chance of punching, and get rid of Octopodes' improved chance for offhand punches (they still the benefit of being able to punch with a shield/two-handed weapon). All species instead have a 5% chance to trigger an offhand punch that scales with unarmed combat skill to a 50% chance at max skill (compared to a a 33% chance previously at 20 UC or higher). -------------------------------------------------------------------------------- 3a1cdb9d31 | Kate | 2022-01-05 01:41:15 +0000 Base aux attack chance on XL instead of str+dex Aux attacks had a fairly obscure chance to trigger based on str+dex, followed by various other specific checks depending on the type of attack. Simplify by making the initial check depend only on XL, scaling from just over 50% at XL1, up to near 100% at XL27. -------------------------------------------------------------------------------- 7b68f1b707 | Kate | 2022-01-05 01:41:15 +0000 Rework shield penalties To remove the hard skill thresholds for shield skill training, rework shields to use a similar formula to armour encumbrance, with the penalties being fully removed at 27 skill. The new formula is: 2/5 * shield_penalty^2 / (20 - 3 * racial_factor) * (27 - shield_skill) / 27 where shield_penalty is 5 for bucklers, 9 for kite shields, and 13 for tower shields, and racial_factor is -2 for large species and formicids, 0 for medium species, 2 for kobolds, and 4 for spriggans. -------------------------------------------------------------------------------- d379f8d934 | Nicholas Feinberg | 2022-01-04 17:26:20 -0800 Remove an unused attack field -------------------------------------------------------------------------------- 2cf8304be8 | Kate | 2022-01-05 00:53:55 +0000 Fix halo descriptions on '@' Broken since 44cf67ff301, oops. -------------------------------------------------------------------------------- dcb3f3653b | Kate | 2022-01-04 17:59:36 +0000 Update the quickstart guide It's an ancient relic either way, but still! -------------------------------------------------------------------------------- 4f6bc678fa | Nicholas Feinberg | 2022-01-03 14:44:42 -0800 Remove to-hit penalties from armour & shields These were so small as to be unnoticeable in almost all plausible cases. There are already many interesting tradeoffs from wearing heavy armour & shields; we don't need to complicate things further. -------------------------------------------------------------------------------- c92c38d8fe | Nicholas Feinberg | 2022-01-03 14:02:34 -0800 Fix to-hit display of armour/shield penalties What a ridiculous bug! This has been broken for the last 1.5 years, since I added it in 5b8897f42da . Simply too many randoms... -------------------------------------------------------------------------------- bd29554cb1 | hellmonk | 2022-01-03 16:34:23 -0500 reduce meliai frequency in spider -------------------------------------------------------------------------------- b5fd6dc846 | Nicholas Feinberg | 2022-01-03 11:05:40 -0800 Don't allow omnireflecting vampiric draining (Grit) Your +3 warlock's mirror {reflect} reflects the Vampiric Draining! INVALID YOU_FAULTLESS draws life force from the deep elf death mage! Would be nice to fix this instead, though I'm not sure what the correct behaviour would be. Would need to poke at _vampiric_draining_effect for a bit. -------------------------------------------------------------------------------- cbb8a028cc | Nicholas Feinberg | 2022-01-03 11:00:05 -0800 Allow scorch recasts to refresh duration (Snakku) -------------------------------------------------------------------------------- fede4e8891 | Nicholas Feinberg | 2022-01-03 10:53:02 -0800 Remove old shaft immunity Obsoleted by the removal of multiple explore traps per branch (in 2ccdadd). -------------------------------------------------------------------------------- c726bef33b | Kate | 2022-01-02 19:24:15 +0000 Simplify Gozag gold distraction (hellmonk) Instead of using bernoulli trials and reducing the chance to gain stacks depending on the number of current stacks, make gold distraction a simple 3% chance per stack to distract, capped at 10 stacks, and with all valid kills increasing the stack count. -------------------------------------------------------------------------------- 3b246a18e6 | Kate | 2022-01-02 18:46:36 +0000 Reduce Ashenzari's skill boost (again) It was still very overtuned after the previous reductions (and is probably still pretty generous even after this change) - 4 boosts are now equivalent to the old fully bound boost. -------------------------------------------------------------------------------- 3a22ab9bdc | Nicholas Feinberg | 2022-01-01 14:31:22 -0800 Restore 0.26 acquirement frequency (perryprog) Looks like it got drastically boosted at some point. Not clear how. -------------------------------------------------------------------------------- 95c3d9ec3d | Kate | 2022-01-01 22:12:49 +0000 Let autofight target frenzied monsters (nicolae) -------------------------------------------------------------------------------- cb2c1687f3 | Nicholas Feinberg | 2022-01-01 13:57:53 -0800 Add some lovely puppies (Sastreii) New tiles for Pharaoh Ants, Jorogumos, and Broodmothers. -------------------------------------------------------------------------------- b830f16b3f | advil | 2022-01-01 14:24:28 -0500 feat: improve mouse handling for message pane input * Don't lose focus when clicking on random stuff. Before you could click on e.g. the dungeon and nothing would happen, except that the input would lose focus. * With tile_web_mouse_control, right click exits a prompt by sending esc. (This could also accept left click, maybe outside of the message pane, but in my testing this seemed too prone to misclicks.) * Smooth over trading focus with the chat pane -------------------------------------------------------------------------------- 7516f22de0 | advil | 2022-01-01 14:24:28 -0500 fix: add a missing Error instance in webtiles -------------------------------------------------------------------------------- 92835e5c71 | Kate | 2021-12-31 21:11:24 +0000 Add some newlines in ammo descriptions -------------------------------------------------------------------------------- 5f6e48996a | Kate | 2021-12-31 21:10:36 +0000 Make blindness, frenzy, antimagic and daze dispellable Partially going back on a previous commit (8836bdb7) - frenzy was made undispellable since various other dart effects were also undispellable, but this approach doesn't really work consistently, since most monster enchantments can be applied by multiple different sources (eg frenzy can be applied by Discord as well as orbs of mayhem and darts of datura) and it's unclear why effects like this wouldn't be considered dispellable. -------------------------------------------------------------------------------- dd239049a3 | Kate | 2021-12-31 20:21:56 +0000 Allow attacking frenzied monsters normally Unlike regular neutral monsters, they don't turn hostile when attacked, so there's no reason to have any restrictions on attacking them. -------------------------------------------------------------------------------- bf4c3871c4 | advil | 2021-12-31 14:29:09 -0500 fix: don't ignore game menu exit button Yet another fix of a fix -------------------------------------------------------------------------------- 9884ec658a | advil | 2021-12-31 14:24:25 -0500 refactor: consolidate help lookup to one UI This commit entirely removes the message pane UI for help lookup, replacing it with the menu-based version added in 4c3c5a04a9. Along the way I did a bunch of tweaking and testing of this menu; main secondary changes: * submenus have arrow key navigation enabled * exit menu is the last item, not the first * some error popups clarified and improved, fully works on webtiles * the key to open this popup from the game menu is now `/`, for consistency with `?/`. * use the search icon introduced in 4c3c5a04a9 across the board instead of the circled i icon. Some of these could be adjusted further if desired. -------------------------------------------------------------------------------- 39bde7bcfb | advil | 2021-12-31 12:23:09 -0500 fix: further fix game menu fallthrough behavior Generalize a75cb3825e and fix the save command. In local games, this was crashing at the main menu when used, with a segfault in UI code. (Possibly indicates a bug there? But it's safest just to exit the popup anyways.) -------------------------------------------------------------------------------- b870ddcdaf | advil | 2021-12-31 12:23:09 -0500 fix: use correct save and X wording in game menu That is, don't mention the "main menu" if the game is in a state where one won't be used. -------------------------------------------------------------------------------- 9cff2364a1 | gammafunk | 2021-12-31 01:47:45 -0600 feat: Nerf ghost moth melee a bit These currently hit for up to 76 damage. Compare to emperor scorpions, a top-tier melee-only threat, that do up to max 60 damage with the same monster speed of 12. The increased ghost moth damage was to allow af_drain_stat to apply more often, but it had the side effect of turning them into the HULK (which is hard to program). Nerf their (28, 28, 20) melee attacks down to (24, 18, 18) for now. Some play-testing shows them still able to drain stats in honorable single combat versus a shield-equipped HuFi possessing sInv. The stat drain I got while testing was fairly minor; typically a few points in a couple stats after one fight. If we'd like the drain to become more relevant, it may be best to increase the amount of stat drain applied per successful hit, since it's clear that the stat drain will still get applied with these nerfed numbers even against characters with strong defenses. -------------------------------------------------------------------------------- a75cb3825e | advil | 2021-12-30 22:04:12 -0500 fix: correct a fallthrough issue with e3a463e -------------------------------------------------------------------------------- 7577a969be | advil | 2021-12-30 21:57:59 -0500 fix: a few issues with the help lookup menu * Don't show an extra popup when escaping out of the text entry sub-popups. (Super ugly code, this stuff could use a refactor to not rely on `response` for a non-error condition.) * Do actually show the above popups in webtiles (before it didn't do anything but still needed the key input). This popup is a bit rare now it seems but can at least be triggered on a string consisting of spaces. * Remove some (I think) unnecessary UI_CRT things. -------------------------------------------------------------------------------- e3a463ef05 | advil | 2021-12-30 21:57:59 -0500 fix: submenu behavior for most main menu commands It was probably a strategic error to not do this initially, but I think having a submenu open is more what people would expect from a main menu command. I didn't do this for CMD_QUIT because it uses a message pane prompt. The lookup menu already did this. -------------------------------------------------------------------------------- 76a60e06d6 | Nicholas Feinberg | 2021-12-30 17:25:01 -0800 New placeholder Jorogumo tile -------------------------------------------------------------------------------- 69a50951d7 | Nicholas Feinberg | 2021-12-30 16:33:36 -0800 Fix tag_upgrade build -------------------------------------------------------------------------------- 0aadbb367f | Nicholas Feinberg | 2021-12-30 16:23:34 -0800 Improve frenzy UX - Allow targeting frenzied monsters with damage spells, etc normally. - Don't make good gods punish you for attacking frenzied monsters. -------------------------------------------------------------------------------- 33a2d3f881 | Nicholas Feinberg | 2021-12-30 16:06:16 -0800 Remove one last ray of sunshine TARG_HOSTILE_SUBMERGED, unused since 1d64b78cf4984becb95c8. -------------------------------------------------------------------------------- b64ed734f3 | Nicholas Feinberg | 2021-12-30 15:59:07 -0800 Correct a frenzy comment ENCH_FRENZY does not exist. -------------------------------------------------------------------------------- d371e1541e | Nicholas Feinberg | 2021-12-30 15:57:23 -0800 Merge strict neutral with good neutral (kate) They were almost identical. The only difference is that jellies will now show up with a brown background instead of grey & will be described as 'fellow slime' instead of 'indifferent', which seems fine! (Could have made them grey instead of brown, but it'd be misleading.) -------------------------------------------------------------------------------- 7e0445c96d | Nicholas Feinberg | 2021-12-30 10:38:27 -0800 Bring back Xom's dragons (kate) This partially reverts commit a0dfb7b2014fc097504f6b115edb92e612a79952. -------------------------------------------------------------------------------- a0dfb7b201 | Nicholas Feinberg | 2021-12-30 10:34:39 -0800 Remove non-player-castable Xom spells (pi-314) -------------------------------------------------------------------------------- e07096e7bc | Nicholas Feinberg | 2021-12-30 10:25:58 -0800 Fix channeled exegesis from ignorance (Nomi) Don't end channeled spells immediately when you exegesis them with no spells memorized. -------------------------------------------------------------------------------- 6040ee8864 | Nicholas Feinberg | 2021-12-30 10:10:57 -0800 Remove the orb Added accidentally. -------------------------------------------------------------------------------- b2e798e311 | Nicholas Feinberg | 2021-12-30 09:52:38 -0800 Improve orb of light description (🐙Mike) -------------------------------------------------------------------------------- 0273388e84 | Nicholas Feinberg | 2021-12-30 09:05:12 -0800 Add player orb tiles Feel the orb within your hand... feel its cold, smooth surface. The deadly temptation of its power. Who could stand against you if you bore such a device? Who could withstand the sorcery boiling within, seeking only a crack to escape and wreak boundless havoc? You would be a king. No... more. A god. -------------------------------------------------------------------------------- 7b639605f7 | Nicholas Feinberg | 2021-12-30 08:36:54 -0800 Fix Hep powers webtiles display (🐙Mike) -------------------------------------------------------------------------------- e1d817e1ef | Nicholas Feinberg | 2021-12-30 08:23:04 -0800 Fix allied radroach crash Instead of consistently crashing when an allied radroach decides whether or not it should cast irradiate, don't crash instead. Also, switch to using a tracer for irradiate cast logic instead of weirdly hand-replicating the same logic. -------------------------------------------------------------------------------- 2ac24fcec8 | Nicholas Feinberg | 2021-12-30 07:30:37 -0800 Remove un-ID'd angel weapon code I warned it'd never come up, and now it definitely won't! -------------------------------------------------------------------------------- 2ad6d04315 | Neil Moore | 2021-12-29 23:12:07 -0500 Handle correct name of Japanese language. Ever since the very first commit that introduced Japanese support (viz. 05c31b08e25), the lang option has accepted the ethnonym but not the name of the language . Leave as an alternative for compatibility. -------------------------------------------------------------------------------- cf31067fe6 | Kate | 2021-12-30 02:54:40 +0000 Mark some orbs as useless when appropriate -------------------------------------------------------------------------------- 62fc55f08d | Kate | 2021-12-30 02:29:00 +0000 Fix Summon Spider messaging (nicolae) -------------------------------------------------------------------------------- c3160e8207 | Nicholas Feinberg | 2021-12-29 16:45:36 -0800 Tweak channel status descriptions Semicolons are a dangerous vice, not to be overindulged. Also, it's *waves* of flame, not *a wave* :P -------------------------------------------------------------------------------- 1c5e12ca7f | Kate | 2021-12-30 00:01:36 +0000 Fix some descriptions (Ge0ff) -------------------------------------------------------------------------------- a5cd5cae6f | Kate | 2021-12-29 23:31:18 +0000 Rename Heavenly Storm's status light (PleasingFungus) To no longer overlap with Storm Form. -------------------------------------------------------------------------------- cbcab8c68d | Kate | 2021-12-29 22:55:36 +0000 Don't gender some non-unique enemies Water nymphs, harpies and jorogumos were always gendered female which was inconsistent with all other non-unique enemies. Closes #2317. -------------------------------------------------------------------------------- 9cd67a661c | Kate | 2021-12-29 22:55:36 +0000 Update some status light descriptions And the related spell descriptions for some forms. Currently Heavenly Storm and Storm Form overlap, and one of them needs their status light to be renamed. Closes #2321. -------------------------------------------------------------------------------- 050f3537b9 | advil | 2021-12-29 17:37:17 -0500 fix: restore rest behavior when > rest_wait_percent The => was accidentally introduced in 0bdd5ba03093. Resolves #2304 -------------------------------------------------------------------------------- 113dc556a4 | Kate | 2021-12-29 01:50:18 +0000 Remove unequip penalties from the robe of Misfortune It's no longer intended to be a strictly-bad unrand, with its design being that it grants substantial AC/EV but with the significant downsides of *Slow and *Corrode when damage is received, as well as having Harm. To encourage at least trying it on, remove the Contam and Drain on unequip - as body armour, it can't be quickly swapped so doesn't need an additional unequip penalty alongside the Harm. -------------------------------------------------------------------------------- c8854da52d | Kate | 2021-12-29 01:44:13 +0000 Simplify an orb check -------------------------------------------------------------------------------- fc495fb4ec | Nicholas Feinberg | 2021-12-28 17:26:06 -0800 Don't talk about orb AC (ShaperMC) Squash a pointless message in orb descriptions. -------------------------------------------------------------------------------- 6b9ff3a05d | Nicholas Feinberg | 2021-12-28 11:06:26 -0800 Refactor Irradiate, pt 1 (sdynet) Don't prompt when a monster would irradiate one of your allies, do pass the caster by reference rather than as a pointer, and various other fixes. -------------------------------------------------------------------------------- 18cc7973ba | Kate | 2021-12-28 18:11:32 +0000 Improve Makhleb destruction ability descriptions -------------------------------------------------------------------------------- 3d317c14f4 | Kate | 2021-12-28 18:11:32 +0000 Make Chei consider orbs of mayhem hasty -------------------------------------------------------------------------------- ba9079b354 | Edgar A. Bering IV | 2021-12-28 12:08:03 -0600 docs: changelog through 0.28-a0-1340-g77f64c2 -------------------------------------------------------------------------------- 77f64c2f64 | Edgar A. Bering IV | 2021-12-28 08:51:10 -0600 fix: prevent wearing an orb while wielding a 2-hander The reverse check already worked but this one was missed. Closes #2316 -------------------------------------------------------------------------------- a5422284a4 | Nicholas Feinberg | 2021-12-27 20:28:46 -0800 Fix orbs + SH (Lightli) Don't make orbs set your SH to 0 when you have other sources. -------------------------------------------------------------------------------- ce4b496cc8 | Nicholas Feinberg | 2021-12-27 18:44:10 -0800 Revert "Let good gods cause some mayhem (booper)" Neutral is a mess :( This reverts commit 83453ab7136c4dc63250dae6215468288a3404e4. This reverts commit 9a4740a79772870bd10ec86309d9a473f55b9590. -------------------------------------------------------------------------------- 83453ab713 | Nicholas Feinberg | 2021-12-27 18:38:02 -0800 Make neutrals considered less friendly In a few places. Maybe this is an improvement? Unsure. -------------------------------------------------------------------------------- 9a4740a797 | Nicholas Feinberg | 2021-12-27 18:37:40 -0800 Let good gods cause some mayhem (booper) Good gods don't like you attacking peaceful creatures, like ely's friendly neutral or kirke's humans' strict neutral (?), but it should be fine to attack frenzied 'true neutrals'? Maybe? This is too many neutrals... -------------------------------------------------------------------------------- ebfa916d04 | Nicholas Feinberg | 2021-12-27 18:22:21 -0800 Clarify mayhem (booper) -------------------------------------------------------------------------------- 1c9ffb4daf | Nicholas Feinberg | 2021-12-27 13:57:16 -0800 Fix a duration crash (skeral) Introduced by 95685b5d4a526e94ea562b9df2ea7fce36eb05bc . -------------------------------------------------------------------------------- 95685b5d4a | Nicholas Feinberg | 2021-12-27 12:52:58 -0800 Rename mid_msg -> expire_msg, etc (Pinkbeast) 5c2cb368445 (2015) continued the misleading naming used by _decrement_a_duration() in which effects for the 'expiration point' (an arbitrary # of turns before the end of a duration at which the player is warned that it's nearly done) were claimed to occur at the 'midpoint' (50% of the way through the duration.) Fix this. -------------------------------------------------------------------------------- 9cdbbaba87 | Nicholas Feinberg | 2021-12-27 12:44:16 -0800 Remove centaurs (Lici) Centaurs weren't meaningful threats in Shoals. They are a nice match for the vaguely Greek mythological theme, though, so swap in some centaur warriors instead. -------------------------------------------------------------------------------- a7867985be | Kate | 2021-12-27 20:16:58 +0000 Adjust some monster genuses -------------------------------------------------------------------------------- 586501026f | Kate | 2021-12-27 20:16:58 +0000 Remove some speech lines and a randbook name As with recent changes to Yred's theming, remove a few somewhat tasteless lines. -------------------------------------------------------------------------------- e4a90f2674 | Kate | 2021-12-27 20:16:58 +0000 Remove some obsolete book titles -------------------------------------------------------------------------------- 8ca4fe5f7a | Kate | 2021-12-27 20:16:58 +0000 Display drowning resistance in monster descriptions -------------------------------------------------------------------------------- 9e5b8c6e9f | Kate | 2021-12-27 20:16:58 +0000 Remove water vulnerability Only an extremely small number of monsters were vulnerable to water, it did very little (affecting only direct BEAM_WATER damage, but not granting any additional vulnerability to waterlogging or engulfing), and the player has minimal access to sources of water damage. -------------------------------------------------------------------------------- 8dc402e326 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 REVERTME: increase orb rate for testing -------------------------------------------------------------------------------- 961f3f1587 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 fix: remove a placeholder -------------------------------------------------------------------------------- 17eb628754 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of energy (bringing back the crystal ball) This commit adds a new "energy" orb ego that offers passive channeling, like Wucad Mu. The implementation is set to stack with Wucad Mu and any other potential source of energy (currently none) in the following ways: - The trigger chance is multiplied by the number of sources. - The all sources must backfire for the backfire effect to trigger. Wucad Mu's channeling was interesting, but compared to an enhancer staff or other unrands the effect underwhelemed many players. In addition to offering channeling with a shield, this commit buffs Wucad Mu by making it count as two sources of channeling for internal calculations. XXX: Unsure of the best way to communicate this to the player without turning our inscriptions into a line of dubious code, inscribing it *channel++ just doesn't sit right. -------------------------------------------------------------------------------- 92c09265f1 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of guile The guile ego is a will-check analog of harm: it reduces the willpower of any user's target by 3 * WL_PIP, in exchange for reducing the willpower of the user by 2 * WL_PIP. This is more interesting than a straight hex enhancer: the tradeoff is stiffer and it works with all willpower checks, not just hexes. -------------------------------------------------------------------------------- ecb9636ef5 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of mayhem (nicolae) The mayhem ego for orbs causes monsters who see the wielder kill something to go frenzy. It only hits one monster per kill with a coinflip for now. This could be adjusted up or down based on power, but we definitely don't want to give out free Discord casts for a single kill. -------------------------------------------------------------------------------- acce00ee20 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of wrath A *Rage orb, because *Rage is powerful, fun, and dangerous. This one is in the mix because why should spellcasters get all the orb fun. -------------------------------------------------------------------------------- 973e1c81fd | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of light The first of several orb egos, an orb of light gives the player a radius 3 halo. Halo prevents invisibility and backlights the player (an extra defensive penalty) in exchange for revealing invisible creatures and an accuracy bonus. Alone the accuracy bonus isn't that big, but an ally user can get quite a bit of a boon from halo. This is probably the weakest of the orb egos, but that's ok. In general orb egos will represent some kind of a tradeoff, as they're egos that one can use in place of a shield without training. -------------------------------------------------------------------------------- e3aa5898da | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: chill lofi orbs to ponder/crawl with A shield-slot analog of scarves, meant to play with the same sort of defense/interesting ego trade-off. Orbs give no SH and no penalty. "Caster" and some "battlemage" archetype characters are almost always steered to shields through a confluence of factors: - cheap one-handers (demon weapons and shortblades) that can be amplified with magic - one-handed enhancer staves leaving the other hand flapping around empty and begging for a shield - shield penalties are easier for low-strength characters to overcome Forthcoming commits will introduce orb egos (currently ponderous is a placeholder but will not be on the final list) aimed at expanding the options for these characters. Another direction to pursue in this design space is to create some 2-handers that tempt such characters, this is not an exclusive direction so both could happen, but for now orbs are what we've got. -------------------------------------------------------------------------------- 050272b745 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 refactor: adjust some reflection checks Make actor.reflection() do what it says on the tin, and use the shield_reflects(item) method only for messaging, not for determining which actors are reflective. -------------------------------------------------------------------------------- 9e8018ba61 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 fix: remove the limit on weapon and armour egos These were limited for seen item tracking to (subtly) influence acquire. Unlike seen basetypes, seen ego tracking makes a lot less sense, since seeing an ego on an unwanted base type tells us nothing about the player's preferences. This seemed cleaner than the save-compatibility needed to expand the bitfields because they're saved. -------------------------------------------------------------------------------- e154d51992 | Nicholas Feinberg | 2021-12-27 11:22:27 -0800 Revert "fix: remove a now unused MB check" This broke the bound soul icon. This reverts commit 53f92202ff9e202943409b577e6ad06e644bce8b. -------------------------------------------------------------------------------- f86f92d26c | advil | 2021-12-27 13:58:43 -0500 fix: bounds checks for monster lrd and ghostly sacrifice This removes the hardcoded checks from 73776a4c32c7 and 4f857bc58ec3. The reason for these crashes and for their variability was that the fake monster used for the validity check is at position 0,0. So if the game was saved on a level where a monster was in the upper left corner, the iterators used in these two spells would fire a tracer at the monster during game setup. The presence of a salt entrance in the save in #2308 was a red herring, it's just that this level had some monsters in the right place. It's probably still not ideal that the level even exists at the point where this validity check happens? Re-resolves #2308, should resolve #2281 (though I couldn't get an abyss crash to happen on demand). I also added a bit more info to the ASSERT that may make this easier to track down in the future. -------------------------------------------------------------------------------- 73776a4c32 | advil | 2021-12-27 13:19:26 -0500 fix: don't fire tracers for ghostly sac validity check This is a followup to 4f857bc58ec3, it seems that this ASSERT triggers only if a monster with the relevant spell is on the level where a player saved. (???) Resolves #2308 -------------------------------------------------------------------------------- bc27143018 | Nicholas Feinberg | 2021-12-27 07:16:34 -0800 Revert "Move the Mace of Variability to the early game" Various people have pointed out that, while the mace of variability used to be weak enough to be an early game item, it's now a compelling one for the later game. Mea culpa! This reverts commit fdf38ca10bdff2f4954046791e0ea06d90ea673a. -------------------------------------------------------------------------------- 71652a0310 | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 Add a guarded Meek vault -------------------------------------------------------------------------------- 0e9cb7027e | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 New early-game unrand: staff of the Meek Another early-game unrand, the staff of the Meek is a +7 quarterstaff of super-protection. When the player is below 55 HP, the staff of the Meek gives extra AC, scaling up to an additional +7 AC (for a total of +14) at 27 HP or below. I suspect it might be slightly overtuned. -------------------------------------------------------------------------------- be34dac4b3 | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 Rename Danyla -> Delatra To avoid name conflicts with Slavic regions. -------------------------------------------------------------------------------- dce6b4fef7 | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 Move the Robe of Augmentation to early-game (Lici) It's just not that strong. -------------------------------------------------------------------------------- 17cdd1422e | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 New early-game unrand: Throatcutter Throatcutter is a +7 long sword of draining with a 33% chance to instakill struck foes that are below 21 hp. Monster HP tends to increase over the course of the game, so this is of course most relevant early on. It's a bit like extra AC-ignoring damage, but it only works when enemies are at low HP to begin with. Terence gets a Maggie-esque 1% chance to spawn with this. -------------------------------------------------------------------------------- a2d17535fb | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Move the Trident of the Octopus King early It's too weak to be good later, unless its gimmick goes off, which it won't. (FR: new/tweaked gimmick!) Also remove its Will+ as superfluous. (rElec and rPois are both vaguely thematic.) -------------------------------------------------------------------------------- fdf38ca10b | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Move the Mace of Variability to the early game It's often a trap to use the mace of variability later on, and there are plenty of fun later-game unrands for m&f users to use. Let's switch this back to a simple mace (from a great mace), buff its ench (mimicking klown clubs), and put it in the early-game weapon set. -------------------------------------------------------------------------------- f4a11d3a62 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Move Lear's to the early-game Lear's tradeoff - blocking aux slots in exchange for a big flat AC bonus - makes more sense in the early game, when players have access to few items to fill those aux slots. Later on, it just means players get to play around less with the loot game, which isn't that exciting. Its focus on enchantment over base AC is also stronger early, when players have little Armour skill. So, move Lear's into the early-game unrand category (making it more likely to spawn early & less likely later), and cut its enchantment from +27 to +18. -------------------------------------------------------------------------------- 2cb09928ac | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Shift more unrands to be early-game Morg, Devastator, the Ratskin Cloak, and Kryia's mail. - Kryia's mail potion healing buff is more relevant earlyish, when potion healing is more relevant and competing armour options are worse. - Ratskin cloak's summons don't scale; makes sense for it to show up earlier. - Devastator as a mini-shatter is a fun earlier-game effect. - Morg is just too weak for later. At some point I do want it to have a better gimmick, though - perhaps some way to trigger a 'sublimation of blood'-type HP for MP trade? Or, perhaps, a twist on pain brand that's works better in the early game. -------------------------------------------------------------------------------- dd19a0eca0 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Fix danyla ftiles (nicolae) -------------------------------------------------------------------------------- 4d69e0ec34 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Refactor early-game unrand weights -------------------------------------------------------------------------------- 2b8dd8ea68 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Force woodcutter's axe to speed 10 (hellmonk) Regardless of being slowed, shield delay, etc, etc. -------------------------------------------------------------------------------- 07e9fc738c | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Add a fireplace -------------------------------------------------------------------------------- 88828878fe | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Add a guarded unrand woodcutter's axe vault -------------------------------------------------------------------------------- fcf6033174 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 New unrand: woodcutter's axe Another early-game unrand, the woodcutter's axe swings at a fixed 10 aut, regardless of skill. As a +8 vorpal war axe that can never hit a normal war axe's mindelay, it should become obsolete by midgame, but quite powerful earlier. -------------------------------------------------------------------------------- a9f048274c | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Add a guarded unrand vault for Danyla's -------------------------------------------------------------------------------- 7890d4bb03 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Make Danyla's less likely later Since Danyla's are intended to be interesting in the early game, give them a 10x weight at early depths (D:6 and earlier, I think) and 0.1x weight at later depths. -------------------------------------------------------------------------------- f9a06f655c | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 New unrand: Danyla's gloves Continuing the 0.28 trend of new unrands, Danyla's gloves play in the space of 'unrands for the early game'. The wearer is healed by drinking unknown potions, and their MP is restored by reading unknown scrolls. Is it wise to intentionally keep consumables unknown so that you can use them as ersatz !hw and !magic? Maybe?? I considered also giving some bonus for reading ?id or some alternate way to use up ?id with these gloves, but that seemed to go against the design premise. Also, to be a bit too complicated. More related changes to come in subsequent commits. -------------------------------------------------------------------------------- 1f8817ceea | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Allow artefacts to spawn on D:2-3 To increase variety, and to allow early-game unrands to work, lift the ban on artefact generation in D:2-3. To discourage startscumming, D:1 artefacts are still banned. -------------------------------------------------------------------------------- 54527cc1f4 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Explain no_upgrade -------------------------------------------------------------------------------- b4563b27b3 | Nicholas Feinberg | 2021-12-26 14:51:13 -0800 Remove zombie deep dwarf damage shaving Monster deep dwarf zombies had damage shaving, probably left over from when actual deep dwarf enemies existed. Let's clean that up. -------------------------------------------------------------------------------- 91df5548d3 | Nicholas Feinberg | 2021-12-26 08:17:46 -0800 Pass item_level into make_item_unrand This is mostly intended for future changes. -------------------------------------------------------------------------------- 77e77742e6 | Nicholas Feinberg | 2021-12-26 08:14:29 -0800 Fix unrands being able to reappear in the Abyss This was broken in 850bfe61e39, a year and a half ago. Probably no one noticed because it's almost impossible to encounter this case to begin with. -------------------------------------------------------------------------------- 8a08cb6da8 | Nicholas Feinberg | 2021-12-26 08:13:51 -0800 Minor artefact refactoring -------------------------------------------------------------------------------- 700d31dd17 | Kate | 2021-12-26 15:35:15 +0000 Add some new wizards as potential spellbook owners -------------------------------------------------------------------------------- 73c4ac0421 | Kate | 2021-12-26 15:35:15 +0000 Give Portal Projectile a static targeter -------------------------------------------------------------------------------- 6bde065e89 | hellmonk | 2021-12-25 21:40:59 -0500 minor revisions to vampire castle -------------------------------------------------------------------------------- 01e59b5888 | hellmonk | 2021-12-25 21:40:59 -0500 delete boomers Reduce the number of boomerangs generated in bailey maps and entries. -------------------------------------------------------------------------------- 507d92f863 | hellmonk | 2021-12-25 21:40:59 -0500 various bailey fixes -------------------------------------------------------------------------------- 69d4bd79ad | hellmonk | 2021-12-25 21:40:59 -0500 remove bailey_polearm_4 This map was very small and also very bad. -------------------------------------------------------------------------------- 65a5005c76 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_2 Make the outer area less annoying and shrink the border. Slightly randomize monster counts and placements. Adjust loot. Also, fix bailey_polearm_1. -------------------------------------------------------------------------------- 514828de85 | hellmonk | 2021-12-25 21:40:59 -0500 Adjust bailey_polearm_1 Make the moat shallow. Give routes for monsters in the center to escape the lava (makes the vault less annoying and less cheeseable). Adjust the good item selection slightly. -------------------------------------------------------------------------------- c62d020828 | hellmonk | 2021-12-25 21:40:59 -0500 enchanted keep bailey Spriggans and ogres, plus one small dragon. -------------------------------------------------------------------------------- b6a7f6400c | hellmonk | 2021-12-25 21:40:59 -0500 checkwhite -------------------------------------------------------------------------------- 1f28f93398 | hellmonk | 2021-12-25 21:40:59 -0500 Prince Ribbit bailey Feat: frogs, vault guards. -------------------------------------------------------------------------------- eca784f0a1 | hellmonk | 2021-12-25 21:40:59 -0500 checkwhite -------------------------------------------------------------------------------- 1e23faca81 | hellmonk | 2021-12-25 21:40:59 -0500 remove bailey_axe_1 This was the other kobold boomerang behind water map, and it was very bad. -------------------------------------------------------------------------------- bafb9c2f4c | hellmonk | 2021-12-25 21:40:59 -0500 Rework bailey_axe_3 This was formerly one of two 'boomerang kobolds behind deep water' baileys. Now it is a kobold brigand bailey; they replace a few of the regular kobolds (which are no longer behind deep water) and the other weak enemies. Loot has been updated to include a few stacks of specialty darts. -------------------------------------------------------------------------------- fb8d33413f | hellmonk | 2021-12-25 21:40:59 -0500 vampire castle bailey Features 1-3 vampires with big polearms, a gargoyle, and some orcs. -------------------------------------------------------------------------------- c7d099ddaa | hellmonk | 2021-12-25 21:40:59 -0500 checkwhite -------------------------------------------------------------------------------- d8f7bb276c | hellmonk | 2021-12-25 21:40:59 -0500 restructure bailey_axe_of_yendor_kennysheep Rearrange the layout so that the hard monsters appear later in the map. Also, randomize monster counts. -------------------------------------------------------------------------------- a913e2b07b | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_bossmonster_kennysheep Randomize monster counts. Remove deep water to prevent kobold annoyance and trivial drowning strats. Reduce loot slightly (early portal maps should generally not place multiple stacks of !exp, I do not care how hard killing the warlord is). -------------------------------------------------------------------------------- 39464d8d1f | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_5 Reduce and randomize monster counts. Add terrain. Tag the summoning scrolls no_pickup. Reduce loot slightly. -------------------------------------------------------------------------------- 673e66e2bb | hellmonk | 2021-12-25 21:40:59 -0500 new elf bailey Places a single pyromancer or zephyrmancer, who is held hostage by the typical bailey polearm orcs. Armour, potion, and gold loot. -------------------------------------------------------------------------------- 0c74f66fb6 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_gnolls_kennysheep Randomize monster count slightly. Add wolves and a chance for Grum. Buff loot. -------------------------------------------------------------------------------- c07eaa88f9 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_flooded_kennysheep Push the centaurs out of the entrance's line of sight. Adjust and randomize monster counts. Slightly adjust loot. -------------------------------------------------------------------------------- a63312ec20 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_minmay_hex_keep Place less popcorn. Space out and randomize "hard" monster locations. Reduce loot from 2 exp/acq to 1. Still places a warlord. -------------------------------------------------------------------------------- 3b12c07c51 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_4 Give the player a path across the moat without flight. Move the flight items into the vault proper. Randomize monster placement. -------------------------------------------------------------------------------- bd0c3d1049 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_2 Add draining to formerly mundane halberds, let orc warrior get in on the elec action, and nerf the loot (this map is too easy to place guaranteed acq/exp). -------------------------------------------------------------------------------- 46454fb2af | hellmonk | 2021-12-25 21:40:59 -0500 Cut bailey spawn depth Bailey portals spawned between D:7-14 and in Orc:1. While at first glance this looks like a small portion of the game, players get massively stronger over those floors. D:7 characters might still be working on their starting kit, whereas a character on D:14 or in Orc is likely well established and has probably cleared Lair. The monsters in many existing Bailey vaults are similar to Orc spawns as well, so they tend to be threatening in the early part of the Bailey spawn range but mundane in the later part. Thus, Bailey will now spawn between D:7-10 and the chance per floor is doubled to keep the overall likelihood of seeing a bailey roughly the same. -------------------------------------------------------------------------------- fc91cddb57 | Kate | 2021-12-26 02:30:05 +0000 Simplify a zap -------------------------------------------------------------------------------- ff14099be7 | Kate | 2021-12-26 02:30:00 +0000 Store spellpower on cast for ongoing spells Make Borgnjor's Vile Clutch, Searing Ray, Olgreb's Toxic Radiance, Flame Wave, Searing Ray, Frozen Ramparts, and Dragon's Call all check spellpower only once on cast, instead of continuously throughout the duration. Also includes some minor cleanup for other spells that unnecessarily rechecked power. As noted in 9c71ebef145, this fixes their interactions with Sif's Divine Exegesis, and for Searing Ray and Flame Wave it has no other meaningful effect (since it's not possible to swap gear while channeling). For the other spells, it does become possible to cast them with an enhancer and switch to another item, but this is no different to the majority of other spells with an ongoing component (such as transmutations, hexes, and summons) where all that matters is the power at time of cast. -------------------------------------------------------------------------------- c629bbe4ae | Edgar A. Bering IV | 2021-12-25 17:14:01 -0600 fix: remove a diacritic Since we still officially support pure ascii interface, changing the monster name to "jorōgumo" in mon-data.h is a non-starter. To get the description to appear the diacritic must also be missing in the database. -------------------------------------------------------------------------------- 52c95e12a3 | hellmonk | 2021-12-25 16:49:40 -0600 refactor: rename a monster spellbook Since it's now in use by multiple enemies. -------------------------------------------------------------------------------- be32123071 | hellmonk | 2021-12-25 16:49:40 -0600 force Spider generation for testing -------------------------------------------------------------------------------- 4f13a64121 | hellmonk | 2021-12-25 16:49:40 -0600 feat: adjust and refactor monster web immunity Use a monster flag. -------------------------------------------------------------------------------- b4f9141d82 | hellmonk | 2021-12-25 16:49:35 -0600 feat: update spider bands -------------------------------------------------------------------------------- 4dffdd49c8 | hellmonk | 2021-12-25 16:49:01 -0600 feat: revise spider spawn table Incorporate the new spider monsters introducded in previous commits, enable ood usage. -------------------------------------------------------------------------------- db8c699bc0 | Edgar A. Bering IV | 2021-12-25 16:49:01 -0600 feat: adjust existing spider monster numbers -------------------------------------------------------------------------------- dabb86c9ba | hellmonk | 2021-12-25 16:49:01 -0600 feat: radroaches They cast irradiate. Currently contams the player a lot rather than mutating them outright; not totally opposed to changing it though. -------------------------------------------------------------------------------- f555730fcc | hellmonk | 2021-12-25 16:49:01 -0600 feat: adjust some spider layouts Allow another cavelike layout, change a few parameters in delve. -------------------------------------------------------------------------------- 8ac70cea53 | hellmonk | 2021-12-25 16:49:01 -0600 feat: sun moths Holy moths with a single tile halo, sticky flame, and energy bolt. -------------------------------------------------------------------------------- 43fd8d3cd6 | hellmonk | 2021-12-25 16:49:01 -0600 feat: adjust ghost moths Take away their poison sting and make them much better at draining stats. -------------------------------------------------------------------------------- 73a05ced62 | hellmonk | 2021-12-25 16:49:01 -0600 feat: adjust emperor scorpions Reduce their defenses and damage in exchange for speed 12. -------------------------------------------------------------------------------- b1d9b9a04c | hellmonk | 2021-12-25 16:49:01 -0600 feat: culicivora Low end spider for packs; heal other + vamp bite -------------------------------------------------------------------------------- cdf09cc80e | hellmonk | 2021-12-25 16:47:59 -0600 feat: broodmothers High end spider enemies that summon spiders and bite to summon spiders. -------------------------------------------------------------------------------- b91c745bbe | hellmonk | 2021-12-25 16:47:59 -0600 feat: Jorogumo High end spider nasties that cast ensnare and bolt of draining, plus melee for hornet poison. -------------------------------------------------------------------------------- 5bc7cbe778 | hellmonk | 2021-12-25 16:47:59 -0600 feat: steelbarb worms They inflict barbs status in melee, have regen and rF, and are fast. -------------------------------------------------------------------------------- de0d139c19 | hellmonk | 2021-12-25 16:47:59 -0600 feat: buff orb spiders Increase cast rate, hd, and melee damage -------------------------------------------------------------------------------- da204c4458 | hellmonk | 2021-12-25 16:47:59 -0600 feat: Pharaoh Ants A new undead spider monster that hits moderately hard for AF_DRAIN and binds the souls of all nearby monsters on death. -------------------------------------------------------------------------------- 2a955c5cc2 | hellmonk | 2021-12-25 15:22:40 -0600 feat: rework demonic crawlers Give them warning cry so they can alert their spider friends. -------------------------------------------------------------------------------- f280a0fbb2 | Kate | 2021-12-25 17:16:50 +0000 Make Formicid digging drain max health The ability to dig outside of combat with no limit or meaningful cost has been known to be a problem ever since Dig existed as a spell, and it encourages a variety of undesirable behaviours. Formicids have been a problem in this regard for a while (and even when the ability had a food cost, this didn't appropriately limit its use). To make digging have a noticeable cost, make it drain the user for each tile dug, to make extensive out-of-combat digging hopefully much more dangerous. To simplify the ability and make it slightly more useful as an in-combat escape, also remove its movement speed penalty. -------------------------------------------------------------------------------- 32bd0c41fe | Kate | 2021-12-25 17:03:33 +0000 Update some speech lines Remove various outdated speech lines, adjust a few others, and give Crazy Yiuf some new words. -------------------------------------------------------------------------------- 986220338f | Nicholas Feinberg | 2021-12-25 15:31:26 +0000 Code tweaks Constify some variables, switch from a pointer to a reference, and make some mon-info code shorter (this bit is dubious). -------------------------------------------------------------------------------- 2f14e528d3 | Kate | 2021-12-25 15:31:26 +0000 Make enchantment power use a smooth stepdown Should result in minimal changes to enchantment power in practice, but removes a use of the (supposedly) deprecated stepdown_value function, and also removes the cap of 120 on enchantment power, allowing spells with high power caps and a power boost (such as Agony and Enfeeble) to continue improving their success rate at very high skill levels. -------------------------------------------------------------------------------- 0dbd67afb6 | Kate | 2021-12-25 15:31:26 +0000 Add a new L7 Hex: Enfeeble Intended to give Hexes some more interesting utility to fill the gap between the powerful early stabbing spells and Discord at level 8, Enfeeble is a beam-targeted hex which irresistibly applies weakness and antimagic to a single foe (even against infinite willpower). The target is also dazed and blinded if they fail a willpower check (with a fairly substantial power bonus). -------------------------------------------------------------------------------- b25a51b929 | hellmonk | 2021-12-24 21:43:23 -0500 nerf Tukima's Studio This wizlab has like 3x the kill rate of the next most dangerous one. -------------------------------------------------------------------------------- 7c8fac35f0 | hellmonk3 | 2021-12-23 21:28:31 -0500 feat: Install some new plumbing Update old sewer maps to use best vaultmaking practices (randomized monster counts and placements, minimal hidden areas/spoilers). Reduce loot quality or quantity in most maps - this was buffed significantly when potion/scroll types got despoilered, so needs to come down somewhat. Additionally, add two exciting new sewer maps and re-weight all maps so that formerly rare ones are somewhat more common. -------------------------------------------------------------------------------- 826d19b2e0 | hellmonk3 | 2021-12-22 22:41:54 -0500 Add some assorted vaults feat. 1 (one) funny shop, 1 (one) funny transporter, and a few other things -------------------------------------------------------------------------------- 92def6ad0a | advil | 2021-12-22 17:47:50 -0500 build: add wtutil.py to the flake8 exclude list This is such a useless linter -------------------------------------------------------------------------------- a21510a5d8 | advil | 2021-12-22 17:29:43 -0500 feat: CLI interface for the dgl ban flag This can maybe be done already using the dgamelaunch-config tools, but it's useful to just have a simple interface built directly into the wlutil.py script. Resolves #1034 (together with the ^^ commit) -------------------------------------------------------------------------------- 45a336b667 | advil | 2021-12-22 15:21:08 -0500 feat: split off some webtiles cli stuff to a separate file This moves the commands for setting and resetting password tokens to a separate utility. (The underlying code is still part of webtiles.server, though, since all the setup stuff is there.) -------------------------------------------------------------------------------- 428f677eea | floraline | 2021-12-22 14:56:20 -0500 fix whitespace -------------------------------------------------------------------------------- 82aefee779 | floraline | 2021-12-22 14:56:20 -0500 Disallow user login when account has been banned DGL already supports banning user accounts via the user flags. Webtiles will now check this flag when testing password on user login. If the account is disabled, webtiles will not allow the user to log in. A message will be returned indicating that the account is disabled. -------------------------------------------------------------------------------- 270c432c18 | advil | 2021-12-22 14:54:57 -0500 fix: Restore #! line for server.py This got cut in 9b1d5c9715351a9bef3c. I'm not sure this should be an env call though? For the moment, keeping it unchanged. -------------------------------------------------------------------------------- a9037bb4c8 | advil | 2021-12-21 10:36:05 -0500 fix: fix some config defaults code * correctly check the bind options * fix handling of invalid recursive key checks -------------------------------------------------------------------------------- 59251e613b | advil | 2021-12-21 09:36:32 -0500 docs: update README.md, comments in config.py -------------------------------------------------------------------------------- 47ca6f2f2d | advil | 2021-12-21 09:36:32 -0500 fix: temporarily revert changes to client.html template This one gets me every time: templates update immediately even if the server hasn't yet restarted. So a pre-refactor server trying to load this template generates a 500 error because it doesn't have the new config API. This commit adds a shim that will work until servers have all restarted, and then it can be reverted. -------------------------------------------------------------------------------- 473480021d | advil | 2021-12-21 09:36:32 -0500 fix: correct a wrong config name -------------------------------------------------------------------------------- fb42bd042d | advil | 2021-12-21 09:36:32 -0500 fix: don't double webtiles --live-debug logging A logging call before `init_logging` results in doubled output, just push this check later. -------------------------------------------------------------------------------- 9b1d5c9715 | advil | 2021-12-21 09:36:32 -0500 refactor: move main server code into the webtiles package This was the last remaining chunk of webtiles code that was not inside the `webtiles` namespace. This commit moves it into a proper module, leaving the original non-package `server.py` as just a light wrapper on this module. -------------------------------------------------------------------------------- 65b1a8c667 | advil | 2021-12-21 09:36:32 -0500 refactor: move server.py This change apparently needs to happen in two steps so that the move is properly tracked in git history. -------------------------------------------------------------------------------- e20dd551ba | advil | 2021-12-21 09:36:32 -0500 docs: update placeholder README I originally put this file here just as a test of how DGL setups would handle subdirectories, but now that it has served its purpose, why not do something with it. This overview is pretty brief and high level, but as far as I know this kind of overview doesn't really exist anywhere else. -------------------------------------------------------------------------------- 2872ec6120 | advil | 2021-12-21 09:36:32 -0500 fix: acclimitize auth_test to `webtiles` * use package-anchored module names for mock * remove an unneeded mock for config -------------------------------------------------------------------------------- b939be1479 | advil | 2021-12-21 09:36:32 -0500 refactor: regularize the internal config api This wraps the server config module that is used as the repository for config info as if it were a dict-like. This would enable eventually just subbing in a dict (e.g. from yaml). In the short term it also makes the module have better behavior when no server config is provided. -------------------------------------------------------------------------------- c07941e8bc | advil | 2021-12-21 09:36:32 -0500 refactor: move webtiles defaults into webtiles.config Before there were occasional default values scattered around the code in get/getattr calls, in combination with things that are de facto defaults because no one has ever changed them. This collects the defaults in one place. I've aimed to leave uncommented in config.py only things one should or might want to change. -------------------------------------------------------------------------------- 0364767e1c | advil | 2021-12-21 09:36:32 -0500 fix: fix imports in tests This won't fully fix CI I think, because one of these tests needs config info that is now separated from the package; I'll fix that later. -------------------------------------------------------------------------------- 6b151ea7cb | advil | 2021-12-21 09:36:32 -0500 refactor: restructure webtiles into a package Previously, webtiles was just a loose collection of modules in the same directory. This restructures things so that everything but server.py and config.py form a proper python package. This has three main goals: 1. make the webtiles server code more encapsulated, and cleaner to load and interact with. This commit (to some degree) regularizes a lot of import statements. 2. short term: make it easier to dissociate config logic from config content. The `config.py` file in `webserver` is the same as before -- a python module with config settings for the webserver. The webtiles.config module on the other hand provides an api for getting config info that is abstracted from the python module that provides it. This can help clean up the handling of defaults, and pave the way for turning most of the old config.py into something like yaml, while retaining backwards compatibility. This could all have been done with a distinctly-named module in the same directory, but I think it is just a lot conceptually cleaner to do it in combination with 1. 3. long term: make it easier to swap out parts of the server code en masse by changing around package loading. This is aiming at a compatibility-preserving way of merging the dormant `webtiles-asyncio` branch. *Possibly* make it possible to version the webtiles server itself. This is a big change, and I've done only light testing so far, but in a local setup at least, everything is working. It may be that this commit will require a dgl change to merge (I'm not sure if subdirectories will be copied by default). -------------------------------------------------------------------------------- 76c8c3f4a7 | advil | 2021-12-21 09:36:32 -0500 fix: remove remaining import *s -------------------------------------------------------------------------------- 0243856f03 | Kate | 2021-12-21 01:29:26 +0000 Document mons_has_attacks behaviour Weird monsters with special zero-damage attacks like fire elementals and drowned souls are considered as having no attacks here which is very weird, but probably technically correct in the context of considering whether they should be able to be weakened or go berserk, so add a comment explaining it. -------------------------------------------------------------------------------- c6b4282bc0 | Edgar A. Bering IV | 2021-12-20 22:53:56 +0200 refactor: move Cantrip messaging to the monspell DB Instead of hard-coded strings plus some custom speech DB strings that got strange less-than-fully-featured handling. -------------------------------------------------------------------------------- 6bb796e56f | Edgar A. Bering IV | 2021-12-20 22:05:15 +0200 feat: leave Dissolution's prayers unanswered if Jiyva dies (11741) Dissolution is an incredibly devout follower of Jiyva, but not so devout to keep Jiyva alive alone without the Royal Jelly or the player as well. So, when Jiyva dies, this commit replaces Dissolution's eyeball summon with a cantrip and adds some custom casting messages for tragic flavour. [ Closes #2136 ] -------------------------------------------------------------------------------- a0fd31170c | Edgar A. Bering IV | 2021-12-20 20:39:51 +0200 fix: don't treat tentacles as separate monsters for yred (mdonais) This fixes both a funny piety bug and a serious crash-on-demand coming from kraken. -------------------------------------------------------------------------------- 948942c869 | Kate | 2021-12-20 18:15:36 +0000 Disable targeter for the staff of Battle's battlesphere (#2300) Closes #2300. -------------------------------------------------------------------------------- 2034e2a03a | Kate | 2021-12-20 18:00:33 +0000 Fix a Djinn mutation description -------------------------------------------------------------------------------- 75d13f451a | Kate | 2021-12-20 18:00:33 +0000 Improve wording of nimble swimmer mutation (#2295) Closes #2295. -------------------------------------------------------------------------------- 193881aaa2 | Nicholas Feinberg | 2021-12-19 17:12:51 -0800 Tweak Bind Soul description (🐙Mike) Move the important part (gotta kill the target before the mark expires!) before a bunch of fine print, and make other small tweaks, such as removing an overlooked 'enslave'. -------------------------------------------------------------------------------- e70e11bbaa | Nicholas Feinberg | 2021-12-19 16:36:57 -0800 Tweak Yred power description (🐙Mike) Try to clarify re raising the dead, etc. -------------------------------------------------------------------------------- c10b29e619 | Kate | 2021-12-19 23:39:51 +0000 Adjust Black Mark to only apply useful effects Instead of just randomly rolling for weakness, antimagic or draining when the mutation triggers, only select an effect that the defender is susceptible to. -------------------------------------------------------------------------------- bdd4f303c2 | Kate | 2021-12-19 23:39:51 +0000 Show when monsters are affected by antimagic Instead of having it be a hidden status effect, display it as a regular enchantment and give a message when it expires. -------------------------------------------------------------------------------- 1e6f1b2279 | advil | 2021-12-19 10:20:57 -0500 lint -------------------------------------------------------------------------------- ac32c9ce6f | advil | 2021-12-19 10:02:04 -0500 fix: make some prop types explicit Seems to be breaking the build on some compilers. -------------------------------------------------------------------------------- d731693074 | advil | 2021-12-19 09:43:41 -0500 feat: (g)o to location in item descriptions This seems like a fairly natural thing to have in this popup; already available via many other means of course, but you had to jump through various hoops to get to it from an item description depending on where the popup came from. -------------------------------------------------------------------------------- ef9e1dbd39 | Nicholas Feinberg | 2021-12-18 14:23:50 -0800 Fix Slouch stop attack prompt Don't ask "Really harm near your goblin?" -------------------------------------------------------------------------------- a495bdf9d0 | robertxgray | 2021-12-18 22:36:17 +0100 Configure GitHub Actions for Android -------------------------------------------------------------------------------- 582babd7fa | advil | 2021-12-18 12:56:47 -0500 feat: in ctrl-x list, indicate items at player's position The behavior of the full view menu for this case is somewhat confusing: by default a left click travels to the item's position, so nothing happens when a player clicks on an item in the menu at their position. I think a more major refactor of this menu might be helpful (not sure exactly what), but this commit tries to very slightly smooth over the case by marking which items are at the player's position explicitly. -------------------------------------------------------------------------------- ce354f50cf | advil | 2021-12-18 12:56:47 -0500 fix: enable describe actions for item stacks d40668a25 worked only on stacks of 1, because that was the only case where the describe popup got access to the "real" item that was on the floor. This commit expands things out so that for stacks of items if they are at the player's feet, the real item is used all the way along the chain. There was some required const munging that is not so great (though there's a lot of code that did not seem like it should actually be using const item_def * -- I started to work through this but the domino effect made me back up.) This commit also makes describe actions work for items in the full view describe that are at the player's feet. -------------------------------------------------------------------------------- 6159c76d74 | advil | 2021-12-18 12:56:46 -0500 feat: add (g)et as a describe action -------------------------------------------------------------------------------- bf359695bc | Nicholas Feinberg | 2021-12-18 09:25:21 -0800 Make the undead unpruneifiable Since they can't transform, right..? -------------------------------------------------------------------------------- 11349e6732 | Nicholas Feinberg | 2021-12-18 08:50:25 -0800 Rework the glaive of Prune (perryprog) The glaive of Prune has, for many years, had exactly one unique mechanical feature: being hated by Zin. Let's add something slightly more meaningful. Whenever the glaive's wielder is paralysed, petrified, or KO'd, they'll be overcome with the curse of the Prune, transforming into a giant prune. This makes the player so squishy that they're hard to injure, making them take half damage until the paralysis/etc ends. N.b.: probably this shouldn't affect the undead? -------------------------------------------------------------------------------- 876f0bc6b4 | Nicholas Feinberg | 2021-12-18 07:51:21 -0800 Manually add a throwaway gag (flappity) -------------------------------------------------------------------------------- 3f01f628eb | Edgar A. Bering IV | 2021-12-18 15:01:56 +0200 docs: add Gopall to credits -------------------------------------------------------------------------------- ed7a1ca826 | Edgar A. Bering IV | 2021-12-18 15:01:14 +0200 docs: changelog through 0.28-a0-1190-g77e1c55 -------------------------------------------------------------------------------- 77e1c55843 | advil | 2021-12-17 11:45:24 -0500 feat: use Goratrix's main menu tile in the action panel -------------------------------------------------------------------------------- 03e5d3d3bf | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 refactor: combine code for drawing item glyphs and panel actions (advil) Both `draw_action()` and `draw_item_glyph()` have the same code for drawing quantities and highlighting actions, so it makes sense to combine them into a single function. Also, add a few TODO comments for future improvements. -------------------------------------------------------------------------------- 013d6de2c3 | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 feat: don't hide the action panel unless it is explicitly disabled Since the panel always has at least one action now, it should be permanently visible unless disabled by configuration. -------------------------------------------------------------------------------- 5f2c673282 | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 feat: add a main menu button to the action panel (PleasingFungus) With a main menu button on the action panel, it should be easier for players to discover the macro editor, lookup-help menu, and other tools and commands. -------------------------------------------------------------------------------- e4c47cc41c | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 refactor: add helper functions for drawing panel actions The code for drawing actions and item glyphs is a bit complex, so it's better to split it up into separate functions. Also, we drew an item glyph and the cursor for some items twice. This happened if an item had a base tile and a brand icon. Fix this and simplify handling of `adjusted_scale`. -------------------------------------------------------------------------------- 4dc111b8cc | Goratrix | 2021-12-17 11:04:33 -0500 Tweak tile for game menu button on local tiles Commit 6a8ace0 added the game menu button to local tiles using a placeholder tile, this updates the tile to have the correct button frame. -------------------------------------------------------------------------------- 53156a8862 | Kate | 2021-12-17 02:17:16 +0000 Adjust messaging for monsters dropping wands on death To make it a little more succinct. -------------------------------------------------------------------------------- 2b4b0b1879 | Kate | 2021-12-16 23:26:30 +0000 Prevent self-healing abilities under DDoor They had no effect, but could waste max MP (as a Deep Dwarf) or piety (as an Elyvilon worshipper who abandoned to cast DDoor and then reconverted with DDoor active and enough saved piety to still activate Heal Self). -------------------------------------------------------------------------------- 381e24db82 | Nicholas Feinberg | 2021-12-15 22:08:27 -0800 Add an 'unaffected by silence' status A very common error for newer players is to try to silence demons and then to be confused about how they cast anyway. Adding a status that describes them as 'unaffected by silence' might help? -------------------------------------------------------------------------------- ba1fe864d9 | Nicholas Feinberg | 2021-12-15 21:51:18 -0800 Shift fire champion's display ordering -------------------------------------------------------------------------------- 586d44308f | Nicholas Feinberg | 2021-12-15 21:47:24 -0800 Buff infusion These felt a bit worse to me than I expected. Costing 2 MP per hit really burns through your pool startlingly fast, and results in a lot of resting. Let's try it at 1 MP per hit and see if it still feels like a significant cost. The Mad Mage's Maulers are unaffected. -------------------------------------------------------------------------------- e3c729c085 | Nicholas Feinberg | 2021-12-15 21:41:37 -0800 REVERTME: Make infusion gloves very common So that we can actually test this. Roll this back before 0.28's release. -------------------------------------------------------------------------------- 3097664d63 | Nicholas Feinberg | 2021-12-15 21:32:05 -0800 Increase the rat rate Changing the ratskin cloak from +Rats to *Rats may have left it somewhat undertuned. Increase the rat rate by 50% to compensate. -------------------------------------------------------------------------------- 7ef81e1a51 | Nicholas Feinberg | 2021-12-15 21:30:22 -0800 Add default values for monster spell slots Rather than requiring a full specification (spells:fireball.200.wizard...), allow just naming a spell and default to some plausible frequency and casting type values. -------------------------------------------------------------------------------- 0bdaba56fc | Nicholas Feinberg | 2021-12-15 21:30:22 -0800 Discover traps Don't claim that &Tzot will "mark it undiscovered". -------------------------------------------------------------------------------- d6bfa8a262 | Nicholas Feinberg | 2021-12-15 21:30:22 -0800 Zot! (Sastreii) New Zot trap tile. -------------------------------------------------------------------------------- 766a6a42ef | advil | 2021-12-15 21:23:11 -0500 doc: tweak some comments The return values here are not very obvious, document and make the comments consistent. -------------------------------------------------------------------------------- 38569e0721 | Kate | 2021-12-16 02:02:35 +0000 Fix a return value -------------------------------------------------------------------------------- 90128a5531 | Oneirical | 2021-12-16 02:02:14 +0000 Ban Jiyva from Thunderdome, replace Teleport Self with Blink Away Jiyva now uses exploration piety so doesn't function in arenasprint, and Teleport Self has been removed. [Committer's note - updated commit message, and kept Fedhas as enabled. Closes #2293] -------------------------------------------------------------------------------- bbd083314f | Kate | 2021-12-16 00:50:52 +0000 Make Yara's Violent Unravelling smite-targeted Along similar lines to Inner Flame and its recent change, Unravelling is a fun hex spell with some good utility, but is often quite fiddly to make effective use of. Change it to also be smite-targeted, allowing more precise enchantment/summon removal without the chance of a non-enchanted creature blocking the beam and making it ineffective. -------------------------------------------------------------------------------- f21496c7a1 | Kate | 2021-12-16 00:24:28 +0000 Shorten some new welcome messages To fit on a single console line. -------------------------------------------------------------------------------- e8bcaa7831 | Kate | 2021-12-16 00:02:48 +0000 Remove an unnecessary prompt The dreamshard necklace as implemented doesn't have any problem interacting with DDoor - the player will be invincible as expected while the spell is active, and then once it expires the necklace works as normal to save them if required. -------------------------------------------------------------------------------- c1efb617dc | Kate | 2021-12-16 00:02:48 +0000 Remove a duplicate canned message -------------------------------------------------------------------------------- 616b1c6417 | advil | 2021-12-15 14:40:31 -0500 lint -------------------------------------------------------------------------------- a718ce6c6e | Nicholas Feinberg | 2021-12-15 11:14:23 -0800 Lighten hands (kate) Continue a policy of strategic ambiguity wrt the purpose & uses of the Orb of Zot. -------------------------------------------------------------------------------- d40668a259 | advil | 2021-12-15 13:57:14 -0500 feat: read/quaff floor items from description Pretty straightforward change except that it was slightly tricky to get the right item to use. In the course of this I also refactored some of the switch statements and generalized the quiver check -- you can quiver from the description anything that is normally quiverable, rather than using an item by item check. This required a somewhat ugly hack to keep (q)uiver and (q)uaff from colliding, point even more towards the need to overhaul this code in a more structured way. -------------------------------------------------------------------------------- f8141789e4 | advil | 2021-12-15 13:57:14 -0500 feat: feature description tweaks * Show "you are here" if the player is at the position being examined. For now this is only on feature descriptions, but I have long wanted to add something like this for accessibility reasons. * Simplify some redundant feature decriptions. This was already done on the js side (I haven't removed that code, but possibly it is now removable if this one remains bug-free). * Improve door long descriptions. This mentions open/closed state, which is redundant, but felt odd not to include. It also explicitly mentions the door breaking mechanic. -------------------------------------------------------------------------------- 96c0fc9bb0 | advil | 2021-12-15 13:57:14 -0500 feat: tweak describe item actions order This is aimed at getting the "main" thing you do with various item types first, and the stable things across many item types last. (Previously, the latter were mostly first, and the order of the former was somewhat variable.) -------------------------------------------------------------------------------- 39b20cf4d7 | Nicholas Feinberg | 2021-12-15 10:24:05 -0800 Ignis flavor tweaks - Put its message before the 'you have escaped'. The latter is iconic and should always be last. - No messaging for escaping without the orb with Ignis - it won't come up often & doesn't really add much. -------------------------------------------------------------------------------- cb000ee472 | Edgar A. Bering IV | 2021-12-15 20:17:44 +0200 feat: some Ignis lore messaging (Wandering Mushroom) -------------------------------------------------------------------------------- 933dd556d1 | Edgar A. Bering IV | 2021-12-15 20:10:45 +0200 fix: lower the cost of Yred recall It didn't survive its tweak in the rebase, oops. -------------------------------------------------------------------------------- 27aa881441 | advil | 2021-12-14 17:22:12 -0500 fix: relax the conditions for `X]`/`X[` (elliptic) These got overly tightened in 5bd2f0ac44. -------------------------------------------------------------------------------- 93145404a5 | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: silence library messages during newgame creation (kate) -------------------------------------------------------------------------------- 43c36bbe99 | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: don't announce empty wanderer inventories -------------------------------------------------------------------------------- 805a0a0067 | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: remove some dead book code from ng-setup -------------------------------------------------------------------------------- c9877f665c | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: don't fall back to a kite shield inappropriately at newgame -------------------------------------------------------------------------------- a95d5098ad | hellmonk | 2021-12-14 22:17:31 +0200 feat: invert the wanderer paradigm Wn is a really cool "random start" option, but has a couple annoyances. You can get some truly awful starts due to the way skill points are assigned, and are basically guaranteed to have awful stats due to the way stat points are assigned. This commit tries to rectify those problems and adds some new things that Wn can get at game start. The new model assigns the equipment first, based entirely on species apts, then assigns stats and skills afterward depending on what we got. It tends to lead to more lopsided (ie useful) stat distributions and higher levels of skill in things that are useful, though these are by no means guaranteed. Along with changing the model this commit makes the following adjustments to Wn starting equipment, offering a wider mix of cool things: - "good weapon" can get an upgraded base type or vorpal brand instead of enchant - "good armour" can roll chain instead of +2 scale, and gives acid scales for non-chain users - "good shield" now rolls an enchanted buckler or prot buckler, instead of a kite shield - "good magic school" rolls a 3-spell randbook instead of a background starting book - "good spellcasting" rolls a 4-spell any-school randbook (capped at level 3) - "good stealth" can give either a +2 dagger and a consumable or a plain dagger and a mix of atropa and datura darts - "decent armour" can role chain or ring, with a plain aux armour for odd shapes (all scales and tla are too strong for decent items) - "decent dodging" and "decent stealth" can give an aux armour if a good armour wasn't received - "decent fighting" can give an extra weapon plus if a weapon is available - it is possible to start with a hunting sling and sling skill - throwing can start with boomerangs - it is possible to get aux armour (and likely for oddly shaped species) - a wider variety of potions and scrolls can be rolled - a wider variety of evocables can be rolled - Wn that start with sandblast also start with stones [ Committer's notes: Thanks to gammafunk, kate, and PleasingFungus for input in this overhaul. ] -------------------------------------------------------------------------------- f74599e7d4 | Edgar A. Bering IV | 2021-12-14 11:22:38 +0200 text: quotes for Chei abilities This might be gratuitous and I don't care -------------------------------------------------------------------------------- 9c71ebef14 | Nicholas Feinberg | 2021-12-13 20:44:56 -0800 Store polar vortex power on cast We historically didn't do that to discourage, say, wielding a staff of ice, casting the spell, and then unwielding the staff to do something else. But... usually if you're casting a level 9 ice spell, you sort of want to have ice enhancers for other things (eg ozo's fridge), and the un-stored power system encourages other silly swaps - eg start with a ring of wizardry to get vortex castable, then swap to =ice once it was running. Anyway, not storing power meant that using exegesis on vortex was a nasty player trap. Now that's fixed! -------------------------------------------------------------------------------- 59a505c739 | Nicholas Feinberg | 2021-12-13 20:24:43 -0800 Beef up ironbound thunderhulks Even as mid-tier enemies, thunderhulks were generally considered to be somewhat underwhelming threats. So, increase their HD by 50% to increase the accuracy and damage of their Call Down Lightning (damage from 3d21 to 3d26, accuracy from 19 to 21). Also give them Blink Range so that they eventually get a chance to re-distance themselves after getting too close to the player, similar to boulder beetles. -------------------------------------------------------------------------------- ef4b3a621b | Nicholas Feinberg | 2021-12-13 20:15:18 -0800 Fix Fire Storm damage display (elliptic) A weird ancient hack (3a4159644bb83, greensnark, 2008) was causing displayed damage (in xv, etc) to be twice actual damage. Now fixed. -------------------------------------------------------------------------------- 286b55035a | Nicholas Feinberg | 2021-12-13 20:12:48 -0800 Clarify Fiery Armour desc Be explicit about the +AC. -------------------------------------------------------------------------------- ec31e34405 | Nicholas Feinberg | 2021-12-13 20:10:41 -0800 Make two sudden removals The teleportatis exploration trap message used "suddenly" three times in a row. It was a bit much. -------------------------------------------------------------------------------- c7b72d3202 | gammafunk | 2021-12-13 14:58:16 -0600 fix: Update loot potion weights (darkwolf811) The list dgn.loot_potions is supposed to have weights adding up to 100, but this was broken f55cbd34. Adjust the entries appropriately so we total to 100 again. -------------------------------------------------------------------------------- 0f060c364e | advil | 2021-12-13 12:18:53 -0500 feat: no exiting popups via mouse with mouse control disabled Disabling this for now because of complaints. I'm not sure if this is really a good idea, this strikes me as the sort of thing where if this had always existed, no one would be asking me to remove it. -------------------------------------------------------------------------------- 5bd2f0ac44 | advil | 2021-12-13 12:18:53 -0500 feat: add key hints and hotkeys to feature descriptions Also, add clicking to webtiles, with some other misc description enhancements. This turned out to be a mess of special cases, many of which I've probably still missed. The commands that are supported are up, down, open, close, and some shortcuts that go directly to the map view for the other side of explored staircases. Bugfixes: correctly handle unseen tiles with webtiles right click; fix a subtle ordering issue in description hotkey handling. -------------------------------------------------------------------------------- c91ac77a38 | advil | 2021-12-13 12:18:53 -0500 fix: don't crash when right clicking out of bounds Probably webtiles specific. -------------------------------------------------------------------------------- cf6077d4cc | Kate | 2021-12-12 21:14:02 +0000 Tweak wording of autumn katana description For consistency with other DESCRIP lines. -------------------------------------------------------------------------------- c8569940dd | Edgar A. Bering IV | 2021-12-12 23:08:30 +0200 fix: remove some leftover code -------------------------------------------------------------------------------- 5f824d10e6 | sdynet | 2021-12-12 23:06:02 +0200 Rework the autumn katana Now, the sword sometimes uses manifold assault when attacking an enemy, instead of having clarity. Due to issues of setting time_taken and preventing re-entry the katana duplicates some of the functionality of cast_manifold_assault instead of simply re-using the function. However! There are two great upsides to this implementation: monsters can use the katana (no special flag) and players can use it with manifold assault to get one layer of recursion (and a rare message). [ Committer's note: Rewrote the artefact function, tweaked the implementation, revised the commit message. Closes #2234 ] -------------------------------------------------------------------------------- dee3398930 | advil | 2021-12-12 14:55:11 -0500 fix: add explicit styling for action panel settings For most players this is just minor color / spacing tweaks. But, it's come to my attention that CWZ loads bootstrap, and bootstrap's css is impacting the action panel quite badly. This commit should undo the most egregious aspects of this, though it's a bit hard to test directly. (Don't get me wrong, tossing bootstrap on top of webtiles is super double plus unrecommended, likely to lead to any number of subtle unpredictable rendering glitches, and by providing a workaround for these particular fairly major ones I in no way endorse doing webtiles+bootstrap...) -------------------------------------------------------------------------------- 386a16afc0 | advil | 2021-12-12 10:30:58 -0500 feat: click to close webtiles popups Previously, there was no way to escape a popup with a mouse(!). This commit adopts the local tiles approach, where clicking outside of a popup exits the popup. Unlike local tiles, both left or right clicking will work; in local tiles it's only right click. Possibly both clients should be standardized to use one or the other. -------------------------------------------------------------------------------- ff41af4bb9 | hedk3 | 2021-12-12 10:49:17 +0200 fix: more Storm Form hand naming [ Committer's note: fixed to compile correctly and unbraced. Closes #2290 ] -------------------------------------------------------------------------------- 4ce00ec954 | Edgar A. Bering IV | 2021-12-12 10:35:37 +0200 docs: update the CREDITS -------------------------------------------------------------------------------- 8fc9a925bb | Edgar A. Bering IV | 2021-12-12 10:11:16 +0200 feat: revise the ring of the Mage The ring of the Mage was a not-super exciting Wiz ring with light bonuses. In keeping with the "good or interesting" unrand revision paradigm, this commit revises the ring of the Mage to be a Wiz/Archmagi ring. Archmagi on an easty to swap slot might raise some eyebrows, but it is no worse than enhancer swapping. The hope is that this item might convince some more hybridization, helping make up for both the penalty of heavy armour and the lack of intelligence of heavy armour users. Of course, it'll also be an exciting find for any spellcaster who has body slot Archmagi, thanks to the stacking change. Boom pow! XXX: The _resist_composer in output.cc assumes that resists with a max of < 5 should get spacing, if it becomes possible to get 3 pips of Archmagi this will cause display issues % on console. -------------------------------------------------------------------------------- e886f3e13f | Edgar A. Bering IV | 2021-12-12 10:09:28 +0200 feat: archmagi stacking Currently the only sources of archmagi are body armour and a save-transferred hat of the high council. However, adding more archmagi sources has been discussed in a couple of development spitballs and the expectation in all of these conversations is that archmagi stacks. This commit alines expectation and reality. -------------------------------------------------------------------------------- 151b4aef40 | Edgar A. Bering IV | 2021-12-12 10:09:17 +0200 fix: archmagi handling in util/art_data.pl -------------------------------------------------------------------------------- 468af4c5fd | Edgar A. Bering IV | 2021-12-12 09:31:54 +0200 fix: remove a Tar teleport closet Closes #2291 -------------------------------------------------------------------------------- 87f88a2ef8 | Edgar A. Bering IV | 2021-12-12 09:24:06 +0200 Revert "fix: don't force picking up of newly IDd equipment" This reverts commit f5e35ccd160c657ff46174990fc3fe4e97655484. As implemented it did not have the correct behavior, and was still incorrect after 99a87601b6. Discussion with players revealed there are many users who expect autopickup to make its "should pick up decision" on an item when it comes into view, while others would like their autopickup options applied with respect to the item post-floor-identification. So I'm reverting this to the behavior before f5e35ccd: an item will be autopickedup if it meets the user's autopickup preferences before it is floor-identified. The correct solution here is to add a boolean game option that is checked before setting NEED_AUTOPICKUP_KEY in the relevant lines (the ones modified by this commit). -------------------------------------------------------------------------------- 8cf3085ebe | Edgar A. Bering IV | 2021-12-12 09:24:06 +0200 fix: don't crash on deathbed conversions Closes #2289 -------------------------------------------------------------------------------- c51a68064b | Kate | 2021-12-11 21:51:33 +0000 Add a missing canned message to Shaft Self prompt -------------------------------------------------------------------------------- a6bf8c0b4a | Kate | 2021-12-11 21:51:32 +0000 Let Yara's Unravelling turn summons into explosions (Undo) Yara's is a fairly situational spell, so to give it some slightly wider utility, allow it to also be cast on summoned monsters, unravelling the magic that summoned them and killing them immediately. This allows it to be used as a form of single-target abjuration that can additionally damage the summoner with the resulting explosion. -------------------------------------------------------------------------------- b845255321 | gammafunk | 2021-12-11 14:30:48 -0600 fix: Correctly handle classed objstat averages For the classed averages of charges and enchantment, use the correct count when averaging according to classes of "Vault", "Shop", and "Mons" for items in vaults/shops/held by monsters. -------------------------------------------------------------------------------- 64c176eb70 | advil | 2021-12-11 14:48:53 -0500 feat: expand out webtiles mouse control Webtiles mouse control has always been a bit of an incomplete feature; I think edlothiol only barely started on this in 2012 in 52f5b20b692aa, which was (afaict) his last commit. No one else has tried to fix this up since. This commit fills out the feature set a bit. Previously, you could use left click to move and attack in command mode, and there was a minimal tooltip for monsters, and that's it. This commit adds: 1. right click to describe in regular view, targeting view, and map mode. 2. left click to fire in targeting mode. (Or other behaviors, e.g. in `x` this triggers autotravel.) 3. synchronization of a targeting ray with the mouse cursor position. This is probably the dodgiest feature in that (a) it may run into issues with latency (it's handled on the server side) and (b) it may make it too easy to misclick. The implementation follows local tiles but I wonder if this would be better with something like, click to select target, click again to fire. (Also, this was rather involved to implement as it revealed a subtle bug in the direction chooser.) 4. Slightly less minimal tooltips. This only shows tooltips for monsters still, because it's a bit constrained by what info there is on the client side, and constantly doing popups with just the click hints was pretty annoying in my testing. One departure from local tiles: mousing over a square out of view doesn't affect the currently set ray. I found this a lot more natural and it works better with mousing from an object in the action panel to the targeting range (which almost always involves crossing out-of-los squares). Possibly this should be ported to local tiles. As before, all of this stuff is entirely disabled with `tile_web_mouse_control = false`. -------------------------------------------------------------------------------- 29f2d0b5fe | gammafunk | 2021-12-11 13:26:29 -0600 feat: Update briar patch and bush logic Currently, both bushes and briar patches allow projectiles and non-piercing magical beams to pass through, but get hit by enchantments and piercing or exploding beams. Although these rules are documented, they aren't intuitive and their complexity doesn't to interesting decisions. This commit simplifies the rules to allow pass-through to apply to all kinds of beams, be they enchantment, exploding, piercing, or non-piercing. Thus if a monster is shooting you behind a bush with whatever beam, you can shoot back with whatever beam. Bush and briars can still be targeted directly to prevent pass-through for any type of beam. We also remove specific exceptions for ranged and non-ranged sticky flame pass-through, since again this distinction is vanishingly rare in practice. Finally, we remove an unused exception for Chain Lightning as well, since it's not necessary for that spell to function properly. For briar patches, we improve their logic so pass through beams only if the actor is aligned with the briar. They intercept beams fired by a non-aligned actor like a normal monster would. This means that thorn hunters can fire through their briars, but the player's beams through these briars will be intercepted. This helps the briar patch to be a more effective anti-player-ranged barrier. For player-created briar patches under Fedhas, briars now block all incoming beams from hostile monsters like the player would expect. Monster descriptions for bushes and briar patches are updated to describe the new logic. -------------------------------------------------------------------------------- f48e6d8fb1 | amcnicky | 2021-12-11 20:06:22 +0200 feat: new unrand artefact: dreamshard necklace The dreamshard necklace is an amulet of nothing that for the most part does nothing. However, on a lethal or near-leathal blow the necklace shatters, absorbing the blow and releasing protective dreams of healing (a big heal, between half and full HP), friendship (shadow creatures), and clouds (fog). That is, the player gets to trade their amulet slot (with its many powerful effects) for a one-time-get-out-of-death-free card. [ Committer's note: Simplified the shattering effect significantly, re-factored the trigger logic to be simpler, moved the dreamshard effect to spl-goditem, reduced the visuals to a single flash (no permanent tile changes), implemented Ashenzari and Death's Door checks. Thanks to kate and PleasingFungus for input in the PR process. Closes #2078. ] -------------------------------------------------------------------------------- 12f55c057d | Edgar A. Bering IV | 2021-12-11 19:23:03 +0200 fix: finish an old todo in player::heal -------------------------------------------------------------------------------- 17253bc447 | robertxgray | 2021-12-11 12:54:53 +0100 Merge branch 'master-upstream' -------------------------------------------------------------------------------- 397d20460d | mgdelmonte | 2021-12-11 11:08:11 +0200 feat: add travel trail functions to clua Adds `travel.clear_travel_trail` and `travel.set_travel_trail` functions, allowing clua control over the travel trail. This purely visual feature can enable some nice generated visualizations, without affecting gameplay. [ Committer's note: Closes #2273. ] -------------------------------------------------------------------------------- 376ce86db5 | mgdelmonte | 2021-12-11 10:58:57 +0200 feat: add optional weapon argument to monsterinfo.target_weapon Adds an optional `weapon` argument to the Lua `monsterinfo.target_weapon` function. If `weapon` is omitted, it shows the targeting description accompanying an unarmed attack. If `weapon` is provided, it shows the targeting description for an attack with that weapon. This changes usage of the function slightly (formerly, the function returned only the description for your current weapon), but the function is new in this trunk cycle. [ Committer's note: Tweaked to also resolve a TODO in describe.cc. Closes #2275 ] -------------------------------------------------------------------------------- 9993a5020f | mgdelmonte | 2021-12-11 10:51:22 +0200 feat: add you.known_items clua function This exposes the list of known, identifiable subtypes to Lua. It's the same list as given by the `\` "display known objects" command, minus the unknowns. Without this, it's impossible to know (within Lua), that one has already seen a particular kind of potion or scroll. [ Committer's note: Squashed and clarified docstring. Closes #2286 ] -------------------------------------------------------------------------------- 31a25a4635 | mgdelmonte | 2021-12-11 10:30:17 +0200 fix: don't treat range 1 spells as "ranged" in mons_has_ranged_spell Range 1 spells like Freeze aren't really ranged spells, for the purpose of this function. [ Committer's note: Closes #2279 ] -------------------------------------------------------------------------------- ea0b6819f9 | mgdelmonte | 2021-12-11 10:14:27 +0200 feat: add can_traverse to clua monsterinfo Adds `can_traverse(x,y)` function to the clua monsterinfo object. Returns true if the monster can traverse (actually, occupy) the cell at x,y coordinates. Helpful for deciding where monsters might move. [ Committer's note: Closes #2274 ] -------------------------------------------------------------------------------- 398d93cfb8 | Brian Power | 2021-12-11 10:12:25 +0200 fix: add missing args for lua print_hint() [ Committer's note: Closes #2247 ] -------------------------------------------------------------------------------- 0bdd5ba030 | advil | 2021-12-10 21:04:28 -0500 fix: don't rest forever when divine vigour ends (ardl) If divine vigour ends while resting, bringing the player to full health, the delay would not end on its own, because the delay end condition was apparently only checked when increasing hp or mp. (I thought the delay was also supposed to check, but it seems I've been misreading this could. Possibly this would be a lot more robust than what we're doing now...) For most players this doesn't matter, because the divine vigour end message interrupts the delay. But any player who has something like `runrest_ignore_message += pray:` can trigger the bug. (Thanks to ardl for his ...involved rc, I got some good bisecting practice to find the interaction.) To fix this, this commit adds a check to calc_hp on top of inc_hp, which should also cover any similar cases that have so far been missed. Also, some cleanup of resting checks to be more uniform. -------------------------------------------------------------------------------- 2df8497881 | nicolae-carpathia | 2021-12-10 19:33:30 -0500 Make nicolae_danse_macabre slightly less macabre After comments, toned down a bit in D and Elf, by adding runed doors and also using less demon weapons in D. -------------------------------------------------------------------------------- fd376f2b2f | advil | 2021-12-10 18:15:15 -0500 lint: checkwhite (Odd thing for checkwhite to be enforcing, maybe a bug?) -------------------------------------------------------------------------------- 8eb0198dcf | advil | 2021-12-10 17:54:37 -0500 fix: handle multi-word actions in webtiles item descriptions Previous implementation made wrong assumptions about what actions there could be; instead of trying to generalize this commit just brute-forces the handling of a final "or". -------------------------------------------------------------------------------- 52f9137b40 | advil | 2021-12-10 17:28:42 -0500 fix: make webtiles ui push bugs less disastrous Two related issues: * If the menu state gets out of sync with the webtiles ui state, don't bring down the whole client (this could happen in `menu_key*_handler` if `menu` was set but `ui.top_popup()` returns null or undefined). * If there is a crash in a ui handler, show a buggy div rather than do nothing, to head off one way that the game's menu state and webtiles ui can actually get out of sync. This will also make it a bit clearer to the user they are seeing a bug that they could report. -------------------------------------------------------------------------------- 2d15a92f8c | robertxgray | 2021-12-10 21:42:51 +0100 Android: Include < and > in numeric keyboard This is a user request for searching stairs in map mode. They replace - and + which are available in the main keyboard. -------------------------------------------------------------------------------- 5c4f51bb93 | advil | 2021-12-10 15:28:19 -0500 fix: don't crash on `(t)ake off` This won't render quite right, but this commit should fix the javascript crash. -------------------------------------------------------------------------------- 1608afb2e1 | Edgar A. Bering IV | 2021-12-10 22:04:00 +0200 fix: don't treat all delays as frozen time -------------------------------------------------------------------------------- 97e41b5463 | Kate | 2021-12-10 19:49:04 +0000 Update some tests Remove obsolete items/egos from test character setups. This was only from a very cursory glance over the tests, and they likely could use some further attention (especially poor qw). -------------------------------------------------------------------------------- 76092dafaf | Edgar A. Bering IV | 2021-12-10 21:28:39 +0200 fix: don't crash when reaping with zonguldruk or chaos The refactor to work like the rest of corpse exploitation got lost in rebasing new Yred, oops. -------------------------------------------------------------------------------- f17af53183 | Edgar A. Bering IV | 2021-12-10 19:23:15 +0200 fix: the build -------------------------------------------------------------------------------- 6ce92f56ac | ArmiesAndCastles | 2021-12-10 19:03:35 +0200 feat: improve wizmode freeze time This commit keeps time frozen during autoexplore and forbids resting (since HP will not be recovered). [ Committer's note: Squashed and rebased, blocked the rest command completely. Closes #2206 Closes #2205 ] -------------------------------------------------------------------------------- a90572a584 | advil | 2021-12-10 11:39:59 -0500 feat: clicking for inventory item actions One thing the action panel has revealed is how minimally implemented clicking is in the webtiles UI. I realize that lots of advanced players are perfectly fine with never using a mouse, but allowing it makes things easier for newer players who aren't used to huge keybindings. This commit enables clicking on the actions in an item description popup (which is one of my first targets for this kind of change because it's so obviously missing when you right click from the action panel). The implementation is entirely client-side: it converts any strings like "e(v)oke" into a span with the `data-hotkey` attribute set to the hotkey in parens. This might be described as hacky (perhaps sending structured action data from the server would be better), but it was really easy to implement and actually seems pretty robust/useful. Part of the trick was that someone (aidanh I assume) has previously implemented an amazing thing where if you just set this data attribute, an on click handler magically springs into existence that sends the hotkey. -------------------------------------------------------------------------------- 39a6f95271 | Aliscans | 2021-12-10 18:39:39 +0200 feat: use modifier prefix keys in the direction chooser /+direction and shift+direction are valid combinations for the "long walk" command. Shift+direction is a valid combination for "fire in a direction", with direction+! as an alternative, but having /+direction do the same should make it easier to remember. Ctrl+X and Ctrl+P are both valid inputs to the direction chooser and common browser hotkeys, this commit also allows *X and *P as alternatives. Put ' and ; before * and / in targeting_help_1, as the above change means the latter keys are used as modifiers if use_modifier_prefix_keys is set (the default). In unmangle_direction_keys(), only let * modify characters which CONTROL() maps to \x00-\x1F. In particular, this means that ** is *, giving a work-around for people who use the default settings but are used to * and / cycling through objects. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 0997d3a168 | ArmiesAndCastles | 2021-12-10 18:00:45 +0200 feat: add awoken forest attitude indicator to xv [ Committer's note: fixed bracing style, Closes #2204 ] -------------------------------------------------------------------------------- 99a87601b6 | Edgar A. Bering IV | 2021-12-10 16:44:21 +0200 fix: use identify_item when deciding autopickup information -------------------------------------------------------------------------------- f5e35ccd16 | Perry Fraser | 2021-12-10 16:24:55 +0200 fix: don't force picking up of newly IDd equipment This just re-uses the logic that was being used for wands, which also avoids the edge-case where if you floor-id something without using autopickup triggering (like when AP is disabled) then it was possible to have the item ID'd, marked as don't-pickup in `\`, and still picked up due to NEEDS_AUTOPICKUP_KEY set in its props. The old code that led to this logic seems to imply there was an intentional hack for "previously-unknown items", but in testing, I found no unexpected behavior with the new version. -------------------------------------------------------------------------------- c8cd538e2d | Edgar A. Bering IV | 2021-12-10 16:06:36 +0200 lint: checkwhite -------------------------------------------------------------------------------- 6a268ab339 | Gopall | 2021-12-10 16:04:24 +0200 feat: prompt when wearing faith Trying to remove an amulet of faith (while worshipping a deity that cares about it) would trigger a confirmation to confirm your choice. But there wasn't any confirmation like that for when you tried to put it on. So I added a bit of code to a function so the game would ask the player if they were sure they wanted to wear an amulet of faith. [ Committer's note: There was some discussion among the devteam as to whether or not this prompt is necessary or if auto inscriptions can implement the desired functionality (autoinscribing faith with !P to force a prompt). I'm merging this for consistency and because this prompt protects new players who are exactly the ones who won't have autoinscriptions set up. ] -------------------------------------------------------------------------------- 9766e9d42a | ArmiesAndCastles | 2021-12-10 15:55:55 +0200 fix: forbid temporary form lava exploration Closes #1975 -------------------------------------------------------------------------------- 27af8a720d | EdDewey | 2021-12-10 15:55:05 +0200 fix: only ask barachi for confirmation once when they hop -------------------------------------------------------------------------------- 88f0ff19eb | Nikolai Lavsky | 2021-12-10 15:29:25 +0200 feat: allow checking if there is enough space for Malign Gateway This commit disables the spell in the quiver and z/Z menu when there is not enough space to open a gateway. -------------------------------------------------------------------------------- 2bfde531ef | Perry Fraser | 2021-12-10 15:23:54 +0200 fix: correct levdes.vim comment syntax highlighting Seems to have been introduced as a typo in 763bd81. -------------------------------------------------------------------------------- 9d8ee82f23 | Aliscans | 2021-12-10 15:14:55 +0200 feat: state when a terrain blocks movement, but not reaching or magic State in the description when a terrain blocks movement, but doesn't restrict reaching weapons or LOS_NO_TRANS spells. At present, the former covers orcish idols, granite statues and malign gateways (the last only shows a description before the tentacle appears), and the latter also covers grates. This knowledge could be useful for (e.g.) cheibrodos_spider_deadly_dance. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 5bfae530bd | Nikolai Lavsky | 2021-12-10 15:11:34 +0200 fix: don't erase travel trail when visiting item piles (#2081) After 330158af and 1bdd5c97, the travel trail is not drawn at all when the player visits item piles. `movement:cc:move_player_action()` adds visited tiles into the trail as long as there is the running delay in the delay queue. If the player moves manually (`running == false`), the same function calls `clear_travel_trail()` to erase the trail. Before we call `move_player_action()` for the last time, `travel.cc:travel()` calls `stop_running()`, which removes the running delay. As the result, `move_player_action()` clears the trail instead of adding the last step to it. Fix this by using `stop_running(false)`, which doesn't clear the delay. This should be safe, since the delay will be cleared by other code later anyway. -------------------------------------------------------------------------------- dce3279b65 | Nikolai Lavsky | 2021-12-10 15:11:34 +0200 fix: draw complete travel trail when autoexploring (#2081) After 14faa605, the travel trail sometimes doesn't have the last step. It happens when autoexplore is interrupted by a monster coming into view or by the player noticing a new item pile. Previously, we removed the running delay from the delay queue only after adding the last visited tile to the trail. We stop running and remove the delay earlier now, so we need an extra check after the code added in 14faa605. -------------------------------------------------------------------------------- 6a9fe35dad | burnish3d | 2021-12-10 15:10:15 +0200 docs: update style of use_animation and monster_list_colour (#2261) -------------------------------------------------------------------------------- 51eb943035 | hedk3 | 2021-12-10 15:08:02 +0200 fix: Storm Form display weapon name depending on species (#2265) Currently, this form always displays "Storm fists" no matter the active species, despite tiles showing that the player character's anatomy is maintained in this transformation. To be consistent with Statue Form and Blade Hands, this minor change uses the same logic used in Statue Form to fix this. -------------------------------------------------------------------------------- f47a79d804 | Jonathan Klabunde Tomer | 2021-12-10 15:05:23 +0200 consider Summonings useless after sacrificing love (#2277) With Abjurations gone, every spell in the Summonings school is inaccessible to characters that have sacrificed Love to Ru. The skill is therefore useless to them; we needn't bother allowing them to train it, and certainly shouldn't offer manuals of Summonings from acquirement. -------------------------------------------------------------------------------- 6434aa07ad | robertxgray | 2021-12-10 14:00:31 +0100 Android: Fix weird keyboard on Samsung devices Newer Samsung devices use the emoji variant of some characters by default. This fix explicits the text variant and reduces the font size for better fitting in the smallest devices. -------------------------------------------------------------------------------- f337918505 | robertxgray | 2021-12-10 14:00:23 +0100 Android: Long press as right click A long press can be used as a right click on the Android port. -------------------------------------------------------------------------------- c0a09d7c55 | robertxgray | 2021-12-10 14:00:11 +0100 Hide tab icons by default in the small layout The icons are shown/hidden when clicking on the status area. We can increase the viewport scale as a result. -------------------------------------------------------------------------------- 498bec7977 | Edgar A. Bering IV | 2021-12-10 11:54:41 +0200 tiles: yred iconography (Sastreii) -------------------------------------------------------------------------------- 1eb2483b26 | Edgar A. Bering IV | 2021-12-10 11:47:23 +0200 fix: consistently treat zombie base types In 1e9075421c5 zombies were de-anonymized. As an unfortunate side effect, the function mons_zombie_base was changed to return the species of the base zombie, not the base monster class used to define the zombie. As a result, most dramatically noticed for the damage of orcish derived undead, but also relevant for spriggan defender zombie action eneriges and any monster with a species much weaker than its type, the zombie was based on the underlying species. This commit simplifies some uses of the function and is being made after verifying every other use will work correctly (or as originally intended) with mons_zombie_base returning the monster class, and not the underlying species. Undead orc warlords should once again be as spooky as they seem from their name. -------------------------------------------------------------------------------- f3fc490d9d | Kate | 2021-12-10 03:13:02 +0000 Fix TSO not giving penance for miasma effects Appears to have been broken since the poison conduct was removed in c6e9da29e, oops. Fortunately didn't really matter since methods of creating miasma (like casting Corpse Rot) would already cause penance, but fixes the very powerful tech of creating a bunch of miasma in advance and then converting to TSO and letting it kill things. -------------------------------------------------------------------------------- 0f7456fd9b | Kate | 2021-12-10 02:39:54 +0000 Update the manual's mutation section -------------------------------------------------------------------------------- 594c0c42f0 | Kate | 2021-12-10 01:51:32 +0000 Update the manual -------------------------------------------------------------------------------- a282ea246d | advil | 2021-12-09 15:45:36 -0500 docs: update action panel options -------------------------------------------------------------------------------- 450912fe5d | advil | 2021-12-09 14:30:05 -0500 feat: action panel glyph mode I'm not sure this is really that useful, so it's currently not tied to actually being in glyphs mode and has its own option. We'll see if people actually use it; if not, (and if I don't find a way to improve it) it may just be better to remove before release. -------------------------------------------------------------------------------- 0cd4c285bc | advil | 2021-12-09 11:30:52 -0500 feat: more control over action panel item order Previously, item order was determined by enum order. This change uses the action_panel option itself to determine primary order (this was already implemented in an ordered way), and item letter for the suborder. It's possible that the latter will be too confusing by default, and if so, we can return to subtype as the secondary sort (which provides a stable ordering across games). I've also tweaked the default so that it is actually enum order, for some level of consistency before and after this commit. -------------------------------------------------------------------------------- a9895729f1 | gammafunk | 2021-12-09 06:32:15 -0600 feat: Slightly tone down a float vault (Lici) For minmay_chambers_of_sevens, the final chamber of sevens has seven 9 out-of-depth monsters, which is a bit steep for earlier mid dungeon levels like D:7. Allowable, but verging into runed door territory, which this vault isn't. Replace 3 9s with 0 spawns and downgrade two of the loot items, preserving the count of seven monsters and seven loot items in the final chamber. -------------------------------------------------------------------------------- 05a166d0ed | Kate | 2021-12-09 01:45:16 +0000 Adjust Chain Lightning damage falloff with range Increase the damage falloff from 2/3 per arc to 3/5 - in practice the damage falloff wasn't quite significant enough to make it feel distinct from other level 9 spells that deal massive AoE damage. Making it fall off faster helps make the positional aspect of the spell more important, while retaining its huge initial damage. In addition, rework the initial arc to scale smoothly with range, instead of having damage breakpoints at range 4 and 7 - this wasn't communicated clearly, and made those range breakpoints especially important against Nikola, for example. -------------------------------------------------------------------------------- a9c9dcfaf8 | Kate | 2021-12-09 01:45:16 +0000 Make wizmode god gifting grant Yredelemnul zombies Since &^ can't be used to adjust Yred's piety, special-case &- to gift zombies up to the next piety star. -------------------------------------------------------------------------------- 31ca34fcf2 | Kate | 2021-12-09 01:45:16 +0000 Refactor Bind Soul to use a new ability targeter And slightly adjust a failure message. -------------------------------------------------------------------------------- 6c0667d426 | Kate | 2021-12-09 01:45:16 +0000 Slightly increase BiA piety cost By 0.5 on average, to continue toning down the strength of various god abilities that are extremely strong and relatively low cost. -------------------------------------------------------------------------------- 46f1710d2c | Kate | 2021-12-09 01:37:05 +0000 Adjust some Qazlal ability costs To help Qazlal out a bit early on, reduce the MP and piety cost of Upheaval slightly, and also reduce the MP cost of Elemental Force. Also increase the MP cost of Disaster Area by 1, to make it a tiny bit harder to use multiple times in a single fight. -------------------------------------------------------------------------------- c1a47e44fc | Kate | 2021-12-08 23:25:24 +0000 Increase Okawaru Duel cost, reduce grace period on win It's an intended part of the ability that the player has some time to heal up after winning a duel, but it should be a little less reliable as a method of escaping danger. -------------------------------------------------------------------------------- 3cb2360906 | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 tiles: spectre tiles for bound souls (Sastreii) Not the full range of zombies like some of the others, but enough types to capture the different kinds of soul encountered in crawl. Should help the player keep track of their bound soul better. Definitely look super cool. -------------------------------------------------------------------------------- 53f92202ff | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 fix: remove a now unused MB check -------------------------------------------------------------------------------- 26d7df5b1f | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: add the rest of genus W to Dark Bargain Since that was intended from the start. As the list is now longer in the mid range, adjust the quality floor upward. -------------------------------------------------------------------------------- 274bf074c3 | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: toughen up bound souls For a capstone that's a bit tricky to earn, bound souls are pretty flimsy, even with the extra HP they were previously given. Let's turn them up a bit more so they get a better "bridge moment" feel, and players feel good about keeping them around/replacing and upgrading them. -------------------------------------------------------------------------------- a437c65847 | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 fix: clean up merge-induced bugs in dark bargain As well as abort the ability if the servant fails to arrive, instead of charging the player zombies for nothing. Unlike other ally abilities, Yred's Dark Bargain is used by players who have gobs of allies, so many that they might not have any available space for their servant. Aborting may leak a small amount of information, but the cases where that happens are either: ones where the player is getting it any way in virtue of their zombies, or so vanishingly rare and punishing that its probably ok to leak here. -------------------------------------------------------------------------------- b2c76ee18a | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: mark death channel useless for Yredites -------------------------------------------------------------------------------- d6ebe8a65d | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: allow bound souls to throw rocks -------------------------------------------------------------------------------- ea437062f2 | Edgar A. Bering IV | 2021-12-08 23:05:32 +0200 rename: change Yred abilities to not be explicit slavery Casual use of slavery-as-entertainment in crawl has been on its way out as poor taste for a while. Yred was one of the last hold outs, this rework is a good opportunity to make a change. Instead of dipping into the metaphysics of whether or not "enslaving souls" is the same as chattel slavery, let's just be a bit more vague in the flavour of Yred. -------------------------------------------------------------------------------- 17048352e6 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 refactor: black torch: treat bound souls as their own species There were a bunch of strange special cases for spectral things intended to handle edge cases for bound souls but not show up on regular spectrals because of other checks or luck. This changes the enslaved soul to be its own monster type, still of species spectral thing, and simplifies or makes explicit the relevant checks. This commit also allows bound soul stats to be adjusted independent of spectral things; the EV modifier could be changed in the future. For now, to buff the bound soul, it gets full HP so as to be less fragile. -------------------------------------------------------------------------------- 5224dc67e1 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 fix: clarify that undead left behind will poof -------------------------------------------------------------------------------- df1d555f45 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: fineff-ify attitude changing revivals Many different ways of harming a monster don't expect the monster to change attitude partway through the process. This has been the source of several mysterious Yred enslaved soul and Beogh deathbed conversion bugs. To prevent them, move both of these attitude-changing revivals to a fineff, so that mon->alive() returns false for the convertee until the fineff fires. This is a bit hacky so might cause weird behavior, but since fineffs now fire after each monster turn I don't think it will. -------------------------------------------------------------------------------- c2baa198af | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: black torch: spectral mist immunity Like nightvision, meant to make monsters from Dark Bargain not harmful to the player. Of course, we could have left revenants off of the dark bargain list but that is a significantly less cool approach. -------------------------------------------------------------------------------- 8b846c3b94 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 fix: reduce message spam under Yred and Usk -------------------------------------------------------------------------------- 8212ce3e68 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: black torch: yredelemnul conduct enforcement -------------------------------------------------------------------------------- 772aeeb350 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: black torch: handle yred abandonment correctly Update the abandonment sequence for the new style of yred minion and tidy up the now unused ALLY_YRED daction. -------------------------------------------------------------------------------- 0a07692a02 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: monk and ecumenical altar bonuses Grant the devout some immediate zombies. Monks get filled all the way up to **, which will feel a bit sad in the Temple but oh well. Ecumenical altar grants * worth of zombies, which at D:1-3 is a lot of bodies. Monk + Ecu gives ** but a few more zombies than a monk alone. -------------------------------------------------------------------------------- bf6f545f5c | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 fix: increase bind soul duration Now that it's a bit more awkward to use, give players a little more time to make the kill, since the zombies are paid out either way. -------------------------------------------------------------------------------- 3254f7a1f8 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: ensoul the animals And other less intelligent creatures. Souls are things that living, demonic, and holy creatuers have regardless of intelligence! -------------------------------------------------------------------------------- bf073b50f9 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 fix: prevent spectral things from taking stairs -------------------------------------------------------------------------------- 556ba5c09b | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: don't drop corpses with Yred This is to create the illusion that Yred always reaps when a corpse is dropped. (Yred's reap chance can be improved with faith, so it's a separate roll, but without faith they're both coinflips.) For consistency, both the reaping brand effect and this Yred effect now occur before dropping a hide. You cannot skin a zombie after its been reanimated! -------------------------------------------------------------------------------- 7da1dd8346 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: give full XP for Yred ally kills Commit db2750068a removed the summon XP penalty for all but Beogh and Yred allies, hoping a future rework of these two categories would allow the penalty to remove. The black torch sequence of commits overhauls Yred into a state where full XP is ok. -------------------------------------------------------------------------------- 39e59bd991 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: runrest ignore yred messages by default -------------------------------------------------------------------------------- 3d579d9813 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: amulet of faith Amulets of faith increase the chance of reaping a semipermanent follower while worshipping Yred. On removal some of these followers are reclaimed. This means that a Yred worshipper without zombies can remove faith for free, but that's similar to Uskayaw. -------------------------------------------------------------------------------- 98cb3ae26c | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: grant Yred nightvision at all times (kate) -------------------------------------------------------------------------------- 2e4292cc8c | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 text: Update Yred's description to reflect the changes -------------------------------------------------------------------------------- 484e03e0cf | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 text: give more detail in the bound soul desc -------------------------------------------------------------------------------- b0a17c5a12 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: remove yred gifting In Yred's redesigned piety system, the gift timer and its mechanics don't make sense, so the permanent ally gifts are removed. This achieves one of the goals of the redesign, which is to severely limit the use of permanent allies (to only the enslaved soul). -------------------------------------------------------------------------------- 3e152b4d76 | Edgar A. Bering IV | 2021-12-08 23:04:43 +0200 feat: black torch: dark bargain A subsequent commit will remove Yred's passive, permanent gifts. Yred's more powerful servants are really cool as allies and significantly better than plain zombies and spectres. This active ability brings them back as summons, the player trades their zombies for them. This commit also expands the list of Yred servants to cover almost all of genus n, z, V, and W. The exceptions are Vampire Mages (kiku worshippers, or at least too proud to serve), and a couple of monsters that would be more harmful to the player than good allies. -------------------------------------------------------------------------------- 83783ab100 | Edgar A. Bering IV | 2021-12-08 23:03:47 +0200 feat: black torch: zombie piety Move Yred to an alternative piety system, where abilities are paid by offereing up some of the player's reaped souls. Currently this uses Zombies-recently-in-LOS for piety, the aim being a medium-time-scale piety system that builds up over a single floor, but resets on floor transition. Zombies on the floor could also be used, but there are information leak issues with that, plus it encourages closet stashing. The goal is to encourage the player to keep their harvest close at hand! Reaped monsters live on the floor they were created on and disappear when the player leaves the floor (by any means, portal vaults and shafts both count). This gives Yred a medium-scale piety system, lasting longer than Usk but much shorter than a conventional god. -------------------------------------------------------------------------------- 35b79d20d0 | Edgar A. Bering IV | 2021-12-08 23:03:47 +0200 refactor: move the targeting abflags to the high byte -------------------------------------------------------------------------------- 831c365f3e | Edgar A. Bering IV | 2021-12-08 23:03:46 +0200 feat: black torch: passive reaping To replace Yredelemnul's active animate dead abilities, this introduces a passive reaping status, granted at 0*. In this redesign Yred will use zombies as piety, so this is in essence the new piety gain system. Yred reaps both body and soul, from monsters that don't have a corpse (or whose corpse exploded!) the player gets a spectral thing. With the recent change to allow spectralizing demons, Yred can reap their twisted souls, too. The reaped monsters cannot leave the floor they came into being on, and if the player leaves they are dismissed. -------------------------------------------------------------------------------- b4513a33df | Edgar A. Bering IV | 2021-12-08 23:02:13 +0200 feat: new yred: remove injury mirror Injury Mirror was the most awkward of Yred's abilities. It cost a lot of piety if it activated, but getting a big activation meant taking a lot of damage. In comparison, Drain Life gains hitpoints and costs a predictible amount of piety. It's possible there's an injurry-mirror or damage-sharing ability that works with the re-designed Yredelemnul "zombies are piety" principle, beyond just having allies to soak up damage. For now, this gets the axe. -------------------------------------------------------------------------------- 286e7562c3 | Edgar A. Bering IV | 2021-12-08 23:01:25 +0200 feat: black torch: remove yred animation actives This sequence of commits re-designs Yredelemnul. A key feature of the re-design is a passive reaping to replace the animation active abilities, and a necessary first step is to remove them. -------------------------------------------------------------------------------- aa9a639d33 | Perry Fraser | 2021-12-08 15:22:59 -0500 Have deps.py print output of a command on fail Note: probably would be better to use subprocess.run instead of check_output, but that's Python 3.5+ only. I'm not sure what the intended version this is supposed to run on. -------------------------------------------------------------------------------- 92583b6a8d | advil | 2021-12-08 14:25:50 -0500 fix: don't let Usk steal other gods' powers (G-Flex) As discovered by G-Flex, if you have a religious ability quivered and convert to Uskayaw, the quivered ability registers as valid and can be used via quiver commands if you meet its piety threshold. This commit changes `god_power_usable` to do an explicit god check. To support this check I refactored the god_powers static to use a construct-on-first-use paradigm, and added the god field directly to the struct type. -------------------------------------------------------------------------------- 7a5fce4930 | Edgar A. Bering IV | 2021-12-08 16:05:56 +0200 feat: adjust fiend ratios in Coc and Dis New Cocytus and Dis have turned out significantly deadlier than new Geh and Tar. In Cocytus, shard shrikes shine bright, sticking out as an outlier in kills. In Dis, iron giants aren't as much of an outlier, until you notice the second kiler is iron golems, who spawn in bands with an iron giant leader to chuck them at the player. On the other hand, Ice Fiends have barely notched any kills in coc, despite being rather nasty; Hell Sentinels have about 1/3rd the kills of the giant/golem duo, a bit more respectable but not enough to catch up to an outlier. Comparatively, tainted leviathans and hellephants spawn singularly. The former hold their own, racking up kills with a similar rate to tzitzimimeh (who spawn less often). The latter are weaker, but the rarer brimstone fiends top the charts. So this commit reduces the frequency of iron giants and shard shrikes, swapping them with hell sentinels and ice fiends respectively in the table, in hopes of making the four hells a bit more level. -------------------------------------------------------------------------------- 9c4cb8273d | advil | 2021-12-07 15:52:52 -0500 fix: handle db source files with mtime 0 These don't occur normally in the wild, but sometimes people doing reproducible packaging or the like will set all mtimes to 0. When this happens some old db code that treated 0 as an error condition would produce a fairly incomprehensible ASSERT. I suspect this is what is behind: https://crawl.develz.org/mantis/view.php?id=11956&nbn=1#bugnotes https://github.com/crawl/crawl/issues/2276 and the like, though this is not something I've been able to test. I've also rewrote the ASSERT to produce something more like a real error message, though I think it should be much harder to trigger now. Note to packagers: this commit keeps things from crashing, but distributing files with mtime 0 is *really not recommended* unless you are sure to never use a shared db cache directory. If you do, this commit will severely break having multiple versions installed (and I don't think the errors will be any less cryptic that this one). It should meet a typical reproducible build desiderata to use the official file times for db (and most dat/ files) as these are not generated at build time -- they are game data files. -------------------------------------------------------------------------------- 9b0f503c9e | advil | 2021-12-07 14:26:38 -0500 fix: hidpi scaling for action panel div -------------------------------------------------------------------------------- 702cd34d14 | advil | 2021-12-07 14:20:06 -0500 fix: scale action panel qty for hidpi also There must be some better way to do this... -------------------------------------------------------------------------------- 5957592b1c | advil | 2021-12-07 13:40:16 -0500 fix: correct hidpi rendering for the action panel (PleasingFungus) This code assumed that the `renderer` object was pre-adjusted for the device to pixel ratio (which is how it's done elsewhere), but this is not so straightforward to do for the action panel (though it might be cleaner if it could be done). So, do explicit scaling for the device ratio, and remove explicit scaling for mouse cursor position. Should have no impact on non-hidpi/retina devices. -------------------------------------------------------------------------------- b7f16da270 | advil | 2021-12-07 12:22:38 -0500 fix: improve `.prf` file naming/location on DGL builds Two changes, should affect DGL builds only: 1. Set the filename correctly. After game start, it turns out that Options.game.name is the empty string, resulting in the hilarious behavior of everyone on a DGL_STARTUP_PREFS_BY_NAME build sharing a single prefs file named `start--ns.prf`. 2. For a DGL_STARTUP_PREFS_BY_NAME build, put prefs in a subdirectory of the shared directory, rather than the saves directory. The reason for this is that the saves directory on a DGL setup (and maybe any setup using this flag) is versioned, and so the .prf file gets wiped out/ignored on any trunk version change. (An alternative would be having DGL copy the files, but this would be too painful to implement.) -------------------------------------------------------------------------------- 1a2f33fa85 | Nicholas Feinberg | 2021-12-06 18:37:15 -0800 Remove spurious malevolence (some) If an explore trap teleportation fails to teleport the player, don't print a message about malevolence. Still possible to get a spurious message from getting explore shafted after getting non-explore shafted, in principle. -------------------------------------------------------------------------------- a8db75c868 | Nicholas Feinberg | 2021-12-06 18:29:54 -0800 A flaming sword which turned each way... (Sastreii) New tiles for ironbound thunderhulk, Yredelemnul's altar, and the Seraph. -------------------------------------------------------------------------------- 8410daf38b | advil | 2021-12-06 21:19:17 -0500 fix: tweak full hide behavior with minimized action panel The action panel is supposed to hide itself entirely if there's no relevant inventory items (either by happenstance or by configuration), but because of the sequencing this would still show the minimized form -- clicking the + then got rid of the panel. (An easy way to replicate was to set `action_panel =` and `action_panel_show = no`, but it also had similar behavior when dropping items.) This adjusts the sequencing so that the placeholder is handled correctly with no items at all. -------------------------------------------------------------------------------- 8662a715a7 | advil | 2021-12-06 20:00:25 -0500 fix: use longname for explore trap flavor Adding "the" to `shortname` doesn't always work, and `longname` already is designed to be used wherever a definite description should work. Resolves #2270 -------------------------------------------------------------------------------- 6b46d0572a | advil | 2021-12-06 18:36:35 -0500 fix: show wands by default in the action panel Early indications are that it is more confusing than not to leave these out by default. I guess the concern may have been screen space, but we'll see how it goes in practice. -------------------------------------------------------------------------------- 3b2567e0bc | advil | 2021-12-06 18:29:49 -0500 fix: use targeters from action panel This change got lost in the shuffle, I think this is what players will expect though. -------------------------------------------------------------------------------- 57bb0be0ea | advil | 2021-12-06 17:03:44 -0500 fix: fully remove custom parsing code for action_panel_orientation This check can be implemented using a different class, so let's do that. (A previous commit had made the custom parsing code inert by converting the option to StringGameOption, but this had the result that anything other than "horizontal" was interpreted as "vertical" rather than producing an error.) -------------------------------------------------------------------------------- 0724427129 | advil | 2021-12-06 17:03:44 -0500 feat: save action panel scale and font size This also changes the behavior of action_panel_scale so that it is an int percentage, rather than a float -- this allows removing custom parsing code, and makes it so that the ui and settings values are more consistent. (I had apparently already added the IntGameOption part of this in a previous commit, so this commit isn't clean.) -------------------------------------------------------------------------------- 691f867587 | advil | 2021-12-06 17:03:44 -0500 fix: hide action panel for spectators A braver person than me might try to sync the visual state of this with the player rather than hiding, but I'm not going to do that any time soon myself. -------------------------------------------------------------------------------- b232902b95 | advil | 2021-12-06 17:03:44 -0500 fix: hide tooltips when action panel settings is open These aren't readable anyways, because they are under the popup. -------------------------------------------------------------------------------- 090e49b2c9 | advil | 2021-12-06 17:03:44 -0500 fix: apply an upstream fix from focus-trap This reverts ac5a30bc78f08b3 and applies the final upstream fix for https://github.com/focus-trap/focus-trap/issues/103, in particular: https://github.com/focus-trap/focus-trap/commit/fe2b0ad8d03d3a727d7f0d4d1e0ec2b3 f2887577. Since my original fix for this focus-trap has gained a new maintainer and seen a bunch of releases, so possibly we should consider updating, or at least checking if there are specific bugfixes to apply. -------------------------------------------------------------------------------- bbe7356047 | advil | 2021-12-06 17:03:44 -0500 feat: use focus-trap for action panel settings popup This fixes a whole bunch of issues with keypresses going the wrong place, focus not being returned after this closes and just generally being weird, etc. There are still various issues with this commit that are indicated in the comments, where basically (to me at least) browser focus can be extremely mysterious. But the only user-facing one is that I couldn't get tabbing to the buttons to work. Also, rename some html elements. -------------------------------------------------------------------------------- 394b2318f7 | advil | 2021-12-06 17:03:44 -0500 fix: min panel scale to 50%, not 10% With 0.1, it becomes hard (on my display at least) to get back to the panel by right clicking. 50% is about the smallest I could imagine it being usable at, and it makes it possible to get to the settings menu to reset this value. This may need further tweaking. Note that nothing prevents you from setting a lower value in rc if this is useful in some configuration I'm not imagining. (There's a different way to hide it altogether.) -------------------------------------------------------------------------------- a1dc6246e2 | advil | 2021-12-06 17:03:44 -0500 fix: don't toggle settings panel on settings change This fixes a regression introduced when I implemented saving. Because the textinput value is processed on key input, they are unusable if the panel closes immediately. -------------------------------------------------------------------------------- af3cd226fe | advil | 2021-12-06 17:03:44 -0500 fix: change behavior of x when settings open Previously, this would still minimize the panel, but I think it's more intuitive to just hide the settings pane if settings is currently open. -------------------------------------------------------------------------------- ff10334c96 | advil | 2021-12-06 17:03:44 -0500 docs: update action panel entries -------------------------------------------------------------------------------- 551de97837 | advil | 2021-12-06 17:03:44 -0500 refactor: rename consumables panel => action panel I anticipate we may eventually want to generalize this beyond just items. This is an optimistic preemptive rename, since the options names need to be definitive before merge, though I don't anticipate making it handle non-consumables before merge. This change also makes the options names a bit shorter and (maybe) easier to remember. -------------------------------------------------------------------------------- 7743480e9c | advil | 2021-12-06 17:03:44 -0500 feat: save some consumables panel settings in .prf file This provides a persistent memory of whether the user has the panel visible, and what orientation they have it in, across games. -------------------------------------------------------------------------------- d1ef89111a | advil | 2021-12-06 17:03:44 -0500 feat: improvements to webtiles options API This adds a bit more control over some of the set_options calls on the webtiles side, and provides a way for webtiles to send options settings back to the crawl process. It's still all a bit brute force. -------------------------------------------------------------------------------- c9e27d6a74 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 fix: iron out a few bugs in the consumables panel enhancements This commit fixes the following issues: * The hide button was drawn on top of the first consumable item. * Interaction options - adjust, read/quaff, drop, inscribe - didn't work when called from the describe popup, printing "Unknown command" messages instead. I fixed this by replacing `describe_item_popup()` with `describe_item()`, which executes the selected interaction via `_do_action()`. * It wasn't possible to use unidentified potions and scrolls by clicking them on the panel. I "fixed" this by allowing to quiver unidentified potions and scrolls. This was explicitly disabled in `consumable_action:is_valid()`, but it looks like such consumables work fine from the quiver, so I hope this change is OK. Also, I added an extra check into `consumable_action:is_enabled()` to prevent information leaks. * The cursor for the selected item didn't scale with the panel. This was caused by calls to `draw_icon()` missing a couple of arguments. * There were no item tooltips in Chrome (caused by a missing `var`). Also, there is a new `draw_gui()` helper function for drawing tiles from the `gui.png` tilesheet. It wasn't obvious that the panel has a settings menu, so I added a tooltip for the hide button. -------------------------------------------------------------------------------- bd7f567b5d | advil | 2021-12-06 17:03:44 -0500 feat: consumables panel enhancements (clicking, information) (This is not super well-tested, so I'm not really sure if it is safe to merge just yet.) This commit adds the following features to nlavsky's original consumables panel patch: * click to show/hide; the leftmost icon when visible is always a hide icon. * right click on the hide icon (only) to get the settings popup * right click closes the settings popup also. (This should maybe close * if you click out of this ui, but I wasn't quite sure how to do that.) * tooltip on consumables gives the item name and inventory letter * right click on consumables (when in mouse command mode) opens the describe popup * left click (in mouse command mode) just directly triggers the item. This is implemented via the actions interface, so doesn't need to add much code (as it rests on 6e4aca117). Does this make misclicks too easy? I'm undecided whether this should be minimized or shown by default. It would be really nice if minimization state at least were stored either as a cookie or in the save between sessions. Motivation: The patch as it stands is feature-complete relative to the original goals (including ones I encouraged), but after testing I unfortunately don't think it will feel very complete to end users. The UI has the form of something that should be clickable, so players will expect it to be clickable. (The tiles even look kind of like local tiles menus.) Also, players not familiar with the icons will have a lot of trouble with this: even as a long-time console player I don't know the icons well. Hence the tooltip. -------------------------------------------------------------------------------- 9e6efe1491 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Add an in-game configuration menu for the consumables panel This new menu allows changing the panel's orientation, scale, and font size in-game. Also, it allows minimizing the panel into a "+", similar to how the chat window can be minimized. All the changes are done on the client side and not saved between sessions. Also, this commit splits the panel's font option into font_size and font_family, so it is similar to other existing font options. -------------------------------------------------------------------------------- 8d133420af | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Add a font option for the consumables panel (nojaa3) The pixel font used for displaying the quantities of items is quite small and doesn't scale well. Instead of mimicking the style of the inventory panel from local tiles, it's better to use a system font and allow the player to configure it. This commit adds an option to specify the font for the panel and increases the default font size. -------------------------------------------------------------------------------- f446b847d9 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Add an option to reposition the consumables panel (Implojin) To make the panel less intrusive for more screen resolutions and sizes, add the `consumables_panel_orientation` option. When set to 'horizontal' (the default), the consumables panel will be placed along the top edge of the screen. When set to 'vertical', the panel will be placed along the left edge. -------------------------------------------------------------------------------- 637e5f1bb1 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Filter consumables on the crawl binary side (advil) This allows to use the same regex parser that the crawl binary uses, which should be faster. Also, it makes the code more portable to other build targets. Now `TilesFramework::_send_item()` does the filtering and sends an extra flag with each item, `qty_field`. If it's either "plus" or "quantity", the web client(s) will show such items on the panel. -------------------------------------------------------------------------------- 58cd58bcfe | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Remove a couple of obsolete vendor prefixes Firefox v.51+ (2017) and Chrome v.30+ (2013) can handle the unprefixed `imageSmoothingEnabled` canvas property just fine. -------------------------------------------------------------------------------- 972ed031cb | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Fix web clients not getting updated about the state of XP evokers Whenever an inventory item's item_def changes, the game sends an update to the web client(s). Because information about XP evokers is stored outside of item_defs, there are no updates when XP evokers recharge or lose charges. Fix this by caching the number of charges in the item.plus field (similar to how wand charges are stored) and sending updates when necessary. -------------------------------------------------------------------------------- d76b51a1a8 | Nikolai Lavsky | 2021-12-06 17:03:43 -0500 New consumables panel for Web Tiles The main goal of adding this panel is to give the player a quick and easy way to see all the items that can help them succeed in a fight. It would be ideal to have the full inventory panel, similar to Local Tiles, but there are a couple of problems. The first is a lack of screen space: unless you have a big monitor, the choice is either the monster list (Web Tiles) or the inventory panel (Local Tiles). The second problem is that only about a half of inventory items are useful in fights. A filtered view of the inventory will take less space and present only combat-relevant items. This commit adds a new panel, which can be configured via four options: * `consumables_panel`: types of items to show on the panel; * `consumables_panel_filter`: a list of regular expressions for filtering items out; * `show_unidentified_consumables`: whether to show unidentified scrolls and potions; * `consumables_panel_scale`: allows to change the size of icons on the panel. The panel is displayed in the top left corner, partially covering the top row of tiles on the map. Non-Barachim chars should always have at least one out-of-sight row at the top. For Barachim, the game can show 18 rows of tiles with one out-of-sight row at the top as long as you have 736 pixels vertically. -------------------------------------------------------------------------------- 4b78bf2b85 | Edgar A. Bering IV | 2021-12-06 21:12:23 +0200 docs: changelog through 0.28-a0-1004-g00e6d53462 -------------------------------------------------------------------------------- 00e6d53462 | Edgar A. Bering IV | 2021-12-06 21:00:32 +0200 fix: make mauler's inscription consistent -------------------------------------------------------------------------------- a36b043db1 | Edgar A. Bering IV | 2021-12-06 20:27:03 +0200 feat: refactor eleionoma and fenstrider wands 2dcde036d21 gave eleionoma and fenstirder witches guaranteed wands. However, it didn't give them the ability to use the wands. This was on purpose, the wands were meant as loot for the player, not an extra threat on already mid and high tier monsters. Placing the items into monster inventory was a bit confusing, players expect monsters carrying wands to be capable of using them; especially with the UI efforts put in to announce monster wands. Since these are meant as pure loot, this commit refactors them to drop on death through the same code path that drops dragon hides. This roughly halves (corpse rng) the rate of wand generation in 2dcde036d21, so the charges dropped are doubled to compensate. -------------------------------------------------------------------------------- f00fe891ef | Kate | 2021-12-06 01:09:34 +0000 Don't allow equipping Lear's with Demonic Touch (Lightli) -------------------------------------------------------------------------------- 1d7427ec22 | Kate | 2021-12-06 00:40:18 +0000 Refactor some breath weapon handling Although it could still use some more streamlining. -------------------------------------------------------------------------------- 1aa8e01074 | Kate | 2021-12-06 00:40:18 +0000 Initialise a variable (geekosaur) -------------------------------------------------------------------------------- ce17e19b79 | Kate | 2021-12-06 00:40:14 +0000 Adjust umbra accuracy and stealth handling Grant players (and monsters) immunity to umbra's accuracy reduction if they're wearing the ring of Shadows, and don't give players a stealth bonus in umbra unless they're emitting it themselves, so Yredelemnul worshippers no longer gain bonus stealth from allied profane servitors (while still avoiding the accuracy reduction). -------------------------------------------------------------------------------- b9e9c7b67e | Kate | 2021-12-05 04:26:43 +0000 Add missing canned messages for some cancelled abilities -------------------------------------------------------------------------------- e2d2f24f2d | Kate | 2021-12-05 04:26:43 +0000 Let Divine Exegesis trigger Battlesphere/Demonic Magic Since it's mostly-but-not-quite a real spell. -------------------------------------------------------------------------------- b3aea5d014 | Kate | 2021-12-05 04:25:00 +0000 Refactor spell-based ability failure timing Fixes Demonspawn Damnation, Beogh Smiting, and Sif Muna Divine Exegesis having fail checks before targeting. -------------------------------------------------------------------------------- 0dbd382bca | Kate | 2021-12-05 04:18:00 +0000 Refactor many ability fail checks Abilities should always be targeted before their fail check, so that they can consistently be cancelled before committing to activating the ability. This commit fixes this issue for a large number of abilities, and removes unnecessary fail checks for abilities that should never fail. A small number of abilities still need further refactoring to move the fail check to take place pre-targeting. -------------------------------------------------------------------------------- 27b72ba42d | Kate | 2021-12-05 04:18:00 +0000 Refactor some abilities to use new targeters Most breath weapons (except for Breathe Acid, which has a more complex targeter), as well as a number of simple targeted god abilities (Makhleb Minor/Major Destruction, Zin Imprison, Okawaru Duel, and Fedhas Grow Ballistomycete/Oklob) now use new ability targeters. -------------------------------------------------------------------------------- 557f2b6704 | Kate | 2021-12-05 04:17:54 +0000 Add more ability targeter handling There should now be full support for targeted abilities to share the new targeting code. Some particularly complex abilities might be difficult to refactor, but many aimed abilities such as breath weapons can now start being moved to use the improved targeters. -------------------------------------------------------------------------------- 46d0310cc0 | Kate | 2021-12-04 22:56:01 +0000 Display ability ranges in their descriptions By adding range to ability_def, in preparation for also using it in ability targeters. -------------------------------------------------------------------------------- 956f0ee3d5 | Kate | 2021-12-04 01:58:07 +0000 Make Demonspawn stingers conflict with regular stingers -------------------------------------------------------------------------------- 482a24a92f | Kate | 2021-12-04 01:30:09 +0000 Give Pikel a new title To match his new(-ish) job trading souls of the damned. -------------------------------------------------------------------------------- d7bf75cbcc | advil | 2021-12-03 18:56:15 -0500 fix: don't use html entities in issue template This didn't work, I don't know why I thought it might. -------------------------------------------------------------------------------- 17ad3ed552 | advil | 2021-12-03 18:53:24 -0500 docs: adjust issue template People seem to be surprisingly incapable of reading and following the "replacing or deleting all italicized text" instructions, so make it easier on them by putting this text in comments. -------------------------------------------------------------------------------- 8383568036 | Kate | 2021-12-03 21:54:34 +0000 Slightly increase Dragon Form fire breath power Draconians in dragon form all get to keep their breath weapons and use them at a power of 2 * XL, but other species (and red draconians) used fire breath at a power of XL + 12 instead. Change fire breath's power to also be 2 * XL for consistency. -------------------------------------------------------------------------------- 82fdf335c4 | Kate | 2021-12-03 21:39:05 +0000 Remove an unused function -------------------------------------------------------------------------------- d6bbb3f436 | Nicholas Feinberg | 2021-12-03 10:54:22 -0800 Rename: traumaturge gloves -> Mad Mage's Maulers The lowercase name felt odd, and also conflicted with a Veh title. Neither were large problems, but neither is a rename, so why not? -------------------------------------------------------------------------------- 3775c662fe | Nicholas Feinberg | 2021-12-02 15:55:11 -0800 Put on my wizard hat (Sastreii) New funny hat tile. -------------------------------------------------------------------------------- 1de4e0787c | Kate | 2021-12-02 01:35:24 +0000 Add static targeters for many abilities Making abilities behave more consistently with regards to targeting is a pretty substantial project, but this is a start for many of the simpler abilities. Currently this only supports static targeters - some limited support for regular targeters has been added, but more work would be required to fully support regular targeters (such as more ability flags to indicate how an ability should be targeted). As with spells, a number of abilities with either full-LOS or limited radius effects are added to the default force_ability_targeter option. -------------------------------------------------------------------------------- 134dc7ce2c | Kate | 2021-12-02 01:35:24 +0000 Remove some unused handling for wand trove tolls (Ge0ff) -------------------------------------------------------------------------------- 945c40ea80 | CanOfWorms | 2021-12-01 18:01:05 -0500 Reduce the average number of items in a shop With the pool of permanent items slowly decreasing over the years, shops have shown a noticeable increase in redundancy with permanent items, such as jewellery stores selling multiple copies of a particular amulet type. In addition, shops can generate with up to 16 items, which creates unnecessary UI clutter. Fix this issue by reducing the average number of items in a shop from 4 + 3d12/3 to 4 + 3d8/3, reducing inventory by 2 items on average. This change also counterbalances a gradual increase in the quantity of consumables available, possibly due to the removal of food and gadget shops. -------------------------------------------------------------------------------- 3664467d6e | mgdelmonte | 2021-12-01 11:04:50 -0800 bugfix: lua moninf_get_flags must init flags Function fails until flags are initialized, which for now only happens if you call `is` first, at least once, with a string. -------------------------------------------------------------------------------- 85d866c40e | robertxgray | 2021-12-01 11:01:39 -0800 Exclude hidden spells from the memorisation tab -------------------------------------------------------------------------------- 79cf1ff08c | Brian Power | 2021-12-01 09:32:09 -0800 hint mode: prevent temporary portals being misindentified as downstairs -------------------------------------------------------------------------------- 8735e2aeb5 | Kate | 2021-12-01 16:52:37 +0000 Adjust some deck descriptions Conveniently also prevents gather_items from claiming that there exists a "deck of at one's foes (or, if unlucky, at oneself)." Probably the script should also be reworked somehow to avoid similar things happening again elsewhere in future. -------------------------------------------------------------------------------- dd2fe8c8b9 | Kate | 2021-12-01 16:40:22 +0000 Add some missing books to gather_items -------------------------------------------------------------------------------- 86362df473 | Kate | 2021-12-01 16:18:20 +0000 Remove some unused handling for book trove tolls -------------------------------------------------------------------------------- 0325d80940 | Kate | 2021-12-01 15:43:42 +0000 Remove an obsolete trove message -------------------------------------------------------------------------------- a7f8b01127 | Aliscans | 2021-11-30 18:38:00 -0800 Remove "const" from the parameter to seen_item(). 751e42844d described removing the const from a reference within seen_item() as a "major hack". 11 years later, fixing this involves removing the const from this function and one additional method, with no changes needed for stack_iterator. -------------------------------------------------------------------------------- 8d97f0daa7 | paul | 2021-11-30 17:37:22 -0800 A couple small barding cleanups I was reading some Palentonga code to try to be less bad as them and came across two things that looked like reasonable cleanups. * Comment in acquire.cc suggests only nagas have increased chance to acquire a barding but I think it applies to palentongas too since it's based off you.wear_barding(). * wears_barding() checks the SPF_SMALL_TORSO flag instead of SPF_BARDING which works because they both apply to the same species but I assume is just coincidental. Tested out trying to wear bardings and acquire a bunch on nagas/palentongas and humans as a control and I don't think I broke anything. -------------------------------------------------------------------------------- 880e0f58e3 | Aliscans | 2021-11-30 17:34:00 -0800 Add "flight" to the stash search prefix for armour "of flying". Searching for "fly" returned any equipment which gives flight, but not potions, and searching for "flight" returned potions and artefacts, but not boots of flying (as "find" searches artefact descriptions, but not ego item ones). This change means that a search for "flight" finds everything. -------------------------------------------------------------------------------- d52952e488 | Martin Kennedy | 2021-11-30 17:29:38 -0800 fix: typo: Correct a typo in the description of the Book of Pain -------------------------------------------------------------------------------- 2dcde036d2 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Make Swamp a bit more magical Give out guaranteed wands to swamp-exclusive Eleionomae and Fenstrider Witches - on average, about 5 wands per Swamp, about 10% of the total generated over the course of a game. This is intended to be something of a counterpart to the ammo generation in Shoals, and to complement the earlier reduction of wand charge generation. We can increase these numbers farther if need be. -------------------------------------------------------------------------------- cca59f9bd0 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Update a hacky comment -------------------------------------------------------------------------------- 34a2937e56 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Reduce mid/late-game wand charges Wands can be a fun and exciting tactical tool. Deciding how much to invest in Evocations to power them up is a cool strategic choice, and limited charges make for tough usage decisions. In the late game, though, most characters will have more wand charges than they know what to do with. This feels bad (picking up essentially valueless wand charges, since you'll never use them up), and makes the game less interesting. To compensate, starting around D:8, halve charge generation for most wands (excepting the already-scarce /digging). Following the earlier reduction in throwing ammo generation, this should hopefully keep wand charge limits more relevant into the late-game. -------------------------------------------------------------------------------- 47ffb9280c | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Erase DROPPER_MID_KEY on pickup So that if you poly a monster (causing it to drop its weapon), the monster picks it up, and you then disarm that monster, they won't pick it up again. -------------------------------------------------------------------------------- f2ff745afe | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Simplify monster pickup logic Now that monsters don't normally pick up seen items, most of this was irrelevant. (And it broke monsters picking up items when poly'd.) -------------------------------------------------------------------------------- 94437a2481 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Revert "Don't let monsters pick up seen items they've dropped" Broke monsters picking up items after poly. No longer needed after bc3f381ebcfc7bc390c3495e054d1fb84b63bb7e. This reverts commit 2d6b87359491cf4d84fe175b5a7c57c56e3f85ff. -------------------------------------------------------------------------------- 2ccdaddb72 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Limit explore shafts to 1/branch/game Being shafted is a fantastic experience - it can be hard to survive, but can create truly deep, memorable tactical challenges. However, its charm wears on repeated exposure. Let's limit players to one shafting per branch per game. -------------------------------------------------------------------------------- a7c9fdd7d1 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Allow shafting the player on stairs Vaguely buggy not to. -------------------------------------------------------------------------------- 86c161e70f | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Retheme explore traps Exploration effects are themed as 'traps', but work quite differently from the features. Rather than existing in fixed locations that the player can stumble into, explore 'traps' have a chance of triggering whenever new terrain is revealed. This commonly occurs when the player goes down stairs, or even without any action from the player at all (when a monster opens a door). Players are frequently (and understandably) confused by this - how did they 'stumble into a teleportation trap' without going anywhere? Instead, attribute these events to an unspecified 'malevolent force', spontaneously causing bad things to happen to the player. This is also intended to offer potential for expansion, allowing new and exciting bad things to happen to the player. (What if the player could be shafted from Depths straight to Hell?) -------------------------------------------------------------------------------- 7bd870e236 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Add wizmode explore trap command -------------------------------------------------------------------------------- 12e872d363 | advil | 2021-11-30 10:35:46 -0500 docs: edits to attributes section of manual Mostly, better paragraph breaks. -------------------------------------------------------------------------------- ab84650245 | advil | 2021-11-30 10:07:15 -0500 refactor: wrap Dg species gain in a mutation This is much cleaner than species checks, and lets the mutation menu describe the exact statgain behavior. -------------------------------------------------------------------------------- 42eb19b844 | Nicholas Feinberg | 2021-11-29 21:45:58 -0800 Remove get_stat_gain_multiplier (ebering) Rendered unhelpful by 03ef38a5c2cf. A bolder soul than I can add a MUT_BIG_STATS for demigods, if they so desire. -------------------------------------------------------------------------------- 03ef38a5c2 | Nicholas Feinberg | 2021-11-29 21:40:07 -0800 Give 2 points per attribute choice The attribute choices at XL 3, 6, 9 and so on accumulate into interesting decisions. Being able to shift your character toward a given stat by a total of 9 points over the course of a character can make a real impact. However, each individual choice is almost meaningless - 1 point in any attribute has approximately no impact. To make players' choices meatier and more impactful, shift the choice to only occur every 6th level (XL 3, 9, 15, 21, and 27), and to give 2 points per level-up. This is a minor player buff (attributes are recieved earlier, and 1 more point is receieved total), but we'll nerf em in some other way sooner or later. Hopefully this won't be too confusing. Demigods are unaffected. -------------------------------------------------------------------------------- f78dbcb89b | Nicholas Feinberg | 2021-11-29 21:25:10 -0800 Nerf merfolk impalers/javelineers Javelineers are the deadliest enemy in Shoals, and it's a bit odd that they are. A common nice dynamic in Crawl is that the closer you get to an enemy, the more dangerous they are (so closing in to melee is a risk). Occasionally, we toss in a curveball and have enemies that are neutered in melee, eg centaurs. But javelineers are just consistently deadly at all ranges. That's not awful, but it seems like in melee, other enemies should be nastier. So, drop javelineer damage by 5 (from 27 [with javelin] to 22), and remove 2 EV (14 -> 12) and 5 avg HP (78 -> 73). Also pull back on impalers slightly, as a belated response to melee enemy buffs from weapon delay changes. (Damage with trident down from 34 to 31.) This might make Shoals a bit closer to Snake and Swamp in overall difficulty (varying with character, of course), which seems good. -------------------------------------------------------------------------------- 0ea205dc43 | Nicholas Feinberg | 2021-11-29 21:25:07 -0800 Initialize a variable -------------------------------------------------------------------------------- 2ad3dba794 | Kate | 2021-11-30 03:09:06 +0000 Adjust summon spell targeters Summons can be placed on the other side of grates/statues, so update their targeters to reflect this. -------------------------------------------------------------------------------- 04878082bc | Kate | 2021