-------------------------------------------------------------------------------- 143b1e81fc | elliptic | 2023-09-24 00:45:00 -0400 Make heavier body armour less common from acquirement. I have no clue whether this is a significant change in practice and this body armour weighting code should really be replaced with something less spoilery and impossible to understand, but this has been bugged since 0.17 (47d87d71 removed this abs alongside other changes and refactoring) and at least now the "highest chance when armour skill = (displayed) evp - 3" comment isn't lying. -------------------------------------------------------------------------------- 2a533130d9 | Kate | 2023-09-24 00:58:48 +0100 Prevent blessed weapons generating without holy brand (qwqw) -------------------------------------------------------------------------------- f545646a5b | Kate | 2023-09-23 22:16:42 +0100 Adjust a Ru hint (Ge0ff) -------------------------------------------------------------------------------- b7646bb5e3 | Kate | 2023-09-23 21:55:03 +0100 Adjust tense in a rampage message And its equivalent message for Line Pass/Power Leap. -------------------------------------------------------------------------------- 2ae921e79e | Kate | 2023-09-23 21:55:03 +0100 Fix a hint -------------------------------------------------------------------------------- a5cc291a1b | gammafunk | 2023-09-23 11:49:22 -0500 fix: Use stone in a runed door vault (Ge0ff) For minivault_13, use stone for the walls sealed by the runed door, otherwise the vault can generate monsters than can dig free. -------------------------------------------------------------------------------- f28bc0971e | Kyle Rawlins | 2023-09-23 11:36:17 -0400 fix: guard against the most obscure possible octoring case -------------------------------------------------------------------------------- e5246a80f4 | Kyle Rawlins | 2023-09-23 11:05:27 -0400 fix: tighten an octoring assert This octoring check should at least be applied during tests; this change strengthens the check quite a bit (possibly too much, see comment). (Note that tests are still passing, at least in one-off local runs.) -------------------------------------------------------------------------------- a682863bf0 | gammafunk | 2023-09-23 09:45:38 -0500 fix: Use stone glass in a runed door vault (CarefulOdds) For minmay_expanding_circles, use stone glass instead of rock so that any monsters behind the runed door can't dig out. -------------------------------------------------------------------------------- 2b794fb95e | Kyle Rawlins | 2023-09-23 10:38:24 -0400 fix: add octoring handling for unrand lookup Also, unrand status handling altogether to some code that is maybe only used in wizmode? -------------------------------------------------------------------------------- d5cc6f37b9 | Kyle Rawlins | 2023-09-23 09:57:59 -0400 fix: fix fix -------------------------------------------------------------------------------- 532e591ea2 | Kyle Rawlins | 2023-09-23 09:52:29 -0400 fix: unrand generation logic in the abyss If an acquirement scroll was read in the abyss, the previous iteration of this logic would allow unrands *only* if they were lost in the abyss, which wasn't intended. I think it would also potentially break logic for items marked as lost in the abyss when *not* in the abyss. -------------------------------------------------------------------------------- f6de2f5ab6 | gammafunk | 2023-09-22 16:19:03 -0500 feat: A lua api for Okawaru capstone gifts This commits adds the lua hooks c_choose_okawaru_weapon() and c_choose_okawaru_armour() to allow automatic choice in the acquirement menus for Okawaru gifts. This is the same method used for lua handling of acquirement scrolls. We add an argument to items.acquirement_items() to request items for a specific source of acquirement. I've just chosen integers values, starting at 1 for the scroll, 2 for Oka weapon acquirement, and 3 for Oka armour acquirement. There's currently no support for checking whether these one-time abilities have been used. The you.one_time_ability_used() interface won't work both because it's currently not used for Oka's capstones and because there are two separate capstones. The latter isn't compatible with the simple boolean values in the FixedBitVector used by player::one_time_ability_used. Rather that trying to generalize this, I'm leaving it to lua scripts to check the ability table to verify availability cache whether the player has used them. -------------------------------------------------------------------------------- e7c7cf74f0 | elliptic | 2023-09-22 01:51:10 -0400 Bias Oka armour acquirement towards body armour. Old Oka gifts had this bias, so let's bring it back here as an effort to counteract the phenomenon of getting 4 not particularly exciting aux slot armour options and being sad that you only get to pick one - great body armour can potentially be far more exciting than other slots. -------------------------------------------------------------------------------- 073b73dce1 | elliptic | 2023-09-22 01:47:06 -0400 Make acquire.cc less divine. The divine parameter in acquire.cc obscured what was going on (e.g. new Oka armour/weapon gifts set it to false) and was redundant with the agent parameter. This commit is mostly a refactor removing the parameter - the only functional changes should be to Xom acquirement gifts, which lost some special-casing that was shared with Trog or (old) Oka gifts for simplicity. Specifically, Xom armour acquirement is no longer biased towards body armour like old Oka gifts and Xom weapon acquirement now uses the stronger skill weighting of scroll of acquirement instead of the weaker skill weighting of Trog gifts (and old Oka gifts). I doubt this significantly changes Xom balance. -------------------------------------------------------------------------------- d61d57ddb1 | Kyle Rawlins | 2023-09-21 17:47:30 -0400 lint: checkwhite? -------------------------------------------------------------------------------- 7e855b048f | Kyle Rawlins | 2023-09-21 17:45:56 -0400 feat: mention (e)quip in tutorial 3 On the theory that the (e)quip menu is simpler for new players to understand, this adjusts a few things in tutorial 3 so that they teach this key. I didn't actually remove mention of the specific keys, so it does risk even more information overload. The tutorial summary is also expanded and refactored. -------------------------------------------------------------------------------- 3877ef4a19 | Kyle Rawlins | 2023-09-21 17:14:28 -0400 fix: fit tutorial 1 summary into one fewer lines Condense a line of this tutorial summary away. This summary was 23 lines long. When this is displayed as a popup in console at 80x24, the more message + spacer eats two lines, which obscures the last line of this summary. -------------------------------------------------------------------------------- 8fc83f02d9 | Nicholas Feinberg | 2023-09-21 11:15:20 -0700 Fix the build -------------------------------------------------------------------------------- 3021e91290 | Nicholas Feinberg | 2023-09-21 10:25:50 -0700 New new iron shot: Bombard Leda's Unmaking felt a little too unimpactful - Iron Shot with a little mud spattered on. Try stealing some new tech from Mule and re-replace it with Bombard, which sends you back a tile when you cast it. Might need to nerf the damage a bit more or make the knockback only a chance (e.g. a coinflip). -------------------------------------------------------------------------------- bd3c83e6a7 | brandon s allbery kf8nh | 2023-09-21 08:37:06 -0700 Explicitly qualify std::move and std::forward Clang++-15 now warns about all unqualified uses of `std::move` and `std::forward`. According to https://reviews.llvm.org/D119670?id=408276 this is a new recommendation by the C++ standards committee, due to "concerns that this might be an usual anti pattern particularly britle worth warning about - both because move is a common name and because these functions accept any values". -------------------------------------------------------------------------------- a77100ea1a | Nicholas Feinberg | 2023-09-20 21:59:39 -0700 Fix Mule reflection crash (elliptic) -------------------------------------------------------------------------------- 9fc3694601 | Nicholas Feinberg | 2023-09-20 21:54:03 -0700 Small boulder buffs Reduce wobbliness and increase structural stability. -------------------------------------------------------------------------------- 3bb973df9e | Monkooky | 2023-09-20 20:31:58 -0500 Fix torpor snail slow Torpor snails currently allows you to clear any other slow, by walking into the snail's LOS then leaving it. This fixes that. [ Committer's note: Squashed, Closes #3313. ] -------------------------------------------------------------------------------- c8a3e26bd0 | Implojin | 2023-09-20 18:43:06 -0500 Slightly increase orb floor drop rate (again) Continuing from 548886b2ed for the same reason (plenty of monsters generate with other kinds of shields as gear, but not orbs), let's again bump the floor orb drop rate slightly. No comp for other weightings: 548886b2ed silently adjusted the total weights here from 60 to 58. -------------------------------------------------------------------------------- 0bc164a743 | Kate | 2023-09-20 12:16:28 +0100 Refactor _acquirement_item_def To make it clearer that this parameter isn't equivalent to the "divine" variable used by acquirement_create_item. -------------------------------------------------------------------------------- e1f4d4d48a | Kate | 2023-09-20 12:16:22 +0100 Fix Okawaru capstone acquirements having lowered quality Confusingly, only the missile gifts should be treated as "divine", since this affects the quality of acquired items in various ways (reduced skill weighting, worse brands, etc). The capstones are intended to be at scroll acquirement level of quality. -------------------------------------------------------------------------------- eb2ac4d552 | Nikolai Lavsky | 2023-09-20 12:47:56 +0300 fix: replace Portal Projectile with Dimensional Bullseye in a shop `nicolae_custom_books` still had Portal Projectile in a few self-published books, even though it's no longer a player-castable spell. Replace it with Dimensional Bullseye, which seems to fit the theme of the relevant spellbooks. Resolves #3311. -------------------------------------------------------------------------------- 95b03c3367 | elliptic | 2023-09-19 21:01:16 -0400 Tweak Okawaru missile gift timing/timeouts. This tries to roughly approximate the old missile gift frequency and overall piety drain from timeouts. In particular, missile gifts were moved to 5* (from 3*); they were quite rare before 5* anyway unless you trained Throwing a lot. Also, this commit removes the spoilery impact of Throwing skill on throwing gift frequency/piety drain rate. More tweaks will probably be needed, since this tweak is purely theoretical based on my (possibly flawed) reading of the code and the other Oka gift changes will impact Oka balance too. -------------------------------------------------------------------------------- 46d7d4cff6 | elliptic | 2023-09-19 21:00:34 -0400 Fix Okawaru missile gift stacks being ten times as large as intended. -------------------------------------------------------------------------------- c67433417a | Kyle Rawlins | 2023-09-19 15:41:09 -0400 fix: don't truncate headings when calculating column layouts This was a bit of code that was incomplete in the multicolumn layout code, where it was intended that headings always occupy their own row. The side effect of it being unimplemented was that even for regular 1-column menus, headings could get truncated if they were longer than regular menu items. (No current multicolumn menus use headings, so this remains a bit under-tested.) Resolves #3305 -------------------------------------------------------------------------------- bc85d14992 | Kate | 2023-09-19 19:55:56 +0100 Replace Okawaru's gifts with capstone acquirements Replacing the (often low-quality) weapon and armour gifts when gaining piety, give Okawaru two capstone abilities gained at 6*, offering two separate acquirement-quality selections - one of weapons, and one of armour. Okawaru still grants throwing weapons regularly, but will no longer give weapons or armour over time. The gift timeout on throwing weapons is slightly increased to compensate for the fact that the longer gift timeouts from weapon/armour gifts no longer apply (but this may need further fine-tuning). -------------------------------------------------------------------------------- 6bc09d010c | hellmonk | 2023-09-18 15:40:52 -0400 Revert "add readme and ci" This reverts commit 6ae0a060256104c6a1ce545c6cb28a428d641ad2. -------------------------------------------------------------------------------- 6ae0a06025 | hellmonk | 2023-09-18 15:36:09 -0400 add readme and ci -------------------------------------------------------------------------------- 356b232404 | Kyle Rawlins | 2023-09-18 09:51:20 -0400 fix: a crash due to bad easy_floor_use code The item use menu, for historical reasons, does some of its logic outside of the menu code proper. This commit fixes a crash that resulted from an ad hoc use of a keycode on menu exit to handle the easy_floor_use case, where that keycode could also be set by normal menu code via processing of CMD_MENU_CYCLE_HEADERS. Instead, just add a bool to specifically handle this return case. The preconditions for this crash are an empty menu, which possibly should be prevented (see 6eb203de8ee), and if allowed, could stand to have better ui. But an empty menu still shouldn't crash. -------------------------------------------------------------------------------- 4b2e6d12cb | Kyle Rawlins | 2023-09-18 09:28:11 -0400 Revert "Temporarily disable tab-to-toggle-(un)wield (Darby)" This reverts commit 6eb203de8eedc1ca9851bf46ce9fca1c41805539. -------------------------------------------------------------------------------- 5eb97db20b | Nicholas Feinberg | 2023-09-17 20:33:49 -0700 Allow fragging boulders (Lightli) -------------------------------------------------------------------------------- c751ee2058 | Nicholas Feinberg | 2023-09-17 20:11:45 -0700 Identify un-ID'd randbooks when read Can't miss out on those exciting names :) -------------------------------------------------------------------------------- 1a4ebe560d | Nicholas Feinberg | 2023-09-17 20:06:26 -0700 Fix missing book articles (elliptic) A leatherbound book, not just leatherbound book. (Cont'd from 4455d0aa58...) -------------------------------------------------------------------------------- 4455d0aa58 | Nicholas Feinberg | 2023-09-17 20:01:54 -0700 Re-identify sif book gifts Cont'd from 658a57c81a4f6df, bb03a45e84812a8b891. -------------------------------------------------------------------------------- 6eb203de8e | Nicholas Feinberg | 2023-09-17 19:45:23 -0700 Temporarily disable tab-to-toggle-(un)wield (Darby) Crash-y. We should add logic to check whether the opposite operation is valid, only display & obey the control when it is, and bring this function back. -------------------------------------------------------------------------------- 672be3cf0e | Nicholas Feinberg | 2023-09-17 19:36:08 -0700 Fix floor talisman crash (particleface) Don't crash when evoking an illegal floor talisman, e.g. when undead or in a forced form. -------------------------------------------------------------------------------- bab767e8fe | Nicholas Feinberg | 2023-09-17 18:30:52 -0700 Reduce boulder wobbliness (elliptic) -------------------------------------------------------------------------------- a445dbd2db | Nicholas Feinberg | 2023-09-17 12:49:23 -0700 Tweak Lugonu powers description (TenthLevelVegan) -------------------------------------------------------------------------------- 59c20c4c50 | Nicholas Feinberg | 2023-09-17 11:56:32 -0700 Credit Cureja -------------------------------------------------------------------------------- 6a5aa610a2 | Nicholas Feinberg | 2023-09-17 11:51:25 -0700 Give boulders a flarhgunnstow (elliptic) Experimentally, to push Brom's Barrelling Boulder toward an appropriate power level for a start-book spell, add a 1/3 chance per move of the boulder wobbling to one side while rolling. This makes it fairly prone to hitting the sides of corridors, for example. -------------------------------------------------------------------------------- 141e18f675 | Nicholas Feinberg | 2023-09-17 11:21:36 -0700 Fix deterministic poison + "harm (elliptic) Multiply poison at time of application rather than at time of damage, to keep the poison display accurate. -------------------------------------------------------------------------------- eda3e60247 | Nicholas Feinberg | 2023-09-17 11:19:00 -0700 Fix toxic bog KILLED_BY (DracoOmega) It should be KILLED_BY_BEAM; _BY_POISON is only for actual poison over time damage. -------------------------------------------------------------------------------- eadacf9148 | Nicholas Feinberg | 2023-09-17 10:06:33 -0700 Fix: large boulder issues (Bardcore) Add a description and make it giant, so that we don't have to worry about handling nets or webs. TODO: check handling of constriction. -------------------------------------------------------------------------------- b9f6cac5a1 | elliptic | 2023-09-17 11:45:32 -0400 Tweak the launcher loot in wizlab_tukima. Make the (potential) randarts a mix of penetration and speed instead of just speed, and don't generate a non-artefact triple crossbow of penetration (since generating an artefact instead). This wizlab still has a high chance of generating the best launcher in your game, but a much lower chance of generating the best launcher in 100 games. -------------------------------------------------------------------------------- 7818237a85 | Kate | 2023-09-17 15:59:31 +0100 Remove a redundant explosion from a description -------------------------------------------------------------------------------- 93f5cd52f0 | Kate | 2023-09-17 15:50:45 +0100 Fix a missing spell description (Sergey) -------------------------------------------------------------------------------- 3199509076 | Kate | 2023-09-17 15:40:30 +0100 Use some canned messages for ability cooldowns -------------------------------------------------------------------------------- 3e901ae6a7 | Kate | 2023-09-17 15:40:30 +0100 Increase Blink's base cooldown The cooldown previously had a base duration of 1-2 turns plus a power-dependent duration, and at full power it was eliminated entirely. Instead give it a base duration of 2-4 turns, which still remains at full power. (In practice the duration is actually 1-3 turns, since the turn spent casting it counts towards the cooldown.) -------------------------------------------------------------------------------- ce1d0c9d47 | Kate | 2023-09-17 15:40:30 +0100 Revert "Allow cancelling/dispelling -Blink" Unlike -Move and -Tele which are debuffs applied by monsters/miscasts, -Blink is strictly a spell cooldown, comparable to the cooldowns on Death's Door, Polar Vortex, Ru's abilities, etc. As with all of these, it shouldn't be dispellable in the same way that standard status effects are. This reverts commit b47e89e9764e3024b6e00f44f3f2080c2a483cd6. -------------------------------------------------------------------------------- 3fee5d3b0d | Kate | 2023-09-17 15:40:30 +0100 Let Dimensional Bullseye be dispelled on targets It was already dispellable but only on the player side. -------------------------------------------------------------------------------- 6c5bf4ee3b | Kate | 2023-09-17 15:40:30 +0100 Adjust wording in a Sigil of Binding message -------------------------------------------------------------------------------- 0d66cbabe8 | elliptic | 2023-09-16 17:03:24 -0400 Species selection screen: DE -> Simple, Gh -> Intermediate, lower At. DE is very simple (no mutations!) and has always been a popular choice for a first casty character. Gr and Dr make fine casters too but they are less obviously casting-devoted, so having a simple casting option in Simple seems good. Gh is reasonably simple if you play it as a heavy-armour Tr, but the low Int/Dex can make it sort of miserable if you deviate much from that without knowing exactly what you are doing. Having it next to Tr seems not great. At was moved closer to the end of Simple because although it's generally considered strong, it does have a solid number of weirdnesses (double potions, weird body armour valuation, rampage). -------------------------------------------------------------------------------- bb03a45e84 | Nicholas Feinberg | 2023-09-16 10:34:15 -0700 Fix randbook names -------------------------------------------------------------------------------- a33818d538 | elliptic | 2023-09-16 12:26:56 -0400 Make Chei piety gain only depend on monster base speed (hellmonk). Previously players could gain more Chei piety while killing the same monsters by going into statueform, waiting for the monster to haste itself, not using abilities that slow the monster, and so on. This was fairly insignificant in practice, but still a concern. This commit simplifies Chei piety gain to only care about the monster's base speed (and not any modifiers or the player speed). Instead of only giving piety for monsters faster than the player, Chei only gives piety for monsters who are speed 10 or faster. This has the largest impact on spriggans, who will now gain piety from regular speed monsters as soon as they worship Chei instead of having to find fast monsters to kill to gain piety at the start. The dependence on player speed was relatively small for non-spriggans in the old system; a human worshipping Chei and killing a speed 10 monster progressed from a 1+3/12 piety multiplier at start to a 1+5/12 piety multiplier at max slowness. This commit replaces that with a global 1+4/12 piety multiplier. This commit also increases the bonus for killing fast monsters, to compensate for no longer giving piety for slow monsters who are still faster than the Chei-slowed player. -------------------------------------------------------------------------------- 505c3d19dc | Nicholas Feinberg | 2023-09-15 21:11:46 -0700 Make formless jellyfish poisonous (elliptic) To clarify that rPois affects their sting. This is 100% and purely for thematic reasons, and there's a reasonable argument that their sting should be rethemed to affect rPois players. -------------------------------------------------------------------------------- d226941206 | Nicholas Feinberg | 2023-09-15 20:34:07 -0700 Make flux form prettier (fbwer) Per request, change the console glyph from radroach to shapeshifter. I hope this brings joy to both all and sundry. -------------------------------------------------------------------------------- 900534bfaf | Nicholas Feinberg | 2023-09-15 20:27:55 -0700 Continue to nerf Jeremiah Killrate too high. Too many dead players. Reduce dead player count slightly. -10% HP, -20% cast rate, -a bit of melee damage. Fix dialogue. -------------------------------------------------------------------------------- 658a57c81a | Nicholas Feinberg | 2023-09-15 20:23:21 -0700 Fix display of part-ID'd artefact jewels (Undo) Instead of "the ring of Maso {Int+6}", show "a twitching amber ring of intelligence" until you fully ID the ring. The former was misleading - it looked like a very bad randart! This change will cause other bugs and is very silly. -------------------------------------------------------------------------------- 80d2040ea8 | Nicholas Feinberg | 2023-09-15 20:04:37 -0700 Make jellyfish para twice as good (elliptic) Remove the coinflip chance for it to fail after post-AC damage. -------------------------------------------------------------------------------- 3d1776edcb | DracoOmega | 2023-09-15 19:31:28 -0700 Brom's Barrelling Boulder (L4 Earth/Conj) This spell creates a boulder in an adjacent tile to the player, which then moves in a straight line in that direction. If the boulder tries to move into a creature, it will damage it (and step into its tile if it dies in the process). If the creature survives, it will be pushed back *and so will every creature adjacent to it in a line*, effectively bowling an entire line of enemies backward. The boulder is a regular 'creature' that can be damaged, and takes self-damage whenever it hits a creature (so that it will eventually die even in the process of rolling over things). If it hits a wall, it will immediately explode into a minor sharpnel explosion. (Like iood, it also disappears if it leaves the player's LoS) The spell is fun to play with and feels significantly different than iood in its uses. (Currently level 4 Conjurations/Earth. I sort of wanted it to be pure Earth, but fear it would be too accessible at 4, and not able to fit into the starter book at 5 (and then it's competing against LRD at that level anyway....)) [Committer's note: refactored, bugfixed, and rebalanced. Very concerned that this spell is wildly overpowered, but not being castable in melee is a real restriction... seems fun to try out, at least. Also added this to the EE start book, as seemed to be intended from the commit message.] -------------------------------------------------------------------------------- 67fe2935dc | Nicholas Feinberg | 2023-09-14 17:54:18 -0700 Be more pessimistic in @ (riverfiend) Let players know when their shields and/or armour are slowing their attacks by at least 0.05, instead of rounding down at 0.1. -------------------------------------------------------------------------------- 8440623082 | Nicholas Feinberg | 2023-09-14 14:15:53 -0700 Remove unidentified decks ' description. Continuing from e45b02a626603baa917b118212daf77ed0a4bb4b (2018). -------------------------------------------------------------------------------- a522cfaf1d | Nicholas Feinberg | 2023-09-14 14:15:03 -0700 Nerf G&G and GotG Gyre, Gimble and Glaive of the Guard were quite busted. They're probably still busted, but maybe more reasonably so. -------------------------------------------------------------------------------- 1b212f6383 | Nicholas Feinberg | 2023-09-14 14:11:57 -0700 Adjust new Hexslinger spell descriptions (🐙Mike) Try to clarify what's going on with each. -------------------------------------------------------------------------------- 2dc9076e4e | Nicholas Feinberg | 2023-09-14 13:44:44 -0700 Revert "Make Inner Flame irresistable" This was wildly busted. Inner Flame was quite powerful enough before. This reverts commit a7a09d1bdf0350176ee9d0e5c956576bfa06e425. -------------------------------------------------------------------------------- fb43ecf041 | Nicholas Feinberg | 2023-09-14 11:16:43 -0700 Reduce fungal nostalgia (CanOfWorms) -------------------------------------------------------------------------------- 645550293d | hellmonk | 2023-09-14 10:14:19 -0700 feat: Reworked collapsing volcano A try at improving one of the least popular volcano maps. Closes #3215. -------------------------------------------------------------------------------- ee50f9274c | Medrano83 | 2023-09-14 10:10:24 -0700 New init file option: lua_max_memory The max memory in MB allowed for user Lua scripts is only configurable via command line options. Setting this value in the init file can be useful in platforms where the command line is not available, e.g. Android. -------------------------------------------------------------------------------- e94db9e091 | Medrano83 | 2023-09-14 10:08:22 -0700 New option use_terminal_default_colours Use the terminal's default foreground and background colors. This can be used to enable a transparent background. Closes #2534 -------------------------------------------------------------------------------- 44fb0289a7 | Nicholas Feinberg | 2023-09-14 10:06:29 -0700 Tweak auto-travel to adjacent squares Refactor to dedent, and don't bother prompting players. (Prompts are evil and only cause pain.) Merges #3250. -------------------------------------------------------------------------------- ec6b7dd1af | cureja | 2023-09-14 09:55:35 -0700 feat: Auto-travel to traversable squares next to non-traversable ones Added UI improvement that makes it so if the player selects a non-traversable target with a traversable cell adjacent, prompt before failing and allow the user to go to the closest adjacent cell instead. This feature doesn't affect controls that wouldn't have invoked the "Sorry, I don't know how to traverse that place." msg. This is intentional. While using touch controls or within the current view, it should be following the current idea to not spam the user with prompts and messages on easy misclicks. This feature could also be expanded to have an options for always saying yes to the prompt, increased radius for the check (and corresponding option for it). This feature request originated from the wiki on UI Improvements -------------------------------------------------------------------------------- 7e385a8f09 | RypoFalem | 2023-09-14 09:53:06 -0700 feat: Note when Maurice steals items/gold Maurice's sleight of hand may go unnoticed by a player; leaving a player who escaped confused by thier mysteriously light pockets. Note the appropriation in the dump/morgue to help players find thier missing loot. Having things stolen is funny so recording this also makes for more interesting morgues. -------------------------------------------------------------------------------- 72ee4cea48 | Monkooky | 2023-09-14 09:44:53 -0700 Publish a cookbook Closes #3296. -------------------------------------------------------------------------------- e0ecf0ced4 | Quinten Konyn | 2023-09-14 09:41:43 -0700 Fix "I'll leave it outside" shop message When purchasing items from a shop when you don't have sufficient inventory space, a message is supposed to appear that notifies you that the shop keeper will put the items on the ground for you. This message was not appearing because it was being immediately reset with line 1328 (update_help) before ever getting drawn. This fix changes update_help based on whether the last command caused items to be left outside. Closes #3149. [Committer's note: I share the author's concerns about whether this is the cleanest way to fix the bug, but don't have time to dig further into menu code.] -------------------------------------------------------------------------------- a7962925eb | Nicholas Feinberg | 2023-09-14 08:36:47 -0700 Take another shot at Jeremiah's description Try to resolve some disfluencies. -------------------------------------------------------------------------------- fe7b580527 | hellmonk | 2023-09-13 21:28:54 -0400 better peek status fix Accounts for delver. -------------------------------------------------------------------------------- a1453ea1fc | hellmonk | 2023-09-13 21:28:54 -0400 checkwhite -------------------------------------------------------------------------------- 12535ecb4f | hellmonk | 2023-09-13 21:28:54 -0400 don't peek on D:1 entrance -------------------------------------------------------------------------------- b8176ab9f1 | hellmonk | 2023-09-13 21:28:54 -0400 fix double portal messages (descent) (real) -------------------------------------------------------------------------------- e8284cb111 | Nicholas Feinberg | 2023-09-13 12:15:24 -0700 Fix the (elliptic) -------------------------------------------------------------------------------- b7a3900dc0 | Nicholas Feinberg | 2023-09-13 11:33:59 -0700 Init skip autofight check (Ge0ff) -------------------------------------------------------------------------------- bc345e7fcb | Kyle Rawlins | 2023-09-12 15:09:51 -0400 fix: tags.cc fixup for monster tile prop type change cb44df74be1 changed the type of this prop from short to int, which led to save compat crashes. be3b949103aec has a temporary fix at the point of the crash. This commit moves the fix to tags.cc so that it happens on load, and can be more easily kept with other save compat code. -------------------------------------------------------------------------------- 45f7035092 | Nicholas Feinberg | 2023-09-12 10:06:36 -0700 Continue removing Stuck -------------------------------------------------------------------------------- 4b8cbeaf33 | Nicholas Feinberg | 2023-09-12 09:21:28 -0700 Fix tag upgrade build? -------------------------------------------------------------------------------- be3b949103 | Nicholas Feinberg | 2023-09-12 09:03:30 -0700 Fix save compat? Very unclear to me what's going on here. (This was caused by cb44df74be13a44.) -------------------------------------------------------------------------------- 87205ac768 | Nicholas Feinberg | 2023-09-11 22:16:50 -0700 Checkwhite -------------------------------------------------------------------------------- cfa880d796 | Monkooky | 2023-09-11 22:16:25 -0700 remove unused variables -------------------------------------------------------------------------------- 7cf6fccd4b | Monkooky | 2023-09-11 22:15:54 -0700 Reallow gozag title for excessive spenders While it's not technically penance, Descent's debt mechanic is close enough to justify giving out Gozag's penance title -------------------------------------------------------------------------------- 754b9d5b1c | Nicholas Feinberg | 2023-09-11 20:13:30 -0700 Remove Stuck status Replace with -Move -Tele. -------------------------------------------------------------------------------- 1e36db7fc6 | Nicholas Feinberg | 2023-09-11 20:10:00 -0700 Describe foxfire damage in xv (elliptic) -------------------------------------------------------------------------------- 775d53a1b6 | hellmonk | 2023-09-11 23:00:31 -0400 Revert "fix double portal messages (descent)" This reverts commit 2891f507e4c8974e39899099021733ffc0b64d9f. -------------------------------------------------------------------------------- 12d0ffd41e | hellmonk | 2023-09-11 23:00:11 -0400 Revert "fix descent peeking" This reverts commit cef226ec5255e91fa15b8420ad21b111a5c2a68f. -------------------------------------------------------------------------------- cef226ec52 | hellmonk | 2023-09-11 22:40:23 -0400 fix descent peeking -------------------------------------------------------------------------------- 2891f507e4 | hellmonk | 2023-09-11 21:53:37 -0400 fix double portal messages (descent) -------------------------------------------------------------------------------- a75f04deac | Nicholas Feinberg | 2023-09-11 11:04:42 -0700 Fix force-attacks with ranged weapons (dilly) Don't warn the player "you're too injured to fight recklessly" if you're hitting ctrl-right, etc. This code sucks! -------------------------------------------------------------------------------- 983cc26eec | Nicholas Feinberg | 2023-09-11 07:45:19 -0700 Fix the build? -------------------------------------------------------------------------------- cb44df74be | Nicholas Feinberg | 2023-09-11 07:16:47 -0700 Tweak Marshlight appearance Make will-o-the-wisps' foxfires match their colouring, and tweak messaging. This should hopefully make players more scared of them. (At least in tiles, sorry!) Some argument for giving the marshlights a different name and/or a fully separate monster type. This may break save compat. -------------------------------------------------------------------------------- 01b46875f1 | Nicholas Feinberg | 2023-09-10 21:30:40 -0700 Switch out hand cannon smoke (elliptic, CarefulOdds) Smoke was a little too impactful, and also didn't fit The Lore (ha). Switch it out for magical condensation. -------------------------------------------------------------------------------- 6167ad07ae | Nicholas Feinberg | 2023-09-10 21:24:50 -0700 Maybe add a debt description (Aoae) This might not work. I forget if we need to strip off the parenthetical in Debt(x) somewhere. -------------------------------------------------------------------------------- 3c93526463 | hellmonk | 2023-09-10 12:10:00 -0400 more no_descent tagging -------------------------------------------------------------------------------- fd0b5baff3 | hellmonk | 2023-09-10 12:10:00 -0400 fix: don't stair map after using hatch -------------------------------------------------------------------------------- 33397049d7 | hellmonk | 2023-09-10 12:10:00 -0400 allow lair->slime puts Jiyva back in the game, sometimes. -------------------------------------------------------------------------------- 802b72c31d | hellmonk | 2023-09-10 12:10:00 -0400 unbrace -------------------------------------------------------------------------------- 1c7ed170bf | hellmonk | 2023-09-10 12:10:00 -0400 rework descent delver -------------------------------------------------------------------------------- 72e5dbe34a | hellmonk | 2023-09-10 12:10:00 -0400 checkwhite -------------------------------------------------------------------------------- 7577179881 | hellmonk | 2023-09-10 12:10:00 -0400 fix debt bugs -------------------------------------------------------------------------------- 3505057eba | hellmonk | 2023-09-10 12:10:00 -0400 feat: Shorten D to 12 floors (Descent) very worried this breaks something -------------------------------------------------------------------------------- 9a366f9be8 | hellmonk | 2023-09-10 12:10:00 -0400 fix: Don't show offlevel items in descent Bad gamefeel etc. -------------------------------------------------------------------------------- 9427e72f32 | Nicholas Feinberg | 2023-09-10 07:23:15 -0700 Add a no_descent tag to fountain_basement -------------------------------------------------------------------------------- c7603755dd | elliptic | 2023-09-09 15:38:16 -0400 Nerf unwielding (0.3 -> 0.5). Other weapon swaps (wielding, switching from one weapon to another) take 0.5. This is a nerf to repeatedly wielding and unwielding distortion in an emergency, but that doesn't seem like enough of a reason to have a weird duration on this action. -------------------------------------------------------------------------------- e00f3ba22f | DracoOmega | 2023-09-09 15:48:20 -0230 Prevent 'Done Exploring' when the player is fenced in by binding sigils And instead properly show 'Partly explored, can't reach some places.' Some parts of the pathfider code are a mess and needlessly hard to follow. The description for this function in particular had clearly become untrue in the 17 years since it was written, and I'm not even 100% certain this is all it is used for anymore. Maybe it could use a better name? I've tried to edit the comment to be a *bit* less deceptive, though, since it clearly affects exploration pathfinding. -------------------------------------------------------------------------------- 975ee8456d | DracoOmega | 2023-09-09 13:47:49 -0230 Prevent autotravel from moving the player onto binding sigils -------------------------------------------------------------------------------- 1f61f89ab9 | DracoOmega | 2023-09-09 13:47:48 -0230 Make Eruption lava creation slightly more consistent Given that Pyroclastic Surge (in most situations) specifically depends on the combo with Eruption, it was a little weird that Eruption could sometimes not create any lava whatsoever. Instead of an independent coinflip per floor tile in its radius, it now guarantees placing at least 1 lava tile per cast, if possible. (Still has a coinflip for the rest of them) These two commits are effectively a meaningful buff to Tyrants. If this makes them too strong, their numbers can be nudged down somewhat, but I think it's better for the player not to have invisible immunity to their spells in ways that aren't transparent at all. -------------------------------------------------------------------------------- d35ca32644 | DracoOmega | 2023-09-09 13:47:48 -0230 Fix Eruption/Upheaval's tracer thinking it was radius 2 instead of 1. Given that both Salamander Tyrants and Draconian Stormcallers come with bands, this made them unwilling to use it in an enormous number of situations where friendly fire wasn't even possible. (For instance, even in an otherwise empty room, Tyrants could never use it on a turn the player steps away from them in melee - resulting in a chase where they will NEVER stop to cast their big spell). As far as I can tell, this was broken since first implemention. -------------------------------------------------------------------------------- b042b5dc4a | DracoOmega | 2023-09-09 13:47:48 -0230 Fix Starburst only prompting for friendly fire to the right of the player More specifically, it would prompt if anything was in the first beam it traced (which is directly to the player's left). At that point, since the same tracer was reused, the fact that player_tracer didn't reset passed_target meant that it would *see* friendlies in other beam paths, but ignore them. I don't see why setting passed_target to false each time would negatively affect anything, but you never know in Crawl... Also: to avoid the player having to answer y/n once for every single direction that has friendlies, a single yes will bypass future prompts for that one cast. -------------------------------------------------------------------------------- c0fddb96e8 | DracoOmega | 2023-09-09 13:47:48 -0230 Let monspec weights of 0 actually be 0. Instead of being quietly changed to weights of 10. (This is useful for some dynamic depth-based weighting techniques) It's hard to tell if any existing vaults are affected by this, but surely one wouldn't be *relying* on a weight of 0 being actually 10, right? (I sure hope not) -------------------------------------------------------------------------------- 517f4904bd | Kate | 2023-09-09 17:13:22 +0100 Display Dimensional Bullseye to-hit bonus when aiming -------------------------------------------------------------------------------- bb17821c20 | Implojin | 2023-09-09 09:00:38 -0500 Fix a compiler warning (shadowed variable) -------------------------------------------------------------------------------- ecc126b380 | Implojin | 2023-09-09 08:20:50 -0500 Don't describe rings/amulets as talismans Closes #3291. -------------------------------------------------------------------------------- 405de50cea | RypoFalem | 2023-09-09 13:19:33 +0100 Correct a typo (credit to fbwer!) -------------------------------------------------------------------------------- a145531891 | Nicholas Feinberg | 2023-09-08 15:39:27 -0700 Remove a charmingly obsolete comment (Obsoleted by the previous commit.) -------------------------------------------------------------------------------- 1016066182 | elliptic | 2023-09-08 17:43:00 -0400 Actually suppress MUT_CLAWS in bladeform. I believe this doesn't functionally change anything, just makes it clearer to the player that blade hands means their claws are useless. -------------------------------------------------------------------------------- cfe89afef6 | Kate | 2023-09-08 12:27:57 +0100 Fix Dimensional Bullseye crashing when aimed The displayed to-hit percentage is now incorrect when aiming directly at the marked target, as the bonus isn't applied to the to-hit calculation in to_hit_pct() - this will need to be handled separately. -------------------------------------------------------------------------------- f82c85558f | Kyle Rawlins | 2023-09-07 13:34:36 -0400 fix: write milestones to SHAREDDIR, not the save directory Originally, there was no distinction between these directories, and everything went in one place. The shared directory was added primarily for servers that keep multiple crawl versions, so that e.g. all trunk games would write to the same logfile / score file. (Previous to this change, servers used symlinks to accomplish this.) I believe it was just an oversight that milestone writing wasn't changed as well, but writing to what is usually a version-specific save directory breaks milestone writing for new versions unless a symlink is produced. Trunk seeded milestones (which aren't really consumed yet) have mostly been broken since they were created, unfortunately, and no one noticed; more recently, this has affected descent mode on CAO trunk. This change will obviate the need for some of dgl-config's symlink management, but crucially, *only when all earlier trunk versions are gone*. So right now, this is mainly a descent-targeted fix. Famous last words, but as far as I'm aware, this shouldn't change the behavior of any current server setup for regular milestone writing. -------------------------------------------------------------------------------- aea1e32358 | Nicholas Feinberg | 2023-09-07 10:22:18 -0700 Move jinxbite into a fineff Simplify - don't have to worry about it killing the defender mid-attack. Also do some minor refactoring. -------------------------------------------------------------------------------- f13585253f | gammafunk | 2023-09-06 20:57:29 -0500 feat: Add a more convenient exit to a WizLab (elliptic) For Wucad Mu's Monastery, put the exit close to the starting area, since we try to do this in general for portals. Previously the player had to walk pretty far across the map to get to it and may have missed that it even existed. Tweak the layout a bit, removing a room that's no longer used and landscape trees appropriately now that the room is gone. -------------------------------------------------------------------------------- 830162fb6c | DracoOmega | 2023-09-06 22:27:22 -0230 Fix something that got broken by Dimensional Bullseye rebase earlier Not sure how this file's changes just disappeared. Makes me worried something else may have also... >.> -------------------------------------------------------------------------------- 4a7cf283bb | DracoOmega | 2023-09-06 20:33:51 -0230 Fix splitting/merging of creatures sharing some enchants it should not Monster cloning already vetoed copying ENCH_HELD and ENCH_VILE_CLUTCH, but slime creatures / starcursed masses use an entirely different code path that cannot be trivially combined. So for now, do the simple thing of just vetoing sharing a couple enchantments that probably should not be shared. -------------------------------------------------------------------------------- 9db281c723 | DracoOmega | 2023-09-06 20:33:48 -0230 Change Hexslinger starting spells The new spell list is: -Jinxbite -Sigil of Binding -Inner Flame -Cause Fear -Dimensional Bullseye Hexslinger was always troubled. Its spellbook was split across multiple schools, making them tricky to cast, and they still didn't do much without ALSO training ranged weapons heavily. Slow was often a trap and in general the archetype was clunky, without providing sufficient benefit for splitting your skills between weapons and spells. The intent of this change is to provide a smoother curve of castable spells, and more immediate value to training hexes instead of simply ignoring them in favor of being a 'worse hunter'. Jinxbite provides a little immediate power to help deal with earlygame threats with which current hexslinger often struggles significantly. Sigil of Binding provides powerful utility and can help set up Inner Flame triggers in a way that the old spellset could almost never safely do in practice. Portal Projectile was always a spell that was far better late than it was early, and so Dimensional Bullseye is now a capstone that provides even stronger long-term value, but with other easier to cast spells that let you bridge the gap to it better. Cause Fear was always good (if you could manage to survive long enough to have access to it!) and remains untouched. (Also give them 1 starting level of Fire Magic, to help just a little bit with getting Inner Flame off the ground) -------------------------------------------------------------------------------- a7a09d1bdf | DracoOmega | 2023-09-06 20:33:18 -0230 Make Inner Flame irresistable, downscale damage and clouds based on power Inner Flame was a powerful effect when everything worked, but it was often very finicky in practice. Even when the hex landed, early characters would frequently struggle to detonate the creature in a timely manner (and then either fail to get almost any value out of it OR blow themselves up by trying). I don't think that making it always land will make it too strong, since you still need other, less-reliable tools to set it off. But this commit also makes the POWER of the explosion scale with spellpower, now that success chance does not. In practice, this means that spell-based inner flame will usually do less damage and produce less clouds than before (but the former may also make it more usable early on!) but hopefully still feel better to use - especially if trying to set up chain detonations. Scroll of immolation and Guardian Golem should still result in detonation effects identical to before this commit (though its arguable that golem could also use this to downscale its effect at lower power). -------------------------------------------------------------------------------- 74abd10e9e | DracoOmega | 2023-09-06 20:32:54 -0230 Experimental spell: Jinxbite (level 2 Hexes) This spell gives a short self-buff to the player. Whenever they attack an enemy while this buff is active, if that enemy fails a will check, you inflict minor irresistable damage and draining (and some playful messages). I realize draining is commonly necromantic, but several player abilities give clear precedent for it being a source-agnostic (and the number of minor debuffs we can hand out to enemies is a little limited...) The spell can only be cast while a susceptible enemy is in sight and will expire two turns after one no longer is (even if this was just from you turning a corner to wait). Additionally, the player will suffer WILL/2 proportional to the duration of the spell when it is cast. The idea was to create a minor opportunity cost to casting the spell - earlygame the extra benefits are clearly worth it, but should fall off later where you'd be better off just shooting something. Behind the scenes, the base duration of jinxbite is fairly long, but each time it triggers additionally reduces the duration of the buff on you by 4 turns (helping to make the number of triggers you get out of the spell a little more consistent) -------------------------------------------------------------------------------- 470c21bd56 | DracoOmega | 2023-09-06 20:30:26 -0230 Replace (player) Portal Projectile with Dimensional Bullseye Portal Projectile was always in a slightly odd space. Its utility was theoretically quite high, but also fairly situational. It only did anything for one particular archetype, and despite being a low-ish level spell, usually not very useful until midgame (since it also required strong ranged attack to do anything reliable, and earlygame battles were less likely to present targets it was relevant for). Hexslinger was clearly the class that *wanted* to get the most use out of it, but didn't get very much out of pushing for it early. Dimensional Bullseye takes the idea of 'smite-targeted ranged weapons', nudges its level up to 4, and aims to make it more immediately impactful. Now you smite-target an enemy with this spell to create a 'link' beween your ranged weapon and it. And every time you perform a ranged attack aimed at any *other* target (that isn't friendly or firewood), your projectile will teleport to the marked target at the end of the attack, allowing you to hit 2 things at once (with a spellpower-based accuracy bonus against the marked target). It still consumes 1 mp per teleporting shot (this may or may not still be necessary, since it can kill at most one target per cast anyway) and now works with throwing weapons as well as launchers (the throwing ammo will land on the ground at the marked target). I've also made a small tweak to autofight that should hopefully make it disfavor attacking a marked target if an unmarked target is also attackable (so that this doesn't start asking people to manually aim in order to avoid wasting the value of the spell) -------------------------------------------------------------------------------- 574d41e441 | DracoOmega | 2023-09-06 20:30:04 -0230 Add Sigil of Binding: new level 3 Hexes spell This spell creates two sigils on the ground at random locations within 2 tiles of the caster (one at range 1 and the other at range 2). If a creature moved onto a a sigil before it expires, that enemy will be bound in place for several turns. This blocks all movement, but does *not* impair action, evasion, or otherwise make the target more stabbable. When the binding expires, that enemy will become Swift for twice as long as it was bound. Swift enemies are immune to sigils. The duration of the binding scales with spellpower, but is also reduced by the HD of the enemy. Only one cast worth of sigils can exist at a time (recasting will replace them with new ones). The caster is still bound in place if they step on their own sigil, so take care about using it in confined spaces! (Self-binding does *not* scale with spellpower, but the caster also does not become swift afterward) -------------------------------------------------------------------------------- f03d1854d5 | Kate | 2023-09-06 13:00:51 +0100 Clarify shop wording when going in to debt in Descent -------------------------------------------------------------------------------- 409c26aa35 | gammafunk | 2023-09-05 18:03:35 -0500 fix: A bounds check for a clua function (qw) The clua monster info method :can_traverse() didn't do a bounds check on its input coordinates before reading map knowledge, which lead to a crash when the coordinates were out of bounds. -------------------------------------------------------------------------------- 7ce4588941 | Nicholas Feinberg | 2023-09-05 13:50:49 -0700 Fix Kiku wrath (various) Kiku's wrath was almost entirely ineffectual. It worked via death curses, which are meant to be relevant in combat or near-combat situations, not when the player is just out and about. Address this by reworking wrath effects. There's now equal chances of heavy HP drain, heavy stat drain, or tormenting + making a loud noise. There's also a new passive which causes dead monsters to sometimes turn into hostile, no-xp zombies/simulacs/spectres - this is an experiment and might need tweaking. This should hopefully make it a bit riskier to abandon Kiku after looting its gifts. -------------------------------------------------------------------------------- 72f39bf969 | Kate | 2023-09-05 18:32:17 +0100 Prevent a dragon armour trove placing for Draconians (#3272) Unlike most other armour troves (which specifically place usable/aux armour), this trove is themed around dragon armour and so is mostly useless for Draconians. While there are a few usable items, it's already banned for Octopodes (who would be able to use the same set of items from it). Closes #3272. -------------------------------------------------------------------------------- 04e7d4291d | Kate | 2023-09-05 18:32:17 +0100 Remove a teleport closet in an arrival vault (#3275) lightli_arrival_windingriver could generate inaccessible areas - most of these were tagged no_tele_into, but one particular spot could create an inaccessible bubble that wasn't correctly tagged. Closes #3275. -------------------------------------------------------------------------------- 0fe126139e | Kate | 2023-09-05 18:32:17 +0100 Fix FoWr starting with a scroll of blinking (#3261) Scrolls weren't being treated as identified for the purposes of determining uselessness at character creation. Closes #3261. -------------------------------------------------------------------------------- f7fab4af10 | Kate | 2023-09-05 18:32:17 +0100 Allow orbs to be acquired (#3262) With a small fixed chance when selecting a shield type. Closes #3262. -------------------------------------------------------------------------------- 86692c7075 | Nicholas Feinberg | 2023-09-05 09:49:09 -0700 Tweak PoG wording slightly -------------------------------------------------------------------------------- 7d3d2d1642 | Kyle Rawlins | 2023-09-05 12:47:43 -0400 feat: give descent games their own save directory This corresponds to a distinct save slot on webtiles. -------------------------------------------------------------------------------- 96623f570b | Kate | 2023-09-05 17:24:57 +0100 Rename sourceless malevolence Explicitly describing it as "sourceless" feels inelegant - just describing it more simply as a "malevolent force" has a similar effect and leaves its source (or lack thereof!) up to the imagination. -------------------------------------------------------------------------------- 1899a4c4f0 | Kate | 2023-09-05 17:24:57 +0100 Reduce Passage of Golubria duration Apply the lowered Zot duration to the spell everywhere, and remove the other Zot special case of increased fuzziness. If it ends up being too strong on Zot:5 again, it's probably better to make changes to the spell that apply everywhere, rather than make more special-casing. -------------------------------------------------------------------------------- 72d93d2d00 | Kate | 2023-09-05 17:24:57 +0100 Add details to a Kiku gift note Weapon branding gifts already also add a separate note describing the weapon, so also add a description for Kiku's spell gift. -------------------------------------------------------------------------------- 325fb90cb2 | Kate | 2023-09-05 17:24:57 +0100 Rebrace & fix indentation -------------------------------------------------------------------------------- d2efda5d0c | Kyle Rawlins | 2023-09-05 12:21:47 -0400 doc: mention descent mode in options guide for `type` -------------------------------------------------------------------------------- 7c33a2ab94 | Kyle Rawlins | 2023-09-05 12:21:04 -0400 feat: tweak welcome messages for non-standard modes This always shows game mode explicitly with the welcome message (except in normal, hints, and tutorial mode); previously it was only apparent from this message for seeded mode. As part of this I changed the game type name for descent mode to match the main menu, which hopefully won't matter for anything (it would matter for database stuff, but aside from welcome messages, there doesn't appear to be any). -------------------------------------------------------------------------------- 08580218fa | Kyle Rawlins | 2023-09-05 12:15:34 -0400 feat: add a few welcome messages for descent mode These are mediocre, so feel free to edit or add more. But, it needed something. -------------------------------------------------------------------------------- ec73a1986a | Kyle Rawlins | 2023-09-05 09:33:53 -0400 fix: add a missing branch-data field -------------------------------------------------------------------------------- 238779eb0a | Nicholas Feinberg | 2023-09-04 11:17:45 -0700 Unbrace -------------------------------------------------------------------------------- 4df812870a | Nicholas Feinberg | 2023-09-04 11:13:00 -0700 Add Descent mode (hellmonk) Descent mode is a new alternate mode for playing Crawl, like Sprint. In Descent mode, once you go down stairs, there's no* going back up! The dungeon has been re-arranged so that you can go through it linearly; the branches have been put in a linear order. When you go down stairs, you're considered to be 'peeking' down the stairs, and can freely go back up. You can also see everything around other upstairs on the level. Once you take any action on the new level, however, *all* of the upstairs crumble forever! This is a very early stage of the mode, and many changes will be needed to help Dungeon Crawl work with this new structure. One that's already been added is 'debt'. You can buy items from shops when you don't actually have enough gold to afford them. However, once you do, you're in debt, and you can't buy anything else before you get back in the black again! Descent is intended to feel different from 'classic' Crawl, but not to be more difficult overall. Further changes will be made as necessary to help push the game's challenge level back. We're also hoping to make other changes to make choosing your path through the dungeon more exciting and dynamic. Please let us know if you see anything broken, especially crashes, unreachable level areas, etc. And have fun! -------------------------------------------------------------------------------- 566e9ce4a0 | DracoOmega | 2023-09-04 10:37:54 -0230 Have moncast.lua use is_valid_mon_spell() instead of manual blacklist Having to manually specify every invalid spell regularly caused crashes when a new spell was implemented, and the list also got out of sync with spells that *gained* monster implementations over time. I did my best to manually verify that this new version doesn't miss things that the old version caught, and I can't find any. This should be much less prone to future problems. -------------------------------------------------------------------------------- 7da72447bb | Nicholas Feinberg | 2023-09-03 22:37:53 -0700 More triumphs -------------------------------------------------------------------------------- 85aee17e53 | Nicholas Feinberg | 2023-09-03 21:51:40 -0700 Update description for '.' (OctopodesWeekly) See #3263. -------------------------------------------------------------------------------- 1b0e0212a4 | Nicholas Feinberg | 2023-09-03 21:51:24 -0700 Elaborate on ?fog/?immo descriptions (OctopodesWeekly) See #3263. -------------------------------------------------------------------------------- 6d49a2b2d0 | Nicholas Feinberg | 2023-09-03 21:51:11 -0700 Fix living crystal spell count (OctopodesWeekly) This was intended to spawn 1-2 spells per cast, but was bugged to create the same 2-3 as other tomes did. See #3263. -------------------------------------------------------------------------------- 34c7ba284f | Nicholas Feinberg | 2023-09-03 21:35:36 -0700 Retheme: hand crossbow -> hand cannon (Sastreii, hellmonk) Hand crossbows are intended to be a rare, high-tier one-handed range weapon, similar to eveningstars or double swords. However, the name and theme hasn't conveyed this well to players. People reasonably ask: wait, wasn't this a starting weapon? And: how come a hand crossbow does as much damage as a two-handed arbalest?! So, retheme them. Hand cannons are alchemical weapons that douse bolts in magical powders to send them screaming forth. (E.g. by causing the bolts to fall forward instead of down, bewitching them into a fatal attraction with their target, etc, etc.) They also belch smoke when fired, for theme reasons (this might need to be toned down) and are extra noisy. They're otherwise identical to hand crossbows. It's a bit silly, but crawl has triple swords and triple crossbows, so it seems within bounds for tone. Let's try it out! Tiles by Sastreii, original suggestion from hellmonk. -------------------------------------------------------------------------------- 39726597b9 | Nicholas Feinberg | 2023-09-02 14:07:57 -0700 Give Flux talismans a glow-up (Sastreii) New item tile. -------------------------------------------------------------------------------- 3fb8326ac6 | DracoOmega | 2023-09-02 11:51:29 -0230 Remove some unused code Left over from the period where zombies died after Animate Dead wore off. -------------------------------------------------------------------------------- 2497d51a65 | DracoOmega | 2023-09-02 11:51:29 -0230 Make wizmode super-heal heal a few more things than it currently does No promises I didn't overlook a few more of them. -------------------------------------------------------------------------------- 902f515a81 | Nicholas Feinberg | 2023-09-01 13:07:46 -0700 Fix "acrobat uselessness for tengu (Bardcore) -------------------------------------------------------------------------------- de94368793 | Nicholas Feinberg | 2023-09-01 11:13:04 -0700 Increase spectral weapon damage sharing Spectral weapons shared half the damage they take with their owner, which historically has been kind of irrelevant. Generally mechanics should be either relevant or removed; let's push toward relevance (as a minor spectral nerf) by increasing damage sharing to 70%. -------------------------------------------------------------------------------- 684573625c | Nicholas Feinberg | 2023-08-30 18:54:22 -0700 Fix tengu flight (Bardcore) -------------------------------------------------------------------------------- 7db66e5c3b | Nicholas Feinberg | 2023-08-30 15:47:03 -0700 Move tengu acrobatics and flight around (elliptic) Tengu stats have also become acrobatic, appropriately. -------------------------------------------------------------------------------- d984b8cdd8 | elliptic | 2023-08-30 18:38:56 -0400 Give tengu their acrobat + flight starting at XL 1. I actually like having big levelup moments later in the game, but XL 5 is a bit early and I think it's good to just let tengu start to experience their acrobatics at game start. I think moving the flight alone to XL 7 or later, possibly coupled with some other thematic buff, could be good. -------------------------------------------------------------------------------- c5a091b79a | Nicholas Feinberg | 2023-08-30 12:04:49 -0700 Replace tengu EV with more EV Flat or multiplicative EV boosts are pretty bland, and not very different from just giving Tengu more dex. Replace their +4 and +20% EV with innate acrobaticism, as the amulet. We can play around with dex or dodging apts as needed after this, if further balance tweaks are needed. -------------------------------------------------------------------------------- 205ce3f705 | DevJac | 2023-08-30 11:31:42 -0700 Fix typo: "It isextremely good for stabbing" An in-game description was saying "It isextremely good for stabbing". Fix the typo. -------------------------------------------------------------------------------- aa4cf243c6 | elliptic | 2023-08-30 09:36:00 -0400 Make CACT_ARMOUR count every time you receive AC-checking damage. Previously it only counted the times when your AC prevented all the damage from an attack. Counting every time AC is applied is more consistent with how other action counts work (e.g. we don't just count melee attacks that kill an enemy) and also more useful. After this change, if you stand still and let a hobgoblin attack you 100 times, your Armour/Dodge/Block action counts will sum to exactly 100. -------------------------------------------------------------------------------- b4d89c20fa | Nicholas Feinberg | 2023-08-29 22:51:35 -0700 Replace tengu speed with more EV Tengu speed has always been rather fiddly to use. A 10% speed bonus means you only gain one tile of distance from a normal-speed enemy every ten moves, which is hard to do much with. Recent changes to attacks of opportunity removed one of its few use cases. Let's leave high speed to the spriggans and double down on tengu's evasion bonus. Give them an extra +4 EV starting at XL 1, and move the second, +20% bonus to XL 7 to give it a bit more breathing room. -------------------------------------------------------------------------------- f2d5465dac | Nicholas Feinberg | 2023-08-29 12:46:21 -0700 Fix passive effects after mons death (ivysly) This code is a nightmare, but as far as I can tell, there is no case in which check_phase_hit() returns false in which we should still try to apply defender retaliation effects. (Almost all of the time, we return false because the defender is already dead, and we can't apply retaliation in that case anyway.) -------------------------------------------------------------------------------- be3e110b4e | Nicholas Feinberg | 2023-08-28 18:50:52 -0700 Fix missing dummy Mule tile -------------------------------------------------------------------------------- 42a08e578b | Nicholas Feinberg | 2023-08-28 18:49:36 -0700 Fix Death's Door expiration message -------------------------------------------------------------------------------- ab4348ca5e | elliptic | 2023-08-28 19:23:36 -0400 Give VS regen at XL 1 instead of XL 4 (Sentei). XL 4 is a bit later than Mu's XL 3 necro enhancer, but still very early. -------------------------------------------------------------------------------- c5503df394 | Nicholas Feinberg | 2023-08-28 16:11:57 -0700 Mark ?torment/?noise as dangerous (lici) Instead of bad. They aren't *strictly* useless, after all. Should probably find some way to mess with default autopickup logic so that it ignores ?torment for non-undead. -------------------------------------------------------------------------------- 5dbfedd742 | elliptic | 2023-08-28 19:06:50 -0400 Move a mummy necro enhancer even earlier. Just give them the first necro enhancer at XL 1 - getting to XL 3 often happens on D:1 anyway, so let's just let players who start a mummy and immediately look at their mutations to see how the species work see the enhancer already. -------------------------------------------------------------------------------- c9f3708fe1 | Nicholas Feinberg | 2023-08-28 15:24:03 -0700 Don't claim daggers rot (cool2) When descending stairs with tukima's weapons refusing to follow, just call them 'mindless puppets'. This code is bad! -------------------------------------------------------------------------------- e1e6cc2d06 | Nicholas Feinberg | 2023-08-28 15:06:15 -0700 Maybe fix a spider sack crash (geekosaur) -------------------------------------------------------------------------------- 38d6a14cb1 | Anabel | 2023-08-28 14:02:06 -0700 Updated tileidx_feature to prevent override of DNGN_UNKNOWN_PORTAL Gauntlet portal would be leaked by magic mapping via a scroll of magic mapping/revelations and then examining shop/portal tiles. gauntlet.des uses the dgn.til lua function, which leads to tile_env.flv(pos).feat being set when laying out the gauntlet entrance vault in a level. tile_env.flv(pos).feat can override env.map_knowledge(pos) in tileidx_feature, which is used by the describe popup to select the appropriate tile. This commit prevents the leak by adding DNGN_UNKNOWN_PORTAL as a tile exempt from being overriden. Removing the dng.tile call on the lua side seems to work as well, but I'm unsure which side effects that could have. Additionally, it makes sense to generally prevent DNGN_UNKNOWN_PORTAL from being overriden. Refs: 3225 -------------------------------------------------------------------------------- 953e295f31 | Monkooky | 2023-08-28 14:00:57 -0700 Remove Storm Form breakpoints Previously storm form would breakpoint EV bonus at integer skill. This fixes that. -------------------------------------------------------------------------------- d5cdc0191f | Nicholas Feinberg | 2023-08-28 13:48:57 -0700 Make Rupert stronger* We have three other uniques whose theme is "they're insane". Make Rupert slightly more distinctive by making him a vaguely Conan-esque strongman. Rarrghrhgrghrgh! I'm not sure why he lost the articles in his speech. I blame TF2. -------------------------------------------------------------------------------- 8e198d3294 | elliptic | 2023-08-28 16:02:48 -0400 Runify a vault (CarefulOdds). So that it isn't an autoexplore trap. -------------------------------------------------------------------------------- 9d45dd1b72 | Implojin | 2023-08-28 11:02:19 -0500 fix: Gauntlet menu hotkeys This fixes the help and (wizmode) travel menu hotkeys for Gauntlet: Previously, they were being blocked by the keybind for the CMD_MENU_CYCLE_MODE command. I'm not very familiar with the menu code, so if this breaks something, please feel free to revert. -------------------------------------------------------------------------------- b136266e7e | Implojin | 2023-08-28 09:11:19 -0500 docs: Add tavern 2.0 link to README.md -------------------------------------------------------------------------------- 1ba1ce399d | Nikolai Lavsky | 2023-08-28 16:37:07 +0300 fix: show }sack usage numbers in morgues (#3271) Previously, the call to `count_action()` at the end of `evoke_item()` was unreachable when evoking the sack of spiders. Resolves #3271. -------------------------------------------------------------------------------- 39d97e502b | elliptic | 2023-08-26 19:17:11 -0400 Move Vhi's Electric Charge to L4 (PleasingFungus). It gives too much utility all game for a L3 spell. Sorry warpers! -------------------------------------------------------------------------------- dbf204ffae | elliptic | 2023-08-26 18:22:01 -0400 Cap ghost EV at 50 instead of 60 (Lightli). It turns out that even an endgame melee character might only be 2.5% to hit a 60 EV monster... -------------------------------------------------------------------------------- 26219f789d | patrick | 2023-08-26 14:26:00 -0400 Tone down a Tartarus vault (LALALALr, gammafunk) now it's possible to get to the silent spectre and kill it -------------------------------------------------------------------------------- c6129fcb3f | Kyle Rawlins | 2023-08-26 11:42:07 -0400 build: fix macos CI Homebrew is failing to update python because of preexisting symlinks in /usr/local. I'm not sure why we suddenly started seeing this (the only potentially relevant change I'm seeing recently is just a homebrew version bump), but the issue is: https://github.com/actions/setup-python/issues/577 I pulled this specific fix from (found via that issue, MIT license): https://github.com/aya-rs/aya/commit/7803db22a062be3cdce760cd6ff7e54b121117ed -------------------------------------------------------------------------------- e1c0e020e0 | DracoOmega | 2023-08-25 14:08:58 -0700 Constify check_willpower I can't see a reason this COULDN'T be const, but maybe it's my lack of C++ knowledge showing? -------------------------------------------------------------------------------- 80654f93e6 | DracoOmega | 2023-08-25 14:08:52 -0700 Remove a seemingly unused function declaration -------------------------------------------------------------------------------- 0682a58b2d | DracoOmega | 2023-08-25 14:08:37 -0700 Fix a crash if a monster pursues you and dies to barbs in the same move -------------------------------------------------------------------------------- 82435fa1af | elliptic | 2023-08-25 10:53:19 -0400 Give shapeshifter a little more int at start (acrobat). I think this is a slight nerf and many shapeshifters will still use heavy armour for much of the early game, but maybe this int will make hybridizing a bit in later forms that can't use heavy armour more appealing as an option. -------------------------------------------------------------------------------- 766dd24fdf | Kate | 2023-08-25 13:27:28 +0100 Fix a crash on reflected missile kills -------------------------------------------------------------------------------- 285b096dc4 | Nicholas Feinberg | 2023-08-24 22:19:59 -0700 Scale sack of spiders count with evo skill Make it stronger in the late game and distinguish it further from box of beasts. -------------------------------------------------------------------------------- 23e5404fd7 | Nicholas Feinberg | 2023-08-24 22:07:14 -0700 Simplify sack of spiders' webs Don't scale web chance with distance. Enemies' chance to evade is enough randomness. -------------------------------------------------------------------------------- 16e5da7f86 | Nicholas Feinberg | 2023-08-24 22:05:35 -0700 Mention Mule's noisiness -------------------------------------------------------------------------------- bcca1bc016 | Nicholas Feinberg | 2023-08-24 21:52:37 -0700 New unrand: Mule Preview of the upcoming handcannon theme. Tiles are, obviously, placeholder. Also it should really fire bullets. -------------------------------------------------------------------------------- d65175cf8b | elliptic | 2023-08-24 10:21:04 -0400 Fix language in deathform status (Ge0ff). -------------------------------------------------------------------------------- 8143ab4f1d | elliptic | 2023-08-23 23:26:12 -0400 Random-round evo skill for sack of spiders. -------------------------------------------------------------------------------- c9c7e45f3f | Kyle Rawlins | 2023-08-23 16:33:11 -0400 fix: prevent unobtainable misc items altogether This is a lot of engineering for exactly one vault, but failing to place a misc item as the superb item in `grunt_nemelex_the_gamble` makes the vault altogether pointless in most cases. So, prevent a superb item from having misc type if it is flagged as unobtainable. (The other case to worry about is unrands, but I believe these should reroll fine -- the object base type doesn't get rerolled.) -------------------------------------------------------------------------------- 18b96920e2 | Nicholas Feinberg | 2023-08-23 10:17:56 -0700 Make forms scale below min skill Don't give the min skill AC, UC, EV etc bonuses for forms until you actually reach min skill. Scale them downward linearly below min skill, following the same formula as the scaling between min and max skill. -------------------------------------------------------------------------------- 92e331aaff | Nicholas Feinberg | 2023-08-23 10:07:50 -0700 Fix phantom status icons (Ge0ff) 05c506a3cf9 introduced a pernicious webtiles bug where status icons would persist across level transitions in very strange ways. This should, hopefully, fix it. All credit to Ge0ff for the investigation and the fix. -------------------------------------------------------------------------------- 8072aed512 | Nicholas Feinberg | 2023-08-23 10:06:37 -0700 Remove talisman offhand descriptions (acrobat) Inconsistent to mention these only for dragon/blade and not for other forms. -------------------------------------------------------------------------------- 95e8b0dc1a | Kyle Rawlins | 2023-08-23 11:12:52 -0400 fix: prevent infinite loops in `dgn_place_item` Previously, if `_apply_item_props` deterministically aborted, this loop would not terminate. After 5a299da95614 this could trigger on `grunt_nemelex_the_gamble`. This commit adds a loop breaking condition based on placement attempts; it's a bit heuristic but fixes this case, and I don't see how it'd cause other problems. (It's unclear to me if there was another way to trip the infinite looping, maybe not?) -------------------------------------------------------------------------------- d1cbd99268 | patrick | 2023-08-22 13:20:06 -0400 Fix up spacing, punctuation, etc. in a quote HAAAARRRRK -------------------------------------------------------------------------------- b34f6ce469 | Nicholas Feinberg | 2023-08-22 09:50:57 -0700 Remove unused AOOP code Continuing from 4209ae197b53c91ba4e1345fe5cd51a30251e854. -------------------------------------------------------------------------------- 7ca08c1ff9 | Nicholas Feinberg | 2023-08-21 22:11:23 -0700 Revert "fix: don't meph cloud rpois players" This reverts commit 0c796e0fe89ce0466a06fc39c39814d0b603bde1. -------------------------------------------------------------------------------- 0c796e0fe8 | hellmonk | 2023-08-21 21:14:24 -0700 fix: don't meph cloud rpois players As far as I can tell this no longer deals even nominal amounts of damage, so it's a waste of a turn. -------------------------------------------------------------------------------- fa8c8b3ea2 | Nicholas Feinberg | 2023-08-21 21:12:02 -0700 Add a comment -------------------------------------------------------------------------------- e7748cc39b | Nicholas Feinberg | 2023-08-21 17:05:33 -0700 Shift shapeshifting apts +1 It felt very bad to have the default apt for the skill be -2. Shift it to -1, and adjust talisman skill levels such that each talisman costs roughly the same XP to get to min and max skill on. It now takes ~1.5x the XP to max out the top-level forms, instead of ~1.8x. Setting the apt to a default of +0 would mean taking only about ~1.25x the XP of getting a top-level form online to max it out; that feels like too tight a squeeze to be a meaningful strategic choice. Nerf Storm Form somewhat, since it's now easier to max out. Death Form didn't really scale with power anyway (though we should fix that!), so don't nerf it. -------------------------------------------------------------------------------- c85dc1c48c | Nicholas Feinberg | 2023-08-21 14:40:13 -0700 Tweak olgreb code -------------------------------------------------------------------------------- 2b87e4e8af | Nicholas Feinberg | 2023-08-21 14:37:03 -0700 Fix: no Olgreb/Dispater under Sac Evo (elliptic) No evoking without evocations! -------------------------------------------------------------------------------- 8c0b59315c | Nicholas Feinberg | 2023-08-21 14:07:24 -0700 Fix: don't require dispersal to do damage to trigger This code was deeply weird. It'd check whether the throw did damage, and then set the damage to 0 later regardless (since darts don't do impact damage, except when they do). Anyway, let's simplify. -------------------------------------------------------------------------------- 515432b62a | Kate | 2023-08-21 20:28:49 +0100 Shorten draining brand description With the full details of its damage/probability now being shown in the description, it's too long to justify also still having the extra flavour line. -------------------------------------------------------------------------------- 6b635dca52 | Nicholas Feinberg | 2023-08-20 23:14:49 -0700 Mention insubstantial effects in storm desc -------------------------------------------------------------------------------- 7bf6ffcfed | Nicholas Feinberg | 2023-08-20 23:06:22 -0700 Describe form aux attacks Badly. Also, dragon form has far far too many. -------------------------------------------------------------------------------- 3901247f13 | Nicholas Feinberg | 2023-08-20 23:06:22 -0700 Remove hydra form 's old constant. ;_; -------------------------------------------------------------------------------- 1819384c72 | Nicholas Feinberg | 2023-08-20 23:06:22 -0700 Add more details about maw aux -------------------------------------------------------------------------------- 7b48fd681b | Nicholas Feinberg | 2023-08-20 23:06:22 -0700 Describe form size in talisman descriptions -------------------------------------------------------------------------------- 06da2885e2 | Nicholas Feinberg | 2023-08-20 23:06:22 -0700 Mention statue form's rTorm -------------------------------------------------------------------------------- 8e0283293c | elliptic | 2023-08-21 00:03:57 -0400 Nerf Gyre and Gimble (+12 -> +10). They've been incredibly good ever since the qblade buff. -------------------------------------------------------------------------------- 29856e7841 | elliptic | 2023-08-20 23:50:37 -0400 Fix Felids not getting an extra life at XL 4. -------------------------------------------------------------------------------- 894f4ffcd3 | Nicholas Feinberg | 2023-08-20 17:41:16 -0700 Fix: handle dead pursuers..? Probably only living monsters should launch opportunity attacks. -------------------------------------------------------------------------------- 5187491046 | Nicholas Feinberg | 2023-08-20 17:36:24 -0700 Improve felid extra lives (elliptic) It's good for species to have their cool gimmick (extra lives) show up ASAP, and felids just had a cruel setback with recent changes to opportunity attacks. So, let's give them an extra life at XL 1, and make them not lose XLs on death. -------------------------------------------------------------------------------- 62dffe198b | Nicholas Feinberg | 2023-08-20 14:50:44 -0700 Simplify Siphon Essence Death Form's Siphon Essence was originally intended to provide an exciting payoff for using the form in extended, where many enemies are nonliving and hence immune to torment. However, Death Form's resistances are already very exciting in extended, and it was surprising and counterintuitive to players that Siphon Essence's torment effect applied to non-tormentable foes. Make the effect match Torment by only applying to living foes. For now, the melee 'blight' Slow and Weak status effects can still apply to non-nonliving enemies, but that may change. -------------------------------------------------------------------------------- 34a2ce5c55 | Nicholas Feinberg | 2023-08-20 14:24:07 -0700 Clean up potential pursuers on leaving levels This might fix a shaft crash, maybe. -------------------------------------------------------------------------------- b6c6aa6955 | Nicholas Feinberg | 2023-08-20 14:24:07 -0700 Simplify pursuit attacks further (elliptic) Ban monsters from launching attacks of opportunity on any but their first move, if they take more than one move between the player's turns. This could come up e.g. when moving away from an adder that's more than two spaces distant from the player. -------------------------------------------------------------------------------- 7c2b8d6e60 | elliptic | 2023-08-20 15:18:57 -0400 Simplify MUT_READ_SAFETY and MUT_DRINK_SAFETY. Previously they used a complicated formula (which was also bugged) taking the player's HP and the damage dealt into account to determine the chance of triggering. Instead, just use a flat 1% chance on any non-poison damage, matching the *Slow randart property. -------------------------------------------------------------------------------- 831eee08f1 | Nicholas Feinberg | 2023-08-19 15:13:28 -0700 Remove an outdated comment (Ge0ff) -------------------------------------------------------------------------------- 4209ae197b | Nicholas Feinberg | 2023-08-19 14:27:02 -0700 Simplify attacks of opportunity (elliptic) Using new pursuit tech, shift the time that enemies launch opportunity attacks from when the *player* moves to when an *enemy* follows the player. This has several advantages: - It means that monsters who don't actually pursue players won't get attacks of opportunity. That includes monsters which cast a spell, fired a ranged weapon, or were just blocked by other monsters instead of moving. - Removes special cases involving actions that were previously disabled for attacks of opportunity, e.g. broodmothers' spider spawning effect. - Removes the need to memorize monster vs player speeds to figure out whether attacks of opportunity could trigger. They'll now trigger whenever the monster manages to pursue. - Removes the counterintuitive behavior by which monsters with reaching weapons (i.e. polearms) couldn't launch attacks from afar. They'll now do so if and only if they move to pursue - that is, on the turn the player moves away, they'll normally stand pat and launch a normal attack instead. - In general, reduces complexity both for players and developers. As always, this is an experiment. Let's try it out. :) -------------------------------------------------------------------------------- 01f9145181 | Nicholas Feinberg | 2023-08-19 09:11:39 -0700 Fix hit% (acrobat, rypofalem, elliptic, implojin) Remove duplication in halo calculation. -------------------------------------------------------------------------------- 7edc133841 | Nicholas Feinberg | 2023-08-19 09:04:13 -0700 Eustachio triumphs -------------------------------------------------------------------------------- eb5f7b07fe | Kate | 2023-08-19 13:12:46 +0100 Add messaging when the reaping brand activates -------------------------------------------------------------------------------- 02b9bc310a | Kate | 2023-08-19 13:09:48 +0100 Fix a typo One that's been around since art-data.txt was created in 2009! -------------------------------------------------------------------------------- 8a5a4361df | Nicholas Feinberg | 2023-08-18 17:54:04 -0700 Increase Jeremiah thematics further (elliptic) Ban orb of wrath (too mean) and orb of light (too goody-two-shoes). -------------------------------------------------------------------------------- 02207c7b4b | Nicholas Feinberg | 2023-08-18 17:47:05 -0700 Make Jeremiah's gear more thematic Instead of a glaive, give them a trident and a spooky magical orb. What secrets lurk within? Perhaps it's occasionally an exciting reward for the player? This is intended as a nerf, since tridents usually do less damage than glaives. A guaranteed glaive is really too much to give out in mid-D, anyway. -------------------------------------------------------------------------------- 14bffd4ff3 | elliptic | 2023-08-18 17:42:14 -0400 Make archmagi randarts more common. They were super rare since just being a randart robe is already quite specific. -------------------------------------------------------------------------------- 5e7861486d | Nicholas Feinberg | 2023-08-18 13:52:50 -0700 Continue an unbroken string of triumphs h/t hellmonk re: Polyphemus. -------------------------------------------------------------------------------- bc2f96ccf4 | Nicholas Feinberg | 2023-08-18 13:52:40 -0700 Fix some Roxanne dialogue Continuing from 18800231877e12caceb48c2f929f842d55aac934. -------------------------------------------------------------------------------- 3b62d3f2bc | Kate | 2023-08-18 21:31:53 +0100 Checkwhite -------------------------------------------------------------------------------- 7517d20e71 | elliptic | 2023-08-18 15:38:47 -0400 Tweak opportunity attack energy. Don't randomize movement energy for a monster that just made an opportunity attack, to avoid a situation in which the player moves away from a monster and gets attacked twice that turn. Also, add a 50% chance that an opportunity attack uses 1 energy, to be kinder to a player when an orc warrior or similar catches up via random movement energy. -------------------------------------------------------------------------------- e31d1ec5a1 | elliptic | 2023-08-18 15:38:47 -0400 Revert "Remove attacks of opportunity" This reverts commit 78364c384948e7431266fbb9e381659bb4dd29ce. -------------------------------------------------------------------------------- e438bbe35c | elliptic | 2023-08-18 15:38:47 -0400 The return of randomized energy (when pursuing the player). Randomized energy (essentially monsters having a random choice between 0.9/1.0/1.1 move delay) was removed in c2095565. It had two main problems - the first was that it felt surprising and 'unfair' when an ogre two steps away suddenly moved and hit the player on the same turn, and the second was that it incentivized running away from an adjacent monster until random energy made a space between the two of you (usually only taking 0-2 hits in the process). This commit re-implements randomized energy, but only when the monster is pursuing the player (replacing the experimental swiftness on pursuit). This hopefully addresses the first issue with randomized energy, since an ogre will only be able to move + attack if the player was adjacent to it and just moved away - essentially an attack of opportunity. The second issue will be addressed by bringing back attacks of opportunity in a separate commit, making running away from an adjacent monster far more deadly. The hope is that randomized energy will help smooth out some of the sharp edges on attacks of opportunity - we'll try it out. -------------------------------------------------------------------------------- 967258e92b | Kate | 2023-08-18 20:19:14 +0100 Remove some outdated language Use primary/replica instead of master/slave for synchronized Lua markers, and update language usage in a few other cases. -------------------------------------------------------------------------------- eb4e1b2031 | Nicholas Feinberg | 2023-08-18 11:01:54 -0700 Ongoing triumphs -------------------------------------------------------------------------------- 5089dd5b6d | Neil Moore | 2023-08-18 12:53:39 -0400 Fix a stray "insane" (ghostwilliz) Using autofight while a neutral monster was visible would result in: autofight.lua:305: bad argument #1 to 'is' (no such moninf flag: 'insane') -------------------------------------------------------------------------------- 23c5e8eb7f | DracoOmega | 2023-08-18 12:46:12 -0230 Properly warn the player when aiming explosions at empty tiles near allies Proper stop attack prompts were only being given if the explosion effect was aimed directly at a creature and NOT if you were aiming at an empty space near that creature. This seems to have been a result of the beam code detecting that we would only hit our ally AFTER the 'target' we were aiming at, and then aiming at the ground at that spot and assuming that was good enough to spare them. (hint: it was not) So now, let's just disable suppressing prompts if the source of the damage is an explosion. -------------------------------------------------------------------------------- d85dfe4a71 | Kate | 2023-08-18 13:00:17 +0100 Don't let perma-confused monsters pursue the player Such as butterflies. -------------------------------------------------------------------------------- 0c08979aea | Kate | 2023-08-18 12:58:11 +0100 Fix conjugation -------------------------------------------------------------------------------- 5a299da956 | Kate | 2023-08-18 12:16:42 +0100 Don't generate "unobtainable" unrands/XP evokers The "unobtainable" tag is only used for nemelex_the_gamble (and should generally be used very sparingly) - portal vaults (and Gauntlets in particular) are definitely still fair game for unrands and XP evokers. -------------------------------------------------------------------------------- 69dc8cc98e | Nicholas Feinberg | 2023-08-17 22:49:46 -0700 A few more triumphs -------------------------------------------------------------------------------- d01e783392 | Nicholas Feinberg | 2023-08-17 18:42:56 -0700 Add more triumphs -------------------------------------------------------------------------------- dcce639ab2 | Nicholas Feinberg | 2023-08-17 18:18:35 -0700 Fix the pronouns of speed -------------------------------------------------------------------------------- 3702cae195 | Nicholas Feinberg | 2023-08-17 18:15:14 -0700 Refactor death messages Hee hee hee. More to come, I think. -------------------------------------------------------------------------------- cbebf7f143 | Nicholas Feinberg | 2023-08-17 16:17:04 -0700 Fix a CRITICAL anaconda bug (Oneirical) -------------------------------------------------------------------------------- 7ea453304b | Nicholas Feinberg | 2023-08-17 10:19:49 -0700 Make Maw Form healing trigger more often This is just a small buff to make maw form feel better, based on playtest feedback. -------------------------------------------------------------------------------- 791418dc5d | Nicholas Feinberg | 2023-08-17 10:17:23 -0700 Adjust Maw Form aux To make it feel a bit more consistent, increase trigger chance to 75% (was 50%) and decrease damage from min/max 16/27 to 12/20. This should make it a bit better against 0 AC enemies and a bit worse against higher AC enemies, hopefully breaking even. -------------------------------------------------------------------------------- 881be02e36 | Nicholas Feinberg | 2023-08-17 10:14:01 -0700 Fix draconian dragon form AC Accidentally got a +6 when the talisman change was made. -------------------------------------------------------------------------------- 6656212320 | Nicholas Feinberg | 2023-08-17 10:07:25 -0700 Feat: hot pursuit (elliptic) Not to be confused with the similar-sounding apparel beloved of certain players, 'hot pursuit' is a new mechanic to encourage fun lines of play. A Brief History --------------- When in a very nasty spot (low on HP and next to a tough foe), players have historically been able to 'pillar-dance', wasting time (both the game's and theirs) to get time to heal. This is both unfun to do and narratively unsatisfying. When in a tight spot, players should pull out a cool trick (a spell, god ability or consumable), fight, and/or die! We first tried to fix this by adding 'random energy', which unfortunately fixed nothing. Then we tried 'attacks of opportunity', letting monsters attack when the player moved away. These worked somewhat, but had several disadvantages, including: - They were very complex. The list of special cases for which monsters could attack the player and when was very long, and it was hard for players to track. - They were very binary. If a monster was next to the player, danger was vastly higher than if they were 2 tiles away. If a monster was as fast as the player, danger was vastly higher than if they were just a bit slower. - They had odd and unintuitive interactions with polearms (which didn't launch reaching attacks of opportunity). - They were frustrating. Players felt profoundly unhappy when they were killed by attacks of opportunity - it felt like the game becoming more hostile. So, let's try something a bit gentler Hot Pursuit ----------- When the player moves away from a monster, if that monster then moves toward the player, they have a one in ten chance of putting on a 'burst of speed', moving ~25% faster (move delay 0.8) for the next ~20ish turns. This speed bonus affects the move that triggered it, so players walking away from an adjacent yak have a 2% chance of getting a surprise bap from them. The intent is to again discourage 'pillar-dancing' and other fiddly stalling tactics (e.g. running across the entire level to get to stairs) in a 'softer', fuzzier way, without the hard binaries of attacks of opportunity. Wu Jian martial manuevers and Serpent's Lash again give immunity to this effect. Let's try it out! -------------------------------------------------------------------------------- 78364c3849 | Nicholas Feinberg | 2023-08-17 10:07:25 -0700 Remove attacks of opportunity Experimenting with a new approach to discourage pillar-dancing. Reverts d469af4107d0171314512d0e591032a5fe31303c. -------------------------------------------------------------------------------- 3b7de120b3 | Implojin | 2023-08-16 19:31:20 -0500 feat: Suppress rampage with WJC By popular request, this commit suppresses rampage and rollpage while worshipping WJC, thus allowing WJC's martial attacks to occur instead of rampaging. -------------------------------------------------------------------------------- ea3e70a90f | Nicholas Feinberg | 2023-08-16 15:26:58 -0700 Tweak more early-game monster descriptions TY to rypofalem for the typo spot. -------------------------------------------------------------------------------- 758d19d7b2 | Nicholas Feinberg | 2023-08-16 15:16:12 -0700 Fix: keep cutting Blade's Wiz penalty (Namsan) Continuing from 08d4ee96a19852dd389d79ca649037850834e347. -------------------------------------------------------------------------------- ccde6106b6 | Nicholas Feinberg | 2023-08-16 15:09:25 -0700 Remove some dubious sprints Remove Maurice's sprint, since it's very unclear why he had it (or why he has anything he does. Rework someday!) Remove alligators' sprint, since it wasn't very interesting - they cast it often enough that you couldn't really play around it, they were just going to be fast a bunch of the time. Upgrade them to base 12 speed (a bit slower on land then they were when swift) and cut their HP and damage slightly to compensate. -------------------------------------------------------------------------------- d1292be0fd | Nicholas Feinberg | 2023-08-16 14:59:45 -0700 Remove the Swiftness interaction with water Swiftness not working in water was a deeply antique (pre-DCSS) mechanic which was undocumented and unintuitive - why would you stop being swift when walking in shallow water? It's not valuable for balance or excitingly evocative, so cut it. -------------------------------------------------------------------------------- 03b8d61ab2 | Nicholas Feinberg | 2023-08-16 14:51:00 -0700 Fix: make frenzy references consistent We sometimes called it 'frenzied', sometimes 'insane', and sometimes just a 'mindless rage'. Let's try to be mostly consistent. Also fix a few other insane references. -------------------------------------------------------------------------------- c65fdffd30 | Nicholas Feinberg | 2023-08-16 14:35:21 -0700 Mostly remove obscure berserk shouting When berserk or frenzied monsters walked around, they'd continuously make shout-level noise (with no corresponding message). This only occurred on movement, not on waiting, attacks, etc. Very silly! Instead, frenzied monsters keep a chance to shout, and berserk monsters keep their still purely-cosmetic "the foo rages" line. It's iconic. I can't cut it. -------------------------------------------------------------------------------- 6e16503903 | Nicholas Feinberg | 2023-08-15 22:22:47 -0700 Fix: make |earth swing half as often (SentientSupper) Turns out that quick blades and staves of earth are different things. -------------------------------------------------------------------------------- 2b9f58fa2b | Nicholas Feinberg | 2023-08-15 21:14:56 -0700 The Amazing Shrinking Frog Continue shrinking Jeremiah's HP to a more depth-appropriate value. -------------------------------------------------------------------------------- c02eecb565 | Nicholas Feinberg | 2023-08-15 21:06:50 -0700 Break Chain Lightning out of its frame A quick hack-job to imitate other L9 spells. -------------------------------------------------------------------------------- bdf9f2fc11 | Nicholas Feinberg | 2023-08-15 20:52:38 -0700 Shrink Jeremiah Jordan's jelly jar J-frog is proving a little more lethal than intended. Let's try pulling a lever a bit downward to encourage reasonable players to actually tangle with 'em. -------------------------------------------------------------------------------- a1bd9b08d9 | patrick | 2023-08-15 20:52:15 -0400 Add a new quote (Floobenga) -------------------------------------------------------------------------------- aec1239e71 | Nicholas Feinberg | 2023-08-15 17:19:04 -0700 Fix: don't let death-form grow roots (acrobat) Undead players aren't supposed to be able to transform. They *are* allowed to leave death form and enter talisman forms, for convenience, but they shouldn't be able to become trees. Even if Gozag offers! I considered banning lig from potpet when in death form, but that seemed inconsistent with other effects that are presently unhelpful. Sometimes you get a potion you didn't want! -------------------------------------------------------------------------------- 2fa3788449 | Nicholas Feinberg | 2023-08-15 17:11:31 -0700 Remove support for bad jewellery Negative enchantment rings have been gone for years. Let me know if I forgot some. -------------------------------------------------------------------------------- 7ef6b13b4f | Nicholas Feinberg | 2023-08-15 16:22:35 -0700 Remove the dangerous item autopickup exception (Lici) Most of these (eg lig, attraction...) are reasonably useful these days. ?torment is probably the only exception (barring treeform TRJ strategies). Move ?torment from dangerous to bad to make this rule more useful. -------------------------------------------------------------------------------- f98fd537a9 | Nicholas Feinberg | 2023-08-15 14:11:36 -0700 Remove Donald's hat of reflection (acrobat) Use Implojin's new 'unusual monster highlight' to call out monsters with reflection (amulets, shields, Warlock's Mirrors) for both tiles and console players. To reduce visual noise, cut the corresponding icon. -------------------------------------------------------------------------------- a7f35e1160 | Nicholas Feinberg | 2023-08-15 11:34:47 -0700 Give draconians visible maws (Midn8) -------------------------------------------------------------------------------- 463418d2c3 | Nicholas Feinberg | 2023-08-15 11:33:26 -0700 Fix Beast Form slay display (CarefulOdds) -------------------------------------------------------------------------------- c1c765faf9 | Nicholas Feinberg | 2023-08-15 11:27:24 -0700 New Jeremiah tile (Sastreii) This is silly! -------------------------------------------------------------------------------- bf1d6132cb | Nicholas Feinberg | 2023-08-15 11:27:24 -0700 New Beast Form tile (Sastreii) -------------------------------------------------------------------------------- ceb718ecc6 | Kate | 2023-08-15 00:06:32 +0100 Fix a crash with confused drowned souls Confused monsters can get an attack on the player and then another attack on themselves in the same action. If a drowned soul did this, it would self-destruct on the first attack, but then try to make the second attack against themselves before having properly been reset and counted as dead. Fix by cleaning up dead attacking monsters at the end of a melee attack. -------------------------------------------------------------------------------- eaa9c7a2c0 | Nikolai Lavsky | 2023-08-14 15:21:12 +0300 docs: fix talismans on the ?? screen Use `percent` instead of the `%` item glyph, to prevent `insert_commands()` from replacing it with `CMD_EVOKE`. -------------------------------------------------------------------------------- dc2a67831c | Kate | 2023-08-13 21:04:23 +0100 Fix a qw ability name -------------------------------------------------------------------------------- e126be3fee | Kate | 2023-08-13 19:58:50 +0100 Remove a hardcoded number -------------------------------------------------------------------------------- c0d178777e | Kate | 2023-08-13 19:58:50 +0100 Rebrace -------------------------------------------------------------------------------- 27a3252745 | Kate | 2023-08-13 19:58:03 +0100 Adjust some cloning handling Fix there being no message for chaos clones, don't grant experience for clones, and allow chaos-cloning monsters with artefacts now that they'll always be marked as summoned. Also prevent cloning tentacles and conjured monsters. -------------------------------------------------------------------------------- bc85326fa9 | elliptic | 2023-08-12 21:11:21 -0400 Remove the final instance of a speed 11 monster. By making sphinx speed 12. In partial compensation, reduce sphinx casting rate by a similar amount. They are still going to be a bit more dangerous now. -------------------------------------------------------------------------------- 029fa849c0 | Nicholas Feinberg | 2023-08-12 16:31:22 -0700 Mention glow in flux description (Ge0ff) -------------------------------------------------------------------------------- a3e2962e35 | gammafunk | 2023-08-12 16:44:18 -0500 feat: Tweak a Shoals vault (elliptic) For nicolae_shoals_mertower, rework the design a bit so it's less likely to be an autoexplore trap into a big chamber of top end merfolk. Have the monsters be patrolling (appropriate for a tower) and put windows in the tower as well. Add three pieces of loot, one of which has a 50% chance to be a tower shield (this is a pun). For the inner monsters, thin them out so we only place about 3.5 high end merfolk on average, with javelineers made less common. The average number of monsters placed is still about 7. Also remove the tower's inner water. The original intent was for the tower to be raised above the tides, but not so much that it was dry. However this is a bit awkward thematically with the outside dry land, and the vault is plenty hard without guaranteed water. -------------------------------------------------------------------------------- 08d4ee96a1 | Nicholas Feinberg | 2023-08-12 09:20:26 -0700 Remove Blade's Wiz penalty (various) Somewhat superfluous now, and inconsistent lore-wise with other, stranger forms. -------------------------------------------------------------------------------- aab96319b4 | Kate | 2023-08-12 15:04:41 +0100 Fix regret_index_temple_of_mockery (#2667) It was placing random monsters before the mocking monster could be placed, since there was no monster defined for the 1 glyph. Closes #2667. -------------------------------------------------------------------------------- ba14c20cce | Kate | 2023-08-12 14:37:20 +0100 Fix some missing monster cast messages Fixes #2703. -------------------------------------------------------------------------------- 28f74ba3e5 | elliptic | 2023-08-11 20:16:46 -0400 Buff lightning rod's price (Lici). -------------------------------------------------------------------------------- 3015b455e8 | Kate | 2023-08-12 00:54:46 +0100 Remove Ashenzari's passive mapping outside LOS In favour of the newly (re-)implemented LOS-radius perfect mapping at 4*, remove the wider-radius passive mapping that scaled with piety. Passive mapping generally has interface issues, encouraging players to repeatedly re-open the level map while moving around to check distant mapped areas. -------------------------------------------------------------------------------- cacbf3a157 | Kate | 2023-08-11 23:49:26 +0100 Revert "Let monsters know if the player has clarity (Lici)" Having monsters waste their time with useless spells is intended in some cases - gaining certain resistances shouldn't make monsters more dangerous by changing their AI and causing them to only cast spells that the player is vulnerable to. There's very little consistency with this across different monster spells, but in various cases the intended behaviour is for them not to cast spells that the player is "obviously" (by virtue of species etc) immune to, but to still cast them if the player has gained resistance/immunity in some other way. This reverts commit 993fcd7dae2e2a45acc3f264f09929cf83240ccc. -------------------------------------------------------------------------------- 0240bd9e67 | Nicholas Feinberg | 2023-08-11 15:23:13 -0700 Reduce out-of-branch spawns in Snake (elliptic) Halve the number of quicksilver dragons in Snake rune vaults. -------------------------------------------------------------------------------- 0aeb0967f1 | Kate | 2023-08-11 22:16:59 +0100 Remove Gozag's passive gold detection It was a cute minor flavour effect, but had weird consequences in practice - granting Gozag a pseudo-mapping ability that was particularly spoilery around vaults that placed lots of gold. Gold is still moved to the top of item piles, to keep some of the flavour and make gold still stand out. -------------------------------------------------------------------------------- 6b883973aa | Kate | 2023-08-11 22:16:59 +0100 Replace some numbers with constants -------------------------------------------------------------------------------- 7fa58fedfe | Kate | 2023-08-11 22:16:58 +0100 Give Ashenzari perfect mapping within LOS (fbwer, elliptic) As a substitute for the now-removed astral vision, but without the implementation issues it previously had. Enabled at 4*. -------------------------------------------------------------------------------- 993fcd7dae | Kate | 2023-08-11 22:16:58 +0100 Let monsters know if the player has clarity (Lici) Fixes monsters repeatedly trying to cast Cause Fear against immune players. -------------------------------------------------------------------------------- 2a164cf6a2 | Nicholas Feinberg | 2023-08-11 11:27:15 -0700 Reduce Jeremiah smite rate Make it a bit closer to other early-mid D smiters. Also make the spell rates equal, which will make hellmonk happy. -------------------------------------------------------------------------------- 071a6c1ffa | elliptic | 2023-08-10 13:07:06 -0400 Remove rC+ from storm dragons (acrobat). Unclear why they have it, storm form doesn't even have rC+ and it is an actual storm. Plenty of other dragons and late game undead have rC+. -------------------------------------------------------------------------------- c2a4ee3747 | Nicholas Feinberg | 2023-08-10 07:24:19 -0700 Make Jeremiah only butterfly in sight (acrobat) No spamming butterflies when out of LOS. Silly and counterproductive. -------------------------------------------------------------------------------- c7390f8997 | Nicholas Feinberg | 2023-08-09 20:53:40 -0700 Reduce high duration summons (hellmonk, Buttons) To discourage repeatedly recasting summons out of combat, decrease the max durations of call canine familiar, call imp, summon ice beast, monstrous menagerie, and spellforged servitor. We may need to nerf monster abjuration later, but I'm skeptical. -------------------------------------------------------------------------------- e4037352c6 | patrick | 2023-08-09 22:27:04 -0400 Rescue an arrival vault from oblivion and add it orjb1 submitted a PR with an arrival vault in it: https://github.com/crawl/crawl/pull/3246 but after initial feedback they seem to have deleted it. I liked the vault, though, and yoinked it from oblivion. I made a few changes to get it working right, but other than that, I kept it mostly as it was submitted. (I didn't fix the asymmetry of the empty floor spaces around the edges, even though I mentioned it on the PR; I ended up liking how it interacted with the rest of the level.) -------------------------------------------------------------------------------- df67acd773 | Nicholas Feinberg | 2023-08-09 19:06:18 -0700 Warm Jeremiah up (acrobat) Matching player barachim and the monster dummy. -------------------------------------------------------------------------------- 2cb333d0c2 | patrick | 2023-08-09 21:59:56 -0400 Fix the tiles in elethiomel_arrival_fortress_basement been buggin me for years -------------------------------------------------------------------------------- 48e1739576 | Nicholas Feinberg | 2023-08-09 17:04:18 -0700 Tweak *Noise description (acrobat, elliptic) -------------------------------------------------------------------------------- fcb59812bd | Kate | 2023-08-09 21:51:52 +0100 Fix a resting crash with inhibited regen It was possible to start resting with no monsters in LOS, and then have a monster come into view on the other side of deep water and activate -Regen without interrupting the rest, causing it to continue indefinitely and hit the assert threshold. -------------------------------------------------------------------------------- 61598ed1a1 | Kate | 2023-08-09 19:23:52 +0100 Remove a sleepwalking gimmick As requested! -------------------------------------------------------------------------------- 6123214d49 | Kyle Rawlins | 2023-08-09 14:05:53 -0400 fix: initialize a PromptMenu variable (dilly) TravelPromptMenu::refresh_prompt is called before this was initialized in PromptMenu code, leading to undefined behavior (and probably sometimes, the wrong prompt). -------------------------------------------------------------------------------- b2b78dfc09 | Kyle Rawlins | 2023-08-09 13:56:19 -0400 fix: update PromptMenu state when switching modes This could lead to the wrong hints (and maybe other issues) if menu mode is forced by e.g. looking at a long altar list. -------------------------------------------------------------------------------- 28e415ffb7 | elliptic | 2023-08-09 11:19:12 -0400 Fix a misspelling. -------------------------------------------------------------------------------- dc6bdc1437 | Implojin | 2023-08-09 09:27:44 -0500 Add a new tiles icon for paralyse This is a simple recolour of the existing sleep icon, but hopefully it's enough for players to differentiate paralysed and sleeping monsters. Might need to redo the icon later if it's not distinct enough? -------------------------------------------------------------------------------- 5e04a77a59 | Nikolai Lavsky | 2023-08-09 17:20:46 +0300 fix: make grey clouds less purple Remove stray purple pixels from clouds of grey smoke, which are especially noticeable in the Desolation: https://cdn.discordapp.com/attachments/1064517662111178804/1138836044721160333/d esolation_clouds.png -------------------------------------------------------------------------------- d5cd04eec4 | Kyle Rawlins | 2023-08-09 09:50:20 -0400 fix: quiet some enum class+switch related warnings Mentioned in #3227 -------------------------------------------------------------------------------- ee86dcb4cb | Kyle Rawlins | 2023-08-09 09:36:32 -0400 fix: don't crash on line_down in an empty menu Mainly replicable via memorize. This is related to, but not the same crash, as in #3082. -------------------------------------------------------------------------------- bafd7f5274 | Nicholas Feinberg | 2023-08-08 17:41:19 -0700 Fix: don't make flux suppress intrinsics (elliptic) TODO: make this not bad -------------------------------------------------------------------------------- 3d79149578 | Nicholas Feinberg | 2023-08-08 13:22:17 -0700 New unique: Jeremiah, Barachi Dreamer Playing more around with different types of summons in the early game, Jeremiah is an early-game (D:6-9) unique who passively summons butterflies every turn. Jeremiah then hits you with a draining glaive, hops backwards, and smites you. (The glaive is the loot.) Their backstory is deeply tragic but that's OK. They also have a very silly sleepwalking gimmick which kate will remove soon. It'd be thematic to spawn the butterflies while J is sleeping, but it feels spoilery (for players who don't know what nearby summoned butterflies indicate) and a bit too easy to completely avoid J without even seeing them. -------------------------------------------------------------------------------- f982180d95 | Nicholas Feinberg | 2023-08-08 13:01:21 -0700 Credit NephaliaWeaver -------------------------------------------------------------------------------- dd471462e6 | Implojin | 2023-08-08 14:02:52 -0500 New tiles icon for pain bond (CanOfWorms) -------------------------------------------------------------------------------- df1e9e4a2e | DracoOmega | 2023-08-08 16:02:26 -0230 A few minor improvements to quick fsim text output Now prints a header message showing what monster is being attacked and with what weapon (using fsim while unarmed but with a throwing item quivered uses the throwing weapon to attack and NOT your fists, which could produce misleading numbers). Also removes the superfluous lines about the player not being hit during your attack round, and the monster not being hit during your defense round, which I think never report relevant information? (Incidentally remove an old reference to when ranged weapons had seperate ammo, which resulted in file output thinking you were shooting your weapon out of your weapon) -------------------------------------------------------------------------------- 902d8d2af8 | Nicholas Feinberg | 2023-08-08 11:28:47 -0700 Don't give accuracy to Me foes (elliptic, acrobat) Make flux form and meteoran backlighting work the same way as self-halo (from TSO, orb of light, etc), by not providing an accuracy bonus to foes. It still disables invisibility and ruins stealth. Also, remove the flux form EV bonus added to compensate for this. This reverts commit 7f215ca21b984ff96d35925c7007df7b865050c2. -------------------------------------------------------------------------------- c77f77e11d | Kyle Rawlins | 2023-08-08 14:25:54 -0400 feat: improve artefact descriptions This commit mostly aims to improve the display of artefact properties in their long description. * Make indentation for `Name: description` lines much more consistent across item types (and also refactor this code somewhat). If a property name is too long, don't chop it, just expand. * Give jewellery egos a name, not just a description * Move the weapon type description out of the item-specific property list, it now appears before handedness. * Fix a bug with orb description spacing * Parse DESCRIP and DBRAND (splitting by `:`) so that the hand-coded (and often very inconsistent) indentation in that file doesn't matter. * Add some names to a bunch of DESCRIP cases A few remaining oddities: * weapon egos have an extra blank line following them not present in other item types that is hard to get rid of. Occasional weird interactions with this and dbrand. * DESCRIP/DBRANDs that have an infinity symbol are not aligned correctly * Probably other spacing stuff, this code is quite complex -------------------------------------------------------------------------------- 791ea4fb0e | Kyle Rawlins | 2023-08-08 14:25:54 -0400 refactor: show full artefact prop name in long descriptions Previously, this would show just the base name (e.g. rF) instead of the full annotation name (e.g. rF++). Getting this to work sanely involved a refactoring of a whole bunch of code, but artefact prop code is still a mess overall. -------------------------------------------------------------------------------- 6b702e47e2 | Kyle Rawlins | 2023-08-08 14:25:54 -0400 feat: support right click for help in local tiles skill menu Resolves #3086 -------------------------------------------------------------------------------- df853b38fe | Kyle Rawlins | 2023-08-08 14:25:54 -0400 fix: use temporary mode for a prompt This prompt could maybe use a bigger overhaul, but for now, make its behavior more standard with other prompting. Also, fix an unrelated comment. -------------------------------------------------------------------------------- a81648d2db | Nephila Hirsch Oliveira | 2023-08-08 07:02:05 -0700 Only apply Flux contam on player attacks Closes #3242. Closes #3241. -------------------------------------------------------------------------------- 6f97920a28 | Nicholas Feinberg | 2023-08-07 22:22:26 -0700 Deduplicate some gear giveaways This should really be dataified. But, like, in a more readable way than weapons. -------------------------------------------------------------------------------- 15b80361f1 | Nicholas Feinberg | 2023-08-07 17:53:29 -0700 Weaken Flux Form scaling (elliptic) Try to make it less competitive with tier 2 forms on the top end. -------------------------------------------------------------------------------- 98ab19c3ae | Nicholas Feinberg | 2023-08-07 17:05:32 -0700 Shift flux form slightly later Min skill 6, to make it take a little longer to come online. Move beast form's max skill up correspondingly. -------------------------------------------------------------------------------- 2108c08da7 | elliptic | 2023-08-07 19:47:02 -0400 Make fluxform less sleepy. (In console it used to be the same highlight as sleeping monsters.) -------------------------------------------------------------------------------- 6cfc4c83a9 | Nicholas Feinberg | 2023-08-07 16:08:42 -0700 ...really -------------------------------------------------------------------------------- 37d6a9d476 | Nicholas Feinberg | 2023-08-07 16:08:16 -0700 Make players dimmer (elliptic) -------------------------------------------------------------------------------- f00e8c0ca5 | Nicholas Feinberg | 2023-08-07 15:27:56 -0700 New talisman: Flux Intended to serve as a further goal for Shapeshifters to skill toward, flux talismans are a bridge between Beast form and later forms. Users inflict magical contamination on foes with each hit. Level 1 contam backlights foes, revealing invisible enemies and reducing their EV. Level 3 causes a meltdown, doing high damage (0-30 at min Shapeshifting skill, 0-60 at max), malmutating the victim, and resetting their glow. This is intended to create a distinctive rhythm (1-2-3 hits) without breaking autofight or otherwise being 'fiddly'. Flux form also has a moderate EV bonus (5 at min skill, 10 at max), which is intended to more or less balance out the penalty for permanently glowing. The real tradeoff is that your unstable, flux-ridden form is unable to wield weapons or shields and just sometimes destabilizes mid-swing. The latter reduces post-AC melee damage by 1/3rd, similar to statue form's +50% damage. This is intended to give the contam part of the form more time to shine (so the player is less likely to just beat enemies to death before the meltdown triggers), and also to limit how far the form scales - eventually the damage penalty will outweigh the upsides. Beast form is now max skill 6 (was 10), and max slay 5 (was 7). This keeps skill scaling similar while limiting how long users will want to use their 'starter form'. I might still make further changes to this, e.g. replacing slay with an aux. -------------------------------------------------------------------------------- 282fc92437 | Kyle Rawlins | 2023-08-07 16:31:20 -0400 refactor: move altar travel into TravelPromptMenu This commit refactors some extremely janky prompt menu stuff for travel to altars into the more structured TravelPromptMenu as a new mode. Like the regular travel menu, it can appear in either the message pane or a popup, and it has general and option-dependent code for deciding on which it tries and how it lays out. I had considered just removing this submenu entirely (since ctrl-f seems like a better approach to me), but it sounds like players do use this primarily via the ctrl-o _ path. -------------------------------------------------------------------------------- fc25b91918 | Nicholas Feinberg | 2023-08-07 12:49:34 -0700 Let iguanas swim (shmup) One must be biologically accurate. It's paramount. -------------------------------------------------------------------------------- 5493424979 | Kyle Rawlins | 2023-08-07 11:25:32 -0400 fix: improve default handling in travel menus For cases where there is a previous travel target: * If arrow controls are on, highlight that branch as the default * If arrow controls are off, accept [enter] as a quick shortcut (doesn't prompt for depth, because this is how it is done in the message pane, but this is a bit inconsistent..) * When prompting for depth, if the branch matches the previous target, use the target depth as the default. This one is a new behavior, which makes the arrow control case a bit smoother. -------------------------------------------------------------------------------- 8d68a81214 | Nicholas Feinberg | 2023-08-06 22:56:15 -0700 Fix bound soul HP display (acrobat) Continuing from 4fc774d21a5a6b3a19f414e2a6718f74ff07d088. -------------------------------------------------------------------------------- aadceae713 | Nicholas Feinberg | 2023-08-06 22:51:29 -0700 Split gnomes and gnolls (canine) -------------------------------------------------------------------------------- 30e62f8b7a | Nicholas Feinberg | 2023-08-06 16:22:38 -0700 Change the updatelog Or update the changelog, whatever. -------------------------------------------------------------------------------- 96a4d527f4 | Kate | 2023-08-06 23:21:28 +0100 Add an important number To the randart name pool. -------------------------------------------------------------------------------- 37773c3749 | Kate | 2023-08-06 23:21:28 +0100 Remove some Xom names -------------------------------------------------------------------------------- 3e60cf2259 | Kate | 2023-08-06 23:21:27 +0100 Remove some randart names -------------------------------------------------------------------------------- 15872d262f | Kate | 2023-08-06 23:21:27 +0100 Rename an ice cave internal key And a couple of other cases - not an appropriate term to use here. -------------------------------------------------------------------------------- 91c9547826 | Kyle Rawlins | 2023-08-06 15:01:18 -0400 fix: G >/< in webtiles The keys were being intercepted by javascript paging code. -------------------------------------------------------------------------------- 4fd37da4f0 | Nicholas Feinberg | 2023-08-06 09:37:40 -0700 Reduce early-game talisman frequency slightly Reduce beast talisman spam a bit. -------------------------------------------------------------------------------- 9002559900 | Nicholas Feinberg | 2023-08-06 09:37:40 -0700 Sometimes give Josephina a talisman of death (acrobat) Feels thematic. -------------------------------------------------------------------------------- b56e7cad85 | Kyle Rawlins | 2023-08-06 12:33:10 -0400 feat: prompt popup consistency for tiles Several menus that can appear in the message pane support using popups, but for historical reasons would do it only when necessary (e.g. there is already a popup on the stack). The two main cases are the Y/N(/A) menu, and the travel menu. Crawl taking input in the message pane has a long roguelike-y tradition, but it prevents mouse input, and can't work in all cases anyways. This commit moves the default towards consistently using a popup in UIs where the popup works well. In particular, in local tiles, and webtiles, these two popups (where the Y/N(/A) is used quite widely) will now always pop up by default. As part of this change, I have attempted to make a bunch of the behavior more consistent. Specific notes: * For those who prefer the old ways, set `prompt_menu = false`. This is the default still for console (where popups still take over the whole screen), including on webtiles builds. We'll see how much people hate this as a webtiles default...but I think it is a clear improvement on local tiles. * Handling of case in defaults is changed; I think the behavior this is addressing is essentially buggy. Previously, for the popup (but not the message pane?) if a default was lowercased, but the menu required uppercase, the default wouldn't work. * enter (and locally, space) now work to indicate a default in the popup * Y/N prompts now have a smaller min width in webtiles * With menu_arrow_control=false, the defaults are hinted more clearly in the popup * Error messaging in the Y/N popup happens in the more, not in a dummy entry * Arrow selection is now allowed for uppercase Y/N menus -------------------------------------------------------------------------------- 4fc774d21a | Nicholas Feinberg | 2023-08-06 09:28:06 -0700 Don't change bound soul HP (acrobat) Weirdly spoilerly and never relevant in practice, since monsters almost never level up these days. Would maybe be nice to do the same for other derived undead (in make_derived_undead_fineff::fire), but you'd need to play with derived_undead_avg_hp() to rescale skeleton, zombie, simulac etc HP to some fraction of the original monster's HP. -------------------------------------------------------------------------------- a17b723721 | Nicholas Feinberg | 2023-08-06 09:28:06 -0700 Dedent -------------------------------------------------------------------------------- 61b50ae490 | elliptic | 2023-08-05 21:09:13 -0400 Switch the CSET_ASCII character for talismans back to '|'. In CSET_ASCII, '%' is a very bad choice because it is used for corpses. Using a different character for menus and for the item on the map isn't ideal either, but seems less bad. Ideally there would be an option to fully hide corpses, freeing up '%' for an item class. -------------------------------------------------------------------------------- 43a2ca8e1b | Kate | 2023-08-05 22:43:15 +0100 Remove an orb of Zot descriptor The joke of the orb of Zot just being "pretty good" unfortunately doesn't work, since it doesn't scan grammatically in any of the welcome lines. -------------------------------------------------------------------------------- bde574a406 | Nicholas Feinberg | 2023-08-05 13:54:01 -0700 Fix Norris's missing band Surf's up, dude! -------------------------------------------------------------------------------- 390c57a952 | Nicholas Feinberg | 2023-08-05 13:50:23 -0700 Make troll leather armour closer to non-troll After c8f691b2cc77d/dd814f33f16 (2021), when regen's strength was doubled, troll leather armour became a much more powerful item. It's a bit unfortunate that players' endgame armour is now so often found in early D - it gives people less to look forward to. Let's simplify by removing TLA's bonus base AC, making it match vanilla leather armour's 3 AC. MTLA gets +1 enchant to match its +5 MP. -------------------------------------------------------------------------------- da5c5a71be | Nicholas Feinberg | 2023-08-05 13:49:59 -0700 Switch Norris's AF_SLEEP for AF_CONFUSE (elliptic) Former was insanely brutal, in principle. Latter seems thematic and not overused. -------------------------------------------------------------------------------- e939bffe16 | Kyle Rawlins | 2023-08-05 13:52:26 -0400 fix: don't clear repeats when a monster destroys a floor stack `dec_mitm_item_quantity` assumed it was being called by player actions only, but it can be used in a few other cases, notably when a monster (such as a jiyva slime) destroys a floor stack. I couldn't find a reliable general way to check whether a player action is responsible for the call, and this function isn't called that much, so I handled every case. These clear calls are still necessary for floor actions; without them a repeat that uses up a scroll stack (for example) with another stack in the same position has very weird behavior. This fixes a few other call types that shouldn't mess with command history, but they probably don't matter as much. Resolves #3194 -------------------------------------------------------------------------------- 74618ad6ef | Kyle Rawlins | 2023-08-05 13:51:54 -0400 fix: don't count headers in stash search matches Resolves #3188 -------------------------------------------------------------------------------- 98c9adc2b6 | gammafunk | 2023-08-04 16:39:44 -0500 fix: Wizmode talisman UI (acrobat (again)) Escape the '%' since we're using a formatting string. -------------------------------------------------------------------------------- 5a032ab85b | Nicholas Feinberg | 2023-08-04 13:54:23 -0700 Fix wizmode talisman UI (acrobat) -------------------------------------------------------------------------------- f4de33755b | Nicholas Feinberg | 2023-08-04 12:36:46 -0700 Standardize talisman glyphs Unify on %, removing uses of T, | and ◎. -------------------------------------------------------------------------------- 8b0e38b958 | Nicholas Feinberg | 2023-08-04 10:23:46 -0700 Fix Forbidden Knowledge (pyy156941) Closes #3228. -------------------------------------------------------------------------------- c7e1478a07 | Nicholas Feinberg | 2023-08-04 10:22:10 -0700 Add an elemental staff inscript (acrobat, fbwer) Closes #3234. -------------------------------------------------------------------------------- 10b485e85d | Nicholas Feinberg | 2023-08-04 10:17:58 -0700 Update Warper description (projectNoob) Closes #3233. -------------------------------------------------------------------------------- 9e667d4245 | Nicholas Feinberg | 2023-08-03 21:20:49 -0700 Credit rypofalem For a9c6de93fa29999e3921eaf2547a1db91c60a373. -------------------------------------------------------------------------------- c8a9bf3d51 | patrick | 2023-08-03 13:37:52 -0400 Improve the shop spec documentation a bit more Looking at the changes made in c1f2cfb, I saw that the "greed" section of the shop spec documentation still said "Someone should fill the algorithm here!" So I did. And then touched up some other places. -------------------------------------------------------------------------------- 88bc115a23 | patrick | 2023-08-03 12:08:23 -0400 Appropriately adjust agape appellations (PleasingFungus) In 37a08a6, PF fixed a "spaces in a shop spec" bug by simply using a pre-set name rather than a randomly-generated name. This commit puts the randomly-generated names back in and makes sure they don't break the spec with spaces. For this, I simply got rid of the spaces rather than replacing them with underscores: having a second word in the name that probably doesn't begin with "A" breaks the alliteration. (Ditching the spaces is a much easier solution than looking for spaces and changing all the letters right after them to "A".) -------------------------------------------------------------------------------- 237aa7c712 | Kate | 2023-08-03 16:43:50 +0100 Fix monster-cast Arcjolt originating from the player And fix the display of its range on the spell menu. -------------------------------------------------------------------------------- c1f2cfbcc5 | Kyle Rawlins | 2023-08-03 10:23:46 -0400 doc: document a shopspec feature Originally added 8eeaac88ab1b, now documented. -------------------------------------------------------------------------------- 1a7b003ef0 | Nicholas Feinberg | 2023-08-02 21:27:36 -0700 Disallow shafting players on stairs Was too counterintuitive - led to endless surprised questions. Reverts a7c9fdd7d17bda3a43126cbd05e5cae596c2112e. -------------------------------------------------------------------------------- 4a036dd22d | Nicholas Feinberg | 2023-08-02 21:26:39 -0700 Remove XP evokers from alphashops Doesn't work well if they get replaced with wands. -------------------------------------------------------------------------------- c278444e51 | Nicholas Feinberg | 2023-08-02 20:51:24 -0700 Remove an unused var -------------------------------------------------------------------------------- 37a08a676a | Nicholas Feinberg | 2023-08-02 20:50:05 -0700 Actively avoid agape appelations (advil) crawl.name() can have a space in it. -------------------------------------------------------------------------------- 292434cca5 | patrick | 2023-08-02 20:39:13 -0700 Add guarded evoker vaults (Lici, Iguana) Add a few mid-D vaults with lightning rod, phantom mirror, phial of floods, or a box of beasts. The latter features the first hostile mutant beasts in a vault, I think. Maybe we'll see more of them... Closes #3073. -------------------------------------------------------------------------------- 9e84c16775 | patrick | 2023-08-02 16:23:14 -0700 Add new guarded new unrand vaults The slick slippers, Victory, the Storm Queen's Shield, and the lochaber axe can be found in these vaults. Since Victory's flavor mentions Okawaru, and it's an early-game unrand, the Victory vault doubles as an Okawaru overflow altar. -------------------------------------------------------------------------------- e06127da47 | Nicholas Feinberg | 2023-08-02 16:22:13 -0700 Add items.pickable dlua (nicolae) -------------------------------------------------------------------------------- 23386290e8 | Nicholas Feinberg | 2023-08-02 15:55:18 -0700 Shift misc items a little later (nicolae) Misc items (i.e. XP evokers, like Phial of Floods etc) didn't have their generation frequency adjusted after they were made unique, so they tended to all generate pretty early on. Shift them a bit later. This reduces average misc items in D from 1.5 to 0.8ish, Lair from 0.9 to 0.6, Orc from 0.4 to 0.15, etc. Later rates actually increase - for example, Elf:3 will probably now have more misc items to dangle as shiny bribes, since they won't have already generated earlier. -------------------------------------------------------------------------------- 00a50fe4a9 | Nicholas Feinberg | 2023-08-02 15:02:55 -0700 Fix misc objstat -------------------------------------------------------------------------------- 07c4bd200f | Nicholas Feinberg | 2023-08-02 14:53:45 -0700 Fix: remove Forest This has been obsolete since Jan 2014 or so. Reverts d9674dfee0f (Sept 2013). -------------------------------------------------------------------------------- 38cd9da427 | Nicholas Feinberg | 2023-08-02 14:11:31 -0700 Minor objstat refactoring -------------------------------------------------------------------------------- a1f710b590 | Sean Dewar | 2023-08-02 12:43:52 -0700 Fix Anaconda status description, remove unused variable Mousing-over Anaconda status would show "No description found" on WebTiles as it had the wrong name in the db (could still be found via ?/t as it would match the contents). Also remove an unused variable in `get_unusual_items()` after commit 128b3467. -------------------------------------------------------------------------------- 128b34678a | Nicholas Feinberg | 2023-08-02 11:15:49 -0700 Simplify unusual monster markings (Implojin, advil) To reduce noise and simplify option handling, let's only mark as unusual the items that are most likely to be relevant to players. Wands, distortion and chaos weapons, darts and throwing nets are all marked 'unusual' by default. Artefacts, brands to which the player is 'vulnerable', spectral weapons, javelins, and items with plusses are not. As before, this can be configured further in the player's rcfile. -------------------------------------------------------------------------------- 70533b5a48 | mainiacjoe | 2023-08-02 12:40:35 -0400 Add some self-published spell books (#3223) * Add a book of stinky clouds, "Amateur Aromatherapy" * Add a book of spells that swapped schools, "Elemental Confusion" * Add a book of range 1 spells that used to be ranged, "Getting Closer Than Before" * Add a book for introverts, "Peace and Solitude" * Add a book of high-level conjurations suitable for Spellforged Servitors, "Servitor Tips and Tricks" -------------------------------------------------------------------------------- 867994ef1c | Implojin | 2023-08-01 21:28:43 -0500 remove removed chess pieces ..from the autopickup menu. -------------------------------------------------------------------------------- ffbd99370a | Implojin | 2023-08-01 17:14:13 -0500 Prioritize stab highlights in console (Undo, u/SvalbardCaretaker) Since 750b6846b9, monster stabbability background highlighting in console was being drawn at a lower priority than unusual item highlighting. This made it difficult to see when a monster with an unusual item could also be stabbed while playing in console mode. This commit draws stab flags with higher priority than unusual, restoring the old stab background highlighting behavior. However, the monster names on the right side of the screen still have unusual state drawn at a higher priority than stabbability; this way, console players can easily see if a monster is both stabbable and unusual. -------------------------------------------------------------------------------- 10d7c63264 | Implojin | 2023-08-01 17:01:10 -0500 Let vulnerable highlight check cold blood (acrobat) This is a temporary usability fix since the 'vulnerable' unusual option is likely to be re-written soonish; thanks to acrobat for reporting this! -------------------------------------------------------------------------------- 1d4c2d1985 | Implojin | 2023-08-01 16:44:39 -0500 Add datura to unusual defaults (acrobat) Thanks acrobat! -------------------------------------------------------------------------------- 7cee417757 | Kyle Rawlins | 2023-08-01 15:53:55 -0400 ci: workaround for an llvm install issue Solution based on commits in: https://github.com/llvm/llvm-project/issues/64182 This should be reverted once that issue is resolved (looks like the maintainer is traveling right now). -------------------------------------------------------------------------------- a67bebab74 | patrick | 2023-08-01 10:01:20 -0400 Add a new custom book shop Back in 2012, I discovered a bug*. You couldn't define custom spellbooks with more than one spell in a shop. This is because the symbol for separating items in a shop definition was the same as the symbol for separating spells in a randbook's spell list: |. The map parser would just get confused. In 2015, I submitted a patch that changed the symbol for separating spells in a spell list to &, allowing custom shops to handle custom spellbooks. I said, "I promise to abuse this new vault-writing power as soon as possible." Apparently, "as soon as possible" was "eight years later". Some of the book themes are obvious, some less so. No doubt players will enjoy trying to figure them out. I may have gone slightly overboard, but that just means more variety for players. I do it all for them. * https://crawl.develz.org/mantis/view.php?id=5706 -------------------------------------------------------------------------------- 2c6fae2916 | Kate | 2023-07-31 13:55:23 +0100 Start Chaos Knights with a scroll of butterflies Since their Xom chesspieces are gone. -------------------------------------------------------------------------------- 48435b3698 | Kate | 2023-07-31 12:36:38 +0100 Fix bardings being equippable in beast form (#3216) Closes #3216. -------------------------------------------------------------------------------- fad53b2027 | Kate | 2023-07-31 12:36:38 +0100 Remove Xom chesspieces They didn't really fit as XP-based evokers, and weren't a particularly useful or interesting effect. -------------------------------------------------------------------------------- 1d195df450 | Kate | 2023-07-31 12:36:37 +0100 Remove the Awaken Earth spell It was intended as a counter to players digging tunnels in Elf, and while it sort of works in that sense it also acts unintuitively and completely unlike any other spell, being castable by monsters out of LOS and breaking into and out of vaults. Give deep elf elementalists LRD instead. -------------------------------------------------------------------------------- 88bdf31460 | Implojin | 2023-07-30 19:20:06 -0500 Adjust vulnerable venom highlight (Shard1697) This commit changes the behavior of the `vulnerable` unusual items option so that it highlights venom brands when the player is lacking rPois, instead of lacking poison immunity. -------------------------------------------------------------------------------- f8416d752b | Kate | 2023-07-30 16:53:28 +0100 Reduce base piety for Sacrifice Forms As a very narrow sacrifice, make it less valuable unless the player is actually giving up on some invested skill levels. -------------------------------------------------------------------------------- 52e89b3c1f | Kate | 2023-07-30 16:53:28 +0100 Fix an Octopode armour acquirement crash (#12247) Don't crash when acquiring armour as an Octopode with Antennae 3 and Sacrifice Hand (and no valid armour slots as a result). -------------------------------------------------------------------------------- d7735d0b83 | Kate | 2023-07-30 16:53:28 +0100 Fix mephitic cloud interaction with clarity (#12684) Don't mark noxious fumes as dangerous or prompt to enter them when the player has clarity. -------------------------------------------------------------------------------- e20648be1c | Kate | 2023-07-30 16:52:45 +0100 Don't place fire vortices as monsters As with ball lightnings, they have the "conjured" flag and aren't treated as proper monsters in many ways, so shouldn't be placed by vaults or as lava spawns. They remain only in a few cosmetic-only vaults and in some Sprints, and have been replaced either with fire elementals or with nothing in other cases. -------------------------------------------------------------------------------- 3a05650e59 | Nicholas Feinberg | 2023-07-29 22:03:03 -0700 Bland down up fire elementals Not quite baked yet. I'm hoping this doesn't break save compat. This reverts commit d94c9c017c6dc1da663324c1593852aaabcf8696. -------------------------------------------------------------------------------- e92f843865 | Nicholas Feinberg | 2023-07-29 22:00:16 -0700 Unrim Norris -------------------------------------------------------------------------------- 41b3b0883d | Nicholas Feinberg | 2023-07-29 14:06:56 -0700 Restore 1.6k-year-old Polynesian practices (CanOfWorms) Reverts eca0601a2dbd5a46cc1852a0cd81f4bd09d9ae3c. Time Cops Go Home -------------------------------------------------------------------------------- 0dfff664f2 | Monkooky | 2023-07-29 10:08:51 -0700 feat: two gimmick shops Adds a mail order shop that sells mail and order also a shop that sells weapons whose ego alliterates with the base type The mail-order catalogue is structured to always have mail (usually good) and sometimes also have order. Alliterative Armaments generates a list of alliteratively named items. [ Committer's note: Removed holy weapons from the list, too wild. Closes #3004 ] -------------------------------------------------------------------------------- 6444dff9de | hellmonk | 2023-07-29 10:08:51 -0700 feat: Some new Zot stairvaults [ Committer's notes: Reduced a/dlich count in crystal mountain Reduced iron golem count in zot clocked Closes #2977 ] -------------------------------------------------------------------------------- 3b489a7343 | hellmonk | 2023-07-29 10:08:51 -0700 feat: A brand new depths encompass Slightly wip. This needs more subvault maps, wall and floor tile selection to correspond with monster set, a better loot function, and some rebalancing. additional hexagon subvaults - EBERING ARE THESE ENOUGH?? add some aesthetics - EBERING ARE THESE ENOUGH?? improve loot - EBERING IS IT LOOTY ENOUGH?? [ Committer's notes: The PR had subsequent commits to add subvault maps and loot adjustments. Fiend frequency was tweaked a bit. Committer is a console player so can't comment on the tiles but the console theme colouring is good. Adjusted stair randomization and placement to offer some increased skipability as is semistandard with U encompasses. Closes #2666 ] -------------------------------------------------------------------------------- 4f203cd64d | hellmonk | 2023-07-29 10:08:51 -0700 feat: Norris Rework the surfer. Norris returns with a reworked spell set, water nymph aura, a pack of skysharks, and a slightly less edgy theme. Norris tentatively appears in elf, vaults, and depths. Numbers or placement will probably be adjusted. [ Closes #3042 ] -------------------------------------------------------------------------------- d94c9c017c | hellmonk | 2023-07-29 10:08:51 -0700 feat: spice up fire elementals Their attack flavor gimmick is kind of hard to notice even if you don't have rF. Give them a reach-cleaving attack (like lochaber axe) to make them stand out a little bit more. [ Closes #2817 ] -------------------------------------------------------------------------------- 57aedf9c6d | hellmonk | 2023-07-29 10:08:51 -0700 feat: Holy shoals encompass ending I think this is probably too hard right now. [ Committer's note: It was. Reduced monster density to be more in line with other shoals endings on average. Gave the javelineers a better chance at silver javs (the hand of Zin). Closes #2611 ] -------------------------------------------------------------------------------- f88b50090e | hellmonk | 2023-07-29 10:08:51 -0700 feat: New simple depths entry [ Closes #2889 ] -------------------------------------------------------------------------------- 485654376a | AlexanderPosch | 2023-07-29 10:08:51 -0700 vaults: New entry vaults for Snake and Swamp Snake:"alex1729_snake_entry_snake". It contains a few nagas/mambas/moccasins and one salamander with a bow. The salamander is positioned behind a turn so one can retreat and lure/run away if needed. [ Committer's note: removed placement of mambas/mocasins, ego from salamander's bow ] Swamp:"alex1729_swamp_entry_worm_eleionoma". The vault contains an eleionoma and up to 2 swamp worms positioned behind bushes. I hope this isn't to deadly. [ Committer's note: alas it was. toned down monster placement, increased randomization of layout ] [ Closes #2956 ] -------------------------------------------------------------------------------- 263cdf863d | Implojin | 2023-07-29 10:54:46 -0500 Remove vamp from unusual default (acrobat, Ge0ff) Trying to err on the side of less-is-more with this initial set of commits: Each additional brand that we add by default here adds noise and dilutes the impact of the unusual highlighting when it does show up. For anyone who would really prefer more warnings, please remember you can still add them to your rc file! -------------------------------------------------------------------------------- 0ef5263c4e | Kate | 2023-07-29 16:50:16 +0100 Update talisman manual listing -------------------------------------------------------------------------------- 05d06ac2ca | Kate | 2023-07-29 16:50:16 +0100 Adjust some documentation describing HP Crawl canonically uses "health" (rather than "hit points") - adjust some player-facing text to match. -------------------------------------------------------------------------------- d1d04c167f | Kate | 2023-07-29 16:50:16 +0100 Label active talismans in the inventory -------------------------------------------------------------------------------- f8873633c0 | Implojin | 2023-07-29 10:16:31 -0500 Further unusual default tweaks Large rocks are never strictly 'unusual': The monsters that can generate with them always have them. Silver was made redundant with javelins in f782e3da01 : We don't need to be warning for it separately anymore. More tweaks to come? -------------------------------------------------------------------------------- 77248fceac | Implojin | 2023-07-29 09:31:42 -0500 Remove heavy from default unusual warnings (PF) After some discussion, this deals quite a bit less damage wielded by monsters than I thought it did! We're removing this from the default warning for now, but you can always re-add it in your rcfile if you'd like. -------------------------------------------------------------------------------- 750b6846b9 | Implojin | 2023-07-29 08:56:23 -0500 feat: unusual monster item threat highlighting This commit adds a new game option: unusual_monster_items. When set, this option highlights monsters carrying 'unusual' items, similar to the existing tiles highlighting for 'nasty' monsters. This is a list option that matches regexes against each monster's inventory, so players can customize this in a very granular way. You could, for example, highlight any monster carrying snakebite. This works in both tiles and console through a pair of associated options, tile_show_threat_levels = unusual , and unusual_highlight = hi:magenta . Please see options_guide.txt for details. I've setup the default highlighting here based on what felt reasonable to me in playtesting: Future adjustments likely, feedback welcome. -------------------------------------------------------------------------------- b642c7f9a3 | Nicholas Feinberg | 2023-07-28 22:29:57 -0700 Fix holy weapon death form prompts (dilly, acrobat) -------------------------------------------------------------------------------- f782e3da01 | sdynet | 2023-07-28 22:16:01 -0700 Remove silver boomerang Reduce inventory pressure and leave Silver as a place for javelin(and Lajatang of Order). -------------------------------------------------------------------------------- 83a47ab31f | sdynet | 2023-07-28 22:16:01 -0700 Adjusting throwable ego:dispersal Dispersal is a special ego that doesn't hurt, and I think it fits the theme of darts better. Remove boomerang ego:dispersal Add dart ego:dispersal -------------------------------------------------------------------------------- 6c87fcb011 | hellmonk | 2023-07-28 22:03:00 -0700 feat: Three new vaults entrances -------------------------------------------------------------------------------- 1e11dc61e8 | hellmonk | 2023-07-28 22:01:32 -0700 Adjust constriction Remove the stepdown and scale linearly. Also, apply AC without breakpoints. To compensate for increased damage after long durations, reduce the base damage of a couple of the meatier constricting monsters, vile clutch, and wand of roots. Damage is lower before 50 aut, so this may not have been necessary, but we'll play it safe. Closes #2883. -------------------------------------------------------------------------------- ce2be97bb4 | hellmonk | 2023-07-28 21:56:27 -0700 Make some swamp ends less annoying Reduce cloud placements in swamp_icy and swamp_pestilence, and replace the pestilence oklob with a (much funnier) spectral bunyip. -------------------------------------------------------------------------------- 840a4f330f | Antal Spector-Zabusky | 2023-07-28 21:54:28 -0700 Hooves and talons shouldn't force bardings off -------------------------------------------------------------------------------- f073b5ab69 | hellmonk | 2023-07-28 21:50:05 -0700 feat: pasta randarts (major [critical (vital)]) https://i.kym-cdn.com/photos/images/original/001/233/131/e09.jpg Closes #3162. -------------------------------------------------------------------------------- 9dd5d42eca | Nicholas Feinberg | 2023-07-28 21:45:56 -0700 Fix: make /roots require solid ground again (bobross420-1) Broken in 57a6a0d306af5fede1b6d10abc967cf4a8703c84. Closes #3152. -------------------------------------------------------------------------------- 2bcca7f065 | Perren Yang | 2023-07-28 21:35:40 -0700 Add a Troubleshooting section to INSTALL.md (Olga) For expectedly confusing pain points. Comes with a free initial entry! [Committer's note: fixed formatting.] Closes #3197. -------------------------------------------------------------------------------- 32664fa86c | Perren Yang | 2023-07-28 21:35:39 -0700 Remove duplicate mention of zlib It was mentioned twice in the dependencies list. -------------------------------------------------------------------------------- df778148c9 | Jared Miller | 2023-07-28 21:30:49 -0700 Correct typos Closes #3202. -------------------------------------------------------------------------------- eed8119486 | laserbat | 2023-07-28 21:12:25 -0700 Added Necrodancer title -------------------------------------------------------------------------------- 7ea37e432a | orjb1 | 2023-07-28 21:11:52 -0700 Simple Arrival Vault With Lava Closes #3182. -------------------------------------------------------------------------------- af693774bd | Zhang Kai | 2023-07-28 21:09:42 -0700 Update unrand.txt -------------------------------------------------------------------------------- 449a7298ed | Zhang Kai | 2023-07-28 21:09:42 -0700 Update status.txt -------------------------------------------------------------------------------- d5ede58fa0 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update spells.txt -------------------------------------------------------------------------------- 4c5a8775d7 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update skills.txt -------------------------------------------------------------------------------- b7ef08388f | Zhang Kai | 2023-07-28 21:09:42 -0700 Update mutations.txt -------------------------------------------------------------------------------- a4dcbe002f | Zhang Kai | 2023-07-28 21:09:42 -0700 Update monsters.txt -------------------------------------------------------------------------------- 792cb2b54a | Zhang Kai | 2023-07-28 21:09:42 -0700 Update items.txt -------------------------------------------------------------------------------- 40a9fac9db | Zhang Kai | 2023-07-28 21:09:42 -0700 Update backgrounds.txt -------------------------------------------------------------------------------- 13c07b6b04 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update ability.txt -------------------------------------------------------------------------------- 16a96a9694 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update FAQ.txt -------------------------------------------------------------------------------- 120e3251a6 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update help.txt -------------------------------------------------------------------------------- 757720c09c | Zhang Kai | 2023-07-28 21:09:42 -0700 Update backgrounds.txt -------------------------------------------------------------------------------- 832e491317 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update cards.txt -------------------------------------------------------------------------------- cc9f500c86 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update features.txt -------------------------------------------------------------------------------- bcea77f4c5 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update mutations.txt -------------------------------------------------------------------------------- 1dbc096f5e | Zhang Kai | 2023-07-28 21:09:42 -0700 Update status.txt -------------------------------------------------------------------------------- 127e5477f0 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update monsters.txt -------------------------------------------------------------------------------- e6e5c98185 | Zhang Kai | 2023-07-28 21:09:42 -0700 Update items.txt -------------------------------------------------------------------------------- 7c72fd96ea | Zhang Kai | 2023-07-28 21:09:42 -0700 Update unrand.txt -------------------------------------------------------------------------------- 9f80d7ed8b | Zhang Kai | 2023-07-28 21:09:42 -0700 Update spells.txt -------------------------------------------------------------------------------- a17a83b80e | Monkooky | 2023-07-28 21:08:19 -0700 Make artefact orbs use slightly orbier names an exceedingly trivial oversight that I am only bothering to correct since I was already poking around in this code. -------------------------------------------------------------------------------- 649fb47aab | hellmonk | 2023-07-28 21:07:47 -0700 fix plasma beam damage Pull out the lightning component to a new beam. -------------------------------------------------------------------------------- 5ef9b61f8f | Sebastian Zivota | 2023-07-28 21:05:06 -0700 Correct reference to "caster" in granite talisman's description -------------------------------------------------------------------------------- e3233786a7 | Nicholas Feinberg | 2023-07-28 15:50:19 -0700 Fix: flip foes/friends (KurzedMetal) Closes #3218. -------------------------------------------------------------------------------- 25055926c8 | Nicholas Feinberg | 2023-07-28 08:55:56 -0700 Remove //Ignacio (Ge0ff) -------------------------------------------------------------------------------- 8eba5f6939 | Nicholas Feinberg | 2023-07-27 20:18:08 -0700 More paralysis + petrification fixes (hellmonk) Closes #3217. -------------------------------------------------------------------------------- a258d1a3ce | Nicholas Feinberg | 2023-07-27 20:15:29 -0700 Fix chain paralysis + petrification (hellmonk) -------------------------------------------------------------------------------- 8c388e6fe1 | Nicholas Feinberg | 2023-07-27 20:13:56 -0700 Correct a comment These have been wrong since 5c2cb368445 (2015). -------------------------------------------------------------------------------- a77b45bd9b | Nicholas Feinberg | 2023-07-27 09:51:37 -0700 Halve death form HD draining (Midn8, elliptic) 8x the effect of a normal drain brand on HD was a little excessive. -------------------------------------------------------------------------------- cf821cafb2 | Nicholas Feinberg | 2023-07-26 23:00:17 -0700 Remind players when they've finished Pan (Midn8) In case they aren't watching } and/or aren't familiar with Pan. -------------------------------------------------------------------------------- b59cdcccf2 | Nicholas Feinberg | 2023-07-26 20:52:47 -0700 Move more talisman power into scaling Continue to make training Shapeshifting feel less bad by moving more power into skill scaling effects. Boost top skill Anaconda AC and Blade Hands damage. Reduce base Dragon Form and Statue Form AC, moving it into skill scaling. This is a pretty modest change, and more could be done. -------------------------------------------------------------------------------- a53a963a1d | Nicholas Feinberg | 2023-07-26 20:47:12 -0700 Don't drain undead with death (Midn8) Make the 'draining' component of death form's melee effects only affect living and plant monsters, as with other sources of draining. Probably it should check rN too. -------------------------------------------------------------------------------- 6b00f1bea8 | Nicholas Feinberg | 2023-07-26 15:18:00 -0700 Discharge off-level eyes (Sergey) -------------------------------------------------------------------------------- 0f8bd3a31e | Nicholas Feinberg | 2023-07-26 07:42:52 -0700 Fix Scorch damage display (CanOfWorms) -------------------------------------------------------------------------------- b3e1d13bf4 | patrick | 2023-07-25 22:07:56 -0400 Tweak the ending of nicolae_hydra_factorization (gammafunk) Spread the loot out across the floor of the Lerny chamber, instead of piling it all up in a tiny closet at the end. Also very slightly increase the max amount of loot and the number of guaranteed artefacts. I'll get a kill in there one of these days. -------------------------------------------------------------------------------- 7d9b8f557b | patrick | 2023-07-25 21:45:44 -0400 Tweak the center of nicolae_shoals_lighthouse Now that the phantom mirror is unique, there's a good chance it will be replaced with a wand, which would make the flavor not work. (Lighthouses use mirrors to reflect the light where it needs to go, you see.) The only thing I can think of to replace it with is an orb of light, but honestly, it might just be best to not have any loot in there in the first place and close it off. So I'll do that. This also fixes the issue mentioned in this reddit thread: https://www.reddit.com/r/dcss/comments/152vcev/ -------------------------------------------------------------------------------- ac0dbeb3ab | Kate | 2023-07-24 20:06:05 +0100 Give Siphon Essence a unique cooldown Exhaustion is reserved for god abilities that are intended to share a cooldown (Ru in particular). There's no reason for Siphon Essence to share a cooldown with those god abilities, so give it its own separate cooldown as other similar abilities have. -------------------------------------------------------------------------------- 4a313f05bb | Kate | 2023-07-24 20:00:52 +0100 Adjust wording on X help screen (lowfye) -------------------------------------------------------------------------------- 95aa79084e | Nicholas Feinberg | 2023-07-24 10:10:48 -0700 Reduce ?blink trove prices 4-8 scrolls is an enormous price. ?blinking is extremely good, especially now that it works in Zot and that Controlled Blink, Semicontrolled Blink etc are gone. Drop it to 3-5 scrolls. -------------------------------------------------------------------------------- 57cb03d3e8 | Nicholas Feinberg | 2023-07-23 17:06:40 -0700 Fix Siphon Essence exhaust (acrobat) 06437d652345d137a233 was purely cosmetic. Oops! -------------------------------------------------------------------------------- 827e0957a7 | Nicholas Feinberg | 2023-07-22 17:43:11 -0700 Halve siphon essence healing (elliptic) "That much healing is the realm of Borg's and gods." -------------------------------------------------------------------------------- 06437d6523 | Nicholas Feinberg | 2023-07-22 17:40:46 -0700 Make siphon essence exhausting (dilly) -------------------------------------------------------------------------------- 08a7bc6f2d | Nicholas Feinberg | 2023-07-22 16:46:21 -0700 Add serpent talisman to serpentskin sales (dilly) Sometimes! -------------------------------------------------------------------------------- 653cfed441 | Nicholas Feinberg | 2023-07-22 15:22:58 -0700 Bump dreadful rot duration -------------------------------------------------------------------------------- 7b4e30badb | Nicholas Feinberg | 2023-07-22 15:07:48 -0700 Remove Djinn legs (Goratrix, Monkooky) This code is abysmal ;_; -------------------------------------------------------------------------------- 1e5ebcb2c6 | Nicholas Feinberg | 2023-07-22 15:00:04 -0700 Make dragon-form players red in the face (Sastreii) New tiles for dragon form (including making the default form red, following on from fd539b1f27069, 2015), plus Siphon Essence. -------------------------------------------------------------------------------- 810772c3d7 | Nicholas Feinberg | 2023-07-22 14:50:32 -0700 Rework Lucy wrath protection (elliptic) Give a fixed 80% chance of banishing god wrath summons (and other perma summons, due to code sloppiness) and a 30% chance of banishing other monsters nearby, rather than banishing 2d3 random monsters whenever god wrath triggers. -------------------------------------------------------------------------------- e7fe003f5b | Kyle Rawlins | 2023-07-22 12:47:48 -0400 lint -------------------------------------------------------------------------------- b41548654e | Kyle Rawlins | 2023-07-22 10:51:13 -0400 fix: several tutorial end issues * The tutorial summary popups have had broken formatting since 8e7229f42b641c00. This lets ui::message take color formatting optionally and uses it for this case. * Give tutorial summary popups titles, and remove a manually formatted prompt that was hardcoded in the database, now that the popup is more standardized. Also reword the prompt for exit popups. * tutorial exit conditions were also broken; this mostly shouldn't matter but may affect a popup on webtiles * convert the tutorial death message to a popup with text from the database, rather than a hard-coded popup -------------------------------------------------------------------------------- 1ebeae05c6 | gammafunk | 2023-07-22 00:28:01 -0500 feat: Aiming at targets with `spells.path()` Give this clua function a new argument to set whether it should aim its bolt directly at the target, which is the same logic used by the '.' key in the targeting UI. Previously the function always did this, so this new argument defaults to true. The argument is useful for callers to determine whether the full range bolt would hit e.g. friendly monsters or locations that could destroy thrown ammunition. -------------------------------------------------------------------------------- d109795599 | Nicholas Feinberg | 2023-07-20 17:34:17 -0700 Remember to sign your work -------------------------------------------------------------------------------- 456c268693 | gammafunk | 2023-07-20 16:28:19 -0500 feat: Tweak a Shoals vault For nicolae_shoals_abyss_on_the_beach, have loot placed near the Abyss portal instead of on top of it and the Lugonu altar, since this way it's easier to see the loot items at a glance. Add one more star_item to the loot, bringing the total to three items, so that this runed door vault is a bit more worthwhile to enter. This very slightly decreases the average monster placement but still gives it a 2:1 ratio for monsters to loot. -------------------------------------------------------------------------------- 64bd43a5d1 | Nicholas Feinberg | 2023-07-20 13:33:47 -0700 Fix: mark granite talismans useless for gr (N0-LGA) And some code deduplication. -------------------------------------------------------------------------------- 956748295d | Nicholas Feinberg | 2023-07-20 13:33:44 -0700 Add missing logo (gammafunk) -------------------------------------------------------------------------------- 21cae6e6d1 | Nicholas Feinberg | 2023-07-20 13:15:34 -0700 New Eustachio splash (CanOfWorms, King7artist) -------------------------------------------------------------------------------- da1cbd555d | Nicholas Feinberg | 2023-07-19 13:00:19 -0700 Rework Arcjolt Requiring direct adjacency to victims made it a bit harder to set up cool chains of electrocution than was intended. Allow hitting anything within radius 2 (and conducting from there as previously). We may have to nerf damage later, which is fine. Fix the bug that allowed Hep's ancestors to conduct Arcjolt blasts. -------------------------------------------------------------------------------- 91d0a87a8a | Nicholas Feinberg | 2023-07-19 12:41:12 -0700 Don't give /digging to monsters (Ge0ff) Since they can't use it anymore. -------------------------------------------------------------------------------- e6599b31ac | Nicholas Feinberg | 2023-07-19 11:04:36 -0700 Fix treeform not scaling damage with UC (acrobat) Broken somewhere during the shapeshifting changes. -------------------------------------------------------------------------------- 889dc8f05a | Nicholas Feinberg | 2023-07-19 10:17:29 -0700 Encourage Shapeshifting training Reduce max skill for tier 2 forms (maw, serpent, blade) from 20 to 18. This makes each level of shapeshifting give ~20% more stuff. -------------------------------------------------------------------------------- 67f8d5f464 | Nicholas Feinberg | 2023-07-19 10:14:54 -0700 Gobble down some transformative tiles (Sastreii) New tiles for maw form and felid dragons. -------------------------------------------------------------------------------- f858018070 | Nicholas Feinberg | 2023-07-19 09:43:25 -0700 Fix: remove Necromutation (wormbird) From Crypt loot. -------------------------------------------------------------------------------- dd4830dc55 | Nicholas Feinberg | 2023-07-19 09:40:47 -0700 Revert "Increase local tiles default font sizes (ortoslon)" Revealed many latent bugs that I don't have time to fix and caused unhappiness in various circles. This reverts commit 4ac5daa9c1ac0adffcccbb193fca521ebfc9f310. -------------------------------------------------------------------------------- 82a5723daf | Nicholas Feinberg | 2023-07-19 09:40:02 -0700 Shapeshifter: +1 UC, -1 Fighting (elliptic) Push the background a little more toward UC, since at present it's a little too tempting to immediately switch to an early weapon. A good weapon should still be tempting... it's a balance. -------------------------------------------------------------------------------- eda263fcf1 | elliptic | 2023-07-18 21:09:36 -0400 Fix form AC scaling. This was accidentally reduced when current skill was below the max skill in 5cd03af36. I've rounded down to get the new value at min skill, which is a small nerf (but the new FormScaling system is a buff below min skill in general). -------------------------------------------------------------------------------- d7f53cfe47 | elliptic | 2023-07-18 21:09:36 -0400 Fix mawform aux damage. This was accidentally reduced by 9 in f44f7adfa. -------------------------------------------------------------------------------- 52107efa6a | Nicholas Feinberg | 2023-07-18 13:45:34 -0700 Merge Labyrinth and Temple (hellmonk) Cute gimmick map made maybe less goofy with temple automapping. Could also do another version where the altars are in the middle, but maybe that's too much. -------------------------------------------------------------------------------- c0898b9bfa | Nicholas Feinberg | 2023-07-18 11:23:28 -0700 Cleanup: tweak trove.des empty space Hoping I can sneak this by some folks and give em a fun surprise later with the misleaing commit message. If you spot this, don't give the game away! Just add a smiley face on the commit :) -------------------------------------------------------------------------------- f719d907db | Nicholas Feinberg | 2023-07-18 11:07:31 -0700 Remove nasty troves Monsters in troves are just a mean gotcha. They mostly don't matter, but they'd feel quite bad if they ever did. Let's cut the ynoxinuls (pointless) and shining eyes (!!!) from their respective troves. -------------------------------------------------------------------------------- ba68ff8b13 | Nicholas Feinberg | 2023-07-18 10:26:34 -0700 Add about 27 new species To the artefact name pool. -------------------------------------------------------------------------------- 067879e3d3 | Kate | 2023-07-17 21:47:31 +0100 Update map knowledge when fully mapping levels (qwqw) Fixes discovered altars in the mapped Temple not being searchable, and in theory makes it possible to turn on mapping for Gauntlets (although there are still other issues - revealing the end loot immediately isn't ideal). -------------------------------------------------------------------------------- b7aa00794e | Nicholas Feinberg | 2023-07-17 12:48:57 -0700 Fix miasma exclusions in nonliving forms (Monkooky) Ew! -------------------------------------------------------------------------------- aec59ea282 | Nicholas Feinberg | 2023-07-17 10:25:18 -0700 Change talisman console glyph (jejorda) To support the default PuTTY font. -------------------------------------------------------------------------------- 4ddeb37ba4 | Nicholas Feinberg | 2023-07-17 10:20:00 -0700 Fix form base damage Oops! -------------------------------------------------------------------------------- 19405a7a6a | Nicholas Feinberg | 2023-07-17 08:24:47 -0700 Fix lig AC -------------------------------------------------------------------------------- adbfe6a7a0 | Kyle Rawlins | 2023-07-17 10:23:50 -0400 fix: refactor / improve some local tiles menu shade logic This fix also addresses what (in the old implementation) was an off-by-one error that could lead to crashes in size 1 menus on local tiles. Resolve #3204 -------------------------------------------------------------------------------- 4fced400ed | Nicholas Feinberg | 2023-07-16 20:37:48 -0700 Fix maw bite chance (Monkooky) Since this isn't a mutation but rather an item-based effect, it doesn't need to scale with XL. (It already scales with skill.) Fix the chance at 50%. (Formerly ~53% at XL1, ~96% at XL 27.) -------------------------------------------------------------------------------- cff7bd0079 | Nicholas Feinberg | 2023-07-16 17:03:24 -0700 Fix: don't crash on startup (steves) Oops! -------------------------------------------------------------------------------- f44f7adfac | Nicholas Feinberg | 2023-07-16 16:21:24 -0700 Unify more shapeshifting logic with FormScaling -------------------------------------------------------------------------------- fc52928797 | Nicholas Feinberg | 2023-07-16 16:17:16 -0700 Dataify UC base damage And buff blade/dragon form slightly, mostly for aesthetic reasons. -------------------------------------------------------------------------------- 5cd03af367 | Nicholas Feinberg | 2023-07-16 16:03:10 -0700 Refactor form AC Hopefully this leads toward more readability. -------------------------------------------------------------------------------- e76ace5867 | Nicholas Feinberg | 2023-07-16 15:10:40 -0700 Adjust transformation HP scaling (Sergey, CanOfWorms) New and exciting tech: - Enter an underskilled form to regen to your max (10%) HP very quickly, then switch out to be back at full HP. - Leave dragon form to heal 50% faster, then switch back in when done. This commit fixes both issues. It's a little weird when entering anaconda/dragon form, but eh, we'll live. -------------------------------------------------------------------------------- 785cd24033 | Nicholas Feinberg | 2023-07-16 14:38:36 -0700 Remove an unused calc_hp parameter -------------------------------------------------------------------------------- fa1e89e327 | Nicholas Feinberg | 2023-07-16 14:18:18 -0700 Fix tabbing through water in anaconda form (dilly) -------------------------------------------------------------------------------- edf3814b65 | Nicholas Feinberg | 2023-07-16 14:01:14 -0700 Are (ragingrage) Continuing from 3fc6992b3bdcffd37177a7bdf94e09f15f2840b7. -------------------------------------------------------------------------------- 9f8154dce0 | Nicholas Feinberg | 2023-07-16 13:58:20 -0700 New talismans (Sastreii) Plus corresponding descriptions. Serpent talisman might want another pass. -------------------------------------------------------------------------------- 7df5254b3a | Nicholas Feinberg | 2023-07-16 13:58:11 -0700 New ancient lich tile (Sastreii) -------------------------------------------------------------------------------- edc87ead1b | Nicholas Feinberg | 2023-07-16 13:39:08 -0700 Re-tweak Sac Artifice description -------------------------------------------------------------------------------- 8f428e28dd | Nicholas Feinberg | 2023-07-16 13:37:21 -0700 Tweak Dowan dialogue For many years, people unfamiliar with archiac English idioms have been understandably startled by Dowan's charming folkways. Let's accènt this encounter a bit diffèrèntly. -------------------------------------------------------------------------------- 3624f24208 | Kate | 2023-07-16 18:56:43 +0100 Fully map the Temple on entering Adds a new flag for fully mapped branches, and refactors magic mapping to handle full mapping with a parameter instead a special-cased radius check. Fully mapped floors provide no exploration healing or piety, and have no exploration traps (which was already true for the Temple except for the healing). It would be nice to also map Gauntlets on entry but there are some extra things to resolve there - as implemented, monsters and items aren't mapped, but displaying them would also reveal the minotaur's treasure immediately (and removing Meteoran exploration healing would be a bit more meaningful in Gauntlet than in Temple). -------------------------------------------------------------------------------- 165d99f333 | Kate | 2023-07-16 18:54:48 +0100 Recolour talismans of death To magenta, instead of a mostly darkgrey elemental colour. -------------------------------------------------------------------------------- 53e30a7d5b | Kate | 2023-07-16 16:26:52 +0100 Show inaccuracy on the % screen -------------------------------------------------------------------------------- dc8c9485ea | Nicholas Feinberg | 2023-07-15 22:56:34 -0700 Loose a terrible wrath upon forms Reduce damage for anaconda, blade, dragon, and storm forms. Halve maw healing chance. Slightly reduce storm form AC. Further changes probably en route for death and statue form. Let's play around and see. -------------------------------------------------------------------------------- 8e918b0104 | Nicholas Feinberg | 2023-07-15 22:42:15 -0700 Make Dragon min/max skill match Statue (elliptic) To reduce the gap between tier 2 and 4 forms. -------------------------------------------------------------------------------- 0f5680fe28 | Nicholas Feinberg | 2023-07-15 22:41:18 -0700 Increase max HP penalty for shapeshifting From -70% to -90%. -------------------------------------------------------------------------------- 4ac5daa9c1 | Nicholas Feinberg | 2023-07-15 22:32:33 -0700 Increase local tiles default font sizes (ortoslon) For readability. This feels weird to me but maybe I'll get used to it. Or maybe I'll revert it! The old defaults were set up for 1024x700, anyway, which seems absurd. Closes #3116. -------------------------------------------------------------------------------- ecf8365d7c | Nicholas Feinberg | 2023-07-15 22:18:10 -0700 Tweak ?fear description (OctopodesWeekly) -------------------------------------------------------------------------------- 51639376c0 | Nicholas Feinberg | 2023-07-15 22:15:59 -0700 Bearly fix fear references (OctopodesWeekly) -------------------------------------------------------------------------------- ce7730605e | Nicholas Feinberg | 2023-07-15 22:09:15 -0700 Fix Tomb Fo shaft warning (WizardIke) Broken in 4d237caa85e2dd7638bbde1e443ca14111cf8674. Closes #3181. -------------------------------------------------------------------------------- 94ca0303d8 | Nicholas Feinberg | 2023-07-15 21:58:00 -0700 Fix stat display on untransform (MIC132) Closes #3199. -------------------------------------------------------------------------------- 6747c968d8 | Nicholas Feinberg | 2023-07-15 21:49:45 -0700 Tweak Talisman of Death description (jejorda) Closes #3201. -------------------------------------------------------------------------------- 8761c469a7 | Nicholas Feinberg | 2023-07-15 21:43:01 -0700 Remove unused conflicts -------------------------------------------------------------------------------- 6babd820d0 | Nicholas Feinberg | 2023-07-15 21:42:43 -0700 Fix the tag upgrade build? -------------------------------------------------------------------------------- 31dc95f928 | Nicholas Feinberg | 2023-07-15 20:29:06 -0700 Add talismans to ?? -------------------------------------------------------------------------------- 3d276fc77b | Nicholas Feinberg | 2023-07-15 20:23:45 -0700 Let final effects fire during Serpent's Lash (N0-LGA) Seems a little more intuitive to people that e.g. damage mirroring, TRJ spawns, ?immo fire etc would happen right after a serpent's lash attack, even before time unfreezes. -------------------------------------------------------------------------------- 8d65735525 | Nicholas Feinberg | 2023-07-15 20:14:08 -0700 Tag MUT_NO_REGENERATION for removal In the unlikely day we ever break major version support. -------------------------------------------------------------------------------- dca1076213 | Nicholas Feinberg | 2023-07-15 20:08:16 -0700 Continue removing monster potion use Continuing from e8cad7f256b05d and 35f977ffcd317870459. Fun bit here: friendlies wouldn't drink !inv if the player didn't have sinv! How many years has *that* been irrelevant for... -------------------------------------------------------------------------------- 8f4bdadfad | Nicholas Feinberg | 2023-07-15 19:57:38 -0700 Play with unique talismans Add dragon-blood talisman to Bai Suzhen (she was on my short-list initially, and was a popular suggestion from others, e.g. elliptic), and reduce the odds of some other talismans to a coinflip. Aizul stays guaranteed (since that serpent talisman is more flavor than value at the point it appears - until we upgrade it to a randart?!), and Roxanne is of course iconic. -------------------------------------------------------------------------------- c5ec2c201f | Nicholas Feinberg | 2023-07-15 19:57:38 -0700 Fix statue form pop distribution Some testing code was left in. -------------------------------------------------------------------------------- f123eb1c33 | gammafunk | 2023-07-15 18:38:27 -0500 fix: Correct syntax in an overflow altar vault A syntax error in `beargit_hepliaklqana_dungeon_heroes` I noticed from error messages during objstat runs. -------------------------------------------------------------------------------- 2c8c3c2ad7 | Nicholas Feinberg | 2023-07-15 16:18:42 -0700 Tweak maw form / gozag warning (elliptic) -------------------------------------------------------------------------------- 9f2073e164 | Nicholas Feinberg | 2023-07-15 16:09:03 -0700 Remove MUT_ -------------------------------------------------------------------------------- 3a27601e74 | Nicholas Feinberg | 2023-07-15 16:07:12 -0700 New mutation tiles (CanOfWorms) Mostly demonspawn stuff, but some other fun is there too. Also some renames for tidiness and consistency. -------------------------------------------------------------------------------- e85e653229 | Nicholas Feinberg | 2023-07-15 15:46:10 -0700 Improve monster output for talismans -------------------------------------------------------------------------------- c43c3f5763 | Nicholas Feinberg | 2023-07-15 15:46:10 -0700 Clarify Sac Artifice re talismans (Flugkiller) -------------------------------------------------------------------------------- d17712608e | Nicholas Feinberg | 2023-07-15 15:46:10 -0700 Fix double-double corpse combo (N0-LGA) If you're in maw form, Yred should make spectres, not zombies. You ate those corpses! -------------------------------------------------------------------------------- 146b5e124f | Nicholas Feinberg | 2023-07-15 15:46:10 -0700 Add messaging for Gozag gold maw form Feeling cute, might delete this mechanic later. -------------------------------------------------------------------------------- 485e682e34 | gammafunk | 2023-07-15 15:51:00 -0500 feat: Tweaks to a Lair ending (elliptic) For hellmonk_lair_end_abyssal_woods, don't try to place Mlioglotl with a rare chance. For branch ends, we generally don't place `8` level threats since the end vault is both important and already has a high difficulty. We try to keep difficulty a bit more consistent for these maps, and Mlioglotl is a fast and very hard hitting monster. Due to a slight bug in my DES when I modified this vault that wasn't caught when the unique was added to it in ae8ea5ec392b, Mlioglotl couldn't actually generate, but let's just make this official. Also replace the ancient zymes in this vault with a raiju. The zyme sickness mechanic really only works in the Abyss, where having no regen for any amount of time is impactful and resting or moving is a non-trivial decision. Although the damage profile of a zyme is fine, raiju is quite similar, is also an Abyss native, and its unique mechanic is fine for Lair. -------------------------------------------------------------------------------- 31ea1f65cc | Nicholas Feinberg | 2023-07-14 18:27:11 -0700 Fix talisman shopping lists (Midn8, elliptic) -------------------------------------------------------------------------------- e00219d475 | patrick | 2023-07-14 15:47:04 -0500 Make some tweaks to the jellycorners ending Make the center "towers" of the corners more likely (though not guaranteed) to create fighting niches, and provide more walls to potentially make more niches. You might still have to dig out a block or two of slime to get a good niche, though. -------------------------------------------------------------------------------- 988e38f321 | patrick | 2023-07-14 15:47:04 -0500 Add a new Slime Pit ending In my earlier set of Slime Pit endings, I had one ending that was intended to be easier than normal, with a lot of corridors. It turned out to be even easier than I thought thanks to the abundance of glass walls: TRJ could see the player but wouldn't move around the walls to get to them, instead staying where it could see them. When I merged the vaults, I dropped that one ending, thinking I would get around to making another corridor-heavy vault some other time. I wasn't expecting "some other time" to be "a day or two later", but inspiration strikes when it wants. Anyway: slime_pit_nicolae_block_by_block: Features a number of corridors with the slime walls mostly confined to the edges, and more narrow areas as you get closer to the center. -------------------------------------------------------------------------------- c3c14f638d | Nicholas Feinberg | 2023-07-14 10:47:39 -0700 Prompt on unsafe untransform (elliptic) Via the ability. (The evoker already prompted.) -------------------------------------------------------------------------------- a29a1f0fbb | Nicholas Feinberg | 2023-07-14 10:40:44 -0700 Let anacondas autoexplore through deep water (elliptic) -------------------------------------------------------------------------------- 704a3bb60e | Alvin | 2023-07-14 07:01:07 -0700 fix beargit_hepliaklqana_dungeon_heroes formatting remove unneeded "\" -------------------------------------------------------------------------------- b88eb75e06 | Nicholas Feinberg | 2023-07-13 21:31:11 -0700 Talisman tiles (Sastreii) Well, some of these are Sastreii. Some aren't. Guess which? -------------------------------------------------------------------------------- 50393794a2 | Nicholas Feinberg | 2023-07-13 21:30:41 -0700 Make Blade Hands damage scale with skill again For felids and other non body armour users to have some justification to train shapeshifting. A sop. -------------------------------------------------------------------------------- 3aca3be9df | Nicholas Feinberg | 2023-07-13 20:37:45 -0700 Simplify UC accuracy bonus Remove bonus accuracy for throwing and for claws; add more flat accuracy for UC generally and remove the extra skill-based bonus. -------------------------------------------------------------------------------- 4392ee761c | elliptic | 2023-07-13 22:58:10 -0400 Fix display of max maw damage. -------------------------------------------------------------------------------- 3fc6992b3b | Nicholas Feinberg | 2023-07-13 13:43:01 -0700 To -------------------------------------------------------------------------------- cc2c45dbe4 | Nicholas Feinberg | 2023-07-13 13:41:45 -0700 Tweak prunes (Undo) -------------------------------------------------------------------------------- cf7e37af1d | Nicholas Feinberg | 2023-07-13 11:22:42 -0700 Fix aptitudes generation (N0-LGA) -------------------------------------------------------------------------------- a0b03e459d | Nicholas Feinberg | 2023-07-13 10:05:51 -0700 Feat: pyrna hc fbzr ehqrarff Hfr n ebg13-"pvcurerq" yvfg bs fyhef naq bgure ehqr jbeqf gb qvfpbhentr gur anzr trarengbe sebz guebjvat ernyyl anfgl fghss bhg gurer. Cynlshyyl, ercynpr gur ehqr jbeq jvgu gur ebg13'q rdhvinyrag, fvapr gubfr npghnyyl ernq cerggl jryy. Jr pbhyq rkcnaq ba guvf naq nqq zber gb gur yvfg va shgher, nqq shmml zngpuvat, rgp. -------------------------------------------------------------------------------- e8cad7f256 | Nicholas Feinberg | 2023-07-12 23:08:12 -0700 Remove monster potion use As with 35f977ffcd317870459, we have more fun ways to create difficulty. -------------------------------------------------------------------------------- 35f977ffcd | Nicholas Feinberg | 2023-07-12 22:56:17 -0700 Remove monster scroll use This almost never came up these days (since monsters could only use ?summoning, and the relevant bailey vault now set those as no_pickup), and it was mostly frustrating when it did. Crawl has many exciting ways to add difficulty spikes - unique enemies, out-of-depth foes, nasty vaults, malevolence effects... it doesn't need to add item destruction into the mix. -------------------------------------------------------------------------------- 072fdb8a1f | Nicholas Feinberg | 2023-07-12 21:44:27 -0700 Give Death Form its willpower back (elliptic, Lightli) Confusion without !curing is a very special gift. -------------------------------------------------------------------------------- 1326d75512 | Nicholas Feinberg | 2023-07-12 21:40:58 -0700 Fix Siphon Essence description -------------------------------------------------------------------------------- 771a54ca4b | Nicholas Feinberg | 2023-07-12 17:25:21 -0700 Remove anti-snake discrimination (acrobat) Remove the -cast penalty on anaconda, since it didn't really have a strong justification for existence. -------------------------------------------------------------------------------- d316b798dc | Nicholas Feinberg | 2023-07-12 17:08:07 -0700 Add extra accuracy for UC skill Compensate for loss of form-based secret accuracy bonus. -------------------------------------------------------------------------------- f185e81a89 | Nicholas Feinberg | 2023-07-12 15:06:28 -0700 Re-add Begin Untransform ability (Ge0ff et al) ;_; -------------------------------------------------------------------------------- 80acddb972 | Nicholas Feinberg | 2023-07-12 14:15:33 -0700 Remove undocumented UC accuracy bonus (Mike) Simplifying and slightly nerfing UC. -------------------------------------------------------------------------------- 9c3d1c461a | Nicholas Feinberg | 2023-07-12 12:25:24 -0700 Make Trog block pain brand Rather than forbidding it, make Trog disable pain brand while worshipped, as if the weapon was brandless. This should avoid some random annoyances when e.g. finding an early enchanted pain weapon. -------------------------------------------------------------------------------- 800c682d7f | Nicholas Feinberg | 2023-07-12 12:10:06 -0700 Deduplicate evil -------------------------------------------------------------------------------- 473bed0ee8 | Nicholas Feinberg | 2023-07-12 12:07:36 -0700 Make ?/L less gloomy (nicolae) Don't show removed clouds in the cloud help screen. -------------------------------------------------------------------------------- c4385922b5 | Nicholas Feinberg | 2023-07-12 11:57:54 -0700 Make MCC create an electric haze Goofy visuals for blowing someone up with maxwell's capacitative charge. -------------------------------------------------------------------------------- dc1e01ee57 | Nicholas Feinberg | 2023-07-12 10:53:29 -0700 Fix felid statue form horns (dilly) Broken by 8cd43ee5b5aa39107ad42fefe57e79ae61008c11. -------------------------------------------------------------------------------- 2fffdecd26 | Nicholas Feinberg | 2023-07-12 10:45:51 -0700 Fix dragon form max AC display (elliptic) -------------------------------------------------------------------------------- 43b936b0e3 | Nicholas Feinberg | 2023-07-12 10:44:34 -0700 Fix talismans marking evo trainable (dinky) Also, zigfigs. -------------------------------------------------------------------------------- 3dc27fa2b3 | Nicholas Feinberg | 2023-07-12 10:36:00 -0700 Nerf red draconians (Ge0ff) Forgot to set their shapeshifting to -2 when I was adjusting every other species. -------------------------------------------------------------------------------- cfcdfa2135 | Nicholas Feinberg | 2023-07-12 10:35:50 -0700 Add a comment -------------------------------------------------------------------------------- 8cbcc1cb85 | Nicholas Feinberg | 2023-07-11 20:09:14 -0700 Give monsters infinite wand ammo (gammafunk) Following on from d7dd4bcd532, make monsters not use up charges when they zap you with wands. This feels nice for the player - you aren't "wasting" charges by not killing enemies fast enough! Remove monster use of /digging to avoid new goofiness. -------------------------------------------------------------------------------- 985e0631fc | Nicholas Feinberg | 2023-07-11 19:07:09 -0700 Fix the build? -------------------------------------------------------------------------------- 295e72b191 | Nicholas Feinberg | 2023-07-11 18:01:21 -0700 Try to clarify "reflection description Don't imply that it blocks attack in some way other than via shielding. Do clarify that *all* blocked attacks will be reflected. -------------------------------------------------------------------------------- 2f84412e23 | Nicholas Feinberg | 2023-07-11 17:57:03 -0700 Add a fun phial of floods recharge message There's room for more of these from the other evokers, but no need to force it. -------------------------------------------------------------------------------- 5adf0113ea | Nicholas Feinberg | 2023-07-11 17:53:41 -0700 Refactor XP evoker recharge messages -------------------------------------------------------------------------------- 00f4a5a00c | Nicholas Feinberg | 2023-07-11 17:31:05 -0700 Blade Hands -> Rapier Hands (gammafunk) It's a bit overly fiddly now to have blade hands users swap forms to deal with hydras, so make blade hands do piercing damage (ala sbl) instead of slashing damage (ala lbl). We'll nerf it again later. -------------------------------------------------------------------------------- b923e448b6 | elliptic | 2023-07-11 15:28:43 -0400 Remove a Shields skill breakpoint. Raising Shields skill to 3 was extremely cheap anyway, so let's remove a spoilery breakpoint. This is a tiny buff to players with 0 shield skill (and a shield equipped), who now get 0.57 extra SH. Players with 3 or more Shields skill are unaffected. -------------------------------------------------------------------------------- 0a1456f148 | Nicholas Feinberg | 2023-07-11 10:25:51 -0700 Refactor gods disliking brands -------------------------------------------------------------------------------- 1880023187 | Nicholas Feinberg | 2023-07-11 08:03:40 -0700 Tweak forms This change is intended to allow more opportunities for players to shift into or out of a 'transmuter' playstyle, to improve the UI of forms, and to improve some miscellaneous issues, e.g. Lichform being useless in 3-rune games. For more context, see https://github.com/crawl/crawl/wiki/Transmutations-Reform. Throughout, balance is a very rough sketch. I expect many things will need to be buffed, others will need to be nerfed, and some will need to be replaced entirely. This is a grand experiment, not a final state. Talismans --------- The largest change is that forms are no longer entered via spells. Instead, special items called 'talismans' must be found and evoked. Once entered, these 'talisman forms' last indefinitely. Further notes on talismans: - Talismans scale only on Shapeshifting skill (more on this later). They do not care about Int, Spellcasting, other spell schools, wizardry, or encumbrance. (That is, they aren't spells.) - Talisman forms have a 'minimum skill'. Below that skill, entering the talisman form will reduce the user's maximum HP (while in the form). This is intended to roughly mimic the inability to effectively cast spells at low skills/high fail% - it provides a space in which an 'early' form can be better than a 'later' one, even if you've found both. - Talisman forms have a 'maximum skill'. Above that skill, no further scaling applies. This is intended to roughly mimic max spellpower - it makes it more obvious that later-game forms will end up outscaling earlier ones. - It takes 5 turns to enter or leave a talisman form, exactly as with armour or amulets. Use of a talisman form is intended to be a strategic decision, again like wearing armour, rather than something swapped in each fight. - Talismans don't need to be held after they're used. You can evoke them from the floor and leave them there. This avoids inventory pressure. - Talismans can be used with Sacrifice Artifice, since they don't use Evo. - Zin instantly excommunicates users of a talisman. Take that, nerds! - Trog is A-OK with talismans, just as with wands, magic swords, etc. Art for talismans is pending. Skills ------ Transmutations skill has been split in two. Talismans use a new skill, Shapeshifting, and remaining Transmutations spells (of which there are still nine, more than one other school!) continue to use Transmutations skill. There was very little synergy or overlap between forms and Tmut spells, and this makes it easier to make skilling decisions. Some argue that Transmutations should be abolished entirely and its spells punted into other schools; we'll see. Shapeshifting aptitudes look broadly like Transmutations aptitudes, with a -2 penalty applied so that forms are costly enough now that they're all "single-school" and don't require Int. (That is, Humans have a Shapeshifting apt of -2, etc.) A few species have had their apts adjusted to account for the new role of Shapeshifting, but more could be done here. Background ---------- The Transmuter background has been replaced with a Shapeshifter, who starts with a beast talisman and no spells. Their stats have been adjusted accordingly. Forms ----- The following forms exist: *Beast*: This is the starting form for the Shapeshifter background. It melds all aux armours in exchange for a Slaying bonus (ala Wereblood) - +2 at 0 skill, +8 at 13 skill (max). This is intended to provide a bonus which is compelling early game (when no or few aux armours have been found) but more tenuous later, especially for non-transmuters. It's also intended to provide a bridge between Tmut and weapon use, since a transmuter who finds a great weapon can switch from UC to that weapon without giving up their form and Tmut training. Beast form allows use of body armour so that it can present a reasonable slay-for-AC tradeoff without becoming overly strong for 'dex-based' characters, who wouldn't mind losing body armour nearly as much. *Anaconda*: This is a tier 2 form. Anaconda form turns you into a giant anaconda. All your items meld, you can constrict, you get some AC and an HP bonus... This is intended to replace Ice Form, a form to help transmuters transition into the mid-game. The rF- of Ice Form is less appropriate for early-game characters who can no longer switch between forms, and Ice Form is not evocative - no one gets Ice Beasts. On the other hand, turning into a snake... everyone gets that. That's the dream. Limbs are for dorks. Ssssss *Maw*: This is a tier 2 form. Maw form melds the body slot, transforming it into a giant mouth, ala the Brazilian Mapinguari. The maw provides an aux attack with damage that scales on Shapeshifting skill. It also has the old Hydra form devour-on-kill-for-hp gimmick, since everyone loved that. This is intended to be a way that Shapeshifters can transition into the mid-game, especially transmuters who use weapons. It's probably a bit too strong for quick blade users at present - perhaps I'll give it +str -dex, or something. (It may also just be too strong in general - numbers are WIP!) *Blade*: This is a tier 2 form. It's blade hands. To compensate for it being easier to enter, its UC damage has gone down slightly (22 -> 18). It also now gives a deformed body-like AC penalty based on base body armour AC, scaling from a 100% penalty at min Shapeshifting skill to 0% at max skill. (That is, at min skill, +2 plate armour will just give you +2 AC, plus whatever you get from Armour skill.) This is intended to model the dynamic of old Blade Hands - pure glass cannon when you can only cast it in robes, later on more usable in actual armour. Your body is deformed because there are blades inside. Aaiiii! This is intended to be another way that Shapeshifters can transition into the mid-game. *Statue*: This is a tier 3 form. It's statue form. Intended to be a way for transmuters to head into late-game while still being able to use weapons, if desired. Might need to be a bit stronger for weapon users. *Dragon*: This is a tier 3 form. It's dragon form. AC and UC damage now scale slightly with Tmut skill. Intended to be a way for transmuters to head into late-game. Possible this should be tier 4 and Storm should be tier 3 - dragons are cool! Dragons should be the best! *Storm*: This is a tier 4 form. It's storm form. Intended for players who want to dump ludicrous amount of skill XP into tmut. Top end has been adjusted somewhat downward. *Death*: This is a tier 4 form. Replacing Necromutation/Lich Form, Death Form makes you dead (no drinking potions, holy wrath/dispel undead vuln, rC, rTorm, rPois, etc) and also gives you an assortment of spicy powers. On hit (with melee/UC), victims get slowed, weakened, and heavily drained. There's also a new active, Siphon Essence, which costs 20 (!) MP, halves the HP of all enemies in radius 2, and heals you based on damage dealt and Tmut skill. (That works on all non-MH_NONLIVING enemies, as do the debuffs.) It no longer provides innate AC or Will, nor does it give a necro enhancer. Its UC damage is now significantly higher, comparable to blade hands, though still much lower than Statue, Dragon or Storm. This is intended to be a way for players who want to spend huge skill XP on tmut to do so, including those who use tmuts + weapons. It's intended to feel a bit different from other forms while still being competitive in melee. Other forms have huge base damage - Death Form has lower damage but very strong debuffs. Other forms have AC (Statue), HP (Dragon) or EV (Storm) - Death Form gives Siphon Essence as a very powerful survival tool. Other Notes ----------- Various books have been merged and consolidated to make up for the removal of eight spells. It *might* make sense to drop the book generation rate slightly, but I haven't done this yet. Some uniques now spawn with talismans. More could be done with this, e.g. placing talismans of death in Crypt. Later changes ------------- Talisman acquirement is a must. TODO. In the future, artefact talismans (i.e. randarts) could be interesting - to provide more excitement for rare finds. The randarts would have the usual panoply of properties (rF+, Dex-2, etc), which would apply while the player was in the relevant form. It'd be fun to add more form types, e.g. ones that work well for 'casters'. Might be interesting to have talismans start unidentified (like staves), for a frisson of excitement in gauntlets etc. Possibly Wanderers should get a chance to start with beast talisman? -------------------------------------------------------------------------------- 2d982f9f85 | Medrano83 | 2023-07-10 12:26:56 +0200 docs: comment the android game_scale management -------------------------------------------------------------------------------- 9a0961fb85 | Medrano83 | 2023-07-10 00:26:48 +0200 Fix lines longer than 80 characters in the options guide -------------------------------------------------------------------------------- 81891f999a | Medrano83 | 2023-07-09 23:53:55 +0200 Fix index of tiles options Some tiles options are missing in the option guide's table of contents. -------------------------------------------------------------------------------- ad7ace16ef | Medrano83 | 2023-07-09 16:51:19 +0200 Fix: If the menu is bypassed, the Android keyboard doesn't show This bug has been detected while testing qw on Android. -------------------------------------------------------------------------------- 139696dc86 | Nicholas Feinberg | 2023-07-07 10:24:14 -0700 Maybe fix a Makh targeter crash Probably caused by 1fc7ce93e22d3f740f665e9ced33f09dd8965dd7. I couldn't repro the crash locally. -------------------------------------------------------------------------------- b1c03b2570 | Nicholas Feinberg | 2023-07-06 13:12:24 -0700 Base Zot MHP penalties on base MHP Don't include things like Dragon Form when calculating MHP penalties from being zapped by the Zot clock. This should feel more fair to unfortunate Meteoran transmuters. -------------------------------------------------------------------------------- 51bb95cda3 | elliptic | 2023-07-06 13:36:18 -0400 Thundrous -> Thunderous. -------------------------------------------------------------------------------- 09eb5fc4d3 | patrick | 2023-07-06 12:34:53 -0400 Add no_dump to a subvault nicolae_letter_subblock is just a subvault that's used multiple times in the same larger vault and all of its variation is handled internally. The player gains no useful information from seeing it listed in the end-of-game dump a zillion times. -------------------------------------------------------------------------------- 1fc7ce93e2 | Nicholas Feinberg | 2023-07-05 15:15:03 -0700 Fix Makh's Major Destruction targeter (acrobat) And don't make Makh's targeters depend on DEBUGGING_RAY. -------------------------------------------------------------------------------- 0839b0fcba | Nicholas Feinberg | 2023-07-05 15:11:46 -0700 Fix flame wave + fedhas + trees (Monkooky) This probably fixes flame waves going through trees, maybe. I'm pretty leery of this code. -------------------------------------------------------------------------------- a22c3bf811 | Nicholas Feinberg | 2023-07-05 14:57:43 -0700 Feat: increase zombie tolerance If you bring a creature back from the dead as your mindless, horrifying servant, there's no way that they get mad if you ding 'em with the edge of a fireball or a Ford Pinto. They're just gonna take it. It's also bad gameplay for your undead summons to get mad when you bop em. So, make all zombies (and skeletons, and bound souls, etc) no longer become angered when you hurt them. Poor things. -------------------------------------------------------------------------------- 518fb64703 | Nicholas Feinberg | 2023-07-05 14:53:20 -0700 Show Noxious Bog damage Didn't bother setting this up for monsters. -------------------------------------------------------------------------------- f72db212d5 | Nicholas Feinberg | 2023-07-05 14:50:25 -0700 Show polar vortex damage -------------------------------------------------------------------------------- c2ff21d051 | Nicholas Feinberg | 2023-07-05 14:34:51 -0700 Add the Devil's own humor -------------------------------------------------------------------------------- b600c05fae | Nicholas Feinberg | 2023-07-05 14:34:51 -0700 Fix formless jellyfish constriction (Ge0ff) Being sz: small meant they couldn't constrict the vast majority of players, making their gimmick pointless. This partially reverts commit c79956ad2d5f7c16cb62790046a0fee3702d0713. -------------------------------------------------------------------------------- efeffbb62a | gammafunk | 2023-07-04 08:56:32 -0500 fix: Use the correct type for the minor version When reading the "chr" section, pass the read minor version as `uint32_t` and not `uint8_t`, since we converted minor version to the former in 43576957. Using the wrong type was truncating the minor version to 0, resulting in some erroneous unmarshalling that corrupted the value of `you.explore`, among possibly other things. Note: This fix was cherry-picked from ca8d4b91 in the talisman-why-not experimental branch, where the bug was noticed, but thankfully never triggered in trunk. Also remove an unused tag function and clean up a lack of whitespace. -------------------------------------------------------------------------------- bddc013574 | nicolae-carpathia | 2023-07-03 14:11:08 -0400 Add a few vaults in various places (#3087) Add a few decor vaults to mini_features.des, some simple overflow altars to overflow.des, and some monster vaults to mini_monsters.des. --- Ages ago, hellmonk said in the dcss channel: [1/1]: The tier 3 demons. They are: {sun demon}, {smoke demon}, {soul eater}, {neqoxec}, {ynoxinul}, {sixfirhy}. // EVIL HACK: — Today at 2:47 PM imo make some d vaults featuring these guys in about d:9-12 range So I did -------------------------------------------------------------------------------- c2f4f3cf83 | patrick | 2023-07-03 13:07:46 -0400 Add some new Slime Pit endings slime_pit: The main change was splitting out the various functions for making the clear walls disappear when TRJ dies. I also removed some downstairs glyphs, which were in there for some reason. I removed the "no_dump" tag, since now that there are variants, players might want to see which one they got. I also trimmed some excess walls off the edges to get the width less than 70 tiles, allowing the vault to be rotated, and accordingly removed the "no_rotate" tag. slime_pit_nicolae_amoeboid: A variation on the basic slime_pit theme -- stairs near the outer edge of slime walls, with stone, loot, and TRJ in the center. slime_pit_nicolae_inversion: Switching it around a little: stairs near an outer edge of stone walls, with loot and other decorative bits around the outer edge. The center holds slime walls and TRJ. As the comment notes, there is usually an acidless path to the center, but it's not guaranteed. slime_pit_nicolae_jellycorners: Instead of starting near the edge and working one's way inwards, you start at the center and work your way outwards. Here, TRJ is lurking in one of the square stone ruins in the corners. The decaying stone walls might end up providing a little niche to hide in, but also maybe not. slime_pit_nicolae_royal_road_to_ruin: For a bit, I considered a layout that was mostly just an A-to-B path, rather than mostly open areas the player can wander through; this concept was rejected and the map I'd made was turned into nicolae_slime_spelunking. The loot/TRJ section from that was kept and reused here. Here, the three stairs start in a mostly-open area, and then converge on the center together, turning into a short A-to-B path. Like slime_pit_nicolae_jellycorners, players will walk through decaying ruins of the pre-Slime civilization, which may or may not provide fightin' niches. slime_pit_nicolae_trefoil: A concept of 3-towards-1, in which there are three distinct paths to the center, and going from one upstair to another requires going through the TRJ zone. Here, there's quite a bit more loot, so there are more monsters to compensate. For all the new vaults, I mostly kept the same amount and ratios of monsters (types, numbers) and loot (* relative to |) as in slime_pit. That stuff is a pain to balance, and I figured it'd be easiest to go with what I know. I also didn't bother weighting any of the vaults; that can come later with feedback. -------------------------------------------------------------------------------- 8d62b2e7bb | Implojin | 2023-07-02 23:56:41 -0500 Give players the power of Friendship -------------------------------------------------------------------------------- 813d01f837 | Implojin | 2023-07-02 20:05:33 -0500 docs: update contrib docs tavern URLs -------------------------------------------------------------------------------- 58bb5d79cf | gammafunk | 2023-07-01 23:36:03 -0500 feat: Add games.d to gitignore This way you can have local configuration without it showing up in `git status`. Any changes to files in that dir actually in the repo will still be seen. -------------------------------------------------------------------------------- 22e908daa7 | Implojin | 2023-07-01 13:08:04 -0500 Add ctrl+f stash search tags for some consumables This commit adds resistance search tags to potions of resistance, lignification, enlightenment, and scrolls of revelation: e.g., searching for rF+ will now show any potions of resistance that exist. I've also updated the long descriptions of ligni and treeform here, to try to despoiler its rDrown behavior. -------------------------------------------------------------------------------- 8be760b2a8 | elliptic | 2023-07-01 09:41:34 -0400 Fix display of mud in console. Now it works like shallow water, recoloring items instead of hiding them. -------------------------------------------------------------------------------- b37851dbb3 | Nicholas Feinberg | 2023-06-30 13:10:45 -0700 If Tavern is so good, why isn't there a... Resolves #3172. -------------------------------------------------------------------------------- 2c6cdc7aa0 | Nicholas Feinberg | 2023-06-30 13:08:19 -0700 Fix: mass conf shouldn't hex charmed foes (acrobat) Specifically, this was an issue for allied monsters casting mass confusion. (i.e. the hexer Hepliaklqana ally.) -------------------------------------------------------------------------------- aee14a59e2 | Nicholas Feinberg | 2023-06-30 13:05:56 -0700 Fix felid horns Oops! Broken by adcf659a075821c4. -------------------------------------------------------------------------------- baa01a92c0 | Nicholas Feinberg | 2023-06-30 12:54:11 -0700 New Robe of Vines doll tile (Sastreii) -------------------------------------------------------------------------------- ccc998df9b | Nicholas Feinberg | 2023-06-28 07:54:40 -0700 Remove Chant Word of Entropy Gone since e0ef66670186d040d0d4af384bb9dffdff519f6f (2015). -------------------------------------------------------------------------------- 8757bd8695 | Nikolai Lavsky | 2023-06-28 16:36:04 +0300 fix: consider the ring of the Mage to be wizardly so Troglodytes don't autopickup this unrand. After 8fc9a925b, the ring of the Mage is completely useless for them. -------------------------------------------------------------------------------- db31a4691d | Nicholas Feinberg | 2023-06-27 21:52:27 -0700 Cloak your misdeeds (Sastreii) New tiles for Starlight, Dragonskin, Ratskin and the Thief. -------------------------------------------------------------------------------- 184df878d8 | Nicholas Feinberg | 2023-06-27 14:58:01 -0700 Pass an item_def& into evoke_item This is preparation for talismans. -------------------------------------------------------------------------------- b85abca632 | Nicholas Feinberg | 2023-06-27 14:50:51 -0700 Refactor evoke_check Don't pass slots into these functions. This is preparation for talismans. -------------------------------------------------------------------------------- 2cbb21b356 | Nicholas Feinberg | 2023-06-27 13:26:15 -0700 Fix Lucy wrath protection crashes (#3173) Introduced by be6b1f94854b4c053629de70abcc4c16dea3323d. Resolves #3173. -------------------------------------------------------------------------------- 7da18cac08 | gammafunk | 2023-06-26 19:22:13 -0500 fix: Remove an obsolete clua function The clua function `you.can_consume_corpses()` is no longer needed since no species can consume corpses any more. -------------------------------------------------------------------------------- 82f8529059 | gammafunk | 2023-06-26 18:59:00 -0500 feat: A wizard command to unobtain runes and Orb There's no existing convenient way to unget runes or the Orb of Zot, and for testing purposes it's nice to be able to do this. The ideal UI would present a toggle for each rune and the Orb, but that's more work to implement and it's easy enough to re-obtain runes/orb with the wizard mode item commands. -------------------------------------------------------------------------------- 547052bce9 | Nicholas Feinberg | 2023-06-25 16:12:54 -0700 Fix autoexplore on pf_just_have_faith (elliptic) Don't let greedy monsters ruin the joke. -------------------------------------------------------------------------------- ac7c113fc5 | Nicholas Feinberg | 2023-06-25 16:05:04 -0700 Fix: don't double-prompt for forbidden evokes Both use_an_item_menu() and evoke_item() called check_warning_inscription(), resulting in a double prompt when e.g. evoking /poly under Zin via V. I wouldn't be surprised if there were more bugs along these lines still lurking. -------------------------------------------------------------------------------- bc41564c69 | Kyle Rawlins | 2023-06-25 11:46:38 -0400 fix: convert a sanctuary ASSERT to a check This is somewhat theoretical, but, I think if a sanctuary ends exactly when changing level, and the coords that were the center of the sanctuary are in los on the new level, there's a sequencing issue in loading the new level where env.sanctuary_pos is reset, but the FPROPs aren't yet cleared (I'm 95% sure they do get cleared later in the level load process). This case triggered a crash on `is_sanctuary`. This commit tweaks things so that this simply isn't a crash, we don't check the FPROPs unless sanctuary_pos is set. This in principle would prevent identifying a class of bugs with the FPROPs not getting cleared, but I haven't run across such a bug in many years. Resolves #3170 -------------------------------------------------------------------------------- b898f60d1c | Kyle Rawlins | 2023-06-25 11:12:38 -0400 feat: cropped version of main logo This is not used in game, but it's very useful to have around as a branding asset. -------------------------------------------------------------------------------- 2ad674f65e | Nicholas Feinberg | 2023-06-24 13:30:58 -0700 Remove emergency_untransform Back when dropping into deep water would kill you instantly, it made some sense for players with natural swimming abilities (e.g. Mf, Op) to automatically leave non-swimming forms when they ended up over deep water without flight. (E.g., when !flight expired.) These days, there's less temporary flight around and emergency flight is available, so let's remove this complexity. -------------------------------------------------------------------------------- d3b2c1cad5 | Nicholas Feinberg | 2023-06-24 13:28:49 -0700 Increase Deal Four piety cost (Lici) Nemelex's Deal Four is cheaper than Triple Draw but generally more powerful, leaving little space for the former ability. Increase Deal Four's piety cost to be between Triple Draw's and Stack Five's. -------------------------------------------------------------------------------- 86fe4a5e66 | Nicholas Feinberg | 2023-06-23 18:14:31 -0700 Resist the urge to delete resistance (hellmonk, cool2) Oops! -------------------------------------------------------------------------------- 7586a6f1e9 | Nicholas Feinberg | 2023-06-23 17:51:26 -0700 Don't generate archmage ego robes (hellmonk) As an experiment, to encourage more use of mid-range armour and to compensate for the new enhancer staves. Randart archmagi robes can still appear. -------------------------------------------------------------------------------- 08f92feebc | Nicholas Feinberg | 2023-06-23 16:05:05 -0700 Halve generation of staff randarts (acrobat) Compensation for new multi-enhancer staff randarts in 4aa6249778bc. -------------------------------------------------------------------------------- dfe2569204 | gammafunk | 2023-06-23 17:30:45 -0500 fix: Prevent monster generation in a vault (CanOfWorms) For `dk_yredelemnul_ordeal`, don't generate monsters in this as it has both themed monsters of its own as well as a sealed area where it would be odd to generate monsters. -------------------------------------------------------------------------------- a50d7bf3bb | gammafunk | 2023-06-23 16:45:59 -0500 feat: Tweak a runed door vault (CanOfWorms) For `lemuel_bear_cage`, add `no_monster_gen no_item_gen` and put some loot items in the vault. The first tag is to prevent off-theme monsters, and the guaranteed loot is to make the vault more enticing to open. The bear/Lair themed animals are weak post-Lair, so limit its placement to Lair placement range (D:7-11 instead of D:7-). Rework the monster placement to have better separation of monster types with appropriate weights. Also add monster placement that gets harder with increasing placement depth. -------------------------------------------------------------------------------- aeb36284e3 | gammafunk | 2023-06-23 16:45:59 -0500 fix: Let the sense Abyssal rune to be seen in clua If `items.get_items_at()` sees a valid item at a location but there's no corresponding stash item, instead of returning nil, return the map cell item. This allows us to see fully defined sensed items like the Abyssal rune. It doesn't work for sensed items like those from gnoll's strong nose mutation, but such items would need more complete item details before we could return them to clua. -------------------------------------------------------------------------------- 4feb4907b2 | Nicholas Feinberg | 2023-06-23 13:40:37 -0700 Support no_exclude for misc items For wizmode purposes. -------------------------------------------------------------------------------- a26ba32dd1 | Nicholas Feinberg | 2023-06-23 12:50:38 -0700 Make ?revelation last slightly longer (Monkooky) Rather than being strictly instantaneous, allow the player to start their next turn with vision of whatever invisible things are nearby, whatever's through walls, etc. This is a UI improvement - new monsters will now be announced as 'coming into view' properly, etc. -------------------------------------------------------------------------------- 5e087ee2ca | sandertyu | 2023-06-22 11:34:27 -0700 fix tile_shield_offsets option Updates game option for tile_shield_offsets to set tile_shield_offsets_option instead of tile_weapon_offsets_option. I believe this was simply a typo. Resolves #3133 -------------------------------------------------------------------------------- ba352fbbf7 | Nicholas Feinberg | 2023-06-21 22:19:37 -0700 🐸 182 (Monkooky) -------------------------------------------------------------------------------- dd590a99dd | Nicholas Feinberg | 2023-06-21 22:09:25 -0700 Hop some new tiles in (Sastreii) Orcbow, blink frog, Dithmenos's altar, and Shrike simulacrae. -------------------------------------------------------------------------------- 9dded2c639 | Nikolai Lavsky | 2023-06-22 02:32:14 +0300 build: enable `CMD_MAP_EXCLUDE_RADIUS` in `NOWIZARD` builds Since this command has been available outside of the wiz-mode since 2009, let's enable it for `NOWIZARD` builds too. -------------------------------------------------------------------------------- dd1737301c | Nikolai Lavsky | 2023-06-22 02:30:40 +0300 docs: document a secret X-mode command Added in af5862b9e, `CMD_MAP_EXCLUDE_RADIUS` allows placing exclusions with arbitrary sizes on the map. The command was supposed to be available only in the wiz-mode, but due to a missing `you.wizard` check anyone can use it. Since the command might be useful for checking the range of monsters' spells or inner-flame explosions, let's document it in a few relevant places. -------------------------------------------------------------------------------- 4352c244c2 | Nikolai Lavsky | 2023-06-21 23:02:30 +0300 docs: further update the list of available commands This commit brings the list of available commands in line with the default keybindings from cmd-keys.h. -------------------------------------------------------------------------------- c5ef74bbde | Nicholas Feinberg | 2023-06-19 22:36:03 -0700 New Orb of Zot tiles (Sastreii) Spin! Spin! -------------------------------------------------------------------------------- c6c2007e03 | Nicholas Feinberg | 2023-06-19 22:14:48 -0700 Revert "Increase Meteoran zot clock" +25% was too much. Let's keep thinking about this and try another approach later. This reverts commit 2312942fdab03ec46e66242d9c88c51edeca864b. -------------------------------------------------------------------------------- 519b7de00c | Nicholas Feinberg | 2023-06-18 16:58:00 -0700 Fix art-data generation for new enhancers -------------------------------------------------------------------------------- 1846a1fd2d | Nicholas Feinberg | 2023-06-18 16:07:20 -0700 GET EQUIPPED WITH WEAPON TILE (SASTREII) New tiles for short sword/eveningstar randarts and orcbows. -------------------------------------------------------------------------------- 96ec847f19 | Nicholas Feinberg | 2023-06-18 15:54:37 -0700 Describe new enhancer artps Oops! -------------------------------------------------------------------------------- 4aa6249778 | Nicholas Feinberg | 2023-06-17 15:26:20 -0700 Let randart staves enhance other schools Add an enhancer artp for each spell school and let randart staves get artps for other schools. So you can have the staff of the Slime Pits {rF, Fire, Air} and have a staff that enhances both fire and air spells. This doesn't provide innate resists like the base staff type does. Reasoning: seems fun; might encourage switching up spell use based on staves found. Also changes the naming of randart staves - rather than the staff of fire "Fhwghdhs" {rF, Int-3}, we now have the staff "Fhwhgdhds" {rF, Fire, Int-3}. This allows for staff names like "the staff of Bad Decisions" - before, those would be the staff of fire of Bad Decisions, which was too many 'ofs'. It'd be fun to add these props to other randarts. Robes? Orbs? Hats? Gloves? Cloaks and scarves? Staves and lajatangs..? -------------------------------------------------------------------------------- 91f28db67f | gammafunk | 2023-06-17 10:53:23 -0500 feat: Don't let the Damnation unrand harm the shooter As of a99462a43, Damnation requires hitting an actual monster in order to explode. Hence the player has no way to safely use the weapon on an adjacent monster without harming themself. This creates an annoying need to swap to a backup launcher frequently, since even when you have exploding damnation bolts, monsters get adjacent quite often. Hence this commit makes Damnation simply not affect the shooter. It's a buff to Damnation, but the nerf in 404d6944 was strong, and the weapon isn't overpowered these days. I also removed some ammo mulching code that was specific to Damnation but is no longer necessary when launcher ammo always mulches. -------------------------------------------------------------------------------- 9f7f995f2b | Nicholas Feinberg | 2023-06-15 17:24:40 -0700 Fix: don't summon obsidian axe crashes when chopping players C.f. 3f4f80340b6620, true believers! -------------------------------------------------------------------------------- 85c54bcb58 | Neil Moore | 2023-06-14 15:13:40 -0400 Please speak only to my lawyer. Several artefact weapon names. [skip ci] -------------------------------------------------------------------------------- e4b35d15fd | Nicholas Feinberg | 2023-06-14 11:40:07 -0700 Fix: don't turn dust into smoke Since scrolls of fog were first added in 7ef7c926766, they've printed something like this: As you read the scroll SDFKLVHYVN, it crumbles to dust. The scroll dissolves into smoke. It was a scroll of fog. This is quite redudant. We don't need our scrolls to crumble into dust and then into fog! Let's merge the first two. -------------------------------------------------------------------------------- 92a001385b | Nicholas Feinberg | 2023-06-14 10:29:12 -0700 Fix: show current delay for mid-skill heavy weapons (chimerix) Heh heh heh. Pretty good bug. -------------------------------------------------------------------------------- 322a60d74e | Nicholas Feinberg | 2023-06-14 10:20:54 -0700 Simplify: don't mark ?revelation as cancellable This is a minor oversight in 77163bc4736 (late 2022). It has no effect on gameplay. -------------------------------------------------------------------------------- 5282407e52 | Nicholas Feinberg | 2023-06-14 10:04:46 -0700 Fix ego/normal barding tiles (Sastreii) Accidentally swapped these. Whoops! -------------------------------------------------------------------------------- 82b7359922 | Nikolai Lavsky | 2023-06-14 17:18:20 +0300 fix: update default settings for `action_panel_filter` Since the new versions of the potion of flight and scroll of magic mapping have tactical uses, they should be displayed on the action panel. -------------------------------------------------------------------------------- 7cdbcddada | Nikolai Lavsky | 2023-06-14 16:04:27 +0300 refactor: remove old monster glyph and keybind files Added after a significant overhaul of monster glyphs and colours in 0.4 (f2f6755ac), monster_glyphs files allowed to make the glyphs of all affected monsters show up as they did in previous versions. There doesn't seem to be much demand for such files now, so it's time to remove them. Also, this commit removes the file with 0.3.4's key bindings that somehow survived in the codebase for 15 years. -------------------------------------------------------------------------------- 1c394c0614 | Nikolai Lavsky | 2023-06-14 01:28:59 +0300 docs: remove eating and butchering and add equip/unequip commands. -------------------------------------------------------------------------------- 46f44d267d | Nikolai Lavsky | 2023-06-14 00:15:08 +0300 fix: remove obsolete inventory colours These were leftovers from preferred food and mutagenic corpses/chunks. -------------------------------------------------------------------------------- 3f4f80340b | Nikolai Lavsky | 2023-06-13 17:49:26 +0300 fix: don't summon obsidian axe demons when chopping firewood Also, don't create summons when attacking conjured monsters. -------------------------------------------------------------------------------- 2312942fda | Nicholas Feinberg | 2023-06-12 17:53:10 -0700 Increase Meteoran zot clock +25%, from 600 per floor to 750. This should give a bit more flexibility, especially for especially time-tight areas like Lair or Vaults, while still maintaining time pressure overall. -------------------------------------------------------------------------------- b40cd77e26 | Nicholas Feinberg | 2023-06-12 16:41:22 -0700 Revert debug code change Oops! -------------------------------------------------------------------------------- c4c5a43528 | Nicholas Feinberg | 2023-06-12 11:01:39 -0700 Fix: don't start Wn with Slow+Slow (acrobat) -------------------------------------------------------------------------------- b58dd9be76 | Nicholas Feinberg | 2023-06-11 22:37:53 -0700 Feat: magic mapping -> revelation Magic mapping is a cool item, but I often find it sitting in my inventory unused for the great majority of a game. I might use it early on to find a timed portal if I'm having trouble, but after that, it sits around until Zot. That's not exciting! Meanwhile, the removal of Ashenzari's Astral Vision in 1891117ce2a (Sept 2022) left a mechanical gap. We removed the "see through walls" effect for a variety of UI and bug reasons, but it's still neat. If the player only saw through walls for a moment, until the end of their turn, there'd be no problem. So... let's kill two birds with one scroll! Scrolls of revelation still map the level, like magic mapping, but they also reveal everything in LOS radius - monsters, items, unseen horrors, you name it. This should hopefully create more incentive to use magic mapping throughout the game - you might want to see what's inside a scary looking vault or behind a door, for example. It does break the legendary door vault a bit, but truthfully, that thing was meant to be broken. If players want to spend a scarce resource to peek inside, they can do that. :) UI issue - invisible monsters vanish completely once your turn ends, so you might want to note them down. Might poke at this at some point. -------------------------------------------------------------------------------- b69b018a6c | Nicholas Feinberg | 2023-06-11 22:27:12 -0700 WIP -------------------------------------------------------------------------------- adcf659a07 | Nicholas Feinberg | 2023-06-11 22:13:24 -0700 Move some silly tiles out of fe/op enums So that randomly picking player bases won't result in a tile that feels out-of-style, hopefully. -------------------------------------------------------------------------------- bf13549d7c | Nicholas Feinberg | 2023-06-11 22:05:02 -0700 Fix monster specs for simulacrums/spectres Broken by 0e04eb73d5a (2021), when we allowed demonic and holy ghosts. This also fixes the 'monster' bot's output. -------------------------------------------------------------------------------- 0643eb4156 | Nicholas Feinberg | 2023-06-11 15:58:49 -0700 Experimental: randomize player tile on start We have so many player tile variants. Shouldn't players get to see them without having to mess around with the offline doll editor? Some of the older tiles are sort of dubious, so let's call this a test and revert it if there are complaints. -------------------------------------------------------------------------------- 05d2ad474e | Nicholas Feinberg | 2023-06-11 15:03:30 -0700 New barding tiles (Sastreii) Lord, what a mess this code was... still is, really. -------------------------------------------------------------------------------- b63f529262 | Nicholas Feinberg | 2023-06-11 14:18:46 -0700 New spell tile (Sastreii) Blastmotes (icon and clouds), leda's unmaking (icon and shot). -------------------------------------------------------------------------------- 56bf346678 | Nicholas Feinberg | 2023-06-10 22:03:13 -0700 Add some tiles that just don't miss (Sastreii) New Eos and Sniper tiles. -------------------------------------------------------------------------------- e6debcdd2c | Nicholas Feinberg | 2023-06-10 22:00:04 -0700 Update hunter description (CarefulOdds) Per 1e386dd289. -------------------------------------------------------------------------------- 6aa68a64a1 | Nicholas Feinberg | 2023-06-08 10:20:21 -0700 Randomize cloud type per condenser vane cloud Reduce the odds of a complete whiff. -------------------------------------------------------------------------------- e443d1f16c | Nicholas Feinberg | 2023-06-08 07:26:43 -0700 Add missing Reap description (Colgate) -------------------------------------------------------------------------------- 89dc3ad700 | Nicholas Feinberg | 2023-06-07 11:44:34 -0700 Let unrelated mons swap past lower-HD allies (elliptic) To make ratscumming (new term) slightly weaker, allow higher-HD monsters to *occasionally* swap past lower-HD allies. This allows e.g. an orc warrior to eventually swap with a worm while you're busily spearing or Momentum Striking the former. -------------------------------------------------------------------------------- 3fdcc5976a | Nicholas Feinberg | 2023-06-06 22:39:19 -0700 Always allow reaching over spectral weapons (elliptic) Make spectral polearms less fiddly to use. -------------------------------------------------------------------------------- b92c8fe61f | Nicholas Feinberg | 2023-06-06 22:34:30 -0700 Turn off quiver autoswitching (CarefulOdds, advil) Switching to a new quivered item when you ran out of the thing you were shooting made sense back when folks were juggling +2 elvish arrows and +1 arrows of flame. These days, though, it's pretty uncommon that the player wants to keep chucking stuff when their quiver runs empty, and much more likely to be disastrous if e.g. the quiver switches from boomerangs to scrolls of fear. Let's disable this and see if anyone complains. -------------------------------------------------------------------------------- 5898b58c05 | Nicholas Feinberg | 2023-06-06 22:17:53 -0700 Don't assume that runes use SHOW_ITEM_MISCELLANY They haven't for years. Instead, use CMD_DISPLAY_RUNES in the % screen, matching the preceding lines for A and @. This has no effect for anyone except players who've rebound }. -------------------------------------------------------------------------------- f34b8b8c02 | Nicholas Feinberg | 2023-06-06 22:12:20 -0700 Make fear optional (Grit, Tollund) By popular demand, make the new prompt for resting/autoexploring as a Meteoran opt-in. Dial 1-800-FEAR-ZOT now for your free UI. -------------------------------------------------------------------------------- 046c7d2549 | Nicholas Feinberg | 2023-06-03 14:55:37 -0700 Mark distortion as chaotic and evil (kate, gammafunk) Matching the Banishment spell, Lugonu, etc. This was originally the case, but distortion was marked un-evil in 0.6 to make good god followers have a better time wield-IDing things. Wield-ID is gone, so let's normalize things again. Reverts a8723822. -------------------------------------------------------------------------------- 68197d5272 | Nicholas Feinberg | 2023-06-03 14:55:37 -0700 Mark new wands as high-tier (Ge0ff) Discourage low HD monsters from picking em up. -------------------------------------------------------------------------------- 3820da0fcd | CanOfWorms | 2023-06-03 17:30:40 -0400 Update cards.txt Remove the description for Famine and note that one of the demons summoned by the Pentagram can be hostile. -------------------------------------------------------------------------------- 31f6795574 | gammafunk | 2023-06-02 14:04:21 -0500 fix: Correct monster placement in a vault (CanOfWorms) The vault grunt_forest_large_clearings had its monster placement messed up over the years with a combination of fixes for traps and food removal. This could lead it to place quite large numbers of wolves in one of its possible states. Looking back at the design intended for the vault in c5d36bef, I've fixed and simplified the DES. Now its four possible states all place appropriate types and numbers of monsters. -------------------------------------------------------------------------------- d189c61b28 | Nicholas Feinberg | 2023-06-02 11:04:41 -0700 Return Cerebov's Iron Shot (Ge0ff) The Demon Lord of Fire and Steel, master of the Iron Castle, can have a little iron shot as a treat. -------------------------------------------------------------------------------- 021bf36b8e | gammafunk | 2023-06-02 10:34:18 -0500 feat: A CLO for setting the max memory for clua Previously this limit was always 16 megabytes, but there are use cases (e.g. qw) where a local user or server admin wants to allow scripts to go above this. Add `-lua-max-memory` to set the limit in megabytes, with a default of 16MB. -------------------------------------------------------------------------------- a8e5da340c | Nicholas Feinberg | 2023-06-02 07:40:28 -0700 Cleanup some misc item code Don't claim that runes are misc items (rip), try to avoid cleaning any misc items in the unlikely chance that a floor is completely full (matching runes, etc), and don't claim that misc items can be unided (RIP decks). -------------------------------------------------------------------------------- a6d7543ad0 | Nicholas Feinberg | 2023-06-02 07:40:28 -0700 Show sacks of spiders in the \ menu again -------------------------------------------------------------------------------- 6ccac15303 | Nicholas Feinberg | 2023-06-02 07:40:28 -0700 Fix: give spider sacks a colour in TAG_MAJOR_VERSION > 34 -------------------------------------------------------------------------------- f52811907a | Medrano83 | 2023-06-02 16:08:08 +0200 Android: Keep the screen on The screen is off again. I hate that. -------------------------------------------------------------------------------- ffbd37ae57 | Medrano83 | 2023-06-02 16:08:08 +0200 Fix a few typos in java code comments -------------------------------------------------------------------------------- 8713efdfa9 | Kyle Rawlins | 2023-06-02 09:29:27 -0400 build: workaround for an actions/checkout bug a9a6e9e7af1 and ea43df2a32 removed a step that was probably intended to work around https://github.com/actions/checkout/issues/290 and https://github.com/actions/checkout/issues/882, but broke the CI build if anyone used a lightweight tag (because these fetch lines actually shallow the tag depth to 1). This commit attempts to thread the needle by making this workaround conditional only to releases, where (if the person doing the release has followed the steps correctly), there is guaranteed to be an annotated tag at depth 1 in the tag history. (If I'm parsing the checkout bugs correctly, they only trigger on a tag action anyways.) -------------------------------------------------------------------------------- aae73658be | Nicholas Feinberg | 2023-06-01 07:16:21 -0700 Fix: spectral multiplication (acrobat) Make spectral quickblades hit twice, not four times. -------------------------------------------------------------------------------- e789d4113a | Nikolai Lavsky | 2023-06-01 16:35:17 +0300 text: add a description for the Will+ status -------------------------------------------------------------------------------- 2ddbf375f0 | Kyle Rawlins | 2023-06-01 08:44:40 -0400 feat: show scale when zooming in local tiles It's good to show explicit feedback to the user for this (previously only debug builds got this). This might be better to show somewhere else in the UI, but for now it's easiest to just do in MSGCH_PROMPT, and seems harmless. -------------------------------------------------------------------------------- 60543735b6 | Medrano83 | 2023-06-01 08:33:52 -0400 Fix zoom out Prevents the current scale to be much higher than the maximum zoom. Otherwise zoom out stops working until a lower value is reached again. -------------------------------------------------------------------------------- 875ba10a1c | Nikolai Lavsky | 2023-06-01 15:22:08 +0300 fix: mark }sack as useless under no-allies conducts -------------------------------------------------------------------------------- 25add195a6 | Nicholas Feinberg | 2023-05-31 22:23:12 -0700 Simplify Plasma Beam (elliptic, acrobat) To make it easier to use the spell's unique targeting and to avoid power breakpoints, make Plasma Beam always have LOS_RADIUS range, rather than having range which increases with power. As a small compensation, reduce damage by 10%. Max power is now 2x1d120 (was 2d1d31). -------------------------------------------------------------------------------- 9a23063699 | Nicholas Feinberg | 2023-05-31 22:16:35 -0700 Give hand crossbows more brands/plusses (elliptic, acrobat) Since they tend to appear quite late (in Vaults, mostly), after the player is likely to have already found an 'endgame weapon' of some other type, give hand crossbows a few extra plusses and/or a brand to encourage using em. This logic matches demon weapons'. -------------------------------------------------------------------------------- 62937cac54 | Nicholas Feinberg | 2023-05-31 22:05:37 -0700 Increase condenser vane cloud gen at low power Continuing on from ec820db30826e, place clouds in about 40% of cells adjacent to monsters at zero evo skill, up from 20%. -------------------------------------------------------------------------------- 5314a8f5be | Nicholas Feinberg | 2023-05-31 22:05:11 -0700 Refactor condenser vane logic Use a set instead of repeatedly scanning a vector. -------------------------------------------------------------------------------- c79956ad2d | Nicholas Feinberg | 2023-05-31 21:55:43 -0700 Increase formless jellyfish damage It is still my dear hope that there is something fun to be found in the concept of the one-turn paralysis constrict monster. Let's give it one more shot. -------------------------------------------------------------------------------- ca434935e8 | Nicholas Feinberg | 2023-05-31 21:54:55 -0700 Reset demonic crawlers' XP multiplier It was bafflingly low. They gave less XP than steelbarb worms, despite being likely more threatening. -------------------------------------------------------------------------------- 720ed57a1c | Nicholas Feinberg | 2023-05-31 21:48:55 -0700 Bring back Sacks of Spiders As an alternate to boxes of beasts. When these were removed, it was correctly noted that they were a bit too similar to beast boxes and phantom mirrors, and the latter were more interesting due to a lack of spiderous variety. Well, spider reform has addressed the latter, and item sets address the former. So let's do it again! Reverts a6edddd4f1eafeb1ccc421d0d29b50fba57057a8. -------------------------------------------------------------------------------- 1e386dd289 | Nicholas Feinberg | 2023-05-30 21:46:49 -0700 Give hunters ?butts instead of ?immo ?immo is grand, but hard to use in dangerous situations, especially early on. Give hunters a scroll of butterflies so that they can make some space early on, in a way that feels a little different from Hexslingers' Cause Fear. -------------------------------------------------------------------------------- f10b62a2d6 | Nicholas Feinberg | 2023-05-30 17:25:47 -0700 Reduce summon cap on living spells (Ge0ff) Six felt a bit silly. Four should be plenty to cause players trouble. -------------------------------------------------------------------------------- c3bc235b0d | Nicholas Feinberg | 2023-05-30 17:25:47 -0700 Note quick blade multipliers in weapon descs (Ge0ff) -------------------------------------------------------------------------------- 0a804a9fd0 | Nicholas Feinberg | 2023-05-30 17:25:47 -0700 Codify shield penalty descriptions (Lici) -------------------------------------------------------------------------------- 42d8f58691 | Kyle Rawlins | 2023-05-29 11:31:26 -0400 fix: CI header build -------------------------------------------------------------------------------- 48faf8a104 | Kyle Rawlins | 2023-05-29 11:05:38 -0400 feat: separator escaping for certain rc options This implements escaping separators for certain rc options, most importantly force_more_message and message_colour. There is so much demand for this that many standard rc files (including crawl itself, see e.g. 7dd7712201) have assumed this is already implemented, but until 0.30, there were no error messages to indicate when this was going wrong. For many (but not all) list options, this commit will let `,` be escaped via `\,`. This really only matters for options where arbitrary regexes are used. For the two options mentioned above, this commit also implements escaping `:` via `\:`. The behavior for force_more_message where an invalid channel prefix causes a `:` split to be ignored is retained. (These are implemented slightly more generally, via the message_filter and colour_mapping objects, but I don't think the escaping matters for any other cases.) This is a bit of a hodgepodge because of various different implementations of separators, so I have not tried to make the change very general. Because the `runrest...` options are implemented in lua, it is unfortunately not practical to implement escaping even `,` without a major rework. Also, it would be easy to add this for options that use split_parse, but as far as I can tell none really need it. -------------------------------------------------------------------------------- 4708a659fe | Nicholas Feinberg | 2023-05-28 07:32:47 -0700 Fix: don't let dj disable all skills (try 3) (elliptic) This seems much more right. Reverts d968683117aad80e602f599cbc24466dbbb81caf. -------------------------------------------------------------------------------- 2adbd49c56 | Nicholas Feinberg | 2023-05-28 07:17:04 -0700 Fix an ignis wrath / formicid crash (elliptic) Follow the logic of e.g. Dith putting players to sleep, Jiyva trying to transform the player, etc, by letting Ignis trying to shaft even un-shaftable formicids. It's OK for players to feel cool and smug. -------------------------------------------------------------------------------- 7a2ff0754d | Nicholas Feinberg | 2023-05-28 07:12:41 -0700 Revert "Unify wereblood limits with subblood (12642, Yermak)" This breaks too many forms for now. We'll revisit this after oncoming tmut changes, hopefully. This reverts commit f37ddd98f5ceeb110e8458d3e2aabab7e3ef3a31. -------------------------------------------------------------------------------- df0485fa37 | Nicholas Feinberg | 2023-05-27 08:40:07 -0700 Fix: turn mud into gold (acrobat) Un-unmake gozag's gold. -------------------------------------------------------------------------------- 0008aa4bac | Nicholas Feinberg | 2023-05-27 08:17:28 -0700 ayy eyy ohh -------------------------------------------------------------------------------- d968683117 | Nicholas Feinberg | 2023-05-27 08:07:47 -0700 Fix: don't let dj disable all skills (again) (elliptic) I think there's something broken here that I'm overlooking. This fix seems wrong. -------------------------------------------------------------------------------- cf6b8b5405 | Nicholas Feinberg | 2023-05-27 07:48:27 -0700 Fix: give dj a less great experience (elliptic) We could be a little more fine-grained here, but it's not worth it. -------------------------------------------------------------------------------- df935468f2 | Nicholas Feinberg | 2023-05-26 15:54:31 -0700 Remove no monsters from Lair It's a take-a-hack give-a-hack kind of day. (Remove historical compensation for chaff removal from Lair.) -------------------------------------------------------------------------------- ae3621a16d | Nicholas Feinberg | 2023-05-26 15:32:32 -0700 Remove a 'not enough monsters' veto 03497ec52293cca692bb6c116ea5ce6c5bd8c4ef fixed the original inspiration for this. It's still in principle possible to have a lair floor with no monsters, but very unlikely. We'll fix that later. -------------------------------------------------------------------------------- a1596ed5d5 | Nicholas Feinberg | 2023-05-26 15:18:53 -0700 Fix multischool spell success/power (purplemustard) Broken by 39cede6f937497c. -------------------------------------------------------------------------------- c0b45f0da6 | Nicholas Feinberg | 2023-05-26 14:23:30 -0700 Give fo innate shaft resistance (nicolae) Feels thematic and not unfair - fo have fewer ways to deal with a shaft. This should probably be documented somewhere, maybe. -------------------------------------------------------------------------------- 2c42856c84 | Nicholas Feinberg | 2023-05-26 14:23:30 -0700 Make jellyfish less squishy They lust for kills! -------------------------------------------------------------------------------- 918e1df75e | Kyle Rawlins | 2023-05-26 13:53:07 -0400 fix: s/rest/explore in a zot clock message -------------------------------------------------------------------------------- 33a4ccc0cb | Nicholas Feinberg | 2023-05-25 22:37:11 -0700 Tweak pf_eden (elliptic) A dancing greatsword and a cherub is probably too mean for late D. Move the vault to Elf, where dancing weapons fit right in. Replace the potions with a randbook of summon mana viper + Discord, matching the original apple theme. -------------------------------------------------------------------------------- f37ddd98f5 | Nicholas Feinberg | 2023-05-25 21:44:30 -0700 Unify wereblood limits with subblood (12642, Yermak) Blocks gargoyle from casting wereblood, since they have no blood. Matches Sublimation of Blood. Looks like an oversight in 4d17e5cfac9. -------------------------------------------------------------------------------- 5d822261ab | patrick | 2023-05-25 22:39:26 -0400 Add a shop to shops.des No shop with custom inventory this time, just a shop with a unique method of theft deterrence. Downweighted for being somewhat gimmicky. -------------------------------------------------------------------------------- b2cf6a9952 | patrick | 2023-05-25 22:33:55 -0400 Add a small vault to shoals.des for the King fans out there the man in black fled across the desert and the vaultslinger followed In other news, did you know you can just stick doors anywhere? -------------------------------------------------------------------------------- c45a9370a1 | patrick | 2023-05-25 22:26:04 -0400 Add two flavor vaults to mini_features.des. Well, three, if you count the subvault. -------------------------------------------------------------------------------- 28b06b89b3 | patrick | 2023-05-25 22:18:36 -0400 Ensmallen the inventory at the Tiny Tomes shop It was pointed out on Discord that with 20 books, it can take an annoyingly long time to look through all of them to examine their contents. Accordingly, dial it down a bit by making it symmetric with Tremendous Tomes, with each shop having 8 books. (I have other ideas for shops with the maximum number of items, anyway. (watch this space))) -------------------------------------------------------------------------------- 196d5507e3 | Nicholas Feinberg | 2023-05-25 09:50:44 -0700 Fix weapon ego info leak (eb) Oops! -------------------------------------------------------------------------------- 6fa058ef04 | Nicholas Feinberg | 2023-05-24 22:26:24 -0700 Tweak onia_arrival_mini_maze[_b] Don't intentionally hide 'treasure' (stones) behind plants. Not riveting gameplay. -------------------------------------------------------------------------------- 2e3c275290 | sandertyu | 2023-05-24 22:12:24 -0700 add strange machine to default auto exclusions -------------------------------------------------------------------------------- bfe2539a1d | Nicholas Feinberg | 2023-05-24 22:11:20 -0700 Fix meteoran rest/explore warnings (FizzleBang) Don't warn when the zot clock is inactive. -------------------------------------------------------------------------------- 154427ae6a | elliptic | 2023-05-24 22:12:54 -0400 Don't kill players from 300+ health for the crime of opening a door in Geh. Removes nicolae_geh_backdraft - the vault existed only to kill players who didn't realize how much damage they would take in one turn if they opened a door. I think putting the only downstairs on a level inside a runed door vault is probably questionable in general as well, but mainly this just isn't a good way to try to kill players. -------------------------------------------------------------------------------- 164a46f36d | Nicholas Feinberg | 2023-05-24 18:29:02 -0700 Give toadstools a new lease on life Remove some code from back when toadstools automatically sprouted up from corpses over time. The good old days... -------------------------------------------------------------------------------- 0e100b6ebc | Nicholas Feinberg | 2023-05-24 18:16:02 -0700 Re-require LOS for indirect constriction (gammafunk) BVCing or roots-ing a monster and walking out of LOS isn't very engaging. -------------------------------------------------------------------------------- 637a80eef8 | Nicholas Feinberg | 2023-05-24 15:33:17 -0700 Fix: reverse the anti-life equation (steves) Oops! -------------------------------------------------------------------------------- 38777b0aa0 | Nicholas Feinberg | 2023-05-24 14:54:53 -0700 Maybe fix a phial crash -------------------------------------------------------------------------------- ada98394da | Nicholas Feinberg | 2023-05-24 13:52:05 -0700 Reduce BVC base damage Borgnjor's Vile Clutch was recently buffed by 57a6a0d306af, which let it work on unseen and out-of-LOS enemies. It was already considered a strong spell before that change, so focus it more on the distinctive part of the spell (immobilizing enemies and reducing their EV) by reducing the damage component. At 50 power (25% of max), the spell goes from 2d6 damage to 2d4.5; at 150 power, it goes from 2d11 to 2d9.5. -------------------------------------------------------------------------------- 26888eae30 | Nicholas Feinberg | 2023-05-24 13:52:00 -0700 New spell: Leda's Unmaking Earth has three spells that are very similar: Stone Arrow, Iron Shot, and Lehudib's Crystal Spear. They're single-target damage projectiles, with power, range, and accuracy differences making up the only distinctions. (There's Sandblast, too.) This feels a bit repetitive, and Iron Shot + LCS especially have a hard time feeling distinct. As a small differentiator, replace Iron Shot with Leda's Unmaking. The latter is does a little less damage than Iron Shot, but causes slain victims to turn to mud, slowing creatures' movements and impairing their attacks ala Leda's Liquefication. This should hopefully make Unmaking feel a little different from the other two in some situations. Iron Shot remains as a monster spell for a few iron-themed monsters, plus Boris, because he's old-fashioned that way. This also incidentally increases the chance of Glaciate creating a block of ice from 60% to 100%, to reduce complexity. -------------------------------------------------------------------------------- ef9dfdaa1c | Nicholas Feinberg | 2023-05-24 10:08:58 -0700 Revert "Show a marker for departing monsters" Re-using the invisible monster indicator was indeed too confusing. Will take another shot at this later. This reverts commit b28f3135ce239f4b5c1029938f69f1bf63154b65. -------------------------------------------------------------------------------- b28f3135ce | Nicholas Feinberg | 2023-05-23 23:25:01 -0700 Show a marker for departing monsters When a monster bails, show where it used to be so that the player can figure out what's going on. Currently re-using the invisible monster indicator - hopefully this isn't too confusing. -------------------------------------------------------------------------------- bff143cfd1 | Nicholas Feinberg | 2023-05-23 22:39:56 -0700 Fix two more comment typos -------------------------------------------------------------------------------- 6aae568935 | Nicholas Feinberg | 2023-05-23 22:25:05 -0700 Turn lies into allies -------------------------------------------------------------------------------- 39008fba12 | Nicholas Feinberg | 2023-05-23 22:02:00 -0700 Warn before exploring or resting as Meteoran Too easy to accidentally waste a hundred precious turns resting elsewise. (I have done this many times.) We can add some option for this if people really want. -------------------------------------------------------------------------------- 966c9bc6f3 | Nicholas Feinberg | 2023-05-23 17:07:15 -0700 Shift orcbows around To reduce the threat of basic orcs and make getting an orcbow feel a little more 'earned', remove the 1/18 chance of basic orcs getting an orcbow and add a 50/50 chance of centaurs & centaur warriors getting orcbows instead of shortbows. Overall rate of pre-lair orcbow drops is unchanged. -------------------------------------------------------------------------------- 9ec6622867 | Nicholas Feinberg | 2023-05-23 08:05:56 -0700 Keep adjusting ranged weapon frequency Give some arbalests back to orcs (to make arbalests reasonably common in Orc), and trade out tengu warriors' longbows for arbalests. -------------------------------------------------------------------------------- a5ff34e5da | Kate | 2023-05-23 16:02:24 +0100 Fix some missing variables in monster speech Replace various possessive pronouns with the @possessive@ variable. -------------------------------------------------------------------------------- 9569ec16df | Nicholas Feinberg | 2023-05-23 07:51:08 -0700 Downgrade centaur warrior weapons Make longbows a little rarer in D, to make it more likely that players find the lower-tier arbalest first. I've got my eye on you, Nessos. -------------------------------------------------------------------------------- 90744edd48 | Nicholas Feinberg | 2023-05-23 07:26:52 -0700 Fix (maybe): dj with maxed skills (reasonance) Djinn with a maxed spellcasting skill shouldn't keep training it, and they shouldn't be able to leave the skill training screen without selecting a skill if any skill is maxed. -------------------------------------------------------------------------------- 6fe912e8c5 | Nicholas Feinberg | 2023-05-22 22:47:17 -0700 Fix a djinn !xp crash (reasonance) If we didn't have anything set to train, the !xp preview would get trapped in an infinite loop. -------------------------------------------------------------------------------- 1914d2863d | Quinten Konyn | 2023-05-22 17:47:15 -0700 Don't gender satyr spell messages Continuing the work of this commit: https://github.com/crawl/crawl/commit/cbcab8c68d17d1623b564816eca41d8d4ce8847d -------------------------------------------------------------------------------- 838c19eb66 | Nicholas Feinberg | 2023-05-22 13:44:25 -0700 Fix missing newline (Ge0ff) -------------------------------------------------------------------------------- aba2717c7e | Nicholas Feinberg | 2023-05-22 12:38:57 -0700 Add placeholder orcbow tiles ? -------------------------------------------------------------------------------- be637cbdd6 | Nicholas Feinberg | 2023-05-22 11:38:11 -0700 Fix broken artefact book names (#3144) Broken in 5f0c07693536 (#3138). -------------------------------------------------------------------------------- 19ca8be239 | Nicholas Feinberg | 2023-05-22 11:32:55 -0700 Fix alphashops for enlightenment (Goratrix) -------------------------------------------------------------------------------- 44bd3a6a1f | Nicholas Feinberg | 2023-05-22 11:16:14 -0700 Add a potion of enlightenment quote (DracheReborn) -------------------------------------------------------------------------------- 818c9244c5 | Kyle Rawlins | 2023-05-22 12:38:22 -0400 fix: quiet some gcc warnings -------------------------------------------------------------------------------- 6fc9643786 | Kyle Rawlins | 2023-05-22 12:35:42 -0400 fix: `uint` => `unsigned int` -------------------------------------------------------------------------------- e618eeaa78 | Nicholas Feinberg | 2023-05-21 22:44:13 -0700 Add new Dj titles Now that they can train individual magic skills. The Spellcasting one is a little iffy, but I wanted to put wishes somewhere. Credit ragingrage for Marid. That one's a D&Dism, not a 'real myth' one, but it's fine. -------------------------------------------------------------------------------- e8a828585e | Nicholas Feinberg | 2023-05-21 22:44:13 -0700 Fix quick blade time taken (Lightli) Oops! -------------------------------------------------------------------------------- c3f979dc1f | gammafunk | 2023-05-21 20:41:37 -0500 task: Remove the 0.30 trunk tournament reminder This reverts commit d14b0f4ee22f9d1b00a3534f8e9ca280991fdedc. -------------------------------------------------------------------------------- 523567ee2f | Nicholas Feinberg | 2023-05-21 15:33:43 -0700 Increase orcbow base damage (elliptic) Try to further distinguish it from shortbows. We'll see if this feels too similar to arbalests, or whether the armour-piercing quality of the latter's higher base damage has a large impact in practice. -------------------------------------------------------------------------------- 0ea7606829 | Nicholas Feinberg | 2023-05-21 15:02:58 -0700 New weapon: orcbow (elliptic) The gap between starting weapons (slings/shortbows) and the next level up (arbalests) was rather large. Since arbalests were fairly uncommon in the Dungeon, the experience of ranged characters could feel quite 'swingy' - an early arbalest find made you very strong, a late one left you very weak. Some swinginess is fine, but this felt excessive. To address this, add a new 'orcbow' weapon, a bit stronger than a shortbow. (If less accurate). Orcs now carry this weapon instead of arbalests, including basic orcs (which now have a 1/18 chance of spawning with one). On average, there's about three orcbows appearing in D:1-11 (vs about one arbalest before this commit). Arbalests are now less common until later, since orcs lost theirs. (They might be a little *too* uncommon now - I may take a second pass at shifting arbalest and longbow distribution further.) To further differentiate weapons, shortbows drop in damage and delay, longbows increase in damage and delay, and hand crossbows once again go back up one base damage to compete. -------------------------------------------------------------------------------- 4f7fe9c19c | Nicholas Feinberg | 2023-05-21 15:01:12 -0700 Move hexslinger str into dex Make em more clearly focused on slinging (and hexing), rather than hedging with a little str. (This has almost no mechanical impact.) -------------------------------------------------------------------------------- 62046a28e0 | Nicholas Feinberg | 2023-05-21 14:49:05 -0700 Make dreamshard cure poison on shatter (elliptic) Probably feels pretty bad otherwise. This is by far the most common 'ongoing damage' effect - sticky flame, clouds, etc are rarer, and also feel more 'external'. -------------------------------------------------------------------------------- 39cede6f93 | Nicholas Feinberg | 2023-05-21 14:48:56 -0700 Make Djinn use all skills (elliptic) Because Djinn don't choose what spells they get, they need to have unified spell school training. That ensures that, if they choose to train magic, they can use whichever spells they get. I initially implemented this by making Djinn *only* use Spellcasting for magic. This was simple, which is good! But it had several issues: - It prevented use of pain weapons & elemental staff melee, which was a recurring source of confusion for players. - The low apt for Spellcasting felt bad, even though Djinn were still very strong. - It meant that many types of items, like manuals of Fire Magic, were useless. - It made Ashenzari Introspection curses ludicrously dominant. Instead, let's make Djinn able to use all magic skills, as usual. Furthermore, let's give them a ludicrous +11 apt in all spell schools and Spellcasting, enough to let them train every one at once at the same rate the old Spellcasting apt provided. However! The player can only enable *all* magic skills or *none* - magic skills can't be trained separately. In practice, this is mostly equivalent to the old system, with the exception of fixing the problems listed above and a few other caveats. (For example, Ru Arcana sacrifices now work and 'waste' XP, like sacrificing skills on a gnoll.) I'm hopeful it should feel much better. (It's a slight buff to dj spell starts, due to how skills round.) This needs playtesting both for bugs and to make sure the starting skill setup works right. I'm quite scared. Fingers crossed... -------------------------------------------------------------------------------- eec4556ff0 | Nicholas Feinberg | 2023-05-21 14:36:21 -0700 Potion of flight -> enlightenment The potion of flight has long been somewhat bland - it's often worth an inventory slot, but it's never exciting to use. Meanwhile, we've long had requests for a potion which granted Will, like resistance's damage effects. What if we solved both problems at once, and added a new pun at the same time? -------------------------------------------------------------------------------- 3db0c59d1d | Nicholas Feinberg | 2023-05-21 14:31:38 -0700 New monster: formless jellyfish Blink close, constrict, and sting to inflict 1-turn para, ala air elementals. Should be a little funny. Rare high-tier Shoals enemy, occasional Vaults enemy (replacing very ugly things, which get plenty of appearances elsewhere), and Slime enemy (in bands). Probably should be in a few vaults too, eg Slime special rooms. -------------------------------------------------------------------------------- be6b1f9485 | Nicholas Feinberg | 2023-05-21 14:31:31 -0700 Make Lucy's wrath protection trigger on Gozag/Ely Specifically, on Gozag's incite effect and on Ely's enemy lifesaving. Lucy wouldn't trigger at all otherwise, since those gods don't have 'active' wrath. Don't trigger on Gozag potion drinking blocking - feels abusable. -------------------------------------------------------------------------------- 57a6a0d306 | Nicholas Feinberg | 2023-05-21 14:31:23 -0700 Allow BVC/roots to work on unseen foes Simplify. This was not intended for /roots, and it's not needed for BVC. We can nerf BVC again in other ways if need be. -------------------------------------------------------------------------------- 23a37c35b7 | Nicholas Feinberg | 2023-05-21 14:31:15 -0700 Rework the dreamshard necklace Getting an extra life in a roguelike is an insanely, wildly strong effect. This made the dreamshard necklace a ludicrously strong item, but not one that made the game feel more exciting. Instead, one's character felt a bit weaker most of the time. Let's try to fix both sides of this. To make the amulet a bit more fun to wear, give it Acrobat - good for running away :) To make it less preposterously strong (and thus possible that a really good unrand or randart amulet could be preferable), make it only restore the player to 1 HP when it triggers (rather than 50-100% of MHP), but guarantee that they won't die until their next turn. To simplify, make it only trigger when the player's HP drops to 0, rather than sometimes triggering on very big hits, and remove *Drain. Finally, make it stick around as a normal amulet of the acrobat after it triggers, for running away synergy. Let's try this out. -------------------------------------------------------------------------------- 79a9896557 | Nicholas Feinberg | 2023-05-21 14:31:05 -0700 Nerf mummies (revert consumable generation) It seems like the small increase in potions, scrolls, etc added ~1yr ago was neither helpful nor needed, and it did result in folks feeling like they had more stuff than they knew what to do with. Let's go back to the old levels. This reverts commit ecccbbdb8416db653549fe9842ad7793bbed5843. -------------------------------------------------------------------------------- 1c57d4af30 | Nicholas Feinberg | 2023-05-21 14:30:56 -0700 Remove "faith handle warning under Uskayaw There's no real risk to unequipping an amulet of faith under Usk, so no need to prompt on equip/unequip. -------------------------------------------------------------------------------- 15d889b1e4 | Nicholas Feinberg | 2023-05-21 14:30:47 -0700 Don't let frosthearts freeze trees Trees aren't walls. (It felt weird and surprising to players.) -------------------------------------------------------------------------------- b47e89e976 | Nicholas Feinberg | 2023-05-21 14:30:40 -0700 Allow cancelling/dispelling -Blink It's a very magical effect, so it should be cancellable. -------------------------------------------------------------------------------- 5541ac4cad | Nicholas Feinberg | 2023-05-21 14:30:30 -0700 Make summons inherit kmap To make weird causes of death easier to track down with eg ikiller. -------------------------------------------------------------------------------- 2af904968c | Nicholas Feinberg | 2023-05-21 14:30:23 -0700 Note MHP loss on zotting Life is pain ;_; -------------------------------------------------------------------------------- d02987dbc6 | Nicholas Feinberg | 2023-05-21 14:30:07 -0700 Add Lodul to the Vaults ambush entry He seems thematically appropriate and a reasonable difficulty level. (He does not come with his band - the rest of the ambush is his band!) -------------------------------------------------------------------------------- 59b24d9a45 | Nicholas Feinberg | 2023-05-21 14:29:55 -0700 Rework quick blades (acrobat) Quick blades are really cool. They're very fast! However, they feel less fun to use than other weapons, since each button input corresponds to only a small amount of damage. Recent changes to shield delay have also really hurt them, since going from 0.3 to even 0.4 delay is a massive decrease in damage over time. To address both points, increase quick blades to base delay 1.2 / mindelay 0.5, but make them launch two attacks per swing, like Gyre & Gimble. G&G, in turn, goes to four attacks per swing. This works with aux attacks, Manifold Assault, Xom's Cleave status, etc. Nicely, this actually makes G&G much less hacky :) Hopefully! Acrobat thought I should nerf G&G, but I'm holding off. Let's see how this plays. -------------------------------------------------------------------------------- 5f0c076935 | Nicholas Feinberg | 2023-05-20 14:47:03 -0700 Semi-fix a weird Hep crash (#3138, jturbzz) I don't understand what would cause a Hep hexer ancestor to drop its quickblade on the floor and also to somehow turn it into a mangled randart, but that seems to have happened. Ew. As the commit notes, see also https://crawl.develz.org/mantis/view.php?id=11756 . -------------------------------------------------------------------------------- 49d609d0da | Kyle Rawlins | 2023-05-19 12:18:14 -0400 fix: add a missing cast in zoom code Resolves #3130 -------------------------------------------------------------------------------- 46d131a48f | Medrano83 | 2023-05-17 23:37:34 +0200 Fix: Reorder parameters in dungeon_terrain_changed This function is also used to generate some branches. New parameters should be placed at the end to minimize impact. -------------------------------------------------------------------------------- 1c3f6eb1f9 | wheals | 2023-05-17 20:29:24 +0300 fix: info leak in pog targeter (nesea) -------------------------------------------------------------------------------- 18c568b52f | wheals | 2023-05-17 18:01:41 +0300 fix: potential crash in ctrl-x menu -------------------------------------------------------------------------------- 1d5085d191 | Nicholas Feinberg | 2023-05-16 22:26:40 -0700 Tweak 7-league description (SeerSkye) Put the functional info re: waking enemies with rampage(inf) in the ego description, not the flavor zone. -------------------------------------------------------------------------------- 17ee01c9f4 | Nicholas Feinberg | 2023-05-16 14:57:56 -0700 Don't show unid'd charms wands useless for Oka Properly pass item ID status through to cannot_evoke_item_reason(). -------------------------------------------------------------------------------- 1548c4f2a5 | Nicholas Feinberg | 2023-05-15 22:10:23 -0700 Re-fix wizlab wizard names (elliptic) 9651f06ebd3838 caused hellbinders, etc to be incorrectly emitted as uniq milestones. Re-fixes #2738. -------------------------------------------------------------------------------- 98a128e1d9 | Neil Moore | 2023-05-13 22:07:50 -0400 Be often be more grammatical [skip ci] -------------------------------------------------------------------------------- 603a1083af | Nicholas Feinberg | 2023-05-13 12:16:22 -0700 Revert "Fix the description of walls with unseen changes" Tentatively seems to be causing crashes. This reverts commit 571cc3f046e3ab839dc7d58be295795d4996aac6. -------------------------------------------------------------------------------- 571cc3f046 | Medrano83 | 2023-05-13 12:47:29 +0200 Fix the description of walls with unseen changes If a wall is changed but we haven't seen the new state yet, the description shows the tile for the base wall without flavour. -------------------------------------------------------------------------------- 15ee5a5005 | Medrano83 | 2023-05-13 12:47:29 +0200 Save flavour in terrain-change markers Temporary terrain changes that replace walls (summon forest spell) are not being properly reverted on wizlabs and some vaults with custom walls. This change solves the problem by saving the old feature flavour in the terrain-change markers. Closes #2052 -------------------------------------------------------------------------------- 22baebbf0b | Medrano83 | 2023-05-13 12:40:06 +0200 Add CI workflow for source packages It is only triggered on releases. -------------------------------------------------------------------------------- 83e4e5f1f9 | Medrano83 | 2023-05-13 12:40:06 +0200 Debian release rework Instead of creating a new release to include the Debian packages, the files will be packed and added to the standard release as a single file. -------------------------------------------------------------------------------- 9056a99527 | Medrano83 | 2023-05-13 12:40:06 +0200 Allow any version format in debian packages We want to execute the workflow in beta releases. -------------------------------------------------------------------------------- 8d20d54959 | Aliscans | 2023-05-13 12:37:54 +0200 FIX: Put both DescMenu classes in unnamed namespaces. This resolves any confusion between them, and fixes #2824. -------------------------------------------------------------------------------- cc5827d5d3 | Medrano83 | 2023-05-13 12:35:30 +0200 Fix another crash related to console resizing The game may crash if the console window shrinks while a command is being repeated. Also stop the UI from freezing in that situation. -------------------------------------------------------------------------------- 6e9e4f2b4c | Medrano83 | 2023-05-13 12:35:30 +0200 Fix the arena crashing on console resize -------------------------------------------------------------------------------- 18ee0db977 | Medrano83 | 2023-05-13 12:35:30 +0200 Fix wrong background colour on console resize When the console size changes, some parts of the background are filled using the default terminal (not game) colours. An explicit screen clearing solves this problem. -------------------------------------------------------------------------------- 09a698029f | Medrano83 | 2023-05-13 12:35:30 +0200 Fix crashes when the terminal is too small If the game has already started, changes in the terminal size that make it unusable are gracefully handled. This is an attempt to follow the same behaviour in other cases. Closes #2311 -------------------------------------------------------------------------------- 7e2ab59ffe | Medrano83 | 2023-05-13 12:35:30 +0200 Reset the cursor position before clearing the screen after a resize This change stops the game from crashing when resizing the terminal. Closes #1497 Closes #3045 -------------------------------------------------------------------------------- dc203af985 | Medrano83 | 2023-05-13 12:35:30 +0200 Fix the terminal mouse being disabled after a resize -------------------------------------------------------------------------------- cbde74481b | gammafunk | 2023-05-12 23:37:28 -0500 doc: Correct a comment Despite what the current comments claim, clua's monster info :has_ranged_attack() method does in fact check for various kinds of ranged attacks that includes spells and wands. -------------------------------------------------------------------------------- 282de0ab27 | gammafunk | 2023-05-12 23:37:28 -0500 feat: A lua function to test known map boundaries This adds the clua function `view.in_known_map_bounds(x, y)`, which returns true when the given coordinates are in the bounding box of map areas known to the player. This is necessary to call functions like `travel.is_excluded()` without generating an error, since this and similar functions make such a check. Callers of these functions could just use `pcall()` to trap the error, but it's good to have parity between information the UI provides and what clua can determine. This is a minimal feature addition that I've tested and will be pushing to stable. I'm making it now for the purpose of running qw during tournament. It turns the formerly static `_in_map_bounds()` to the global `in_known_map_bounds()`, but the behaviour is identical. I've also documented the relevant crawl-side C++ functions. -------------------------------------------------------------------------------- 5d4078a31e | gammafunk | 2023-05-12 23:37:28 -0500 feat: Better flight reasoning for lua functions For the clua functions travel.feature_traversable() and view.is_safe_square, add an assume_flight boolean argument that has these assume the player has permanent flight. It's important to be able to reason about traversability and safety when considering using temporary flight or swapping to a permanent flight item. It wouldn't be possible to do use these functions to reason about flight without an argument like this, since there are multiple reasons a square can fail to be traversable or safe. These functions could instead return a table indicating all the reasons why a square fails to be safe or traversable, but that would break current scripts, so we'll do this for now. The comments for these functions have been updated to more accurately describe what they test. This is a minimal feature that I've tested and will be pushing to stable. I'm making it now for the purpose of running qw during tournament. It adds a new argument to `feat_is_traversable_now()` on the C++ side, but with a default value that gives identical behaviour to the old function. -------------------------------------------------------------------------------- 13bd767e95 | Nicholas Feinberg | 2023-05-12 14:36:26 -0700 Fix: display 'ready to howl' properly (elliptic) We hid it if the howl key was set to false. It should only be hidden when that key is true. -------------------------------------------------------------------------------- 4c684d5d01 | Nicholas Feinberg | 2023-05-12 14:30:51 -0700 Fix: finish removing the book of Maledictions (Woody) Oversight in be57942821a. -------------------------------------------------------------------------------- ea43df2a32 | advil | 2023-05-08 09:35:17 -0400 fix: Fully remove a broken CI line a9a6e9e7af1e only removed one but this was duplicated many times. -------------------------------------------------------------------------------- a9a6e9e7af | advil | 2023-05-08 09:20:26 -0400 fix: remove a redundant/broken CI step Our current invocation of actions/checkout fetches the entire repository history and the tags, and then this fetch line exists to apparently shorten the history to depth 1. This isn't normally a big deal, but if the most recent tag on a branch is non-annotated, this breaks git describe on that branch. Current trunk is like this because of the debian tag. It's possible there's something I'm still not appreciating about what this stop was intended to accomplish? Both changes to fetch depth were added in a single commit in 449611fb78e74826. -------------------------------------------------------------------------------- 6d2539766c | Nicholas Feinberg | 2023-05-07 15:27:23 -0700 Prevent more duplicate artps Don't allow boots of rampaging of rampaging or scarves of invisiblity of invisibility. -------------------------------------------------------------------------------- 1fe5e1216f | Nicholas Feinberg | 2023-05-07 15:01:11 -0700 Don't count firewood as kills (CarefulOdds) Clutters up logs and messes with the 'pacific' category. We're more of an Atlantic gang here anyway. Implemented in the display side rather than the recording side so that I don't have to bother with save compat. -------------------------------------------------------------------------------- c80a10f4b6 | gammafunk | 2023-05-06 22:22:40 -0500 doc: Add a missing debian changelog entry for 0.29.1, which was added to the 0.29 branch but not to trunk. -------------------------------------------------------------------------------- fcab9622e5 | gammafunk | 2023-05-06 22:22:40 -0500 doc: Update the debian changelog for 0.30 (cherry picked from commit 0735c779e89de14d041d983ef53a20bf03093de3) -------------------------------------------------------------------------------- 5ef74148a8 | advil | 2023-05-06 22:22:40 -0500 docs: various changelog tweaks (cherry picked from commit a01eaba1cd2d81f8018eaf2b920752966742fc37) -------------------------------------------------------------------------------- ce023dd156 | advil | 2023-05-06 22:22:39 -0500 docs: sync changelogs 0.29.1 was missing from the trunk version (cherry picked from commit 561828ffede38fdaa81fd45f5f7cf5613b545356) -------------------------------------------------------------------------------- 7b2ceec048 | Nicholas Feinberg | 2023-05-06 15:52:19 -0700 Tweak Sandblast description (Abyss, elliptic) 'Half again' confused folks; try 'one-and-a-half-times'. -------------------------------------------------------------------------------- 12c4e5fa89 | Nicholas Feinberg | 2023-05-06 15:52:19 -0700 Simplify misc evokers' descriptions Now that they should each be unique, don't refer to 'others of their kind.' (This confused someone who thought it referred to other misc evokers!) Also, don't mention charges for 1-charge items (seems redundant), but do mention it for Xom chesspieces. -------------------------------------------------------------------------------- d14b0f4ee2 | Kyle Rawlins | 2023-05-05 16:06:30 -0400 task: 0.30 trunk tournament reminder -------------------------------------------------------------------------------- 51783674b7 | patrick | 2023-05-04 20:36:23 -0400 Change the changelog -------------------------------------------------------------------------------- 3637d85276 | Nicholas Feinberg | 2023-05-04 16:58:29 -0700 Finalish changelog update for 0.30 -------------------------------------------------------------------------------- 84e6b3452c | Kyle Rawlins | 2023-05-04 11:45:10 -0400 fix: don't disable autoclear for rc errors Previously, an rc with many errors would force you to view each one, because error messages reset autoclear. This behavior is really intended for cases where an error comes in a batch with many other messages, rather than a lot of errors at once; rc parsing generally doesn't emit many messages except errors. So, use a different autoclear behavior for this special case. The implementation is very brute-force with yet another crawl state var, for simplicity near a release. (A better idea might be to enhance the RAII message controls to allow controlling this behavior directly.) This probably wasn't a big deal previously but recent improvements in rc error messages mean that some popular rc files (hda, at least) produce *many* errors if used as-is in 0.30 (the bugs aren't new, but the error messages for them are). -------------------------------------------------------------------------------- efa6de2278 | Nicholas Feinberg | 2023-05-02 21:59:25 -0700 Show 2x for monster plasma beam 2x3d19 or w/e. -------------------------------------------------------------------------------- c49c5fa273 | Nicholas Feinberg | 2023-05-02 21:59:00 -0700 Fix: monster plasma beam damage (dilly) Use the monster zap damage, not the much higher player values. -------------------------------------------------------------------------------- 928a59620c | Nicholas Feinberg | 2023-05-02 21:50:20 -0700 Display plasma beam damage in monster -------------------------------------------------------------------------------- 4198be8af4 | Nicholas Feinberg | 2023-04-29 15:39:06 -0700 Replace Vhi's dust cloud with electricity Now that we have decorative electric clouds, let's use em! -------------------------------------------------------------------------------- 51fda8cc5f | Nicholas Feinberg | 2023-04-29 15:23:08 -0700 Make Stuck block self-shafting (acrobat) For consistency with pre-existing shaft traps, harpoon shot, etc. Resolves #2839. -------------------------------------------------------------------------------- 7dff98ebb8 | Nicholas Feinberg | 2023-04-29 15:11:49 -0700 Correct Disjunction description (Lici) Don't claim it causes contam, since it hasn't since fb90bdcb574a36d (Nov 2021). -------------------------------------------------------------------------------- 2f52df8dfa | Nicholas Feinberg | 2023-04-29 15:05:45 -0700 Turn off the zombie incinerator (acrobat) Recall has been broken for salamander/swimming zombies and lava/deep water since db45db7b37d (April 2023). Ten years was probably long enough to leave that bug around. Resolves #2866. -------------------------------------------------------------------------------- c985221192 | Nicholas Feinberg | 2023-04-29 15:00:05 -0700 Dedent -------------------------------------------------------------------------------- cdfb0321a8 | Nicholas Feinberg | 2023-04-29 14:48:17 -0700 Slightly clarify Vhi's failure messages (Ge0ff) It's very confusing what currently happens if you try to charge at e.g. a thorn hunter behind briars. The issue here is that you *should* be getting the message `The briar patch is immovably fixed there.`, since stationary creatures (like briar patches) can't be teleported or blinked. You *can* get that message if there is a valid charge target *somewhere*, but if there aren't *any* valid charge targets, `electric_charge_possible` returns false and so `spell_uselessness_reason` just returns `you can't see anything to charge at.` This commit plumbs slightly more info through, but it still doesn't solve the original info. Hopefully someone will figure out something better at some point. Closes #3007. -------------------------------------------------------------------------------- 92c415aa16 | Nicholas Feinberg | 2023-04-29 14:23:15 -0700 Let executioners chop heads (bobross420-1) Some lore is simply too important to ignore. This also affects a hypothetical disarmed Ignacio. Resolves #3094. -------------------------------------------------------------------------------- 20724dfda1 | Nicholas Feinberg | 2023-04-29 14:13:24 -0700 Fix abyss_greek_temple issues (damerell) Place Ru, and remove antique logic for disabling Wu in stable. Reverts 2e29d97aba9aef597722005b08d2148bdfdfa7be. Closes #3103 -------------------------------------------------------------------------------- 73dabc6067 | Nicholas Feinberg | 2023-04-29 13:57:31 -0700 Fix trailing comma for UI JSON (tonyspumoni) json_write_comma() is intended to be called immediately *before* writing another object. If there's already a comma or opening brace or similar as the previous character, then json_write_comma is a no-op. This nicely (if somewhat confusingly) solves the issue of writing commas before all but the last element of a list. Closes #3078. -------------------------------------------------------------------------------- 7e8df60e79 | Michael Del Monte | 2023-04-29 13:38:07 -0700 Makes _safe_move_player also clear the command buffer. Without doing this you get silly and possibly dangerous results if the command buffer has commands that will get executed after the safe move fails. Closes #2986. -------------------------------------------------------------------------------- 3d22aafbd0 | Aliscans | 2023-04-29 13:30:38 -0700 Clear the training target before the message, rather than afterwards. This means that a lua hook which catches the message can change the skill target for the relevant skill (imagine a script which sets an Axes target at 3, and sets it to 4 when it reaches 3). Previously, the game set the target to 0 after the message returned, whether or not the skill was still at its target. -------------------------------------------------------------------------------- 618583d7c3 | Zhang Kai | 2023-04-29 13:29:49 -0700 Update ability.txt -------------------------------------------------------------------------------- 18b1e96e0c | Zhang Kai | 2023-04-29 13:29:49 -0700 Update species.txt -------------------------------------------------------------------------------- 87f2efb3ad | Zhang Kai | 2023-04-29 13:29:49 -0700 Create status.txt -------------------------------------------------------------------------------- 8323249d43 | Zhang Kai | 2023-04-29 13:29:49 -0700 Update ZH translation -------------------------------------------------------------------------------- ea4a182ca1 | Zhang Kai | 2023-04-29 13:29:49 -0700 Update ZH translation -------------------------------------------------------------------------------- 1f5b0daca9 | Nicholas Feinberg | 2023-04-29 13:23:38 -0700 Hide spellcasting by default for Trog Considered harmful! -------------------------------------------------------------------------------- e08a67761e | Implojin | 2023-04-28 16:21:22 -0500 fix: Don't let Jiyva eat evokers (dilly) Since 5db6f66fbb, elemental evokers are now unique per-game, so we probably don't want to let Jiyva slimes eat them. Thanks dilly! -------------------------------------------------------------------------------- f69bf04e7a | Nikolai Lavsky | 2023-04-27 16:38:32 +0300 fix: make horn of Geryon's summons default to attacking Currently, summoned hell beasts often just follow the player and ignore nearby enemies until they attack first. This commit makes these summons more aggressive, similar to how mutant beasts behave. -------------------------------------------------------------------------------- 2c2278344c | advil | 2023-04-27 09:31:48 -0400 fix: add a missing nil check to borgnjor's wizlab Resolves #3109 -------------------------------------------------------------------------------- 0704695555 | Nicholas Feinberg | 2023-04-26 16:29:27 -0700 Nerf Call Imp (elliptic) Don't sometimes round up spear enchantment, to discourage CERTAIN PEOPLE from repeatedly re-rolling imps until they get their ideal gacha roll. -------------------------------------------------------------------------------- 6e42c06551 | Kyle Rawlins | 2023-04-24 17:37:56 -0400 fix: improve some options errors Be more explicit about the source of the problem in a few cases, reword. -------------------------------------------------------------------------------- 7bafe92a0b | Kyle Rawlins | 2023-04-24 17:08:31 -0400 fix: add some missing explore_stop aliases We had plural forms for most options except these two, make it consistent. -------------------------------------------------------------------------------- d85ba11b5a | advil | 2023-04-24 07:23:41 -0400 fix: redo disable some errors on dgl builds Restore c8ec674a0ca, with some missing #ifdefs. This reverts commit 2cc9ac7196178b7a7cd06e2ba3a27825e5ef34d3. -------------------------------------------------------------------------------- 2cc9ac7196 | Nicholas Feinberg | 2023-04-23 22:57:48 -0700 Revert "fix: disable some errors on dgl builds" This removed the 'type' option from dgamelaunch builds entirely. Since read_startup_prefs assumes that option exists, the game would crash on startup. Probably. This reverts commit c8ec674a0ca8a934dd279f3553d5b4599694bb78. -------------------------------------------------------------------------------- c8ec674a0c | Kyle Rawlins | 2023-04-23 22:31:28 -0400 fix: disable some errors on dgl builds Recent changes error on these options on builds where they are disabled, but previously, dgl builds wrote these options to the prefs file. So, disable the errors for now until online players have ugpraded. -------------------------------------------------------------------------------- f8af5b4991 | patrick | 2023-04-23 14:37:26 -0400 Merge branch 'master' of github.com:crawl/crawl -------------------------------------------------------------------------------- 7c48da4bfe | patrick | 2023-04-23 14:36:09 -0400 Add a new Qazlal overflow altar vault -------------------------------------------------------------------------------- ec78dead90 | Edgar A. Bering IV | 2023-04-23 11:32:41 -0700 feat: print damage punctuation for arcjolt -------------------------------------------------------------------------------- d4795048de | nicolae-carpathia | 2023-04-23 13:19:29 -0400 Add a diverse assortment of Vaults vaults (#3100) Includes vaults for _empty, _standard, and _hard. I looked over the existing vaults, but Vaults vaults tend to have a simpler variety than other vaults because they tend to use a reduced glyph set. If I've accidentally duplicated some other existing vault, my apologies. Unless I've accidentally duplicated one of my own vaults, in which case I absolve myself completely of all wrongdoing. -------------------------------------------------------------------------------- 36672149da | advil | 2023-04-23 09:07:49 -0400 feat: a `default` directive for rc files This directive restores options to default values, in a way that is robust to various forms of default initialization. It unfortunately just gives an error for custom parsed options at the moment. -------------------------------------------------------------------------------- 8e18f04a39 | advil | 2023-04-23 09:07:49 -0400 docs: comment some newer options code -------------------------------------------------------------------------------- 464472ef9f | advil | 2023-04-23 09:07:49 -0400 fix: move travel_avoid_terrain fully into game_options `on_set` functions that affect state outside of a game_options object have a bad interaction with initialization, so this state would get reset somewhat unpredictably. This commit removes the api for manipulating this option, but it was also completely unused aside from the option. -------------------------------------------------------------------------------- 14641e6071 | advil | 2023-04-23 09:07:49 -0400 fix: restore some test code Accidentally rebased this out -------------------------------------------------------------------------------- a550bc702f | Kyle Rawlins | 2023-04-23 09:07:49 -0400 fix: pull an enum into its own file Apparently through some complex include chain, S_NORMAL conflicts with a win32 define. This is a result of me including mon-util.h, when really I just needed this one enum -- so pull it out into its own header. Also, remove some c++11 warning-triggering constexprs. -------------------------------------------------------------------------------- 6c9d98b8e7 | Kyle Rawlins | 2023-04-23 09:07:49 -0400 fix: tweak some fixed length option details Also, lint -------------------------------------------------------------------------------- ffccbfb39d | Kyle Rawlins | 2023-04-23 09:07:49 -0400 refactor: standardize some complex list options These were easier to do than I might have expected; several had existing classes where writing a parsing constructor was not very hard, making them easily adaptable to ListGameOption. The most involved here was `monster_list_colour`, which I needed to relocate; it has less ad-hoc code but it's still a bit involved. -------------------------------------------------------------------------------- 1af31d3574 | advil | 2023-04-23 09:07:49 -0400 refactor: yet more GameOption conversions Honestly, most of these were too boring for anyone to have done anything fancier with them before now. `game_seed` was already essentially handled like the on_set cases. Along the way, I fixed the kind-of-broken `tile_tag_pref`, adding two new values ("auto", which better handles the old default behavior, and "all", which just shows all tags). -------------------------------------------------------------------------------- 09bdf45078 | advil | 2023-04-23 09:07:49 -0400 refactor: convert rc directory options to GameOptions The conversion was relatively straightforward, though initialization order remains a bit tricky. As part of this I have upped the comments, marked these options as disabled on DGL, and added some debug build diagnostic code to ?v. -------------------------------------------------------------------------------- 864cb40d6f | advil | 2023-04-23 09:07:49 -0400 fix: prevent some dgl build errors Previously, these options would be simply ignored, but now that they are marked as disabled, writing them out to the prefs file leads to errors. So, don't write them. -------------------------------------------------------------------------------- 1273e43332 | advil | 2023-04-23 09:07:49 -0400 refactor: move some custom options to base_game_options The `macros` and `bindkey` syntaxes aren't appropriate for converting to a GameOptions implementation, and in addition, the former already has an in-game editing UI (the latter probably should, but doesn't; if it does, it'll be distinct from a regular options-editing UI). So, move them to the base class list of manually handled meta-options (which is where I'm keeping things that have this property). Includes are handled in the base class. So move `additional_macro_file` to the base class as well. (I don't know if turning this one into a ListGameOption would be viable, but it might be good to generalize the syntax..) Also, fix some reset calls that were in the wrong class. -------------------------------------------------------------------------------- 6ea0fb6c0e | advil | 2023-04-23 09:07:49 -0400 refactor: simplify dump_order implementation This had a non-standard implementation involving both a set and a vector, but only the vector was actually used. Without the set, it's just a bog-standard list option. (If someone wants the set back, it could be reconstructed in an `on_set` trigger.) -------------------------------------------------------------------------------- 224273044b | advil | 2023-04-23 09:07:49 -0400 fix: rewrite the `enemy_hp_colour` option The code that uses this option is hardcoded to assume a particular size vector with each position having a designated value. However, the option implementation treated it as a list, with complete flexibility as to size, allowing prepending, subtraction, etc., and no validation of the vector size. I haven't gotten it to crash but suffice to say the behavior of the consumer code is at best undefined if the option is not set correctly. It looks to me like the list manipulation patch 11 years ago didn't look closely enough at what this option did when implementing prepending etc for this option, though the lack of size validation goes back to the original implementation of this option in ff9fb87a6f8b8d. This commit reimplements the option behavior to always use a fixed size vector. If not enough options are supplied, the unsupplied values remain default, and if too many options are supplied, it produces an error. I've also added the possibility of writing "default" for any of the slots as a convenience. -------------------------------------------------------------------------------- 877bb45555 | advil | 2023-04-23 09:07:49 -0400 refactor: convert language options to GameOption These use the string field + on_set pattern, which was very similar to their previous implementation. -------------------------------------------------------------------------------- 2d27c6a638 | advil | 2023-04-23 09:07:49 -0400 refactor: convert map scale options to FixedpGameOption This standardizes these two options using a new option class that can handle decimal values directly, using `fixedp<>`. ...and, uh, this commit merges fixedp.h. This commit would at very long last, resolve #810. Though, unlike the original idea of that PR, I no longer think there's a need to wholesale convert scaled int code to fixedp in order to merge! It is still a really handy class to have around for a lot of crawlcode, and it's kind of silly that it has sat for so long without seeing any use. (Insider notes: this version of fixedp.h has a few tweaks beyond the 2018 version. Primary ones are: integrating the test code with crawlcode, and implementing numeric_limits min/max. Also added an explicit copy constructor and dealt with various new warnings. We'll see how it does on gcc...) -------------------------------------------------------------------------------- 55b71c9664 | advil | 2023-04-23 09:07:49 -0400 refactor: standardize `travel_avoid_terrain` This option was only semi-implemented in the first place, and the new technique of supplying a lambda to a ListGameOption is a good match for standardizing this option without having to rewrite too much. -------------------------------------------------------------------------------- c85053008e | advil | 2023-04-23 09:07:49 -0400 refactor: generalize some bitfield list options These three options are generalized using a more invasive technique than previous commits, to handle an underlying bitfield type. Instead of trying to convert the list handling directly into a templated ListGameOption or writing a new options class, I have stored the list as a string, and triggered an update function each time the string is changed, which updates the real value by overwriting the bitfield. This has the downside that if the actual option state is changed outside of the option handling code, it does not trigger a change in the list option state; but currently this does not matter. -------------------------------------------------------------------------------- 219cf69338 | advil | 2023-04-23 09:07:49 -0400 docs: update some option entries Misc changes I noticed while reviewing options for refactoring. Mostly just being clearer on the range of possible values for some options. -------------------------------------------------------------------------------- 8116253f26 | advil | 2023-04-23 09:07:49 -0400 refactor: standardize some maybe_bool option handling There are various ways to write an options class for this, but since a bunch of existing cases were already using MultipleChoiceGameOption, I just created a convenience specialization of that class. -------------------------------------------------------------------------------- 16ca85fa0a | advil | 2023-04-23 09:07:49 -0400 fix: deal with some gcc-specific build issues * biggest change: gcc is choking if the function supplied to OptFunctor is not explicitly a pointer or ref. I'm guessing clang is inferring this automatically. The spec does require that functions be a pointer or ref, but I'm unclear as to whether gcc or clang is right in their behavior when it's not explicit. In any case, making it explicit seems to work on both compilers. * gcc doesn't like the `constexpr`s on `opt_parse_state`, not sure why. * some misc warnings -------------------------------------------------------------------------------- 12f39dd2a6 | advil | 2023-04-23 09:07:49 -0400 refactor: convert remaining newgame opts to GameOption This required work. * Add an `on_set` function. This is present for all GameOption objects but I only exposed it in a constructor the class where it is actually used for now. * Do some fairly crazy template stuff so that ListGameOption can (approximately) take a function that does the type conversion in its template arguments, rather than a class name. This finally let me unify and remove one of the many ways that initfile.cc parses += etc. It isn't intended to change the behavior of the relevant options in any significant way, but it could. -------------------------------------------------------------------------------- 2a961404d8 | advil | 2023-04-23 09:07:49 -0400 refactor: convert `type` to a GameOption This one was straightforward to convert; I tweaked its behavior and clarified its documentation in the process. Now, if the main menu is shown, it will set the default game type to use at that menu with an empty name. Previously, it did nothing in this scenario. -------------------------------------------------------------------------------- 2bd05cc0aa | advil | 2023-04-23 09:07:49 -0400 feat: generalized means of disabling an option on a build That is, warning the user that it is disabled. Previously, you could do this with only a multiple choice option. This is intended to be used lightly: users might paste options between builds, and this should be relatively seamless. -------------------------------------------------------------------------------- 0a6e7bf317 | advil | 2023-04-23 09:07:49 -0400 refactor: standardize some newgame options This converts a few newgame options to GameOption implementations. These are, remarkably, the "easy" cases. Actually using GameOption was not such a big deal, but handling the quirky interactions and bug this revealed was. * Fixed a really nasty bug where in game modes selected via ui, the startup pref file for that game mode could be read under some circumstances, but was never written to; when it was read, it overrode the regular prefs file. (According to comments, the intent is that it should be used at all in this scenario.) * The option `fully_random` was used internally, and could be set, but when set as an option in rc, it was only half-implemented: it still allowed char selection, but then showed the reroll prompt. Since this can be set (even more so after turning it into a GameOption), I've it a real implementation for the case where it is set via rc. (It might instead make sense just to not save it at all? But I wasn't quite sure if that would break complicated newgame code.) * Several newgame options weren't documented. For new I've just hand-listed the sprint map options, since these are going to be quite hard for a user to figure out. * Add some bits of game_option API that didn't end up getting used in this commit, but seem nice to have. -------------------------------------------------------------------------------- 79a2db1cd2 | advil | 2023-04-23 09:07:49 -0400 refactor: make `split_parse` a bit more organized This code is still not very general... -------------------------------------------------------------------------------- beecc3cae0 | advil | 2023-04-23 09:07:49 -0400 refactor: generalize option case handling Before this commit, case sensitive GameOption-based options needed custom handling, because a `lowercase` was done on the string used for the constructor. This adds support for case sensitivity to a couple of GameOption subclasses, and uses line parser state in the constructor so that these classes can have access to the case sensitive version. As part of this, I was able to fully remove the hardcoded list of case sensitive options. Sadly, only one custom parsed option was able to be generalized as a result of this. Also, this fixes what seems to be a bug where morgue_dir is not treated as case sensitive. -------------------------------------------------------------------------------- a5d8a0da8e | advil | 2023-04-23 09:07:49 -0400 refactor: better separate option parsing, state, and management Crawl options are extremely involved, with a massive set of options that are set up and parsed in a wide variety of ways, with nearly all the work being centralized in one heavyweight class (`game_options`) that is primarily instantiated as a singleton. As this code has grown it has become increasingly challenging to maintain it, especially when considering significant user-facing improvements to configuration. This commit attempts to impose (what I think is) a better structure on this. I have split `game_options` into a base class `base_game_options`, that is responsible for managing option "meta-state", and where generic option-related code goes; option parsing is now run from this class. The `game_options` class is now responsible for actual options fields, as well as custom parsing. I haven't attempted (yet) to eliminate the giant custom parsing conditional sequence, but it is now partitioned off from the general parsing code. As part of this I have abstracted option parsing state out of the parsing function itself, allowing parsing to be split across multiple functions in a cleaner way. There were probably multiple ways to achieve these refactoring goals, but this one (a) keeps api compatibility for Options for external users, and (b) makes it possible to write a sane copy constructor / assignment operator for the meta-state (especially the vector of `GameOption *`s) while using a defaulted copy constructor for the actual options fields. Previously a defaulted copy constructor existed, but it wasn't safe to use for any purpose except accessing the raw fields, because the metastate wasn't handled correctly. The existing `merge` function couldn't substitute for general purposes because it can only handle GameOption style options. As a refactoring commit, this leaves things in a somewhat intermediate state: I have done what is necessary to get the top-down changes to work, but there's a lot of messy code here still.. -------------------------------------------------------------------------------- 6e8f0f562f | Nicholas Feinberg | 2023-04-22 13:10:56 -0700 Reduce shield penalties with Str instead of size (Lici) To make strength a bit more meaningful for some characters that might not currently care about it and to make tower shields more desirable in the late game, replace the size component for the shield penalty formula (for spell success & attack delay) with a strength component. With this formula, a 15 Str character will have the same penalty as a medium-size character did before. A 21 Str character will have the same penalty as a Formicid, Ogre or Troll did, a 9 Str character will match an old Kobold, and a 3 Str character will match an old Spriggan. This is a very small nerf for D:1 large species fighters and a buff to them thereafter. Mid-sized stabbers, eg vampires, are hurt a bit more; compensation TBD. I vaguely suspect this commit is a bit too generous to shield users and some nerfs are needed in some way, but I'm tossing it up for now to think about it. -------------------------------------------------------------------------------- abc949cf19 | Kate | 2023-04-21 23:11:19 +0100 Fix tag_upgrade compilation Oops. -------------------------------------------------------------------------------- 620db56ad9 | Medrano83 | 2023-04-21 23:47:06 +0200 Fix two links in INSTALL.md Credit to lukem12345. Closes #2108 -------------------------------------------------------------------------------- a3e7370cef | Kate | 2023-04-21 21:52:43 +0100 Add a description lookup for passive effects Using the name listed on the overview screen. Possibly this should use a proper enum list like status_type. -------------------------------------------------------------------------------- 291f4736cf | Kate | 2023-04-21 21:52:43 +0100 Rework the overview screen Remove the second column of "resists" (which mostly displayed passive effects gained from amulets, and a few other assorted effects which only displayed when active such as Archmagi and -Tele). The overview screen now consists of two columns - resists, and equipment (which now have a lot more space for randart inscriptions to be visible). SInv is moved to the first column (by virtue of being an effect provided by a ring that's more likely to be swapped around frequently). Other generic "passive" effects, such as those provided by amulets and artefacts, are shown below in a new list, grouped under "%" for longer-term passive effects, followed by "@" for temporary status effects, and "A" for mutations and innate abilities. This also allows some more detail to be displayed (such as percentage chance of corrosion/slow from *Corrode/*Slow artefacts, and percentage damage bonuses from Harm). RMsl also moves to be displayed in this list rather than as a temporary status light, as it's now provided by equipment, DS mutation or Qazlal passive rather than being a temporary duration. Potentially other, rarer passive effects (such as those from unrands) could also now be listed. -------------------------------------------------------------------------------- e7184f5f97 | Kate | 2023-04-21 21:52:36 +0100 Remove unused ARTP_CAUSE_TELEPORTATION Teleportitis has been mutation-only for some time. -------------------------------------------------------------------------------- 82af5b777a | Kate | 2023-04-21 20:46:33 +0100 Remove an unused parameter from wizardry -------------------------------------------------------------------------------- 8ee25b8dbc | Nicholas Feinberg | 2023-04-21 12:04:16 -0700 Increase lightning rod damage by 50% Juice it up a little to make it a bit more comparable to other elemental evokers, since players tend to be disappointed in it. -------------------------------------------------------------------------------- ebefce21f7 | Kyle Rawlins | 2023-04-20 20:50:57 -0400 Revert travel messaging change and followups This patch was a great idea, and well worth revisiting after the 0.30 release, but unfortunately the autotravel code it was trying to use to accumulate messages is way more complicated than any of us had any idea of. Main problems that arose: * autotravel does exhaustive search (at least for cases where it doesn't find a path). Because of this, messaging would accumulate about all exclusions that could potentially be relevant, not just the ones that actually block travel in a particular way. In cases where the target wasn't reachable at all, a message would appear for every reachable exclusion in the dungeon. I think the autotravel search probably needs to be rewritten to handle some of these cases a bit better, e.g. a dynamic programming approach where a specific path can be checked to find appropriate exclusion messaging. * Some traversal information is only available with an excursion (specific issues with this were in followup bugfixes that tried to address travel to unknown squares) * Some cases of non-exclusion blockers (unexplored stairs) were not messaged correctly It's possible that autotravel search is generally not what it could be... This reverts commit 25895a7845a2bd821876fda33a95df77f9feda4f. This reverts commit 860fb061e71aec5659aa2f719141f7eac004ad19. This reverts commit 710642bebeccf30edc188bff0cbce11d0ecf633b. This reverts commit a3c4068687a7597f2320aab96a41c1ca348dc40e. -------------------------------------------------------------------------------- 77a82715bb | Nicholas Feinberg | 2023-04-20 16:42:02 -0700 Simplify waterlogging Don't reduce effect duration by distance from the target. I'm skeptical that this mattered (how often do you waterlog multiple relevant enemies at once, anyway?) and it could in principle result in negative durations. -------------------------------------------------------------------------------- d936c97349 | patrick | 2023-04-19 21:47:18 -0400 Add a quote for Harold -------------------------------------------------------------------------------- a8025317a9 | Nicholas Feinberg | 2023-04-19 09:59:20 -0700 Fix the sulking sword('s lore) -------------------------------------------------------------------------------- fb780f5df6 | Nicholas Feinberg | 2023-04-18 22:45:21 -0700 Always waterlog monsters hit by phial Even if they're knocked out of the Splash Zone tm. -------------------------------------------------------------------------------- 335c31701a | Nicholas Feinberg | 2023-04-18 22:38:26 -0700 Reduce phial waterlogged duration Previously lasted 7-11 turns at 0 evo. Now lasts 2-3 turns at 0 evo, gaining 0.5 turns of average duration for each level of evo. -------------------------------------------------------------------------------- 272f719a29 | Nicholas Feinberg | 2023-04-18 22:23:17 -0700 Reduce phial of floods' range to 5 (Lici) Avoids issues with knocking enemies out of LOS and brings it closer to parity with ?silence. -------------------------------------------------------------------------------- abe9d7adf6 | Nicholas Feinberg | 2023-04-18 22:18:06 -0700 Simplify evoker recharge curves Previously, evokers recharged according to an extremely complex formula. This simplifies recharging considerably. Both before and after, at XL 14 and 0 Evo, evokers could be used about once per XL. At XL 27 and 13 Evo, they could be used about five times per XL; now they can be used about 1.5 times. This changes makes evokers usable a bit more often before XL 13 and significantly less often at higher levels. This should make using them feel a bit more strategic and meaningful, without making them so precious that you're never able to use them at all. https://docs.google.com/spreadsheets/d/1MKU84xL0E4dU3FkAhMTiZ7-7EiLwQI9TXgdlSoVg he8/edit?usp=sharing has a full breakdown. -------------------------------------------------------------------------------- 48e7df34de | Nicholas Feinberg | 2023-04-18 21:26:18 -0700 Fix: don't corrode player on excursions (Sergey) The player shouldn't be displayed as corroded when they look at other floors of Slime. They *should* be shown as corroded if they're currently adjacent to a slime wall but just looking at another floor, but that would require a larger rework to fix. -------------------------------------------------------------------------------- aaebb76ac8 | Nicholas Feinberg | 2023-04-18 21:23:02 -0700 Fix: plasma conj'd warnings (Snackwell, CarefulOdds) Don't warn when shooting plasma beams through IOODs, battlespheres, etc. -------------------------------------------------------------------------------- 218f5a9f79 | Nicholas Feinberg | 2023-04-18 21:19:01 -0700 Add a you.species() clua alias For consistency with the internal C++ naming. Might shift some references over later. -------------------------------------------------------------------------------- ec820db308 | Kate | 2023-04-18 23:17:00 +0100 Scale condenser vane cloud numbers with power To make it less able to fill entire screens with clouds even at minimal power, add some noticeable power scaling to the chance to place a cloud on each valid target square. -------------------------------------------------------------------------------- 706747fef1 | advil | 2023-04-18 08:40:43 -0400 docs: update webtiles changelog -------------------------------------------------------------------------------- 25895a7845 | Nicholas Feinberg | 2023-04-17 17:50:06 -0700 Fix: set travelers up for success (pdpol) Neither an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, an exclusion on Vaults:4, nor an exclusion on Zot:1 will stop them! -------------------------------------------------------------------------------- 2dbb833546 | Kate | 2023-04-17 17:05:39 +0100 Fix spectral weapons not being treated as summoned Fixes them dropping items on death since 3f05228d. -------------------------------------------------------------------------------- 6f1fe797d6 | Kate | 2023-04-17 16:47:48 +0100 Add orb of Battle/Wucad Mu tiles (Sastreii) -------------------------------------------------------------------------------- e1321aca23 | Kate | 2023-04-17 15:26:02 +0100 Adjust Dispater's resists Give them immunity to acid (to prevent them being corrodable by their own orb), and reduce their fire resistance from 3 to 1. -------------------------------------------------------------------------------- 92fcfee559 | Kate | 2023-04-17 15:26:02 +0100 Let monsters be affected by *Corrode and *Slow -------------------------------------------------------------------------------- 27621e4024 | Kate | 2023-04-17 15:26:02 +0100 Tweak *Corrode and *Slow artefacts Instead of each source of *Corrode giving an independent 3% chance to apply a level of corrosion on taking damage, make sources additive (so the very unlikely case of stacking lots of sources of *Corrode can no longer apply multiple levels of corrosion). Do the same for *Slow (which has a 1% chance per source). -------------------------------------------------------------------------------- a414cb0b83 | Kate | 2023-04-17 15:26:02 +0100 Deduplicate some Harm code -------------------------------------------------------------------------------- 1367321604 | Kate | 2023-04-17 15:26:02 +0100 Allow artefact bardings to get SInv and Rampage With them being worn by both Nagas and Armataurs, don't block properties that are potentially useful to one of the two species (and rPois was already allowed). -------------------------------------------------------------------------------- fe652c801a | Implojin | 2023-04-17 07:14:01 -0500 fix: webtiles rampage indicator -------------------------------------------------------------------------------- 860fb061e7 | Edgar A. Bering IV | 2023-04-16 15:46:06 -0700 fix: a range check in travel failure messaging -------------------------------------------------------------------------------- cfb1e0cf12 | Medrano83 | 2023-04-16 23:46:17 +0200 Add version information for Clang Closes #2408 -------------------------------------------------------------------------------- 2c689178d5 | Kate | 2023-04-16 21:21:59 +0100 Adjust the sphere of Battle Let it enhance all destructive spells instead of only conjurations, but make it act as a negative enhancer for non-destructive spells (giving it more of an orb-like downside). The description implied that the summoned battlesphere's power was based purely off Conjurations skill, but instead its power was calculated exactly as if casting the spell (factoring in intelligence and other enhancers). Change it to only look at Conjurations skill (resulting in it being easier to reach higher power since no stepdown is applied). -------------------------------------------------------------------------------- 710642bebe | Edgar A. Bering IV | 2023-04-16 12:10:22 -0700 fix: be correct when failing to traverse the unknown -------------------------------------------------------------------------------- 0f0e7abb2d | Zhang Kai | 2023-04-16 10:15:37 -0700 text: update zh translations In: unrand.txt monsters.txt spells.txt items.txt species.txt ability.txt branches.txt cards.txt tutorial.txt status.txt help.txt FAQ.txt clouds.txt items.txt help.txt backgrounds.txt [ Closes #3069 ] -------------------------------------------------------------------------------- 8da0834b8c | Skrybe | 2023-04-16 00:29:24 -0700 feat: edit layout_misc_corridors in Lair (#2898) Make layout_misc_corridors sometimes use boxy=false when in Lair. This provides a more "natural" look than the square rooms it generates otherwise, and works well with Lair ruination. As a bonus, it also creates more crevices for the player to hide in. -------------------------------------------------------------------------------- 3629b4d965 | Perry Fraser | 2023-04-16 00:09:02 -0700 feat: show attack strength punctuation for instakills (#2793) Seeing lots of !!!!!s is fun. Let's make Grand Finale's and MCC's messages print some out for however much HP the monster you killed had. -------------------------------------------------------------------------------- f40d3337c5 | Monkooky | 2023-04-16 00:07:40 -0700 fix: Rift reach assumptions in some edge cases Rift breaks the assumption that the only number besides two is one. This fixes that. However, it still makes the assumption that the only REACH enums are just an int with a fancy title. This will break spectacularly if a weapon is ever given a reach that isn't just a number. Closes #2683 -------------------------------------------------------------------------------- a3c4068687 | pdpol | 2023-04-15 23:30:27 -0700 feat: better explain some travel failures and stops [ Committer's note: revised to also handle terrain; switched to a vector passed by reference instead of a map passed as a pointer. Closes #2627 ] -------------------------------------------------------------------------------- 990a428a5c | Edgar A. Bering IV | 2023-04-15 13:05:23 -0700 feat: give a few more monsters spectral weapons Adding it to the Klown brand list (ha!) and Spriggan Druids (wood spirits of their quarterstaves!). -------------------------------------------------------------------------------- ae7cc47792 | Edgar A. Bering IV | 2023-04-15 13:05:23 -0700 feat: give Asterion back his spectral weapon You dropped this, king. -------------------------------------------------------------------------------- 3f05228d59 | Edgar A. Bering IV | 2023-04-15 13:05:23 -0700 feat: implement monster spectral weapons The spectral brand's implementation, at this point, is easy to give back to monsters, and in its latest iteration should be an impactful brand for monsters to have, adding positional effects to certain foes. Lightli pointed out the edge case of a dual wielding monster with two spectral weapons. Currently only one spectral weapon remains visible at the end of the round, but both attack correctly. Supporting some monsters having two spectral weapons is a significant code cost for such a small edge case. -------------------------------------------------------------------------------- 70414cbcbb | Kate | 2023-04-14 21:01:16 +0100 Tweak Makhleb destruction zap handling Use dummy spells for the beams when using Makhleb's destruction abilities. This fixes them triggering Majin-Bo vampirisism if a player-castable spell is rolled. It also gives them a fixed noise level (3 for Minor Destruction, and 7 for Major Destruction) instead of noise depending on the zap, which is probably fine. -------------------------------------------------------------------------------- 9528432f70 | Kate | 2023-04-14 21:01:16 +0100 Clear beam noise after firing a tracer Fixes Makhleb's destruction abilities having their loudness calculated as if the player were firing the level 7 spell Debugging Ray. -------------------------------------------------------------------------------- 2aef359875 | Kate | 2023-04-14 21:01:16 +0100 Fix some damage spells not working with Majin-Bo (#3083) Fixes Arcjolt, LRD explosions, Ignite Poison, and the direct damage portion of OTR not being able to trigger Majin-Bo vampirism. Closes #3083. -------------------------------------------------------------------------------- 8898057555 | Nicholas Feinberg | 2023-04-14 11:52:29 -0700 Special-case Armataur skill titles (Ge0ff) Trivia: this affects only two titles at present, both quite rare. But some things are important (????) -------------------------------------------------------------------------------- 395767de6d | Nicholas Feinberg | 2023-04-14 11:52:29 -0700 Cut monks' starting stealth (Ge0ff) Since they start with an orb of light now, so the stealth doesn't do much. This could be thought of as belated comp for the orb of light buff. -------------------------------------------------------------------------------- 6b489f61ca | Nicholas Feinberg | 2023-04-14 11:52:29 -0700 Let Xom feed the player !attract (Lici) That's a 'good' potion effect, right? -------------------------------------------------------------------------------- afbe198592 | nicolae-carpathia | 2023-04-14 14:43:09 -0400 Add some new shops to shops.des (#3080) * Add some new shops to shops.des nicolae, making shop vaults? How surprising! Most of these are simple generic shop vaults, intended to help increase the amount of simple, non-gimmicky shops to increase variety a little. Also increase the weight on the very basic "shop" vault, so that simple one-tile shops get a little more representation. There are also a couple of multi-shop vaults. I told myself I was just going to stick to simple, non-themed vaults, with no specially-defined inventories, but during a discussion where memes of antiquity came up, I was inspired. (And then after I broke the "only simple vaults" rule, I was inspired again, this time by one of my other shops.) -------------------------------------------------------------------------------- cd70e7a56d | Nicholas Feinberg | 2023-04-13 17:40:30 -0700 Fix: allow generating multiple zigfigs Also quad damage, etc. Oops! -------------------------------------------------------------------------------- 5db6f66fbb | Nicholas Feinberg | 2023-04-12 22:12:14 -0700 Make elemental evokers unique Only generate at most one of any given evoker type in any game, since duplicates are useless and feel bad. (They're replaced with random wands.) This probably breaks some themed vaults a bit. Sorry. This code is a little scary and I hope it works. -------------------------------------------------------------------------------- 1ebda0b27c | Nicholas Feinberg | 2023-04-12 21:48:41 -0700 Fix the build? -------------------------------------------------------------------------------- 3b6d188ad2 | Nicholas Feinberg | 2023-04-12 21:23:06 -0700 Fix misc item sets (acrobat) This wasn't actually implemented in 884ff3d523091af0892. -------------------------------------------------------------------------------- 26e8ee2fb7 | Nicholas Feinberg | 2023-04-12 19:47:28 -0700 New loading screen (benadryl) -------------------------------------------------------------------------------- d49b78fada | Kate | 2023-04-12 22:53:53 +0100 Fix a pain bond + constriction crash If a summoned monster was pain bonded to its summoner and caused the summoner to die by taking constriction damage, it would cause a crash. -------------------------------------------------------------------------------- 6f554f940f | Nicholas Feinberg | 2023-04-12 14:41:37 -0700 Fix: bring rampage out of the dark (nlavsky) -------------------------------------------------------------------------------- 85a4f8702b | Nicholas Feinberg | 2023-04-12 14:19:57 -0700 Fix: make northwest tentacles stop rampaging (nlavsky) Re-used enum, oops. -------------------------------------------------------------------------------- 1dbc053f64 | Nikolai Lavsky | 2023-04-12 14:57:59 +0300 fix: clean up obsolete force_mores and message colouring Several default force_mores and colouring rules can be removed: * throwing weapons no longer fail to return (ba011c803) * armour and shields don't have to-hit penalties (4f6bc678f) * nimble evasion is gone (b865740ec) * three Nemelex-related messages have ceased to be as well (7ca12cd97) * storm clouds generate less message spam now (daa8bd6ff) -------------------------------------------------------------------------------- 63dfefce0d | Nicholas Feinberg | 2023-04-11 22:21:04 -0700 Fix: make confusing touch work with launchers (sfogarty) Don't autoshoot if confusing touch is on. This is silly! -------------------------------------------------------------------------------- f68c81a09d | Implojin | 2023-04-12 00:08:43 -0500 Merge pull request #3044 from Implojin/victory-meld fix: a few victory bugs -------------------------------------------------------------------------------- 39c850d269 | Implojin | 2023-04-11 23:33:07 -0500 fix: unrand Victory stat reset bugs This commit fixes several cases where Victory was improperly resetting its stats. Sometimes they were being reset incorrectly (e.g. if the player was involuntarily hit with /polymorph, or cancelled a scroll read at a prompt), sometimes they were failing to reset (e.g. if the player drank a potion while in treeform or spiderform). Most of these bugs were related to improper meld handling; this commit has fixed all such cases that I'm aware of. Any conduct-violating use of potions or scrolls while melded should now cause Victory to reset its stats as soon as your body armour is no longer melded. (RIP Victory meld techs, we hardly knew ye.) -------------------------------------------------------------------------------- 27bf465a7b | Nicholas Feinberg | 2023-04-11 20:22:50 -0700 Ban demon weapons of holy wrath (#2913, acrobat) This reverts commit 0ee6a06047e57c82ddb8123da0993e77481f9919. Resolves #2913. -------------------------------------------------------------------------------- 0e3bda2066 | Nicholas Feinberg | 2023-04-11 18:36:58 -0700 Experimental: give monks an orb of light There are two thoughts behind this change: 1. A background that starts with an orb of light might feel feel interestingly different, insofar as high-EV and invisible enemies become substantially less threatening with light held. 2. Monks are a bit weak (as backgrounds go), and light feels sufficiently 'divine' to fit with their theme. I'm a bit worried that light has too much staying power for a starting item - starting items should generally be replaced or obsolete at some point, but I can easily see some characters keeping an orb of light all game. That reduces variety when playing these backgrounds. But this is cheap and easy to revert, so let's try it! -------------------------------------------------------------------------------- 7dd7712201 | Nikolai Lavsky | 2023-04-12 03:39:23 +0300 fix: a default force_more, again (advil) Properly escape a comma in a force_more message. Also, fix highlighting for a Formicid-specific warning. -------------------------------------------------------------------------------- f4b2b2f793 | Nicholas Feinberg | 2023-04-11 15:15:15 -0700 Fix: mark a method static (Aliscans) -------------------------------------------------------------------------------- 7dea3e163d | Nikolai Lavsky | 2023-04-11 23:48:54 +0300 fix: don't stop for every "deal" As a side effect of dd4664df, each message containing a "deal" triggers a force more. This includes a couple of Donald lines and Finesse's activation message. -------------------------------------------------------------------------------- 0ee6a06047 | Nicholas Feinberg | 2023-04-11 13:44:15 -0700 Fix: no demon whip angels (#2913, acrobat) 'any weapon ego:holy_wrath' is a bit too spicy. -------------------------------------------------------------------------------- 17dd5e2ed6 | Nicholas Feinberg | 2023-04-11 13:39:46 -0700 Fix: randart holy weapon brands (#2913, acrobat) No more heavy eudemon blades! -------------------------------------------------------------------------------- e24dbf0a4b | Nicholas Feinberg | 2023-04-11 13:27:27 -0700 Disable wretched torpor (Sergey) Feels rude for Kiku's Unearth Wretches to slow you by bringing out a torpor snail. Turn off their slow aura while they die. -------------------------------------------------------------------------------- aad5e1864e | Nicholas Feinberg | 2023-04-11 13:22:54 -0700 Tweak reflection wording Try to make it clearer that reflection happens after a block - that is, that reflection doesn't give an extra chance to block. -------------------------------------------------------------------------------- 221ef3b968 | Nicholas Feinberg | 2023-04-11 10:06:51 -0700 Revert "Revert "Add indicator for rampage"" Bring back rampage, but this time cache it at the start of the player's turn. This reverts commit 42e074c17a0a78aebd7c1a0ff5bb393d75035f2b. -------------------------------------------------------------------------------- bd8d5ba0ad | Nicholas Feinberg | 2023-04-10 22:09:36 -0700 Fix: no out-of-range ripostes on block (#3066) Don't riposte when blocking an attack from an enemy who is out of reach of your weapon. Closes #3066. -------------------------------------------------------------------------------- c344ba3439 | Nicholas Feinberg | 2023-04-10 21:32:34 -0700 Fix: make stasis block Vhi's I'm sorry, FoWr ;_; Breaks my heart to do this, but the logic is inescapable. -------------------------------------------------------------------------------- dd4664df13 | Nicholas Feinberg | 2023-04-10 16:10:18 -0700 Clarify Nemelex too many cards messages This confused people. -------------------------------------------------------------------------------- 2766ea1e55 | Kate | 2023-04-09 21:46:30 +0100 Fix new unrand names in vaults -------------------------------------------------------------------------------- 6a089771f7 | Kate | 2023-04-09 19:28:18 +0100 Shorten a welcome message The max length for welcome messages is 79 characters rather than 80, since the message area has a leading space. -------------------------------------------------------------------------------- 46ad940590 | Kate | 2023-04-09 19:28:18 +0100 Adjust spacing for unrand DBRAND/DESCRIP entries Fix many unrand descriptions to have consistent spacing in their descriptions (adjusting wording in a few cases). A small number of unrands still have long inscription entries that result in inconsistent spacing in their descriptions (Throatcutter, Frostbite, skin of Zhor, robe of Vines, Kryia's mail coat, Lochaber axe). Not the end of the world, but it would be nice to be consistent here and shorten their inscriptions. The Singing Sword, autumn katana, dragonskin cloak and sceptre of Asmodeus also have too-long inscription entries but since they only have one line it doesn't end up being noticeable. -------------------------------------------------------------------------------- 6cb29be199 | Kate | 2023-04-09 19:28:18 +0100 Rework the sceptre of Asmodeus As with the sceptre of Torment, make its base weapon type an eveningstar so that it's a bit more usable as a melee weapon. Instead of a brand, give it an extra-high enchantment, and reduce Asmodeus's base damage to compensate for the better weapon. In addition, turn its activated ability into a passive one of summoning fiery demons on hit. It would be nice to come up with a more substantial rework as it probably still remains the least exciting of the Hell/Pan lord unrands, but making it usable in melee is hopefully a start! -------------------------------------------------------------------------------- 8a7cdbe7ec | Kate | 2023-04-09 19:28:18 +0100 Give the Majin-Bo a custom base type As with the other staff unrands, adjust it to be more appropriate for its slot, making it more useful as a melee weapon by giving it a custom base type. It keeps its one-handedness and ends up with 11 base damage, +1 base accuracy, and 1.2 base delay (the same damage as a demon whip but with 0.1 higher base and min delay). -------------------------------------------------------------------------------- 46c7c7d458 | Kate | 2023-04-09 19:28:18 +0100 Reduce the Elemental Staff's resistances Reduce the excessive amount of resistances and AC it provides to push the emphasis slightly more towards it being a melee weapon for hitting things with. -------------------------------------------------------------------------------- def3eea6ad | Kate | 2023-04-09 19:28:18 +0100 Convert the staves of Wucad Mu and Battle to orbs They existed as unrand staves with powerful passive effects but no meaningful use as actual melee weapons (the staff of Battle triggering battlesphere shots on hit doesn't really help enough to qualify it). As with the staff of Dispater, turn them into orbs instead where they are no longer freely swappable but can have a strong passive effect in exchange for giving up the shield slot. -------------------------------------------------------------------------------- 60ff8d5f49 | Nicholas Feinberg | 2023-04-08 21:25:57 -0700 De-brand cerulean imp spears (Ge0ff) Don't encourage scumming for the legendary 'distortion imp'... -------------------------------------------------------------------------------- acf32f4bd3 | advil | 2023-04-08 10:51:59 -0400 fix: add a slow IO check Also, this includes some commented debug code -- the reason for this is that I am trying to avoid (yet) having async syntax in any code until I am sure of all webtiles server versions; so these comments are a placeholder until these calls can be added. -------------------------------------------------------------------------------- 5ad7410663 | advil | 2023-04-08 10:42:21 -0400 fix: remove some broken metaprogramming code This was a nice idea, but it turns out this just sets the qualname of the superclass `_execute` function 6 times. -------------------------------------------------------------------------------- df59a09ada | advil | 2023-04-08 10:27:17 -0400 fix: throttle some webtiles error spam When the server gets into a bad state and the socket buffers start to get filled up, on recovery it often emits a very large number of logged warnings in `on_message` (usually just many "Socket buffer full" messages). This itself can be pretty IO intensive. This commit suppresses all but the first one in a sequence of errors. Also, hide a common harmless warning that can happen on a disconnect. -------------------------------------------------------------------------------- 28734493ed | advil | 2023-04-08 09:59:13 -0400 docs: clarify `reduce_animations` docs -------------------------------------------------------------------------------- 4880f5d053 | advil | 2023-04-08 09:45:11 -0400 fix: add some explicit tornado.gen imports These aren't needed locally on current tornado, but maybe they'll fix CI errors... -------------------------------------------------------------------------------- de56bdc4b3 | advil | 2023-04-08 09:43:11 -0400 fix: missing yield -------------------------------------------------------------------------------- 90bcbe0892 | advil | 2023-04-08 09:09:38 -0400 feat: use aiofiles for webtile status file writing if available This is somewhat experimental. Basically this package does threaded file IO so as not to block the event loop, which is our current biggest source of blocking on (non-CAO) servers; currently used only for one specific case (status file writing). If this works ok I would probably expand it to be used for ttyrec writing (more technically involved than this) and milestone tailing. -------------------------------------------------------------------------------- 38d5fb2972 | advil | 2023-04-07 10:27:02 -0400 feat: add a restful endpoint for server version I think this should be fine to expose publicly (it was previously visible in the admin panel). This information is tremendously useful to the subset of the dev team that deals with server issues, but previously it's been hard to get. Note that the crawl version string printed here is *not* a game version per se: it's the version string for what the webtiles server is running. It would probably be nice to eventually provide a similar endpoint to get available game versions (which should be doable via the load_games data) but that's not what this does. -------------------------------------------------------------------------------- d2d399bf01 | robertxgray | 2023-04-07 09:52:30 +0200 Android: Fix crash logs when the activity is paused The game is saved whenever the Android activity is paused to avoid loss of progress. However, it is not safe to use the save function without a current game. We are also returning to the launcher on exit because it feels more natural on this platform. -------------------------------------------------------------------------------- b3d0e9abb2 | robertxgray | 2023-04-07 09:52:30 +0200 Android transparent keyboard: reduce contrast The transparent keyboard looks less intrusive with gray borders. -------------------------------------------------------------------------------- 6a87d810ed | robertxgray | 2023-04-07 09:52:30 +0200 Configurable Android version code ANDROID build variable is no longer a simple boolean, now it can be used to set the Android version code in the Gradle scripts. -------------------------------------------------------------------------------- c47655710c | robertxgray | 2023-04-07 09:52:30 +0200 Configure Android port to target SDK level 33 This is required by Google Play starting in August 2023. https://developer.android.com/google/play/requirements/target-sdk -------------------------------------------------------------------------------- 911dee593f | robertxgray | 2023-04-07 09:52:30 +0200 Review the font sizes for Android Text size is probably the biggest issue in the Android port. I made test again and sadly the crt font cannot be increased without breaking the menus. However, there's a tiny room for improvements: - Increase the font size in the message area. - Remove the custom settings for 960px screens, use 480x2 instead. - Minor adjustements in the launcher. -------------------------------------------------------------------------------- b985b96186 | robertxgray | 2023-04-07 09:52:30 +0200 Configurable keyboard size for Android Adds a keyboard size option to the launcher with the value translated to dp. It only affects the height because we are already using all the width available. -------------------------------------------------------------------------------- e65b671529 | robertxgray | 2023-04-07 09:52:30 +0200 Extra keyboard for Android There's a new option to enable a small, transparent keyboard that can be placed on any corner. It includes only directional keys but more can be added in the future by popular demand. -------------------------------------------------------------------------------- 3d8fdb39a3 | robertxgray | 2023-04-07 09:52:30 +0200 Minor Android fixes - Fix crash when the morgue is empty. - Incluide a missing drawable in the repository. -------------------------------------------------------------------------------- ebc706044b | robertxgray | 2023-04-07 09:52:30 +0200 Multiple keyboard options for Android We can use the launcher to chose among 4 different keyboard options. - Classic keyboard. Same as before. - Transparent keyboard. Classic keyboard with transparent background covering the game screen. - Android keyboard. Whatever keyboard the user has configured on the device by default. - No keyboard. You can disable the virtual keyboard if a hardware keyboard is available. -------------------------------------------------------------------------------- 7cd38bc08a | robertxgray | 2023-04-07 09:52:30 +0200 Use slide animations for Android activity transitions -------------------------------------------------------------------------------- 3a57277134 | robertxgray | 2023-04-07 09:52:30 +0200 The morgue viewer for Android can download files Files are copied to a destination chosen by the user using the Storage Access Framework. Because the user is involved in selecting the files, this mechanism doesn't require any system permissions. This feature is not compatible and therefore disabled on devices older than Android 4.4. -------------------------------------------------------------------------------- 7472ba6d35 | robertxgray | 2023-04-07 09:52:30 +0200 Morgue viewer for Android The morgue viewer shows the list of files in the morgue directory. The files can be sorted by name or date. Clicking on a file opens the file viewer. -------------------------------------------------------------------------------- 7fbccd47fd | robertxgray | 2023-04-07 09:52:30 +0200 Init file editor for Android It features a simple text editor and a viewer that can load both files and assets. The viewer is used to display the Options Guide. -------------------------------------------------------------------------------- 71c1ce726e | robertxgray | 2023-04-07 09:52:30 +0200 Better support for Android API<21 - Load the native libraries in reverse dependency order. - Use the AppCompat library to fix the button colours. - Replace the symbol for the backspace key. -------------------------------------------------------------------------------- 50b06d295b | robertxgray | 2023-04-07 09:52:30 +0200 Create a launcher activity for Android Base launcher that only starts the game. More features will be added in the future. -------------------------------------------------------------------------------- f9f9d0231b | robertxgray | 2023-04-07 09:52:30 +0200 Use common image resources in the Android project The Makefile copies the needed resources to: - android-project/app/src/main/res/drawable -------------------------------------------------------------------------------- 25214051b3 | Nicholas Feinberg | 2023-04-06 21:58:03 -0700 Rework Call Imp Call Imp is one of the least popular starting spells in Crawl (a position for which there is some stiff competition!). There are two major reasons for this: 1. The variance in quality between different imps encourage repeatedly re-casting the spell before fights to get the 'best' imp. This is not a lot of fun. 2. Crimson imps are very frustrating to work with. Their tendency to blink around, while delightfully impish, means that they waste a ton of time. This is not the most enjoyable balance mechanism. Also, it doesn't meaningfully scale with spellpower. Players don't care that much about this, but it's not great. So let's try mixing things up. Call Imp now always summons one type of imp, the brand-new, shiny Cerulean Imp. Cerulean imps come with a little spear, perfect for hanging out behind you or your buds and stabbing gnolls with. The spear starts at -4, and scales up to +1 at max power. Also, max power is now 50 (was 100), matching other L2s. This might be wildly overpowered! Let's see how it goes. -------------------------------------------------------------------------------- e495a94dc4 | Nicholas Feinberg | 2023-04-06 21:57:43 -0700 New monster: cerulean imp As crimson imps are to fire, white imps are to ice, and iron imps are to earth, so are cerulean imps to the air. They move fast, carry spears, and are not currently used anywhere. More to come. -------------------------------------------------------------------------------- fb0d676c02 | Nicholas Feinberg | 2023-04-05 21:55:11 -0700 Fix friendly fire Broken in abb061897f7b570d6fe8f0abf22fc0f8a34d7bbc. -------------------------------------------------------------------------------- ecba963dcd | Nicholas Feinberg | 2023-04-05 15:31:55 -0700 Randart dragon scale tiles (Sastreii) -------------------------------------------------------------------------------- 3371b13838 | Nicholas Feinberg | 2023-04-05 13:38:58 -0700 Show AFF_YES for plasma beams with certain targets -------------------------------------------------------------------------------- de262b677f | Nicholas Feinberg | 2023-04-05 13:38:58 -0700 Fix plasma beam targeter display Should show the full line that beams can travel to hit targets. -------------------------------------------------------------------------------- 6f0cfe7724 | Medrano83 | 2023-04-05 16:51:25 +0200 Merge pull request #3067 from robertxgray/hotfix/debian_fonts Three fixes for release CI workflows -------------------------------------------------------------------------------- 30c9307041 | Nicholas Feinberg | 2023-04-04 23:02:22 -0700 Fix corruption FX Broken by 9fa57824fd46 (2012!), which caused terrain retiling to be wiped out on load. Now that nice corruption should stick around even after you come back to the game :) -------------------------------------------------------------------------------- e7fda06224 | Nicholas Feinberg | 2023-04-04 22:37:58 -0700 Add a little corruption around banished creatures Recolor walls & floors. Seems cool! -------------------------------------------------------------------------------- 5d778dfbfc | Nicholas Feinberg | 2023-04-04 22:18:05 -0700 Slightly buff chain mail Encourage use of it a little more. Move EVP to 14 (from 15) and give it a chance at ponderousness. Goal is to encourage early-mid use of chain a little more. -------------------------------------------------------------------------------- 29429fb7b5 | Nicholas Feinberg | 2023-04-04 22:06:38 -0700 Slightly reduce Scorch's power scaling It's juust a trifle strong. Take it from max power 2d10 to 2d9. (0-power scorch is still 2d5.) -------------------------------------------------------------------------------- be57942821 | Nicholas Feinberg | 2023-04-04 22:04:30 -0700 Kindle Blastsparks -> Volatile Blastmotes A few changes: - Move it from Fire/Air/Tloc to Fire/Tloc. Three schools was a tough sell for what the spell offered, it's a bit tricky to make more powerful (since increasing damage sometimes makes it worse), FE already has enough schools to train, and Plasma Beam now covers the Fire/Air 'niche'. - Rename it to Volatile Blastmotes. People dislike kindling. I don't know why. Sparks aren't as relevant now that it's not an Air spell. (Tile colors are a little unfortunate but oh well.) - Shufflle around some books. Remove the book of Maledictions. -------------------------------------------------------------------------------- e6d4a54d57 | Nicholas Feinberg | 2023-04-04 16:48:41 -0700 Remove Summon Demon and Summon Elemental (Ge0ff) From the manual. Cont'd from eb620a33452e (2020) and f6694988d3990 (2014). -------------------------------------------------------------------------------- a41ad49a19 | Nicholas Feinberg | 2023-04-04 12:57:04 -0700 Add orb randart tiles (Sastreii) -------------------------------------------------------------------------------- eadee89a7f | Nicholas Feinberg | 2023-04-04 12:57:04 -0700 Make swamp and fire dragons more distinct (Sastreii) Partially for colorblind friendliness. -------------------------------------------------------------------------------- a5943265da | advil | 2023-04-04 09:48:35 -0400 feat: add a timeout to tileschat /kick This makes this feature a bit more useful. The timeout is not saved across sessions so this is more of a quick solution to some chat issue than anything. -------------------------------------------------------------------------------- bbea71524b | advil | 2023-04-04 09:48:35 -0400 fix: don't log blocklist restores This is sort of useful for seeing who is blocked, but it also fills the logs with annoying usernames, so remove it. Admins can get this info by looking at the db, and blocks themselves are still logged. -------------------------------------------------------------------------------- 46802780a4 | advil | 2023-04-04 09:48:35 -0400 fix: explicitly handle a socket closed case The `write_message` call that this is wrapping is not actually guaranteed to be async, so we need to duplicate the exception handling code for the case where a socket is closed during a write. -------------------------------------------------------------------------------- a14d1daa06 | advil | 2023-04-04 09:48:35 -0400 fix: prevent a (harmless?) exception in webtiles Recent changes make it more typical to send the lobby in an async fashion, but that means (I think) that the `send_lobby_html` can occasionally get sequenced after a close call, if a connection opens and closes immediately for example. This is resulting in a Tornado exception that is not very informative on the `render_string` call. This changes adds an early return for the call that would crash. -------------------------------------------------------------------------------- a6910c8ee8 | Nicholas Feinberg | 2023-04-03 22:34:35 -0700 Make Plasma Beam work with spellforged servitor Seems extremely cool :) This code scares me but I think it works? -------------------------------------------------------------------------------- abb061897f | Nicholas Feinberg | 2023-04-03 22:34:31 -0700 Extract beam::good_to_fire() It's a surprise tool that will help us later. -------------------------------------------------------------------------------- 6562478734 | Nicholas Feinberg | 2023-04-03 22:07:25 -0700 Re-buff Plasma Beam to level 6 (acrobat) Revert the damage nerf to Plasma Beam and move it up to spell level 6. This should hopefully make it long-term useful for more characters and encourage more interesting skilling choices by more strongly encouraging investing in both air and fire to get it castable. This reverts commit 5f1da4a474525568f6a61c8a6c006e096d86d7e4. -------------------------------------------------------------------------------- 7debd8f65e | Nicholas Feinberg | 2023-04-03 22:02:04 -0700 Shuffle Plasma Beam's books around It should really be in both a fire book and an air book, not just two air books. -------------------------------------------------------------------------------- 5d9b765f9c | Nicholas Feinberg | 2023-04-03 21:59:12 -0700 Don't make plasma beam leak invisible mons (acrobat) -------------------------------------------------------------------------------- f34089d22e | Nicholas Feinberg | 2023-04-03 21:54:05 -0700 Reduce ranged weapon noise From 7 to 5. This should make them a bit less noisome early game. -------------------------------------------------------------------------------- 99b7bfc59d | Nicholas Feinberg | 2023-04-03 21:52:31 -0700 Rework out-of-LOS ranged weapon noises Be explicit about which weapon makes which noise, more or less. Don't make people memorize that a whirr is a sling or whatever. Be very silly about triple crossbows. They're a silly weapon. -------------------------------------------------------------------------------- 0d87f670db | Nicholas Feinberg | 2023-04-01 21:30:39 -0700 Buff orbs of energy & Wucad Mu further After discussion and consideration, move the refund chance for orbs of energy from 1/6 to 1/5. (Wucad Mu's chance is double orbs'.) The old numbers were a little too conservative; these numbers might be conservative too, but I'm worried about pushing Wucad Mu too far. -------------------------------------------------------------------------------- 44278198b4 | patrick | 2023-04-01 21:09:27 -0400 Update an artefact shop for the new reality Add magical staves to the Antique Artefacts shop, because they can be artefacts now. -------------------------------------------------------------------------------- 8e3194618a | Implojin | 2023-04-01 19:17:43 -0500 docs: update crawl-dev log urls -------------------------------------------------------------------------------- 7f2e898f52 | Nicholas Feinberg | 2023-03-31 21:51:58 -0700 Update the changelog -------------------------------------------------------------------------------- 0638232e92 | Nicholas Feinberg | 2023-03-31 16:17:51 -0700 Fix: minor issue with ogre tile colors (Sastreii) -------------------------------------------------------------------------------- 4aa63f3706 | patrick | 2023-03-31 19:04:16 -0400 Fix compressed_dpeg_circular_temple again (Sentei) -------------------------------------------------------------------------------- f56873caf1 | Medrano83 | 2023-04-01 00:58:26 +0200 Fix GitHub Actions output parameters An error was introduced when migrating from the obsolete set-output commands in 94e0f26. -------------------------------------------------------------------------------- 28e3bdbff4 | Medrano83 | 2023-04-01 00:13:43 +0200 Fix AppImage builds The GitHub Actions Runner no longer provides FUSE 2 by default. Ref: https://github.com/AppImage/AppImageKit/wiki/FUSE -------------------------------------------------------------------------------- 8c6280c012 | Medrano83 | 2023-04-01 00:13:43 +0200 Fix hardcoded font paths in Debian packages Use fontconfig to find the DejaVuSans ttf resources. This is the same solution used in the Fedora packages. Closes #1344 -------------------------------------------------------------------------------- 7e3032bf44 | Nicholas Feinberg | 2023-03-31 13:14:16 -0700 Log errors with buggy UIs To make debugging easier. -------------------------------------------------------------------------------- 745981c80b | Nicholas Feinberg | 2023-03-31 13:12:34 -0700 Fix Dith webtiles UI You can transform into a swirling mass of shadows.(9 HP, Piety---, Max HP drain) The above description was too long after "Piety" turned into "Piety---", meaning that our regexp for god powers broke, meaning that we got a 'buggy UI of type describe-god' error. 'Fix' this by shortening the way we describe HP drain in ability costs, matching how we refer to Drain elsewhere. This is a bit fragile :) -------------------------------------------------------------------------------- a366339e96 | Nicholas Feinberg | 2023-03-31 12:58:15 -0700 Remove gauntlet shapeshifters (CarefulOdds) Without any sort of time pressure or ability for shapeshifters to come after you, it's too easy to just wait until they change into an easy form before entering their arena. -------------------------------------------------------------------------------- 89a915e538 | Nicholas Feinberg | 2023-03-31 12:29:12 -0700 Welcome Implojin to the devteam! 🎊 -------------------------------------------------------------------------------- adcbbbcd72 | Nicholas Feinberg | 2023-03-31 12:23:58 -0700 Initialize explore mode in webtiles -------------------------------------------------------------------------------- a022fb42d2 | Kate | 2023-03-31 18:49:19 +0100 Fix a targeting check for Plasma Beam (#3057) Let fire-immune monsters be considered valid targets, as long as they're not also electricity-immune. Closes #3057. -------------------------------------------------------------------------------- c60b083988 | Kate | 2023-03-31 18:49:19 +0100 Fix a killer klown message (#3060) Closes #3060. -------------------------------------------------------------------------------- 8c80f4669f | Nicholas Feinberg | 2023-03-31 10:15:45 -0700 Underscore a fix (nicolae) Sigh. -------------------------------------------------------------------------------- 2ae22b6899 | advil | 2023-03-31 09:06:29 -0400 fix: a variable capture bug in block/kick Lambdas only do lexical capture by default, resulting in a hilarious set of bugs in this code that I didn't initially catch. Use default values for these lambdas to capture by value, per: https://docs.python.org/3/faq/programming.html#why-do-lambdas-defined-in-a-loop- with-different-values-all-return-the-same-result -------------------------------------------------------------------------------- 2ab08093c7 | advil | 2023-03-31 08:18:13 -0400 feat: convert webtiles muting to blocking This commit converts the existing mute feature into much more absolute control over webtiles chat for players. A player can now block specific spectators from their games, block anon spectators (`/block [anon]`), and disable spectating altogether (`/block [all]`). It didn't seem necessary to have both features, so I've just reused existing code and db tables and changed the chat commands + behavior. Existing mutelists are converted to blocklists. * chat commands aren't renamed, and so the old ones don't work * the underlying db table isn't renamed, it's a pain to do * admin users can't be blocked * I added a /kick command that doesn't block -------------------------------------------------------------------------------- 497892bb89 | advil | 2023-03-31 08:18:13 -0400 fix: tweak some default status file behavior Possibly this shouldn't write on start/stop at all, but if it's going to, make the call async. Also tweak the default value for how often this is to write (5s is excessive I think). -------------------------------------------------------------------------------- f3ab3527aa | Nicholas Feinberg | 2023-03-30 21:19:11 -0700 Hopefully fix a book name, again Added in 93115170b90, half-fixed in 36a728ae673. -------------------------------------------------------------------------------- faedca33fd | Nicholas Feinberg | 2023-03-30 21:17:20 -0700 Maybe fix a cloud crash And rearrange a var to be initialized closer to where it's used. -------------------------------------------------------------------------------- b7c98f8d04 | Nicholas Feinberg | 2023-03-30 21:08:47 -0700 Show explore mode in the webtiles HUD Matching local tiles & wizmode. -------------------------------------------------------------------------------- b3db690511 | Nicholas Feinberg | 2023-03-30 20:15:34 -0700 Fix Wucad Mu's description The DESCRIP was out of sync with the item description. -------------------------------------------------------------------------------- 45e4c8609a | Nicholas Feinberg | 2023-03-30 20:12:30 -0700 Add a few hoppy new tiles (Sastreii) Prince Ribbit, cane toad and blink frog. -------------------------------------------------------------------------------- 9b59a09336 | Nicholas Feinberg | 2023-03-30 10:17:43 -0700 Fix the mailmap Oops! -------------------------------------------------------------------------------- 38647d8619 | Nicholas Feinberg | 2023-03-30 10:15:56 -0700 Welcome Félix Medrano to the devteam! -------------------------------------------------------------------------------- 42e074c17a | Kyle Rawlins | 2023-03-30 10:56:35 -0400 Revert "Add indicator for rampage" This is apparently crashing This reverts commit f9081046c1c5e1a7278961f3c865d7dbffa71ba7. -------------------------------------------------------------------------------- d452b5e7fa | Zhang Kai | 2023-03-29 22:52:39 -0700 Update ZH translation Resolves #3062. -------------------------------------------------------------------------------- 08c09530be | Nicholas Feinberg | 2023-03-29 22:48:57 -0700 Remove lava orcs (visually) Cut some code that's been obsolete since f1e20021f53d (2017). -------------------------------------------------------------------------------- f9081046c1 | Monkooky | 2023-03-29 22:43:53 -0700 Add indicator for rampage Adds an icon indicating which directions will trigger a rampage. Closes #2911. [Committer's note: some reformatting, fixed bugs, replaced icon, added webtiles support, removed option pending complaints.] -------------------------------------------------------------------------------- b9aa53057d | Nicholas Feinberg | 2023-03-29 16:03:26 -0700 Remove choko piety (CarefulOdds) Show piety cost pips for applicable abilities to despoiler em a bit and make it easier to tell how much stuff really costs. (On average.) -------------------------------------------------------------------------------- 2b4189239c | Nicholas Feinberg | 2023-03-29 16:03:26 -0700 Remove abilflag::piety Unused since the removal of Injury Mirror (b4513a33dfc25, 2021). -------------------------------------------------------------------------------- 3818848631 | Kate | 2023-03-29 22:06:26 +0100 Update new dev checklist -------------------------------------------------------------------------------- 327ade24ea | Nicholas Feinberg | 2023-03-29 13:40:04 -0700 Fix a visual bug with Ignis abandon (Undo) Redraw your AC after you lose Fiery Armour. -------------------------------------------------------------------------------- e39c426379 | Nicholas Feinberg | 2023-03-29 10:01:46 -0700 Channeling tweaks and fixes (acrobat, kate) Make Wucad Mu's -Wiz penalty match orb of energy's (rather than being double it), and fix all miscasts getting refunded regardless of whether channeling is held. -------------------------------------------------------------------------------- cec3b41aec | Nicholas Feinberg | 2023-03-28 22:28:20 -0700 Re-re-rework channeling Continuing from 08fbeb92c1a1, b207118a1a4a, and 17eb6287541f, this once again revamps orbs of energy and the staff of Wucad Mu. They're much simpler now. Both give a chance of refunding spells - 1/6 for orbs of energy, 1/3 for Wucad Mu, 100% for miscasts regardless. However, they apply a -Wiz penalty - orbs of energy give the equivalent penalty to 2.5 levels of wild magic, and Wucad Mu again gives twice that. For simplicity, the interaction with Evocations has been removed. (It's nice for Evocations to be mainly useful for active effects, anyway.) In the case of orbs of energy, this is intended to be a tradeoff vs shields, since both apply a success penalty to your spells. Orbs of energy give more killpower, but of course no defenses. With Wucad Mu, you trade a spell enhancer and spell success for quite a lot of MP. Let's try this out. -------------------------------------------------------------------------------- 03d3dc51d9 | Nicholas Feinberg | 2023-03-28 20:29:39 -0700 Differentiate crossbows and longbows (acrobat, sentei) Continuing from 9b1cab27183d4e, continuing from 2f8d10eca674, decrease arbalest base damage by 1. This makes arbalests (slightly) better* than longbows until Ranged Weapons 6, after which longbows pull away and eventually do ~16% more damage per aut. This should hopefully make longbows feel a bit more exciting and differentiate them more from arbalests. Decrease hand crossbow base damage by 1 to keep it lower than arbalests'. Arbalests still do 25-40% more damage than shortbows (depending on sklevel). *With 0 enchantment, no brand, zero slaying, and against a 0 AC enemy. -------------------------------------------------------------------------------- cf5f444c16 | Nicholas Feinberg | 2023-03-28 13:54:52 -0700 Slick slippers: don't trample off stairs mid-climb Surprised players (ie counterintuitive) and a bit too hard to balance. Should be plenty of exciting downside without that specific interaction. Also reduce EV to +4 (from +5), as a tiny counterbalance. -------------------------------------------------------------------------------- 5f1da4a474 | Nicholas Feinberg | 2023-03-27 22:49:50 -0700 Make Plasma Beam less extreme Reduce damage to 25 (from 20) and reduce damage to 2/3rds of its previous value. It was doing >50% more damage than starburst or iron shot on a double hit, and those are higher level spells - more than double fireball's damage. It's louder and less accurate than those spells, and has worse targeting, but there's a limit to how much that buys you. Let's smooth out the lows and the highs of the spell a bit. -------------------------------------------------------------------------------- 57031e3d82 | Nicholas Feinberg | 2023-03-27 22:18:32 -0700 Show plasma beam's to-hit (acrobat) -------------------------------------------------------------------------------- 1dd620b518 | Nicholas Feinberg | 2023-03-27 22:09:17 -0700 Fix: make fiery plasma unblockable (acrobat) beem.is_beam = true -------------------------------------------------------------------------------- bf40cfac39 | Nicholas Feinberg | 2023-03-27 07:44:02 -0700 Refactor inaccuracy (Monkooky) Closes #2959. -------------------------------------------------------------------------------- 53dc5368d7 | Monkooky | 2023-03-26 19:36:08 +0000 Fix cloud side effects Fixes #3058 -------------------------------------------------------------------------------- 4fa250aae5 | Monkooky | 2023-03-25 22:56:19 -0700 Fix fear. Monsters would previously snap out of fear even when hit, so long as they were below half health and were not cornered. This fixes that. If there are still any monsters that are supposed to retreat until above half health, this breaks them. -------------------------------------------------------------------------------- 076f283afc | Monkooky | 2023-03-25 22:55:06 -0700 Make condenser vane good god approved Good gods currently get upset only when condenser vane rolls Negative Energy clouds. The chance of rolling Negative Energy clouds is somewhere in the vicinity of 1/1000 at 0 evocations, rising dramatically as evo skill increases. This creates an odd incentive to not skill evocations. Squashing negative energy clouds (as opposed to rerolling) was chosen to be the minimum change that resolved the problem. -------------------------------------------------------------------------------- ec5dcfc036 | Nicholas Feinberg | 2023-03-25 22:52:18 -0700 Increase thunderstorm damage When they were first added in 75deb85f6e81443, thunderstorms were intended to be a 'high-tier' cloud type. They currently dodge resists that fire/cold clodus don't and do spiky damage, but that's not enough to make them super exciting. Let's increase their damage from an average of 13.5/dAut to 18.25, a ~33% increase. (Fire/cold clouds do 14 damage/dAut vs monsters.) New max damage per strike for a 1 dAut turn is 50. (Was 37 before this commit and, uh, a slightly mysterious amount before the preceding commit.) -------------------------------------------------------------------------------- 298cdec9ad | Monkooky | 2023-03-25 22:35:22 -0700 Fix and refactor thunderclouds Fixes #3050. Closes #3053. Refactors thunderclouds to minimize their special casing. Adjusts thundercloud damage to on average equal normal cloud damage, but a bit burstier. [Committer's note: tweaked implementation to avoid copies.] -------------------------------------------------------------------------------- af2f02e8c5 | Nicholas Feinberg | 2023-03-25 22:21:31 -0700 Do a proper rim job on randart staff shadows (Sastreii) Fix goofy looking outlines around randart staves' shadows. -------------------------------------------------------------------------------- bd1e3d8e73 | Nicholas Feinberg | 2023-03-25 22:17:17 -0700 Stop branding corpses Obsolete since a69f94b37aa3bb0651baba4ae4920ba3ca99b7cd (2020). -------------------------------------------------------------------------------- 3bd36bede5 | Nicholas Feinberg | 2023-03-25 22:13:39 -0700 Show randart staff brands (Sastreii) Also do some refactoring. -------------------------------------------------------------------------------- fc935e4819 | Nicholas Feinberg | 2023-03-25 22:02:42 -0700 New tiles (Sastreii) Slug zombie (eww!), monstrous menagerie, elemental & olgreb staffs. -------------------------------------------------------------------------------- e5077277c9 | Kyle Rawlins | 2023-03-25 11:14:40 -0400 fix: prevent a race condition in game startup If a signal is received before the execvpe call in a child process while running crawl, the server's finally block could get called, deleting the pidfile. This fix should head that off, though it's not a general fix for races here (so I've also added a bunch of comments). -------------------------------------------------------------------------------- c8157cb160 | Kyle Rawlins | 2023-03-24 17:45:20 -0400 fix: color equipped items in use item menus This was working as intended, in that the default rule explicitly had an inventory tag (so I guess there was a bug before), and therefore shouldn't have had a highlight in use item menus. I don't see any reason to restrict this to just inventory. Also, document the tag for these menus, and tweak a few more things in the menu_colour docs. -------------------------------------------------------------------------------- 10c84c77b0 | Kyle Rawlins | 2023-03-24 17:06:03 -0400 fix: shop colors -------------------------------------------------------------------------------- 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 | Nichol