-------------------------------------------------------------------------------- 7f3c248699 | regret-index | 2025-04-18 18:00:00 -0230 More changelog tweaks Downplay the Ziggurat Sprint updates (I still need to do more revisions to it next version), shortened the mechanist line to match other new monster lines and to be more accurate to their weapons, add both a new tile I missed previously in 16aa5c7 / ed448de and the new tiles added just now. -------------------------------------------------------------------------------- 0d2a297ef6 | regret-index | 2025-04-18 17:46:38 -0230 Disable some Zig decorations for now (cool 3) As was pointed out in #4475, none of the feature renames work in ziggurat pillar placement, which results in revealing the metal statue description regular games aren't supposed to see. Pending fixing this bug, I am instead temporarily commenting out various vault statue re-flavourings. -------------------------------------------------------------------------------- fe3fe7f9ba | regret-index | 2025-04-18 17:46:38 -0230 Some last minute tile tweaks and additions * Adjusted the Medusa Form octopode tile to be a chalkish white, like the Siamese cat coluration for Medusa Form felids and unlike the blue colouration random octopodes could start as. * Adjusted the slowly-dying enchantment icon to use less garish colours and have a black outline so it contrasts better against the brighter colour floors like e.g. Shoals. * Adjusted the lines of Call Down Lightning's effect to look cleaner. * Removed an extra copy of the Dazzling Flash icon from the Conjurations spell folder. * Added new Ignite Poison vfx that avoids displaying a red flash constantly as one casts a spell- while this is less dramatically visible than such a choice, it's also far less confusable than the current settings default of red flashes being used for being at low HP. -------------------------------------------------------------------------------- 0f44f866f0 | gammafunk | 2025-04-18 14:02:39 -0500 Changelog updates (through 9efba704ed) -------------------------------------------------------------------------------- 9efba704ed | yrdzrfxndfvh | 2025-04-18 03:17:37 -0230 Add missing Zig pillar traps (#4475) "Adds zig pillars for the remaining traps that have yet to be used there. All pillars have a weight of 5 and [use megazig_zot_traps()]. * ziggurat_pillar_centre_dissolved: Places a few devourer's traps, as well as an entropy weaver. After the first zig, replaces more statues and empty floor with traps. * ziggurat_pillar_centre_exhaustion: Places an archmage's trap, plus a [deep elf annihilator or draconian annihilator]. Starting from Zig+1, it instead places an ancient or dread lich and can put additiona archmage traps. * ziggurat_pillar_centre_mighty_misfortune: Places a harlequin's trap or tyrant's trap. These were originally two separate pillars, but as they basically do the same thing I decided to merge them into one. * ziggurat_pillar_centre_nasty_nets: Places one or more net traps, surrounded by a variable amount of iron grates. Limited to only place after zig:10 to avoid zig dippers being instantly netted and killed by a pan lord or something." [Committer's notes: As per usual, Zigs are allowed to use contents otherwise reserved for specific parts of the game, so these vaults are fine. I replaced banishers with annhilators since the former have poor chances to affect people in Zigs, took out the variation floor tiles since some of the floor looks kinda weird versus the repurposed Vaults floor, made additional net traps require more than one Zig as the PR itself ponders about, and commented out the feature redefinitions for now until we can figure out why there are description bugs for such. I'd like to revise our current zig floor and wall tiles eventually rather than have the occasional splash from elsewhere strangely only affect the pillars (surely we could do some quick work for given floor themes?...) but it'll have to wait until I've spent more time on walls and floors for other places, like V and extended. Closes #4475.] -------------------------------------------------------------------------------- 663a9828c5 | nicolae-carpathia | 2025-04-17 23:06:32 -0400 Add more decor vaults to Lair (#4107) Add more decor vaults to Lair. Main themes: - Ruined remnants of human habitation (statues, dry fountains, etc.) - Beast attacks (blood, skeletons, etc.) - Vegetation (trees, plants, bushes, fungi, etc.) -------------------------------------------------------------------------------- aa014feb8f | regret-index | 2025-04-17 22:16:23 -0230 A wide variety of different tiles (LemurRobot) Seperate tiles each for sewer exit portals, randart troll leather armour, weakness stinger mutation, and honeycomb talismans (now hive talismans). * The Sewer exit submission was remixed with ontoclasm's Sewer entrance tile to properly imply pipes inside rather than outside the Sewer. * The troll leather armour randart tile was recoloured to primarily resemble regular troll leather armour with differing highlights, and made larger to not seem overly small compared to the current plain troll leather armour through fur extensions from roctavian's troll monsters and Sastreii's death yaks. * The weakness stinger mutation icon was heavily edited to provide three discrete levels of the mutation (following the absence of a stinger in its first level and weakness only applied in the third), as well as given colour highlights akin to the style used for horn and antennae mutations. * The hive talisman replacement, while good for being more directly representative, was very understated for a talisman and over-emphasized the cords present on the placeholder tile. With the cord removed, I combined pieces from Denzi's royal jellies, Sastreii's flux talismans, ontoclasm's sewer entrance / exit plus Control Teleport spell to flesh out the tile some more. * As an actual hive rather than a honeycomb, I'm naming them to hive talismans in this commit- while the majority of the new talismans don't precisely match form name and talisman name, it's still present enough that it should probably be fine to switch just for the sake of having a decent enough talisman tile. Also placed into the unused folders: * An incomplete set of talisman randart tiles: until the full set is complete, it is unfortunately better off to not single out talisman randarts for a limited portion of talisman types. I'll probably finish off the rest of the set with the further talisman work planned for 0.34. * Fountains of ectoplasm were planned and requested for Necropolis in its early stages of consideration before fountains got a long list of god-specific flavour messages. I'd still like to do these too, but such lengthy messages are a bit of a low priority. * A couple of tiles for concepts that were later abandoned (like arctic jackrabbit form), wrong for their desired context (a tile for for solar embers that was too solid-looking, a phalanx beetle that lacked phalanx shields), or are unviable entirely (tentacles are far too much of a mess to add other multi-tile monsters in the same style). -------------------------------------------------------------------------------- 20824f1994 | patrick | 2025-04-17 19:46:20 -0400 Add some themed little-v vaults to big-V Vaults Most of them are using the themes regret-index whipped up a while back, but a few have more bespoke themes. -------------------------------------------------------------------------------- 8e704a0356 | DracoOmega | 2025-04-17 21:05:00 -0230 Fix lua tests being unable to end They were defeated by the new quit prompt. -------------------------------------------------------------------------------- 9835b1d13d | DracoOmega | 2025-04-17 20:13:43 -0230 Don't terrify your own allies as a werewolf (midn8) -------------------------------------------------------------------------------- 1c2cc81580 | DracoOmega | 2025-04-17 20:05:34 -0230 Make it less possible to accidentally enter explode mode While entering explore mode did require the user to type 'yes', several less critical things in the game ask the player the same thing (such as stepping on a Zot trap) and it is possible to overlook its significance for something that cannot be taken back. So, to help with that, make the text you have to type in several cases more explicit. Explore mode now requires typing 'explore', wizmode 'wiz', and quitting 'quit'. (Other prompts using 'yes' been left alone for now.) -------------------------------------------------------------------------------- a73bde240a | DracoOmega | 2025-04-17 19:29:51 -0230 Correct a changelog error (Ge0FF) -------------------------------------------------------------------------------- 0521b7a92d | DracoOmega | 2025-04-17 19:29:51 -0230 Give a cast message for Small Mammals, Cactus Giant, and Horrible Things Unlike almost all summoning spells, these never had any, and produced absolutely no messages in the log for having cast them. -------------------------------------------------------------------------------- a50f7344bf | DracoOmega | 2025-04-17 19:29:51 -0230 Fix Ironbound Mechanists trailing parts of their weapon behind in webtiles This doesn't fix the underlying issue of not handling overlaps to the bottom/right properly in webtiles (I tried for a while without success), but compromises by making very small adjustments to the tile and its weapon placement to prevent it from happening with its normal loadout. -------------------------------------------------------------------------------- c28b6298cb | DracoOmega | 2025-04-17 19:29:51 -0230 Make Vex trigger Trickster (astupidcat) -------------------------------------------------------------------------------- 2875831e3d | DracoOmega | 2025-04-17 19:29:51 -0230 Mention that medusa tendrils won't hit invisible monsters (midn8) -------------------------------------------------------------------------------- 04befe0baf | DracoOmega | 2025-04-17 19:29:51 -0230 Be a little more explicit about how water form interacts with cleaving -------------------------------------------------------------------------------- 01fb971b63 | DracoOmega | 2025-04-17 19:29:51 -0230 Don't make a note about every runed door that the player encounters While it makes some sense to list runed doors seen in the dungeon overview (and this commit does not change that), the game would make an entry in the dump about *every single runed door tile* the player ever observed. Just encountering doorvault could flood a whole page of it (and necropolis also is full of them). This doesn't seem particularly worth noting, and nobody objected when I asked about removing this. -------------------------------------------------------------------------------- e7bdcb3ee3 | DracoOmega | 2025-04-17 19:29:51 -0230 Make Forgecraft miscasts scale in severity By applying more corrosion at once for worse miscasts. Makes it a little more dubious to try and overreach on spells in some cases. (Of course, the damage formula for miscasts is a bit wonky in the first place, but some quick testing suggests this number is probably reasonable.) -------------------------------------------------------------------------------- 6809c6f627 | DracoOmega | 2025-04-17 19:29:51 -0230 Lower revenants ranged apt to -3 (Ge0FF) Ranged combat doesn't interact with either of their species gimmicks, so let's steer players away from it a little more. (Their dex was pretty awful anyway, but that's less immediately apparent.) -------------------------------------------------------------------------------- d3e06e6052 | DracoOmega | 2025-04-17 19:29:51 -0230 Fix Summon Forest making trees out of open sea (Necromancer23) (And other non-solid level borders, like endless lava or salt.) -------------------------------------------------------------------------------- 669c12ccc6 | DracoOmega | 2025-04-17 19:29:51 -0230 Reduce Autumn Katana's activation chance When Manifold Assault was raised to level 7 by d8d9835, I claimed this weapon would still only hit 4 targets, but in fact it has hit 8 ever since. I considered simply moving that number back to 4, but decided that a rarer chance to have a bigger effect was the more flashy of the two options. It should still be quite powerful like this. -------------------------------------------------------------------------------- f59c703107 | DracoOmega | 2025-04-17 19:29:51 -0230 Buff Mark of Execution a little It was arguably the most underperforming of Makhleb's marks. This increases the activation chance from 14%->20% and improves the XL scaling of the aux attack's base damage somewhat (by 3.5 by XL 27) -------------------------------------------------------------------------------- dda9934dc5 | DracoOmega | 2025-04-17 19:29:51 -0230 Don't generate randart Storm talismans with -Tele It prevents using the blinkbolt ability it gives entirely! -------------------------------------------------------------------------------- 853f1b10a2 | DracoOmega | 2025-04-17 19:29:50 -0230 Decrease poisonous vapour's direct damage by 1 Yes, exactly 1. (It was arguably just a tiny bit too strong at the very earliest parts of the game.) -------------------------------------------------------------------------------- 84cb37206f | DracoOmega | 2025-04-17 19:29:50 -0230 Simplify Mercury Arrow weakness formula The somewhat complicated power-vs-weakness chance formula stems from when it was Mercury Vapours and success chance was the only thing that *could* scale. But now that it is attached to something with damage scaling from power, let's just greatly simplify the formula (and make it less good against lategame things.) Simultaneously, give it an extremely gentle increase in damage at higher power. -------------------------------------------------------------------------------- f77214308d | DracoOmega | 2025-04-17 19:29:50 -0230 Make Maw form growl a tiny bit more often -------------------------------------------------------------------------------- 4bad248e96 | DracoOmega | 2025-04-17 19:29:50 -0230 Allow Fortress Crab to wield two-handed weapons It still can't use shields, to be clear, but its big claw can heft even big weapons just fine. -------------------------------------------------------------------------------- 0cb09fe5f2 | DracoOmega | 2025-04-17 19:29:50 -0230 Tweak sun scarab form slightly Ember charge lasts a couple more turns before expiring and swapping now heals the ember for 75% HP instead of 50%, making repositioning slightly more flexible/rewarding. Also nudge up solar flare damage at higher shapeshifting skill (while leaving it more or less the same at low skill). -------------------------------------------------------------------------------- 72d0a695cf | DracoOmega | 2025-04-17 19:29:50 -0230 Extremely mildly nudge rime yak ice damage downward I'm not convincied it's the best protean form by the margin some people claim it is, but this adjustment should be fine regardless. -------------------------------------------------------------------------------- c983b2adb0 | DracoOmega | 2025-04-17 19:29:50 -0230 Allow examining Armour/Dodging/Shield skill to see how helpful they are Examining these skills now tells the player how much AC/EV/SH they will gain for increasing it by 1 level. After the last commit, armour skill no longer gives a consistent bonus per base AC value (since it will give less to characters with Deformed Body), so this can help make the difference clearer. (But also, for many characters it's always been unclear how effective dodging will be for them (or whether armour skill would raise EV by even more than dodging would), so I think this will be helpful for everyone.) I am a *little* nervous about how this changes your skills in the background to calculate this, since it turns out that raising a skill by 1 touches a lot of different variables. But I am pretty sure I should have caught every modified value in an unwind_var, so it should be safe. -------------------------------------------------------------------------------- 44653be034 | DracoOmega | 2025-04-17 19:29:50 -0230 Make base body armour AC penalties/bonuses interact with Armour skill Maw form's -80% body armour AC penalty turned out to be too mild into the mid/lategame due to it not affecting the bonus gained by Armour skill at all. This was done for consistency with the Deformed Body mutation, which also does not affect the AC gain from Armour skill. However, it is a very common misconception among newer players that a percentile reduction to the AC of your body armour *would* cause it to gain less AC from armour skill (which is, after all, a percentile multiplier to the armour's base AC!). So, after some discussion with other devs, I am changing all percentile modifiers to body armour base AC to affect Armour skill's bonus also. To avoid this being a flat nerf to naga/armataur, Deformed Body now reduces AC by 40% instead of 50% and they each get +1 armour apt (to compensate for each skill level being less effective than it was before.) Some example numbers of AC before/after this change: +0 plate with 0 armour skill: 5 / 6 (+1) +6 plate with 14 armour skill: 17.4 / 15.8 (-1.6) +12 GDS with 27 armour skill: 32.7 / 28.0 (-4.7) (This *is* effectively a nerf to endgame values, but a tiny earlygame buff, and with faster armour skill gain, likely not a nerf at all except to lategame heavy armour users, who aren't likely to notice a lot, I suspect.) Maw Form's AC reduction is reduced to -75% (still a signicant nerf for latergame heavy armour users, which should make this a little less of a free option for some people.). Blade Hands initial penalty goes from -80% to -60%. Fortress Crab's bonus now scales from +70-135% instead of +75-150% (this is still a significant buff, though one a number of people have felt it needs). -------------------------------------------------------------------------------- 9f76b8bc13 | David Lawrence Ramsey | 2025-04-17 12:17:03 -0500 Add missing override to function (#4468). -------------------------------------------------------------------------------- 0c99ebbc95 | gammafunk | 2025-04-17 11:22:02 -0500 Fix a monster message (kaboissonneault) The message for when a monster is silenced is missing a space. -------------------------------------------------------------------------------- 02257cc75e | WizardIke | 2025-04-16 23:50:07 -0500 Fix an invalid comparator being passed to std::sort (#4481) In `player_equip_set::get_forced_removal_list` we were passing a comparator to std::sort that returns true for equal items, however, it should return false. -------------------------------------------------------------------------------- 31484365da | David Lawrence Ramsey | 2025-04-16 19:22:57 -0500 Add a few more "bland" names. So that both male and female ones are covered. -------------------------------------------------------------------------------- a3febebba9 | regret-index | 2025-04-16 21:30:14 -0230 Additional (mostly early) Necropolis tweaks A little bit of conscientious adjustments before feature freeze, mostly. - The D:5-7 Necropolis spawn chance has been reduced (from 3.5% per floor to 2.75%), since no matter the vault enemy tweaks players are still behind the curve versus the average player ghost. There are also plenty of other early portals as is, and there's a fair bit amount of deeper Necropolis vault options that have more variety to better highlight anyway. - Gold counts in all Necropolis settings and the D:5-7 ghost rewards have been mildly increased, while the highest threats in D:5-7 ghost subvaults have been subdued a bit further. -------------------------------------------------------------------------------- 5d64c75d97 | David Lawrence Ramsey | 2025-04-16 18:55:41 -0500 Add better orcification message for Po/Re. Both messages only reference tusks, since neither species has ears. Poltergeists don't have heads, either, but assume they have mouths of a sort, since they can wail, drink potions, etc. -------------------------------------------------------------------------------- e87b3136a9 | David Lawrence Ramsey | 2025-04-16 12:19:51 -0500 Make Xom cast Sphinx Sisters through the player. Instead of the now-removed-for-players Monstrous Menagerie. Closes #4485. -------------------------------------------------------------------------------- 1c690d8f9f | DracoOmega | 2025-04-16 13:45:12 -0230 Lower ghost sticky flame damage, fix xv lying about it xv claimed that sticky flame from an XL16 ghost did 2d6 damage, but this was only the impact damage and the sticky flame debuff itself did ~2d16 per turn instead. The difference was even more disparate on higher level ghosts (ie: XL27 claims 2d9, but did 2d25) This commit lowers the per-turn damage by ~33% and adjusts the impact damage to match (so that xv will report it more accurately). -------------------------------------------------------------------------------- 5c608351b7 | DracoOmega | 2025-04-16 13:45:12 -0230 Don't make aux attack misses claim the entire attack missed This additionally caused rending blade to sometimes fail to trigger when the attack hit, if it was followed by an aux attack which missed. As far as I can tell, the only other consumer of this value for players is fsim (meaning the accuracy value of aux-having characters was always slightly incorrect.) -------------------------------------------------------------------------------- 1bf55eccbc | DracoOmega | 2025-04-16 13:45:12 -0230 Make Rending Blade much more reliable (and deal more damage) While situations where rending blade was unable to find an attack path when one clearly existed were a minority, they were still much too common, to the point of making the spell feel fiddly and inconsistent. This commit rewrites most of its pathing behavior entirely, in the hope of reducing those confusing/frustrating scenarios to almost zero. It uses a very heavy-handed approach to do so, iterating all possible paths from its present position (and, if necessary, from all adjacent positions). I'm not altogether happy with how heavyweight this is, but it's the best way to ensure that it almost always does a thing if the player could see a way for it to do a thing. The blade can no longer 'store up' charge between turns to unleash in a burst. This was intended to compensate for the 'unreliability' of the old model, so that if it failed one turn, it might strike twice the next turn, but was fairly unintuitive to players. Now it will either strike immediately or not at all. Finally, the blade leashes to the player like a phalanx beetle instead of drifting around at a distance, semi-randomly. (The latter sometimes helped it find paths in the old model, but is no longer helpful.) In addition, the base damage of the blade has been raised, and the bonus power per MP also raised. I'm not altogether happy with this state, and feel the spell could possibly use a deeper redesign, but there's no time to devise, implement, and test one so close to feature freeze. And this is definitely a more usable state for the spell than what currently exists. -------------------------------------------------------------------------------- 9079b5ed16 | regret-index | 2025-04-16 05:17:18 -0230 Last major vault review for 0.33 Of note: * Ironbound mechanists have been distributed around various mage and construct vaults in V, as well as some sprints. Sprozz and Nobody have also joined a bunch of sprints. * Sprint III (The Ten Rune Challenge) has mildly less absurd monster HD / HP adjustments / spellset changes entirely unannounced in its monsters, as was highlighted by the recent explicit-xp-definition requirements for vault monsters work. It's truly a relic of an incredibly different era, with very few design changes outside of item / monster removals since its addition back in 0.8, and it's a pretty rough mess in countless ways I'm reluctant to spend much time heavily testing to properly fix-up; as such, there are no guarantees for me properly fixing up the rest of this Sprint. * In the same capacity, I've done a brief go-over to Zigsprint, making its earliest sections less randomly horribly murderous and its later sections more evenly murderous. It probably needs a significant update- at minimum, splitting the sections to have a fifth difficulty setting- but this should help it feel a little less annoyingly, overly random in beginning threat levels. * To help differentiate early portal rewards a bit more apart from one another being heavily focused on consumables, and to accommodate the very specific niches both have, Ossuaries now have a 15% chance to drop inkwell talismans and Bailies have a 10% chance to drop fortress talismans. * Every Lair end vault now has a 10% chance to place a tier 2, 3, or 4 talisman themed each vault and different between each vault, except for two small dragon ends which get a 7.5% chance each. (The protean-tier talismans are always placed randarts, as a bit of a consolation prize for it being late to see such.) There's a bit of a design quandry in terms of people wanting to stick with Shapeshifting versus the inherent variability in a roguelike benefitting not guaranteeing much for specific item drops throughout a run. Hopefully, between 035eff2 and this commit, there's at least some regular in-roads most games for shapeshifters sticking to talismans without being railroaded in single talisman choices throughout the game. -------------------------------------------------------------------------------- 1dfc6ad188 | David Lawrence Ramsey | 2025-04-15 22:53:03 -0500 Add two more orc names. -------------------------------------------------------------------------------- d7f1c8f71e | DracoOmega | 2025-04-15 19:36:38 -0230 Hopefully fix a monster Clockwork Bee crash (I can't be sure this was the cause, but it looks like a *possible* cause.) -------------------------------------------------------------------------------- 4de08de1f5 | DracoOmega | 2025-04-15 19:13:47 -0230 Make Summon Seismosaurus Egg spell targeter accurately show its range. (And Hoarfrost Cannonade, while we're at it.) -------------------------------------------------------------------------------- b64755db65 | DracoOmega | 2025-04-15 19:13:47 -0230 Fix summon spiders being unusable by Bound Soul Missed by b498025, the former god argument was being passed as an argument to spell fail, meaning the spell would fail if cast by any monster which had a god. Broodmothers are godless, *but* bound souls always worship Yred. (This also applied to Monstrous Menagerie for the same reason, until the previous commit.) -------------------------------------------------------------------------------- 7156b827e1 | DracoOmega | 2025-04-15 19:13:47 -0230 Replace player Monstrous Menagerie with Sphinx Sisters (regret-index) Menagerie was an 'okay' spell, but often felt fairly underwhelming to use and its design was in some ways a remnant of its age. There were huge power level differences between the results you could roll (lindwurm's ranged spell did more than twice the damage of manticore's!) and sphinxes felt mildly at odds, mechanically, with the other results. It wasn't awful, but let's try repurposing some of the same design space to focus on the most theoretically interesting result. Sphinx Sisters is a level 7 Summoning/Hexes spell that summons both a sphinx maurader and a guardian sphinx in one cast. This gives the player a wide spread of valuable hex effects, and their direct offense also has the arguably interesting property that it gets worse the more other summons you are using at the same time (as airstrike/af_airstrike do much less damage the more crowded the area gets), potentially making them less desireable as a 'just toss into the deathball' spell with clear upsides of its own. This is obviously much more powerful spell effect than the one it's replacing, but in casual testing does not seem out of line with other level 7 dual-school summoning spells (or Horrible Things, which is still more accessible to many people at level 8). Monstrous Menagerie remains as a monster spell, with Kirke's guardian sphinx being downgraded to a sphinx marauder (as it was only upgraded orginally out of a desire not to nerf the player spell). (And since it was trivial to do so, Sphinx Sisters works for ghosts out of the box.) -------------------------------------------------------------------------------- 6129d6fd55 | David Lawrence Ramsey | 2025-04-15 14:08:51 -0500 Fix shadowed variable warning. -------------------------------------------------------------------------------- 2276e7c6bb | DracoOmega | 2025-04-15 15:45:37 -0230 Don't require the seismosaur egg to have LoS to enemies (only the player) Originally, the hatching condition only required that the egg itself be able to see an enemy, but this leaked information to the player about monsters around corners, so it was changed to *additionally* require the monster to be in the player's LoS as well. But every now and again, this results in a scenario where the player can see a monster but the egg cannot, and this may not be obvious (ie: involving corners/pillars), leading to some player confusion about why the egg isn't hatching. Given that there's already a proximity condition, the player's own LoS is probably sufficient and the egg's no longer matters. This is a small buff, but probably mostly a QoL improvement for edge cases. -------------------------------------------------------------------------------- 261e3f968d | DracoOmega | 2025-04-15 15:45:37 -0230 Show a range indicator around seismosaurus eggs (Various) To maybe help the player intuit how close is 'in-range' for the egg to be able to hatch, the ground within 4 spaces of the egg now changes to a brown rocky texture while the egg is alive (but only while the player can see those tiles, to keep from polluting map memory forever....) Technically this can leak a bit of information about whether your egg is still alive or not, but the living state of an egg that you can't even see seems very unimportant in almost all cases. (Also, this indicator doesn't show up in water, but presumably players will almost always have used it many times outside of water, to still have a sense of its properties if at some point the whole range isn't indicated.) -------------------------------------------------------------------------------- 620d4cdf13 | Kate | 2025-04-15 12:57:44 +0100 Fix Qazlal worshippers missing Blastmote prompts Closes #4467. -------------------------------------------------------------------------------- 4986455a4a | David Lawrence Ramsey | 2025-04-14 20:42:26 -0500 Make flux baubles properly display training info. Do this the same way talismans with non-zero starting skill values do. Like similar code, it relies on the assumption that the only bauble form available is flux form. There's no easy way to change that without accounting for flux form's not having a talisman in a better way (its talisman value of NUM_TALISMANS prevents the usual lookup), but this will work for now. -------------------------------------------------------------------------------- 248d51f267 | David Lawrence Ramsey | 2025-04-14 19:19:07 -0500 Add Forgecraft to _wanderer_role_skill_select(). Since that function accounted for all magic skills except that one. -------------------------------------------------------------------------------- 7ad1b89dd9 | hellmonk | 2025-04-14 17:33:49 -0500 fix spriggan rider exp -------------------------------------------------------------------------------- bb33ccb6fc | hellmonk | 2025-04-14 16:37:23 -0500 Fix vampire bloodprince exp -------------------------------------------------------------------------------- adfce065ad | David Lawrence Ramsey | 2025-04-14 15:40:15 -0500 Add another Sprozz line. -------------------------------------------------------------------------------- 48063bec9d | David Lawrence Ramsey | 2025-04-14 15:22:09 -0500 Properly make baubles turn on Shapeshifting. Since they use that skill the same way talismans do. Closes #4483. -------------------------------------------------------------------------------- f4463b9b3a | WizardIke | 2025-04-13 21:42:57 -0500 Stop at target with damnation if doing so avoids allies (Kab) (#4448) Other ranged weapons will stop at their target if doing so will avoid hitting allies that are past their target, so damnation should to. -------------------------------------------------------------------------------- 562d655eb3 | DracoOmega | 2025-04-13 23:29:43 -0230 Fix Sprozz being able to use jewellery -------------------------------------------------------------------------------- c73dd887b5 | WizardIke | 2025-04-13 20:55:33 -0500 Fix a local tiles menu crash (#4453) When more items were added to an existing menu and then the hovered over item was updated the game would crash. This could happen when trying to add an existing macro from the macro quick add menu or when searching for a specific spell, hovering the mouse over the spell and then doing a broader search that included the spell etc. The reason for the crash is that setting the hovered menu item was accessing some rendering related data that isn't generated until the next time we render. Fixes #4391 -------------------------------------------------------------------------------- 53ce29fbc7 | DracoOmega | 2025-04-13 23:15:28 -0230 Fix monsters being unable to temper Hoarfrost Cannons (regret-index) Hey, it could happen! -------------------------------------------------------------------------------- f6ac00e180 | WizardIke | 2025-04-13 20:34:23 -0500 Fix arrow animation sometimes sticking around to long (#4472) When ctrl-clicking a spot on the map adjacent to you in local tiles, you perform an attack. If this attack was with a ranged weapon, the arrow animation would stick around until you took a different action. Fixes #4381 -------------------------------------------------------------------------------- 388da27881 | DracoOmega | 2025-04-13 22:29:59 -0230 Make some forgecraft allies have better timeout messages than "fades away" -------------------------------------------------------------------------------- a6f6b54981 | DracoOmega | 2025-04-13 22:29:59 -0230 Fix grey draconians keeping their +5AC in forms that melded scales (Lici) -------------------------------------------------------------------------------- 1d25703c72 | DracoOmega | 2025-04-13 22:29:59 -0230 Don't have monsters check if they can swap with themselves Which they usually can't, since they aren't higher HD than themselves! (I am not sure this has much practical effect, but it makes debugging some interactions a little cleaner.) -------------------------------------------------------------------------------- 4cf1b8d64d | DracoOmega | 2025-04-13 22:29:59 -0230 Uncoglin-ify Ijyb She was made a 'former' coglin when coglins were added, presumably in lieu of having any actual coglins in the game, but her dialogue mostly didn't fit them very well (in my opinion) and her mechanics didn't reflect their core gimmicks in any way. Now that we have another coglin unique and monster, I am returning her to her former description. -------------------------------------------------------------------------------- f25bf0be4a | DracoOmega | 2025-04-13 22:29:59 -0230 New Unique: Sprozz, Inventive Apiarist An earlygame coglin forgewright unique that casts Clockwork Bee and Tempering (but has generally quite sad weapons and mediocre melee themselves). The cast delay on bee does give the player a chance to try and kill him first (or run away) but the bee will keep chase even as you do so and Tempering could prove nasty if you let it hit you. Has a 50% chance of dropping a randbook containing clockwork bee and 1-2 other Forgecraft spells. Currently appears at the same depth as Amaemon, which may be a bit off, though I'm not certain exactly how dangerous he will be in practice. Will adjust again after some playtesting. (Tile by LemurRobot) -------------------------------------------------------------------------------- 8605e2f772 | DracoOmega | 2025-04-13 22:29:59 -0230 New monster: Ironbound Mechanists (regret-index) Intended to give some representation to the new forgecraft school among monsters before 0.33's release (as well as finally showing off a dual-wielding coglin somewhere), these enemies come with a pair of axes or polearms and know Forge Phalanx Beetle and Nazja's All-Purpose Tempering, which they can use with their beetle (or sometimes alongside other constructs found in Vaults, if they're lucky enough). They hit about as hard as vault guards (but twice!) but are a little less durable until they get their beetle defense buff. They replace the entire weight of boulder beetles in Vaults (which are harmless by this point and already common enough elsewhere), much of freezing and shadow wraiths from V:5, and also replace the (harmless) spiders in entropy weaver bands in Vaults. (Theme-wise, perhaps we can say something about the intersection of acid-etching and metalwork, but it's not like anyone knows what an entropy weaver even *is* anyway...) Further placement in vaults will come in a future commit. ------------------- The tile was made by regret-index, and is composed of Sastreii's edits to roctavian's base goblin tile, ontoclasm's vault sentinel tile, Sastreii's ironbound beastmaster tile, and LemurRobot's Coglin player doll base. -------------------------------------------------------------------------------- 60505af82c | DracoOmega | 2025-04-13 22:27:04 -0230 Monster implementation of Forge Phalanx Beetle The leashing code used by beetle needed some adjustments when useed by monsters (since hostile monsters really, *really* want to charge at the player, no matter what else you tell them to do) and still isn't perfect, but should work properly in the majority of cases. (The beetle gives a flat +10 AC to its summoner while adjacent, rather than interacting with spellpower in any way.) -------------------------------------------------------------------------------- cd0ef4900c | DracoOmega | 2025-04-13 22:27:04 -0230 Add monster-castable version of Percussive Tempering As this is intended to be used on a general Vaults monster, I feel its targeting should be a little more flexible than 'monster summoned by the caster using a Forgecraft spell' so that it can interact with multiple other 'construct'-y monsters that are common in Vaults, such as peacekeepers and crystal guardians. To hopefully reduce confusion about the difference between monster and player version, I've opted to use the same approach as Vhi's Electrolunge and make a slightly differently-named spell that can describe the difference properly when examined. Thus, it's called Nazja's All-Purpose Tempering. -------------------------------------------------------------------------------- 26292d7fe4 | DracoOmega | 2025-04-13 22:27:04 -0230 Allow monsters to cast Launch Clockwork Bee This mostly works like the player version, though they get a few additional kindnesses like the original target not needing to still be in LoS by the time the bee launches (so that the player can't break the cast by just stepping backward). Recharging is handled as an ability of the *dormant* bee itself, where each turn it checks if its summoner is adjacent and then maybe grabs action energy from it to rewind itself in a way that *looks* like the caster took that action (but can easily work with any monster who has the spell). Intended for a forthcoming unique (and also player ghosts). -------------------------------------------------------------------------------- fa0adff925 | Hellmonk | 2025-04-13 10:54:46 -0500 Fixed xp overhaul (#4480) Thank you for participating in our bonus experience event! --------- Co-authored-by: gammafunk -------------------------------------------------------------------------------- 1aa8576e86 | hellmonk | 2025-04-13 01:57:40 -0500 Revert "Specify monster exp values directly (#4474)" There's something buggy going on, needs fixing. This reverts commit bf948c632cc59540f7b429e204f2721c81b20902. -------------------------------------------------------------------------------- bf948c632c | Hellmonk | 2025-04-13 00:23:18 -0500 Specify monster exp values directly (#4474) Monster experience values relied on a very complicated formula that tried to account for a large number of factors related to monster power. While it did capture many of the aspects that make a monster more dangerous, it was inaccurate enough that monsters needed an additional corrective factor to have reasonable values. Since we're already specifying monster xp with an ad hoc formula, it's simpler to just remove the formula and specify xp value directly in most cases. Monster yaml files now allow the monster's base xp value to be set, and des files can custom set exp (which should not be used except in sprint). Variable xp remains for particularly complex monsters, like panlords, but with a simpler formula. Derived undead reference the base monster's xp with a divisor. This change should not significantly affect total xp available in a game. --------- Co-authored-by: gammafunk -------------------------------------------------------------------------------- ed448ded6d | regret-index | 2025-04-12 20:18:05 -0230 Octopode Flux Form tile, as was accidentally missed out I forgot to export and package the image alongside the rest of other images sent to DracoOmega in midst of the big Shapeshifting update, to the point that 16aa5c7 listed tile credits for the parts of this octopode but left the tile out itself. (A heavily modified explosion from the CC0 release of DUELYST 1, and an edit by Darby of Bloax's base octopode tile.) Thus, I am adding it in. -------------------------------------------------------------------------------- 31d52f885e | David Lawrence Ramsey | 2025-04-12 12:54:51 -0500 Add another Xom esteem adjective to artefacts. And fix their alphabetical order. -------------------------------------------------------------------------------- cabfb930c9 | WizardIke | 2025-04-12 10:20:30 -0500 Fix shape shifters losing their thrall status icon (Monkooky) (#4473) When shape shifter vampire thralls changed shape they would incorrectly lose their thrall status icon. Fixes #4386 -------------------------------------------------------------------------------- f361626b86 | WizardIke | 2025-04-12 09:57:48 -0500 Fix blood for blood spawning orcs faster the faster your turns (#4471) A turn that took 5 auts would spawn in twice the number of orcs that a 10 aut turn would spawn, resulting in 4 times as any orcs spawning per aut. This change makes the average number of orcs spawned per aut the same no matter how long your turns take. It keeps the same spawn rate if you are taking turns of length 10 auts although this might need adjusting as many melee characters can have an attack delay closer to 7 auts when getting blood for blood online which would spawn at about twice the rate with the old system. This also fixes a crash that would sometimes occur as sometimes turns can be cut short to 0 auts (e.g. when resting is interupted). -------------------------------------------------------------------------------- af07fd2aab | DracoOmega | 2025-04-12 09:30:37 -0230 Fix octopodes hiding equip in quill, medusa, and hive form (Graveyardigan) -------------------------------------------------------------------------------- b5025a402e | gammafunk | 2025-04-11 21:06:08 -0500 Some changelog fixes Ghouls were removed, so talk about Revenants and Poltergeists instead. -------------------------------------------------------------------------------- 9fcff2c720 | DracoOmega | 2025-04-11 23:11:56 -0230 Fix skeletons of monsters without skeletons generating (Kab) Either one of these two fixes is sufficient to make the problem go away, but they both feel like they're probably supposed to be this way. (ie: even if a change to fixup_zombie_type caused the bug to manifest, it only makes sense to query the skeleton of the *original* monster type anyway.) -------------------------------------------------------------------------------- 7cf80d010f | regret-index | 2025-04-11 22:02:01 -0230 Give decorative floor a default tile for detection purposes While it's useful for big question marks to distinguish the feature as buggy if found by itself, showing question marks or fountains with magic-mapping and Ashenzari gives a pretty strange impression for otherwise working placement. As such, this adds a mildly fancy floor tile of literal tiles, made from roctavia's white marble floors and Sastreii's runelights and ontoclasm's detected item icon, to display something that is still conspicuous but hopefully reasonably less confusing. -------------------------------------------------------------------------------- 2974f4b71e | regret-index | 2025-04-11 21:08:20 -0230 Don't automatically draw rims around newer ghost-vortex monsters It's not noticeable at all on the default D or V floor, but it looks pretty awful on brighter floors like some Desolation entrances use to try and outline the fading fuzzier outline parts of them. Thus, they are being spared from automatically tile rim drawing. -------------------------------------------------------------------------------- a2417cb52f | regret-index | 2025-04-11 20:14:28 -0230 Tweak some unidentified randart descriptors Specifically, "crude" makes a randart sound like it's of lower quality, and is one of the most obviously clashing with the given fanciful randart tiles. It's been replaced in its multiple uses with a variety of different fancier synonyms for "glowing", to match "glowing" being a common non-artefact un-identified equipment descriptor. -------------------------------------------------------------------------------- d3c52d3de1 | regret-index | 2025-04-11 20:14:28 -0230 Tweak a Xom bazaar banishment line (Undo, staticshock) -------------------------------------------------------------------------------- b443386b90 | hellmonk | 2025-04-11 10:56:59 -0500 adjust a few vaults -------------------------------------------------------------------------------- f222d5610f | David Lawrence Ramsey | 2025-04-11 08:11:08 -0500 Fix typo. -------------------------------------------------------------------------------- 28318407f2 | Isaac Clancy | 2025-04-10 22:28:46 -0500 Fix malign gateway not spawning its tentacle (caiman-dorohedoro) We where giving eldritch tenacles a habitat of HT_FLYER instead of HT_FLYER | HT_MALIGN_GATEWAY which was preventing them from spawning on the tile containing the malign gateway. Fixes #4464 -------------------------------------------------------------------------------- ed1b8474e7 | David Lawrence Ramsey | 2025-04-10 18:30:58 -0500 Fix typos. -------------------------------------------------------------------------------- 54c7f790d0 | David Lawrence Ramsey | 2025-04-10 18:29:35 -0500 Fix spelling. -------------------------------------------------------------------------------- e84ffcc68e | David Lawrence Ramsey | 2025-04-10 18:25:17 -0500 Add another goblin sharper line. -------------------------------------------------------------------------------- 30b3e4ad61 | regret-index | 2025-04-10 18:07:56 -0230 Further changelog updates (through 41512545) Some days late on the big talisman overhaul, but I did have a few more monsters to fit into the version (and still might have a few more). -------------------------------------------------------------------------------- 41512545bd | regret-index | 2025-04-10 17:43:11 -0230 Let Xom confuse non-living and plant xp-granting monsters 75e0785 tried to prevent decorative plants, battlespheres, and other spell-extensions from being confused by Xom by checking holiness, which misses plenty of monsters that are reasonable to confuse (and can still be confused by e.g. Confusing Touch) like gargoyles or oklob plants. With 62137d7 providing a singular clean check for not-really-real monsters, we can just use that instead. -------------------------------------------------------------------------------- f081bcc90c | regret-index | 2025-04-10 17:43:11 -0230 Bring back hippogriffs with new gimmicks for Bailies Hippogriffs were removed in fc24509 for being very plain melee-only monsters. In the spirit of the previous commit adding wyvern-riders to Bailies and 5e5e084 returning crocodiles for early portal purposes with new gimmicks, I'm reviving these heraldric beasts for use in some of the underperforming axe bailies. In this position, their description gives the explicit status of them as both mascot and guard dog, and they are also given the following two new and old gimmicks: * A new spell, Beckoning Gale. This smiting attack does low, AC-checking irresistable damage and pulls the target forward up to two tiles, if possible. This should reduce somewhat reduce the capacity for approaching weaker bailies through constant retreat, defeating the entire effect of an organized fortress, while also serve as a reasonable stepping-stone between Sewer crocodiles and Ice Cave reapers and Swamp alligators / swamp worms. (It is also part of continued attempts to make Air feel like an element with reasonable manifestations throughout the game relative to other elements.) * Warning Cry, as we're possibly stretching a little thin (putrid mouths? bunyips?) but which otherwise reasonably fits them pulling players forward into worse positions and their new guard-pet flavour, as well as reducing their approaching speed and Beckoning Gale cast rate both. Naturally, as with the previous commit, this comes with more fix-ups to the bailey.des file and some adjustments of their underperforming new home layouts. They otherwise are not returning to standard D, Lair, or Shoals spawns- it'd defeat the point of making portals differ from their branches to share them in D, in Lair they're individually unimpressive monsters that have no guarantee to find other monsters, and Shoals has plenty enough movement control gimmicks as is. They do, however, get to place in their old special_room_mythical_zoo placement, finally getting rid of the not-exactly-storied hell rat from the list and letting it have something unique to stand out with. In the future, they might fit the occasional Necropolis portal-themed ghost vault, too. The hippogriff tile further adjusts roctavian's edits to Denzi's hippogriff tile. The Beckoning Gale icon uses a CC0 spell icon by frosty_rabbid combined with PleasingFungus's Lesser Beckoning icon, and the vfx alters Denzi's old Airstrike icon. -------------------------------------------------------------------------------- 506a72f698 | regret-index | 2025-04-10 17:43:11 -0230 New monster: goblin riders (of wyverns), for bailies Bailies somewhat continue the trend of older Sewers in mostly containing monsters from nearby floors plus the trend of older Ossuaries having very little for unique features or mechanics. While they get to abuse equipment to brandish reaching / cleaving / boomerangs as well as orc knights, they don't have a lot else that isn't very map specific (and even then, most of those don't try to push very hard on novel mechanics, just on monsters a bit deeper into the Dungeon past Bailey depth). A little bit of additional variety can go a long way here. Goblin riders ride wyverns, a heraldic beast chosen to try and liven up the relatively singular military flavour of bailies, as well as a monster that has always been somewhat bland as a breathless faux-dragon (later than current steam dragons) or fast melee monster (near bullfrog and water moccasin depth). Goblins have been chosen to ride them half to prop up the current unavoidable usage of them as D:1-4 enemies in a D:7-10 portal, and half to expand player coglin flavour a little bit further in the form of goblins trying all sorts of means to gain additional power. (Mechanically, they function in the same capacities as spriggan riders; spear-wielding flying fast monsters bulkier than the base of either, which can spawn either on death. This gets to deploy a straightforward and established mechanic quite far away from its other use, while not being super difficult to parse overall. They're between orc warriors and orc knights in stats otherwise, and appear in most of the non-over-arching gimmick polearm bailies to help strengthen ones with underperforming killstats or weaken ones with overperforming killstats. They also get some sparse use in some large goblin-plus-other-monster D vaults, since this is still a somewhat low count otherwise. While I'm here, the vampire bailey has been moved to axes and gets wyvern zombies; it's been underperforming since ebf5b86, there are fairly more polearm bailies than axe bailies, vampires had equal apts in both weapon types, and it can match the deployment of goblin rider and the Order of the Dragon without needing to do a fair bit of work to make goblin rider derived undead tiles work.) Their tile combines ontoclasm's wyvern tile, roctavian and Sastreii's goblin tile, and roctavian's edits of ontoclasm's spriggan rider tile. -------------------------------------------------------------------------------- 5a9280516a | Isaac Clancy | 2025-04-10 17:33:14 -0230 Fix floor tiles sometimes spawning instead of electric eels (steves) When placing an electric eel, if there isn't any water near by it should place water and then place the eel in the water. However, it was placing a floor tile instead. -------------------------------------------------------------------------------- f942cfc08c | DracoOmega | 2025-04-10 17:16:56 -0230 Fix werewolf howl being noiseless and working while silence (Ge0FF) It now makes as much noise as a regular shout, which is fairly loud for something that can happens a lot, but probably makes more thematic sense, at least. -------------------------------------------------------------------------------- b567cd7934 | DracoOmega | 2025-04-10 17:05:20 -0230 Mark protean talismans as always useless to undead (MolochManiac) Even if not for the same reason as other talismans. -------------------------------------------------------------------------------- 0908c37db5 | DracoOmega | 2025-04-10 17:04:38 -0230 Fix ?acq sometimes giving protean talismans (Lici) This also incidentally allowed undead to acquire specifically those, since the fact that they don't transform the player meant they weren't marked as always useless. -------------------------------------------------------------------------------- 6e034a266e | DracoOmega | 2025-04-10 16:25:17 -0230 Make horns not require bones (so that statue form doesn't meld them) This is largely to be consistent with other aux-slot-blocking mutations in statue form (which are generally all kept). This logic originally existed to prevent octopodes from mutating horns, and now that 'can randomly mutate' and 'is suppressed in a form' logic are more intertwined, this meant that statue form would meld this aux (and only this aux). Which even let minotaurs wear helmets! I realize that horns are bones in real life, and not found in cephalopods, but 'something approximating the shape and function of a horn' is good enough in my opinion (after all, they'd be made of stone in statue form, just like hooves, which still function just fine). We can just assume that octopode 'horns' are entirely made of chiten, like their beaks. -------------------------------------------------------------------------------- 880612a73a | DracoOmega | 2025-04-10 16:12:24 -0230 Correct outdated Repel Missiles description (cool 3) -------------------------------------------------------------------------------- 8d87ab35fb | DracoOmega | 2025-04-10 13:01:27 -0230 Don't make Spellmotor attacks against firewood -------------------------------------------------------------------------------- 40b5ba378e | DracoOmega | 2025-04-10 13:01:13 -0230 Don't let {!a} inscriptions stop spellclaws and similar (CarefulOdds) The intent of the code was that various 'automatic' attacks like spellclaws, spellmotor, and oni potion cleave, would never make attacks that could harm allies or incur penance. Rather than prompting the player, they simply wouldn't occur. Which I think is still fine for unrand weapons with splash damage and the like (where constant prompts could be intrusive for minor gain), but it interacts oddly with the {!a} inscription, which now makes *any* attack prompt (and thus prevents these automatic attacks from ocurring.) One possible issue is that this inscription is used both for "My attack is low-value, so don't waste actions making it" in which case there's no reason anyone would want to skip *free* attacks. The other is often "This weapon has *Rage on it and I don't want to berserk." But inscriptions probably shouldn't have a 'gameplay' effect (where the player can turn a mechanic on or off, but only by changing the inscription on their weapon). So instead, we simply ignore that inscription now, which is likely far more intuitive to everyone instead. (I know *I* didn't expect this behaviour, until it was pointed out.) -------------------------------------------------------------------------------- 9dadf00a51 | DracoOmega | 2025-04-10 12:52:02 -0230 Don't hit neutral enemies with medusa tendrils or Fungal Fisticloak (midn8) While they could already technically hit you back, 'automatically' drawing their attention is perhaps not desireable. (Also, while it fortunately didn't actually angry Ely, that was probably *also* a bug.) -------------------------------------------------------------------------------- 48baaf208d | DracoOmega | 2025-04-10 12:09:19 -0230 Only show plusses of evokers in inventory Will hopefully make it slightly less confusing to see shops and vaults with +2 and +3 evokers that are all actually the exact same as each other. -------------------------------------------------------------------------------- 991b9104fa | DracoOmega | 2025-04-10 11:40:20 -0230 Fix inverted logic in Sack of Spiders check (Namsan) It would only let you use it while there *wasn't* space (and you were casting a damage aura, and tried to cancel).... -------------------------------------------------------------------------------- d632a87c15 | hellmonk | 2025-04-09 23:56:47 -0500 Untweak merfolk aptitudes. Merfolk's longblade and polearm apts were changed to give them more weapon variety pretty much immediately before long blades were made to scale with dexterity instead of strength. The stat changes encouraged the same thing, since dex works with merfolk's huge dodging apt, so long blades became dominant. So let's revert the apt change and try once again to strike a balance; longblades back to +1 and pole back to +4. This reverts 15338bc. -------------------------------------------------------------------------------- b23fe84fff | hellmonk | 2025-04-09 23:55:23 -0500 update credits -------------------------------------------------------------------------------- 8d68d41625 | Paperbell | 2025-04-09 23:51:26 -0500 Fix "Aiming Wall Jump instantly removes constriction" (#4460) The constriction removal now happens after the targeting and checking for exclusions. Closes #4456 -------------------------------------------------------------------------------- e720cd608b | DracoOmega | 2025-04-10 00:07:15 -0230 Prevent kraken simulacra from walking into land. (Various) 8ec9f77 effectively converted all simulacras habitat into normal amphibious, allowing kraken simulacra to leave deep water. A couple vaults use these in ways that could be excessively dangerous, so I'm special-casing to toss them back in again. After a little discussion, I think spectral and bound kraken can be allowed to leave the water (it always felt rather silly that they couldn't, despite being non-physical and flying) and temporarily disable the one vault that uses them early enough for this to be a potential problem until Index can review and adjust it. -------------------------------------------------------------------------------- 0d869b6020 | DracoOmega | 2025-04-09 23:21:56 -0230 Fix a few things ignoring item-based/temporary monster flight (WizardIke) An accidental oversight caused by 238f98a3a70114a0d7. Now, mons_habitat will automatically include any source of flight. (And prune another bit of code that should now be unnecessary.) -------------------------------------------------------------------------------- 2e7bcb65c5 | DracoOmega | 2025-04-09 22:47:57 -0230 Allow ?summoning to make monsters over lava (WizardIke) RANDOM_COMPATIBLE_MONSTER's type was only resolved to a real monster after create_monster() had already searched for a compatible place to summon it and the habitat it defaulted to wouldn't allow it to exist over lava (it basically considered it a giant land monster, so deep water was okay, but not lava). This meant that even in places where ?summoning had a high chance of making a flier, if the player was surrounded by lava, nothing would be produced at all. Instead, resolve the random monster type *first* and then look for a place to put it. (I don't *think* anything meaningfully relies on the current ordering, and monsters placed by vaults and level gen do not use create_monster() at all, as best I can tell, so this probably has little effect outside of shadow creatures.) -------------------------------------------------------------------------------- f562faade5 | DracoOmega | 2025-04-09 22:47:57 -0230 Shrink broodmothers to keep them from swimming. This is mostly to improve UI behavior regarding Sack of Spiders (where it was the only result that could survive deep water) and isn't expected to have a major impact otherwise. (Nothing they summon could swim anyway.) Naga and anyone in serpent form will perhaps be happier by a minuscule amount. -------------------------------------------------------------------------------- 09dec714be | DracoOmega | 2025-04-09 22:47:57 -0230 Refactor summon space checks, add a few more, fix oddities This refactors the checks for 'enough room to summon a monster' added by f2a3531c2594a0d with the intent of reducing boilerplate, by wrapping the error message and bundling stop_summoning_prompt() together with it into a single player_summon_check() function that can be used succinctly. It also adds these checks to a number of evokers - sack of spiders, horn of Geryon, box of beasts, and phantom mirror. In the process, it also fixes some oddities with a couple of these. If the sack or box failed to create a monster (but *not* the horn!) failed to produce a monster, it would not take any time nor use up the evoker charge. But this was a real attempt, so if the player had any chance at all of making broodmothers, they could infinitely use the sack over deep water and fail for 'free' until rolling high enough to get one. Now, alas, an evoker failing to do anything still uses up the charge to prevent these sort of shenanigans (but the game should be much better at preventing the player from doing so in the vast majority of cases). A few god abilities also get summon checks - Infernal Servant for space and Infernal Legion / Blood for Blood for damaging auras. Finally, fix Sphere of Battle not appearing while the player is maintaining a damaging aura like Polar Vortex (which couldn't even hurt it!) while also no longer spamming mysterious messages every turn that it wasn't able to summon one due to a lack of space. -------------------------------------------------------------------------------- 238f98a3a7 | DracoOmega | 2025-04-09 22:37:28 -0230 Allow mons_class_habitat to return HT_FLYER Instead of having multiple different callers of this function manually check flying status afterward and add HT_FLYER onto the return value themselves. It's now in the same category as 'considering giant monsters amphibious for most purposes' (with the ability to ignore this to look at 'core' habitat, if desired.) This also fixes an issue with f2a3531c259 where the checks for flying summons did not properly account for them flying. I am... not 100% sure this doesn't have unexpected effects on some part of code that doesn't expect flying monsters to have HT_LAVA, but I didn't see anything obvious upon looking into it, and it feels like a cleaner way to use our new habitat bitflags. -------------------------------------------------------------------------------- f2a3531c25 | Isaac Clancy | 2025-04-09 22:34:28 -0230 Don't waste a turn when summoning with no space (NormalPerson7) When trying to summon a creature where you can't see any available space to place it, don't spend a turn or any resources. Fixes #3837 -------------------------------------------------------------------------------- 2aa98cafca | DracoOmega | 2025-04-09 19:14:55 -0230 Prevent players from sometimes erupting in steam from lava damage (Lici) Same problem as the last commit, just in a slightly different place! -------------------------------------------------------------------------------- 9cda426663 | DracoOmega | 2025-04-09 19:10:17 -0230 Fix all ice damage sometimes freezing players (cool3) Instead of just those in Aqua form. -------------------------------------------------------------------------------- 1b03d5c995 | DracoOmega | 2025-04-09 12:47:39 -0230 Don't say 'Nothing Appears to Happen' when using a flux bauble (Oneirical) Even when something obviously happens! -------------------------------------------------------------------------------- 4cd9bc0ae1 | DracoOmega | 2025-04-09 12:42:37 -0230 Buff Bat Swarm While intended to be a mildly situational escape tool, some aspects of its parity with old batform still left it a little too unappealing in the parts of the game where the player is likely to be able to use it. Give it a much larger EV bonus (beyond just making you tiny, which wasn't even beneficial to felids, for instance) as well as making the ability instant (so you can immediately start to flee, if that's what you want), along with very slightly reducing its cooldown. -------------------------------------------------------------------------------- 22d0c26b9a | DracoOmega | 2025-04-09 12:39:04 -0230 Adjust staff/talisman acquirement (Lici / regret-index) Make talisman acquirement ~40% more common (now that there are a lot more options to choose from). Make staff acquirement rarer, but make it usually produce a randart staff (which makes it a little more likely to appeal to a wider audience when it does actually happen). -------------------------------------------------------------------------------- 4300a70641 | DracoOmega | 2025-04-09 12:28:13 -0230 Don't generate Inkwell talisman randarts with rPois (Oneirical) Since that form has rPois+++ already. -------------------------------------------------------------------------------- d59af15f9f | DracoOmega | 2025-04-09 11:47:06 -0230 Don't crash when unequipping a flight-granting item between floors As part of the bug fixed in the previous commit, if the item removed granted flight, the game would try to land the player while their position was still out of bounds, thus crashing the game. Since the code in land_player() that cares about position only even makes sense if you're on a real tile, just skip it in this case. (The current bug that caused an item to wrongly unequip should be fixed, but there are other ways this could happen, so it seems better not to crash.) -------------------------------------------------------------------------------- 8df3e7e299 | DracoOmega | 2025-04-09 11:47:06 -0230 Better handle melded slot-granting items on floor transition (Zeldest) The block of code in tags.cc that handles auto-unequipping items the game determines should not be able to be equipped (primarily intended as save compat, to deal with items or species slot restrictions being changed between versions, but which happens to also get called between floors) was overzealous in some situations. For instance, if the player wears an unrand that grants additional item slots, and transforms into a form which melds it (thus 'removing' those slots), the items in those slots are simply melded until they untransform. But upon loading the save (such as by changing floors), the game would not see the slot-granting item, and thus think the player was wearing too many items and remove some of them. Now, when doing save cleanup, the game should count all slot-granting unrands as if they were unmelded. -------------------------------------------------------------------------------- c42becad87 | DracoOmega | 2025-04-09 11:47:06 -0230 Raise the internal mid-calculation cap on spell fail This was lowered to 210 by 20a70ad to ensure no overflows would happen mid-calculation, but when the cap on wizardry stacikng was removed by 9f3f650 it became possible for a 'capped' spell difficulty to be reduced to less than 100% fail (and recent talismans offering school-specific wizardry have made this easier to achieve). This results in very strange effects where an incredibly hard spell can be made to have non-zero success more easily than one would expect, but then its success rate does not improve further even with significant skill. For instance, prior to this commit, combining Vehumet wizardry with 2 rings of wizardry and rime yak form gave 67% fail on Polar Vortex even with 0 spell skills (which did not improve at all until more than 13 skill was gained). It should now remain over 95% fail by 10 skill, and improve more smoothly. (This is, of course, still an *enormous* improvement to spell success, but is less powerful than one might expect given that Polar Vortex with that much spell power still averages less than 12 damage per cast!) I am pretty sure the new number is still safely out of range of any overflows. -------------------------------------------------------------------------------- ee18ce180a | DracoOmega | 2025-04-09 11:47:06 -0230 Make Quill form constriction-immune (Midn8) For parity with spiny. -------------------------------------------------------------------------------- 7415e38c4b | DracoOmega | 2025-04-09 11:47:06 -0230 Fix Ghoul and Vampire still appearing on the aptitudes screen (RelicWraith) -------------------------------------------------------------------------------- f55667836f | DracoOmega | 2025-04-09 11:47:06 -0230 Don't consider having a bauble a reason to train Evocations (Kab) -------------------------------------------------------------------------------- adcc90f0a7 | DracoOmega | 2025-04-09 11:47:06 -0230 Don't generate Fly on randart talismans of flying forms (r) -------------------------------------------------------------------------------- 83d59caeef | David Lawrence Ramsey | 2025-04-08 13:59:49 -0500 Fix DES typo (caiman-dorohedoro). Closes #4457. -------------------------------------------------------------------------------- 9e0ece63c4 | DracoOmega | 2025-04-07 22:43:06 -0230 Tweak Shapeshifter starting kit (various) Give them back their potion of lignification, which serves a different role than flux baubles (since the latter isn't helpful on D:1). Reduce the number of flux baubles from 4->3 (but increase the duration of each by ~12%). And finally, let them start with 2 Fighting skill instead of 1 (which is pretty standard for backgrounds we expect to start the game by hitting things.) -------------------------------------------------------------------------------- 09812d1b2c | DracoOmega | 2025-04-07 22:36:17 -0230 Sort talismans/baubles slightly later in the inventory menu They appear at the top of the screen when eVoking items, even though they are probably used much less frequently than wands are. Probably it would be better if they were listed afterward instead. -------------------------------------------------------------------------------- 3ac7d70a2f | DracoOmega | 2025-04-07 22:30:06 -0230 Say that temporary terrain is 'temporary' rather than 'summoned' The latter made sense for Summon Forest (and is arguable for several other sources of temporary terrain), but is a bit silly for rime yaks. Just saying it's temporary feels more general to me. -------------------------------------------------------------------------------- a8654e4a82 | DracoOmega | 2025-04-07 22:28:07 -0230 Allow digging frigid walls (dilly) To be clear, this doesn't allow digging through metal walls that have been frozen. Just doesn't prevent the player from digging through rock their rime yak has been fighting near. -------------------------------------------------------------------------------- a4083e643d | DracoOmega | 2025-04-07 22:06:39 -0230 Don't let various clouds override blastmotes (Silken) 0d4b2e2 changed blastmotes to be overridable by every other cloud so that players couldn't place one and stand on it to be 'immune' to incoming hostile clouds for as long as they didn't move, but 3537ca1 shortly thereafter made blastmotes explode on the player if they stood still, removing almost any need for the former commit. Exploding yourself every single turn is not great catoblepas protection! In fact, blastmotes being so overwritable meant that you couldn't even cast blink without immediately replacing the clouds with nothing (since the translocation cloud would overwrite it!). So let's just revert this. -------------------------------------------------------------------------------- 5f4cc31479 | DracoOmega | 2025-04-07 21:59:43 -0230 Fix tengu talons being melded in all forms (including no form!) (Taran) 6e34e43 refactored the logic previously used to prevent species without feet from mutating hooves/talons, but alas tengu were not considered to *have* feet, so their talons were just permanently suppressed for the lack of them. But they have something 'close enough' to feet, so let's just remove this flag. -------------------------------------------------------------------------------- 4b0afb21ba | Isaac Clancy | 2025-04-07 21:22:25 -0230 Rework habitats Store habitats as a bit mask of the different terrain categories monsters of that habitat can survive on. This lets us easily check of one habitat is more restrictive than another or if a monster can survive on a category of terrain e.g. land, water, shallow water or deep water etc. [Committer's note: Fixed a minor bug with wizmode listing of monster habitats, removed unused random_monster_at_grid() function and simplified code supporting it.] -------------------------------------------------------------------------------- dec1508c23 | gammafunk | 2025-04-07 16:46:52 -0500 Fix an item spec in a vault (Lici the Crawler) In the vault gammafunk_dig_for_victory, when identification was simplified in 008097b4, the pre_id statement was added to the wand specification without a space. This broke the charge specification. -------------------------------------------------------------------------------- 0db3892cde | DracoOmega | 2025-04-07 19:06:13 -0230 Fix amorphous players not being net-immune (cool3) -------------------------------------------------------------------------------- a1fbd1fdd8 | David Lawrence Ramsey | 2025-04-07 16:21:44 -0500 Update manual for gnolls' treasure sense. -------------------------------------------------------------------------------- b02921b1fd | DracoOmega | 2025-04-07 18:41:55 -0230 Fix amorphousness not making the player unconstrictable (cool3) -------------------------------------------------------------------------------- 255900d39e | DracoOmega | 2025-04-07 18:28:01 -0230 Properly show fortress crab's rCorr on the talisman screen (Lici) -------------------------------------------------------------------------------- 97c528e2ac | DracoOmega | 2025-04-07 18:28:01 -0230 Be explicit that power doesn't make seismosaur eggs hatch faster Since this is a thing players ask about with some regularity. -------------------------------------------------------------------------------- 47bbfe444f | DracoOmega | 2025-04-07 18:28:01 -0230 Let solar ember charge actually decay It was intended that the 'every second hit' property of solar flare wouldn't maintain charge for long times (so there was no incentive to ever 'charge' it in advance), but apparently ENCH_SPELL_CHARGED did not decay at all. Now it should properly only last a few turns (enough to reposition mid-fight, but not to hold the charge for an extended time). -------------------------------------------------------------------------------- ecf1ff5691 | DracoOmega | 2025-04-07 18:28:01 -0230 Allow WJC martial attacks to trigger a variety of post-attack effects An increasing number of things had been coded to happen once per 'attack action' on the player's part (as opposed to each 'attack', so that they did not occur many times per Manifold Assault or quick blade multi-attack), but this meant that they did *not* work for martial attacks (even though I think it is reasonable to consider a movement that triggers an attack set 'an attack action') Things that previously did not work with martial attacks, but now should: -Platinum paragon's support attack -Medusa form tendril attacks -Solar ember flare -Werewolf slaying bonus and Detonation Catalyst not expiring (Technically Dith shadow mimic and Mark of Execution also didn't work properly here, but good luck worshipping two gods at once.) -------------------------------------------------------------------------------- 7def2da44a | DracoOmega | 2025-04-07 18:28:01 -0230 Fix treasure sense mutation description properly (It shouldn't still talk about their noses. That was the entire reason to reflavor it.) -------------------------------------------------------------------------------- b3d6f88162 | DracoOmega | 2025-04-07 18:28:01 -0230 Fix a couple issues with Breathe Rust Make the beam actually stop where the player aims instead of forcing them to press . to make it agree with the targeter. Actually show that it can possibly affect greater than radius 1 if the player has 12 shapeshifting or less (it already did this for higher skill), which it could do in narrow spaces sometimes. Don't prompt the player about harming themselves (since you're immune). -------------------------------------------------------------------------------- 2f037eda1b | gammafunk | 2025-04-07 14:25:46 -0500 Fix a mutation description (Ge0ff) Strong Nose was renamed to Treasure Sense. -------------------------------------------------------------------------------- dd9937bba7 | David Lawrence Ramsey | 2025-04-07 01:14:56 -0500 Fix food cache messages for new serpent form. Since it's now called amphisbaena form. Also account for its having two heads. -------------------------------------------------------------------------------- 04dd99a9a2 | DracoOmega | 2025-04-07 03:40:44 -0230 Fix save-upgraded naga/barachi still having old MUT_SLOW (Colgate) Characters upgrade before the recent talisman push had the old mutation on top of their *new* anatomy-based method of having slow movement, resulting in being twice as slow as intended. -------------------------------------------------------------------------------- 6d63c99ee2 | yrdzrfxndfvh | 2025-04-07 00:40:50 -0500 fix typo -------------------------------------------------------------------------------- c88dc84941 | DracoOmega | 2025-04-07 02:53:54 -0230 Fix rime yak frigid wall damage being buggily high (hellmonk) The overriden get_special_damage function was a ghost brought back by the rebasing I did prior to pushing to master, and corresponded to an earlier implementation that used these numbers very differently. But it was causing the game to ignore the damage formula specified in the form yaml (and resulting in something like double the intended damage!) -------------------------------------------------------------------------------- 5438af56c9 | David Lawrence Ramsey | 2025-04-06 17:17:04 -0500 Replace random artefact -Cast with *Silence. Since -Cast shouldn't occur on random artefacts anymore. Closes #4449. -------------------------------------------------------------------------------- c94a1da995 | DracoOmega | 2025-04-06 19:12:42 -0230 Tweak default form name gen, improve wizmode form change command Wizmode now lists forms in alphabetical order instead of enum order (which was increasingly hard to find anything in now), as well as hiding more deprecated forms. Underscores should no longer show up in a handful of form names when viewed on % (eg: "rime_yak-form"). I've opted to shorten some two word names into one (eg: "yak-form") which is a little less specific, but reads better than "rime yak-form" to me. -------------------------------------------------------------------------------- b6f76e6a27 | DracoOmega | 2025-04-06 19:12:42 -0230 Fix protean talismans falsely claiming they need 7 skill (various) -------------------------------------------------------------------------------- f92b08d944 | DracoOmega | 2025-04-06 19:12:42 -0230 Fix Breathe Rust missing an in-game description (Lici) -------------------------------------------------------------------------------- e46acfb542 | David Lawrence Ramsey | 2025-04-06 16:24:54 -0500 Add another philosophy name to artefact weapons. -------------------------------------------------------------------------------- 913ef12283 | hellmonk | 2025-04-06 16:13:28 -0500 Don't allow corner sniping with mcc -------------------------------------------------------------------------------- ed398bb5f6 | hellmonk | 2025-04-06 15:35:00 -0500 Nerf permafrost slightly (again) -------------------------------------------------------------------------------- 18e4f2ac3a | hellmonk | 2025-04-06 15:29:52 -0500 Raise death form skill req. Pending broader rework that won't make this version. -------------------------------------------------------------------------------- 459ca9329c | hellmonk | 2025-04-06 15:14:53 -0500 update comments -------------------------------------------------------------------------------- cdc85123d2 | hellmonk | 2025-04-06 15:13:14 -0500 checkwhite -------------------------------------------------------------------------------- 5b40c49a21 | sdynet | 2025-04-06 15:12:47 -0500 Change Kiku and Zin passive to max at ****** (160) piety. (#4052) Change the chance of passive power to max percent out at 160 piety, like other gods: * Kiku's torment protection * Zin's polymorph protection -------------------------------------------------------------------------------- 1517c42a8e | hellmonk | 2025-04-06 15:08:35 -0500 Max berserk extension at 160 piety (sdynet). -------------------------------------------------------------------------------- 302fb0c024 | WizardIke | 2025-04-06 14:33:03 -0500 Change how flayed duration increases when a flayed ghost is in view (#4440) It used to increase by more per turn if your turns were quicker e.g. taking a turn of length 10 auts would increase it by 5 auts but taking a turn of length 1 aut would increase it by 50 auts and a turn being cut short to 0 auts by your rest being interrupted would result in a crash. After this change the increase is equal to half the time your turn took. -------------------------------------------------------------------------------- da6aefb492 | WizardIke | 2025-04-06 14:31:55 -0500 Fix bump attacks with range using a turn when cancelled (Kab) (#4433) If you attacked an enemy with a ranged weapon by trying to move into their space and it give you a warning prompt, saying no to the prompt would still spend a turn. -------------------------------------------------------------------------------- bf7406bced | DracoOmega | 2025-04-06 03:51:07 -0230 Don't allow monsters to act on 0 delay turns (Darby) A wild bug that has possibly existed literally forever. When handle_monsters() is called, all monsters are given at least 1 energy, regardless of how long the turn took - even if it was 0 aut! 0 aut turns are used deliberately in a handful of places, including interrupted delays of all sorts. Some practical examples include trying to autoexplore while confused, or when the only unexplored part of the level is behind a runed door. But what this meant is that the player could repeatedly try to autoexplore in those cases *and monsters would still act*, despite no turns passing! This was somewhat hard to exploit by accident (since autoexplore being cancelled due to hostile monsters in view did *not* result in 0 aut turns), but possible in theory. For instance, one could use runrest_ignore_monster settings to bypass that obstacle, then put an exclusion over themselves and press autoexplore repeatedly. This could be used to let the player's allies path back to them 'instantly' after a teleport without their summon timers expiring, or to lure offscreen monsters into view without buff durations decreasing or potentially more broken things nobody has thought of yet. It looks like the original logic for monsters always getting at least 1 energy is that it predates the use of div_rand_round, so that sufficiently fast player actions against sufficiently slow monsters could result in them reliably never gaining any energy at all. That has not been the case in at least 17 years, so I see no reason not to just let them gain 0 energy. It should have no meaningful effect outside of this weird exploit. -------------------------------------------------------------------------------- 6054d9cdd8 | DracoOmega | 2025-04-06 03:51:07 -0230 Fix rime yak form having no prayer_action (BTC) (Naga would still 'coil up' in front of an altar in this form, despite having no coils.) -------------------------------------------------------------------------------- da8ebc6330 | DracoOmega | 2025-04-06 03:51:07 -0230 Fix a crash with solar ember flare and summoners Or perhaps other reasons that a target might be dead by the time we get around to them. -------------------------------------------------------------------------------- fc8086f953 | gammafunk | 2025-04-06 00:12:28 -0500 Fix a DES typo In gammafunk_necropolis_ghost_abyssal_escape, a condition meant to check for placement in Snake erroneously looked for Shoals instead. -------------------------------------------------------------------------------- 34aa4bc718 | regret-index | 2025-04-06 02:13:18 -0230 Move sky beasts out of Y and into F Nobody previously knew what a sky beast was, beyond "like an ice beast that flies", itself a loose generic fantasy monster monster that was moved somewhat questionably onto the 'Y' glyph alongside the other yaks and elephants for being a simple non-carnivorous quadruped long ago. The sky beast tile has moved from a vaguely-legged cloud (f20cd82), to a crackling coatl (46161bd), to a very abstract cloudy ray (4a87d9e), to the current feathered manta ray (f2ebe9a). The last of these as finally made it somewhat coherent to parse also unfortunately clashes with its original status long ago in bodyshape as derived undead tiles are assigned to it, with it currently being shown as a winged quadruped if undead despite only very briefly having legs compared to the last fifteen years. With F mostly established as 'Frogs and 'F'ish (electric eels will be addressed eventually....), I am taking the opportunity to both make its glyph and its derived undead shape a fish, as manta rays are. This is possibly pushing the 'F'ish part of the glyph a little (mostly for being the only one of them not fast), but it hopefully makes substantially more sense than leaving it in the same space as yaks and elephants. -------------------------------------------------------------------------------- a9e06e29dd | regret-index | 2025-04-06 02:13:02 -0230 Partial vault review, Necropolis vs talismans edition While I'd prefer to normally be fairly more comprehensive in these sorts of vault reviews, most of this review is heavily aimed at the Necropolis feedback over the past week or so since its addition: while the first Necropolis range was bugged for half of that period due to 052fbde to mostly place on D:4 and D:5, this emphasized that the conversion of ghost vaults to Necropolis subvaults still was tailored pretty heavily towards minimal rewards beyond ghost XP in the earliest depths. A variety of different approaches have been taken, as a result: * Necropolis portals can no longer appear on D:4, now starting the earliest at D:5. Aside from nudging it a bit further away from Ossuary depth, this is meant to allow player backgrounds a bit more power relative to the D:5-7 monster set as well as get more consumables or spells enough to handle early ghosts. I'm a little sad this no longer keeps the earliest range exactly in Temple's depth range, but the shift should help with nudging down threat and nudging up rewards. * New talismans appropriate to the flavour of various themed ghost subvaults (like element and spell-school match-ups, or newly golden dragon-coils for Gozag) have been added to vaults with relatively minimal rewards. * Ghost subvaults that were mostly unthemed or undead-focused replace one stack of gold with randart weapons. These are mostly (but not always) reaping or spectral, and which lean towards non-endgame two-hander equipment, to try and mildly help out the current swing towards shields as well as to offer something else enticing and unknown beyond gold early without warping overall balance much. * To match the 1/100 chance for the dancing chaos weapon Xom ghost vault to get the Mace of Variability, a fifth or so of the ghost subvaults get an additional 1/100 chance to explicitly place an item * The most lethal early ghost subvaults have been nudged further down in difficulty when very early, especially gammafunk_[...]_berserking_beasts and regret_index_[...]_air_whorl. Alongside this, a handful of other large theme vaults and some shops have been granted new talisman chances as would be appropriate. Another vault review will be done before feature freeze for this 0.33 version, and some additional Necropolis subvaults that can accommodate more talismans are likely to be made, but I would like to get further feedback on the risk-reward status of Necropolis subvaults sooner. -------------------------------------------------------------------------------- 959a2634c1 | DracoOmega | 2025-04-06 02:07:06 -0230 Actually commit the changes I claimed I made to the last commit Oops >.> -------------------------------------------------------------------------------- 53fe09bee8 | Isaac Clancy | 2025-04-06 02:00:11 -0230 Fix swapping between talisman of the same type If one or both of the talisman are artifacts we need to change the artifact properties applied to the player which we weren't doing. Fixes #4412 [Committer's note: Fixed a conflict and edited a comment.] -------------------------------------------------------------------------------- eed9a5f3f1 | Isaac Clancy | 2025-04-06 01:53:43 -0230 Fix incorrect max magic after using artifact MP+ talisman Activating an artifact talisman that gives max magic points wouldn't increase your max magic points until the game was reloaded and deactivating it would incorrectly increase your max magic points until the game was reloaded. -------------------------------------------------------------------------------- 8ec457024c | DracoOmega | 2025-04-05 20:55:12 -0230 Checkwhite -------------------------------------------------------------------------------- 5232bdbd2e | DracoOmega | 2025-04-05 20:30:45 -0230 Mildly improve Platinum Paragon's autotargeting (Oneirical) It now realizes that it can't be placed over deep water/lava and will select its default deployment position accordingly. In addition, if there is no habitable space adjacent to any enemy, it will fall back on the nearest habitable space to the player, instead of the player themselves (who it can never be cast on). This should make it mildly smoother to use with the quiver. -------------------------------------------------------------------------------- a0e6e5b276 | DracoOmega | 2025-04-05 19:25:46 -0230 Allow Fire Storm to spawn vorticies on any terrain Instead of just plain floor for some reason. -------------------------------------------------------------------------------- 5b159af9e7 | DracoOmega | 2025-04-05 19:21:08 -0230 Be more explicit about Medusa form's poisoning range (cfcfcfcfcf) -------------------------------------------------------------------------------- 05e272bded | DracoOmega | 2025-04-05 19:19:01 -0230 Remove self-damage restricton on Aqua form's steam clouds It doesn't seem critical to prevent the player from making steam via self-damage now that it uses a damage-based chance (which it did not when this code was first written). And they could make steam from the water that they bled from self-injury *anyway*... -------------------------------------------------------------------------------- df68cfba8e | DracoOmega | 2025-04-05 19:17:26 -0230 Fix a unit test case Simulacra should now be amphibious. -------------------------------------------------------------------------------- b1c48543f7 | DracoOmega | 2025-04-05 18:54:09 -0230 Don't let Shadow Torpor immediately break Cause Fear Technically this has wider-reaching effects, but for the most part it seems harmless to slow a wandering monster without alerting it in the rare case this will happen, while immediately cancelling the fear you just cast is significantly unfun. -------------------------------------------------------------------------------- b83392f031 | DracoOmega | 2025-04-05 18:52:13 -0230 Fix a bunch of forms incorrectly having pants on some species (Oneirical) Forms which changed the base tile, but still allowed most species to keep their pants were incorrectly drawing pants on top of cats and octopodes and other species as well. This should stop that. This is a bit of a quick fix, but a more thorough one seems not worth the effort at the moment, given the refactoring that might be involved. -------------------------------------------------------------------------------- 1042a406b4 | DracoOmega | 2025-04-05 18:50:42 -0230 Fix dragon form breath using an unintended formula (Oneirical) While the UI would list the 'intended' damage of dragon form's new breath, the code to calculate the power when actually firing accidentally used leftover code from prior to the rework, which was purely XL-based. This happened to result, in practice, with the damage being *wildly* higher than intended - with golden breath potentially doing 3d74 x2 at XL 27! -------------------------------------------------------------------------------- 4491eb6210 | DracoOmega | 2025-04-05 17:31:37 -0230 Don't skip a variety of attack effects on quick blade's second attack This was broken by d67f6492281a5b8d0 which fixed a major bug, but had several unintended side-effects. For instance, the second attack of a quick blade set: -Couldn't fumble in water -Wouldn't flinch away from a monster you're afraid of -Didn't get the accuracy bonus of Manifold Assault or Kinetic Grapnel (or Grapnel's slaying bonus, either) -Couldn't trigger berserkitis (arguably okay) -Didn't add to attack action counts (not actually sure which of the two behaviours makes more sense here) Now specifically skip the cleaving target phase, while running the rest of the code in handle_phase_atempted() -------------------------------------------------------------------------------- b00addd42c | DracoOmega | 2025-04-05 17:07:36 -0230 Remove a couple now-unused functions As of 26fe8ce -------------------------------------------------------------------------------- 0526e4ba42 | DracoOmega | 2025-04-05 17:06:18 -0230 Fix hailstorm being very slow on webtiles Technically, this was also possible in local tiles, since the culprit was, very ironically, the reduce_animations option (which defaults to true only online) which tries to make beam animations quicker by not drawing each cell and only doing a delay the end of the total beam (equal to 15 ms longer than the per-cell time). However, hailstorm fires an individual beam at each cell (with a draw delay of 0), meaning that reduce_animations caused it to have a minimum delay of 15 *per cell*. Now it will only add a per-beam delay if the draw delay was more than 0. -------------------------------------------------------------------------------- 8ec9f772c5 | DracoOmega | 2025-04-05 16:24:32 -0230 Allow simulacra to swim They're made of ice and ice floats! (More pertinently, this was a mild issue with Sculpt Simulacrum, where the blocks of ice it made *did* float, but the simulacra did not, sometimes resulting in the blocks of ice hatching into nothing in confined spaces.) For the most part, this should have limited effect on monster balance (the notable simulacra used in Ice Caves generally could already cross water due to their size or flight anyway). -------------------------------------------------------------------------------- 3ee7a2e22b | DracoOmega | 2025-04-05 16:21:50 -0230 Mildly buff Sculpt Simulacrum The simulacra now can act immediately upon transforming (instead of a turn or two later), mildly increasing the speed with which the spell can start doing damage. -------------------------------------------------------------------------------- 16e3111c1b | DracoOmega | 2025-04-05 16:20:16 -0230 Mildly nerf Eringya's Surprising Crocodile (hellmonk) The spell's utility is very strong and that may make its direct damage a bit too high at the same time, so this nudges it down approximately 20% or so. (Some of this is done by reducing the damage multiplier of the initial attack, but also the crocodile's base damage. Since this is actually used as an enemy in sewers, I have raised its HD/HP very mildly in its natural form to try and keep it 'approximately the same' while weakening it for the spell.) -------------------------------------------------------------------------------- e530c6ecf2 | DracoOmega | 2025-04-05 16:16:59 -0230 Don't claim Walking Scroll's skill bonus is 0.5 higher than it is (Lici) -------------------------------------------------------------------------------- a6c7e407a8 | DracoOmega | 2025-04-05 16:16:30 -0230 Don't claim storm form has rPois- (cool3) A copy-paste error from when this was first yaml-ified, I think. -------------------------------------------------------------------------------- 21d5be53e8 | DracoOmega | 2025-04-05 14:54:50 -0230 Fix a syntax error in sphinx riddle reactions (cool3) -------------------------------------------------------------------------------- 2990fdbb04 | DracoOmega | 2025-04-05 14:42:52 -0230 Remove most autogenerate resistance fakemuts for forms Now that the form properties screen lists all of these in a clear and concise way, I don't think this is needed. And the current patchwork of special cases (which existed before the new properties screen) claims a lot of slightly-inaccurate things about different forms (like claiming a werewolf's rC is from having an 'undead body') that are extremely not future-proof for any form changes and additions. -------------------------------------------------------------------------------- c7b98f8d14 | DracoOmega | 2025-04-05 14:42:52 -0230 Fix A screen claiming dragon form sill breathed only fire (Lici) -------------------------------------------------------------------------------- a54df15eb3 | DracoOmega | 2025-04-05 14:42:52 -0230 Always be able to make at least one bee, at very low skill Hive form In practice, I think nobody will ever use it at this low skill anyway, but it makes the talisman description look better than claiming you will produce -0.80 bees. -------------------------------------------------------------------------------- af41fc2b4a | DracoOmega | 2025-04-05 14:38:16 -0230 Fix hive form giving negative regen at very low skill. (Lici) -------------------------------------------------------------------------------- 8c2c6fc0b0 | DracoOmega | 2025-04-05 13:36:02 -0230 Be a little more explicit in flux bauble's description (Planckenstein) Be clear that the flux damage happens on every 3rd hit. (The A screen already said this, but that requires actually using the consumable.) -------------------------------------------------------------------------------- c14d4a9f51 | DracoOmega | 2025-04-05 13:00:45 -0230 Fix medusa stinger being able to do damage with slaying (Lightli) Noticed indirectly via a Pain Bond crash (ie: the direct damage from stinging one monster killing your next target), but it isn't intended that a slaying ring should make a non-direct-damage aux do damage anyway. -------------------------------------------------------------------------------- d062ae842b | DracoOmega | 2025-04-05 05:53:29 -0230 Fix a crash with creeping infernos exploding (aliasthespectator) (Or any other fire/lava damage beam without an agent, though it's not immediately clear if there are any.) -------------------------------------------------------------------------------- 0cbbbf96d3 | DracoOmega | 2025-04-05 03:28:24 -0230 Fix medusa stingers still doing impact damage Left over from an old version that worked differently (but easy to miss, since the message saying whether they did damage or not was also removed to avoid saying 'but does no damage' all the time!) -------------------------------------------------------------------------------- 82ae926f7e | DracoOmega | 2025-04-05 03:28:24 -0230 Fix broken medusa form description on mutation screen (sdynet) -------------------------------------------------------------------------------- 33e5050f0a | David Lawrence Ramsey | 2025-04-04 22:36:44 -0500 Fix typos. -------------------------------------------------------------------------------- 7b1675eec6 | David Lawrence Ramsey | 2025-04-04 22:36:44 -0500 Fix spelling. -------------------------------------------------------------------------------- 7c4187d92a | DracoOmega | 2025-04-05 01:05:28 -0230 Yet more undeprecating of spider form I really need to figure out how to build the tag upgrade build locally so I don't keep spilling piecemeal commits all over master like this. -------------------------------------------------------------------------------- b912aae84b | DracoOmega | 2025-04-05 00:53:34 -0230 Undeprecate *another* part of spider form We'll get there eventually, I promise..... -------------------------------------------------------------------------------- 7fc1159351 | DracoOmega | 2025-04-05 00:42:42 -0230 Try again to fix the tag upgrade build -------------------------------------------------------------------------------- eea17693e1 | DracoOmega | 2025-04-05 00:29:48 -0230 Remove major version tags around spider form Since it's been un-deprecated. -------------------------------------------------------------------------------- 905dc14bd5 | DracoOmega | 2025-04-05 00:10:42 -0230 Delete deprecated form yaml on tag upgrade In theory, it might be nice if form-gen.py could detect forms from an old major version and ignore them automatically, but this seems like a quick fix to the tag upgrade build issues. -------------------------------------------------------------------------------- 270924a3fa | DracoOmega | 2025-04-04 23:38:08 -0230 Diversify Wanderer talisman options a little Instead of just Quill or Protean talismans, wanderers can get any of the protean-tier talismans directly (as a 'good' item), a handful of flux baubles, or even an Inkwell talisman (if they also have a spell skill). The current skill requirements does mean they won't start with enough skill to use their only talisman if they start with a tier 2 one, but that may just be par for the course for wanderer. -------------------------------------------------------------------------------- 12a86a1876 | DracoOmega | 2025-04-04 23:38:08 -0230 Mildly nerf / adjust statue form Statue form has been dominantly popular for many species since the talisman rework, providing an unparalleled defensive bonus to species that otherwise are sorely lacking for AC. And it's fine for it to be popular and strong (it should be strong, given the investment involved and its other downsides!), but the sheer degree of difference in power some species, like felids or octopodes, gain from reaching this this form is potentially troublesome and risks still being the central focus even with more diverse options available. So now statue form also gives -20% EV while in it. This will affect felids the most, and trolls the least, among those who regularly use it (and that is fine, since trolls had a real decision between armour and statue form, while felids could often feel like there was no equivalently viable option at all.) And, thematically, it's always felt a little weird that one is just as dodgy as a solid stone statue. (I realize that statue used to penalize EV in past and that was removed, but context has changed enough that I think it's worth trying again.) In addition, statue exchanges some of its base UC bonus for flat strength. The aim is that this is 'about the same' for unarmed characters, while being a buff to strength users of the form, to slightly diversify its benefits. -------------------------------------------------------------------------------- b20e0214d6 | DracoOmega | 2025-04-04 23:38:08 -0230 Adjust the skill thresholds of some talisman tiers Now that the old flux-tier has been expanded with a wider variety of forms, I want to push protean tier and blade tier a little further apart, and then nudge statue tier a tiny bit higher as well. (And I think we should stop using t1.5, since protean is a full diverse thing now and not just a stopgap to 'real' forms.) Tier 1 remains 0-7 Tier 2 (ie: protean tier) is 8-14 (was 7-14) Tier 3 (ie: blade tier) is 12-20 (was 10-19) Tier 4 (ie: statue tier) is 17-25 (was 16-25) Tier 5 (ie: storm tier) remains 23-27 Technically this means that tier 1 and 2 don't overlap at all, but Flux is still intended to bridge that gap. Blade hands and serpent get minor buffs to put their 'starting' stats similar to where they used to be at 12 skill (ie: blade hands only gives -80% base AC at this point). -------------------------------------------------------------------------------- 035eff260e | DracoOmega | 2025-04-04 23:38:08 -0230 Significantly adjust talisman drop rates Talisman chance for floor items is now by tier instead of by individual talisman (reducing boilerplate and making more future-proof). Curve of tier versus item level is changed. Talismans that are a 'low' tier compared to current item level have a significantly elevated chance to be a randart (which, in theory, might sometimes encourage someone to use a less conventional form, while the mundane version of the talisman would never be considered by that point.) Talismans obtained by acquirement have an additional 25% chance to be a randarts (many items have a *significantly* higher chance to be randarts when made this way, but previously talismans did not). Many more talismans drop in the game in total (now that there is a lot more diversity of options) and their drop chance no longer decreases so dramatically with depth. I've taken a bunch of the weight for this out of stones, though the previous non-linear curve of talisman chance versus other item chance means that it's impossible to keep exactly the same ratio of other stuff, game-long. The effect should be small, however. Currently, due to several existing talismans being regularly used in vaults, while almost none of the new ones are, the drop chance for many old talismans is still markedly higher than new ones of equivalent tier. But this should be nudged in a future commit that distributes new ones better. -------------------------------------------------------------------------------- 283cc17409 | DracoOmega | 2025-04-04 23:38:08 -0230 Add Protean talismans (for Shapeshifter start) Having a diversity of early/midgame forms is good for the variety of anyone who might pivot into shapeshifting by finding these talismans during the game, and it feels sad to canonize just one of them by putting it into the shapeshifter start (and thus heavily limiting who is likely to actually use it), but we'd hardy want to make shapeshifter start with 4 different talismans of the same tier, either. This is an attempt to randomize what capstone form shapeshifter will end up with, while limiting the startscumming incentives that would come with just giving the player a random talisman at the start. Instead, they are given a protean talisman that *turns into* a random tier 2 talisman when evoked with at least 6 shapeshifting skill (ie: slightly below the min skill to use whatever it turns into). (I have picked a mix of full-body and partial-meld forms for this tier, since I've seen it reasonably argued that full-body forms make species much less important to the background than it would otherwise be, but at the same time, I feel like they're an important part of the shapeshifting fantasy - to become something monstrous and very unlike one's normal form. So this allows us to split the difference.) Protean talismans are not intended to generate as floor items (though some vaults could still be allowed to place them.) ---------------------- The protean talisman tile was made by regret-index, and combines Sastreii's protean progenitor tile with ontoclasm's elemental wellspring tile. -------------------------------------------------------------------------------- 94a7fed46a | DracoOmega | 2025-04-04 23:38:08 -0230 Move Maw form down a tier, adjust properties somewhat Maw form has been fairly popular, but in a way that is extremely lopsided. Fully 68% of maw form wins are with draconians (which notably get the form with 0 downsides while *also* being a terrible fit for statue form), while felids and octopodes account for 21%, and all other species *combined* only reach 11%. It turns out, losing body armour is a really big ask and even a very good aux attack is usually hard to justify for it - the attack/defense tradeoff just isn't comfortable for something that *also* takes training. And while the heal-on-kills can be strong, it isn't enough to rely on when you're trying to get the ball rolling. So this commit targets it a bit earlier, while also attempting to make it a bit less biased by species. Instead of melding your body armour completely, Maw form now reduces its base AC by 80%. This is *close* to melding it for vanilla armour, but significantly less penalizing with enchanted/randart armour and skill. At the same time, its damage has been reduced slightly and it now also gives reflavored shoutitis as your maw growls hungrily at anything it might eat (such that it's not *completely* free for draconians). It will still be *better* for draconians than anyone else, which is fine, but hopefully not to such a polarising degree. -------------------------------------------------------------------------------- 16aa5c7703 | DracoOmega | 2025-04-04 23:38:08 -0230 Turn Flux Form into a new type of consumable Shapeshifters, as a background, change their form surprisingly few times over the course of the earlygame. They start already transformed, and possibly change form just once in the first 10 levels, to use their flux talisman (though some players opt not to do even that). It feels to me that a little something about 'having a mutable form' was lost with the advent of talismans over old form spells, and this is an attempt to recapture some of that without (hopefully) the problems the old system had. Flux Baubles are a new type of consumable that can be used to temporarily enter Flux Form (which, conveniently, was already thematically defined by being unstable!). The form lasts for a certain number of contam attacks (rather than time), after which the player reverts to their previous form. Using a bauble takes only a single turn (rather than the slow change of a talisman). It still scales with shapeshifting skill in the exact same manner that talisman forms do. The idea is that flux form can still come online before the shapeshifter's new capstone talisman will, but will be a transient power surge. The player can use it for scarier situations (and a few battles afterward), and it can even retain some use after their capstone talisman is useable (both by being *transiently* more powerful than low-skill capstone forms, and also sometimes allowing you to quickly escape certain form downsides at the cost of a consumable). Flux form is generally more powerful than it used to be (its EV boost now scales with skill, for instance) since it is a short-lived thing. (It also now melds gloves mostly as a thematic thing, since it was unclear how your touch could be so mutagenically unstable that it melded weapons but *not* your gloves.) Internally, baubles are implemented as a new item base type, largely for ease of generating them randomly in levels, but I think there is future potential for more types of baubles - either high-level temporary forms, or maybe even 'early' but transient access to some normal forms, eg: Storm Bauble? A handful of flux baubles replace Shapeshifter's potion of lignification. ------------------ The flux bauble and new flux form tiles were made by regret-index. * The baubles combine Sastreii's previous flux talisman with CC0 bombs by chrisblue. * The humanoid flux overlay heavily modifies CanOfWorm's Irradiate vfx. * The felid flux form tile combines Denzi's various felid bases with a heavily modified explosion from the CC0 release of DUELYST 1. * The octopode flux form uses the same explosion with an edit by Darby of Bloax's base octopode tile. -------------------------------------------------------------------------------- 877b675cef | DracoOmega | 2025-04-04 23:38:08 -0230 New form: Medusa The 3rd new form aimed at being a Shapeshifter capstone, Medusa form melds the player's helmet and cloak and replaces their hair/head with a long mane of jellyfish-like tendrils. Yes, *that* kind of medusa. Whenever the player attacks in melee, their tendrils lash out automatically, inflicting poison on several random nearby enemies (with shapeshifting skill increasing the number affected at once). But it's also the *other* type of medusa: when the player is reduced to 60% HP, they automatically empower all poison near them, giving a skill-based chance to petrify any nearby poisoned enemies. (As is becoming a wider trend, this cooldown is restored only when you fully heal again.) While automatic AoE petrify is a strong effect, it taking multiple turns and only *starting* once the player is already injured (on a form that doesn't otherwise have defensive benefits) will hopefully keep it from being excessive, while still being distinctive and fun. (And it can even combo a little with other sources of AoE poison, like OTR!). And if maybe it encourages a shapeshifter to pick up a shortblade and train some stabbing skill, I think that could be good, too. (The form also comes with rPois.) ------------------- The medusa form and polyp talisman tiles were made by regret-index. * Polyp talisman: Free use seaweed by finalbossblues, a CC0 stone by idylwilds, and ontoclasm's original runed door tiles. * Medusa humanoids: A CC0 jar by Jetrel, Denzi's old jellyfish, and a CC0 alien robot by Emcee Flesher. * Medusa octopode: The above medusa form components mixed with Bloax's default octopode tile. * Medusa felid: The above medusa form components mixed with Sastreii's statue felid tile and LemurRobot + CanofWorms's vampire felid tile. -------------------------------------------------------------------------------- 8c349ff05e | DracoOmega | 2025-04-04 23:38:08 -0230 New form: Sun Scarab Another full-body form targeted as a Shapeshifter starter capstone (fire to contrast with rime yak's ice!), sun scarab draws from the Egyptian mythological associations of a scarab beetle pushing the sun around by coming with its own pseudo-battlesphere that provides the bulk of its power. While in this form, the player will have a 'solar ember' that follows alongside them. It uses similar leashing behavior to phalanx beetles, but additionally will not move while already adjacent to the player (so that its positioning remains predictable while the player fights.) Every second time the player attacks in melee, their solar ember will unleash a blast of fire against all enemies adjacent to it (and damage itself somewhat). This is the major source of scarab form's bonus damage, and requires positioning in ways that allow the orb to damage things without itself being destroyed (for example, corridors don't work at all!). Swapping places with the ember heals it substantially, however, allowing the player to keep their damage source alive in exchange for sometimes exposing themselves to more danger. If the ember is destroyed, it will automatically respawn a number of turns later (ancestor-style), but this is still a big problem for the form, which derives most of its power from it being alive. On its own, scarab's melee attacks have a 50% chance of applying rF- to their target if they pass AC (which allows you to 'focus' a target for the ember's damage, as well as synergize with other fire spells the player may have) and you gain wizardry for fire spells (much like rime yak does for ice). You also have rF++ and rPois-. The hope is that this is a cute change of positional play for melee, that makes you really feel like you're in a different form, while also being as distinct from rime yak is possible (ie: rime yak wants nearby walls and sun scarab wants open space!) -------------------- The sun scarab form and solar ember tiles were made by regret-index. The talisman was made by LemurRobot. * The sun scarab form mixes one of Denzi's old helmets with both his old boring beetle and boulder beetle tiles. * The solar ember combines Denzi's old sun demon tile with a CC0 block by Emcee Flesher. -------------------------------------------------------------------------------- c257eede70 | DracoOmega | 2025-04-04 23:38:08 -0230 Revamp dragon talisman somewhat Dragon form was always relatively unpopular due to its (somewhat unintuitive) melee glass cannon nature. But beyond that, "You do a ton of melee damage, but your breath weapon is barely even worth using." is a terrible flavor fit for monsters who are most iconically defined *by* their breath, in my opinion. The breath weapon (as a remnant of being so ancient that it once was a general mutation) also scaled with player XL and not shapeshifting skill in any fashion, contrary to... basically every scaling form property these days. This commit aims to improve the situation in the following ways: -The default dragon type is now a golden dragon, rather than a fire dragon (per regret-index's suggestion). This arguably gives it a bit of a niche as a 'resistances' form to contrast with its overall mediocre raw defenses (due to its size). -The breath weapon is now *substantially* more powerful, but shares the same XP recharge system that draconian breath does (which seems to have been pretty successful.) It effectively fires all 3 golden dragon breath types at once, doing a piercing line of fire and cold damage, and leaving poisonous clouds behind. It scales with shapeshifting skill, not XL. -The UC boost has been meaningfully reduced (and default tail slap aux removed - though draconians retain theirs), with the idea that the breath should account for a meaningful chunk of its overall power. -Draconians get a substantial shapeshifting skill-based boost to their own breath power (instead of the form flatly doubling it), but it also recharges twice as quickly (to match the recharge rate of non-draconians using this talisman). Numbers are a bit provisional on some of this, but the hope is that it feels appealing to more people, and also more 'like a dragon' to play as. ------------------------------- The golden dragon talisman, form, ability icon, and vfx were edited and made by regret-index. * The talisman recolours the previous dragon-coil talisman using the older fire dragon design made by Denzi and edited by roctavian, Marbit, and Bloax. * The form tiles all recolour Sastreii's regular, felid, and octopode dragon form tiles. * The golden breath icon combines ontoclasm's Spit Poison, Breathe Fire, and Breathe Frost tiles. * The golden breath vfx combines Sastreii's light bolt with roctavian's Throw Fire and Throw Frost effects. -------------------------------------------------------------------------------- d6583b6a34 | DracoOmega | 2025-04-04 23:38:08 -0230 Give serpent form an extra head (regret-index) Serpent form has been relatively unpopular since it was introduced (and some argue a bit on the weak side), so let's try making it be a bit more exciting by referencing a mythical two-headed serpent instead and letting the player wear two hats at once while in this form. (Felids, alas, can still wear nothing. But they get cat ears in the form now!) ---------------- The new amphisbaena form tile was made by regret-index, mixing Sastreii's serpent form tile with Denzi's snake skeleton tile. -------------------------------------------------------------------------------- 6de4b18375 | DracoOmega | 2025-04-04 23:38:08 -0230 Allow overwriting a cloud with another cloud of the same type (So long as the new cloud has a longer duration.) This was aimed foremost at Rust Breath (which has a very long duration and high cost, so being unable to place clouds on top of other almost-expired clouds felt awkward.) It does also affect a few other player spells, such as Fire Storm and Mephitic Cloud. The latter is likely the largest effect of anything player-facing, but it seems unlikely to me that this buff will have an excessive effect on its power. It does *not* affect Freezing Cloud (whose targeting causes it to spread around existing clouds, rather than place in a fixed area.) Likewise, it doesn't affect most monster cloud uses, which obey similar rules (but does affect a couple, like catoblepas breath. This seems like it should be fine to me.) -------------------------------------------------------------------------------- 1c013a4fdd | DracoOmega | 2025-04-04 23:38:08 -0230 Allow swapping off melded equipment when equipping new items This was largely irrelevant until now, but Fortress Crab form melding your offhand specifically meant that it melded two-handed weapons (even though one-handed weapons were allowed). So if a player was wielding a two-handed weapon when they transformed, they would be unable to equip a one-hander (since the two-hander was melded). Now you can simply a melded item away in the normal fashion (but since you cannot equip a *new* item of that type, in most other cases this should result in no visible change.) -------------------------------------------------------------------------------- b602923376 | DracoOmega | 2025-04-04 23:38:08 -0230 Remove some long-unused cloud function declarations -------------------------------------------------------------------------------- bf4c485681 | DracoOmega | 2025-04-04 23:38:08 -0230 New form: Fortress Crab This is an (almost) full-body blade-tier form that attempts to do some of what statue form does (ie: a slow, tanky transformation) in a way that appeals to a nearly inverse set of characters. Fortress crab melds all of your armour *except* body armour, which it flavor-wise fuses directly into its shell to strengthen it - multipying its base AC by a significant amount. So it's a full-body from that wants to be used by character who *can* use heavy body armour. Outside of this, the form has slow movement (in-between naga and barachi), rPois- and rCorr, a modest UC bonus, and can breathe clouds of rust at the cost of its own HP - a new cloud type that inflicts corrode and weak (but only a small bit of direct damage, unlike acid clouds). What sort of crab would it be if it *couldn't* spew clouds, I ask? Note: fortress crab is also capable of wielding a weapon in its main hand! I envisoned something a little like a fiddler crab, capable of gripping something at least well enough to bonk another person with it. ----------------- The fortress talisman, fortress crab form, and rust cloud / ability tiles were made by regret-index. * The fortress talisman mixes Coolio's fire crab tile with free use world map fortress tiles and armour tiles by Idylwilds. * The fortress crab form mixes those current crab and fortress tiles with Malwyn's original fire crab tile. * The Breath Rust icon uses NormalPerson7's ink cloud tile. * The rust clouds remix ontoclasm's seething chaos clouds tiles. -------------------------------------------------------------------------------- f7def149ad | DracoOmega | 2025-04-04 23:38:08 -0230 New form: Walking Scroll This is a tier 1 form (ie: the same tier as Quill form, but *not* in any starter package) intended to provide unique appeal as an early caster form (and possibly tempt some characters to unconventionally train shapeshifting early and then maybe transition into later forms afterward). This is a full-body form that increases your skill with *all magic schools* by half of your shapeshifting skill, but prevents you from casting spells above level 4. Your attacks also inflict 50% less damage, but have a 50% chance of restoring 1 MP when you hit, and you gain a small bonus to your max MP (4-9, based on skill). The idea here is that it can be a powerful boon to an early caster who trains a little shapeshifting, but automatically falls off hard after a little while (while possibly prompting the player to try out other forms with the skill they've already learned.) (In future, I hope to implement a few randart variants that even allow you to 'read' yourself for a scroll effect.) ------------------- Inkwell talisman and living scroll form tiles made by regret-index. The former edits a CC0 inkwell by idylwilds, while the latter combines CC0 scrolls by idylwilds and deep dwarf berserkers by coolio. -------------------------------------------------------------------------------- 6a8d0c91c1 | DracoOmega | 2025-04-04 23:38:08 -0230 New form: Werewolf An 'upgraded' beast form (now blade-tier) that aims to capture the visceral fantasy of being a ferocious werewolf a bit better. Whenever you kill an enemy in melee, you gain a stacking slaying bonus (up to +12). When this bonus reaches +5 (and with a chance on each kill afterward), the player can let out a vicious howl that attempts to freeze all visible enemies in fear (ie: *both* fear and -move) on a will check (power scaling with shapeshifting.) They also come with the Bestial Takedown ability, which performs a jumping attack at +(75-125)% damage against any enemy who is currently afraid (whether from you howling at them, or any other source, like ?fear). Kills made by Bestial Takedown will always cause you to perform a howl afterward. Play pattern-wise, this lends itself to building up over an extended fight and then leaping around like a slavering beast as you pounce and kill enemy after enemy (or sometimes reading ?fear immediately to enable your wild assault!). As baseline benefits, werewolves also get Regen+ and the equivalent of claws 3, along with rC+ (fur!) and str/dex +3, but meld all aux slots (like beast form once did) and have Will-. -------------------- The lupine talisman, werewolf form tiles, and new ability icons were made by regret-index. * The lupin talisman mixes Sastreii's previous beast talisman with the Claws mutation icon by LemurRobot. * The humanoid form tiles combine Denzi's old hell beasts with Sastreii's beast form tile and CanofWorms's edit of Sastreii's wolf tile. The naga one mixes this with Sastreii's base naga player doll tile, the djinn one with Team Impy's djinn player doll tile, and the armataur one with Sastreii's armataur player doll tile. * The felid werewolf form combines Denzi's current felid tiles with CanofWorms's edit of Sastreii's wolf tile. The octopode werewolf form combines Bloax's base octopode player doll with the same wolf tile. * The Bestial Takedown icon uses ontoclasm's Power Leap icon mixed with some of Bloax's Corona icon sparkles. -------------------------------------------------------------------------------- 3754a00ae0 | DracoOmega | 2025-04-04 23:38:07 -0230 New form: Sphinx Another granite-tier form, sphinx comes with AF_AIRSTRIKE flavored melee (like sphinx mauraders) that does increased damage based on the number of open spaces around a monster (scaling with shapeshifting skill), as well as playing around with slot mechanics introduced this version. While in sphinx form, a player can wear a cloak and barding (even if they ordinarily could not!). Sphinx form also grants major wizardry for hexes spells and reduces the Will of enemies to resists player effects by 40 (like half an orb of guile, but without the downside). As a minor (and mostly flavorful) downside, while in sphinx form the player will compulsively pose riddles to enemies they run into. This is mostly a reflavored shoutitis, though it has a very small chance to confuse/vex an enemy instead of just alerting them. A bunch of uniques also have specific responses to being annoyed by a riddle! ----------------------- The sphinx form tiles and prelminary riddle talisman tiles were made by regret-index. * The initial talisman combines CC0 wall tiles by Emcee Flesher with amulet tiles by Denzi. * The sphinx form tiles mix Bloax's old Frances tile, Denzi's sphinx tile, and a CC0 wing icon by frosty_rabbid. The felid sphinx tile uses Denzi's old Jessica tile and current felid tiles with the same wing. -------------------------------------------------------------------------------- 87a6fb974b | DracoOmega | 2025-04-04 23:38:07 -0230 New Form: Aqua This is a blade-tier form which turns the user's body into a wellspring of elemental water which can change its shape fluidly. It is intended to offer another 'substance-changing' form besides statue form (so that its interaction with mutations are not a one-off) and allow the player to pull off some unique things. While in this form, the player's melee range is increased by two. And, unlike normal reaching, you are still able to perform aux attacks at this distance since your *entire* body is stretching outward. (Yes, even if you're made of water, you can still have functional horns - let's assume that you're able to control the density of your water just as well.) This additional range stacks with the reach of polearms (though you can't perform aux attacks at full polearm range). Axes *don't* cleave everything in range 3 (which would be absurd), but rather will just hit your main target and everything else adjacent to you. You also cannot stab things from a distance (which I think would be simply too powerful, especially on characters with reduced LoS range). To sell the idea that you're really *made* of water, there are a few other upsides/downsides: -When damaged, you sometimes splatter temporary pools of water nearby depending on how much damage was taken. -When damaged by fire beams, you sometimes explode in a cloud of steam. -When damaged by cold, you have a 50% chance of getting the Frozen status, slowing your movement for a while. Finally, you have an active ability on an XP cooldown - Watery Grave. This turns all water within 4 tiles of the player against any enemy standing atop it, doing water damage and also waterlogging these enemies for a short while (and removing all the shallow water). While the player may sometimes want to use local water to activate this, it's important to note that in most cases, you will be able to use this by maneuvering enemies over the water that the player themselves has 'bled'! ------------------------------ All aqua form tiles and ability icons were made by regret-index. The wellspring talisman tile was made by LemurRobot. * The standard humanoid tiles combinine ontoclasm's water nymph with the player doll defaults for humans (Denzi), armataurs (Sastreii), djinn (Team Impy), and naga (Sastreii editing Denzi's). * Aqua form octopodes combines Sastreii's dragon octopode and death form octopode tiles with Bloax's base octopode tile and ontoclasm's water elemental tile. * Aqua form felids combine a CC0 water elemental by Clint Bellanger, ontoclasm's elemental wellspring tile, and Sastreii's storm felid + statue felid tiles. * The Watery Grave ability icon combines CC0 water textures by finalbossblues with Purge's gravestone tiles. -------------------------------------------------------------------------------- ff6960d168 | DracoOmega | 2025-04-04 23:38:07 -0230 Make autofight properly respect the player's reach range Add a clua function that lets autofight actually check the player's reach range instead of calculating it from each equipped weapon. (The latter approach was actually buggy for coglins since the equip slot refactor, and would only consider the range of their *first* equipped weapon. So if you had, say, Rift in your second slot and a regular polearm in your first, it would still move you towards enemy even while in Rift's range.) -------------------------------------------------------------------------------- 2a3c9456fa | DracoOmega | 2025-04-04 23:38:07 -0230 Remove reach_type enum, replace uses with ints This enum was strictly mappable to an integer, with a straightforward meaning (and some commit messages even mentioned how things would break if it ever *stopped* mapping strictly to an int range). I believe this is an unnecessary bit of indirection (and a reaching bonus I plan to add to a form in a subsequent commit would be much simpler using ints). -------------------------------------------------------------------------------- b2f483308b | DracoOmega | 2025-04-04 23:38:07 -0230 New form: Living Hive This is a statue-tier form, intended to diversify appealing options at that tier. It also melds body armour (and helm), providing a much smaller amount of AC, but also a significant amount of both HP and MP regeneration (which are improved by shapeshifting skill). In addition, whenever the player's HP falls below 50%, multiple angry bees will swarm out from your body to defend you. These come naturally berserk (and with the Concentrate Venom status!) to make something like a killer bee still relevant into lategame. Like Mark of the Celebrant, this status recharges only once the player reaches full HP again. The hope was to provide something with enough defensive utility to be attractive to some of the characters who would otherwise consider statue form their main viable option, while being as different as possible. The MP regeneration it provides (and not slowing the player!) also makes it markedly stronger as a caster form than statue is (and potentially of interest to characters who'd not otherwise consider training shapeshifting at all!) And who doesn't want to unleash swarms of bees upon their enemies? (Okawaru disapproves of this form - not only because the swarm of allies is a core part of it, but the regeneration is even thematically coming from the labor of your little friends and we all know that Oka hates friends.) ------------------- The hive form tiles and preliminary honeycomb talisman tiles were made by regret-index. * The initial talisman combines Denzi's old honeycomb and amulet tiles. * The hive form tiles use CC0 honeycomb tiles by delta12 studio. The felid tile mixes it with Denzi's felid tiles and the octopode tile mixes it with Bloax's base octopode player doll tile. -------------------------------------------------------------------------------- 8bced58abf | DracoOmega | 2025-04-04 23:38:07 -0230 Replace Beast form with Quill form Beast form was, more or less, a glorified ring of slaying in exchange for your aux armour. And while this could be a useful (if bland) trade in the earlygame, it felt to me like a bit of a waste of the traditionally very popular 'werewolf' fantasy. So I am planning to promote werewolf into a higher-tier form where it can be a bit more exciting, and replace beast with something else of suitable power level for shapeshifters to start in. Quill form also trades all of your aux armour away, but in return it makes you spiny (with damage that scales with shapeshifting). 40% of melee attacks made against the player will trigger an automatic retaliation for 1d2 - 1d8 damage (depending on shapeshifting skill). This is sometimes stronger than beast form's slaying and sometimes weaker, but also more distinctive (and it makes the shapeshifter start more distinct *visually* too, in my opinion - selling the idea that you're a weird metamorph instead of just 'a slightly different colour adventurer'). ----------------------- The quill talisman and form tiles are by regret-index. * The quill talisman combines a CC0 morningstar by idylwilds with an unused tile for the Sceptre of Asmodeus by Denzi. * The humanoid form combines Sastreii's beast form tiles with roctavian's old porcupine tile. Djinn combine this with Team Impy's djinn player doll tile, Armataurs combine this with Sastreii's armataur player doll tile, and Naga combine this with Sastreii's naga player doll tile. * Quill form felids use Denzi's old cat tiles with roctavian's porcupine. * Quill form octopodes combine roctavian's porcupine tile with Porkshop's edit of dolphin's old octopode tile. -------------------------------------------------------------------------------- b134689226 | DracoOmega | 2025-04-04 23:38:07 -0230 New form: Jumping Spider Another thematic nod to an old form, but with major functional changes. This is a blade-tier form with an emphasis on speed, evasion, and being a sneaky jerk. The form provides an EV bonus (on top of being tiny), rampaging, a stealth bonus, a small chance to web enemies on melee hit, and short-blade quality stabs while unarmed. (And is rPois- minus, as is the spider tradition.) In addition, you have an evasive jump ability, which is functionally like a random blink (that isn't affected by silence or antimagic), but with two additional benefits: -The player is guaranteed to successfully dodge any dodgeable attack until their next turn. (ie: nothing can hit you on the turn you jump) -Enemies have a chance to immediately lose track of you (ie: as if they were wandering and hadn't spotted you yet.) Random blink is often fairly unexciting past earlygame (and more controlled blinking is incredibly strong in obvious ways), but the hope is that these extra factors combine to make Jump a uniquely useful way to try and slip away from enemies (despite the risks of not knowing where you will land) - or even launch a rampage stab into their blind spots while they fumble around trying to see where you landed! Low AC full-body forms can be a tough sell past earlygame, but the hope is that this provides enough benefits to be appealing to some characters nonetheless, and capture some of the feel of being a tiny sneaky menance. ------------- The jumping spider form, talisman, and ability icons were handled by regret-index. * The tile mixes roctavian's old spider genus monster tile with LemurRobot's old culicivora tile and Denzi's old boring beetles. * The form tile mildly edits Bloax's old spider form tile. * The jump icon recolours ontoclasm's Blink icon. -------------------------------------------------------------------------------- 5397cbf093 | DracoOmega | 2025-04-04 23:38:07 -0230 New form: Rime Yak This is the first of several forms aimed at being possible capstone forms for the Shapeshifter background. As a bit of a nod to the old Ice Form, while blending in one of Crawl's most iconic animals, this is a full-body form that offers +15% HP, rC++, rF-, some scaling AC, and the ability to swim. Instead of doing cold damage in melee directly, whenever you perform a melee attack, you chill a random wall adjacent to your target (and then adjacent to yourself, when those run out). Enemies adjacent to these frigid walls take cold damage each turn (similar to frozen ramparts, though the damage scales mildly with each additional frozen wall). These walls do not disappear when the player moves, though the expire rapidly if you stop attacking. Like ramparts, they can chill cold-blooded enemies - one of the more notable upsides ice form used to have. Hopefully this melee behavior makes them feel a little different to play than just 'branded melee' while also promoting the different positional considerations. In addition, the player has wizardry with all Ice spells while in this form (equivalent to two rings). I think it may be interesting for forms to offer some 'side' bonuses outside of their core niche, to potentially promote different skilling decisions or appeal to characters that might otherwise pass on them. And ideally this encourages some shapeshifters to learn magic when they otherwise wouldn't, and some mages to use talismans when they otherwise wouldn't. ---------------------- The rime yak form and talisman tiles were made by regret-index. * The talisman combines Sastreii's eye simulacrum with a horned beast from the CC0 release of Duelyst 1. * The rime yak form tile combines ontoclasm's fish simulacrum with CanofWorms's edits of Sastreii's yak, death yak, and catoblepas tiles. * The rime wall tiles combine Denzi's old Freeze Ammunition tiles with CC0 wall tiles by cynicmusic. -------------------------------------------------------------------------------- 570bf73ca2 | DracoOmega | 2025-04-04 23:38:07 -0230 Refactor Form::get_ability_damage() and datify Allow specifying as data in the form yaml, and generalize (so that we can fold some other form-specific functions into the more general Form::get_special_damage(), such as Flux's contam damage.) (Is there some good reason that dam_deducer is done via templates instead of those parameters just being member variables? It make some of the code around it a little awkward (like being unable to instantiate them without using new), and the non-template version would still be straightforward. -------------------------------------------------------------------------------- c9c0e2b7cf | DracoOmega | 2025-04-04 23:38:07 -0230 Rescale form hp_mod by 10 So that it is possible to change HP by increments of less than 10% -------------------------------------------------------------------------------- 1dc67346ad | DracoOmega | 2025-04-04 23:38:07 -0230 Datify form EV bonus and whether they get an offhand punch -------------------------------------------------------------------------------- a4685c7025 | DracoOmega | 2025-04-04 23:38:07 -0230 Remove a stray vampire species reference -------------------------------------------------------------------------------- 9aa9956688 | DracoOmega | 2025-04-04 23:38:07 -0230 Change/improve the talisman form properties display It now displays many scaling values in a table, showing their value at min, max, and current shapeshifting skill (which should hopefully give players a better idea of how much each scales). It also lists resists, which slots are melded, and which categories of mutations are suppressed. (Along with a handful of form-specific things like blinkbolt damage and vampire healing chance.) And, in general, the information is presented in a more compressed format that is easier to read at a glance. Talisman database entries have most lines about their slot-melding removed, since they are now redundant with the more explicit listing right below that. Many Form methods are refactored to accept a specific skill value (with -1 defaulting to 'the player's current skill') -------------------------------------------------------------------------------- acb73b3f8a | DracoOmega | 2025-04-04 23:38:07 -0230 A few minor improvements to column_composer and TablePrinter Allow specifying the number of column width in column_composer at runtime and allow centering text within these columns. Allow having TablePrinter automatically add rows once a certain number of cells are added. (To be used for the new talisman form property display) -------------------------------------------------------------------------------- b320dc18af | DracoOmega | 2025-04-04 23:38:07 -0230 De-duplicate form property popup A block describing various properties of a talisman form was accessible both in the item description of the talisman, and as a tab on the A screen. However, these two popups (despite containing similar information) were constructed using completely separate code (which was also forced to use different formatting, due to the constraints of the A screen being a 'list'-style menu). This commit removes the form properties tab of A entirely, and replaces it with an item popup for the player's current talisman when they examine the form fakemut in the A menu. This conveys the same (or greater!) information without needing to maintain two different codepaths - something especially important as continued improvements are made to it. -------------------------------------------------------------------------------- 6e34e4305b | DracoOmega | 2025-04-04 23:38:07 -0230 Change a number of things about how forms and mutations interact There were a number of poorly-known or understood quirks about which mutations were suppressed by which forms. While the system was *mostly* simple in theory, it resulted in numerous oddities. For instance, gargoyles lost their rElec in many forms (but kept their rN), thin skeletal structure was kept in explicitly boneless forms (even though it is not possible to mutate it on a boneless species), time-warped blood was possible to mutate on bloodless species (though it would always be inactive), naga poison spit was usable in most forms that draconian breath weapons were not, and perhaps most jarring of all: gargoyles were vulnerable to LRD in all forms - even as a wisp! This commit makes a number of changes aimed at fixing some of the more illogical interactions, making behavior more clearly explicated in-game, unifying and simplifying some code, and (hopefully) improving gameplay in a few specific cases. Following some dev discussion, forms can now be considered to modify only the player's anatomy while leaving their substance alone (ie: most fully-body animal forms), only their substance while leaving their anatomy alone (ie: statue form), or modifying both (ie: tree form). Suppressable mutations are tagged as belonging to either of these categories (along with a couple smaller categories used to unify some existing mutation behavior, like 'needs blood') Gargoyle's AC, petrification resistance, and such are now considered explicitly a property of their body being stone, and are 'substance' mutations. They now retain all of these in anatomy-changing forms (meaning that serpent form turns you into a *stone* serpent, instead of a fleshy one), but lose them in substance-changing forms (no more being deconstructed as a wisp!) -This is a clear buff to gargoyle shapeshifting, but they still have -3 apt and I'd argue it's more interesting to keep their core racial perks in more forms instead of those not even being a consideration. Naga and barachi slow movement are now explicitly tied to their naga tail and hop mutations (as 'anatomy'), and they will either retain both or lose both in any form. -This does mean that statue naga are much slower than they used to be, though it was unclear why statue was a 'standard' speed for everyone anyway. Spriggan fast movement is now explicitly magical and no longer suppressed in any form. -Spriggans had the best shapeshifting apt in the game (and are mythologically famous for changing forms), but the combination of their abyssmal unarmed combat *and* losing the core gimmick that makes spriggans any good at all meant that a majority of forms were a complete non-option for them. I think it's more interesting if they get to keep their core identity while transforming, and hope this opens up a little more variety for them. Gnoll item detection is reworded to no longer be a property of their noses (how did that work, anyway?) to put aside questions about suppressing it. Most general resistance mutations are considered now considered 'substance' mutations, meaning they will be retained in many full-body forms that used to suppress them, but lost in statue form. The latter is not a deliberate balance change, but a consequence of trying to apply mostly-predictable rules to this system. Statue form can be individually adjusted later, if needbe. Mutations can no longer be 'partially suppressed' (which was a fair bit of code complexity that was currently used almost entirely to remove AC bonuses from demonspawn scale mutations while retaining their other bonuses - not that it even said what 'partially suppressed' meant in-game!) Since statue form already suppresses most resistances now, this is double needless, in my opinion. In-game mutation descriptions now show what category a mutation belongs to, and forms explicate which of these categories they suppress (though I hope that the relationship will be largely intuitive to players, once they get used to it). Code that controls what mutations the player is eligable to mutate is now also unified with code that controls what mutations are suppressed in forms (rather than being incompletely duplicated). Finally, silver has a more predictable interaction with player forms: the player now takes full damage from it when in any form at all (instead of it being an ad hoc list that somehow considered being a snake more chaotic than flux form!) -------------------------------------------------------------------------------- ade8af2941 | DracoOmega | 2025-04-04 23:38:07 -0230 Change a number of things about tail-slaps and stinger mutation Handling of the tail slap aux attack and stinger mutation were a little tangled. Determining whether the player could perform this aux was done via exclusion (ie: 'if you have a tail, but not any of these other tails') which was more opaque than necessary. Also, it led to several odd situations, like: -Draconians tail-slap aux wasn't displayed anywhere in-game -Naga could mutate a venomous stinger, but never actually attack with it This commit rearranges some logic and makes the following functional changes: -Any species with a tail (except merfolk) can mutate a stinger and actually attack with it if they do so. Yes, this includes felids. (The fact that a regular cat tail isn't a useful weapon seems moot when you've explictly mutated a scorpion stinger, imo.) -The 'tail-slap' attack is actually called 'sting' if you have a stinger. Scorpions don't go around slapping people with their tails! -Draconians of all sorts now share MUT_ARMOURED_TAIL with armataurs. This mutation is now 2 levels, so that armataurs can retain their higher damage. (Both species aux damage is unchanged.) -MUT_STINGER is generally buffed. While other species could ocassionally get it, it was primarily a green draconian species mutation, and they were a bit on the weaker side (and the mutation was *quite* weak, giving only +1 damage on their aux and a 50% chance to apply one level of poison when it passed AC - not very exciting at XL 14!). -MUT_STINGER now gives +3 damage per level (and green dracs get 2). The poison can now apply even if the main hit doesn't do damage (ie: the same as venom weapons - and a large part of why those are even good), which also helps naga/felids who mutate this aux without the base damage of a tail slap behind it. Most mutations should properly update on upgraded saves, though green dracs won't recieve their second level of stinger. (This would require more involved save compat code, given that it's in the general mutation pool, and doesn't seem important enough to bother.) -------------------------------------------------------------------------------- 6607b30490 | DracoOmega | 2025-04-04 23:38:07 -0230 Remove unused RANDOM_NON_SLIME_MUTATION Unused since the Jiyva revamp of 0.28 (and, in fact, would error if we even tried to give a mutation of that type, at present). -------------------------------------------------------------------------------- 42f6460979 | DracoOmega | 2025-04-04 23:38:07 -0230 Datify transformation holiness, make players real plants Rather than being contained inside player::holiness(), forms can now specify holiness changes directly in data. (Vampire and bat swarm are still special-cased, since they apply undead holiness on top of the player's default holiness, rather than replacing it entirely.) This commit also makes fungus and tree form actually give the player plant holiness. Previously, the player was given most of the benefits of having plant holiness in an ad hoc fashion that checked each form directly and wasn't even always consistent (for instance, fungus form wasn't unbreathing, but tree form was!). There may be some minimal functional change caused by this, but nothing significant that I have noticed (besides the aforementioned bug). -------------------------------------------------------------------------------- ba3d2838b6 | DracoOmega | 2025-04-04 23:38:07 -0230 Derive 'no casting' badmut description automatically This was already a data member, but for some reason the badmut was added manually to all forms for which can_cast was false. This is no longer necessary. -------------------------------------------------------------------------------- f5c89d5418 | DracoOmega | 2025-04-04 23:38:07 -0230 Move form base move speed into data -------------------------------------------------------------------------------- 8f33384712 | DracoOmega | 2025-04-04 23:38:07 -0230 Generate form-data.h from yaml This converts the data defined in form-data.h into a series of yaml files in dat/forms (similar to what was done for monsters). The data blocks in form-data.h were very opaque to read or edit, and this should be a lot clearer (while also making future structural changes easier, since default values for new fields can be automatically propogated to any existing form, with less risk of typos). -------------------------------------------------------------------------------- 41bbcf56d9 | DracoOmega | 2025-04-04 23:38:07 -0230 Simplify duration handling for forms The FormDuration class (and its various ways to convert transformation power into randomized duration) was clearly a holdover from temporary form spells, and mostly made it slightly more opaque to calculate the duration of what temporary transformations still remain. This class (and associated code/member of form_entry) is removed, and any temporary transformation effects specify their durations directly (instead of specifying power which was run through FormDuration). All bad forms in the game used the exact same numbers anyway, and the only temporary positive effects are Bat Swarm and Vessel of Slaughter. Polymorph/Porkalator have their formula simplified; duration no longer scales with power (power already affects success chance, after all) and the average is a fair bit shorter (and the maximum significantly shorter). The high roll durations on hostile polymorph were generally excessive; the player was likely to either be dead or completely out of the battle before then (at which point, more turns doesn't mean much). I have preserved the existing duration formula for !lignification exactly (as this is the most important player-facing one). The few other sources, like Nemelex or Jiyva wrath, have also been simplified, but are rare and unimportant enough that numbers are fairly arbitrary and unlikely to matter much. (Finally, I also removed some code for handling extending durations of existing duration-based transformations, which as far as I can tell is no longer possible.) -------------------------------------------------------------------------------- ece6b70641 | NormalPerson7 | 2025-04-04 10:53:26 -0500 Stop Summon Holies trying to summon too many monsters (#4438) Summon Holies has a summon cap of 4, but the code previously allowed seraphs to make up to at least 8 at once, causing the excess to immediately disappear. closes #4288. -------------------------------------------------------------------------------- 7930c9f332 | NormalPerson7 | 2025-04-04 10:16:52 -0500 Fix a crash on casting Passwall during Primordial Nightfall (#4437) Passwall had previously assumed LOS 0 was simply impossible, and trying to cast or aim it with 0 LOS triggered an assert. closes #4348. -------------------------------------------------------------------------------- 94aef208b2 | Hellmonk | 2025-04-04 09:27:31 -0500 Rework trove vetoes (CipHuK) (#4426) Trove skill check logic for weapon vs spell skills (use higher arithmetic mean) did not make a lot of sense. Some characters would care about both weapons and spells, and mean weapon skill among trained weapons does not have the same value as mean spell school. I've opted to make both of these hard skill breakpoints instead. The weapon skill check takes max weapon skill with a low threshold as a better method of determining if a character is interested in weapons. The spell skill check takes sum of magic skills with a higher threshold to indicate characters that care at least somewhat about casting. These trove vetoes are gameable by players who memorize des files for fun, but so were the old functions. Broader trove rework planned for next version. Closes #3445 -------------------------------------------------------------------------------- ff708282ee | regret-index | 2025-04-03 14:55:37 -0230 Track Necropolis visits in morgue files (Ge0FF) Personally, I'd prefer our phrasing to use "You have visited X once" over "You have visited X 1 time", but that's how the Abyss and Pandemonium are both phrased, so it's following those for consistency reasons versus the current "many parts of one Necropolis" portal description flavour. (Maybe it's worth adjusting them all at once?) -------------------------------------------------------------------------------- 052fbde84c | regret-index | 2025-04-03 13:50:48 -0230 Reduce excessively high Necropolis chances, hopefully The portal was missing a `chance_foo` tag as the other portals use, which was resulting in much higher chances to see a Necropolis than CHANCE should be providing. There's some worrying issues with objstat's feature count reflecting very different odds from mapstat on whether or not adding the tag does anything meaningful (possibly from not regenerating the .des cache properly?), and whether or not the `chance_foo` tag properly works to avoid rerolling into the same vault, but this does immediately help the problem at hand by moving from 100% chance to place in D over 100 iterations to ~29% over 100 iterations. -------------------------------------------------------------------------------- bd1523b72e | Nicholas Feinberg | 2025-04-02 16:09:11 -0700 Fix probability_at (DracoOmega) Broken for tables with multiple entries since c1c896e988 (2019). -------------------------------------------------------------------------------- 8b514e5c94 | WizardIke | 2025-04-02 10:53:55 -0500 Fix a crash when zooming local tiles (sulla) (#4424) When zooming in local tiles we call `do_layout` to calculate the new size of the view buffer (as well as other things). however, we need to call `redraw_screen` to actually resize the view buffer before next rendering or the game will crash. We were calling `mprf` before `redraw_screen` which can lead to a force more which can sometimes result in rendering. This change maybe should be applied to earlier versions to, as in at least version 0.32 zooming in map view mode causes force mores by default. -------------------------------------------------------------------------------- 8ee07ae269 | WizardIke | 2025-04-02 10:47:01 -0500 Fix erroneous warning when firing at enemy in front of friendly (dilly) (#4431) The beam would stop at the enemies, so the warning was incorrect. This was broken in commit 1564750 -------------------------------------------------------------------------------- bf953fe936 | Nikolai Lavsky | 2025-04-01 22:41:20 +0300 Remove quokka Specifically, this commit removes an earlier version of quokka's yaml file, which somehow got into the monster yamlification commit (5b44be1dd). -------------------------------------------------------------------------------- 126c83ba82 | mumra | 2025-04-01 19:07:44 +0100 fix(webtiles): Make rcfile editing change backwards compatible The fix in 1e05e1a unfortunately broke rcfile editing if the user received an updated client.js but the Python server had not yet restarted to start exposing the new interface. So if game_id is not present just ignore it and assume it was the last requested rcfile as before. -------------------------------------------------------------------------------- c9706edb85 | David Lawrence Ramsey | 2025-04-01 09:48:30 -0500 Various food cache message updates. Assume for now that poltergeists and revenants can't eat food. Also, move vampire messages down into the forms section, since it's now a form instead of a species. -------------------------------------------------------------------------------- 0c5ade9840 | NormalPerson7 | 2025-03-31 21:57:46 -0500 Fix some issues with coglins wielding and unwielding weapons (#3880) - Fix distortion unwield banishment triggering a turn late for coglins - Fix delay interrupts (most notably abyss entry from coglin distortion unwield) from asking the player twice whether they would like to "Keep equipping themselves?" Another thing that arose during the making of this PR: when being banished or shafted, `you.time_taken` is set to 3/4 of the usual time it would take for the player to complete their action, which can have bizarre effects. Attacks and spells can be cast, items can be equipped, scrolls/potions/wands can be used, all randomly and inexplicably 2-3 auts faster than usual. This feels a bit counterintuitive, and I wouldn't be surprised if it has unintended effects. There was a bug I experienced a while ago with ?revelation carrying over to the new floor when being shafted the turn after reading the scroll which I couldn't reproduce, but I wonder if this is related. -------------------------------------------------------------------------------- 567e58e7c7 | David Lawrence Ramsey | 2025-03-31 18:14:00 -0500 Make slime shroud use the generic Jiyva mut tile. Since it doesn't have a specific tile, and it's a Jiyva-only mutation. -------------------------------------------------------------------------------- 50241e219b | regret-index | 2025-03-31 19:47:01 -0230 Quickly fit in some more 4/1 tiles (CanofWorms) One of these was intended for magical staves, but the code matching tiles for those as identifiable and visually consistent between types is a fair bit of a headache to slip in temporary tiles for, so I instead gave it to Yiuf. While I'm at it, I also re-enabled a much older hat tile, since it suits the time at hand. -------------------------------------------------------------------------------- c49d4a5c3e | regret-index | 2025-03-31 19:47:01 -0230 Even more green tiles (pianoman523 / LemurRobot) A non-generic mutation icon for Jiyva's pseudopods mutation and a spell tile for Detonation Catalyst, to be more specific. Neither have been adjusted much beyond palette adjustments to be closer to other Jiyva / fire / alchemy icons. -------------------------------------------------------------------------------- 350d6bbb2a | regret-index | 2025-03-31 19:47:00 -0230 Make green draconians monsters sting, not tail-slap Player green draconians grow venomous stingers, so monster green draconians should actually reflect this in messaging rather than their scaly tail slaps managing to somehow spread poison. -------------------------------------------------------------------------------- a3193f7d8d | regret-index | 2025-03-31 19:47:00 -0230 Move gnolls from 'g' to 'j' glyphs The 'g' glyph hosts a somewhat eclectic set of differing monsters: Goblins, gnolls, boggarts, and dwarves. (Some of this is inherited from when the Dwarven Halls wanted their own batch of dwarves and were moved from 'q' to 'g' to help distinguish classed draconians in Zot.) With three out of four of these having gained player representation back in 0.32 as quite popular species with straightforward flavour, there's a reasonable incentive to have some additional monsters for them in the future (such as a gnoll with an actual spread of different spells, coglin forgewrights, or goblins recklessly trying other means of gaining power). The glyph, however, contains 14 monsters already, leaving very little space in console to add any further without some change. To facilitate this, I'm splitting these apart based on cliches of size. Gnolls have no history nor media depicting them particularly as small spirits, which otherwise unites goblins, boggarts, and dwarves. (Crawl dwarves not being small is silly, but a long foregone matter.) They are thus being moved into their own seperate glyph using one of the few remaining current unused console glyphs, 'j': 'j'nolls shouldn't be much weirder than the decade or so of 'g'warves. All monsters involved are otherwise preserving their colours, aside from dwarf dummy monsters being moved from green to Wiglaf's lightgreen (since nearly all dummy monsters are locked behind glass anyway). (Honestly, it'd help with several other spaces if we could add more console glyphs outside of standard keyboards, as constructs are overloaded on '9' and dogs / cats / bears / hogs are crammed full into 'h', but even if we committed to doing such they'd still need some deliberate division as been done here.) -------------------------------------------------------------------------------- a40bc8c295 | regret-index | 2025-03-31 19:47:00 -0230 More adjustments for newer monsters * Sphinx marauders are now large instead of giant, both to reflect them being younger than the guardian sphinxes as well as accommodating impending future uses of non-giant-sized sphinxes. * Friendly protean progenitors no longer use the standard human intelligence random dialogue, since they're not any talkative in their normal messages. * Wyrmholes have climbed to the top of killers in Depths since their addition three months ago, which is admittedly further than I particularly planned- while it's good for Depths to have more extremely distinct monsters from V:$ and most of Zot, they're not meant to quite quash down any other comparative threats in the branch. (It's hard to tell how many people also died to not bothering to cancel the teleport, though.) They've been pushed deeper into the Depths depth-scaling and are somewhat less common (with alderking weight pushed up slightly to compensate), as a consequence. They also have had some of their numbers slashed slightly- less hp, lower cast rate for their breath, and speed 12 over speed 13. I'll still be keeping an eye on them, but I'd rather reduce their numbers a little further if needed rather than otherwise nerf their suite of defenses or their central displacement gimmicks. -------------------------------------------------------------------------------- f22e4207f8 | David Lawrence Ramsey | 2025-03-31 14:30:26 -0500 Add another pattern and glowing adj. to colours. -------------------------------------------------------------------------------- 7f1b14aa5c | WizardIke | 2025-03-31 10:00:54 -0500 Fix player tracers not warning when path is blocked (staticshock) (#4421) When trying to shoot through a plant or transparent wall you should get a message such as "Your line of fire to the ogre is blocked by a plant". However, I broke this in commit 1564750 -------------------------------------------------------------------------------- 1e05e1a6a0 | mumra | 2025-03-31 07:39:42 +0100 fix(webtiles): Don't flash wrong rcfile if two different "edit rc"s clicked It was maybe impractical for this to happen except on a very slow network, but certainly possible to briefly see the wrong rcfile or even to not see the correct one at all if messages were somehow received out of order (shouldn't happen, as websockets guarantee messages are recieved in the order they're sent, but who knows what could happen inside Tornado). -------------------------------------------------------------------------------- 26fe8ce49a | radio-gra | 2025-03-30 21:59:11 -0500 console: draw waypoints over other items and features (#4323) Currently, waypoints are only displayed on otherwise empty squares on the level map view. In combination with them not being xv-able and not reporting any sort of coordinates other than what level they're on, this makes it so that if anything overrides them, they become impossible to find without actually traveling to their exact location. For my use case, this is a very annoying problem - I use waypoints to track timed portals and mark encounters with monsters that indicate potential branch entrances (e.g. redback on L:3), and in general for annotations that are more location-sensitive where annotating the whole floor doesn't cut it. Especially when scouting portals, being able to see exactly where the waypoints are at all times is very important. I understand that x-marks-the-spot may not the intended use case for waypoints, but I suspect it to be by far the most common one. -------------------------------------------------------------------------------- f145acab4e | Charlie Gettys | 2025-03-30 21:42:38 -0500 fix: AUTOFIGHT while immotile should not wait (CrawlOdds) (#4399) If immotile (e.g. from -Move), we should not wait when you try to autofight by default. No other case that I can see will wait unless AUTOFIGHT_WAIT is set - why is this one different? This logic was added last year in 52037ea7a925a6ae6b1b67939267cd8f1f4837a4. I'm guessing because it was confusing to hit tab and have nothing happen? but mpr would make more sense to me to solve that. Gate the old behavior behind autofight_wait. Could add another option for it instead, but it seems consistent with the behavior of the autofight_wait option in general. Closes #4394 -------------------------------------------------------------------------------- fe11bc45f1 | Alex Jurkiewicz | 2025-03-30 21:22:09 -0500 feat(webserver): Add game_id to rcfile_contents (#3496) When webtiles clients request an rc file's contents, they send a `get_rc` message with a `game_id` property. The webt iles sever responds with a `rcfile_contents` message that has a `content s` property. Because the response doesn't include `game_id`, the client has to treat this as a stateful request. It has to remember what was recently requested and can't pipeline multiple requests. The current webtiles client stores this state in the UI and will ignore the additional property. But its existence will simp lify design of future webtiles clients. -------------------------------------------------------------------------------- 74edd5530c | David Lawrence Ramsey | 2025-03-30 17:35:25 -0500 Add another adjective to artefact books. -------------------------------------------------------------------------------- 5d77c6c51e | Heinrich Ody | 2025-03-30 17:12:51 -0500 Optionally add target location description (#4073) ### Main Changes In #1422 several ways to improve accessibility for visually impaired players are discussed. I believe the issue can be closed when this PR is merged. This PR adds showing location description along with tile descriptions during aiming and viewing. To enable this feature `Options.monster_item_view_coordinates` needs to be set to true. See also "Options for blind players" from the options_guide. ### Other Changes Also added some comments to some description methods. ### Pictures Some pictures (or terminal outputs) to visualize the changes. New is `Location (x, y)`. #### When pressing `f` with a ranged weapon: ``` Fire: e) +0 orcbow Press: ? - help, Q - select action Shift-Dir - straight line Location (0, 3) sefie the Shield-Bearer *WIZARD* Minotaur Health: 19/19 ======================== #### Magic: 0/0 #.. AC: 6 (26%) Str: 20 #.ß EV: 8 Int: 5 #.. SH: 0 Dex: 9 #.# XL: 1 Next: 0% Place: Dungeon:1 #*# Noise: 0 ------ Time: 6.5 (0.0) #*# e) +0 orcbow #☺# Fire: e) +0 orcbow #.# #.# #.# #.. #.ß #.. #### ``` #### When pressing `x`: ``` Press: ? - help, v - describe, . - travel Location (0, 0) A staircase leading out of the dungeon. sefie the Shield-Bearer *WIZARD* Minotaur Health: 19/19 ======================== #### Magic: 0/0 #.. AC: 6 (26%) Str: 20 #.ß EV: 8 Int: 5 #.. SH: 4 Dex: 9 #.# XL: 1 Next: 0% Place: Dungeon:1 #.# Noise: 0 ------ Time: 1.0 (0.0) #.# a) +0 rapier #☺# Nothing quivered #.# #.# #.# #.. #.ß #.. #### ``` ### Background After discussion a few items where suggested in #1422 as improvements: > During standard interactions, place the terminal cursor at the new-turn underscore instead of at the player, so that "start reading from cursor" reads the message window. > During targeting mode, place the terminal cursor at the description portion of the message window, so that "start reading from cursor" reads what's currently being targeted (and add an option to display the player relative coordinates). > For other things that use the message window for a prompt move the cursor appropriately to the start of the prompt. > When displaying full screen menus, move the cursor to the top left > When full screen menus give a prompt (like in acquirement) move the cursor to the start of the prompt. Most of the suggested changes already have been merged into crawl (except the additional positions when aiming). The cursor positioning is made unnecessary by placing the message window at the top of the terminal, and by clearing old messages (see also "Options for blind players" from the options_guide). -------------------------------------------------------------------------------- 57531695c7 | Hellmonk | 2025-03-30 16:39:02 -0500 Adjust shop pricing (#4417) Reduce the price of heavy armours and orbs. Increase the price of most strong weapon types. Increase price scaling with depth, especially for consumables. Hoping for more interesting shop decisions later in the game; more changes to come but probably not in this version. -------------------------------------------------------------------------------- 17c16fb7e5 | WizardIke | 2025-03-30 16:28:22 -0500 Fix harmless beams prompting when hitting allies (cool 3) (#4416) There shouldn't be a prompt warning you that you will hit your allies with a beam if the beam is harmless to your allies. I accidentally broke this in commit 1564750 -------------------------------------------------------------------------------- d2c03782b8 | gammafunk | 2025-03-30 12:53:33 -0500 Fix a DES typo (AutarchDCSS) Fixes #4414. -------------------------------------------------------------------------------- 7451b4b137 | WizardIke | 2025-03-30 12:16:08 -0500 Fix closing doors with the mouse (#4276) Control left mouse clicking an open door would result in an unknown command message instead of attacking in the direction of the door. The reason for this is that the game would try to close an open door if you control left clicked it and couldn't see a monster on it, but generate the command to do so incorrectly. This is a bad idea as control left clicking is almost always used to attack invisible monsters. This change moves closing doors to shift left clicking and fixes the generation of the command. Fixes #3801 -------------------------------------------------------------------------------- 8bb8084e21 | DracoOmega | 2025-03-30 14:14:58 -0230 Warn the player when firing Mule could trigger a trap (CarefulOdds) Similar logic already existed for Bombard, but not for Mule. -------------------------------------------------------------------------------- cefcf6c28b | gammafunk | 2025-03-30 00:30:55 -0500 Fix a lua typo For Necropolis, the internal difficulties are always lower-case. -------------------------------------------------------------------------------- 3993efc380 | Hellmonk | 2025-03-30 00:15:38 -0500 New spell: Detonation Catalyst (#4388) Playing with buff duration and melee on-hit effects. Detonation Catalyst is a level 5 Fire/Alchemy spell that causes melee hits to do an ignition-style shaped explosion centered on their primary target. Does not work on cleaving attacks, but does work with reach, WJC move attacks, rampage, electric charge, manifold assault. The duration is extremely short (30-50 aut), but attacking prevents the duration from decreasing. Also, a large percentage of the spell's damage comes from the weapon's base damage. Please charge into enemies while wielding dark maul I am begging you, it will be really funny. --------- Co-authored-by: DracoOmega Co-authored-by: gammafunk -------------------------------------------------------------------------------- 1564750bf8 | WizardIke | 2025-03-29 23:15:40 -0500 Improve player tracers (#4219) Players can fire two kinds of tracers. The first is used to check for a target and e.g. gray out your quivered spell if it has no target. The second is fired by functions like `player_tracer` and warns when there are bad targets (e.g. yourself or an ally). Instead of choosing between these two by setting a combination of flags on a bolt before firing it, choose between them by passing a different tracer class to the bolts fire method. when firing a tracer with the `player_tracer` function don't just warn about one of your allies that would be hit, instead warn about all of them in the same way that melee attacks do (e.g. when using the singing sword). Also, don't spam warnings when firing a starbust that will target you multiple time, instead just say up to how many times the starbust can hit you. Fixes #4151 -------------------------------------------------------------------------------- aa25462d22 | David Lawrence Ramsey | 2025-03-29 22:42:44 -0500 Fix wording. -------------------------------------------------------------------------------- e0a373db31 | David Lawrence Ramsey | 2025-03-29 22:42:44 -0500 Fix typos. -------------------------------------------------------------------------------- f69652860f | David Lawrence Ramsey | 2025-03-29 22:42:44 -0500 Fix spelling. -------------------------------------------------------------------------------- 185f48b25f | regret-index | 2025-03-30 01:06:08 -0230 Remove a vault testing weight (Darby) -------------------------------------------------------------------------------- 9b26fc442c | regret-index | 2025-03-30 00:54:29 -0230 Fix tag upgrade wrapping for Necropolis -------------------------------------------------------------------------------- 45187ed2c3 | DracoOmega | 2025-03-30 00:32:45 -0230 Re-allow chaos weapons for player ghosts/illusions It's not clear to me why it even remained banned when distortion was allowed, but certainly seems unnecessary these days. No holy wrath weapons on ghosts makes thematic sense, but unfortunately this code is also used for player illusions, which currently means that you can't even clone a holy wrath weapon you're wielding onto a 'living' illusion. I'd like to fix this too, but there's some... tricky jank involved, so I am deferring it for now. -------------------------------------------------------------------------------- e3b193ec8d | DracoOmega | 2025-03-30 00:32:45 -0230 Make player ghosts/illusions actually copy the player's move speed The reasoning for making all player ghosts move speed 10 dates from a much earlier time when ghosts freely roamed the dungeon. It was probably unnecessary to deprive spriggan ghosts of their speed after ghost vaults were first made to exist and seems even moreso now. (And, in my opinion, it was extra weird that copies made by Mara or the Illusion Card didn't respect the player's speed.) Due to how bones files are saved, this won't *retroactively* make spriggan ghosts fast or naga slow, but should affect ghosts moving forward (and the permastore has long been wanting an update...) -------------------------------------------------------------------------------- 7c26d03b70 | DracoOmega | 2025-03-30 00:32:44 -0230 A little backend work for Necropolis Draw player ghosts in Necropolis from the floor the Necropolis is entered from. Also set absdepth for item generation in the same way (so that both enemies and rewards scale properly no matter what point in the game one takes the portal.) -------------------------------------------------------------------------------- 72caabbf62 | regret-index | 2025-03-30 00:32:29 -0230 Move ghost vaults into the Necropolis, a game-long repeating portal Ghost vaults, while a reasonable approach to the former issues of deliberately making spoilery griefing ghosts way back when, have a variety of implementation issues in the current day: * While newcomers may willingly walk into out-of-depths put on direct display, many cautious experienced players will put off the vast bulk of them until they're harmless (give or take zombies), which throws out most of their interest and complexity. This capacity to backtrack also make the majority of early vaults contain minimal rewards, which itself further emphasizes them as mostly a trap early on. * Their need for sufficiently-varied themes somewhat distort the branches they appear in, with undead in many branches that otherwise avoid being unholy, Slime spawns in Elf, or Xom and Lugonu absolutely everywhere with little restraint or care. * In Depths and Zot, three quarters of ghost vaults using "ORIENT: float" ends up eating the regular vault slot those floors could have used for distinct and flashy vaults that aren't particularly stuck as optional challenges. To address all of these concerns at once, especially the first of these, I am porting them all into a new portal: the Necropolis. Up to three of these can spawn each game: One in D, Lair, or Orc; one in Snake, Swamp, Spider, Shoals, or Vaults; and one in Elf, Depths, or Crypt. Each Necropolis contains entry groves, wide-open empty halls, and three ghost vaults, in an attempt to distinguish them compared to other confined portals. Ghost vaults themselves on average have been made larger to accommodate this, and are each still discrete optional chambers held behind runed doors or transporters; as thus a free selection of given challenges, it should also feel different enough from other portals to function fine in its own highlighted fashion. (Many vaults have been given some marginal additional rewards and weakened when appearing early, but it is fine if players do not opt to take all or even some of the challenges each Necropolis, since this is mostly focused on improving the status quo; in this same spirit, Necropolis portals take 50% longer to disappear than other portals, so people won't feel as rushed.) (This portal also comes with a large amount of unique tiles to try and evoke a certain muted starry otherworld, as well as a variety of new entry vaults, some preliminary layouts, and my own hand at themed vaults scaled throughout the game. See prior commits for tile credits there.) Alongside those 10 more ghost vaults to join a total of about 42 other ghost vaults, there are many specific implementation wrinkles involved: * The entry gardens use runed doors so instant autotravel defaults on webtiles aren't going to completely miss the non-ghost-vault parts of each level, which mildly slows down play but hardly by enough for me to particularly worry much. * The outsider perimeters of ghost vaults are not no longer tagged as no_tele_into, since there's so much more space around them now. To reduce the overall effectiveness of teleporting right as one opens up runed doors for this portal dependent on them, all vaults are tagged as patrolling, so it's now much harder to split up the vault's contents away from one another. * Ghost vaults that just contain one ghost and ghost vaults that focus almost solely on undead monsters can only appear once a floor, to try and reduce the portal feeling too much like Ossuary 2: Crypt 4. * No Necropolis entries appear in Zot despite ghost vaults existing there previously, as that contains no portals. There have been additions to Zot's stair vaults over the past few versions, so this shouldn't be too much of a loss to that branch. * Lair branch appearances sans Slime (i.e. Snake, Swamp, Shoals, Spider) regularly use subvault contents across branches, and the latest appearances of Necropolis (Vaults and Elf, Depths and Crypt) always share their contents entirely. Portal vaults at this depth already pull from extended branches like the Hells and Pan, or outright contain unique monsters entirely like Desolation, so there is a pressing need to be able to vary up ghost vault contents with sufficient difficulty to reasonable compare to the endpoints of those portals. Additionally, Elf and Crypt both have very limited monster sets in themes and raw number count, while already overlapping in tangible ways with V and Depths respectively, so sharing potential subvault contents with the other branches helps expand the amount of monsters a Necropolis can use when placing three vaults per visit. * (While this results in some very non-undead ghost vaults for Crypt, that branch getting access as Depths has to the vast majority of all ghost vaults options feels entirely appropriate.) * A variety of newer ghost vaults use very... novel runed door arrangements. None of them are really much worse than what has been heavily established by door_vault, though, and they present some less singular approaches compared to single boxes with one small runed door entrance, so they should be fine. * One vault (gammafunk_gnarly_gnolls) was too large to fit in Necropolis subvault sizes and has had its ghost removed, while another vault (nicolae_yredelemnul_ghost_church) also has had its ghost removed. Ziggurats still keep their access to player ghosts also. * (Runed door and transporter vaults not reliant on player ghosts have not been touched. A large focus of this project was inherently focused on how player ghosts as a minimum of vault contents can be very notably dangerous in a fashion that encourages delays, and there were substantially more ghost vault appearances than other such runed door or transporter vault appearances due to their flat chance each floor.) -------------------------------------------------------------------------------- aaf212a877 | regret-index | 2025-03-29 21:30:39 -0230 Necropolis's near-comprehensive new tile set Split from the following commits to credit each of the sources for the tiles, and to make it easier to keep them around if the ghost vault / ghost portal quandry ends up being handled in a completely different way instead. * The entrance, exit, and absence tiles use roctavian's Bazaar, old Slime, and old Shoals entrance tiles. * The trees use Sastreii's trees, dead trees, and demonic trees. * Floor tiles mix floor_crystal_squares, floor_mosiac, and floor_grass. * Stone walls mix Swamp's stone, Snake's stone, wall_marble, floor_demonic, and Denzi's icons for Berserk Rage, Cause Fear, Silence. * Metal walls mix Denzi's Dis walls and CC0 scraps by Surt. * Clear permarock combine ontoclasm's various clear wall tiles with more CC0 scraps by Surt. * Gravestones are just a portal-appropriate recolouring of Purge's previous gravestones. * The decorative deep water mixes the current deep water with ontoclasm's dimensional edge for the Golubria wizlab. * Okawaru and Gozag flavoured iron statues use CanOfWorms's bailey statues, roctavian's golden statues, and ontoclasm's iron golem statue. -------------------------------------------------------------------------------- 3b93c1ba95 | regret-index | 2025-03-29 21:30:33 -0230 Petrified plants -> petrified flowers (as their own monster) We've used two different variants of petrified plants before this point, with evilmike_catoblepas_cave using a singular greyscale variant of an old plant tile for perm_ench:petrified normal plants with a custom description, and ebering in both Desolation and an ecumenical altar vault using withered plants without a custom description. The former case both required tile updates never bothered with, would be easily inaccurate after dispelling, and produced lines like "a petrified plant (petrified)", while the latter has been granted brown dying plant tiles in 914cb65 and thus no longer visually suit it. They are still a somewhat useful conceit, however, as a plant that can match with petrified trees and which tells a small story in-and-of itself. As such, I'm revising these entirely with a new directly stone tile and monster, which can also help out the themes of an upcoming portal. Petrified flowers follow the sturdiness of sacred lotuses in b3a183b (and not the frail boulders of d9500d9) in being extremely difficult to destroy and not slowly dying on hit, relying more on being omniresistant rather than regeneration. (Hopefully, when combined with being used only in rather sparse numbers, people won't feel obliged to destroy it and it can actually survive standard dungeon violence.) They count as both non-living and plants, which mostly matters for showing as non-living in the description but still allowing Fedhas characters to walk through them. They're been given some melodramatic description flavour to fit their use in Desolation, and outside of the grandfathered-in earlier vaults should only be fit into more dramatic portals or the Realm of Zot (where I've tried to slowly further emphasize a tertiary theme of the extremely ancient and primordial.) Their tiles are comprised of ontoclasm's old Fedhas Evolution ability tile and red tufts of grass from a CC0 ninja-themed asset pack by pixel-boy. -------------------------------------------------------------------------------- 344fa49817 | regret-index | 2025-03-29 21:29:49 -0230 Don't use spider zombie tiles for emperor scorpions With a seperate scorpion zombie tile already extant, and an extreme unlikelihood with current design paradigms to mix normal scorpions with emperor scorpions in the same vault, we might as well make the strongest zombie type for Spider not be literally the same tile as the weakest. -------------------------------------------------------------------------------- e3b8f7ef18 | regret-index | 2025-03-29 21:29:48 -0230 Don't do unnecessary terrain fix-up for spectrals in vaults Previously, when vaults placed spectrals, they'd check the habitat of the monster they were derived from to see whether or not they'd need floor forcibly placed under them instead. Spectrals, unlike other derived undead, fly, which makes them not need any terrain checks at all; as such, this fixes them getting unnecessary land placed under them when otherwise put over lava or deep water. -------------------------------------------------------------------------------- 804bde4694 | DracoOmega | 2025-03-29 20:15:44 -0230 Fix monsters from Lugonu's Corruption lasting forever (Ge0FF) Likely broken since fb19e97205a5 this was possibly the only place in the code where summoned monsters were made with no summoner *or* summon type (that weren't also *intended* to be permanent). But in general, it feels like giving something a summon timer ought to actually apply its summon timer, so modifying the core function like this makes sense to me. -------------------------------------------------------------------------------- c301a0fa6f | MikeJHeg | 2025-03-29 10:27:27 -0500 Fixed description of Zot trap to be more accurate (#4400) Zot traps don't actually have the effect of throwing you into the abyss in their effects table. Removed that line in the description and replaced it with petrification. -------------------------------------------------------------------------------- c4a73f2e74 | Aliscans | 2025-03-29 09:56:56 -0500 Stop making notes about once-forgotten features. (#4086) The game makes a note of some features whenever they are marked as "seen". The "forget level map" command clears the "seen" flag for most of the features on the current level, meaning that something could have several notes made about its discovery. Only make a note the first time something is seen. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 0ac082cc57 | Hellmonk | 2025-03-29 09:48:26 -0500 Slimy Shroud Jiyva mutation (#4367) Loosely based on the removed shroud of golubria spell, but with a simplified design. It has a 1/4 chance to negate a melee attack, after which it goes on cooldown for a while depending on the damage prevented. -------------------------------------------------------------------------------- 9fdd3ef415 | radio-gra | 2025-03-28 09:56:27 -0500 Mark maxed out misc evokers as useless if not in player's inventory (#4402) Existing code only marks useless misc evokers as such if they're in shops, but if they're just laying on the floor they are currently not considered useless. This is a nuisance in zigs, which have one or more evokers on almost every floor, quickly maxing them out and adding more visual noise to an already overloaded ctrl-X menu. The hacky inventory check is not ideal, but I couldn't come up with a better solution without going out of my depth and messing with core functions. I checked all edge cases I could think of like standing on +5 evo while having a copy in your inventory -------------------------------------------------------------------------------- b62e7e9324 | WizardIke | 2025-03-28 09:38:39 -0500 Fix the mouse doing incorrect commands when keys are rebound (#4282) We were converting some mouse commands into the key press that would result in that command with default key bindings. For example, if the '<' key was rebound to open the read scrolls menu, clicking on an up staircase you were standing on would open the read scrolls menu. Fixes #3799 -------------------------------------------------------------------------------- 86ab01573d | David Lawrence Ramsey | 2025-03-28 09:22:17 -0500 Unbrace. -------------------------------------------------------------------------------- 41a24375dd | hellmonk | 2025-03-28 09:20:42 -0500 checkwhite -------------------------------------------------------------------------------- 780a91e42c | hellmonk | 2025-03-28 09:20:21 -0500 update credits -------------------------------------------------------------------------------- 30fa6646ce | hellmonk | 2025-03-28 09:14:19 -0500 Don't persist bind soul through stairs (kleiner-fisch). Closes #4078 and #4075. Not taking the rest of 4078 because current behavior with dropping los is intended, per DracoOmega. -------------------------------------------------------------------------------- a82abb8be2 | cadi | 2025-03-28 09:10:18 -0500 [webTile] : add expiring description for expiring status (#4110) Indicate status expiration in the tooltip description ui. -------------------------------------------------------------------------------- 846544658f | Nikolai Lavsky | 2025-03-28 14:14:21 +0300 fix: display the vexed status icon in webtiles Followup to f4f8fbaca. -------------------------------------------------------------------------------- 12c12526e9 | mumra | 2025-03-27 23:23:10 +0000 Fix a comment There is no read_scroll function, so make this comment a bit more accurate. -------------------------------------------------------------------------------- 04438170c2 | mumra | 2025-03-27 23:23:03 +0000 Remove a last vestige of monster scroll use Since 35f977f monsters will not pick up or use any scrolls, so this code is now unneccesary. -------------------------------------------------------------------------------- a6697884fe | Nikolai Lavsky | 2025-03-27 23:43:26 +0300 docs: remove inedible corpses from the options guide and replace them with a more contemporary example. -------------------------------------------------------------------------------- 064f4b25fe | Kyle Rawlins | 2025-03-27 14:43:57 -0400 build: only rewrite job/species files when changed Previously, all generated files would be unconditionally rewritten whenever these scripts were called. Because this guarantees an updated mtime on species-type.h and job-type.h, which are included in a very large number of files, this typically triggers a full rebuild even if the content of these files does not change. Sure, ccache solves this, but it's a very easy issue to hit for new users who aren't yet at the advanced stage of installing ccache. This commit only rewrites generated headers if they do change. via: https://www.reddit.com/r/dcss/comments/1jl7qsf/why_when_i_compile_dcss_after_edi ting_jobs_or/ -------------------------------------------------------------------------------- ae8f5d1afa | WizardIke | 2025-03-27 10:08:42 -0500 Make monsters stop attacking when their target becomes friendly (#4366) For example if you have an allied zombie hydra and it defeats an orc challenger sent after you by Beogh, it shouldn't use its remaining attacks to attack the now friendly orc. Partial fix of #4352 -------------------------------------------------------------------------------- 0f6edee007 | Aliscans | 2025-03-27 09:55:23 -0500 Don't hang on SIGHUP in wizard_mod_tide(). (#4285) Make Crawl shut down correctly in some situations where it didn't already. Make wizard_mod_tide() respond to seen_hups, rather than ignore it. Make ui::delay() treat seen_hups as if the user had pressed the Escape key. --------- Co-authored-by: Aliscans -------------------------------------------------------------------------------- 4c332b3a82 | hellmonk | 2025-03-26 22:10:37 -0500 Adjust hexagon encompass Trim some of the exotic monsters and reduce monster count. -------------------------------------------------------------------------------- 122d78936f | Isaac Clancy | 2025-03-26 17:24:38 -0230 Fix a crash when casting phantom blitz (Colgate) When a monster cast phantom blitz with all 700 monsters on a level, the game would crash. -------------------------------------------------------------------------------- f708817d99 | DracoOmega | 2025-03-26 00:10:24 -0230 Hopefully maybe fix a cryptic Beogh conversion crash It's not entirely clear to me the sequence of events required to trigger the crash in a real game, though at least two people have. It seems to (maybe) require returning to a level with no monsters on it, which still somehow has the LSTATE_BEOGH flag set, while the player is injured enough to be able to convert to Beogh. Though it's unclear to me how that flag can *be* set with no monsters on the floor (it also probably only happens on webtiles, due to codepaths involving milestones being examined on floor transition.) But at any rate, env.max_mon_index should probably never be -1, even if it's unclear *exactly* why that is resulting in this crash via monster_near_iterator. -------------------------------------------------------------------------------- 2ccf60101c | DracoOmega | 2025-03-25 16:06:22 -0230 Fix an off-by-one error with loading env.max_mon_index If somehow a floor had generated enough monsters to hit MAX_MONSTERS, and was loaded again in this state, monster_iterator would try to iterate past the actual monsters and crash. (Hitting MAX_MONSTERS during the game itself was handled properly.) -------------------------------------------------------------------------------- c6c205540b | Nikolai Lavsky | 2025-03-25 16:34:04 +0300 fix: an issue with subprocess and signal modules in Python 3.12 Launching the server gives the following error on some Python 3.12s: "AttributeError: module 'subprocess' has no attribute 'signal'." Previously, the subprocess module imported `signal`, so it was possible to use `subprocess.signal`. But this `import` was removed from the module in [1] in January. This caused some bugs, and the commit was reverted [2] on Feb 16, half a month later. Some distributions, for example Arch Linux, provide Python 3.12 with the commit [1], but without [2] (yet), hence the error. To fix this, import the signal module directly instead of relying on `subprocess` to provide it, as was suggested in #4353. Also, the subprocess module is not used for anything else in `process_handler.py`, so it should be safe to remove. This addresses the second part of #4353 and allows to run the server on Python 3.12. Other supported versions of Python shouldn't be affected by this change at all. Supporting 3.13 requires replacing the deprecated crypt module, which should be done by someone more familiar with the authentication code. [1] https://github.com/python/cpython/commit/f65aa0d1 [2] https://github.com/python/cpython/commit/042b4924 -------------------------------------------------------------------------------- 46e4344c46 | hellmonk | 2025-03-24 23:26:27 -0500 Allow spellvamp with vampiric draining. Closes #3693. Moved to beam code as per comment. -------------------------------------------------------------------------------- e63a381d31 | Brian Faires | 2025-03-24 22:43:10 -0500 Add lua function item.inscribe(inscription="", append=true) (#2805) Currently, no way to set inscriptions from lua aside from sendkeys(). That gets messy and spams the dialog. Added function to append or replace an existing inscription. -------------------------------------------------------------------------------- ecfa6e8a7d | WizardIke | 2025-03-24 22:27:36 -0500 Don't crash when targeting outside map (#4372) When targeting outside the map, `direction_chooser::update_previous_target()` would search for the monster closest to the target to set as your previous target. However, the radius_iterator used for this was asserting that the target was inside the map. Fixes #4368 -------------------------------------------------------------------------------- 6208d13a8f | WizardIke | 2025-03-24 22:24:39 -0500 Fix the tile_runrest_rate option (#4385) This option controls how often we render in milliseconds when resting, exploring, or travelling. However, it was being ignored resulting in large amounts of time being washed waiting for vsync or rendering updates that were never going to be visable. I also, reduced its default value from 100ms to 17ms as 10 fps felt choppy. -------------------------------------------------------------------------------- 9300408954 | Charlie Gettys | 2025-03-23 23:41:36 -0500 ci: fix checkconventionalcommit.py (#4312) Python version in CI doesn't like line 36. My local version of Python is fine with it. Split the statement in 2 to satisfy more Python versions. Also exclude certain branches from main repo. We're not gonna fix past commit messages. -------------------------------------------------------------------------------- 9c36f3742a | WizardIke | 2025-03-23 23:36:48 -0500 Make fair_adjacent_iterator fair (#3914) The old fair_adjacent_iterator would visit the tiles around it in the following order 1 4 6 2 x 7 3 5 8 starting from a random tile and wrapping around when it reached the last tile e.g. if the random start was 4 then 4,5,6,7,8,1,2,3. So imagine for example a yellow ugly thing surrounded by walls and other ugly things trying to pick a random ugly thing around it when changing colour as shown below w=wall r=red ugly thing y=yellow ugly thing b=brown ugly thing c=cyan ugly thing g=green ugly thing w w r w y b w c g if the random start was an adjacent ugly thing that ugly thing would be selected, however, if the random start was one of the walls the iterator would be advanced until it reached the cyan ugly thing and it would be selected givng the cyan ugly thing a 5/8 chance of being selected and the red, brown and green ugly things 1/8 chance each. This change makes fair_adjacent_iterator visit the tiles around it in a random order (without repeats) -------------------------------------------------------------------------------- c4b2e2bd67 | David Lawrence Ramsey | 2025-03-23 23:19:16 -0500 Fix spelling. -------------------------------------------------------------------------------- 8bf82eaf03 | hellmonk | 2025-03-23 23:12:26 -0500 update credits -------------------------------------------------------------------------------- d0d60a0ba6 | hellmonk | 2025-03-23 23:01:45 -0500 Update background descs (NotAJumbleOfNumbers) Make some magic backgrounds more descriptive. Thanks Mumra for the hedge wizard and air elementalist descriptions. Also, update Fighter and Warper to correctly describe their consumables, and allude to Cinder Acolyte starting spell. -------------------------------------------------------------------------------- e3852c236f | WizardIke | 2025-03-23 22:18:06 -0500 Allow manifold assault with the Sword of Power (#4393) When the Sword of Power shoots a bolt, start the bolt from one space before the defender in the direction from the attacker to defender instead of always starting from the attacker. This allows it to make attacks it a distance with manifold assault. -------------------------------------------------------------------------------- bd99899e7f | gammafunk | 2025-03-22 22:19:15 -0500 Fix teleport closets in a vault (notthatgreg) The vault minmay_twisted_water has various squares that are fully surrounded by walls and deep water. Update these to have the no_tele_into KPROP. Also remove an unused MONS entry. Fixes #4395. -------------------------------------------------------------------------------- 2614225963 | gammafunk | 2025-03-22 16:03:20 -0500 Fix a spell description (CarefulOdds) The description for Summon Horrible Things referenced its former int drain effect. That was replaced with adding a weak-willed temporary mutation. Although this negative effect will be revisted in the future, this is what the spell does for now, so update its description. Also use a more accurate spell description key name. -------------------------------------------------------------------------------- 28f6e29f1b | DracoOmega | 2025-03-21 23:04:45 -0230 Fix being able to equip all shields on any size of character (kfkqmtg) An oversight from 10c1f53 -------------------------------------------------------------------------------- 8d8e88ab66 | mumra | 2025-03-21 18:05:37 +0000 Correct an inaccurate comment Looking at c65fdff where this comment was written, it seems fairly clear it was meant to refer to the code *after* not *above* the comment. The preceding code doesn't have much logic and is gathering some data necessary for the movement code. -------------------------------------------------------------------------------- 2171951b38 | DracoOmega | 2025-03-21 13:31:58 -0230 Don't crash if taking 0 delay turns while Fathomless Shackles is active (Swapping equipment that involves delays uses a 0 aut turn internally, as part of its sequencing, meaning that you can crash whenever you try to swap body armour with Fathomless Shackles active.) -------------------------------------------------------------------------------- 5d35c07169 | DracoOmega | 2025-03-21 09:32:54 -0230 Fix randart enhancer staves sometimes not displaying resists (Lici) If a randart enhancer staff generated with a resistance of a type that the staff's base type gets by default (ie: a staff of cold with an additional rC+), it would be completely invisible on the inscription. The resist would still function (and be viewable with %), but the item description would always override it with 1 level. -------------------------------------------------------------------------------- 7ce8407eea | Nikolai Lavsky | 2025-03-20 18:14:38 +0300 fix: display the chaos-laced status icon in webtiles This got missed in 4b739738. -------------------------------------------------------------------------------- 0534b38e66 | David Lawrence Ramsey | 2025-03-19 19:13:01 -0500 Account for muscle-less players in Xom messages. Change "muscles" to "sinews." Rationale: Since revenants are skeletal, they don't have muscles (despite their orc name, they don't appear to be built like Skeletor), and poltergeists don't have bodies in the usual sense, but both have some ectoplasmic equivalent of sinews to hold themselves together. Other species would have ordinary sinews to do the same, and adding a flag for whether a species has muscles seems a bit too niche. so sinews is a better generic term for what holds different species together. -------------------------------------------------------------------------------- 4b41cfc14b | David Lawrence Ramsey | 2025-03-19 19:03:45 -0500 Account for formless players in Xom messages. Since the player equip code indicates that they don't have heads, don't count the head as a body part for them. -------------------------------------------------------------------------------- 10c1f53bb1 | DracoOmega | 2025-03-19 16:40:37 -0230 Let tiny and large species put gloves on their Fungal Fisticloak The 'armour size' check was applying even to the fisticloak's gloves slot, but in most cases, 'armour size' is now redundant with the fact that the species in question don't get a SLOT_GLOVES of their own in the first place. I believe that body armour may be the only place where this parameter has a more nuanced meaning, so we perform the old check there and use a simpler one for hats vs. helmets. (Hats/helmets also need another refactor in future to make Zonguldrok more properly ignore horns on the player's head, but that's a lot trickier and out of scope for this commit.) This fixes #4302 -------------------------------------------------------------------------------- 6e1b721bf3 | DracoOmega | 2025-03-19 16:40:37 -0230 Fix some wierdness with poltergeists and Fisticloak The most obvious manifestation of this bug was the cloak sometimes falling off when the player took the stairs, but the underlying issue is that if you had 5 aux slots filled up already, and tried to put on the fisticloak, it would still let you *even though it should require two of those slots*. The issue is that the search for both 'a slot that can hold a cloak' and 'a slot that can hold a hat' was finding the same single slot and thinking this was good enough. (And then save compat code was knocking off the fisticloak on level change, since it properly detected that you didn't have enough slots for it.) Now, multi-slot items should substract each slot they take up from your total slots, when calculating whether something can fit or not. This fixes #4322 -------------------------------------------------------------------------------- df4e34529f | DracoOmega | 2025-03-19 16:40:37 -0230 Fix poltergeists not getting the bonus slot from Zonguldrok/Fisticloak (And also any similar items which might theoretically add an extra boot or cloak slot in the future) -------------------------------------------------------------------------------- bae9310bee | Nikolai Lavsky | 2025-03-19 17:19:48 +0300 fix: make Poisonous Vapours targeter ignore rPois enemies, again Currently, the spell becomes active on the quiver and in the z? menu even if there are only poison-resistant/immune enemies in range. The targeter correctly highlights enemies without rPois, but refuses to highlight poison-vulnerable targets, like killer bees. Also, there is no message when aiming at a monster that can't be affected. Finally, when cycling through possible targets, the targeter doesn't skip poison-resistant monsters. So, as a remake of 3f6d0115, this commit brings back a custom targeter and a usefulness check for the spell. But since current Poisonous Vapours is different than the pre-b5f9efb4 implementation, the new check in `spell_no_hostile_in_range()` is slightly different too. -------------------------------------------------------------------------------- 3039f5625e | David Lawrence Ramsey | 2025-03-19 00:05:41 -0500 Fix comment typo. -------------------------------------------------------------------------------- d685d6802f | mumra | 2025-03-18 23:59:18 +0000 Fix some Deep Elf tile offsets Since 9b14fc1 (plus 3b45c41), which changed the hand positions of monster Deep Elves, their weapons have been floating a few pixels away from a correct holding position. This updates the relevant offsets so the weapons (and shields, if used) are held properly. -------------------------------------------------------------------------------- 85c0d3feac | DracoOmega | 2025-03-18 19:57:40 -0230 Fix a Nobody / phantom mirror crash timeout_enchantments was also deleting its summon timer in the middle of reviving it (causing it to die again before the avoided_death_fineff had fired, resulting in an assert). Really would be nice to have that 'just remove harmful status effects' function.... -------------------------------------------------------------------------------- f5e40d3f22 | DracoOmega | 2025-03-18 19:45:30 -0230 Buff Nobody a little Despite their scariness on paper, they've been statistically underperforming, so I am making a few adjustments. Their spells from Phyrric Recollecton get burnt out at 50% HP instead of 60%, they get a tiny HD and AC increase, and their Haste and Might actually persist between phases (which I'd always thought it did - that was the *point* of that spellset - but neglected to realize it was being cleared). Additionally, in hopes of averting the possibility that a scarier Nobody would be tempting to park on another floor (because they couldn't learn any of their scary stuff until you first damaged them), they can now ignite their first memory merely upon *seeing* and engaging the player, whether they are actually injured or not. We'll see how much effect this has on them. -------------------------------------------------------------------------------- 3a960af9c8 | DracoOmega | 2025-03-18 19:17:12 -0230 Don't give Trickster AC for debuffs applied TO friendlies (particleface) A silly example is that blazeheart golem becoming paralysed by stepping away from it would give you AC (since it is a negative status effect that was applied by a friendly monster!). This could even be repeated by stepping back and forth rapidly. But in general, it's probably a good idea that you only get AC for debuffing non-friendly monsters, since there's probably some other degenerate silliness that would otherwise be possible. -------------------------------------------------------------------------------- 36a277cbe7 | DracoOmega | 2025-03-18 19:15:25 -0230 Fix Nobody sometimes immediately losing their new spells (cool3) If Nobody took a big enough hit to go from healthy to dead in a single action (ie: without losing their previous Phyrric Recollection effect from damage), the enchantment cleanup effect would cause it to happen *after* giving them their new spells, resulting in them never appearing to gain them at all. -------------------------------------------------------------------------------- 285c9414cd | DracoOmega | 2025-03-17 12:21:36 -0230 Let Fighter start with a second potion of might (Lici) Of all the backgrounds, it's arguable that fighters start with the smallest kit in total. Most everyone else starts with *multiple* consumables (or a book on top of their consumables). Having more stuff is more fun (and further distinguishes melee starts from each other), so let's give them an extra. -------------------------------------------------------------------------------- 8eb92faf5a | DracoOmega | 2025-03-17 12:09:49 -0230 Don't let Okawaru gift reaping weapons (cool3) Oka doesn't technically hate you for using them, but the brand does nothing while worshipping them, so it feels they should never gift it. -------------------------------------------------------------------------------- b9a02fdcf7 | person50605 | 2025-03-16 19:46:32 -0500 Add rock wall description for spanish version Committer's Note: Added a missing period. Resolves #4364. -------------------------------------------------------------------------------- dbf6267756 | DracoOmega | 2025-03-16 20:59:54 -0230 Fix an arc blade crash with Manifold Assault When I refactored this function, apparently I neglected to recall that the *player* could end up in this list sometimes. -------------------------------------------------------------------------------- 6ed86a1e71 | DracoOmega | 2025-03-16 19:28:04 -0230 Give revenants one memory charge when they hit XL 3 Due to weirdnesses with XP formulas, it's currently possible to go several floors without actually earning one in that part of the game (even though the pace picks up rapidly after that). It's a little wierd to be given an ability and then be unable to use it for several more levels. -------------------------------------------------------------------------------- 45411cbfb5 | DracoOmega | 2025-03-16 19:26:44 -0230 Very gently buff poltergeist and nerf revenant Poltergeist XP apt -1 -> 0 Revenant XP apt 0 -> -1 Poltergeist's starting cloak is now also +1, to give them a little more AC in the very earlygame, where some starts struggle. -------------------------------------------------------------------------------- b58ee74901 | DracoOmega | 2025-03-16 08:10:56 -0230 Fix two spell flavor texts not showing in-game These have apparently never been visible in-game since I wrote them. Whoops! -------------------------------------------------------------------------------- c82cddcf98 | gammafunk | 2025-03-15 21:08:27 -0500 Fix the autofight_nomove_fires option (vvokhom) When set to true, this lua option allows autofight-without-move to use the quiver if an appropriate action is available. It was broken in the case when the corresponding option for normal autofight was true. Resolves #3169. -------------------------------------------------------------------------------- 03d16f74bf | mumra | 2025-03-16 00:07:08 +0000 Add a comment to explain inconsistent naming of a chaos enum One might argue there's no reason why anything associated with chaos *should* be inconsistent, but just to avoid any well-meaning contributer trying to "fix" this inconsistency in the future it seemed a good idea to spell out why it's this way. -------------------------------------------------------------------------------- ce43c158f7 | Antern | 2025-03-15 00:40:34 -0500 feat: add a tile_min_stat_width_characters option The option allows changing the minimal width of the sidebar in pixels for the regular layout. Previously this had been hard-coded to 42. Committer's Note: Fixed a typo in the options guide and reformatted, and cleaned up commit wording. Resolves #3027. -------------------------------------------------------------------------------- 6823389612 | mumra | 2025-03-15 05:35:42 +0000 Update mailmap address -------------------------------------------------------------------------------- 69e70d1efc | Isaac Clancy | 2025-03-15 05:16:22 +0000 Fix far viewing In local tiles while in map view mode, you should be able to right click and drag the mini map to view those parts of the map. However, in version 0.26 dragging the mouse stopped doing anything and in version 0.28 right clicking the map stopped doing anything. Fixes #3804 Fixes #3802 -------------------------------------------------------------------------------- 737f9c07e4 | mumra | 2025-03-15 04:39:12 +0000 docs: Mention advancecomp dependency for msys2 -------------------------------------------------------------------------------- 3176162370 | WizardIke | 2025-03-14 23:24:45 -0500 Clarify that the hood of the assassin only effects melee (#4373) Its description said that it gives effective stabs with any weapon, but it only gives them on melee weapons. Change its description to say any melee weapon. -------------------------------------------------------------------------------- 28ef6d8391 | gammafunk | 2025-03-14 02:12:48 -0500 Put certain traps in the stash (Ge0ff) Add the translocation traps, alarm traps, shafts, and plate traps back to the stash tracker. These traps can help navigate within or across levels (translocation and shafts), or can be used tactically (alarm), or might release goodies (plate), so they're useful to track. We still don't track the remaining trap types. -------------------------------------------------------------------------------- 610cef96e5 | DracoOmega | 2025-03-13 12:49:55 -0230 Don't prompt for each individual bad Static Discharge target (staticshock) When casting the spell near allies, you were required to confirm for each target potentially hit. Confusingly in some situations (such as after reading ?butterflies), you could be prompted many times for a monster with the same name, making it appear as though confirming did nothing. Now we gather all targets first, and prompt once at the end (using the same basic approach used for many other spells at this point), with a little extra boilerplate for arc blade in particular, so that it doesn't warn you about 'casting' anything. -------------------------------------------------------------------------------- 789d534dee | DracoOmega | 2025-03-13 05:40:31 -0230 Fix Enkindled spells never failing (cool3) Despite their listed success chance, casting a valid spell while Enkindled would never miscast (so long as the fail chance was below 100%, which wasn't actually difficult with the wizardry bonus. Pre-Lair Shatter wouldn't even be implausible, with some luck!) (This line was a leftover from a much earlier iteration of Enkindling that never made it to trunk, and which got overlooked when revising it.) -------------------------------------------------------------------------------- 778f541198 | mumra | 2025-03-12 22:39:56 +0000 Don't sometimes prevent a ranged unrand from ever spawning The 2nd parameter to destroy_item ("never_created") should be true in cases like this otherwise, if it happened to be an unrand, it will be prevented from spawning again later. It's slightly unclear to me if this case can even be hit, but since it's there it's better to do it safely. -------------------------------------------------------------------------------- aa92ecd419 | mumra | 2025-03-12 22:38:39 +0000 Update a TODO comment in mon-cast.cc It was slightly out of date mentioning a parameter that didn't exist anymore, and in fact is prohibitively complex enough to do that it seems unlikely to ever happen; at least make this clear in the comment. -------------------------------------------------------------------------------- 791b5fa680 | mgdelmonte | 2025-03-11 16:44:33 -0700 Adds more info to the lua `monster` object. Adds helpful information that's difficult or impossible to extract from the UI: * `last_seen_at_turn` -- the turn number when you last saw this mons * `range` -- the monster's maximum range with weapon, spell, or wand * `items` -- the list of items the monster carries Closes #2676. -------------------------------------------------------------------------------- 4b46c49a68 | David Lawrence Ramsey | 2025-03-11 01:49:49 -0500 Sword of Zonguldrok -> Skull of Zonguldrok. Two places still had the sword: minmay_guarded_unrand_zonguldrok and Zigsprint. Make them use the skull instead. Zigsprint now puts the skull in the same place where the sword was. The sword isn't a weapon as everything else in that pile is, but since equipping it gives you the reaping brand on kills, it can affect your weapon, so maybe that's okay? -------------------------------------------------------------------------------- 4d4a6e4d5f | Yi Yang | 2025-03-11 00:40:42 -0500 fix: Bring Asterion's ability names in line with overhauled Makhleb (#4247) Asterion's current ability name, "Greater Servant of Makhleb", comes from Makhleb's old ability names before the 0.32 overhaul. Since the overhaul was mostly merging the lesser/greater pairs while leaving the actual mechanics untouched, I think we can keep the existing monster spells (along with icons and descriptions), but use the new ability titles. The other ability, "Major Destruction", is contrasted with another monster spell "Legendary Destruction". It is thus not changed. -------------------------------------------------------------------------------- d345d8e626 | Hellmonk | 2025-03-11 00:16:33 -0500 Replace -Cast with *Silence (#4359) -Cast was very polarizing; it tended to either do nothing or make the item unusable. Try out a more dynamic negative effect along the lines of *Corrode; 3% chance for temporary silence when damaged. Silence duration is identical to blueberry klown pie. This effect works on monsters (who ignored -Cast entirely) in the rare case that one spawns with a *Silence artifact. -Cast remains exclusively on mad mage's maulers, where it's necessary for the gimmick. -------------------------------------------------------------------------------- b1fd84065c | hellmonk | 2025-03-10 22:39:47 -0500 fix firewood -------------------------------------------------------------------------------- 26c1957b85 | SentientSupper | 2025-03-10 22:38:09 -0500 Allow damnation to bullseye (#3673) The only ranged weapon dimensional bullseye doesn't work with is damnation which tends to surprise players. Given that damnation is a rare unrand, it wouldn't hurt to remove this special case. Closes #3532 Co-authored-by: Hellmonk -------------------------------------------------------------------------------- 029b10d757 | hellmonk | 2025-03-10 22:26:30 -0500 Update credits -------------------------------------------------------------------------------- 37f5625743 | yrdzrfxndfvh | 2025-03-10 18:37:56 -0500 Fix normal revenants spawning in zig -------------------------------------------------------------------------------- b902cd2960 | David Lawrence Ramsey | 2025-03-10 18:31:12 -0500 Add another rare trout type for Xom. -------------------------------------------------------------------------------- b2a79e37e6 | Nicholas Feinberg | 2025-03-10 15:48:07 -0700 Remove canned necromancy Unused since 8cec33880d2397/613369fe0c22f4, both 2022. -------------------------------------------------------------------------------- dfc5a943e8 | hellmonk | 2025-03-10 10:31:23 -0500 Move some unrand props to artps. Use the existing randart props for salamander hide and amulet of air. I didn't change elemental staff - might make the text too long? -------------------------------------------------------------------------------- 5af9d733ea | hellmonk | 2025-03-09 23:52:41 -0500 checkwhite -------------------------------------------------------------------------------- 34610d1a4b | SentientSupper | 2025-03-09 23:52:16 -0500 Allow aux attacks to receive lash bonuses (#3695) WJC's lash claims to work on melee attacks and doesn't specifically mention not benefiting aux attacks. Closes #3298 --------- Co-authored-by: Hellmonk -------------------------------------------------------------------------------- 13e890bdef | DracoOmega | 2025-03-09 21:00:56 -0230 Fix Enkindle description (Patrick2011b) Emphasize that it only applies to damage-dealing spells and not all spells. -------------------------------------------------------------------------------- 4f4ccd14fd | Aliscans | 2025-03-09 17:11:42 -0500 Dead lemures give no thanks. (#3964) Move the "With Pikel's spell broken..." message into the DACT_PIKEL_MINIONS handler, so it only prints if you can see any lemures which survived long enough to depart. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 9575c84de6 | DracoOmega | 2025-03-09 11:23:30 -0230 Let antimagic weapons work for Trickster (not_that_greg) Melee attacks that inflicted antimagic on monsters (including both antimagic weapons and AF_ANTIMAGIC) weren't properly attributing their source. -------------------------------------------------------------------------------- d3ab83ea69 | gammafunk | 2025-03-08 11:55:17 -0600 Add staircases and hatches to the stash tracker (Dzeddy) It's nice to be able to find stairs and escape hatches from the stash search. Map mode will cycle between all stair-like features, whereas a stash search is more exact. This commit adds these features to stash feature tracking. Closes #4313. -------------------------------------------------------------------------------- 356a6cb85b | bobross419 | 2025-03-08 00:53:19 -0600 Disambiguate Zonguldrok slot (#4295) A player noticed that the Skull of Zonguldrok's artefact text was unclear as to the equip slot which caused some problems with the 2H they were using. This adds a "When held" to the second sentence to clarify. --------- Co-authored-by: Bennett Novak -------------------------------------------------------------------------------- d031bd43ab | gammafunk | 2025-03-07 17:18:12 -0600 Fix up some spectral weapon save compat For 954e1a44, update the code to handle spectral weapon from either of a monster's potential weapons. Certain monsters like deep elf blademasters can wield two weapons, and its possible that the spectral weapon comes from the alternate weapon. Also fully tag major this compat code. Resolves #4337. -------------------------------------------------------------------------------- 7b7a8c7f49 | Isaac Clancy | 2025-03-07 17:18:12 -0600 Allow coglins to benefit from two spectral weapons (jejorda2) They used to only be able to bring out one spectral weapon when they were attacking with one spectral weapon in each hand. Fixes #3719 -------------------------------------------------------------------------------- 36cedeed02 | David Lawrence Ramsey | 2025-03-07 16:27:58 -0600 Fix lambda warning (#4351). -------------------------------------------------------------------------------- 71a40e40ae | Hellmonk | 2025-03-07 10:29:44 -0600 Update rF-/rC- messaging (NormalPerson7) Add messaging for flaming/freezing brand hits with rF-/rC- and update messages for cold beams so that all negative resist messages can be caught with "you terribly" in rcfile. Closes #3868. -------------------------------------------------------------------------------- 22bb8dc075 | gammafunk | 2025-03-06 21:14:57 -0600 Fix compilation on older versions of gcc The change in ec844b11 to use a default implementation of the move assignment for map_cell throws a compilation error on gcc 4.7. To allow trunk to build on CAO, I'm reverting the move assignment back to the previous implementation. -------------------------------------------------------------------------------- eb0194f0d2 | David Lawrence Ramsey | 2025-03-06 19:50:43 -0600 Remove unused variable (#4351). -------------------------------------------------------------------------------- 875e6274b3 | gammafunk | 2025-03-06 11:43:06 -0600 Add WizardIke to the mailmap -------------------------------------------------------------------------------- b0cd332cd7 | Isaac Clancy | 2025-03-06 11:34:35 -0600 Fix a crash when initializing Nobody's memories We were accessing a vector out of bounds for some game seeds. -------------------------------------------------------------------------------- dcb4e7fafb | DracoOmega | 2025-03-06 09:08:14 -0330 Remove salmon ...these were a sort of to-do marker I'd left myself while working on poltergeists and then forgot to remove after I'd verified them. Whoops. -------------------------------------------------------------------------------- 86570bf2c2 | DracoOmega | 2025-03-06 09:08:07 -0330 Don't print superfluous messages when merfolk change forms in water If a merfolk left a form that *wasn't* melding their boots, while in water, (but their boots were independently melded into a tail), the game would print a message about their boots unmelding and then immediately melding again. -------------------------------------------------------------------------------- db6124fe53 | DracoOmega | 2025-03-06 09:08:01 -0330 Fix a small bug with fishtail/multislot boot items While Lear's was melding properly in water for merfolk, the AC display wasn't being updated properly. In theory, it was possible for this bug to cause mechanical consequences if a multi-slot boot had an important unequip effect, but Lear's did not, so this was entirely visual. -------------------------------------------------------------------------------- d93d3284e2 | WizardIke | 2025-03-05 22:33:33 -0600 Simplify malign gateway targeting (#4045) The spell can now target directions that aren't one of the 8 compass directions. Also improves the targeter. Closes #3910. -------------------------------------------------------------------------------- fa27b1d1f1 | David Lawrence Ramsey | 2025-03-05 20:40:35 -0600 Add more words to Crazy Yiuf's speech. -------------------------------------------------------------------------------- 2fe43ac7d6 | hellmonk | 2025-03-05 00:35:17 -0600 update zot springs -------------------------------------------------------------------------------- 4a4ec41471 | NormalPerson7 | 2025-03-05 00:26:31 -0600 Improve colours of spells in spellbooks (#3645) Currently, in WebTiles, the colours of spells in spellbooks are far from useful. The most important question when x-v-ing a book (e.g. in a gauntlet, or a ghost vault) and seeing its spells is "do I already have this spell in my library?". There was previously no way to check this without leaving the x-v menu and manually checking. With this PR, all spells will be greyed out in book descriptions if you already have them in your library (or if they are useless, or if you have memorised them via Vehumet), lightred if forbidden, lightgrey if eventually useful, and lightblue if you could memorise it immediately, in that order of priority. Better suggestions for colouring are welcome. I had wondered whether it would be better to change WebTiles to use the local tiles (and I presume console) formatting for spellbook descriptions, but I figure there's a reason why WebTiles and local tiles have different formatting in the first place. On the other hand, doing so would bring spell tiles to local tiles' spellbook descriptions, and it would bring the "already known" column to WebTiles, which would also solve this problem. -------------------------------------------------------------------------------- 8eeeba328a | hellmonk | 2025-03-04 23:30:51 -0600 reorder prompt -------------------------------------------------------------------------------- dc4d684894 | pyy156941 | 2025-03-04 23:29:50 -0600 Fix: prompt dangerous TSO summon (#4182) (#4186) The player could get penance without warning by summoning divine warrior with fulsome fusilade or polar vortex active. Prompt in these scenarios instead. -------------------------------------------------------------------------------- b9e851eaf5 | radio-gra | 2025-03-04 21:36:01 -0600 Let players query elapsed real time from Lua -------------------------------------------------------------------------------- b2a08d023c | DracoOmega | 2025-03-04 16:04:54 -0330 Fix shapeshifter monsters spawning in their natural form (Ge0FF) Broken somewhat subtly by 31604a8. monster_polymorph will fail if the monster isn't in a valid position (since the space they're on isn't habitable for anything they could turn into), so moving when in _place_monster_aux the monster is actually put on the grid caused them to always spawn in their native, unshifted form. I have moved the polymorph lower in the function. I am a little concerned that there may be other non-obvious consequences to the change done in 31604a8, but a cursory inspection didn't turn up anything else that seemed dependent on the monster having a real position. -------------------------------------------------------------------------------- f0a98eff6c | tianmaster | 2025-03-03 22:36:02 -0600 Fix: display correct monster tile in water ...when using a monster tile as the player tile. -------------------------------------------------------------------------------- 908c38d9fd | Aliscans | 2025-03-03 22:22:11 -0600 Make auto-training train spell skills more readily for djinn. (#3930) Calculate how much exercise spell skills gives for a new character before splitting spell skills. This means that level 1 djinn auto-train magic to a similar degree to other species. Train spell skills (roughly) in proportion to the exercise put into them, where it had been much less. The aim of this is to make the auto-train behaviour feel similar for Djinn to the way it feels for other species. The 0.31 version feels very different to me, with no spell training at level 1 and little emphasis on it later on (to the extent that setting focus on a different skill could eliminate spell skill training altogether). Co-authored-by: Aliscans -------------------------------------------------------------------------------- 0f3e296413 | radio-gra | 2025-03-03 22:06:52 -0600 Clarify options_guide.txt regarding player-defined dump sections (#4212) As it stands there's no documentation of any kind regarding custom dump sections, other than options_guide mentioning it exists. A more detailed description should save potential users much of the headache figuring out how it works. -------------------------------------------------------------------------------- 0c0bac5df6 | NormalPerson7 | 2025-03-03 22:04:57 -0600 Prevent attacks of opportunity on dead felids (#4292) (#4319) Dead felids awaiting revival could still receive attacks of opportunity while they were dead, which cluttered up the message log. Will resolve #4292. -------------------------------------------------------------------------------- 49552807fa | WizardIke | 2025-03-03 20:30:48 -0600 Allow manifold assault with the Arc Blade (#4275) The Arc Blade sometimes shoots out a number of arcs at monsters adjacent to you when you attack with it. This doesn't work very well when hitting a monster that isn't adjacent to you with manifold assault, so manifold assault didn't allow using it. This change makes the Arc Blade shoot an arc at the monster instead if it isn't adjacent to you and allows it to be used with manifold assault. Fixes #3876 (only sword of power remains) --------- Co-authored-by: Hellmonk -------------------------------------------------------------------------------- 20fab2804b | hellmonk | 2025-03-03 17:48:02 -0600 Fix manifold with devastator. Previously did not check for ally hits unless the target was adjacent to the player. -------------------------------------------------------------------------------- 935a399613 | WizardIke | 2025-03-03 17:39:30 -0600 Allow manifold assault to be cast when it would warn (#3877) Allow manifold assaulting with a weapon that warns Because manifold assault chooses its targets at random, it has to avoid targets that would warn the player so as not to put them in penance etc. However, when using a weapon that would warn when attacking any monster (e.g. the singing sword with an ally in view) this lead to it not finding any targets it could hit. To fix this, prompt when attacking with a weapon that would always warn when attacking and only exclude targets where the actual target is the problem (e.g. to close to an ally when using devastator). Fixes #3838 -------------------------------------------------------------------------------- 2af1c82aae | Hellmonk | 2025-03-03 15:17:29 -0600 Adjust evoker placement (#4270) Reduces evokers in vaults and increases number in shops. -------------------------------------------------------------------------------- eff102fec0 | Aliscans | 2025-03-03 14:05:11 -0600 Stop antique shops from overcharging. (#4222) If an antiques shop contains two unidentified amulets, rings or wands of the same type, it gives a price for each item. If the player tries to buy both, the game charges a different price for the second item. Change it to charge the agreed price for everything. This avoids a situation where the player could agree to pay X for some goods but actually be charged Y for them. There are others (such as asking separately about the second item or not selling it in the same transaction), but this one doesn't involve changes to the UI. Shops with two similar unidentified amulets, ring or wands are rare, so it shouldn't matter too much how it's handled. Charging a lot of money without warning seems like quite a bad way to do it, though. Co-authored-by: Aliscans -------------------------------------------------------------------------------- c616208095 | David Lawrence Ramsey | 2025-03-03 08:34:51 -0600 Add another Donald line. -------------------------------------------------------------------------------- 6494ea8a0c | DracoOmega | 2025-03-03 03:07:06 -0330 Fix Enkindling applying its success bonus to all spells (monkooky) While the UI correctly showed which spells *should* be affected by this status, it nonetheless still let other spells get the success rate bonuses (though not any of the other bonuses). -------------------------------------------------------------------------------- 7de7f153e6 | mumra | 2025-03-03 00:20:08 -0330 Avoid crash when clockwork bee falls in deep water Prevents a segfault which would happen when the bee's target disappears from view at the same time as the bee is flying over a body of deep water (or lava). The case that the "inert" (and flightless) bee failed to place, due to no solid ground being near enough, wasn't handled and execution fell through to the next block where it was assumed a target did exist. Rather than needing to figure out exactly why the bee won't place to have messages like splashing in the water, the bee can just self- destruct; it's the same result. [Committer's note: made the dust cloud from this last long enough to actually be seen, and not always spawn on top of the player.] -------------------------------------------------------------------------------- 567c1b0550 | DracoOmega | 2025-03-02 23:56:52 -0330 Remove status effects from monsters when turned into vampiric thralls Arguably this could remove *negative* status effects while leaving positive ones alone, but there isn't a convenient shorthand to do that at the moment, and it's likely relevant only ocassionally. -------------------------------------------------------------------------------- 21fd171549 | DracoOmega | 2025-03-02 23:50:13 -0330 Fix Paragon sometimes losing its link to the player (salticid) The duration of the paragon link status (which was used to determine whether you could have attacks against you blocked by the paragon, as well letting your attacks trigger the paragon and recasts perform its super attack) was set to the same duration as the paragon's own timer, with the intent that it last exactly as long as the paragon did. However, it was possible for the paragon to end up lasting longer (more easily if it was slowed), resulting in a period of time where the paragon was visibly active, but you gained none of these benefits from it (and recasting the spell would just replace it, rather than allowing you to use its super move). Now it doesn't attempt to expire at all, but simply end when the paragon dies (which it always *also* did - meaning the original duration may have always been unnecessary). -------------------------------------------------------------------------------- dd1ef96ac7 | Peter McLarnan | 2025-03-02 20:38:07 -0600 Fix imp _suck_up_adj2_ syntax Imp speech _suck_up_adj2_ displays an error because of a missing `then`. Restore correct syntax. -------------------------------------------------------------------------------- 170f05ed26 | gammafunk | 2025-03-01 20:34:26 -0600 Fix the altar count of a temple map (🝀) The map mainiacjoe_temple_hex_bubbles was tagged as a 22 altar temple. However one of the altar placement glyphs is always turned into the exit stairs, hence it's actually a 21 altar temple. I'm tagging it as such so that a 22nd altar will get properly placed via an overflow altar. -------------------------------------------------------------------------------- 95e74fc971 | patrick | 2025-03-01 17:52:44 -0500 Update docs for changes to pre-id vault syntax -------------------------------------------------------------------------------- bc49e453e1 | patrick | 2025-03-01 17:00:30 -0500 Add some shops Most of them are just regular decor shops, with no special inventory, just various arrangements of features to stand out in the competitive marketplace of the dungeon. Also a couple general multi-shop vaults. And then because I'm me, there are a few themed early-game shops. -------------------------------------------------------------------------------- 87e8ae5f2c | patrick | 2025-03-01 15:51:54 -0500 Add a couple decor vaults Just a few decor vaults that have been sitting on my hard drive for a little while. Two of them use the "cache of food" features. Enjoy! -------------------------------------------------------------------------------- 9f28e2c356 | DracoOmega | 2025-03-01 05:08:53 -0330 Silence a warning -------------------------------------------------------------------------------- 1347f3dca7 | DracoOmega | 2025-03-01 05:06:51 -0330 Fix Dream Dust having 1/10th the intended duration (CarefulOdds) -------------------------------------------------------------------------------- 4ee2c7fec9 | Isaac Clancy | 2025-02-28 20:23:20 -0600 Fix loading high evasion ghosts (OblivionHorseArmour) The ghost evasion cap was lowered from 60 to 50, so we need to cap ghosts evasion to 50 when loading them. Fixes #4198 -------------------------------------------------------------------------------- e392e11081 | Zen Liu | 2025-02-28 10:21:48 -0600 Update monspeak.txt fix the missing %%%% on line 3147 -------------------------------------------------------------------------------- 5987b84d57 | Isaac Clancy | 2025-02-28 10:01:45 -0600 Properly update area grid on monster item unequip The `monster::unquip` function was checking if it changed the monster's halo and umbra radii and invalidateding the area grid if it did. However, because it only runs any effects that need to happen on unequip and doesn't actually remove the item from the monsters equipment slots, it doesn't change the halo or umbra radii. Instead we should check if the halo and umbra radii have changed in the places that actually remove the items. [Committer's note: Shortened initial commit message.] -------------------------------------------------------------------------------- f9ae776928 | Isaac Clancy | 2025-02-28 09:43:45 -0600 Don't become a religious traitor when switching good gods (A0rika) Good gods are usually fine with you switching to another good god, so it doesn't make sense for you to get the traiter title from the religion you left in this case. Resolves #4329 -------------------------------------------------------------------------------- 79d371098c | DracoOmega | 2025-02-27 08:40:26 -0330 Change the default setting for show_more to false (various) This may be a bit controversial, but it's been discussed several times and I've been largely convinced that it's a better default (even if perhaps not for immediately intuitive reasons). While it might seem bad to new players for Crawl to 'skip past' messages on busy turns (rather than pause to show them everything that happened), in practice, most of those turns have a lot of noise (when a zombie army is fighting another army, most individual messages don't matter at all) and more crucially, *this trains players to tune out* --mores-- which includes messages so critical that Crawl *forces* a --more-- on them by default. In fact, this seems like the *inevitable* result of some builds causing mores every normal turn (zombie armies are the most obvious, but it's easy to cause this with various AoE spells as well - especially in webtiles, which has a smaller message log than local tiles default). You can't really play those without getting in the habit of skipping past --mores-- and then you are certain (no matter your skill level) to eventually overlook something the game tried to warn you about. Crawl has moved more and more important things into force_more over the years, and I have been largely convinced that reserving this sort of interruption for something we think actually matters is better for both newer players *and* veterans. (In fact, changing this option is one of the first pieces of advice given in some contexts.) If this causes some new things to slip past players that may have been less likely in past, it might make sense to very slightly raise the threshold on what an useful force_more should be on, if --more--s in general are rarer. -------------------------------------------------------------------------------- 6f445b353c | DracoOmega | 2025-02-27 07:58:45 -0330 Make Dispel Undead work with spellclaws It does do damage, after all! -------------------------------------------------------------------------------- b33f6f0c7a | DracoOmega | 2025-02-27 07:58:27 -0330 Fix Nobody not being vulnerable to LRD (Salticid) -------------------------------------------------------------------------------- 4c41ede6ec | DracoOmega | 2025-02-27 07:58:05 -0330 Have Nobody list their remaining number of memories when examined (Ge0FF) While there are icons to indicate this already (albeit small ones), it wasn't technically visible in console mode at all. -------------------------------------------------------------------------------- cfd1ee5803 | DracoOmega | 2025-02-27 07:56:42 -0330 List max memory charges in Enkindle ability description This was already listed in the mnemophage mutation description, but many people didn't seem to think to look there, so now it is in the ability description itself as well. -------------------------------------------------------------------------------- aa9a383145 | DracoOmega | 2025-02-27 07:55:57 -0330 Fix aux autopickup lua in advanced_optioneering for poltergeists It didn't see the need to pick up a second hat, so long as you already had *a* hat equipped. It should now properly respect anyone who has additional compatible slots of a given type (thus behaving properly for someone wearing Zonguldrok and such, for instance.) -------------------------------------------------------------------------------- 8cb532ef1d | David Lawrence Ramsey | 2025-02-26 18:43:06 -0600 Mark Po as non-armour users for trove purposes. Closes #4332. -------------------------------------------------------------------------------- 375e5309dc | DracoOmega | 2025-02-26 02:03:07 -0330 Fix Rift being able to make some attacks through walls (Leissi) get_cleave_targets() didn't properly respect line of sight for targets beyond a range of 2, meaning that monsters at exactly a range of 3 would be considered valid targets for certain attacks while wielding Rift, even while on the other side of walls. (This included spellclaw and spellmotor attacks, oni drunken cleave, and the Xom Cleaving status.) -------------------------------------------------------------------------------- c279ef658a | David Lawrence Ramsey | 2025-02-25 14:11:18 -0600 Mark Charlatan's Orb as bad after artifice sac. If you have no way to train Evocations, it can provide no benefits, only downsides. -------------------------------------------------------------------------------- 4747edec7a | David Lawrence Ramsey | 2025-02-25 11:46:30 -0600 Add another anger_possessive entry to artefacts. -------------------------------------------------------------------------------- 31604a8050 | Isaac Clancy | 2025-02-25 11:35:26 -0600 Fix grow oklob not placing under the player (LiciTheCrawler) There was a bug that made plants hostile while being placed and Fedhas worshippers cannot be on top of hostile oklob plants (but can be on top of other hostile plants). This allowed growing ballistomycetes under the player but not oklobs. Fixes #4048 -------------------------------------------------------------------------------- 8065d6aae3 | Aliscans | 2025-02-25 11:05:04 -0600 Let the user look at more "nogen" items in the help menu. Replace the "nogen" tag with a "deleted" one for "TAG_MAJOR_VERSION = 34" sections of art-data.txt. Both tags mean the item isn't created in the normal way. The "deleted" tag alone stops the help menu from giving details of the item. Remove the code in extant_unrandart_by_exact_name() which let some of the nogen items be looked up. [Committer's notes: Squashed commits, synced with trunk.] -------------------------------------------------------------------------------- b461eca50d | NormalPerson7 | 2025-02-25 10:53:34 -0600 Don't let Blorkula cheat banishment (#4205) Previously, Blorkula would split into vampire bats when banished, and if they reformed, trying to banish them again would cause a crash. Resolves #4205. -------------------------------------------------------------------------------- 6df694a5e7 | yrdzrfxndfvh | 2025-02-25 10:52:42 -0600 add new skill title for coglin max necromancy -------------------------------------------------------------------------------- c780007be6 | Isaac Clancy | 2025-02-25 10:38:23 -0600 Fix monsters not getting shield and orb egos (yrdzrfxndfvh) After equipment slots were reworked in commit 2dbd7c1, the `monster::wearing_ego` function stopped checking the shield slot for egos when checking armour for egos leaving monsters unable to benefit from shield and orb egos. Fixes #4324 -------------------------------------------------------------------------------- e7142aa715 | DracoOmega | 2025-02-24 22:41:55 -0330 Fix a crash with melding Vainglory (tallbingo) Or theoretically any item which grants more than one additional slot, although this is the only one which currently exists. That code was... very much not how you grab the 'second from the back' item in a vector, and I am amazed it never caused a noticable issue when testing. -------------------------------------------------------------------------------- a8ad765c7d | mumra | 2025-02-24 23:41:06 +0000 Don't let Pyrrhic Recollection be used by marionette This caused a crash as ultimately it resulted in attempting to cast (or attempting to *pretend* to cast to check validity) this spell that is actually not castable (and it certainly doesn't make sense for the spell to be castable by marionette anyway). Possibly the marionette code should veto any spell with zero frequency but this has to be done in a few places and this is at least a simple fix for the immediate crash. -------------------------------------------------------------------------------- e20181a0a6 | DracoOmega | 2025-02-23 10:18:23 -0330 Fix a few more bugs with Fly status and talismans "You float gracefully downwards." was being printed on talisman removal, even if the player wasn't flying beforehand. And swapping from a talisman form without Fly to a different talisman that had this artprop wasn't activating it properly. (I have done this by moving the equip_artefact_effect call for the talisman until partway through the transformation itself, since it was otherwise being undone by the untransformation that happened inbetween. -------------------------------------------------------------------------------- a22800f72b | DracoOmega | 2025-02-23 10:18:16 -0330 Fix entering vampire form from another talisman not unmelding (RBrandon) This logic was intended to allow vampire to go back and forth from bat swarm form directly (rather than shift back to normal as an intermediate step), but was written incorrectly. -------------------------------------------------------------------------------- 220a0729da | DracoOmega | 2025-02-23 10:06:29 -0330 Wake Nobody up if you 'kill' them in their sleep Stab kills would result in them still using Pyrrhic Recollection, and even speaking to the player, without actually waking up. -------------------------------------------------------------------------------- b731a06b74 | DracoOmega | 2025-02-23 09:58:19 -0330 Fix a couple problems with phantom mirrored Nobodys (Master_Clown) Mirrored copies of Nobody were still capable of igniting memories to revive themselves (which is fine in and of itself), but the clearing out of enchantments done when this happens was also deleting their summon timer (and not killing them at the same time, since they were flagged for revival.) This would result in Nobody sticking around forever after first dying. On top of this, the timeout *itself* would count as a revivable kill. This should now be properly restricted to real deaths (ie: banishing them should properly bypass revivals now also.) -------------------------------------------------------------------------------- ba6825f11c | DracoOmega | 2025-02-23 09:44:34 -0330 Fix icons for Nobody's memories/state not rendering on webtiles Some day, I may start remembering this more than 30% of the time. Yesterday was not that day. -------------------------------------------------------------------------------- ed98ad6427 | DracoOmega | 2025-02-22 14:33:14 -0330 Fix a crash on monster lookup of Nobody in webtiles (cool3) Unlike local tiles, webtiles shows status icons over the monster tile in monster descriptions, and the 'fake' monster made by help lookup didn't have the property used to determine how many memories to draw over it initialized. -------------------------------------------------------------------------------- 55f3b791fc | DracoOmega | 2025-02-22 14:19:53 -0330 Fix a crash with Fulsome Fusillade around Malign Gateways (Zadiel) The issue was that malign gateways are solid (and thus can't have an explosion form in them) but can still be targeted as the center point for a fusillade explosion (since there's a monster there). In and of itself, this would be fine, but code to draw the potion bottles during the animation assumed that the center would *always* be part of the explosion, and reading from the flavor map to see what color they should be was tacitly inserting a key of BEAM_NONE at that spot (which would later be interpreted as real attack data, and cause a crash). This commit reorders things slightly so that this should no longer happen. -------------------------------------------------------------------------------- 9b73534a46 | David Lawrence Ramsey | 2025-02-22 11:25:15 -0600 Add another Nobody line. -------------------------------------------------------------------------------- 775f105d90 | David Lawrence Ramsey | 2025-02-22 11:25:10 -0600 Fix punctuation. -------------------------------------------------------------------------------- 6ae22fc144 | DracoOmega | 2025-02-22 10:40:09 -0330 Reduce monster arcjolt damage (This largely existed only on ghosts up to this point, but the previous values did about as much damage as *plasma beam* on high level monsters, while being unable to miss. With Nobody being able to cast it, this felt a little excessive to me.) I guess this is technically a nerf to Spellspark Servitor, but I doubt this spell was used on it very much. -------------------------------------------------------------------------------- 58097cfb87 | DracoOmega | 2025-02-22 10:40:09 -0330 Don't let monsters sometimes cast spells with 0 cast rate This is a consequence of the 'emergency' spell frequency bonus ignoring monster cast rates altogether and just picking a spell at random. This is generally weird behavior that I plan to also change in the future, but for the moment this is a quick fix to one specific problem. (Nobody's Pyrrhic Recollection is only used as a reaction and should never be cast 'normally' - it's just in the spell list so that players can read details about it.) -------------------------------------------------------------------------------- ce41f9e9f2 | DracoOmega | 2025-02-22 10:40:09 -0330 New unique: Nobody A revenant formed from the collective resentment of an entire host of people who died alone and forgotten, they burn through multiple different identities as you fight them (and must be 'killed' repeatedly to put them to rest for good.) They spawn at the same depth as Sojobo. Their Pyrrhic Recollection ability consumes a memory to restore them to full health and temporarily give them access to a single powerful spell (or occassionally a pair of them, if one didn't stand alone well enough). These include many conjurations, but also summoning and some support spells like Haste or Cause Fear. They will use this ability shortly after being first damaged, and also to avoid a killing blow (each consuming one of 3 total memories they have to burn.) Their cast rates with these spells are notably high, but inflicting damage to them will end the state prematurely, giving the player a bit more agency in the first, and also giving the battle an 'ebb and flow' - periods where Nobody is are capable of burst damage, and periods where they are not (at least until you take another of their lives). The idea was to create something flavorwise liked and mechanically adjacent to Enkindling (while being more functional on a monster, where things like 'ignore armour penalties and have better cast success' are not really a thing.) (If you leave the battle for few hundred turns, their memory charges will be restored, to prevent players trying to take out lives individually and flee, but otherwise there should be no time pressures.) The spells were deliberately chosen to be things found on other monsters (or known as player spells), but leaning towards those which were a little less common. I am fairly unsure about some numbers and the dynamics of this unique are a bit, well, unique, so playtesting is needed, but I hope people find them interesting! (Tile by regret-index, using roctavian's edits of dd's old mummy priest tile, roctavian's centaur / medium humanoid skeletons and Abyss entrance tile, plus Sastreii's stoker tile.) -------------------------------------------------------------------------------- 753b300546 | DracoOmega | 2025-02-22 10:40:09 -0330 Fix vampires being unable to enthrall with some weapons (RBrandon) Unrand weapons that had a melee effect (eg: Captain's Cutlass, Wyrmbane, Arc Blade, and many others) would bail out of the melee attack function early if their target died (regardless of whether the unrand effect had anything to do with it). This was early enough that vampire bite effects were never processed, meaning that any lethal stab attack with such a weapon could never heal the vampire or make a thrall. (Of all the effects that unrand weapons skip against dead monsters, I believe this may be the only one that doesn't require a living one to do something useful.) -------------------------------------------------------------------------------- ded44dc72d | David Lawrence Ramsey | 2025-02-21 13:07:35 -0600 Add missing Cacophony status description. -------------------------------------------------------------------------------- cff28b789e | DracoOmega | 2025-02-21 05:33:53 -0330 Properly remove halo when Vainglory is unequipped -------------------------------------------------------------------------------- 14d85d4b26 | DracoOmega | 2025-02-21 05:33:41 -0330 Don't allow Shattering items which other items depend upon ie: Shattering Vainglory with 4 cursed rings equipped (on a normal slot character) would also automatically shatter 2 of those rings without further prompt or interaction. Now it is impossible to shatter an item that would require shattering other items as a consequence. The player will have to do that manually. -------------------------------------------------------------------------------- 8e848e9f8b | Cgettys | 2025-02-21 05:31:44 -0330 fix: Ash cursed item destruction bug (bobross419) The item was being destroyed before unequip_item was called. As a result, the call to unequip_item did nothing at all. Because the item was already OBJ_UNASSIGNED, rather than being the specific item that unequip_item needed to handle. This resulted in several bugs: * Visual artifacts (halo/umbra/etc) * Likely various messages not being printed * Possibly other persistent issues? E.g. update_vision_range not being called. Closes #4309 [Committer's note: rewrapped message and slightly edited fix] -------------------------------------------------------------------------------- 3f0725400b | DracoOmega | 2025-02-21 04:06:26 -0330 (Hopefully) fix a crash on berserk/frenzy wearing off on monsters The enchantment I was pulling the agent out of (to blame the post-frenzy slow on) was already deleted by the time it was examined, resulting in undefined behavior and a high chance of crashing. -------------------------------------------------------------------------------- 45e6bba2ff | David Lawrence Ramsey | 2025-02-20 21:22:02 -0600 Rename a few tiles: palentonga -> armataur. For consistency with the other armataur forms, and because palentongas have been replaced with armataurs for a while. -------------------------------------------------------------------------------- 14800dbadd | David Lawrence Ramsey | 2025-02-20 17:58:13 -0600 Fix monster warnings about now-obsolete attacks. -------------------------------------------------------------------------------- 2faa50a443 | David Lawrence Ramsey | 2025-02-20 17:56:43 -0600 Make monster account for corrosion changes. -------------------------------------------------------------------------------- 113915ce07 | David Lawrence Ramsey | 2025-02-20 17:17:47 -0600 Remove now-obsolete enchantment reference. -------------------------------------------------------------------------------- 4732f40816 | DracoOmega | 2025-02-20 19:27:11 -0330 Fix racial AC bonuses being suppressed in vampire form (Lici) -------------------------------------------------------------------------------- d88ad5618d | DracoOmega | 2025-02-20 19:27:11 -0330 Increase poltergeist's translocations apt from -2 -> 0 They do seem like they could be better at forcibly moving things from one place to another (and there's been a lot of people calling for it), but I'm still just slightly hesitant on giving more and more things a strongly positive translocations aptitude, especially since that seems to co-occur with high hexes an oddly large percentage of the time. -------------------------------------------------------------------------------- f46f2fc6f1 | DracoOmega | 2025-02-20 19:27:11 -0330 Tweak recommended jobs for new species a little Unrecommend gladiator and brigand for poltergeist (the former in particular is not a great fiit). In their place, I am electing to break from tradition and actually recommend chaos knight for a species - the random debuffs Xom throws around give poltergeists AC, and their chaos weapon does as well, creating a natural synergy. (And chaos knight is a better background in general than it used to be, since the last Xom changes.) I am also recommending hexslinger, despite poltergeist's bad ranged apts, since Jinxbite is so immediately strong on them and Cause Fear is also enormously synergistic. Also add a few reverse recommendations, mostly for revenant. -------------------------------------------------------------------------------- 307a816d8e | DracoOmega | 2025-02-20 19:27:11 -0330 Change how Trickster AC bonus stacks and expires a little While the maximum amount of AC poltergeists could get from Trickster was strictly capped by their XL, the amount of stacks in the background could be gained without limit (as long as you gained a new one every 6-9 turns). I'd intended this to allow a little bit of overflow so that debuffing many things at once at low XL still gave a more enduring benefit than just a couple, when the AC cap is still so low. But in practice, this allows some fairly degenerate stacking at high XL with spells like Cause Fear, stacking up a very long duration of the effect. Now, you can only overflow by 10 AC more than your max bonus, allowing a little wiggle room, but not nearly so much. Additionally, stacks above 15 are half as likely to be earned, making it a little harder to reach the full bonus against lategame swarms. -------------------------------------------------------------------------------- 50231a2b66 | DracoOmega | 2025-02-20 19:27:11 -0330 Make monster revenants claw you instead of hit you Feels a little closer to the player species at no cost. -------------------------------------------------------------------------------- 1c17e8307f | DracoOmega | 2025-02-20 19:27:11 -0330 Change a few things about vampire blood-drinking and thralls Vampire lifestealing required the monster you were stabbing to not just be susceptible to vampirism, but also have blood. This was a holdover from how the vampire species's own lifesteal worked (and has an obvious thematic motivation), but it turns out that a *lot* of living monsters don't have blood when you might otherwise expect them to! Insects, worms, orb guardians, eyes, jellies, raijuu... This isn't a consistent player-facing list and that makes it bad to base a player-facing ability off of. So instead, vampire vampirism now obeys the same rules as regular vamp and simply gets different *messages* for monsters who don't have blood. I wasn't able to make this list as comprehensive and specific as I'd like, but should cover the vast majority of cases one can encounter in the game. At the same time, I am extending the number of things eligable to have thralls made of them. You can now additionally enthrall demons (even though they are immune to vampirism). Various ways to raise demons as undead are well-attested in the game at this point (the living/holy/demon trinity governs many such effects), and even if it's *mildly* weird that you can't drink their blood but *can* turn them, I think it may play better if this form's benefits don't turn off so completely in extended. It's already attempting to compete with one of the most popular forms. In a future commit, I may make some adjustments to the scaling benefits vampires recieve (since it feels like skill training isn't terribly exciting for them at the moment), but this is hopefully a nudge in a positive direction nonetheless. -------------------------------------------------------------------------------- 99610d196a | DracoOmega | 2025-02-20 19:27:11 -0330 Fix vampire inhibited regeneration not working properly -------------------------------------------------------------------------------- 6954e95ee6 | DracoOmega | 2025-02-20 19:27:11 -0330 Fix vampiric thralls being immortal (Oneirical) The prop applied on stab kill to indicate that a monster should be revived as a thrall wasn't being removed after becoming one, causing every subsequent death to just revive them again. Oops. -------------------------------------------------------------------------------- 56e99acd2c | DracoOmega | 2025-02-20 19:27:11 -0330 Remove a meaningless enchantment A leftover since Demonic Guardian's rework in 0.27, this hasn't actually done anything in a long time. -------------------------------------------------------------------------------- 5299482de4 | DracoOmega | 2025-02-20 19:27:11 -0330 Fix up various debuffs not triggering Trickster This includes: -Bind from Grave Claw -Charm -Teleport Other -Slow caused by cold-bloodedness (which is now attributed to whatever did the cold damage; it used to be attributed to the monster who was slowed!) -Corona Debuffs applied by Xom now also trigger Trickster as well. This is arguably not the player's 'fault', but if other godly effects like Uskayaw paralysis are going to count (and I feel they should), then we can argue that this should, too. Perhaps the important part is that it wouldn't have happened if not for the player's dutiful worship, and thus they can feel personally responsible? Finally, this *stops* paralysis on Kiku wretches from being attributed to the player (ie: you could get AC just by Unearthing Wretches, which feels wrong to me; they were like that when you first saw them!) -------------------------------------------------------------------------------- aa83346545 | DracoOmega | 2025-02-20 19:27:11 -0330 Refactor malmutate versus monsters to accept an agent So that it can work with Trickster. -------------------------------------------------------------------------------- 6381969a2e | DracoOmega | 2025-02-20 19:27:11 -0330 Refactor many things about corrosion effects / resistances The code involved in applying corrosion to players and monsters was surprisingly tangled, using opaque math (that nonetheless was reducible to a a simple percentage), and multiple different similar-but-not-quite methods. There were also numerous inconsistencies, including: -Multiple sources of corrosion could affect rAcid+++ enemies, but it was often hard to guess which. (ie: Entropic Weave and level 2 Vitriol card could corrode acid blobs (50% of the time)) -AF_ACID couldn't corrode monsters with rAcid+, even though BEAM_ACID could. -res_acid() and res_corr() sometimes disagreed with each other (eg: a Resistance buff would improve res_acid() but *not* give res_corr() -Passive acid damage from meleeing jellies was affected by rCorr twice (decreasing the chance of corroding the player *and* reducing how much they were corroded by). -Message order sometimes indicated the player was corroded by acid *before* it hit them. This refactors most methods involved in this, fixes the above issues, and simplifies several things. There should only be a handful of functional changes outside of bugfixes: -Monsters with rCorr+++ are now immune to being corroded by all sources. -Monsters with rCorr+ consistently have a 50% chance to not be corroded, regardless of source. -Acid clouds now have a 66% chance to corrode a player standing in them instead of 50% (a result of code simplification, not a balance change; these clouds barely exist at present except in player hands.) -The player has a 50% chance to be corroded by BEAM_ACID instead of ~49% -Effects that apply a differing amount of corrosion to the player than 4 are less affected by diminishing returns (ie: they don't apply 4 twice, but rather apply 8 at once). Currently this is only Wu Jian wrath (and who knows if that effect will even survive), but I have plans to use this for other adjustments in the near future. -Importantly: corrosion can now have an actor source, so that it interacts properly with poltergeist's Trickster passive. -------------------------------------------------------------------------------- be30b90cc8 | DracoOmega | 2025-02-20 19:27:11 -0330 Fix player Revenants not taking bonus damage from Shatter -------------------------------------------------------------------------------- df518dbf55 | Nikolai Lavsky | 2025-02-21 00:12:50 +0300 docs: update Alchemist description (Kab) Their starting spell was changed in baccc4ca4. -------------------------------------------------------------------------------- 50f50cedb2 | Nikolai Lavsky | 2025-02-20 23:58:54 +0300 fix: remove Po's spiteful retaliation attack Specifically, the `SPITEFUL_ATTACK_ITEM_KEY` define, which is not used anywhere. -------------------------------------------------------------------------------- 77bb7ed3da | Nikolai Lavsky | 2025-02-20 23:37:45 +0300 feat: make &H recharge batform, Po's Cacophony, and Re's Memories Also, let wizmode super healing cure poison vulnerability. -------------------------------------------------------------------------------- 4bdad0dc50 | Aliscans | 2025-02-20 12:23:21 -0600 Use plural verbs in _xom_time_control(). Give "you and everything else in sight" the plural verbs it deserves. Split some long lines. [Committer's notes: Removed spurious extra space.] -------------------------------------------------------------------------------- 555990002e | wheals | 2025-02-18 23:07:05 +0200 docs: Update CREDITS.txt For 616585275e -------------------------------------------------------------------------------- d6b2ec2eef | David Lawrence Ramsey | 2025-02-18 10:59:35 -0600 Add Donald line about revenants. To match their new flavour. -------------------------------------------------------------------------------- f251c32bc1 | regret-index | 2025-02-18 07:09:30 -0330 More green tiles (pianoman523 / LemurRobot) A non-generic icon for the missile-absorbing-jelly and a revamped Xak'krixis tile, specifically. Compared to the submission, the former had its colours adjusted more towards other Jiyva abilities and mutations, while the latter had several arms heavily adjusted to not have a book covered up by a weapon as well avoiding brandishing a weapon directly in front of their own face. It's still a little silly they're wearing a hat, but monsters wear lots of clothes players don't, like pants. -------------------------------------------------------------------------------- ec4e1d79e0 | David Lawrence Ramsey | 2025-02-18 01:48:14 -0600 Fix typo. -------------------------------------------------------------------------------- 11643a3c80 | DracoOmega | 2025-02-18 00:56:12 -0330 Make insubstantialness actually block nets for players (TheMeInTeam) There's been a surprising amount of inconsistency in which ways being insubstantial works for players and monsters. For instance, insubstantial players were already immune to *webs*, which are functionally the same in most ways. -------------------------------------------------------------------------------- ecac187fed | David Lawrence Ramsey | 2025-02-17 20:43:43 -0600 Fix comment typo. -------------------------------------------------------------------------------- 478cf1221d | DracoOmega | 2025-02-17 23:02:44 -0330 Fix spellclaw's damage multiplier never applying (Darby) While the multiplier was *set* in a way that is seemingly correct, this parameter was only ever used for monster melee attacks and not player ones. This meant both that undertrained/slow weapons were attacking at full power when you cast spells, but also that enkindled melee attacks weren't getting the (sometimes fairly large!) damage bonus they were supposed to recieve at all. I am... slightly unclear whether this is a net nerf or buff, but at the very least it was the intended design, so we can see how their power level feels after this. -------------------------------------------------------------------------------- de1897d326 | DracoOmega | 2025-02-17 23:02:44 -0330 Fix Cacophony armour being hostile with Oka (ploomutoo) This is thematically just the poltergeist's own body taking up more tiles than usual, and not some ally you're calling in to help. -------------------------------------------------------------------------------- 86a188487b | wheals | 2025-02-17 22:17:19 +0200 Upgrade webserver ci to ubuntu-latest We downgraded to 20.04 for python 3.6, which we no longer attempt to use. GitHub is deprecating the 20.04 images soon, so if this doesn't work (if perhaps latest ubuntu doesn't support python 3.8 either) I'll try 22.04. -------------------------------------------------------------------------------- 8bdf87329e | wheals | 2025-02-17 22:10:04 +0200 Add a commit hook for checking commit conventions -------------------------------------------------------------------------------- ec844b1194 | wheals | 2025-02-17 22:10:04 +0200 Simplify map_cell definition -------------------------------------------------------------------------------- 00f9be72f1 | Cgettys | 2025-02-17 22:10:04 +0200 fix: remove undefined behavior from map_cell Clang-tidy warns about these memcopies: * Undefined behavior, source object type 'const map_cell' is not TriviallyCopyable * Undefined behavior, destination object type 'map_cell' is not TriviallyCopyable Pointer provenance / type-based aliasing analysis are part of the C++ standard, so this analysis seems correct. * Remove the UB by changing to proper field-wise copies; compiler should optimize it pretty well, especially for the move case. * Simplify the operator== and != to do pointer comparison, as at present, the memcmp was comparing pointers that are unique per instance anyway. Leave a TODO about it. * Also leave some TODOs for future work I'll do in a follow-up PR. * Some general cleanup (e.g. ternaries where they make sense) -------------------------------------------------------------------------------- 616585275e | wheals | 2025-02-17 22:10:04 +0200 Reuse monster_iterator::advance() (bernardosulzbach) Closes #3764 -------------------------------------------------------------------------------- 9eb7eaf012 | brandon s allbery kf8nh | 2025-02-17 22:09:38 +0200 only deploy docs on main repo As currently written, the `deploy_docs` action runs on forks, which means anyone with a fork of the crawl repo gets a build failure when updating the fork. This patch makes it only run on the main crawl repo (hopefully). -------------------------------------------------------------------------------- 7767d82716 | Cgettys | 2025-02-17 22:09:13 +0200 ci: Automatically check commit messages against guidelines Add a python script to check line lengths of all commit messages not in master. Should work properly even in the case where it's ran on master, though it's a bit pointless there. -------------------------------------------------------------------------------- 111d7e6ee8 | David Lawrence Ramsey | 2025-02-17 09:46:30 -0600 Add Po/Re to species mutation tests. -------------------------------------------------------------------------------- c516c672c2 | regret-index | 2025-02-17 11:06:40 -0330 Quick vault review, mostly bugfixes and minor nudges Worthy of explanatory notes: * nicolae_shoals_entry_flooding gets a tiny amount of gold added to it due to the possibility that the water nymph can cover up the entrance to Shoals without the player seeing it (most obviously for kobolds). The gold should guide autoexplore back to the vault to see the entrance afterwards. * The antique champions of Zonguldrok's wizlab have catapulted it to the top of wizlab statistics, so I've nerfed their HP / AC / damage down a little. Cigotvui's wizlab hasn't been much successful at killing people despite its overflowing item rewards, so Cigotuvi's Monster now gets a permanent regeneration enchantment to parallel the random buffs the other abominations in the wizlab now have. * The Xom greatest gift vault now mirrors the Xom hyper-buffing ally Xom action for its gift. * special_room_bee no longer uses decorative flowers for now, since the vault feature redefinition doesn't work with layout code and layout_roguey can place special rooms directly. -------------------------------------------------------------------------------- 0607873e95 | yrdzrfxndfvh | 2025-02-17 11:06:40 -0330 reinstate yak island (#4108) [Commiter's notes: This PR still emphasized extremely tedious optimal gameplay; the Lair version still allows picking up a bow to kill death yaks with 0 ranged skill once the rest of the floor was cleared out, except now with walking back and forth away from weak petrifying cloud impacts plus being randomly put to sleep. Meanwhile, the Swamp version consists of an arbitrary pond of spectral monsters from multiple different branches solely due to ghost crabs. The author has assented to letting me heavily reshape their submissions in order to make them mergeable, so this mostly keeps a very simplified version of the vault in just Shoals, deploying oklob plants in order to help with excluding the disconnected island version of the vault, and otherwise just deploying actual ranged threats across water instead of landbound Egyptian bulls stalling out autofight in a Greek sea branch. Closes #4108.] -------------------------------------------------------------------------------- 228bcfb148 | hellmonk | 2025-02-17 11:06:39 -0330 three new ossuaries, one new sewer (#4268) [Commiter's notes: Squashed together commits, one of which concerned a variety of edits based on feedback I provided in ##-dev, and rotated some particularly taller-than-wide map definitions. For the ossuaries, I've only done minor header style-consistency maintenance and kept a Yred altar away from a Kiku monster. The sewer map had some self-replacing MONS vs. KMONS definitions, which I fixed to provide the amount of threats one would expect from most sewers. Closes #4268.] -------------------------------------------------------------------------------- d2bf43c392 | DracoOmega | 2025-02-17 06:22:42 -0330 Fix barbs working on insubstantial players (Planckenstein) They already didn't work on insubstantial *monsters* and intuitively would be expected not to work on insubstantial players either. (Presumably nobody noticed or cared in Wisp or Storm Form up to now, though) -------------------------------------------------------------------------------- c9bfa88436 | DracoOmega | 2025-02-17 05:41:37 -0330 Fix trickster AC bonus not coloring AC blue in webtiles (Lici) -------------------------------------------------------------------------------- 00fd1e57a9 | Monkooky | 2025-02-17 05:06:32 -0330 Remove 'attack previous target' shout 'Attack previous target!' appears in the shout menu if you have a target, and they are alive in line of sight. First, the 'Attack previous target!' shout can be issued even when not displayed on the menu; if you have a previous target alive but out of LOS it will command allies to target them. This technically leaks information, but is mostly just strange and buggy looking. Second, what your previous target is is obtuse. Your target is changed when you perform any action which places a targetter, along with some other conditions. Notably, firing past a monster or casting apport will clear your previous target. Given how low value ordering an attack on your previous target would be even if it were fully functional, it seems better to remove the option entirely. -------------------------------------------------------------------------------- 95744fd038 | Aliscans | 2025-02-17 05:00:02 -0330 Don't crash if a wizard flees the Vaults without a rune. Entering the Vaults via the stairs and then leaving with &u triggered an ASSERT in _rune_effect(). Fix this by briefly "unlocking" the Vaults as the wizard escapes. -------------------------------------------------------------------------------- 5f4d809e43 | Cgettys | 2025-02-17 04:59:11 -0330 fix: some warnings produced by header_build_tests * Add missing include to conduct-type.h to ensure it is self-contained (e.g. not depending on other headers happening to include tag-version.h before including it) * Remove unnecessary semicolon. * Add missing cstdint includes -------------------------------------------------------------------------------- 19d9dbdb0b | Isaac Clancy | 2025-02-17 04:53:08 -0330 Fix Hep ancestors sometimes spawning incorrectly If the player gained enough piety to gain an ancestor on an enemy's turn or at the start of their turn (e.g. from an enemy digging or the player's passwal finishing), they will get a turn to act before their ancestor is summoned as the ancestor will be summoned at the end of the player's turn. Delaying the summoning of the ancestor to the end of the player's turn is done by storing a copy of the ancestor in a queue. This lead to a bug reported by krajj7 (aka chujev) where changing your ancestor's name on this turn would result in them spawning with the old name. Fix this by using the actual data for the ancestor instead of the data in the queue. Queueing up spawning an ancestor also lead to a bug reported by NephilaWeaver where a teleport trap could teleport you into unexplored terrain giving you enough piety for an ancestor and then piety delay could bring you below the piety required for an ancestor but fail to remove your ancestor as it hadn't spawned yet. Then at the end of your next turn, your ancestor would spawn even though you didn't have enough piety. Then when your got enough piety for an ancestor, a second one would spawn. Fix this by checking if spawning an ancestor is needed before spawning one from the queue. Fixes #3300 Fixes #3450 -------------------------------------------------------------------------------- db0d976a04 | DracoOmega | 2025-02-17 04:51:55 -0330 Fix auras stacking Trickster AC bonus continuously (Darby) Because auras internally deleted and re-added their enchantments every turn, Trickster would see this as you applying a fresh debuff and keep raising your AC with each turn that passed (if you somehow had a torpor snail ally, for instance.) Auras should now *replace* existing enchantments rather than delete/add (which also probably lets us remove the existing special-casing on ENCH_DOUBLED_HEALTH) -------------------------------------------------------------------------------- 6ce588bc5f | Cgettys | 2025-02-17 04:19:47 -0330 refactor: enum related cleanups * Split explore_stop_options into its own header. * Make initfile parsing use maps instead of brute force else-ifs * Make the layers enum a enum class * simplify base movespeed logic in form_base_movespeed * Fix return type of viewmap_flash_clour and fix compiler warning. [Committer's note: resolved merge conflicts in transform.cc] -------------------------------------------------------------------------------- d97012d3a2 | Isaac Clancy | 2025-02-17 04:07:29 -0330 Fix incorrect max health and magic after melding items (ritt) After melding items that gave max health or magic your max health and magic would be set to the values for having the items unmelded. Also unmelding the items would set your max health and magic to the values for having them melded. Fixes #4284 -------------------------------------------------------------------------------- c90e054cf1 | DracoOmega | 2025-02-17 04:05:14 -0330 Don't let Vainglory block transporters and PoG (radio-gra) -------------------------------------------------------------------------------- 67d6cae5cd | Cgettys | 2025-02-17 03:58:57 -0330 style: a few cleanups in Beogh apostle code Add a named constant to make it clear why some of these loops start from 1. Fix a few typos and add comments to help myself or anyone else in the future. Make a few parameters const where they already could be. -------------------------------------------------------------------------------- dea60a99ca | Isaac Clancy | 2025-02-17 03:56:00 -0330 Fix unexpected "Okay, then" when swapping weapons (projectNoob) When swapping weapons as a coglin, you would get the message "Okay, then" after selecting which weapon to swap out. This is incorrect as you should only get that message when cancelling the action. Fixes #4267 -------------------------------------------------------------------------------- 6b3b8b87c1 | Isaac Clancy | 2025-02-17 03:54:57 -0330 Fix swapping two-handed weapon with fly to one without When trying to swap a two-handed weapon with the flight property on it with another two-handed weapon without flight while wearing another item of flight, you would get a message saying that you would drown and be unable to swap weapons if you were above deep water. This was caused by the item swapping code trying to unequip the two-handed weapon twice (once to free the primary hand and once to free the offhand) which would mess up the count of equipped flight items. Fixes #4258 Fixes #4255 [Committer's note: renamed a variable to avoid shadowing a parameter] -------------------------------------------------------------------------------- 1afe1e7492 | DracoOmega | 2025-02-17 02:35:07 -0330 Display battlesphere projectile damage when examining them (Particularly so that the interaction with Tempering can be displayed; there was some confusion over whether it affected it or not.) -------------------------------------------------------------------------------- b3c5c66fec | DracoOmega | 2025-02-17 02:32:56 -0330 Fix Ravenous Swarm spell description -------------------------------------------------------------------------------- 6ee9563bfc | DracoOmega | 2025-02-17 01:46:20 -0330 Allow attuning regeneration items if your max HP falls Regen+ items are inactive when equipped while injured, until the player's HP returns to max. But if the player experienced an effect that lowered their max HP to equal or less than their current HP (most easily by using a talisman you didn't have quite enough skill for, but other ways are possible), no amount of resting would let them attune until the player took damage and then healed to full again after *that*. Normally we want to avoid giving the player advantages for deliberately lowering their max HP with talismans, but in this case the advantage of 'attune instantly so that you regenerate faster' is rather overpowered by 'lose a lot of HP immediately'. And this avoids the player being put in regeneration limbo in normal gameplay, when using a mildly underskilled talisman (or perhaps even getting drained at an inopportune time). -------------------------------------------------------------------------------- 21a13a6849 | DracoOmega | 2025-02-17 01:20:36 -0330 Make Percussive Tempering give extra duration to expiring allies (Lici) Just 3-5 turns, if they have less than 5 turns left (specifically to avoid the feelsbad situation of casting it on something that immediately vanishes before doing anything with the buff.) -------------------------------------------------------------------------------- 34267a8048 | DracoOmega | 2025-02-17 01:13:35 -0330 Fix death curse messages being printed when out of LoS of their target Easiest to cause with Discord, but still possible in other ways. -------------------------------------------------------------------------------- 953dd5d6a3 | DracoOmega | 2025-02-17 01:09:55 -0330 Prevent Mark of Haemoclasm from blowing up firewood (Ge0FF) I feel mildly sad that you can no longer chain-detonate a cluster of plants all at once, but you probably 'shouldn't'. -------------------------------------------------------------------------------- 725e1c6e44 | DracoOmega | 2025-02-17 00:59:31 -0330 Don't let spellclaw melee ignore nets/webs (monkooky) -------------------------------------------------------------------------------- 976e243d3e | DracoOmega | 2025-02-17 00:20:08 -0330 Fix a crash when looking up haunted armour with ?/m I'd just copied the code for dancing weapon tiles, but those actually get 'default' equipment, and there currently seems to be no reason to give default equipment to something that can only be made by cacophony. So use a fallback tile instead of an assert. -------------------------------------------------------------------------------- 38914867c8 | David Lawrence Ramsey | 2025-02-16 17:20:58 -0600 Fix spell description typo (adwarshall). Closes #4306. -------------------------------------------------------------------------------- 1bb2c40a17 | David Lawrence Ramsey | 2025-02-16 17:13:36 -0600 Adjust suck-up adjectives again. Give death form "well-preserved," since it may not have bones if it's e.g. an octopode, and give Revenant "ivory-boned." -------------------------------------------------------------------------------- 5eea946fe3 | David Lawrence Ramsey | 2025-02-16 17:06:39 -0600 Add suck-up adjectives for Po/Re. Poltergeists get "high-spirited," and Revenants get "ivory-boned" as death form also does, since the default of "rosy-lipped" doesn't fit either of them. -------------------------------------------------------------------------------- cb418da545 | David Lawrence Ramsey | 2025-02-16 17:06:39 -0600 Fix capitalisation of the Revenant's orc name. -------------------------------------------------------------------------------- 3ed869fdc1 | Cgettys | 2025-02-16 23:50:30 +0200 fix: unistd.h inclusion for macOS 10.14 Hopefully fix #4299. I'm not entirely convinced all usage of unlink should not be unlink_u. But that's a separate discussion. -------------------------------------------------------------------------------- 9913f6a86f | wheals | 2025-02-16 23:48:50 +0200 Run Win32 MSVC build in CI As long as there's little extra cost to supporting Win32 (and it works just fine in my testing) we may as well build it regularly too. -------------------------------------------------------------------------------- e56dd6e543 | Cgettys | 2025-02-16 23:48:26 +0200 ci: Add msvc build job * Add msvc build job covering all x64 build configurations * Fix gen-all.py to run targets in the correct order so that a clean msvc build works * clean up vcxproj - Visual Studio can be repetitive for no reason * YY_NO_UNISTD_H needs to be defined for all msvc configurations after wheals' latest cleanup. -------------------------------------------------------------------------------- c8760497ea | Nikolai Lavsky | 2025-02-16 22:15:00 +0300 docs: fix changelog typos -------------------------------------------------------------------------------- d053411cd7 | regret-index | 2025-02-16 13:36:10 -0330 Fix another accidental smoky over midnight gem (#4281) Really should standardize the gem placements in Depths and Zot entrances with a vault.lua function, the way vault statues and decorative floor do such. -------------------------------------------------------------------------------- e697f8936e | regret-index | 2025-02-16 13:21:03 -0330 Fix x-v not showing Clarity blocks Vex / Dominate Undead (#4259) Accidentally left out of f4f8fba. The addition of the other use of Vex (as part of Dominate Undead, in 4c592b3) postdates the issue, but also has the same problem of having left an immunity check out from monster examining. Both have been fixed, while the immune_to_hex order has been mildly re-arranged for better groupings. Closes #4259. -------------------------------------------------------------------------------- f30ef7623c | regret-index | 2025-02-16 13:21:03 -0330 Don't use an enter_abyss instead of an exit_through_abyss in Pan (#4278) They use the same tiles, so there's a reasonable chance people may accidentally use the former to try and leave Pan. (There's a reasonable argument they shouldn't, but next version's Pan plans are unlikely to keep exits through the abyss anyway, so it's probably not worth bothering.) Closes #4278. -------------------------------------------------------------------------------- eed266bea4 | David Lawrence Ramsey | 2025-02-16 10:21:32 -0600 Fix typos. -------------------------------------------------------------------------------- 874f29ee33 | DracoOmega | 2025-02-16 07:16:51 -0330 Fix enkindlable spell fail rate in spell memorisation menu (staticshock) It was accidentally displaying the raw fail rate instead of the actual chance of failure. -------------------------------------------------------------------------------- 8c39c319c7 | regret-index | 2025-02-16 06:38:23 -0330 More changelog updates (up through eec983bea9) Timed for the new undead species and talisman, though also encompassing a variety of other item, monster, tiles, and interface changes. -------------------------------------------------------------------------------- eec983bea9 | DracoOmega | 2025-02-16 05:53:05 -0330 Don't claim revenants have skin or are fleshy Bone isn't *exactly* a skin-equivalent, but probably the closest thing to how this is used. -------------------------------------------------------------------------------- 2a11fc99a4 | DracoOmega | 2025-02-16 05:50:38 -0330 Reword description for rF+/rC+ mutations Neither poltergeists nor revenants have flesh (and they both start with innate rC+, even!) -------------------------------------------------------------------------------- a97358ce9c | DracoOmega | 2025-02-16 05:47:18 -0330 Let poltergeists share djinn's 'Weightless Champion' title Getting the title on a species with -3 UC sounds like suffering, but they really shouldn't be a 'middleweight' (and frankly have a better claim to being literally weightless than djinn do! -------------------------------------------------------------------------------- 4120f66cc9 | DracoOmega | 2025-02-16 05:42:39 -0330 Give poltergeists a better description of what being insubstantial does This gives them the same fakemut as wisp/storm form and adds an actual long description to it, allowing the player to get comprehensive info on what they're protected from. -------------------------------------------------------------------------------- a3f61267b9 | DracoOmega | 2025-02-16 05:41:46 -0330 Fix poltergeists being vulnerable to petrification (Lici) For some reason, player rPetrify did not check is_insubstantial (unlike monster rPetrify...) and just relied on the insubstantial forms also having MR_RES_PETRIFY. That is now changed (and I have removed MR_RES_PETRIFY from wisp/storm form; like monsters, this only should need to be used in cases where it is not already implied by being insubstantial). -------------------------------------------------------------------------------- 5e1a386783 | DracoOmega | 2025-02-16 05:23:04 -0330 Fix randart talismans with Fly having an inverted effect (SleepyMeeple) Using a talisman with {Fly} didn't make the character fly, but removing it again *did* (effectively giving you permaflight). This was a consequence of the fairly brittle and order-dependant way transformations work (ie: the equipped talisman wasn't active at the time we'd take flight because the player wasn't actually in that form yet). -------------------------------------------------------------------------------- c77da5a6f4 | DracoOmega | 2025-02-16 03:46:25 -0330 Fix a crash with using Phantom Mirror on a friendly apostle monster::is_summoned() returns false even for things with ENCH_SUMMONED if that monster is also unrewarding (which apostles are). This caused phantom mirror copies of your apostle to look like a real apostle to vegenance swearing code, which caused a lookup for the apostle data for an apostle with a different mid than any you actually have. Now, we clear MF_HARD_RESET and MF_NO_REWARD when making a phantom mirror clone (since the behaviors of those are effectively superceded by being a proper summon in the first place). It is possible that this should be done in more places that monstes are cloned, but it's a bit tricky to trace all the ways these various flags are used (or how clones are made), so I have opted for a simpler fix to the more serious problem right now. -------------------------------------------------------------------------------- 911dfa4448 | DracoOmega | 2025-02-16 03:11:47 -0330 Rename poltergeist armour slot for clarity SLOT_ANY_AUX (ie: a specific slot that can contain any aux armour) was too confusable for SLOT_ALL_AUX_ARMOUR (ie: a fake slot that queries any slot that happens to contain aux armour), so let's try something more unambiguous. We're probably not likely to get any other species using this slot anyway. -------------------------------------------------------------------------------- 9e5c492961 | DracoOmega | 2025-02-16 03:03:11 -0330 Fix poltergeist armour not being visible to some queries Code scanning for 'any equipped armour' could not see poltergeist armour. At the very least, this caused regen+ armour not to activate on them, but it's likely it caused a number of other problems. -------------------------------------------------------------------------------- 11965a5a82 | DracoOmega | 2025-02-16 02:44:04 -0330 Prevent WJC martial stabs from attacking your own thralls (Oneirical) If you created a vampiric thrall from a stab triggered by a martial attack, any subsequent attacks caused by the same movement would still try to target the (now-friendly) monster. You could cancel them with a prompt, but it's still weird. (Yred bound souls seem to use the same approach in this commit, so it probably should fix any such weirdness without other issues.) -------------------------------------------------------------------------------- f9589bcb02 | DracoOmega | 2025-02-16 02:25:53 -0330 Add poltergeist/revenant player shadow tiles (regret-index) -------------------------------------------------------------------------------- 969233c879 | regret-index | 2025-02-15 17:10:41 -0330 Fix Vampire Thrall status not rendering in webtiles -------------------------------------------------------------------------------- 6bae641e05 | David Lawrence Ramsey | 2025-02-15 14:30:55 -0600 Fix missing word. -------------------------------------------------------------------------------- 617501e0ff | David Lawrence Ramsey | 2025-02-15 10:52:50 -0600 Remove erroneously readded ghoul desctiption. -------------------------------------------------------------------------------- f716cb1c98 | David Lawrence Ramsey | 2025-02-15 10:49:17 -0600 Fix typo. -------------------------------------------------------------------------------- a774014b48 | regret-index | 2025-02-15 12:53:21 -0330 Fix Crypt zig floors (cool 3) -------------------------------------------------------------------------------- 7c096ce8a3 | DracoOmega | 2025-02-15 12:26:33 -0330 Checkwhite / unbrace -------------------------------------------------------------------------------- ff4dafabf9 | DracoOmega | 2025-02-15 12:21:04 -0330 More tag upgrade build fixes -------------------------------------------------------------------------------- 97afa80b3a | DracoOmega | 2025-02-15 12:09:46 -0330 Change poltergeist genus/adjective for cooler titles (lici, regret-index) (And actually link the correct dummy monster; oops) -------------------------------------------------------------------------------- 9ed1df1ea5 | DracoOmega | 2025-02-15 12:08:55 -0330 Fix tag upgrade build (hopefully) -------------------------------------------------------------------------------- 4a08e36d24 | DracoOmega | 2025-02-15 11:47:59 -0330 Remove a stray bit of unremoved Vampire code -------------------------------------------------------------------------------- 0754acf4b9 | regret-index | 2025-02-15 11:30:45 -0330 Vault review, vampire revisions edition * Crypt:3 now has a ~31% chance to contain a sanguine talisman, seperately of the chance for it to contain a talisman of death. I'd still would like to shove in all the theme-loot into an extra-expensive custom shop guaranteed every game as both a money sink and a more obvious way to indicate the branch's chances for undead talismans / high level necromancy spells / decent unholy weapons / rN++ randart rings and Regen randart amulets, but this should work for a quick arrangement right now; doing that sort of work might be warranted after another couple more monster / reworks go through the branch. * Sanguine talisman distribution otherwise looks mostly for vampire vaults in mid to late D, Crypt, and Depths. There's not a lot of natural early monsters or vaults to deploy it as an enticing drop, but the D vaults should help a little with the overall talisman consistency fronts. * Sanguine talismans also have been added to the Trove talisman list. Trove talismans have been adjusted further to not offer either unholy talisman to worshippers of Ely and TSO, and to offer potions of mutation instead for worshippers of Zin (for eventual cleansing as the only form of form-changing Zin supports). * Vampire bloodprinces mostly go into various Crypt and Depths vaults themed around vampires, with the latter pool being proportionally quite rare and not guaranteed. This naturally includes a fair number of Crypt ends otherwise reliant on Jory or undying armouries (though the latter are not removed; they still buff vampire knights, and they won't buff princes anyway according to 4fe8696). They also get (low) placement in Crypt zig floors; vexing lichform mega-zig delvers will be amusing and they can attack past other monsters with Grave Claw. * I've very slightly lowered the curse skull spawning rate with the addition of bloodprinces taking up some spawn weight. Crypt has had a rough reception at various times, due to its awkward and redundant position as an optional undead branch when both lategame and extended are both filled with unholiness while borrowing many monsters once meant for Crypt. While it's good for curse skulls to be a character check in the same way dancing weapons work for Elf, them being arguably the strongest individual monster in the branch is a little singular in branch distinction and can be de-emphasized a little with newer monsters in whichever forms that takes. * The Xom + Hep overflow altar now finally comes with lines from Xom explaining the subtle joke. -------------------------------------------------------------------------------- 46d9157e01 | DracoOmega | 2025-02-15 11:30:45 -0330 Assorted vault fixups for the new undead species Mostly changes to player species dummy monster vaults and so forth. -------------------------------------------------------------------------------- baaed966f3 | DracoOmega | 2025-02-15 11:30:45 -0330 Rename monster revenants -> revenant soulmongers, and add a species dummy Now that player revenants exist (and monster revenant mechanics only *partially* correspond to those of player ones), I think it makes sense to make the existing monster not a 'generic' revenant, but something more specific. ie: they're not just doing 'revenant things', but their own things. A lower-tier revenant monster making more direct use of Enkindling flavor seems possible in future, but for now I'm just adding a species dummy monster in its place. -------------------------------------------------------------------------------- 867c1f9194 | DracoOmega | 2025-02-15 11:30:45 -0330 Fix randomization of diamond sawblades damage in spell menu (monkooky) -------------------------------------------------------------------------------- 9dca8172ea | DracoOmega | 2025-02-15 11:30:45 -0330 New player species: Revenant This is an attempt at making a more interesting and diverse species that retains some of the core ghoul strengths (ie: strong heavy armour unarmed combat, with undead resists and a mild healing gimmick), while being of broader appeal and allowing you to do some unique things no other species can. They are designed from the ground up to promote a unique form of hybrid blaster play (an archetype which players regularly expressed interest in, but which Crawl's systems somewhat fight against) and do this via two mechanisms: 1) Whenever they cast a damage-dealing spell, they perform an immediate melee attack against the highest-health enemy in range. This is similar to coglin's spellmotor gizmo (which has also been popular within its niche), but has more predictable targeting and applies to a more narrow range of spells, but is *reliable* on the species. The goal of this is to both incentivize pure casters to care more about their weapon skills than normal (and position in ways that care about melee more than usual) and also to make mid-power spells more appealing for melee characters than they would otherwise be (since they're folding part of their attack power into them). And this is further empowered by: 2) They harvest 'memories' from monsters they kill, which they can consume to briefly enter an empowered state by using their Enkindle ability. Each damage-dealing spell they cast while Enkindled consumes a stored memory, but is greatly empowered: it costs no MP, has additional power (which scales with XL), has increased success chance, and importantly *suffers no penalty from encumbrance*. Each spell cast consumes a stored memory, and the state will end when they are all used (or after a short time, consuming all unused memories regardless). Finally, the instant attack granted by casting a spell while Enkindled receives a damage multiplier based on the spell level, and heals the player for a portion of the total damage dealt by it (this is a minor nod to ghoul's healing quirk, but importantly - a way to make even spell-focused characters care about melee positioning while Enkindled.) Enkindling allows players to hybridize in ways that would otherwise be impossible; it still requires skill investment to use spells beyond early level, but a much more justifiable level of investment for the payoff (even if they can only use these spells every now and again). As the memories are harvest on an XP-timer, in some ways it is like a draconian breath ability that you get to choose yourself (based on spellbook finds and skill decisions). Since estimating how good your spell success will be while enkindled vs. not would otherwise be opaque, the spell UI additionally lists the enkindled success chance side by side the normal one (so that the player can always see what it will be, and also which spells qualify). The bonus has been limited to direct attack spells specifically because utility and summoning spells already see plenty of hybrid play and the damage-dealing ones specifically suffer by comparison. The criteria are similar (but not identical) to Vehumet's - excluding battlesphere and servitor and including a handful of directly-damaging necromancy spells that Vehumet only excludes so as not to step on Kiku's toes. At XL 3 (when they gain access to Enkindling), revenants also learn a random level 1 damage-dealing spell - flavored as recalling a fragment of their own death. This is to allow *all* backgrounds to start interacting with this core ability immediately, rather than melee BGs being entirely at the mercy of the floor god. (Okay, all backgrounds besides berserkers....) Revenants naturally have -20% MP, which should also push caster a little more towards caring about their spellmelee (and having fewer reserves in the average battle, to compensate for being able to tap into free spellcasts in a pinch). (Though they get a flat +1 MP to stop spell backgrounds from starting with 2 MP at XL 1, which is just miserable.) Their aptitudes are nearly identical to ghouls, aside from both spellcasting and conjurations being raised from -2 to -1. (This is at least the 3rd major internal iteration on the 'hybrid blaster species' concept, and if some of the perks hey have seem rather large, it's at least partially because it takes large perks to *make* this work. But this version felt like it created a unique and interesting melee hybrid experience that was fun to play; and if it turns out to be too good on more pure casters, there are other knobs to tweak still.) Hopefully players enjoy them! --------------- Tile credits: -Revenant player dolls by pianoman523 (with edits by regret-index) -Other tile edits by regret-index, using: -Spellclaw icon: pianoman523's claw mutation tile and ontoclasm's magical power + fire resistance item tiles. -Mnemophage icon: Sastreii's revenant tile plus Denzi's old fire giant tiles. -Enkindling max charges: Ontoclasm's old sticky flame tile. -Enkindling status icon: Ontoclasm's fire resistance item tile. -Enkindle ability icon: Sastreii's horn mutation icon tile and old Dark Bargain icon mixed with Denzi's old fire elemental tiles. -------------------------------------------------------------------------------- 176551e282 | DracoOmega | 2025-02-15 11:30:45 -0330 Allow querying the total damage a melee attack set did melee_attack.total_damage_done tallies both base weapon and brand damage, on all hits of a cleaving or multi-hit attack, as well as aux damage. (To be used for Revenants shortly, but may have other future uses as well.) -------------------------------------------------------------------------------- 9f6efc3231 | DracoOmega | 2025-02-15 11:30:45 -0330 Refactor Usk/Beogh damage tracking somewhat No functional change yet (but this opens the door to making Beogh include things that Usk does not, in future). -------------------------------------------------------------------------------- 55edde139b | DracoOmega | 2025-02-15 11:30:45 -0330 Remove player ghouls Ghouls have been consistently at the bottom of the species popularity for a while (while not even being a 'challenge species' like mummy, which might intrinsically lower their expected pickrate). They're not fundamentally flawed in any way, but they just don't seem to be compelling; the heal-on-kills in exhange for -regen isn't well-liked, and their play patterns are considered a little narrow. So let's try replacing them with something that still does ghoul's core strength similarly well (ie: heavy armour unarmed combat) while hopefully being more dynamic and flexible in othe ways - and with new flavour to boot. -------------------------------------------------------------------------------- 91aef888bc | DracoOmega | 2025-02-15 11:30:45 -0330 Refactor player wakeup code Aside from the just-removed chance for players to be awakened by noise, all other calls to player::check_awaken() used an argument of 500, as a means to say 'Just wake up now' (technically, anything 50 and above would have sufficed...), so now there is just a player::wake_up() which does exactly this. (The old schema was additionally odd, since while check_awaken() was a method of actor, monster::check_awaken() was an empty stub that did nothing and a non-class method check_awaken(monster) was the actual monster stealth check instead (unrelated to noise)....) -------------------------------------------------------------------------------- 2e4c680cff | DracoOmega | 2025-02-15 11:30:45 -0330 Fix Grave Claw being cast from full los range by monsters Non-beam-based spells have apparently *no* automatic checks for whether the target is in range, for monsters. And this was largely disguised by most of those spells being full LoS range anyway, or having very particular targeting that was handled in a bespoke way (such as fulminant prism). But Grave Claw was neither of those things, and despite claiming it was range 4, could hit from full screen range. *In addition*, I am adding logic to prevent recasting on a player that already has the -move status. Getting locked in place by this spell could feel a little frustrating (and overly dangerous) by an early apostle, as more and more turns of -move stacked up. Now they will space casts out a little better. (Monsters get no such protection.) -------------------------------------------------------------------------------- b30f0b4cc1 | DracoOmega | 2025-02-15 11:30:45 -0330 Don't give sleeping players a tiny chance to wake up on any noise This was obscure and rarely came up in practice, but sleeping players had a tiny chance to be woken up by noise before something damaged them. But this chance was low enough that even a monster literally shouting in your face had only a ~16% of doing so (yet also, a rat squeeking from halfway across the room could have a non-zero chance). Players probably just assumed they rolled a low duration when this happened, but especially now that monster hex sleep doesn't even work this way, there's no need for such an obscure mechanic, in my opinion. -------------------------------------------------------------------------------- 4c592b3367 | DracoOmega | 2025-02-15 11:30:45 -0330 New monster: Vampire Bloodprince As another user of the bat clouds that vampire form can unleash, these are positioned as a top-tier threat for Crypt (which may also help out some vampire-themed endvaults that struggled to have a thematic top-end). They have relatively hard-hitting (but unarmed) melee and know Ravenous Swarm (ie: a wave of bat clouds), Drain Life, Grave Claw, and also another new spell: Dominate Undead. It has been tradition for many necromantic enemies whose primary tricks don't work on undead (just as drain life, bat clouds, and their vampiric melee do not) to get Dispel Undead as a way to be less harmless to them. But that route has been used a lot, so I am trying something different (with an eye for reusing the spell in some form on a mummy dynasty in Tomb in 0.34). The spell has a will-resistable (but high) chance to turn all unfriendly undead monsters to the caster's side, but significantly (and unlike old Control Undead), applies Vex to player undead thus-affected. This is a significant debuff, but if properly positioned, the player can still kill the vampire through it (and the immunity granted afterwards keeps you from being locked down.) It feels suiting with their general theme of dominating and controlling enemies. Let's see how they play. -------------- Tile edits by regret-index, using: -Vampire bloodprince: roctavian's old vampire, quicksilver ooze, Bloax's old Dowan, and Denzi's old dragon tile. -Dominate Undead icon: roctavian's Charming spell icon and ontoclasm's Mass Confusion spell icon. -------------------------------------------------------------------------------- 3de618130a | DracoOmega | 2025-02-15 11:30:45 -0330 Fix bits of monster weapons visibly trailing behind in webtiles There was already code to handle rendering tiles whose contents overlapped slightly with the tile to the left or the tile above, but none for the tile to the upper-left. So certain weapons on certain monsters (mostly large polearms) could leave little bits of themselves on previous tiles as their owner moved around. That should now be fixed. -------------------------------------------------------------------------------- b61f5c51ee | DracoOmega | 2025-02-15 11:30:44 -0330 Add a couple missing break statements -------------------------------------------------------------------------------- dabf14c81c | DracoOmega | 2025-02-15 11:30:44 -0330 Remove an unused ability description -------------------------------------------------------------------------------- 60819bef44 | DracoOmega | 2025-02-15 11:30:44 -0330 Add Sanguine Talismans (ie: Vampire Form) Vampires are such an iconic fantasy staple (and famous for being something all manner of living creatures can become) that they feel a natural fit for a talisman form. And being aimed at a higher level also allows doing some more exciting things with than the species itself did, I believe. This is a form targeted at statue form tier. Given that death form's immunities are already somewhat problematically polarizing in extended, I didn't want to make torment immunity even more accessible, so this specifically leans into the 'part-living and part-undead' thing that the vampire species theoretically had going on. You gain a large stealth bonus, torment resistance (like statue form), and rC+, but are still vulnerable to many things that affect living creatures (ie: poison) as well as undead ones (ie: dispel undead and holy wrath), and do not regenerate when monsters are visible. You gain the close equivalent of vampirism brand on stab attacks that you make, as well as a chance on *all* melee attacks made at 50% hp or lower (chance scaling with shapeshifting skill). These stipulations are an attempt to distance its melee healing from Maw form a bit more (though stabs being extra-good for healing was a lesser-known property the vampire species also had). More dramatically, killing living being with stab attacks can turn them into short-lived vampires as well! This is one of the most iconic parts of general vampire myths, and heretofore absent in Crawl; whenever you kill a vampable monster with a stab attack, and have no current thrall, it will turn what you killed into one - making it undead, granting it a vamp bite aux, and (if it was a spellcaster), teaching it the Vampiric Draining spell. These are fairly short-lived, and so shouldn't step on Yred's toes too much (but it specifically being the *first* one you kill that way in a battle might lead to interesting targeting choices sometimes.) Finally, vampire has access to an improved bat form. Instead of just one bat, you turn into an entire swarm of them, spreading clouds of bats on many nearby tiles when you transform (and creating some more around yourself periodically.) Since these clouds can put monsters to sleep, they can both help the player escape *or* allow them to sneakily turn around and sink their fangs into a monster and create a thrall to turn the tide of battle. This transformation is uncancellable and on an XP-recharge timer. Overall, I hope this talisman is fun to use, and also fits into a niche that no other form really does at present (with its obvious stealth synergies). Note that if the player is forbidden allies by Oka or Ru, vampire form is still usable - you just won't make any thralls upon kills. Note also: dragon-blood was already using a vial of blood with bat-like wings above it, which felt too vampire-like now that vampire will be an actual talisman form, so the new sanguine talisman is an edit of its sprite while dragon form has recieved an entirely new talisman tile. Tile source credits (with work done by regret-index): -Vampire-blood talisman: Sastreii's dragon-blood talisman plus pianoman523's vampire bats. -Dragon-coil talisman: The older fire dragon design made by Denzi and edited by roctavian, Marbit, and Bloax. -Vampire Form: Denzi's old Agnes tile, Sastreii's knight / mage tiles, roctavian's old plain vampire tile. - Variations: Sastreii's tengu dummy monster tile, armataur / naga / statue djinn player paper doll tiles, and dragon-form octopode tile. - Vampire felids: pianoman523 + CanOfWorms working from scratch. -Bat Swarm Form: pianoman523's vampire bats and CC0 bats by Clint Bellanger for the player tile, Ontoclasm's form icons for the ability. -Vampiric Thrall status: Coolio and jpeg's old mimic teeth. -------------------------------------------------------------------------------- 95567868e7 | DracoOmega | 2025-02-15 11:18:52 -0330 Add bat clouds Intended to be used both by the forthcoming vampire form (and also a monster, to give players a little familiarity with it *outside* of a specific talisman), these clouds deal irresistable damage to any non-undead inside them while also slowly putting them to sleep if they remain inside the cloud for too long. Damage from the clouds themselves also does not break sleep, potentially putting the player in a very bad situation if they get overcome (but they should have a few turns to figure out something to do, even if pinned.) (Tile credit to regret-index, using Ontoclasm's seething chaos tiles) -------------------------------------------------------------------------------- 1702625a51 | DracoOmega | 2025-02-15 11:18:52 -0330 Make monster forced sleep into a real enchantment, adjust durations Sleep (as applied by Ensorcelled Hibernation and other magical effects) wasn't actually a 'real' enchantment in the backend. A monster's behavior state was simply set to how it is when they are first spawned. This meant both that putting monsters to sleep with magic didn't count as a debuff that poltergeist's passive could notice (which would be unexpected behavior for players) but also that sleep's duration was always: *shrug* Aside from the one-turn protection on being awoken from forced sleep effects added in 8a0c6618593e6a89682b3fb6e53a4acc91d0982c there were no duration controls on forced sleep effects. This meant the duration was based heavily upon stealth (and nearby monsters making noises), and if the player actually ducked out of sight of a sleeping monster, they could even remain asleep indefinitely. An upcoming sleep effect wants a bit more control than that (so that it doesn't break nearly as immediately, but also can't last indefinitely), and it seems better to me if these behaviors are unified. So now, putting monsters to sleep (by any effect except for Step From Time) applies a 'Deep Sleep' enchantment to the monster, during which they cannot be awoken by noise or passive stealth checks. After this duration expires, they will wake up automatically, reardless of any other stimulus - with a 50/50 chance of this immediately alerting them to the player (or having to make another stealth roll to find you again). Hitting or otherwise directly affecting a sleeping monster will still wake them prematurely (and the 1-action wake prevention that existed prior to this commit remains - mostly as help against the annoying situation of allies immediately breaking a sleep effect before the player can exploit it.) Ensorcelled Hibernation is the most affected by this change. In an attempt to not affect its play patterns *too* much, its sleep duration is very low. As mentioned above, EH's current duration is quite complicated to calculate, but this change significantly lowers the upper bound on the effect (and also its average, in many 1v1 situations), while also ensuring that you get at least 20 aut of sleep even if another monster happens to make the tiny noise of attacking you while near them.) I don't intend to make it feel *too* reliable, but Enchanter is generally not considered terribly strong at the moment, so if this results in a mild buff, I consider that okay - especially if the playfeel may also improve mildly at the same time. Knobs like sleep success rate can be tweaked later, if needbe. As part of formula refactoring, the durations of many sleep sources against the player have also changed mildly; if the average number of turns was changed, it was generally lowered slightly, and the high end was often reduced significantly - satyrs could previously put the player to sleep for between 5-18 turns and now do so for 4-11. Sleepcaps always did 5 and now do 3-5. This likely has limited effect in practice. -------------------------------------------------------------------------------- aebd54e673 | DracoOmega | 2025-02-15 11:18:52 -0330 Remove a bunch of unused webtiles code related to the mutations UI menu This appears to have been entirely unused, even before the vampire blood menu was removed from it. Possibly since the more detailed mutations menu was added by a603e38af334a77f00c2b29c781fe2538925648d ? -------------------------------------------------------------------------------- d0a9bed6e2 | DracoOmega | 2025-02-15 11:18:52 -0330 Allow examining fakemuts for longer descriptions While there are some other organizational advantages, the most player-facing benefit that real mutations have over fakemuts (especially for forms, which use a lot of fakemuts) is that they can be examined on the A screen for more details. Fakemuts cannot (and there are a number that are more complex than can be fully conveyed in a single short sentence.) While allowing forms to give *real* mutations is a possible future project, there's a number of complications related to mutation conflicts and how they do or don't stack with normal mutations doing a similar thing (as well as the UI handling of said). This commit opts for a simpler angle that can still give the player just as much information: allowing them to examine fakemuts as if they were real ones. This is accomplished by pairing the 'terse' and full description of fakemuts together, and using the terse description as a key for database lookup (much like mutation name is). Any fakemut whose terse description can be found in the database is giving a hotkey and full description in the A menu. This already applies to a couple fakemuts which duplicated real ones, but can be easily applied to almost any other fakemut (with the caveat that fakemuts that use dynamic names are currently incompatible, but using partial string matching could allow them to work in future as well). -------------------------------------------------------------------------------- c2044cd2ad | DracoOmega | 2025-02-15 11:18:52 -0330 Remove code to make hostile dancing weapons via Tukima's and Sac Love Policy for a long time has been to just not let the player cast the spell while hated by all, so this is no longer needed. -------------------------------------------------------------------------------- 38a2e2c53e | DracoOmega | 2025-02-15 11:18:52 -0330 Default to using a menu for item swap prompts with 4+ options This may be subjective, but while poltergeist swap prompts could often fit in the message log, I think they're much harder to read than as a menu. -------------------------------------------------------------------------------- 4e3b0e0d72 | DracoOmega | 2025-02-15 11:18:52 -0330 Hide inscription and plusses for DESC_QUALNAME -------------------------------------------------------------------------------- f08bb6f277 | DracoOmega | 2025-02-15 11:18:50 -0330 New player species: Poltergeists These take the slanted skill aptitudes of vampires (arguably one of the most distinguishing aspects of the species, in practice), and undead-ness, and put them in the context of an entirely new gimmick: flexible aux slots. Poltergeists can equip up to 6 helmets, hats, gloves, boots, or cloaks, in any combination (but cannot wear body armour at all). Recontexualizing gear choice is a straightforwardly interesting way to change how Crawl is played (and octopodes have been extremely popular for their own way of doing this.) and the new equipment slot tech I added in 2dbd7c1ffd makes this straightforward. Compared to vampires, they have: -10% HP, +2 throwing instead of -3 (tossing objects around is something poltergeists are famous for! Though their strength is very low.), -3 unarmed combat instead of +1 (you have no physical body at all!), and small tweaks to a few magic aptitudes: Forgecraft: 0 -> -1 Fire: -2 -> -1 Air: 0 -> +1 Ice: 0 -> +1 Earth: 0 -> -1 They retain the superlative hexes and stealth aptitudes that vampires had (along with their miserable conjurations). They also have two other gimmicks: -They gain temporary AC for inflicting (non-poison) debuffs on enemies. This increases with each new enemy a new debuff is inflicted upon and decays over time (and is capped based on your XL). They naturally have low AC as a species, and this gives them a flavorful way to deal with that on a temporary basis, as a species that are natural hexers. (Also, it's hilarious to imagine a situation where it could be legitimately correct to read ?immolation for emergency defense.) -At XL 13, they gain the ability to send their equipped armour flying around to assault enemies at range. This 'Cacophony' ability has a long XP-based recharge (about the same as 3 draconian breath charges, at the moment) and generates an enormous amount of noise for the duration, but creates a haunted armour 'ally' for every piece of aux armour the player is wearing. These have phalanx-beetle-esque AI and cannot stray more than 2 tiles away from the player (after all, thematically, they *are* connected to the player), and have only moderate stats, but their attacks can daze, drain, or even confuse their targets. This is a powerful (but fun!) ability, and I think the way the noise aspect plays directly opposite the default stealth play that poltergeists excel at could make it an interesting 'desperate fallback' for when stabbing fails. (Poltergeist literally means 'noisy ghost', etymologically, after all, so I thought it was a cute connection). It *might* be a bit overtuned at the moment, but we'll see how playtesting feedback goes. These will hopefully be fun to play (initial feedback has been positive!) and a more unique and cohesive experience than the species they are replacing, while still allowing them to largely be good at what vampires were most iconic for. ----- Tile credits: -Poltergeist player doll by pianoman523 -Other icons by regret-index using: -Float icon: Denzi's old air elemental tile and ontoclasm's flight equipment icon. -Trickster icon: ontoclasm's Shroud of Golubria icon and Bloax's Corona icon. -Formless icon: Denzi's killer klown and old silent spectre tiles, plus ontoclasm's scroll of noise icon. -Cacophony icon: ontoclasm's plain scarf icon, Sastreii's boots tile, and Denzi's old cap and air elemental tiles. -------------------------------------------------------------------------------- 673755988e | DracoOmega | 2025-02-15 10:49:17 -0330 Remove player Vampires Player vampires have had a troubled history. Their original blood mechanic was complex and not widely liked, but the simplified one has had other problems - they're sort of two species stapled into one, but the downsides of bloodless form cause many experienced players to advocate ignoring it altogether, leaving vampire as sort of 'human with regen+ and funny apts'. It doesn't really succeed in selling the (generally popular!) fantasy of 'being a vampire', and any complex mechanic where a common play pattern is to pretend it doesn't exist is in need of serious reconsideration. In subsequent commits, a new species will be added to fill some of vampire's current aptitude niche, without the legacy of these issues attached to it, and a talisman will be added in an attempt to make the 'being a vampire' fantasy work a little better. (Unlike most removed species, I have cut nearly all vampire-related code entirely, so existing vampire will not be playable in upgraded saves - the player will be given the option to become a human instead, in a similar manner that lava orc upgrading was handled. There was considerably more complexity in the code to be #if-def'd out than in any other removed species, and given how much new vampire-related code will be added for the form (which could be confused for similar function related to the removed species!), it felt best not to be burdened by pulling this into the indefinite future.) -------------------------------------------------------------------------------- 1bbad35be4 | DracoOmega | 2025-02-15 10:49:17 -0330 Make a few new(-ish) monster statuses dispellable -------------------------------------------------------------------------------- 5cf9c13a7c | DracoOmega | 2025-02-15 10:49:17 -0330 A couple new walking verbs for different species Djinn now 'float' (how were they walking without legs, anyway?), spriggans 'sprint', and barachi 'hop'. This mostly affects a handful of titles, but people enjoy that sort of thing. -------------------------------------------------------------------------------- 796593f022 | David Lawrence Ramsey | 2025-02-14 09:49:08 -0600 Fix comment typo. -------------------------------------------------------------------------------- ba96422312 | regret-index | 2025-02-14 10:00:44 -0330 Tweak a changelog entry 8b3c759 missed the full ramifications of ff6897e, and shouldn't be lost with the need for a larger changelog catch-up in a few days. -------------------------------------------------------------------------------- 79430971fb | regret-index | 2025-02-14 09:50:40 -0330 Temporarily nerf nekomata (until later Pan reworks) Nekomata were meant to be on par with Pan's tier-1 demons and the deployment of shrike bands in the Hells as preperation for eventual Hell-Pan roulette plans, with a variety of other monsters planned to be in the same rough space of difficulty for the same branch. Various other plans and focuses between the active devs for the 0.33 version ended up with only a few more small steps into said roulette plans, which has left them much more of a stand out in threat for Pan than was originally intended. With the release coming around sooner or later, I'm opting to temporarily nerf nekomata until Pan itself gets both its reworks and its repositioning as part of those Hell-Pan roulette plans. Phantom Blitz now only hits from 5 tiles away, permitting casters to use Airstrike / Fire Storm / Fulsome Fusillade without getting additional summons in. Their weapon damage has been also somewhat nerfed, and they're less common to spawn both on regular Pan levels and on Lom's floor specifically. Several parts of this are likely to be partially reverted in the future, pending on what the endstate of those further Pan additions ends up as. (While monster xp calculations are messy and the threat evaluation criteria clashes awkwardly with the experience values we want to actually hand out for a given game, when there's several less runes each game nekomata at the very least can also get the ~4000 xp status needed to make them always show up as a highlighted lethal threat.) -------------------------------------------------------------------------------- ef3346897f | regret-index | 2025-02-14 09:23:09 -0330 Yet more tension adjustments Tension now tracks players being blind, vexed, constricted, engulfed, petrifying but not fully petrified, being unable to move from Momentum Strike or bolases, being unable to cast due to Sapped Magic, being marked by the Sign of Ruin, vainglory, and being in shallow water while neither capable of swimming or flying. On the monster side, tension also now tracks monsters being paralyzed, vexed, or chaos laced. Both have been refactored to make such thorough status checks both more compressed and easier to compare, which has minimal total effects (mostly in still tracking all player statuses while asleep / paralysed / petrified; most don't strictly make the given situation much worse, but they'll still be meaningful for whenever that status wears off). Tension will never be perfect, but it can at least continue to be closer to usable for broader purposes than Xom, one unrand, or Beogh. (Additionally, to make it easier to assess these things on the regular, I've added a wizmode command to just directly output tension (&N) rather than having to run fulldebug and use something that checks tension in order see such.) -------------------------------------------------------------------------------- dbd929141c | regret-index | 2025-02-13 12:08:03 -0330 A handful of additional tiles * Human wanderlust mutation: ontoclasm's autoexplore command icon and CanofWorms's regeneration icons. * Demigod divine attributes mutation: ontoclasm's strength, dexterity, and intelligence ring item icons. * Djinn HP casting mutation: ontoclasm's Channel Magic invocation and CanofWorms's mana link mutation icon. * Demonspawn demonic guardian level 1, Summon Minor Demon: Ontoclasm's Call Imp and Summon Demon icons (adjusted to make it not a palette swap of Call Imp, also to de-emphasize wings when many 5s have no wings.) * Launch Bomblet vfx: Ontoclasm's Hurl Damnation icon and the edit of ChrisBlue's CC0 bomblets. -------------------------------------------------------------------------------- f4c381edbf | regret-index | 2025-02-13 05:21:06 -0330 Make (glowing orange) brains unblindable While blind resistance is relatively arbitrary in a number of cases, (do deep trolls use some sort of heat sense? can an early random hound really perfectly smell out the presence of a ghost enough to avoid its stabs?), the usage of jellies as creatures without eyes being unblindable somewhat reasonably extends towards floating disembodied brains managing to do the same, and it'd miss the organelle / weird magic flavour to give a floating brains explicit eyes anyway. -------------------------------------------------------------------------------- 036c31cd67 | regret-index | 2025-02-13 05:08:53 -0330 Remove deep dwarf dummy monsters They're not actually placed in any species vaults except as flavour in unanimated skeleton forms, for the time between the removal of deep dwarves and the revival of mountain dwarves. Since the latter has been evidently successful, we can just use the dwarves that at least appear in playable and unique forms in the game instead of dwarves that don't (especially when "deep" manages to include "d:1"). It'll save another glyph-colour combination for other potential work, if nothing else.... (XXX: Probably we shouldn't append "removed" to skeleton items of removed monsters? This seems like a long-standing weirdness in general, at least.) -------------------------------------------------------------------------------- 853641c8f9 | Flugkiller | 2025-02-12 21:56:21 -0330 feat: penance title for players abandoning with an invo title (DracoOmega) Make it so that whenever a theist player would abandon their god while having an invocations title, they would gain the penance title for as long as their wrath lasts. For flavor reasons, this woud be an appropriate way to make these titles available in game, as most of them are currently unobtainable. [Committer's note: fixed intentation, renamed a function for clarity.] -------------------------------------------------------------------------------- 9c2e5f8391 | mumra | 2025-02-11 02:30:47 +0000 Fix teleport closets and connectivity in numerous vaults This is a first pass using scripts/placement.lua to track down closets and other connectivity problems in vaults. Initially began after a report by Darby on Discord regarding wad_woods_river_04 and turned into a rabbit hole once I discovered the script. This first batch covered only about 1/5th of the vaults, but this script should probably be added to CI once everything is passing. In most cases these were very simple mistakes in the vault definition, in some other cases involving more convoluted substitutions a reasonable fix was harder to find. In several instances vaults simply had to be added to the list of exceptions in placement.lua, for reasons explained there (perhaps a new tag should be added to the vault definitions instead, but for now the list is not too bad.) -------------------------------------------------------------------------------- 30d10493ae | wheals | 2025-02-09 02:07:55 +0200 checkwhite -------------------------------------------------------------------------------- 2b6df3989f | wheals | 2025-02-09 01:51:24 +0200 MSVC: final fixes -------------------------------------------------------------------------------- 4482402deb | wheals | 2025-02-09 00:59:17 +0200 MSVC: Remove unnecessary macros -------------------------------------------------------------------------------- a22baf0345 | wheals | 2025-02-09 00:32:43 +0200 C4804/C4805: unsafe use of bool -------------------------------------------------------------------------------- 0e0c79de7c | wheals | 2025-02-09 00:29:32 +0200 MSVC C4717: infinite recursion (see also: C4717) -------------------------------------------------------------------------------- bb62f359f3 | wheals | 2025-02-09 00:24:42 +0200 MSVC C4715: not all controls paths return a value -------------------------------------------------------------------------------- 56396f341d | wheals | 2025-02-09 00:18:48 +0200 MSVC C4305: truncation from double to float -------------------------------------------------------------------------------- 4e7ccd4116 | wheals | 2025-02-09 00:18:14 +0200 MSVC C4101: unreferenced local variable -------------------------------------------------------------------------------- df013bed80 | wheals | 2025-02-08 20:34:59 +0200 MSVC C4068: unknown pragma -------------------------------------------------------------------------------- 6c93a2eff1 | wheals | 2025-02-08 20:28:43 +0200 Remove several shims for MSVC -------------------------------------------------------------------------------- e8e03e5234 | wheals | 2025-02-08 19:23:04 +0200 MSVC warning C4018 -------------------------------------------------------------------------------- 83f57b3437 | wheals | 2025-02-08 19:05:54 +0200 Remove a sad and lonely function -------------------------------------------------------------------------------- ae123b17cc | wheals | 2025-02-08 18:58:37 +0200 Fix warning C4003: not enough arguments for function-like macro invocation -------------------------------------------------------------------------------- 503d60fff3 | DracoOmega | 2025-02-07 21:07:47 -0330 Fix HP scaling when entering/exiting talisman forms (CanOfWorms) When the player's max HP is adjusted by changing form via talisman, their current HP is supposed to be left alone. This is to discourage things such as shifting into a form with -90% max hp and then immediately leaving it for a big heal. But the logic for this was subtly broken by 2dbd7c1 which changed which point in the complicated transformation sequence the player's 'default form' was set - resulting in the code thinking you were merely returning to that form after polymorph (which *is* supposed to scale your HP, so that you get bonus HP from drinking !lig, for instance.) But apparently, even in 0.32, this logic was partially broken. It was possibly to instantly heal by shifting into an underskilled talisman, and then directly into a talisman that you *did* have skill for (eg: beast talisman). Rather than rely on the finicky behavior of comparing current and default form, HP scaling is now controlled by a new argument passed to transformation functions, so that it should hopefully reliably happen where we want it to, and not when we don't. -------------------------------------------------------------------------------- a04295bf88 | David Lawrence Ramsey | 2025-02-07 12:17:52 -0600 Add a few more words to Crazy Yiuf's word list. -------------------------------------------------------------------------------- a4bcbd7fdb | CipHuK | 2025-02-05 18:01:34 -0600 Add title for Oni with Forgecraft=27 -------------------------------------------------------------------------------- f07b35d43f | CipHuK | 2025-02-05 18:01:34 -0600 Add a "Yokozuna" title for UC=27 for Oni -------------------------------------------------------------------------------- e0e89e2142 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Disable warning */ found outside of comment in the MSVC build This warning isn't very helpful as all our uses of */ outside of a comment are function arguments of the form `type */*name*/` which couldn't appear in a multiline comment anyway as multiline comments cannot be nested. -------------------------------------------------------------------------------- c4a1124d71 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Fix libpng having the wrong library directory in the MSVC build It had a library directory that was relative to the solution directory, so when the build was changed from building it from the contribs solution to building from the crawl-ref solution it ended up wrong. -------------------------------------------------------------------------------- 4c2dad739c | Isaac Clancy | 2025-02-05 11:51:02 +0200 Generate the tile info when building crawl with MSVC We used to only rebuild the tile info when building the tilegen project. However, this resulted in the tile info only being rebuilt when the source files of the tilegen project changed and not when the png files that make up the tiles etc changed. Building the tile info also depends on rltiles/dc-unrand.txt which is generated when building the crawl project. -------------------------------------------------------------------------------- d1e7653d98 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Remove a reference to a section that doesn't exist in INSTALL.md In the Visual Studio build instructions section of INSTALL.md there was a reference to the getting-the-source section. However, this section doesn't exist. -------------------------------------------------------------------------------- 9f70472dd7 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Give a better error in the MSVC build when missing a file When running gen-all.py (which is run as part of the MSVC build), give a readable error that shows up in Visual Studios error list when missing an input file. -------------------------------------------------------------------------------- a8f5c6886c | Isaac Clancy | 2025-02-05 11:51:02 +0200 Update the MSVC troubleshooting tips Many of the tips referred to building the Contribs solution which is no longer done. -------------------------------------------------------------------------------- 7188704608 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Generate species related data before use in the MSVC build The files species-data.h and aptitudes.h were being used before they were generated in gen-all.py -------------------------------------------------------------------------------- cd760e359c | Isaac Clancy | 2025-02-05 11:51:02 +0200 Update the tested windows versions in INSTALL.md It now says that the MSVC build was tested on windows 10 and 11, instead of just windows 11 -------------------------------------------------------------------------------- 1f88427f96 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Add missing dependency to the MSVC build -------------------------------------------------------------------------------- 1c20e33684 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Fix warning: ignoring unknown option '/arch:SSE' -------------------------------------------------------------------------------- 144e0c8bc2 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Fix option 'Gm' has been deprecated -------------------------------------------------------------------------------- 284a72a4f8 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Fix configure.py not handling compiler arguments -------------------------------------------------------------------------------- 8dc9acfdb9 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Generate the job headers in the MSVC build -------------------------------------------------------------------------------- 88bb7a16fa | Isaac Clancy | 2025-02-05 11:51:02 +0200 Don't require Windows Vista or later -------------------------------------------------------------------------------- 1ee772c2ef | Isaac Clancy | 2025-02-05 11:51:02 +0200 Fix generating mon-data.h in MSVC -------------------------------------------------------------------------------- f87482f642 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Don't crash when closing the console on Windows -------------------------------------------------------------------------------- e61d0eb7ff | Isaac Clancy | 2025-02-05 11:51:02 +0200 Remove the requirement to run gen-all.cmd when compiling with MSVC -------------------------------------------------------------------------------- 99d9e2d662 | Isaac Clancy | 2025-02-05 11:51:02 +0200 Fix MSVC doing full rebuilds on minor changes config.h is included in the precompiled header (which all source files include) when building with MSVC so don't recreate it at the start of every build if its contents haven't changed. -------------------------------------------------------------------------------- 139a715e1b | Isaac Clancy | 2025-02-05 11:51:02 +0200 Add mon-aura.cc to the MSVC build -------------------------------------------------------------------------------- d23d1e44ec | Isaac Clancy | 2025-02-05 11:51:02 +0200 Remove the requirement to build the contribs first in MSVC -------------------------------------------------------------------------------- 28b6147393 | Wizard Ike | 2025-02-05 11:51:02 +0200 Fix the MSVC build -------------------------------------------------------------------------------- 8e35882a37 | David Lawrence Ramsey | 2025-02-04 23:56:50 -0600 Fix indentation of staves entry. It now matches the indentation of the other entries. -------------------------------------------------------------------------------- 819cd40f79 | David Lawrence Ramsey | 2025-02-03 11:08:40 -0600 Add another name to artefact jewellery. -------------------------------------------------------------------------------- 6e8ebd26cc | David Lawrence Ramsey | 2025-02-02 18:00:38 -0600 Add another vice name to artefacts. -------------------------------------------------------------------------------- 11f0fbb8a0 | Cgettys | 2025-02-02 18:01:02 -0330 style: fix a few warnings Fixes #4262 * Removes unused fields where it make sense * In the case of targeter_wall_arc, put it back into use (and move where the hard-coded value is) * Also fixes one other warning that only occurs in debug-lite or release configurations -------------------------------------------------------------------------------- d7ebb852bb | Isaac Clancy | 2025-02-01 22:03:27 -0600 Don't freeze corpses that have been turned to gold When you killed a monster with the white draconians breath ability while worshipping Gozag, you would get a message saying it shattered and turned to gold but you would get a block of ice and no gold. Fix this by not freezing a monsters corpse if it has been turned to gold. Fixes #4185 -------------------------------------------------------------------------------- 10f033e6c0 | Isaac Clancy | 2025-02-01 21:56:44 -0600 Fix foxfire swarm using the wrong tile and power The foxfire swarm ability was creating foxfire with a power of GOD_NO_GOD (0) instead of 20 and marshlight set to 20 instead of its default value of false. -------------------------------------------------------------------------------- d4473f9b22 | David Lawrence Ramsey | 2025-02-01 21:49:04 -0600 Fix comment punctuation. -------------------------------------------------------------------------------- 20553fcd9c | David Lawrence Ramsey | 2025-02-01 21:48:36 -0600 Fix agrid checks when a monster's soul is bound. Use the same logic as in 5402c8831a8110ceab99db8b4897b0e08906509a. -------------------------------------------------------------------------------- 5402c8831a | Isaac Clancy | 2025-02-01 21:43:42 -0600 Fix always invalidating the area grid when a monster dies We were checking if the radius of any of the monster's halo, umbra or silence were not equal to zero. However, they have a radius of -1 when they don't exist. -------------------------------------------------------------------------------- 5e9c716987 | David Lawrence Ramsey | 2025-02-01 21:29:24 -0600 Mark the Skull of Zonguldrok as evil. The reaping brand for weapons is evil, so the reaping brand on an offhand item should be too. Closes #4286. -------------------------------------------------------------------------------- 6b1dbc9ee3 | LiciTheCrawler | 2025-01-31 14:50:51 -0600 Fix: Reorder Forgewright startng items Reorders the starting items to be consistent with other backgrounds with a simillar kit. -------------------------------------------------------------------------------- 59c2f4dbea | mumra | 2025-01-31 18:53:50 +0000 Remove a very outdated Gozag shops comment It appears since c8711a1 it hasn't been true that serial_shops is used by Gozag code. Prior to that it was the case that Gozag would only call merchants to branches that already allowed random shops, so the comment is long redundant now. -------------------------------------------------------------------------------- cb9a0bf236 | Nikolai Lavsky | 2025-01-31 16:10:16 +0300 fix: actually take note when the player is vexed The logic check was inverted, as we need a non-zero duration there. -------------------------------------------------------------------------------- 62b7471ca3 | Hellmonk | 2025-01-28 22:29:07 -0600 Zot vault updates (#4271) -------------------------------------------------------------------------------- 5b60755d71 | dependabot[bot] | 2025-01-28 19:14:41 -0600 Bump virtualenv in /crawl-ref/source/webserver/requirements Bumps [virtualenv](https://github.com/pypa/virtualenv) from 20.25.1 to 20.26.6. - [Release notes](https://github.com/pypa/virtualenv/releases) - [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst) - [Commits](https://github.com/pypa/virtualenv/compare/20.25.1...20.26.6) --- updated-dependencies: - dependency-name: virtualenv dependency-type: direct:development ... Signed-off-by: dependabot[bot] -------------------------------------------------------------------------------- 511808601d | Cgettys | 2025-01-27 11:16:37 -0600 ci: Generate docs in CI and publish to GitHub Pages * Generate Lua docs with ldoc * Generate FAQ.html with make docs * When on master, publish generated artifact to GitHub Pages * Add a very rudimentary index.html to serve as landing page * Once merged, https://crawl.github.io/crawl/ should show the new index.html * With working links to FAQ.html and lua/index.html :) One less task to do manually :) -------------------------------------------------------------------------------- c9bed652d4 | Kyle Rawlins | 2025-01-27 07:46:30 -0500 fix: maybe fix a crash in stale pid handling code -------------------------------------------------------------------------------- 13cf12185f | Implojin | 2025-01-26 09:40:45 -0600 Rename doubled vigour to doubled health (CarefulOdds) The description here was flowery enough that players were uncertain about precisely what effects doubled vigour had, and it also wasn't possible to look this up on the ?/t status menu, because that's only setup to search for *player* statuses. As this effect simply doubles HP, it should be okay for us to lose the xv prose alluding to other possible effects here, and instead just say that it doubles health. -------------------------------------------------------------------------------- 2b3b4944bb | DracoOmega | 2025-01-24 12:07:17 -0330 Simplify a clua stab tier function We already encode this information directly in monster info flags, so check those instead of essentially reimplementing their logic. -------------------------------------------------------------------------------- 61249f3da4 | DracoOmega | 2025-01-24 12:06:24 -0330 Reduce redundant messages when examining wandering monsters We don't need to say that they're unaware of you, not looking at you, *and* wandering. (The recent refactoring seems to have resulted in saying more of these at once; this should dial it back to just 'wandering, not aware of you') -------------------------------------------------------------------------------- c6a1a9b5a5 | DracoOmega | 2025-01-24 12:05:16 -0330 Fix new confusion/unaware icons not rendering in webtiles (Kab) You'd think I'd stop forgetting this so often by now.... -------------------------------------------------------------------------------- 5f9c754f44 | DracoOmega | 2025-01-24 08:18:28 -0330 Give confusion its own icon, refactor some stab-tier related code Using the same white question mark for Confusion and also for a monster merely not having yet notice the player (as well as a host of other things) caused recurring, well, confusion, in players. While this icon was *technically* indicating that low-tier stabs were possible, this meaning was opaque to most players (and confusion is a much more significant status than being distracted). -Confusion now gets a yellow question mark instead -Distracted, unaware, and unable to see an invisible player retain their old white question mark -Nets, petrifying, and blindness no longer display an additional icon (since they already displayed an icon which fully implied the latter) I also refactored several methods related to stabbing checks (removing, for instance, some old support for calculating stabbing tiers *by* monsters, as well as renaming confusing things like mons_looks_distracted and MB_DISTRACTED, neither of which meant that a monster would be described as distracted.) I also added a new stab_type, STAB_BLIND to differentiate invis stabs from blindness stabs in action counts in dumps, since grouping them together was misleading in this context (ie: the only context most of these types are used.) Finally, some hints mode code that used the refactored code has been adjusted, fixing some bugs in the process: -Monsters will no longer be described as 'unusual' just because they are asleep or friendly. (This message has been repurposed to explain the 'unusual item' hilight instead.) -Monsters will no longer be described as having 'not noticed you yet' because they're paralyzed. -Turning off console stab hilighting no longer removes messages about sleeping monsters. -Since sleeping monsters are no longer automatically considered 'interesting', I have loosened the danger tier required for this from nasty to tough. -------------------------------------------------------------------------------- 5d0df7669e | DracoOmega | 2025-01-24 08:18:21 -0330 Fix wand charges not always displaying for held wands in local tiles (I am not quite sure how a wand without ISFLAG_IDENTIFIED ended up in the player's inventory, but generally the flag should not be checked directly anyway, since it ignores type knowledge.) -------------------------------------------------------------------------------- 9dea29b9c6 | DracoOmega | 2025-01-24 08:18:14 -0330 Fix dancing weapons made by Tukima's Dance being abjurable (regret-index) Among other things, this made them produce wrong/confusing death messages about disappearing in puffs of smoke (even though they're right there on the ground). -------------------------------------------------------------------------------- f901164d30 | DracoOmega | 2025-01-24 08:18:07 -0330 Fix !lig turning flight items off (Ge0FF) Tree form suppresses flight while active, and it suppressed it *so hard* that it wasn't even possible to see that a flight item was equipped on the player. But player::airborne() already accounts for tree form independently so there seems no need of equip_flight() also doing so. -------------------------------------------------------------------------------- 7f59f0ee2d | DracoOmega | 2025-01-24 08:18:01 -0330 Update artprops when swapping between talismans of same type (Ogregutan) -------------------------------------------------------------------------------- 599c4360dd | Cgettys | 2025-01-24 04:31:06 -0600 fix: overflow of overlays with Qazlal's Disaster area (prawnwizard) In rare cases, you can exceed the 20 overlay limit. Primarily due to duplicate overlays. This leads to a crash. To fix this: * Deduplicate all overlays, not just the most recent * Reduce overlay cap to 16 instead of 20 for vectorization reasons * Make packed_cell fit into 196 bytes, because why not + cache alignment * Make add_overlay an instance method for convenience Modern clang versions auto-vectorize and unroll this std::find nicely. GCC doesn't do quite as well, but at least clones/unrolls it 4 wide. We'll see if it's a win or not. -------------------------------------------------------------------------------- b9f7a0f2ca | gammafunk | 2025-01-23 23:57:43 -0600 Fix a passed argument in a dungeon lua function The function dgn.monster_weapon() passed an incorrectly named variable to dgn.random_item_def() since bcfb333f. This means that various vaults using dgn.monster_weapon() to give weapons to monsters didn't get additional arguments applied (usually related to better item quality). -------------------------------------------------------------------------------- eca436ef18 | regret-index | 2025-01-23 00:01:04 -0330 Tweak descriptions for scrolls and symbols of torment Both mention that they only affect living creatures, despite also affecting holy creatures for dozens of versions. Alongside updating both of these to mention it, I'm mentioning rN partially resists it in the spell description, since we somehow list this next to nowhere in-game. (TODO: We could probably really do with somebody going through all the busywork to explicitly flag every single spell in spl-data.h by the resists they check, alongside caring about AC and EV and SH, then just display this as a new line when examining specific spells. Having to list it in the description for every electric spell, many Ice-but-not-"cold" spells, and magma is already pretty ponderous, and the many newer cross-school spells of 0.32 / 0.33 have exacerbated this matter.) -------------------------------------------------------------------------------- faf1176e91 | regret-index | 2025-01-22 23:31:09 -0330 Follow-up tweaks to semi-/recent commits * c898128 forgot to make the new airstrike vfx alternate amongst each of their given potential tiles; this fix also comes with adding another tile to the weakest so they all can reasonably vary. * 60181c1 forgot to remove the redundant web_immune tag from Dissolution when giving them the amorphous tag. * Sphinx marauders (6ac722a) are doing decently terrifyingly for themselves, but have shown to be a bit noticeably strong for their earliest appearance in late D. Their experience has been nudged up from ~1150 to ~1425, enough to make them always display as Lethal in threat (and red-outlined in tiles) until XL 17, and also they've been nudged down a little bit in the D out-of-depths list so that they're excluded from D:14 9s. * Tengu conjurers getting emergency Force Lance over emergency Blink in e136f0c was a reasonable concept to extend out their use of Battlesphere, made awkward by how emergency spells themselves are not greatly consistent on low-hp monsters in the first place. To make their display of it less confusing compared to other emergency-only spells mostly comprising of Blink or healing, they now get non-emergency access to it as well as an increased use of it in emergencies, similiar to how queen bee Berserk Other works out. Tengu conjurers aren't showing up as too particularly threatening statistically as a late D lightning bolt user or even compared to other tengu, so it shouldn't be much dangerous a nudge upwards. -------------------------------------------------------------------------------- 7aa09acf19 | regret-index | 2025-01-22 07:15:26 -0330 Simplify Trog wrath Many god wrath designs are very antiquated due to god wrath being one of the least prominent and least relevant systems within Crawl, existing in the bulk of circumstances for discouragement or to be squashed by special cases more than something to expect people to suffer through. While a small number are singularly straightforward (Ash, Oka), the many different older wraths list off various thematically appropriate effects held to strange standards (like direct damage or status not checking for combat, so they're just rested off unless the former directly kills the player). Most of them moulder until something either intersects with it by accident (like revisions to miscasts and stat damage) or happens to incidentally overlap in threat and theme. Trog's wrath famously includes quite a few vicious Brothers In Arms, to make Berserkers leaving Trog quite difficult for a long while despite being one of the more tempting gods to leave (learning spells, getting given weapon gifts). It also features a lot of strange side-effects focused on theme over relevance that all just get rested off or uncontrollably kill a given blaspheming apostate: * Weakness, recently replacing mostly-irrelevant strength loss, still not actually checking whether or not any enemies are nearby; * Slowing, at least reasonably connected to Berserk, also very common between three other wraths and a small chance on all wraths; * Paralysis, no longer connected to Berserk since 0ac0241, shared with several other thematic wraths * Fireballs, meant to be physical and not magical despite there being no precedence or follow-up on this concept ever since, also sharing the same issues as other damage and non-combat status wraths. All of these non-summon effects have been replaced with a combination of two debuffs, applying both Weak and Vexed (f4f8fba). The latter effect being nothing but attacking in place reasonably thematically and mechanically invokes how Berserk focuses on doing the same while being fairly worse, kept in check for even former Trog worshippers through the presence of the former effect. Compared to prior, this checks for both one's current health and a survivable band of tension (which has been reasonably improved over the past few versions and prevents just standing around early D enemies), rather than just triggering at random while one travels or rests or sits in a closet. Since this is fairly more dangerous than before, the summon wrath effect has been somewhat mildly tweaked downward in level scaling. This should hopefully all make it easier to explain the wrath, remove a variety of bland repeated effects for something consistently iconically terrifying, and also grant another home to the new Vex mechanic. Ideally in the future other god wraths could be simplified with extant or future mechanics (like crunching Beogh wrath down to apostles, Makhleb wrath down to a Crucible visit, or Sif and Vehumet wrath down to implementing various monster temporary-spell-statuses concepts). (This also comes with adding Vex duration to run notes. We track paralysis but not petrification in the notes, mostly due to the former's lethality compared to the latter being diluted by basilisks; with the current homes for the status being god wrath or a quite intimidating Shoals monster, it seems reasonably closer to paralysis enough to also track.) -------------------------------------------------------------------------------- c898128944 | regret-index | 2025-01-22 03:03:29 -0330 Handful of additional preliminary tiles * Sacrified eye: Ontoclasm's sacrifical dagger and a CC0 spell icon by frosty_rabbid. * Airstrike / Upheaval air vfx: Denzi's old air elemental tile. * Weaponless Pikel: Sastreii's current Pikel tile. Also, properly enabled Hunting Call's spell icon as was accidentally not enabled when added in 8f22220. -------------------------------------------------------------------------------- 76efb29fe3 | regret-index | 2025-01-21 05:57:29 -0330 Ever-incremental vault review Worthy of note: * The weaker Snake ends have small numbers of tyrant's traps and archmage's traps placed in them, to further emphasize the branch's prominence of traps pushed up in 19588f4, to help differentiate the ends beyond more or less concentration of the same enemies, and to also hopefully even out the gaps between rune vaults there. * The small number of trove scroll options have been re-weighted, most noticeably giving out less torment or immolation scrolls in exchange for more ally scrolls and some poison scrolls. They also no longer give weapon or armour scrolls to Felids. * The Elf:2 hall of blades weapons code has been cleaned up a fair bit. * A small number of overflow vaults that could place before the minimum overflow altar depth of D:3 have been properly shoved further deeper. * A selection of severely-underperforming Depths and Zot vaults (ones with one kill or less in the past three versions) have been tweaked upwards in threat. * skrybe_chaotic_catacombs joins the nine other theme vaults set up to place on D:$ as a themed Depths entry vault. -------------------------------------------------------------------------------- 4fe8696770 | regret-index | 2025-01-21 05:57:28 -0330 Exclude new sphinxes from Bestow Arms While they're meant to wear armour, they're not meant to wield any size of weapons with any of many not-great options (lion paws, telekinetic magic, prehensile hair, or a human's mouth). As such, I'm adjusting the logic for Bestow Arms to skip over monsters that lack AT_HIT or AT_WEAP_ONLY attacks (the two attack types that actually use a given weapon), and adjusting both sphinxes' attack types to avoid using just AT_HIT. (Possibly it'd be nice to have an AT_BATTER for battering with wings for attacks like marauder AF_AIRSTRIKE, but I suspect many would parse that as being hit with batter or a bat.) -------------------------------------------------------------------------------- 979fcb14f9 | Implojin | 2025-01-20 10:36:16 -0600 Update ploomutoo in the CREDITS Thank you again for the batch of decor sprites in 76a730d507, they're really quite nice! -------------------------------------------------------------------------------- 159b78985f | Isaac Clancy | 2025-01-20 01:57:13 -0600 Cast OTR with uppercase Z when all enemies resist poison (CrawlOdds) When casting Olgreb's toxic radiance with no enemies in view, it would give the message "You can't see any susceptible monsters within range! (Use Z to cast anyway)". However, when casting with only poison resistant and immune enemies in view, it would cast normally even though it couldn't effect anything. Fix this inconsistency by also requiring uppercase Z to cast with only poison reistant and immune enemies in view. This change also fixes a bug where monsters would always act as if they could see invisibly even when they couldn't when deciding whether to cast OTR. Fixes #3957 -------------------------------------------------------------------------------- cd0d8a32dd | Implojin | 2025-01-20 01:33:37 -0600 Fix excluded feature annotations (Aliscans) In particular, don't annotate excluded enterable shops and portals as being staircases on ctrl+o. Closes #4136 -------------------------------------------------------------------------------- dc80f5c099 | Aliscans | 2025-01-20 01:13:00 -0600 Automatically identify some obsolete items. Add food and rods to the "always known" list in item_type_known(). This restores some behaviour from before _full_ident_mask() was deleted, in that you are no longer asked if you want to identify "removed food" items. -------------------------------------------------------------------------------- 1cbb7ff58e | David Lawrence Ramsey | 2025-01-19 20:00:07 -0600 Make Sprint check for mutations, not species. Instead of the Coglin and Felid species, check for the "no jewellery" and "no weapons or thrown items" mutations in Fedhas' Mad Dash and Arena of Blood, respectively. -------------------------------------------------------------------------------- 802b72d441 | David Lawrence Ramsey | 2025-01-18 22:23:16 -0600 Add a few Xom messages for fountains of eyes. -------------------------------------------------------------------------------- d154b68b10 | regret-index | 2025-01-18 23:04:48 -0330 Tactile mutation icons (CanofWorms) Demonspawn demonic touch and Jiyva disarming tendril mutation icons, to be precise. -------------------------------------------------------------------------------- e11c45b518 | regret-index | 2025-01-18 23:04:48 -0330 Properly grant more body armour to deep elf / high priest monsters Deep elf spellcasting monsters have a strange chance to vary heavily in body armour, ranging from none to chain mail and managing to leave out the robes many elves visibly wear. This might be an antique relic from when robes were far better than other light armour options or when there were substantially more low-tier elves, but now that neither of these are too pressingly true they're very conspicuous in their body armour variance compared to most other monsters, with an eight-year old comment pointing it out. (In particular, deep elf knights have tiles that visually give them heavier armour than deep elf archers, yet the latter consistently get leather compared to the former mostly having nothing on.) This commit removes their chance for no armour, replacing it entirely with robes, while also removing the highest AC roll of chain mail, which few player deep elves are casting crystal spears in. Aside from hurting LRD a little, this mostly shouldn't be of too much pressure considering only one of them is at a point where a robe's ac would noticeably mean much (pyromancers). (In the same capacity, with no Beogh provisions of high priests any more, they can also use a mild nudge up to have the same offerings instead of mostly wearing nothing. The plain orcs and plain orc priests don't get this change, however, since they're early enough that the robes would actually make a meaningful difference, and since the rare chance to get chain mail is of at least some interest for very early game characters.) -------------------------------------------------------------------------------- 379047849a | David Lawrence Ramsey | 2025-01-18 20:18:23 -0600 Fix an ellipsis at the end of a sentence. -------------------------------------------------------------------------------- 4d2cd2bd01 | David Lawrence Ramsey | 2025-01-18 19:20:56 -0600 Revert "Fix inconsistent ellipses." This reverts commit a9c169229f9d7a1da6d0bd631e69a7ca024eb047. -------------------------------------------------------------------------------- 289bc3cdf1 | David Lawrence Ramsey | 2025-01-18 18:22:33 -0600 Add Zonguldrok messaging for unrand hats. Currently, the only one with special messaging is the hat of Pondering, but the mechanism is in place to add more. -------------------------------------------------------------------------------- a9c169229f | David Lawrence Ramsey | 2025-01-18 18:22:13 -0600 Fix inconsistent ellipses. -------------------------------------------------------------------------------- dcb3d5a981 | Hellmonk | 2025-01-18 10:30:12 -0600 don't spawn 500 randarts in hall_of_zot -------------------------------------------------------------------------------- bf5a252ee1 | David Lawrence Ramsey | 2025-01-18 08:58:48 -0600 Fix comment typo. -------------------------------------------------------------------------------- 6ac722a880 | regret-index | 2025-01-18 04:00:58 -0330 Split sphinxes into earlier marauders and later guardians Sphinxes are rather weird for their very broad uses throughout the game. They're out-of-depth highlight threats in post-Lair D, bosses for one end vault for Shoals, a mostly mid-tier monster in the later reaches of Vaults and Depths, flavour monsters in Crypt, and a fixed cluster of threats at the start of Tomb. They work fine at their far ends here, but serve for weird encounters throughout midgame and lategame, since they've been fairly power-crept compared to brains and liches and earthen tomes as hexes monsters. Altogether, this leaves them in an awkward state, as their placement regularly presume they're more of high-tier threats in their deployment places despite placing across most of the game. This split, compared to the arcanist / occultist split of 129f0b0, isn't really meant to reduce the presence of any particular gimmick (though it does lower early paralysis a tiny bit). What this is instead meant to do is let both uses of the monster being effectively scary while broadening a little bit of themes and flavour for Shoals, a debuff-focused branch that struggles with more enemy archetype flavour variety beyond dozens of merfolk leading other mostly-human hybrids plus monsters borrowed from other places entirely (whether appropriately thematic, as with original sphinxes and titans, or deeply reaching, like angels and deep elves). While the branch has a lot of Will checking effects, for the most part swapping in more Willpower is a luxury of less annoyance compared to encountering 1 (one) fenstrider witch in the opposite branch; this should hopefully make the resist be worth considering for Shoals, especially when the new hex works nastily with common reaching monsters... * Sphinx marauders are the earlier-game and newer of the two sphinxes, and are flavoured more around the bloodthirsty sphinx of Mount Phicium. They have AF_AIRSTRIKE (see abc8f7a), an incidental cast rate for Confuse, and the parent commit's somewhat terrifying Vex status. Both hexes prevent the player from making it to safer ground to get away from relatively serious melee damage, but characters with ranged offenses can do more before the sphinx gets close, and characters with melee offenses are more fine with being stuck in place attacking. They appear in late D out-of-depths, rarely late in Shoals as top-tier threats with a chance of a duo of harpies (who have battiness to work with both major gimmicks), and in V:1-4 with a good chance of the other sphinx (to give V a little more to work with, and to make the other sphinx a little less common for its buff.) * Guardian sphinxes are the previous plain lategame "sphinx" monster, now more focused in flavour on the recurring grave/temple-guarding apotropaic variety of sphinx. They're granted a bit more to all stats- most noticeably, in HD, HP, and spell cast rate, so that they're more likely to succeed at hexing characters past the point where willpower swaps / main gear is common. They appear occasionally in V:1-4, at the current semi-regularity in Depths and in Crypt vaults, and in the the Tomb:1 main area entrance with a slight numbers decrease. (Monstrous Menagerie gets a flat upgrade in access to guardian sphinxes, as its position as a ranged monster summon doesn't particularly stand out post-Forgecraft, nor is it particularly effective at raw damge nor body-blocking compared to other high-level Summoning spells. The spell could do with revisions at some point in the future. Kirke also doesn't have much of a high killratio compared to other uniques in her depth range like Nessos and Rupert and Urug, so she can also take the buff. To emphasize them as being something more purposeful than just being another random beast, and to help with some potential future plans, both are equipped with not-visible-on-their-tile cloaks as draconian classes have been using for many years.) The guardian sphinx tile is mostly just an edit of the current base sphinx tile by Denzi to have darker skin and golden accessories. The sphinx marauder tile mixes in said sphinx tile both roctavian's human Erica tile and a CC0 wing icon by frosty_rabbid. -------------------------------------------------------------------------------- f4f8fbaca6 | DracoOmega | 2025-01-18 03:44:08 -0330 New status effect: Vexed Intended as a 'less dangerous' variant on paralysis, this status effect causes the target to uncontrollably attack nearby spaces for the next several turns. They are 7 times more likely to attack spaces with creatures in them (but can still attack empty spaces) and do not suffer any defensive penalties during this, but cannot do anything else. (Naturally, this is blocked by having Clarity.) If the player has a bunch of enemies near them that they were planning to stay and fight anyway, this is probably not so bad for you. But sometimes, of course, it can be a real problem. Note: you *can* attack your allies this way (and they can attack you), but gods will not penance you for this. Summons will still go poof, though! This is intended for Index's upcoming sphinx mauraders (and possible a couple other places, eventually). [Index's notes: The status icon was made from Purge's old berserk status icon, and the spell icon was made from Sastreii's meatsprint destroyers.] -------------------------------------------------------------------------------- 12f01c111f | DracoOmega | 2025-01-18 02:55:40 -0330 Refactor/unify immune to sleep/paralysis and blame handling Sleep and paralysis now share the same immunity status (in preparation for a 3rd disabling status that will likewise share it.) In addition, blame tracking for paralysis and petrification is combined, and sleep is added to this (so that it will now be possible, when a player dies while asleep, to see whose fault it was - just as has been true for paralysis and petrification for a while). -------------------------------------------------------------------------------- 13ce909368 | David Lawrence Ramsey | 2025-01-17 23:32:22 -0600 Improve reaping brand messaging. _make_derived_undead() now allows overriding the default success and failure messages (the "mist gathering" ones). Do this for kills using the reaping brand, so that its messages are only displayed when monsters are successfully spectralised (and visible to the player). The failure message only applies to zero-headed hydras, which should be impossible to get with a reaping brand, but it's in place just in case a bladed weapon somehow gets both the flaming and reapling brands, or otherwise non-reapable monsters of living holiness get added. Fixes #4251. -------------------------------------------------------------------------------- 7bd0b9f747 | DracoOmega | 2025-01-17 17:00:01 -0330 Allowing wearing multiple gloves of infusion to stack (Lici) -------------------------------------------------------------------------------- f0ed78e9a4 | DracoOmega | 2025-01-17 17:00:01 -0330 Fix a crash with upgrading an old save that was wielding a non-weapon When putting their old equipment into new slots, the code would be quite unhappy about trying to figure out what slot a potion or scroll belonged in (since the answer was 'none of them'). It should now just silently unequip it. -------------------------------------------------------------------------------- 40307037ee | DracoOmega | 2025-01-17 17:00:01 -0330 Fix claws not working while *not* wearing gloves (Inkie) The logic check was essentially inverted, giving you the bonus while *wearing* gloves (but still preventing gloves at level 3) -------------------------------------------------------------------------------- 5d708c21f5 | DracoOmega | 2025-01-17 17:00:01 -0330 Hilight active talisman as 'equipped' in local tiles inventory (And as 'melded' if you are polymorphed into something else while using it.) -------------------------------------------------------------------------------- 42a8017c8a | DracoOmega | 2025-01-17 17:00:01 -0330 Fix talisman artprops being active in hostile polymorphed forms If the player had transformed using an artefact talisman, and then was polymorphed by a monster, they would incorrectly retain the talisman artprops in that form. -------------------------------------------------------------------------------- 9d3b6016f6 | DracoOmega | 2025-01-17 17:00:01 -0330 Fix talisman artprops not applying if no gear was (un)melded (Bamboolord) The artprop cache wasn't being updated when you changed form, if that change didn't actually affect any of your non-talisman equipment. (It would still be corrected again if you subsequently changed any gear, or saved/loaded, left the floor, etc.) -------------------------------------------------------------------------------- 3a106aa490 | DracoOmega | 2025-01-17 17:00:01 -0330 Fix a crash with mummy death curses hitting other monsters (I *think* the other effects do not fire behavior effects and are thus safe. I would have excluded passing the dead mummy agent against a monster victim entirely if not for the fact that this would probably also mess up XP attribution for the player in some cases.) -------------------------------------------------------------------------------- 73d441481e | DracoOmega | 2025-01-17 17:00:01 -0330 Don't use split columns for list jewellery if an item is too long Possibly it should be truncated instead, but I'm not exactly sure how useful this command even is if it cuts off half the artprops of a ring. -------------------------------------------------------------------------------- 574e4ebf17 | DracoOmega | 2025-01-17 17:00:00 -0330 Fix a crash with " (list jewellery) on octopode on a narrow window -------------------------------------------------------------------------------- 19588f4062 | regret-index | 2025-01-16 19:30:59 -0330 Initial distribution of the new trap quartet Alongside the previous commits each placing traps naturally, this also handles and tweaks a fair number of vaults and branches. Most worthy of note: * The Zot:5 entrance traps have been reworked, removing the chance for both corridors to be completely blocked off by traps. 25% of the time, one corridor will be blocked off by at least one trap, while the other will be traversible but have two of the newer traps lining the entrance and exit. This is meant to still punish standing in the corridor as a chokepoint or retreating repeatedly through it, but also allow reasonably consistently moving through the path compared to the teleport or dispersal options, plus add a little more variety compared to before. * Tomb's traps have been diluted a little with tyrant's traps and marginally less traps placed overall. If we get more traps in the same buff / debuff veins as prior, then more probably should be deployed in the branch- the power creep has been rather excessive for the branch due to the binary nature of relying on torment. * Snake and Vaults both now have a slightly higher natural-spawns trap count, now that they have weaker traps to work with: Snake gets a flat +2 per floor, and Vaults gets +1. As has been mentioned in previous trap addition commits, both of these branches need more to stand out with on variety and fanciness levels compared to other branches near them; there is also zero guarantee these traps will end up anywhere near monsters or vaults anyway. * The two bailies with the worst kill statistics in the current stable and trunk versions (bailey_axe_4 and bailey_polearm_nasty_gnolls) both get tyrant's traps in them to both buff them and have a little bit of an earlygame introduction to later trap mechanics. * A small number of abyssal rune vaults with the worst kill statistics in current and trunk versions, as well as several underperforming Abyss vaults that can appear outside of the Abyss, now have harlequin's traps and devourer's traps, for both connecting more flavour together and helping said vaults along. * To emphasize wizlabs having more prominent and fancy gimmicks, Alistair's Party Mansion now gets harlequin traps, and Yara's Duelist Academy gets archmage's traps, both far away from their given layout's original bosses. For the most part, these flavour-focused traps either should rely on direct connections to gods, spells, or unrands appropriate to a branch (e.g. archmage's traps for Vehumet vaults with several branch-sourced spellcasters), or the branch placements already established in the random_trap_for_place() function. The main exceptions are late D (where there still should be some caution in throwing around too many of these), Zot, and Ziggurats. -------------------------------------------------------------------------------- b98e54cbae | regret-index | 2025-01-16 19:30:59 -0330 New trap: devourer's trap, corroding players This trap is a very-delayed follow-up to b65a573 producing the very strange flavour of monsters praying to Lugonu to corrode their foes, while the Abyss contains minimal corrosion and Lugonu contains zero corrosion abilities. As such, this trap contains the most obviously divergent flavour of any of the traps: the description mentions the stomaches of unseen extradimensional beasts, akin to the tentacles of a tainted otherworld like Malign Gateway creates (and keeping some space open for the finishing of PR #3775). This rather abstract trap corrodes the player (with normal rCorr checks) 2/3 times it's stepped on. While a couple of branches successfully deploy corrosive effects (entropy weavers in Spider, Slime, Dis), the effect is relatively rare enough it can spare a bit more broader usage. It's not the most exciting effect (neither using a new buff like harlequin's traps nor combining player debuffs and buffs like tyrant's traps and archmage's traps), but the capacity to use more traps in branches and vaults overall benefits from simple traps that still meaningfully affect combat. This trap rarely spawns naturally in Slime, Pandemonium, and will be placed in a number of Abyss vaults. Slime wants for more variety (even if corrosion is pretty common already) and further obfuscates the origins of Jiyva's invasion (hi, starry gem), the Abyss has its aforementioned connection to corrupters, and Pandemonium is connected to the Abyss as well as also being in need of more differentiating variety in its infinite length. The tile was composited from CC0 spell icons by 7Soul1 and Denzi's old Warp Weapon spell icon. -------------------------------------------------------------------------------- 4b739738c5 | regret-index | 2025-01-16 19:30:48 -0330 New trap: harlequin's trap, granting AF_CHAOS to monsters With the reworks to chaos starting from 196b491 onwards, chaos effects are safe enough to deploy in broader circumstances. With a multitude of renewed and flavourful chaotic gods to lean on these days, a trap that can be used in their vaults and which isn't reliant on weapon wielding can reasonably distribute this in a novel fashion compared to the limted ways chaos is currently deployed. These harlequin's traps only have effects if monsters are in sight, and grant 20 to 28 turns of a new chaos-wreathed status to two or three highest-HD non-holy monsters in sight of the trap without the status (or innate chaotic attacks). This works somewhat like the Ignis wrath flame-wreathed status in replacing the attack flavour of a monster's first attack, except with AF_CHAOTIC instead of AF_FIRE, and no damage or speed buffs. (It thus stacks with monster melee weapons, but not ranged weapons). It should provide an interesting variation of the common use of Might throughout the game in letting monsters try to apply debuffs or harder-to-resist damage in melee, and also provide a more novel rare sight amongst the various other trap mechanics added in this commit batch. This trap rarely spawns naturally in the Depths, Zot, and Pandemonium. Zot has some of the strongest chaotic monsters in the game (proteans / klowns / orbs of fire / Tiamat), Pandemonium has its lords, and Depths is close to both while benefitting from a little more explicit connective tissue in its own burgeoning fae flavour. The performance flavour for chaos hopefully will also help lead a little more into the sudden appearance of klowns before their appearance in Zot, while reasonably still feeling somewhat traditional in fantasy thematics; Xom certainly would approve, anyway. The hopefully-eye-catchingly animated tile was composited from CC0 spell icons by 7Soul1 and the old deck item tiles by ontoclasm. -------------------------------------------------------------------------------- 81da222250 | regret-index | 2025-01-16 19:30:47 -0330 New trap: archmage's trap, draining player mp + granting brilliance The natural follow-up to a melee-focused trap is a magic-focused trap. These mystic traps steal from the player's magic (by draining 33% of one's current mp) to grant Brilliance to two or three strongest hostile spellcasters without Brilliance in the trap's sight (i.e. 20-28 turns of casting spells more often with higher effective HD). Draining mp affects both spellcasters and a large number of invocations, while brilliance for the right monsters should be reasonably dangerous. (This doesn't preclude the usage of mp drain on Zot traps, as it is only a portion of one's mp reliably versus Zot traps draining all of one's mp on a rare basis.) This trap spawns in Snake, Elf, and Depths naturally. Snake continues to need more differentiation as a Lair branch, it heavily suits the flavour of Elf and helps the branch a little more past its large vault dependence, and Depths is one of the most magical branches in the game between the fae, the magic giants and flighty animals, and literal walking spellbooks even before all the various other wizards in it, helping more with the V versus Depths split. The tile was composited from CC0 spell icons by 7Soul1. nerf archmage traps -------------------------------------------------------------------------------- bcc7e3493b | regret-index | 2025-01-16 19:30:30 -0330 New trap: tyrant's trap, weakening players + mighting monsters With the steady removal of mechanical / direct damage traps, there have been strange consequences as well as large amounts of design space both opened up by the lack of weaker trap types. The orb chamber's double-trap arrangement can lead to fiddly, tedious tactics at what is meant to be the climax of the game, Tomb has continued to creep more steadily upwards in threat due to its extreme reliance on torment, and vaults can't establish a place as fortified without jumping straight to alarm and net traps at minimum (incidentally losing most of the original Ossuary gimmick). As such, I'm starting up a set of weaker traps, aimed both at helping out these cases and providing more flexible + tangible flavour for both vaults and given branches than The Power of Zot or translocations or infinite net machines. They will still follow the same current paradigm as Zot and alarm traps, where players and hostiles alike walking onto a trap hurls an effect at the player, to help keep the nature of traps straightforward enough to easily learn. Tyrant's traps are for militaristic contexts. Whenever the player or a hostile monster steps on the trap, it will steal from the player's melee capabilities (by inflicting 10-14 turns of Weak, capped at 50) in order to empower two or three highest-hd monsters in sight (by granting 20-28 turns of Might). If there are no monsters in sight, the Weak is still applied. (While this and other upcoming traps could mildly annoying to rest off if there aren't any further monsters in sight, with pre-revealed traps it's rare to need to activate traps to explore a floor, and when it does block off a path it's nowhere near the annoyance dispersal and teleport traps can invoke in the same capacity, so it should be a net reduction in annoyance.) This swing should hopefully force melee-centric characters to switch tactics, while still being relevant for other characters as Might has shown to work throughout the game. These traps rarely spawn naturally in Orc, Snake, and Vaults. Orc could do with more unique components beyond the orcs regularly used elsewhere, Snake struggles in terms of variety and distinction versus the other Lair branches (plus it contains both status effects already), and V needs more thematic aspects to help establish it as an organized branch versus the Depths shortly after it. Each of these traps will come with a slight decrease for shafts (which are now mostly helpful for players in the actually visible form) and dispersal traps (which are roughly comparable in helping monsters and hurting the player on a short-term basis). (The messaging is kind of weird- I'm not super happy with my options, but "constitution" reads as max hp drain and "power" is used regularly for mp. With no actual statdrain in the game anymore as of de20453, hopefully people will notice the Weak status being gained instead of expecting actual lost "strength".) The tile was composited from CC0 level block scraps by Surt and Bloax's original tentacled monstrosity tile. -------------------------------------------------------------------------------- 64b092adc6 | DracoOmega | 2025-01-16 11:18:25 -0330 Fix Justicar's Regalia having the wrong word in its inscription (Ge0FF) (I had originally debated between the two, but evidently forgot to change one when I changed the other.) -------------------------------------------------------------------------------- c71af56701 | Nikolai Lavsky | 2025-01-16 16:00:41 +0300 fix: pluralize "Oni" as "Oni" -------------------------------------------------------------------------------- 0e3914b0de | Nikolai Lavsky | 2025-01-16 15:36:17 +0300 fix: don't show moonshine potions on the action panel since even Oni can't drink that. -------------------------------------------------------------------------------- 8ce5bd8831 | DracoOmega | 2025-01-16 00:08:53 -0330 Fix Ash ignoring Coglin's offhand slot for piety purposes (GnomeSayin) -------------------------------------------------------------------------------- f0d829a46a | DracoOmega | 2025-01-16 00:07:50 -0330 Don't claim that boots are too big for spriggan hands Or too small for troll ones, though perhaps the troll was just a little confused about how to wear them. -------------------------------------------------------------------------------- 2d41d3628e | DracoOmega | 2025-01-16 00:07:01 -0330 Don't give spriggans boot and glove slots They're little, not tiny. (They couldn't put any armour that exist in the game *in* those slots, but the UI would still claim they had them, and Ash would refuse to give them full piety for binding a full set of equippable item.) -------------------------------------------------------------------------------- 3cb26d0658 | DracoOmega | 2025-01-15 18:48:26 -0330 Split 'unknown jewellery' on autopickup menu (ge0FF) Now it shows 'unknown amulets' and 'unknown rings' instead (with each of these toggling off just the relevant category instead of having to do both at once). -------------------------------------------------------------------------------- 800c1ae1cb | DracoOmega | 2025-01-15 18:18:05 -0330 Don't allow [A]lways ignoring randarts for autopickup Selecting [A] for a randart jewellery item currently causes autopickup to turn off for all unidentified jewellery. But [A]lways has a poorly-defined meaning for randart jewellery in the first place. While it is possible to deduce the type of a randart amulet, it often is literally impossible to do this for rings, so having [A]lways just disable autopickup for that subtype would lead to very opaque behavior, even for experienced players. Also: in most cases, it doesn't make *gameplay* sense for a player to exclude all randarts of a given type, since their artprops can easily be far more important and aren't predictable. You may not want to wear an Amulet of the Acrobat, but how many people would consider that to mean they also wanted to ignore {Acrobat, rF++ Int+8 Slay+5}? So, this commit disables the [A]lways option when being prompted over artefacts. It *additionally* disables it for stacks of items, since it seems very unlikely that one wants to disable type autopickup of a bunch of items at once that just happen to be standing on the same spot. (And what would it do if the stack contained both artefacts and non-artefacts?) -------------------------------------------------------------------------------- eb6b0e9581 | DracoOmega | 2025-01-15 17:37:34 -0330 Get !T/!R/etc. working again, and document the general !u/!e inscriptions It's arguable that we ought to just take the more specific ones out of the manual entirely, but I've left them for now. (Surely a single 'Don't equip' inscription is enough? Possibly a single 'Don't use' inscription also? But I don't really use this functionality, so I don't feel like I know enough about how people use it to barrel all over it.) -------------------------------------------------------------------------------- 4f3e835044 | DracoOmega | 2025-01-15 17:35:42 -0330 Restore {=R} to functionality And document that it works on more than just jewellery now. -------------------------------------------------------------------------------- 86ebd2fb29 | DracoOmega | 2025-01-15 16:50:53 -0330 Fix some orbs not being properly marked as useless (ge0FF) -------------------------------------------------------------------------------- 2fa979db60 | DracoOmega | 2025-01-15 01:16:49 -0330 Rename some removed status effects for consistency This does effectively nothing since their durations were set to 0 in the commit that removed them, but I noticed that every other removed duration was formatted this way.... -------------------------------------------------------------------------------- a79ed6c2ef | DracoOmega | 2025-01-15 01:16:49 -0330 Fix Awaken Armour only being castable while *not* wearing armour. Except for the part where the spell would then abort because you weren't wearing armour. (A logic check got inverted after the equipment slot refactoring. Oops.) -------------------------------------------------------------------------------- 2e45f3495a | David Lawrence Ramsey | 2025-01-14 22:05:47 -0600 Fix missing punctuation in Awaken Armour message. -------------------------------------------------------------------------------- 23834c3785 | DracoOmega | 2025-01-14 19:44:23 -0330 Some tweaks to equip_slot_name for better backwards-compatibility with lua The equip slot refactor changed the output of equip_slot_name largely for visible UI reasons, without fully considering the effect on existing lua scripts. I have opted to return clua .subtype() to its old lower-cased output (and even make body armour return "body" again. The one persistant change is that bardings are still separate of boots (and shields/orbs return 'offhand' rather than 'shield'), which I think is worth breaking some backwards compatibility for. I also updated the aux armour autopickup script in advanced_optioneering to account for bardings. -------------------------------------------------------------------------------- d2b01e6f85 | DracoOmega | 2025-01-14 19:18:44 -0330 Make gizmo egos work properly again Accidentally broken by the fix to armour in 2e5bc60 I really would like to untangle some of this in future better than this... -------------------------------------------------------------------------------- 2e5bc604ec | Implojin | 2025-01-14 16:35:12 -0600 Hopefully let artefact brands work again (CarefulOdds) As reported by various players, randart scarves of shadows and resistance weren't properly applying their brand effects. This has been a little difficult to test because generating these items in wizmode or through item spec *did* properly set the brands -- we needed to test against dungeon generated items, for item generation weirdness reasons. Hopefully this fix catches it; if not, we'll have to do some future refactoring. -------------------------------------------------------------------------------- b604e0db52 | Alex Beloi | 2025-01-14 05:07:59 -0600 Update add_autopickup_func to use capitalized subtype The autopickup function is matching against the return from l_item_do_subtype, which is a wrapper around equip_slot_name, which in 2dbd7c1f was changed so that the strings are capitalized. thanks to @lmplojin on discord for the pointer. -------------------------------------------------------------------------------- 6518f178e1 | Cgettys | 2025-01-14 04:14:01 -0600 Fix: white splash screen when OpenGL 3+ unavailable (Ge0ff) I thought GL_TEXTURE_MIN_FILTER had the same value for both branches. I thought incorrectly. Fix it in the simplest possible way for now. I'll clean this up more in a future PR. Fixes bug introduced in #4217 Co-authored-by: Implojin -------------------------------------------------------------------------------- de7caedde6 | Cgettys | 2025-01-14 00:19:42 -0600 Remove GLU dependency Avoid depending on deprecated GLU library by dynamically loading OpenGL 3+ function glGenerateMipmap where available. If it's not available, Where it's not, we just render without mipmapping. Note that for a lot of resolution / rc setting / zoom level combos, we don't mipmap anyway, and this PR doesn't change those cases at all. Also note that OpenGL 3.0 was released in 2008. glGenerateMipmap is available even on decade old GPUs and iGPUs as a result. For players running truly ancient GPUs and systems that supported GLU, but not OpenGL 3, and who happened to have just the right setup for us to enable mipmapping, we will now render without it. If anyone actually does turn out to be affected, they may be able to use a version of llvmpipe that supports OpenGL 3+ as a software renderer. llvmpipe is available on Linux and Unix-like systems. Also note we could turn on mipmapping on GLES targets according to https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glGenerateMipmap.xhtml. This may be quite useful for low resolution screens, like older android phones. But I'll leave that for a future commit. -------------------------------------------------------------------------------- 535f1cdcc7 | Implojin | 2025-01-13 22:53:22 -0600 Don't prevent item stacking based on differing inscriptions Previously it was possible to end up with two separate stacks of stackable items in your inventory you had inscribed each stack differently prior to pickup. This behavior appears to have been added out of an abundance of caution in 4c5c3809de (2007). It seems unnecessary today; let's remove it. (Stackable items with conflicting inscriptions will now inherit the inscription of the stack in your inventory when picked up, or the pre-existing stack on the ground when being dropped.) Fixes #4214 -------------------------------------------------------------------------------- af1eef3400 | Implojin | 2025-01-13 21:57:28 -0600 Always identify a couple more base item types As a followup from 9e0d956b5c. -------------------------------------------------------------------------------- e79d8a169f | DracoOmega | 2025-01-14 00:08:05 -0330 Fix a crash with the known items menu The 'dummy' item used for the gems entry was causing an assert about its name, now that it counts as identified (even though its name is never used in that menu anyway.) But replacing it with an actual gem that looks the same seems fine. -------------------------------------------------------------------------------- 203f4b1603 | DracoOmega | 2025-01-13 21:17:54 -0330 Don't let the player kill themselves with Makhleb marks + vitrify Skip damage multipliers from harm/vitriy/etc when dealing self-damage from inscribing a mark into yourself. -------------------------------------------------------------------------------- 77dd6fc368 | DracoOmega | 2025-01-13 21:17:54 -0330 Prevent a crash when Surprising Crocodile drags a monster into a shaft If the monster actually fell through, it wouldn't be there by the time the actual attack happens, resulting in a crash. -------------------------------------------------------------------------------- 9e0d956b5c | DracoOmega | 2025-01-13 21:17:54 -0330 Make a few more item types count as always identified Fixes a weird issue of ?id scrolls being readable when on top of a corpse, even though no items would be shown in the list *to* identify. -------------------------------------------------------------------------------- 60363ce734 | DracoOmega | 2025-01-13 20:58:57 -0330 Fix religious abilities having the wrong hotkeys for zealot starts (Kab) God invocations default to being mapped to a/b/c/etc. and Renounce Religion is mapped to 'X'. But since 2dbd7c1 zealot starts would have Renounce Religion on 'f', and god abilities like berserk start at 'g'. (Joining said god later on worked properly.) The reason for this was rather opaque, but essentially: the new equip system causes equip_item() to be called for the player's starting equipment and this calls check_item_hint() which grabs a list of the player's current abilities (to see if they have gained any, so that hints mode can teach the player about that). Getting a list of abilities automatically applies hotkeys to any the player has which don't have any yet (and the new character already worships their god at this point, so Renounce Religion, Berserk, etc. are given default keybinds.) By the time set_god_ability_slots() was called, they already had keybinds and so were not given any, resulting in this issue. I have elected to resolve this by having set_god_ability_slots() delete even abilities that belong to your current god, so they can be assigned fresh (this is only ever called in newgame and upon joining a god, so this seems safe.). Renounce Religion is handled slightly differently and given a default keybind in find_ability_slot(). This technically means that if the player has something already assigned to X when they join a god, that it will end up elsewhere instead. I'm not sure this matters. -------------------------------------------------------------------------------- 812cd53223 | DracoOmega | 2025-01-13 20:58:57 -0330 Fix enhancer staves not getting the usual wield message -------------------------------------------------------------------------------- dfcb6f04d8 | DracoOmega | 2025-01-13 20:58:57 -0330 Fix being unable to unwield a magical staff (ragingrage) The game would claim you were already empty-handed (because the function in unwield to check your current weapon was accidentally still filtering out non-OBJ_WEAPONS and not non-weapons -------------------------------------------------------------------------------- 6f71aec649 | DracoOmega | 2025-01-13 20:58:57 -0330 Don't warn about fleeing apostle challenges for entering a PoG (salticid) They were apparently too stair-shaped for comfort. -------------------------------------------------------------------------------- 12a0c8464c | DracoOmega | 2025-01-13 20:58:57 -0330 Actually stop the Sword of Zonguldrok from generating -------------------------------------------------------------------------------- 836663c12a | Implojin | 2025-01-13 15:24:59 -0600 Add Charlie Gettys to the CREDITS For 37eb8d4443. Thanks for your ongoing ci efforts! -------------------------------------------------------------------------------- a3f7f667d0 | DracoOmega | 2025-01-13 04:13:23 -0330 Remove a breadswinging-related comment -------------------------------------------------------------------------------- dc257c63a9 | DracoOmega | 2025-01-13 04:12:06 -0330 Replace an assert with a prompt instead I thought it was impossible to reach this point for any non-equipment anymore, since I removed breadwielding (and the ability to select any ineligable item from the equip menus), but apparently you could still reach this point via inscriptions like {@w1}, creating an easy crash-on-demand. It seems sensible enough to just abort with a message, in this case. -------------------------------------------------------------------------------- 233abfc1fd | DracoOmega | 2025-01-13 03:58:54 -0330 Fix one's armour sometimes silently falling off (pisaster) If the player was transformed into a form whose *body size* was too large or small for certain items (ie: bats are tiny, and tiny creatures cannot use gloves), these items would be forcibly removed the next time the player was unmarshalled (as part of new generalized save compat code to remove items the player is not allowed to be equipping). Note: the player is unmarshalled every time they leave their current floor... This code now checks only the player's *base* body size (since forms don't rely on changes in body size to control what slots are available, and forms shouldn't forcibly remove items in any event; that's what melded slots are for.) -------------------------------------------------------------------------------- 535689ca4f | DracoOmega | 2025-01-13 03:16:07 -0330 Make Freeze use a proper zap This fixes the targeter being a little wierd and sometimes locking onto monsters out of range, as well as being unaware that cold-immune enemies are not useful targets for this spell. (There should be no mechanical change as a result of this.) -------------------------------------------------------------------------------- 752c899f1e | DracoOmega | 2025-01-13 02:20:12 -0330 Fix body armour being tagged {auxiliary armour} for stash search -------------------------------------------------------------------------------- c0115c06c0 | DracoOmega | 2025-01-13 02:10:34 -0330 Fix jewellery not being marked as useless for Coglins -------------------------------------------------------------------------------- a61b68f949 | patrick | 2025-01-12 20:41:05 -0500 Make the Legendary Smithy's work slightly less legendarily bad Tweak the bad artprops in the inventory to make them somewhat less god-awful. -------------------------------------------------------------------------------- af52db9ec8 | DracoOmega | 2025-01-12 21:31:57 -0330 Fix artefact antimagic weapons not reducing your max MP (staticshock) -------------------------------------------------------------------------------- 8ee53adf16 | DracoOmega | 2025-01-12 19:51:47 -0330 Fix shattering cursed items that grant slots not removing items (Darby) Previously, shattering an Ash-cursed item that granted equipment slots would allow you to keep the extra items you had equipped in those slots (at least until you saved the game - or left a floor, which silently does the same - which performed automatic fixup on your slots). Now they should visibly be removed from you when you shatter. -------------------------------------------------------------------------------- 56b6964273 | DracoOmega | 2025-01-12 19:51:47 -0330 Fix delayed wield printing the wrong message for non-Coglins (cool 3) Now that you can automatically remove a shield when trying to equip a two-handed weapon, species other than Coglins can queue a delay to equip a weapon. It isn't actually slower than a turn for them, but printed the Coglin message anyway, which was confusing. -------------------------------------------------------------------------------- ee6a2ae5b8 | DracoOmega | 2025-01-12 19:51:47 -0330 Fix some weird effects with Ash and the tiles item window (Darby) If someone was worshipping Ash, had some cursed equipment, and moved their mouse over equipment in the local tiles inventory panel, it could cause the visible equip status of those items to change (and also print messages to the log and maybe even identify items....) Basically, mouseover creates the item description tooltip, which does the equipment preview, which quietly swaps equipment in the background to see your new stats. But because one call to ash_check_bondage() was in the wrong place, doing so could change your piety in the midle of the preview, causing messages to print and redrawing the inventory in the middle of what should otherwise be an invisible action. This is hopefully fixed now. -------------------------------------------------------------------------------- 9f8dda7171 | DracoOmega | 2025-01-12 19:51:47 -0330 Fix a crash with many death curses triggering at once (Darby) -------------------------------------------------------------------------------- 5a0e0285cb | DracoOmega | 2025-01-12 19:51:47 -0330 Prevent removing the Crown of Vainglory while stair block is active It wouldn't be the *worst* balance thing if the player was allowed to spend 5 turns deliberately smashing their crown to escape from its hold, but it feels more in the proper spirit of the thing to go the Obsidian Axe route and just prevent the player from taking it off when the big downside is active. -------------------------------------------------------------------------------- f56b7f98d4 | DracoOmega | 2025-01-12 19:51:47 -0330 Remove ac_with_specific_items functions These were once used as part of the early AC change previews, but the current system that actually puts on arbitrary items temporarily has superceded that for a while. The only remaining user of these functions for anything other than 'the armour you are actually wearing' is the description for !lig, and that can use the same logic as forms checking for flight (ie: temporarily transform and then look at our resulting stats). This is a lot heavier weight, but for this purpose that's fine (and by the code's own admission, it didn't properly restrict itself to the passed set of items anyway. This also fixes shields of protection no longer giving AC. -------------------------------------------------------------------------------- 285ba1224f | DracoOmega | 2025-01-12 19:51:47 -0330 Fix bucklers not showing up when using ctrl+f for 'shield' The shield slot in menus was renamed to the offhand slot (orbs exist, after all!), which apparently was passed on to the stash search inscriptions. (Other shields still showed up since those have 'shield' in the name). Since this is all done by lua, this commit solves that by exposing is_shield to clua and using this to additionally add the {shield} tag to shields. -------------------------------------------------------------------------------- 3ec6d0f5d0 | DracoOmega | 2025-01-12 19:51:47 -0330 Fix a few issues with ' command This should fix the last of #4231 -------------------------------------------------------------------------------- 14d66cf9ea | DracoOmega | 2025-01-12 19:51:47 -0330 Fix equip messages for weapons being accidentally removed -------------------------------------------------------------------------------- 7d3a69787e | DracoOmega | 2025-01-12 19:51:47 -0330 Fix equipped weapons not showing on webtiles sidebar As well as removing some more remnants of the old equip system. -------------------------------------------------------------------------------- 37eb8d4443 | Cgettys | 2025-01-12 19:51:36 -0330 fix: failing header tests Fix all the remaining failing header tests -------------------------------------------------------------------------------- da5e99f6e2 | patrick | 2025-01-12 15:11:04 -0500 Update the commercial district of grated_community_mu The Legendary Smithy shop in the grated_community vault was not a particularly good shop. A shop doesn't have to always be useful, but it should at least be useful sometimes. A shop that's always crap is a joke that's only ever funny once. Any possible usefulness for mundane, damaged high-end gear is a gimmick done better by the Lightly-Used Armoury anyway. Accordingly, use gammafunk's new artprops specification tech to give it a new gimmick, similar to the old one, but with the potential to make something someone might conceivably ever use: All randarts, but each has at least one bad artefact property. Also, replace the long-lost food shop with a scroll shop. Similarly to the Miraculous Elixirs next door, it sells only scrolls of non-guaranteed utility: noise, torment, and vulnerability. It's not quite the same as a potion of mutation, but it'll do for now. -------------------------------------------------------------------------------- 32e6db6f59 | DracoOmega | 2025-01-12 14:36:52 -0330 Remove a stray debugging statement (ge0FF) -------------------------------------------------------------------------------- d0af61dcc4 | David Lawrence Ramsey | 2025-01-12 11:37:03 -0600 Add missing Protected status description. -------------------------------------------------------------------------------- 237e977852 | David Lawrence Ramsey | 2025-01-12 11:15:06 -0600 Tweak eudemon blade description. Since undead and demonspawn have been able to wield them for awhile, albeit with their holy wrath brand disabled, the part about how "it cannot be wielded by the forces of evil" now makes little sense, and the descriptions of sacred scourges and trishulas don't have that part either. -------------------------------------------------------------------------------- e07210bfbf | DracoOmega | 2025-01-12 05:19:41 -0330 Fix the Vainglory debuff being dispellable (Darby) An oversight when copy-pasting, oops. -------------------------------------------------------------------------------- 296d49ecf8 | DracoOmega | 2025-01-12 05:19:41 -0330 Fix a couple crashes related to equipping dangerous items on the floor If one attempted to equip an item on the floor such that a warning prompt would happen (ie: for ^Drain items), it could cause a crash in two different ways - by trying to get an out of bounds inventory letter, or by leaving a 'ghost' item in the player's backpack that could later cause the game to think the player's inventory had room, but fail to put anything in it. But I think the entire process of temporarily putting the item into the player's inventory is no longer necessary (it only existed due to stat zero checks from an older version that never even made it to trunk), so that alone should hopefully fix these crashes. -------------------------------------------------------------------------------- 385c7f6713 | David Lawrence Ramsey | 2025-01-12 01:59:00 -0600 Use apostles' pronouns when anointing them. -------------------------------------------------------------------------------- b602fafdc2 | David Lawrence Ramsey | 2025-01-12 00:47:25 -0600 Use mpr() instead of mprf(). -------------------------------------------------------------------------------- c40ce7fcf5 | DracoOmega | 2025-01-12 03:12:48 -0330 Slightly buff the Macabre Finger In past discussions, it was generally agreed that even if the effect was cool, this amulet was often a bit underwhelming in practice, so let's give it a little extra boost. (The idea of making it a regeneration amulet had been proposed, but that might make it *too* automatically good. This should be something like '1/2 regen' in a lot of cases, but texturally different.) Was the number 7 really lucky for whatever poor soul this finger once was? (Also, change the artprop name to match Vainglory) -------------------------------------------------------------------------------- c877134c9c | David Lawrence Ramsey | 2025-01-12 00:25:07 -0600 Reorder octopodes' species_flags. They're now just before aptitudes, the same location as every other species' species_flags. -------------------------------------------------------------------------------- 8ba66c0f68 | DracoOmega | 2025-01-12 02:50:39 -0330 Fix yet more CI errors -------------------------------------------------------------------------------- 0da8038b3c | David Lawrence Ramsey | 2025-01-12 00:04:44 -0600 Fix wording. -------------------------------------------------------------------------------- 773a97d5a4 | David Lawrence Ramsey | 2025-01-12 00:03:55 -0600 Fix missing punctuation. -------------------------------------------------------------------------------- 0c33c9779a | DracoOmega | 2025-01-12 02:24:49 -0330 Fix a couple more ci errors -------------------------------------------------------------------------------- d0d10d1f0b | gammafunk | 2025-01-11 23:48:43 -0600 Remove an outdated vault The vault gammafunk_ghost_stat_death was very much thematically tied to stat drain, both in terms of monsters and loot. Now that stat drain is removed, rather than trying to shoehorn in something about mutation/polymorph, I think it's ok to just remove this vault. The exact layout is already used by another more memorable vault, gammafunk_ghost_berserking_beasts. I had intended to make the two vaults have distinct and more randomized layouts at some point, but never got around to it. Thankfully stat drain removal gives a simple way to remedy the distinctiveness problem! -------------------------------------------------------------------------------- a49f8ab139 | DracoOmega | 2025-01-12 02:13:13 -0330 Allow the elusive crimon imp to return to hiding (Cgettys) -------------------------------------------------------------------------------- 008900fb2a | DracoOmega | 2025-01-12 01:53:46 -0330 Allow formicids to wear a second pair of gloves For years, players have periodically asked why formicids can't wear gloves on their second pair of hands. And the answer has mostly been about the pain of implementing this, rather than any compelling balance reason not to. And now implementing this is easy! So let's give it a go. -------------------------------------------------------------------------------- f0b4e4a408 | DracoOmega | 2025-01-12 01:53:46 -0330 New unrand: the Crown of Vainglory A fragile +3 crown that grants Will+ and *two* extra ring slots. But its ostentatious majesty comes with a (hopefully) commensurate downside: whenever you enter a floor, you immediately wake up all enemies in sight of where you arrive and are forbidden from taking stairs for a decent while after doing so. One as grand as you surely wouldn't flee from danger like a common peasant? (Tile credit to regret-index, using CanOfWorm's Crown of Eternal Torment tiles, plus CC0 rpg item assets by Jetral) (It also gives the player a radius 0 halo, which confers no mechanical upside, but does give the usual mechanical *downsides*. But you look fabulous, so why should you care?) -------------------------------------------------------------------------------- 2550460db2 | DracoOmega | 2025-01-12 01:53:46 -0330 New unrand: the Fungal Fisticloak A living cloak covered in tiny symbiotic wandering mushrooms, it occupies the helmet slot as well (and gives HP-10, Str-2, Int-2), but grants an extra glove slot for the mushroom colony's own 'fists'. The cloak will also sometimes use those fists of its own volition; each turn there is 1 in 4 chance for the cloak to launch a special aux attack at a random adjacent enemy, which itself has a 1 in 3 chance to briefly inflict confusion from its spores. This can happen regardless of what else the player is doing (though attacks do tend to trigger it more often, just from being quicker actions.) As an aux attack, it should also be affected by slaying, strength, and anything else that would work on normal auxes. Finally a solution to how friendly wandering mushrooms are too shy to move in the presence of enemies: you can move *for* them! (And who wouldn't want a cute mushroom pal to have their back in the dungeon?) (Tile credit to regret-index, using Denzi's old cloak of the Thief, tormentor, and giant centipede tiles, mixed with CC0 mushrooms by Surt.) -------------------------------------------------------------------------------- c7ca3d38c2 | DracoOmega | 2025-01-12 01:53:45 -0330 Replace the Sword of Zonguldrok with the Skull of Zonguldrok This is an orb-slot item that makes the player's weapon act like it had the Reaping brand (on top of whatever brand it might actually have), gives rN+ and Int+4, and allow allows the player to wear another hat (by putting it on the skull). It is also rather talkative, and comments on several things, including what hat the player chooses to put on its head. Finally, players can learn important lore about this legendary necromancer (such as his thoughts on millinery). (Tile credit to regret-index, using Denzi's old curse skull and roctavian's medium-sized humanoid skeleton. Vault edit credit to her, as well) -------------------------------------------------------------------------------- cfde047c93 | DracoOmega | 2025-01-12 01:53:45 -0330 New unrand: Justicar's Regalia The first of a set of new unrands to show off the new item slot system, the Justicar's Regalia is +5 scale mail that gives the player an additional amulet slot, along with 4 strength. In addition, allies the player creates or summons themselves while wearing it will spawn with Regeneration. (Tile by regret-index, using roctavian's old splint mail randart and chain mail randart tiles, loginerror's branded elven scale mail, and Bloax's plain scale mail tile.) -------------------------------------------------------------------------------- e9a161bd7f | DracoOmega | 2025-01-12 01:53:45 -0330 Tweak / generalize Reaping brand (regret-index) Instead of only existing on the Sword of Zonguldrok (which is a fine enough weapon, but among the less exciting unrand weapons), allow Reaping to spawn rarely on any randart weapon (at about half the frequency of Speed). Instead of permanent zombies, it now creates temporary spectrals (but at a somewhat higher chance than it used to create zombies). (The Sword of Zonguldrok itself will be going away in a subsequent commit.) -------------------------------------------------------------------------------- cfdfd765e8 | DracoOmega | 2025-01-12 01:53:45 -0330 Remove quasits These monsters already *mostly* did nothing (and also barely existed). With their dex drain gone they now do *literally* nothing, so let's make them gone entirely. (In contexts that could place multiple random low-tier demon, they have been cut without replacement. A couple vaults that specifically placed quasits have been adjusted per regret-index's suggestions) -------------------------------------------------------------------------------- a2ca077a11 | DracoOmega | 2025-01-12 01:53:45 -0330 Make messages about the player being slowed use warning colors Several *less* scary debuffs already had their announcements colored red, and Slow is pretty relevant all game long, so it feels like it should also be red. -------------------------------------------------------------------------------- ec04cbc662 | DracoOmega | 2025-01-12 01:53:45 -0330 Simplify stat zero With stat damage removed from the game, hitting stat zero has become even more unlikely. While inopportune mutations and equipment that reduce stats can still do this, the former are even more situationally unlikely to make you hit zero than stat damage was, and the latter are mostly a momentary misstep by the player that can be immediately corrected. Given this, I think it is appropriate to greatly simplify the effects of having 0 of a stat. Instead of immediate paralysis, permaslow, additional stat-specific effects, and only gradual recovery, having a stat at 0 or below just gives the player permaslow so long as it is below 0. Once it is above 0 again, they are completely fine. This allows us to eliminate all checks for swapping form or equipment which might reduce a stat to 0 (being briefly slow is not the same sort of emergency that paralysis is, and there are no lingering effects.) This is good, because the code was somewhat complex and already full of corner cases that it didn't catch - and permaslow already seems quite sufficient to dissuade a player from simply powering through having -8 int from their gear. Whether even *this* level of effect is worth having compared to just capping stats at 1 is a little unclear to me, but it does keep players from considering artefact stat penalties to their dump stat to be completely free, and maybe once in a blue moon it makes a negative stat mutation be more impactful? Some of the removed status effects may find a home again as part of future debuff effects not tied to stat damage. (The stat_colour option is still around for now. Technically, there is still some value in making it obvious that the player is close to 0 in a stat, but it feels a little too... emphatic for the current danger level, in my opinion. I may also cut it in the future, if other people are in favor of doing so.) -------------------------------------------------------------------------------- de2045381e | DracoOmega | 2025-01-12 01:53:45 -0330 Remove all stat draining from the game While stat drain could still be caused by numerous different sources, its position in modern Crawl felt fairly vestigal. The largest sources of int drain have been gradually removed, such that very few sources left pose a realistic threat of causing a player to hit stat zero. And even for the cases that remain, it's unclear that "Does very litle to most players, but in specific circumstances to very specific characters can rarely cause immediate paralysis that maybe kills you" is actually good. While it is theoretically possible to make a stat drain system that has a bit more impact in general without being as spiky in the worst case, I think that it would be better not to be beholden to the historic nature of this system (and the small-yet-often-complex effect stats have on a player) when designing any new medium-term 'debuffs'. And so, after some discussing, I am removing stat drain entirely (and stat zero itself will be simplified in a subsequent commit). The following changes have been made: -Stat drain attack flavors have been removed without compensation. The only monster whose stat drain could be relevant more than once in a blue moon were ghost moths, who already have plenty going on without it. Eidola and putrid mouth stat drain already did 'basically nothing' and they may recieve something else in a future commit. -Vampire batform loses the stat damage with no compensation (they're not long for this world in any case). -Klown pies lose stat damage without compensation. (They can already do a half-dozen other things which are usually more impactful anyway.) -Degeneration clouds are now clouds of alcoholic mist, which inflict Vertigo (to match the change to the potion). This is very silly, but the clouds were already rather silly and only exist in Alistair's wizlab, in a room where you likely never step on them. -Chei wrath loses stat drain without compensation (that wrath effect already generated massive noise). -The weight of Kiku's torment and HP drain effects absorb the weight of what used to be stat drain (and the HP drain is reduced in strength a little, in compensation) -Trog's str drain is replaced with long-duration Weakness -Sif's int drain weight is split between existing MP drain and confusion -Undead being malmutated now have their HP drained instead -Zot traps now blind instead of drain stats -Xom stat drain has had about half of its weight moved into pseudo-miscast Placeholder changes: -Hell effects has the old stat drain weight split evenly between HP drain, temp badmut, and doing nothing (and the HP the drain amount lowered a bit in compensation). This is temporary; there were already some awkwardnesses with hell effects, regarding going elsewhere to farm it off (and its interaction with the Persistant Drain mutation), and temp mutations don't last more than a couple kills in Hell and are largely irrelevant (their timer behavior really wasn't designed with this sort of system in mind). I already planned to change how they worked when Hellpan routlette is implemented, but this should hopefully be at least 'functional' until that point. -Summon horrible things now has a chance to give a temp Weak-Willed mutation instead of int drain. This is... slightly silly and low-impact (if thematically appropriately), but just a placeholder for a new type of effect I plan to implement later. -------------------------------------------------------------------------------- 13154cae79 | DracoOmega | 2025-01-12 01:53:44 -0330 Replace Deterioration mutation with Poor Constitution With stat drain being removed, I am adjusting the basic concept of this mutation to weaken the player in a different way upon taking damage. This now gives a (reduced, compared to Deterioration) chance to become Weak for a while upon taking non-trivial damage. At the second level of the mutation, it gives an additional chance to also be briefly slowed. Numbers are fairly arbitrary for now. For the most part, this is still rougher than Deterioration was (as one level of it rarely did anything relevant to most characters), and it is possible that some other badmuts could be added to split the weight of it in future. -------------------------------------------------------------------------------- 223a808d43 | DracoOmega | 2025-01-12 01:53:44 -0330 Change potions of degeneration into potions of moonshine With stat drain slated to be removed, these potions would be left doing nothing at all. And while I don't think there was an important *mechanical* reason to keep !degeneration around, a great many vaults use them specifically for flavor purposes (as a proxy of alcohol), so I figured: why not lean into that more explicitly? Drinking a potion of moonshine gives the player 10-25 turns of vertigo (which technically does more than !degeneration was ever likely to do, but should be thematically fitting without being crippling, either) -------------------------------------------------------------------------------- c6088a4a74 | DracoOmega | 2025-01-12 01:53:43 -0330 Refactor and adjust mummy death curses In preparation for stat drain being removed from the game, the chance for stat drain is folded into HP drain entirely. As this is removing one of the only options that could affect undead players, I am using this moment to make another adjustment at the same time. Currently, the direct damage from death curses (ie: not the Torment) uses messages identical to the Pain spell (and similar to other pain damage), but actually is (seemingly deliberately) unaffected by rN in any way! The damage is fully prevented by being torment *immune*, but even torment resistance (as granted by statue form and being a gargoyle) also did nothing to reduce the damage whatsoever. This feels extremely counterintuitive (who would expect that worshipping TSO could protect you from torment but *not* 'pain' damage?) It would be straightforward to make this normal negative energy damage. However, given the fact that Tomb's difficulty is already so enormously affected by whether the player has death form or not (a design problem that future Tomb adjustments slated for 0.34 already planned to take aim at), I am going to try going in the opposite direction instead. While death curses were once directly tied to necromancy miscast effects, that hasn't been the case for a long time, so I don't think we don't need to be beholden to them all centering on negative energy-esque effects. And one thing that mummies already do a lot of that is intuitively irresistable is smite things! So this commit changes the not-really-pain effect to be a smite effect instead. This means it will do full damage to undead players (while, importantly, not actually doing any greater damage to anyone else than it currently does - at least outside of tree form) It is possible that by making the 'easier' option of how to tackle Tomb harder, some follow-up adjustments may be indicated (though I think evening the balance between undead/living is still a fundamentally good general direction). We shall see. Finally, this commit also gives death curses their own proper ktype (instead of KILLED_BY_SOMETHING) and uses a similar technique now used by exploders to attribute blame properly to a mummy who is already dead (which will help with future sequell queries) -------------------------------------------------------------------------------- 2dbd7c1ffd | DracoOmega | 2025-01-12 01:53:43 -0330 Completely rewrite how player equipment slots are handled The system Crawl used to handle its equipment slots was conceptually simple, but inflexible; every possible place an item could be equipped had a unique enum entry in equipment_type. This resulted in things like 2 different enums for left ring and right ring, 8 additional ones for octopode rings, another specifically for the ring granted by the Macabre Finger (and a bunch of code to compute a list of which of these slots was available at the moment - with Ru's Sac Hand removing a different enum depending on whether you were an octopode or not!) This made adding additional slots for different body plans non-trivial (even Coglins had to duplicate a lot of code to handle letting the player equip more than one weapon - something that was very ring-specific up to that point). Items like Lear's, which occupy more than one equipment slot at once, also required a lot of brittle special-casing in many different places. This commit rewrites player equipment handling from the ground up, allowing much more flexibility with items, species, or mutations that add new slots, as well as simplifying items that occupy multiple slots. It also fixes a handful of existing bugs and improves QoL in a number of common cases. An incomplete list of major changes: [Backend]: -All information related to player equipment is now contained in the new player_equipment_info class (replacing you.equip, you.melded, you.activated, and you.unrand_reacts) and all querying/changing of equipment is done through its methods. -Equipment slots are now defined by *type* rather than instance. ie: there is only one SLOT_RING, but the player can possess an arbitrary number of them (or of any other slot) and this number can be dynamically modified by mutations, equipment, or anything else one likes. -As such, all slots of a type are now equivalent. You don't have a 'left ring' and a 'right ring', but '2 rings' (minorly affects inventory messages, Ru sacrifices, etc.) -Bardings no longer occupy the boots slot, but have their own SLOT_BARDING, reducing the number of places we need to check what is actually allowed in this slot. (Barding-using species have a SLOT_BARDING instead of a SLOT_BOOTS, but there's nothing forbidding a species from having both). -What slots a character has available are determine solely by get_player_equip_slot_count() -Restrictions *within* those slots are largely handled by can_equip_item() which takes care of hat/helmet restrictions, and weapon size considerations. -Equipment that occupies more than one slot (ie: Lear's, but also two-handed weapons) now places an 'overflow' copy of itself in every other slot it occupies. This allows a unified way to see what is filling a slot (without counting the item multiple times), improves QoL in several ways (see [UI] section below) and reduces Lear's-specific code to two lines. -Artefact properties are now cached in player_equip_set::artprop_cache when equipment is changed, eliminating the need to scan our entire equipment set to do vector prop lookup whenever we want to check anything relevant. (In future, this could theoretically be expanded to include equivalent egos, streamlining some things like player resist lookups). -Unrands the player has currently equipped are likewise cached as bitflags, for similar reasons. -A number of clua functions related to equipment and equipment slots have been changed or renamed. -Many other functions have been renamed for clarity or adjusted slightly. Several currently-unused functions have been removed. [UI]: -A lot of UI code related to equipping/unequipping items has been unified: (w)ield, (W)ear, and (P)ut on no longer use largely different code paths, and the UI handles having multiple equipped items of any given type. (See try_equip_item()) -The player no longer needs to manually unequip items in a particular order if more than one item would have to be removed before a new item can be equipped. eg: if trying to equip a two-hander while wielding a one-hander and a shield, the game will automatically remove the shield first, rather than telling the player they have to do that themselves. Likewise for taking on/off Lear's or the Macabre finger. -Equipment previews (for EV/spell fail, etc.) now account for multi-slot items. ie: the preview for wielding a two-hander will also account for removing your shield in order to do so. -It is no longer possible to wield non-weapons (eliminating quite a few checks all over the place). Outside of turncount tricks, breadwielding hasn't had a functional purpose in approximately forever, but there was a surprising amount of code complicated by the fact that it existed (included multiple checks that were no longer reachable, even prior to this commit) -A few circumstances where pressing a button would bring up a different equip menu than expected have been improved. -Flight warnings for switching form with particular combinations of gear should be more accurate. [Gameplay]: -Gaining a mutation that would cause an equipped item to fall off will remove that item from you immediately, even if it is currently melded by a form (rather than deferring this to the next time you shapeshift back to normal). -Since there is no longer a concept of 'which' ring slot is which, ring removal for things like Sac Hand or shattering a cursed Macabre Finger can choose any ring to remove without worrying about what order the player put them on in. -All circumstances that cause the player to involuntarily lose a slot will prioritize removing items without negative unequip effects first, if possible. (eg: if you have a ring with {^Drain} and one without, you will lose the one without when you Sac Hand) [Caveats]: -While it is possible to give the player any number of any kind of slot, a couple things still only have well-defined behavior for a smaller number: -Body armour and shields have a number of penalty-related properties that only currently make sense for having a single one of them. (And actor::body_armor() and actor::shield() assume that only one will ever exist). -Weapons still count on the player having no more than two. This is more semantically easy to adjust than for body armour and shield, and related code can be refactored to simplify a few more Coglin-related things in a future commit. -Player paperdoll still generally assumes no more than one of each standard piece of gear. Save compat code should gracefully handle converting from the old equipment system to the new one (including unwielding non-weapons, if someone loaded a save that still had one, etc.) I realize this commit is massive, but given the foundational nature of what was being rewritten, it was too impractical to break it into smaller pieces and expect any of them to even compile. I have tested countless interactions quite thoroughly, but it would be foolish to assume in something of this scale that no bugs remain. But I believe the code is in a much better place overall, and should enable many exciting future features with relatively little future pain. -------------------------------------------------------------------------------- f03798f366 | DracoOmega | 2025-01-12 01:28:07 -0330 Fix a rouding issue with equipment previews It was possible for an item to change a player's EV to (say) 20.95. The equipment preview would round this to 21.0, while the stat bar would say 20 EV instead. The preview should say 20.9 in this case instead, now. -------------------------------------------------------------------------------- b756c04f85 | DracoOmega | 2025-01-12 01:28:07 -0330 Improve performance of mons_is_safe This is called every time a monster_info object is normally created (which is typically *many* times per turn when around monsters) and involved several sources of needless effort. To check whether a monster could reach the player, it set up and performed full pathfinding for any non-adjacent monster (which allocates multiple arrays the size of the entire dungeon floor). It now calls can_go_straight first, as it commonly done in other reachability checks, allowing it to skip pathfinding in a majority of cases. It now also skips dispatching to lua in cases where we know that the lua check will trivially return true. (ch_mon_is_safe can only make monsters appear *safer*, not more dangerous. So if we've already established that they're safe, there is no need for this call. Finally, we don't construct an entire new monster_info to pass to lua when all the function ever uses is the monster's name (for runrest_ignore_monster checks). In combination, this is a moderate measurable improvement to this method's performance (which can get called quite frequently.) -------------------------------------------------------------------------------- 6a727fa3a9 | DracoOmega | 2025-01-12 01:28:06 -0330 Improve get_mutation_level performance Due to a poorly ordered logic check, literally every time the game queried whether the player had *any* mutation, it needed to pull their species data to see if they could bleed (as part of Sanguine Armour's check). Now it properly verifies that it is looking up Sanguiine Armour *first*. Additionally, the check to see whether a mutation would be suppressed was done before even checking to see if the player had the mutation in question at all. These checks are now reversed. (Due to a combination of this and the species data map lookup, get_mutation_level was an unexpected hotspot, requiring a map lookup any time any mutation was checked - which was often many times per action.) -------------------------------------------------------------------------------- c4e2c3447e | DracoOmega | 2025-01-12 01:28:05 -0330 Fetch species_def by array lookup instead of map lookup Another small optimisation in response to profiling data. Since species already have a fixed compile-time enum order, fetching species data via a map is unnecessary. This changes the generated species-def.h to define a const array instead, sorted in enum order. (The enum order is obtained by doing crude string parsing on species-type-header.txt. There may be some more elegant way to do this, but I think we can count on the existing parts of this file not changing in ways that would break this.) I had to convert the pre-yaml deprecated species into *actual* yaml in the process, so that they could be inserted in the correct order, instead of in a single block at the end. -------------------------------------------------------------------------------- 84a917550b | DracoOmega | 2025-01-12 01:28:05 -0330 A small optimisation to actor iterators. monster_iterator and monster_near_iterator are pretty simple under the hood; they simply iterate through the entire 700-entry env.mons array, ignoring all entries that aren't a defined and living monster (and then doing additional LoS checks, in the case of monster_near_iterator). But Crawl rarely has even 100 living monsters on a floor at once (and often far less), so *most* of these checks are expected to fail. They aren't terribly expensive individually, but these iterators can be used many, many times per turn (even while resting, in some cases) and showed up as a small hotspot in recent profiling. This applies a very simple and transparent optimisation to these iterators. Instead of checking MAX_MONSTERS every time, the game tracks the maximum index into env.mons which contains any monster and stops these iterators when they reach that point (since we know that no real monsters will be found in the rest of the array). This max_mon_index is increased whenever get_free_monster() returns a monster with a higher index than the current max, and trimmed once per player turn (in clear_monster_flags(), which already iterates through the entire monster array). This is a 'loose' upper bound, in that monsters can die or be removed mid-turn without lowering max_mon_index, but it's only critical that max_mon_index never be *lower* than the maximum index containing a real monster. But since essentially *all* uses of creating new monsters for env.mons should be calling get_free_monster() first, this should be reliable, and reduce the number of calls to monster::alive via iterators by an order of magnitude. -------------------------------------------------------------------------------- c3122fab97 | gammafunk | 2025-01-11 22:08:47 -0600 Fix a shop typo (projectNoob) The correct book name is "book of metalworking". Fixes #4227. -------------------------------------------------------------------------------- 9116421d5b | brandon s allbery kf8nh | 2025-01-11 19:26:07 -0600 document git conventions The git quickstart guide now mentions the most important git commit message conventions, and links to a page with more detailed information and additional common conventions. Additionally, they are now referenced in the contributors guide. -------------------------------------------------------------------------------- 4e6c6e10dc | Implojin | 2025-01-11 19:13:13 -0600 Fix engulf immunity conditions In particular, don't grant engulf immunity based on recent constriction, but also don't grant this based on spiny or slick slippers. -------------------------------------------------------------------------------- 5a69badbe1 | Implojin | 2025-01-11 18:58:26 -0600 Document spiny mutation constriction immunity (cool 3) TIL this exists. -------------------------------------------------------------------------------- a5f79bb512 | Kyle Rawlins | 2025-01-11 12:24:26 -0500 fix: don't assume the existence of nproc in Makefile On macos, nproc would need to be installed by gnutools, so this line has been generating a (harmless?) error in CI where this doesn't happen. This variable is only used in the android build process. -------------------------------------------------------------------------------- 60181c1710 | gammafunk | 2025-01-10 16:50:04 -0600 Make Dissolution amorphous (Colgate) All jellies are supposed to be amorphous and hence immune to constriction, except that Dissolution didn't have this flag. I think this was a simple oversight that no one noticed until now due to their rarity. For consistency, let this blob be squishy! -------------------------------------------------------------------------------- 931650e2db | advil | 2025-01-10 10:34:17 -0500 fix: handle gozag shopping list + abandonment interaction When abandoning gozag, shops are abandoned as well. This is primarily handled via a daction when entering the level, but the shopping list was also supposed to be cleaned up immediately. This was implemented by doing an excursion to every level with a shop, triggering dactions as a side effect. Unfortunately, since 063869c3723ef6c1 in 2019 dactions haven't been run on excursions. I think that this change back then may have been accidental, but running dactions on excursions seems like a crazy / risky thing to do, so I'm pretty hesitant to restore this behavior. This commit provides a straightforward fix that just explicitly runs gozag cleanup code from the shopping list. I actually wonder if, instead of implementing this by dactions + shopping list code, gozag code should directly clean up every shop at the time of abandonment. This would fix some other lingering sync issues; for example, interlevel maps / travel. This commit does not include save compat; it'd probably be possible to reuse old save compat code to do this. But affected players can easily fix the crashes by removing items from their shopping list. -------------------------------------------------------------------------------- 0a0a479413 | Hellmonk | 2025-01-08 22:43:14 -0600 Make evokers stackable (#4215) XP evokers that repeatedly generated throughout the game were unsatisfying because all except the first were useless. However, xp evokers only generating once led to some feel-bad moments with bazaar shops and other areas where an item can be permanently lost. So let's try a new system. Evokers stack, increasing their recharge rate as their plus increases, up to +5 maximum. A +5 evoker recharges in half the time compared to a +0 one, and the evocations skill formula has been adjusted slightly to compensate - 27 skill now charges in half the time of 0 skill. These effects stack multiplicatively. Further number adjustments are likely in the near future. Co-authored-by: DracoOmega -------------------------------------------------------------------------------- a135081b66 | regret-index | 2025-01-08 21:45:27 -0330 Fix berserk and petrify being blue (various) 206cbdc handled the previous bitwise logic incorrectly, and should show up properly now. -------------------------------------------------------------------------------- d81fdbf327 | DracoOmega | 2025-01-08 18:32:57 -0330 Don't default ?blinking targeting at monsters (Lici) -------------------------------------------------------------------------------- 20429fc42b | Implojin | 2025-01-08 10:25:22 -0600 Add Ahyangyi to the CREDITS For b9af4457a1. Thanks for the fix! -------------------------------------------------------------------------------- b9af4457a1 | Yi Yang @ Anteros | 2025-01-08 10:20:41 -0600 Let beam targeter to take whether it's harmless into account. The situation I was trying to fix is to stop Mephitic Cloud targeter from trying to avoid the Qazlal-worshipping player. The harmlessness check is already there, but not called by the beam targeter. `bolt::harmless_to_player()` was private. However, it makes sense for the beam targeter to call this, and making it public would be the straightforward way to do this. -------------------------------------------------------------------------------- 206cbdca84 | regret-index | 2025-01-07 22:52:03 -0330 Change screen colours during paralysis and petrification When a player falls asleep, the screen darkens, matching their eyelids closing. From a mechanical perspective, this is weird, as paralysis and petrification are more common and frequently longer than being set asleep and often immediately waking up again from being hit. From a flavour perspective, fantasy petrification turning one's eyes to stone is often not the greatest for vision either. Of the other statuses, petrification in particular is weirdly inconsistent and easy to be abruptly confused about due to the double-petrification rules, and could use a bit of an aide. This colours the screen lightgrey while one is petrified, matching one's newly stony eyes. To fit alongside this, the screen turns blue while one is paralysed, which somewhat matches the hexes colours and doesn't overlap with Corrupting Pulse flashes or force_more flashes. Since both statuses don't allow player interaction anyway, it shouldn't obfuscate too much underneath. (I suspect quite a few people who don't read commit messages or changelogs will be confused and alarms by the screen changing colours, but in these particular cases it's fortunately completely correct that something bad has in fact occurred, so it shouldn't be too much trouble). -------------------------------------------------------------------------------- f2b2ec9bae | regret-index | 2025-01-07 22:52:03 -0330 Make fungus form and tree form sleep immune This grants parity with monster motile plants also being sleep immune. This should only really come up for lignifying in front of sleepcaps (or for very strange anti-satyr tactics), but it raises less questions overall. (Possibly fungus and tree form should both get a proper holiness change, but this would come with some headaches of getting oklobs to fire through transformed Fedhas worshippers, which I'm deferring for now.) -------------------------------------------------------------------------------- 5bcc8a2132 | gammafunk | 2025-01-06 19:30:28 -0600 Tweak Victory placement Instead of probably wasting a player's superb_item loot half the time, put Victory on top of the guaranteed down hatch in the central monster chamber. Since Dig for Victory as popularised in Nethack is supposed to involve going down a level (in fact multiple levels) to reach Victory, the hatch is arguably the most appropriate place for this toga! -------------------------------------------------------------------------------- d80f97202f | Implojin | 2025-01-06 18:58:48 -0600 Dig for Victory! Here we add Victory to gammafunk_dig_for_victory at a 50% chance. Doing this entirely for entertainment value, but it should have the side effect of making Victory less vanishingly rare; we can tweak generation here if desired. Unclear whether players will equip Victory if it generates during lategame -- we'll see what happens. -------------------------------------------------------------------------------- b60e247eb4 | regret-index | 2025-01-06 01:10:45 -0330 Don't generate substantially more amulets than rings (various) Broken by 9283c13 accidentally inverting from one_chance_in_(4) while it was rearranging the item type code. -------------------------------------------------------------------------------- 5978acde03 | Implojin | 2025-01-05 14:47:22 -0600 Exclude artefacts from drop_disables_autopickup (DemifiendCruithne) Here we follow from ac1af34cca and exclude artefacts from interacting with the drop_disables_autopickup option, on the grounds that (like missiles) artefacts aren't meaningfully distinguished using type-id. N.b. currently, we're using `is_artefact()` as a pseudo item id flag throughout the code, mostly for descriptions. There may be more minor bugs lurking related to inconsistent handling of type id with (jewellery and magical staff) artefacts, because we're relying on manually calling is_artefact() during checks related to type id, which seems really easy to forget about. Resolves #4197 (again) -------------------------------------------------------------------------------- 2dfc2d5bbc | Implojin | 2025-01-05 14:04:14 -0600 Revert "Fix drop_disables_autopickup artefact interactions" As reported by DemifiendCruithne, the fix in 5a1d68acde didn't properly handle picking up and dropping artefacts with previously unknown type-ids. The player could pick them up, drop them, and have autopickup disabled for, e.g., all jewellery. We generally exclude artefacts from interacting with type-ids throughout the code -- this is intentional, and 5a1d68acde was incorrect. I'm fixing this differently in a following commit. This reverts commit 5a1d68acde340c43e86384e4ac4fb337e20daf5f. -------------------------------------------------------------------------------- 64fd3f8b57 | gammafunk | 2025-01-04 14:59:08 -0600 Update the list of required Tiles packages (Cgettys) More recent versions of Debian have started to require the installation of libglu1-mesa and libglu1-mesa-dev to get GL/glu.h. I'll not here that some cursory searches about this header point to it being part of the OpenGL utilities library, which is something that is no longer maintained and should no longer be used. Updating the OpenGL portion of our Tile code is not part of my skill set, so for now I'll just include the packages we need to get the headers we need for compilation. Long term, we should probably look to modernising our OpenGL code, since functions we're depending on may not be around much longer. Closes #4200, closes #3998. -------------------------------------------------------------------------------- 1404ca9d21 | Implojin | 2025-01-04 10:09:55 -0600 Temporarily set CI to ubuntu 22.04 Github's ubuntu-latest runner upgraded to 24.04 today, which broke a bunch of our CI. This commit should let our CI run while we fix the rest of it. -------------------------------------------------------------------------------- 974e7ae34f | Implojin | 2025-01-04 07:49:12 -0600 Add Flugkiller to the CREDITS For f20420b48f. Thanks! -------------------------------------------------------------------------------- f20420b48f | Flugkiller | 2025-01-04 07:47:04 -0600 fix: Make spells that never miss unaffected by blindness -------------------------------------------------------------------------------- 717b6cd007 | David Lawrence Ramsey | 2025-01-03 21:19:31 -0600 Fix typo. -------------------------------------------------------------------------------- 4e2cdc3fdc | Implojin | 2025-01-03 20:20:45 -0600 Fix stash resist inscriptions for dragon scales (Lici) In 008097b4cb, dragon scale body armour resist inscriptions stopped autoinscribing. This happened because body armour basenames began prepending "+0", which caused our (extremely brittle) lua autoinscription code to get confused when alphanumeric string matching -- it was now trying to match a table of armour name strings against '0'. Here I'm "fixing" this by changing the alphanumeric pattern to match just alpha instead, which should restore the old match behavior. Surely this could be made less brittle, but I hate this. Fixes #4202 -------------------------------------------------------------------------------- 5766912e8f | DracoOmega | 2025-01-03 18:20:34 -0330 Fix weird Mercury Arrow autotarget issues (Lici) In an attempt to needlessly avoid including the player in its AoE effect (since it can't affect the caster anyway), the autotargeter would sometimes try to aim at another monster instead of the 'intended' target. Though, because of the explosive bolt style targeting, it couldn't simply aim to the side like with fireball, and would only do this if another enemy was positioned exactly so that you could hit *them* while including the main target in the weakness AoE effect - leading to this behavior seeming random. By marking this spell as never affecting the player, the targeting should behave more normally. -------------------------------------------------------------------------------- e182471b36 | DracoOmega | 2025-01-03 18:20:28 -0330 Add a hopefully-clarifying statement to Searing Ray cast message (ge0FF) Searing Ray normally locks onto a monster you cast it on, tracking their position across several turns. But if you cast the spell with . instead (ie: the general 'aim at spot' key), it would, well, aim at the spot instead and *not* track the monster. This was surprising to some players. I don't feel this behavior is inconsistent with . in general, but it was said that a message might improve clarity a little, so I have added one to announce the player's target lock upon casting, if they have one. Possibly this is a minor improvement? -------------------------------------------------------------------------------- 92776e1539 | David Lawrence Ramsey | 2025-01-02 20:43:31 -0600 Fix spelling. -------------------------------------------------------------------------------- d993fb3fa4 | DracoOmega | 2025-01-02 20:12:17 -0330 Fix weird Transference autotargeting behavior (Lici) The targeter knew that it couldn't aim *directly* at your ancestor, but did not realize this meant it could not affect it at all, and so when it was the closest monster to the player, would try to 'catch it' in the AoE radius of the ability (even though that doesn't make any sense in this case). -------------------------------------------------------------------------------- 9de6381486 | David Lawrence Ramsey | 2025-01-02 15:04:03 -0600 Add another Ashenzari object. -------------------------------------------------------------------------------- b1901768e9 | David Lawrence Ramsey | 2025-01-02 15:04:03 -0600 Add ring of stealth quote. -------------------------------------------------------------------------------- 5a1d68acde | Implojin | 2025-01-02 13:40:14 -0600 Fix drop_disables_autopickup artefact interactions We received a report that the drop_disables_autopickup rc setting was incorrectly disabling autopickup for some item base types if an artefact was dropped (jewellery and magical staves, notably). This was happening because the item_type_known() signature that was being used excludes artefacts from checking subtype ids. Here we change the `\` autopickup menu behavior to allow artefacts of the affected base types to be autopickup toggled using their subtype, if known. Fixes #4197 -------------------------------------------------------------------------------- 1816505622 | regret-index | 2025-01-02 08:11:11 -0330 Update docs/develop/spells.txt for 0.33 Primarily aimed at highlighting repeated trends in Forgecraft spells for future possible development, but also clarifying a few other matters of creation and broader phrasing as has been brought up by other new 0.32 and 0.33 spells. -------------------------------------------------------------------------------- c0fec7c300 | Aliscans | 2025-01-01 18:42:44 -0600 Fix the way the scroller works when a menu grows. Previously, if a player had a spell library containing every spell, searching it for "hat" led to Shatter being selected. Searching for "a" after this led to Shatter still being selected, but only the top of the spell list being displayed. This happened because UIMenu::update_items() resized item_info but didn't set the x, y, row or column fields, and UIMenu::get_item_region() relied on those being up to date. Call UIMenu::do_layout() to fix it. -------------------------------------------------------------------------------- 3f35e1a551 | Implojin | 2025-01-01 18:31:26 -0600 Fix Uskayaw linepass confusion targets (klement) Apparently Usk's linepass confusion has been applying in a full-LOS beam ahead of the targeted tile for several years and nobody in dev noticed. Oops? This behavior definitely wasn't intended. The linepass tracer pierces to determine its targeting, and this is the same beam that subsequently applies confusion to everything along its path. This commit changes this beam to use aimed_at_spot. This is a small power nerf to Usk, which is already in the lower half of recent god picks, so maybe we'll come up with a minor balance buff here at some near-future point. Fixes #4190 -------------------------------------------------------------------------------- 1c515a75a4 | Aliscans | 2025-01-01 16:01:15 -0600 Update the default message_colour for two portal messages. A couple of the final warning messages for portals (bailey and bazaar) weren't highlighted. Change that. -------------------------------------------------------------------------------- 9754aa523c | Aliscans | 2025-01-01 15:43:19 -0600 Stop mortars from colliding with "a floor" and then being "destroyed!". If the lava stream for Hellfire Mortar is shortened by an obstacle which is no longer there when the mortar reaches the spot, and the player sees it, this could give the message "The hellfire mortar collides with a floor and sinks back into the magma." Omit the "collides with a floor " part unless the mortar hits a monster or "solid" terrain. Remove the death message which followed this (which seemed redundant) and stop blaming a monster for the death. That is, change the killer_index in monster_die() to NON_MONSTER and the silent flag to true. -------------------------------------------------------------------------------- 397e312dc0 | Aliscans | 2025-01-01 15:22:35 -0600 Use article_a() instead of "a article" in a few places. Replace "a %s" (and equivalent) with article_a() in some places where the noun can start with a vowel sound, or where the noun isn't clear from the context. For instance, typing ?/i with the default setup now prints "Describe an item;" rather than "Describe a item;". -------------------------------------------------------------------------------- 6b0abae525 | Hellmonk | 2025-01-01 14:35:46 -0600 re-enable descent mode (#4196) -------------------------------------------------------------------------------- 97e6b1a4fe | Nikolai Lavsky | 2025-01-01 18:59:29 +0300 docs: update copyright date -------------------------------------------------------------------------------- cdb383b4eb | David Lawrence Ramsey | 2025-01-01 00:35:03 -0600 Add a few more Forgecraft miscast messages. -------------------------------------------------------------------------------- 85d2812e02 | David Lawrence Ramsey | 2025-01-01 00:33:58 -0600 Fix typo. -------------------------------------------------------------------------------- 7ba718c05c | regret-index | 2024-12-30 08:40:57 -0330 New Zot metal wall tiles These tiles are further follow-ups to bd611b0, 668cce9, and 8e166ad, each all trying to try and make the endgame a little more visually fancy and more thematically unique, as well as to help provide more theme cues for future vault deployments beyond reusing monsters from other branches. Unlike most metal tiles, these are rather detailed instead of two-part slabs- originally meant to illustrate draconic scales, they ended up feeling somewhat like a jagged void, befitting the unholy realms holding the runes of Zot and the casual presence of various strong undead within the branch. They should still read as metal due to their desaturation and gleam, at least, and probably won't read as stone or crystal due to the former trending towards visibly discrete parts and the latter bearing rainbow facets. (They're made from a CC0 skill icon by frosty_rabbid and the current metal wall tiles by Bloax. This commit comes with a little extra deployment of the metal tile in some Zot entry vaults and a little adjustment to not use too much of the tile for allusions that it doesn't fit, like the vaults meant to echo the Vaults.) -------------------------------------------------------------------------------- bfdca0e29a | regret-index | 2024-12-29 07:54:53 -0330 Prevent getting out-of-bounds in meatsprint (#4153) [PR #4153 does two seperate things: * Due to newer spells and Djinn access to them, it's possible to be shoved into the spawning teleport room with judicious use of Hellfire Mortar and letting walls seal themselves back up enough times. The PR adds a single-tile box of generic permarock: I'm making it much thicker in case further problems eventually arise, and also giving it the tile + name of the Crucible's permarock (which directly matches up, of course). * It also buffs the weapon stats of most of the monsters' weapons, which marginally increases their threat value but also goes over the limits of what weapons can normally get. I'm a little conscientious about the possibility in the indefinite future state of Crawl that somebody might further crunch down on weapon stat caps (c.f. 5a0b83f and 6a47537), and it pulls attention away from the much better joke of the slay rings increasing indefinitely higher, so I've left that out (and thus just am addressing the PR directly in this seperate commit). Closes #4153.] -------------------------------------------------------------------------------- 8748bb4102 | William S. | 2024-12-29 03:25:32 -0330 New start-up and clockwork bee tiles (#4102) "The Orb of Zot on top of the leader board sprite is outdated, and the tile size was inconsistent. Descent startup tile also needed an upgrade. The new one shows stairs descending deeper into the dungeon." [Commiter's notes: Changed the Descent icon to both have more depth / height to each step and to use a red palette- gold palettes on the starting menu are more information based compared to red changing the mode's behaviour entirely, and it also corresponds to hatches being red. The clockwork bee tile submission has been heavily adjusted, keeping the gear of the current one in order to make it more obviously mechanical versus the ally circle in-game and deploying a palette unlike the current or the submitted tile to match other Forgecraft tiles Sastreii made. (Sastreii will replace a large number of Forgecraft tiles as is at some point in the future, but updating the tile to have a wind-up key seems harmless enough to me.) Closes #4102.] -------------------------------------------------------------------------------- a1de10103b | gammafunk | 2024-12-28 22:25:43 -0600 Update DES syntax documentation on artprops -------------------------------------------------------------------------------- 9283c139d4 | gammafunk | 2024-12-28 20:52:23 -0600 Reroll items that conflict with any fixed artprops The artprops keyword in an item_spec induces an item to be a random artefact, but with the specified artefact properties always present. A problem arises when the base type or sub type of the item is randomized, since specific base/sub types can conflict with the specified properties. For example, "any ring artprops:rF:1" will conflict with the intrinsic rC- of a ring of ice, causing the rF+ artprop to be ignored when that item type is rolled. For vaults that are trying to define thematic items, having some randomly generated items ignore the specified properties won't work. The alternative is to specify an explicit list of acceptable subtypes in the vault, but this is onerous and more difficult to maintain. This commit implements rerolled random types whenever there's a conflict between the specific fixed artprops and the item's intrinsic properties. This rerolling is limited to 1000 attempts to avoid an infinite loop, a scheme already in use before this commit for weapons and jewellery. We just extend it to staves and talismans and trigger rerolls for all types whenever there's an artprop conflict. Now the result of an item_def of the form "any TYPE artprops:..." will always produce an item of TYPE with a random subtype where all specified artprops can be applied. If this proves to be impossible, for example because the specified artprops could never be compatible with TYPE, item of TYPE with random subtype is still generated, but with any offending artprops ignored. An error message is printed for each conflicting artprop in this case. -------------------------------------------------------------------------------- d6aff4a22f | gammafunk | 2024-12-28 20:52:23 -0600 Remove a special distribution for rings of slaying Rings of slaying currently have 1/3 the chance to generate as a ring type compared to other ring types. This was seen as necessary in older versions, namely prior to 0.10, where slaying was added to a weapon's base damage and hence was influenced by skills and stats. This is no longer the case, and rings of slaying aren't markedly more powerful than, say, a ring of Str/Dex appropriate for the player's weapon type. This commit removes the special ring of slaying weighting so that all rings types have the same chance. -------------------------------------------------------------------------------- a97fc534a3 | gammafunk | 2024-12-28 20:52:23 -0600 A minor fix to randart property accounting Before this commit, when generating randart properties that can have both good and bad values, such as rF, Str, etc, a property could be previously assigned a good/bad value only to later have its value changed to the opposite type, and both instances would consume quality points assigned to the numbers of good and bad properties despite there being no net change. Additionally, although we only ever assign a max of two bad properties, both could be consumed by setting a single property to -1 twice, or for properties like Str, a different negative value twice, since we never add to negative properties like we do to positive ones. This commit cleans up the logic so that, during randart generation, no property that's already been assigned a good/bad value will ever be subsequently switched to the opposite type of value. It also prevents "wasting" bad properties by assigning the same one twice. It's somewhat difficult to say whether this change results in a minor buff or a minor nerf to artefacts, since we are both more consistently adding bad properties but also more consistently adding good ones. A comparison of randart stats with wizmode ^I for 1000 iterations of "any ring" both before and after the change shows no meaningful differences in mean/median numbers of good and bad properties nor for the overall proportions of good/bad properties. -------------------------------------------------------------------------------- 6fa848a78e | gammafunk | 2024-12-28 20:52:23 -0600 Improve aspects of randart property assignment Currently during randart generation, no artefact property can be modified if it's intrinsic to the item. This means that artefact rings of protection from fire can only ever have rF+, for example. While we don't want to allow such rings to have less fire resistance than rF+, there should be no problem with them having more. This commit implements a scheme where an intrinsic property can be modified, so long as it's in the right direction: it can increase a property value that's positive or decrease one that's negative, so long as the appropriate max/min is respected. I've generalized the property mapping scheme used by jewellery and made a map for talismans to intrinsic resistance properties by talisman type. Now all items that can have intrinsic artefact properties are accounted for in a more unified way. One wrinkle for talismans is the issue of the dragon-blood talisman. We mark rPois as intrinsic, since all players do get that property in dragon form, but for the rF++ and rC- there's the issue of draconians versus non-draconians. It might be reasonable to include those properties as intrinsic only if the player is non-draconian. For draconians, the situation is more complicated since the player doesn't know their color until XL7. Obviously the talisman property mapping could use knowledge of draconian color from the start of the game, but there's a remote chance of awkwardness with an information leak. On the other hand, if we simply don't ever include rF++/rC- in this intrinsic mapping, since we never decrease a property past a level of -1 anyhow, randart dragon-blood talismans will be at worst rF+ while in form. Likewise seeing some of these talismans with rC0 or higher doesn't seem too weird. For now I'm going with this simpler approach of leaving out rF++/rC- from the list of intrinsic properties. This can easily be revisited in the future with some species-specific code, if need be. -------------------------------------------------------------------------------- 563f8729d4 | David Lawrence Ramsey | 2024-12-28 20:35:48 -0600 Fix typo. -------------------------------------------------------------------------------- 7e41ec5257 | Nikolai Lavsky | 2024-12-28 17:55:10 +0300 fix: a typo (Aliscans) -------------------------------------------------------------------------------- f2ebe9ab39 | regret-index | 2024-12-28 06:02:27 -0330 New sky beast tile (pianoman523) Colour adjusted away from the submission's richer blues and darker greys to hopefully be reasonably readable as air-themed, but with a more coherent and detailed anatomy than before. Comes with a slight description tweak to point people towards it being feather-tailed. -------------------------------------------------------------------------------- 7e861bf89c | regret-index | 2024-12-28 06:02:08 -0330 Loose, miscellaneous tiles tweaks and additions * Legendary Destruction no longer shows two different backgrounds at once. * One of the withered plant tiles has been adjusted to not have any white corner sections and thus read as having anything under it (even if it's otherwise placed in the wrong corner). * The ever-obscure local tiles aptitudes tab now has icons to properly display gnoll and djinn aptitudes. * Dazzling Flash now has a proper Hexes + Fire palette. * Upheaval and Disaster Area now uses proper magma and iceblast tile effects. (Possibly should look into making airstrike and air-upheaval vfx tiles, as well as the start of LRD / tremorstone / rubble vfx tiles?) * Additional new preliminary mutation icons: * barachi hop: Using Sastreii's barachi player species dummy monster and * djinn flat hp: ontoclasm's apt / spell level numbers and CanofWorms' powered by death icons. * mp-powered wands: recolouring ontoclasm's device recharge. * sacrificed hand: CanOfWorms powered by pain icon and ontoclasm's sacrifical Ru dagger. * screaming: Denzi's Berserk Rage and Projected Noise spell icons. * Also a little bit of file headers and old spell icon management. -------------------------------------------------------------------------------- c3d0ca870a | regret-index | 2024-12-27 02:43:08 -0330 New animations and a quote for alchemy / potion flavour The conjunction of Poison Magic and Transmutations-san-forms into one school was mostly meant as mechanical triage, making the overall school into something one can win a three-rune game with after the former lost a fair bit of its intended context with Conjurations changes and the latter was quite orphaned in variety despite always having been two different purposes slammed together. In actual flavour results, there's a lot of different fronts to tackle: * Dangerous elements, minerals, and old hypothesises are somewhat reasonably emphasized between mercury, greek fire, fulminant gold, radioactivity, phlogiston, and sulphur. * The Elric-style transmutation of given materials is what the Transmutations half already did, and is a reasonable front to focus on for the unavoidable need to crossing over with elemental schools. * The philosophical reformation of the self is, of course, parcelled off into Shapeshifting and talismans. * The concocting and bottling of weird substances has increased a little in flavour fronts, but neither Alistair's Walking Alembic nor Fulsome Fusillade are in the starting spellbook for Alchemists, which leaves off their start as a little detached from that front. (Actually making inventory-occupying items regularly beyond god gifts is explicitly part of the modern Won't Do list, it should be noted:) https://github.com/crawl/crawl/wiki/Won't-Do-(2024) To help the school a bit further on these flavour fronts (especially the last one), I'm adding a variety of different pieces in this commit: * Some additional flashes of potions for Alistair's Walking Alembic (which also helps telling that it succeeded in mixing its potions and wasn't just destroyed first) and for Fulsome Fusillade (which always emphasized raining down flasks in the first place). * A visible tossed flask and messages for doing so for Mephitic Cloud, which has always had weak flavour around its high noise level and can be repurposed into being a more chemistry-focused spell. (No, swamp drakes won't be visibly breathing flasks.) * Some recoloured potion flashes also granted to Gozag's Potion Petition, which could do with a bit of a visual flourish. * A brief bit of a text on analyzing alchemy regarding mercury for the new Mercury Arrow spell. (All potion graphics here continue to use CC0 resources by Shade. The Alembic and Petition circles also use heavily altered CC0 vfx by codemanu.) -------------------------------------------------------------------------------- 491c9d3d12 | David Lawrence Ramsey | 2024-12-26 01:47:28 -0600 Add another verb to artefacts. -------------------------------------------------------------------------------- ebbabaea00 | Nikolai Lavsky | 2024-12-24 19:31:02 +0300 fix: spike trap kills giving no XP/piety It looks like `ZAP_SPIKE_LAUNCHER` had the default thrower, `KILL_NON_ACTOR`, so poor Forgewrights got no XP/piety for their spike traps killing monsters. -------------------------------------------------------------------------------- a33de6ed39 | DracoOmega | 2024-12-23 23:14:29 -0330 Fix beam tiles for beams whose tile varies with distance travelled (r-i) Accidentally broken by afcf47756822c0054e31f1b0fdfddaf4394db83a -------------------------------------------------------------------------------- 04647cc05b | DracoOmega | 2024-12-23 22:37:37 -0330 Fix bound souls not dropping items when you get a new one (ebering) They properly dropped equipment when killed or when you abandoned Yred, but replacing one bound soul with a new one caused the old one's gear to vanish into nothingness instead. -------------------------------------------------------------------------------- 6d1d786d43 | DracoOmega | 2024-12-23 17:05:41 -0330 Fix orbs of destruction blocking targeting while with Jiyva (Flugkiller) Jiyva's jelly protection works rather oddly, and makes even piercing beams count as non-piecing when firing in the direction of jellies. A minor oversight when 'can fire through monster?' code was refactored is that targeting now treated *all* transparent monsters that way while you worshipped Jiyva, resulting in being unable to aim beams through orbs of destruction (among other things). It should hopefully now properly restrict this behavior to jellies. -------------------------------------------------------------------------------- b8190b8772 | DracoOmega | 2024-12-23 17:05:32 -0330 Fix orbs of destruction being tagged as minions I'm a little surprised that this didn't result in them going poof when their 'summoner' was killed, but the *intent* of the minion tag was to indicate this, for consistency's sake. -------------------------------------------------------------------------------- bd611b0ba5 | regret-index | 2024-12-23 03:59:54 -0330 New Depths metal wall tiles, some more vault wall tiles Depths has a soft fey and forest theme (the grown-over barrow and cairn spriggans previously seen in a tree-filled Swamp then appearing again there, various magical wildlife like spark wasps, the new alderkings). This direction somewhat helps it feel like more than just "the furthest reaches of Some Weird Standard Fantasy Dungeon" as other standard enemies like elemental giants and dragons inevitably invoke. To lean a little more into that, these new tiles here actually swing somewhat in the opposite direction from the Depths stone wall tiles: they're fairly brighter (since most metal tiles are distinguished by their gleam anyway) and have experimental patterns of multi-coloured leaves. This should help the place feel a little more uniquely magical and a little more organic, which helps further distinguish Depths and Vaults apart as well as sets a contrast for Zot's deployment of withered and petrified plants. This also comes with two other wall tiles: a scorched wall stone tile, and a tile covered in bright blue mould. Both are small parts of an experiment to produce many wall types of specific flavours and themes in order to push for using them more often over more disruptive features (liquid, glass, plants) everywhere. (Using unique tiles everywhere was an old concern of early vault devs, but my philosophy is that it's an infinitely lesser sin than diluting a branch's identities with not-even-thematic present enemies instead, so I'd prefer leaning over into that over time.) The former burnt walls easily fits into Crawl in general, and the latter is mostly awaiting an early mould-themed enemy not yet done to go alongside it. I'll figure out more homes for their sighting and additional decoration walls of the same sorts over time. (These might be worth some feature descriptions in the future once there's a way to use multiple feature names and descriptions in the same vault, as would also help fix up 1f37800. For now, they can be a little mysterious for those not reading commits.) Sources: * Depths metal: entirely made from Surt's CC0 scraps. * Puffball mould stone: roctavian's edits of Denzi's stone paired with more of Surt's CC0 scraps. * Scorched stone: Denzi's other stone walls and yet further CC0 scraps by Surt. -------------------------------------------------------------------------------- 2636b53cb1 | regret-index | 2024-12-23 03:59:54 -0330 Update the Draconians part of the manual This didn't get updated after 926e5b6 and 02fa12c, leaving the section still talking about red draconian clouds and the absence of a grey draconian breath. Both of those commits should be covered in these soft rewrites, which were edited by the original author of those commits. -------------------------------------------------------------------------------- 193fcf71ad | regret-index | 2024-12-23 03:59:54 -0330 Replace Vaults:5 spiders and hornets with jellyfish It gets rid of monsters that are completely harmless by V:5's depth (some long-inherited chaff of redbacks, wolf spiders, and hornets). It accomplishes a little bit more of the goal to put more distance between Vaults (& Vaults:5) versus Depths, with formless jellyfish being a regular Vaults:1-4 spawn. It also shouldn't increase the difficulty of the floor by too much, since they're already not greatly dangerous by Vaults:4 anyway. (They'll still be pretty rare, with about 0.34 formless jellyfish per V:5.) -------------------------------------------------------------------------------- 69c26771d4 | DracoOmega | 2024-12-19 14:19:09 -0330 Fix the same problem if tele status is lost by felid revival (flugkiller) -------------------------------------------------------------------------------- e3d305a3a5 | DracoOmega | 2024-12-19 14:13:02 -0330 Fix soujouring bolt / tele status removal interaction (ge0FF) If the player manually removed the hostile teleport status from sojourning bolt with ?tele or !cancellation, it didn't remove the prop indicating that the pending teleport was hostile. This meant that: a) The player was immune to having sojourning bolt used on them again until the next time they teleported. b) The next time they teleported (through any other means), they would always teleport towards enemies. (The wyrmhole would even still come along for the ride, if it was still alive and on the level!) -------------------------------------------------------------------------------- 50edc0063f | David Lawrence Ramsey | 2024-12-18 19:09:10 -0600 Fix book name typo. -------------------------------------------------------------------------------- ebda2548b9 | David Lawrence Ramsey | 2024-12-18 19:09:10 -0600 Fix enum typo. -------------------------------------------------------------------------------- 5200cac597 | DracoOmega | 2024-12-18 20:44:36 -0330 Recommend Forgewright to some species This had been overlooked for a while now. Mountain Dwarf and Coglin are the obvious species to get Fw recommended, Deep Elf continues its pattern of recommending all mage starts, and I have semi-arbitrarily also recommended it for Barachi, Formicid, and Gnoll. -------------------------------------------------------------------------------- 0192c196d7 | DracoOmega | 2024-12-18 20:42:46 -0330 Tweak djinn background recommendations Shapeshifter may have made more sense back when it was Transmuter, but is a fairly poor Dj background these days. But moreover, spell-less starts feel like poor recommendations for djinn in general - not because melee djinn are exactly awful, but from the perspective of 'relative newcomer who could use pointing in a direction', they don't engage with djinn's core gimmick immediately *and* will leave them with poorer spell selection all game long. With that in mind, I have removed both gladiator and shapeshifter, and added conjurer, air elementalist, and warper. (Warper feels like a much better style of 'melee' start for djinn anyway, as it gives them utility spells which will be useful all game long.) -------------------------------------------------------------------------------- 553329c310 | DracoOmega | 2024-12-18 19:28:17 -0330 Clarify that gloves of infusion don't affect ranged attacks -------------------------------------------------------------------------------- 509b591311 | DracoOmega | 2024-12-18 19:27:54 -0330 Fix spacing of spell list when examining books (riverfiend) It didn't get realigned after I did the same for spell cast and memorisation menus (and Eringya's Surprising Crocodile was just slightly too long). -------------------------------------------------------------------------------- d8102e6941 | DracoOmega | 2024-12-18 19:13:01 -0330 Prevent rewinding clockwork bee while berserk I could go either way on whether this is necessary, but it's arguably too spell-like an effect to let the player do in this state. -------------------------------------------------------------------------------- f6116cc0f7 | DracoOmega | 2024-12-18 19:06:43 -0330 Don't leak info about out-of-los monsters via seismosaurus egg (hellmonk) An exceedingly minor benefit that was probably almost never practical to do, but the incubating status could indicate the presence of a monster out of the player's own LoS if it was in the egg's and they were standing next to it. Which really doesn't matter very much, but also seems harmless to fix. -------------------------------------------------------------------------------- 747ea1e65a | DracoOmega | 2024-12-18 19:05:27 -0330 Fix hatched seismosauruses not caring about spellpower The egg's HD was adjusted, but the seismosaurus was accidentally always 11. (This will result in a mild nerf below 80 power, but the spell seems to be performing quite well and I don't think this will change that overly.) -------------------------------------------------------------------------------- f9fe234eca | DracoOmega | 2024-12-18 18:54:34 -0330 Don't blink a monster which steps on a dispersal trap twice -------------------------------------------------------------------------------- bcb7bb59d2 | DracoOmega | 2024-12-18 18:53:42 -0330 Fix monster stasis not blocking a number of effects it should Stepping on a dispersal trap, being hit by a wand of warping, and darts of curare all worked on monsters with stasis, despite that supposedly conveying immunity to such things. Part of this stems from monster::blink() not checking no_tele() (while player::blink() *did* check this). A couple uses of monster::blink() relied on this behavior (such as displacing monsters at the player's location at the end of Step From Time), so I have added a parameter to ignore stasis in those few cases. Currently divine or system-related effects should be the only things that do. (Also added a message if you land disjunction darts on an immune target.) -------------------------------------------------------------------------------- d6f4b2210c | DracoOmega | 2024-12-18 18:45:41 -0330 Fix "A My Sojourn through Swampland" -------------------------------------------------------------------------------- ce4a908ce7 | DracoOmega | 2024-12-18 18:45:13 -0330 Remove vestigal prefer_ranged flag from Platinum Paragon (ge0FF) This was a remnant of an earlier design that never even touched trunk. -------------------------------------------------------------------------------- c79a71ed66 | DracoOmega | 2024-12-18 17:30:16 -0330 Remove an errant print statement (riverfiend) Overlooked when cleaning up local debugging code from the recent ID flag simplification. -------------------------------------------------------------------------------- 7c13caed80 | Nikolai Lavsky | 2024-12-17 16:10:49 +0300 fix: add two new melee attack flavours to the monster utility This commit adds handling of `AF_ALEMBIC` and `AF_BOMBLET` flavours, which were added in 2b47ff03 and 998f9657 respectively. -------------------------------------------------------------------------------- 0f6f25fa8a | Nikolai Lavsky | 2024-12-17 15:45:58 +0300 build: add missing Python packages for the build_monster job -------------------------------------------------------------------------------- 3074593ffc | Nikolai Lavsky | 2024-12-17 15:33:23 +0300 fix: the monster build It was broken in two places: * there was a missing header file (008097b4); * a couple of variables were declared inside a `case` statement without a scope (abc8f7ac). -------------------------------------------------------------------------------- 0919e08b47 | Nikolai Lavsky | 2024-12-17 15:11:36 +0300 build: add a GitHub Actions job for building the monster utility Currently it's hard to notice when a change breaks the monster utility. Because even when it's broken, the bots just keep using the latest good version, and the game itself can compile without any errors. Let's add a CI check for this. -------------------------------------------------------------------------------- bb9e8c554f | DracoOmega | 2024-12-16 19:15:19 -0330 Fix a handful of logic errors with wyrmhole hostile teleport It can no longer teleport the player into no_tele_into locations (though this may have been unlikely in practice, since it still required LoS to a monster that *wasn't* standing on a no_tele_into spot. It no longer picks the first valid spot near a monster, but correctly picks a random one in LoS of it. It no longer needlessly counts all monsters in LoS of spots near every possible monster on the floor (which could cause it to pluralize a message incorrectly, beyond just wasting time.) It will fall back on a random teleport if there are no valid spaces near any valid monster on the floor (instead of not moving the player at all). It won't perform teleport-related interrupts if you don't actually teleport. It won't 'blink' the wyrmhole if the player doesn't actually teleport. It won't incorrectly amuse Xom even if you don't teleport (for what little this matters...) It won't crash if the wyrmhole is dead or gone by the time it actives. It won't instantly trigger whenever the player presses &B to aim a wizmode teleport (which even left you with a NON-hostile teleport duration still active afterward...) (Also add a few explanatory comments throughout the function.) -------------------------------------------------------------------------------- b45a8adffe | DracoOmega | 2024-12-16 16:07:41 -0330 Make x default to starting on the player's position again (Ge0FF) Accidentally changed by eb7098a -------------------------------------------------------------------------------- 2f8c66fcfe | DracoOmega | 2024-12-16 16:07:34 -0330 Fix a crash with issuing orders If you had a saved 'previous target', but that target was no longer around (possibly because you'd killed it), the game would crash before even fully printing the prompt. -------------------------------------------------------------------------------- 8436cd0d56 | David Lawrence Ramsey | 2024-12-15 20:15:14 -0600 Fix spelling. -------------------------------------------------------------------------------- 400cf8515c | regret-index | 2024-12-15 21:45:49 -0330 More 0.33 changelog updates (up through f9d81107) Aside from the regular catch-up and this recent monster work, this also fits in a mention of changes to pitsprint I forgot in the last 0.33 changelog work. -------------------------------------------------------------------------------- f9d8110708 | regret-index | 2024-12-15 21:29:17 -0330 Replace current sky beast mechanics with AF_AIRSTRIKE Sky beasts were added in fe51cf0 for the sheer sake of variety in a very different development era than the current day. They used to be a source of mutagenic flesh, but corpse eating has been removed; they used to be another earlygame monster, but with orc wizards consistently getting invisibility in the spellbook squashing they're not much of a tutorial beyond making people start walking backwards for the invisibility to wear off to instead get random attacks of opportunity; and they use AF_ELEC, which barely matters compared to more damage considering the lack of chance to find rElec that early outside of starting off as a Gargoyle. Still, it is also nice to have early air-themed monsters, as long as Crawl is going to be reliant in some fashion on the fantasy cliches of the classical elements, so they deserve a rework rather than removal outright. As such, they now drop both AF_ELEC and the flickering invisiblity effect for the new AF_AIRSTRIKE introduced in the previous commit. This swaps out their 5-6 elec damage (ignoring AC if the first hit deals damage) for a range between 4-5 physical damage when fully surrounded to a terrifying 14-18 with 7 open air tiles (i.e. with only the sky beast adjacent.) This seems quite dangerous, but the invisibility bonuses to sky beasts were quite notable at the point in the game one fought them, and in a full corridor it'll do about the same damage with slightly more AC-respecting. It'll kill a lot of blind autofight tactics, but there's not much point to new monster gimmicks if failing to respect them courts death. To try to make this new change more obvious, their tile has also been flipped upside-down. This may be quite silly, but it has always had a relatively difficult-to-parse tile, and should still visually work as a ray-like beast swooping down from mid-flight. -------------------------------------------------------------------------------- abc8f7acd2 | regret-index | 2024-12-15 21:29:17 -0330 Add AF_AIRSTRIKE, adjust Airstrike messaging Crawl's differing elements have very different degrees of representation throughout the game, in some part influenced each by the different spells available back in single-digit-version Stone Soup days. Fire gets many repeats of bolt and fireball and clouds, Ice only rarely gets its explosion and uses a few gimmicks repeatedly like the Frozen status or Creeping Frost, Earth gets all sorts of strange connections between metal and corrosion and slowness and invulnerability, and Air... in terms of repeatable gimmicks gets Lightning Bolt, repositioning Lightning Bolt, and Airstrike. The last is at least pretty unique amongst effects in Crawl, and could help with further flying + air themes for monsters in Crawl, so expanding it a little further in a weaker context seems reasonable. This new attack flavour is sort of like casting Airstrike whenever a monster hits, doing extra damage that scales both with HD and with the open spaces around the target. It ignores the usual AC check for flavour triggering (like AF_PURE_FIRE) because it's about manipulating the air in the space directly around the player (and to make the flat damage of attacks not be nearly so easily ignored by AC). The brand damage itself, however, still checks AC, unlike most damage brands. The damage formula is pretty different from normal Airstrike (in the same way AF_COLD is nothing like Freeze or Bolt of Cold), with minimal flat damage component (since that was in the attack itself) and also far more HD and open space based damage scaling. | 0 spaces | 4 spaces | 7 spaces -------------------------------------------------- 5 HD | 4-5 damage | 9-12 damage | 14-18 damage -------------------------------------------------- 10 HD | 10-12 damage | 24-28 damage | 35-40 damage -------------------------------------------------- 15 HD | 18-19 damage | 42-46 danage | 61-66 damage (Strictly speaking, a monster with a polearm _could_ get this brand, but none of the handful of monster concepts currently planned are going to wield weapons, so it's extraordinarily unlikely the full 8-space bonus will ever come up.) Compared to Airstrike itself, it's inherently less dangerous in terms of its range and the capacity to dodge or block the initial hit. Of course, it's also inherently potentially more dangerous if one doesn't actually respect it enough to move near walls because it'll be activating on _every_ successful hit instead of just whenever a monster feels like casting a spell. It should still feel reasonably thematic (since Airstrike is the iconic one air spell that doesn't use electric damage), and in particular it may help less observant newcomers notice how Airstrike's open-air damage bonuses work later on if the brand is given to an early-game monster. (It's hard to use particularly late in the game in a number of layouts, but it should be fine in some Lair water branches or Hells layouts....) This also comes with some different messages in both the spell and the attack flavour scaling to the number of open spaces one has around them: one for 0-2 spaces, one for 3-5 spaces, and one for 6-8 spaces. -------------------------------------------------------------------------------- 637b6df254 | regret-index | 2024-12-15 21:29:17 -0330 New monster: wyrmholes, translocation drakes(?) for Depths / Zot / Pan I do not apologize for the pun. Crawl contains a fair number of Translocations spells for players, but beyond the widespread deployment of blinking, knockback, and the rare mage who has learned Banishment without worshipping Lugonu, very few monsters in Crawl translate such a prominent school into their own mechanics. This reaches as far as dragons and drakes embodying and breathing most other spell schools yet none in this, a matter which can be recitified in a fashion that also can help establish more flavour about the ease of tearing through reality in this setting. (Being deployed in Depths can also lead a little into Zot's draconian shifters being quite notable compared to a minimal use of translocations themes elsewhere.) These new wyrmhole enemies for Depths are insubstantial, non-living, flying holes in spacetime. (I personally assert that the pun's no more silly than "glass eye", "marrowcuda", or the deployment of jellyfish in the Slime Pits each made by seperate devs. They're drakes, rather than dragons, due to the 'D'ragon glyph being overstuffed & overdone while the dra'k'e glyph has many free spots to work with; this also puts them at the opposite end of threat and spawning rate compared to V's lindwurms.) They've got much higher EV than comparative top-tier dragons, are speed 13, get a singular strong bite with a brand effect instead of trampling or claw attacks (shadow dragons also have branded bite attacks!), and possess but two simple mechanics that should make them more than sufficiently nasty for another Depths out-of-depth: * AF_BLINK_WITH, as was added to phantoms all the way back in 39035a7 and never used again afterwards. Aside from mechanical bookends in a position where many more monsters may accompany them and players have far more tools to handle such repositioning, it also reasonably offsets how Depths has more diggable walls and more corridors than most other lategame branches. * An experimental new (natural) spell, "Sojourning Bolt". This breath has a flat 50% chance to set other monsters to teleport, and for players alone to get a new red "!Tele!" status. Monster uses of Teleport Other previously failed due to not reliably placing players into actual danger, which was addressed for the teleportitis mutation back in db80c50 by always aiming for hostiles on the floor if possible. Likewise, this hopefully distinguishable teleport status will do the same on a delay _and_ bring the caster long, but as with all teleports it can be cancelled by reading another teleport. In Depths, this should usually have a vault or unexplored space to toss players and divers into, but players should also have enough tools plus enough spare teleport scrolls to handle this one way or another. While native to Depths as a rare out-of-depth, this monster has also been put in a small number of magic-themed vaults and dragon-themed vaults in both Depths and Zot, as well as the one ghost moth demonic rune vault in Pan (those _are_ explicitly interdimensional threats). Their description tries to form more worldbuilding connective tissue with both big dragon branches also being linked to demon dimensions (c.f. the work done with forests and fae in 18c7c0e). Their supportive capacities are more intertwined with damage to the player than most other support monsters, and should reasonably have decent chances of suceeding due to their high health, but there's only about 1 on average per Depths as a highly dangerous out-of-depth. Let's see how much people actually fear them or not. Their sparklingly animated tile is sourced from ontoclasm's old lava worms, Denzi's old lindwurms and the Portal spell icon, plus roctavian's old shadow fiends. The Sojourning Bolt spell combines Denzi's tiles with dolorous's edit of ontoclasm's old Bend Space icon. -------------------------------------------------------------------------------- 357dd4766e | regret-index | 2024-12-15 21:29:16 -0330 New monster: oni incarcerators, top-tier monsters for Gehenna The Hells are uneven- not just statistically, but also in variety. The Iron City of Dis and Tartarus have 4 essentially-unique monsters that spawn in them (and 14 overall), while Gehenna and Cocytus have 3 (with 13 overall). Elemental themes are already somewhat played-out as is over the full course of Crawl in comparison to the looser themes of Dis or the broad re-uses of Tartarus, but each of the Hells as have gotten attention over the years could do with being a little closer to each other, and the most Gehenna has to its name are fiery demons and damnation already heavily emphasized in other branches. As such, while it's still a fair number of months yet before more thorough efforts are extended towards extended, I'm willing to break some of the already-asymmetric arrangement. Oni incarcerators are a new high-tier threat for Gehenna, using an already functional combination of mechanics while also making use of the ogre to oni species change for additional (mythologically accurate!) flavour. These oni catch the various damned souls of the hells and keep in line, unable to escape, with reasonably high melee damage, a flaming two-handed polearm, AF_DRAG, and a decent cast rate on Manifold Assault. These two last points _stack_, in that being attacked through Manifold Assault allows AF_DRAG to move victims a square closer to the caster. This should be uniquely scary (as Manifold Assault skips EV and SH since its level upgrade, and it works across the whole screen to hit both the player and their allies), while still unique in its play pattern: compared to Harpoon Shot, it's far shorter a distance to be continuously pulled, but it's far more likely to endanger players due to skipping several defenses. It should also rather suit a branch focused on irresistable explosions. (Aside from Manifold Assault, these oni always wear fire dragon scales, so they can reasonably handle other fireballs in the branch, and otherwise have atrocious EV & AC plus high health- they're still a bit lower in stats than iron giants overall. They also get Throw Bolas- the -Move spell introduced for redone ironbound beastmaster in a727347- as an occasional cantrip to threaten characters on the opposite end of the AC/EV spectrum. This also adjusts hellephants to scale less with the depth of the branch- they're not that threatening for Gehenna- to not screw with quite as many monsters distributions in the branch otherwise.) They should serve reasonably as kill-on-sight targets the same way brimstone fiends and hellions already do for the branch, but with rather different means of resisting it (through high AC and rF rather than having other enemies hold back explosions), and serve as a rare highlight of danger when deep into Gehenna comparable to the same deployment of shard shrikes, iron giants, and doom hounds. (I'd prefer the Hells not get too much harder while future roulette plans need to inherently tone it down, but adjusting numbers down is fairly easier than making sufficient variety and unique dramatics manifest. There's only a little under 5 per Gehenna trip currently, anyway.) Their tile is a composite of Sastreii's base oni player-dummy-monster tile and the old draconian zealot tile by roctavian. TODO: To try and emphasize their theme of serving gods in general rather than just being innately evil (as these aren't unholy any more than the random nonliving monsters in the hells are, nor the random giants), adding a holy-servant blue oni would be a good suppliment. -------------------------------------------------------------------------------- af1b155deb | DracoOmega | 2024-12-13 18:32:48 -0330 Remember to call apply_location_effects after Crocodile movement (Zeldest) -------------------------------------------------------------------------------- e59816bd28 | Implojin | 2024-12-12 20:14:07 -0600 Fix trove entries being free As reported in #4171, players were able to enter troves by responding 'Y' to the prompt regardless of whether they had the necessary items. 008097b4cb changed the appropriate lua call here and it seems to have been failing silently, until the player tried to interact with the trove's lua marker. Fixes #4171 -------------------------------------------------------------------------------- 4bf1a7f943 | DracoOmega | 2024-12-12 22:06:22 -0330 Fix more broken item description lookups (Patrick2011b) This time with non-artefact ego armour. I suspect there are more of these bugs lurking here and there; I ought to do a more thorough survey for such in the future. -------------------------------------------------------------------------------- c3ec0608c4 | DracoOmega | 2024-12-12 18:50:55 -0330 Remove another unnecessary ID-related function (It was now used only in one place, and seems to be superfluous in this context compared to a simple !is_identified()) -------------------------------------------------------------------------------- a1b9855ae8 | DracoOmega | 2024-12-12 18:49:42 -0330 Fix some spurious {unknown} inscriptions in morgue files This would be appended even to identified randarts, since those mostly don't *have* type IDs. -------------------------------------------------------------------------------- ac9c2c9ce0 | DracoOmega | 2024-12-12 18:29:53 -0330 Fix Fedhas ballistos destroying briars (and related problems) (Sdynet) After the summon backend refactoring, most plants created by Fedhas abilities no longer counted as worshipping Fedhas. But it turns out that this was one of the very few cases where that had mechanical implications! Only Fedhas-worshipping plants can fire through other plants (which meant that oklobs could no longer fire through neutral plants, ballisto spores could destroy friendly briars, etc.) This fixes #4168 However, until recently, the ballisto problem was *itself* masked by explosion damage being mistakenly attributed to the player instead of an allied monster. After that was fixed, the original problem was revealed. Now these plants should all function properly once more. -------------------------------------------------------------------------------- eb329c71a5 | DracoOmega | 2024-12-12 17:55:05 -0330 Fix webtiles hotbar items appearing unidentified when known (BaconRulez) Webtiles caches properties of player items and only updates them when it detects that they have changed, but since item type knowledge is now included in item_def::is_identified(), both the cached and new item were returning the same tile (which meant that the hotbar would not update from the unidentified tile at all, until one reloaded their game.) Testing ID flags directly here feels a little awkward, but probably an adequate fix? -------------------------------------------------------------------------------- e303688651 | DracoOmega | 2024-12-12 17:51:28 -0330 Fix wands not auto-identifying when bought from an antique shop This fixes #4170 -------------------------------------------------------------------------------- eb7098ad9d | DracoOmega | 2024-12-11 17:47:46 -0330 Fix targeting UI for phantom mirror (and a few other things) When I made TARG_ANY not cycle through monsters (so that dig/gavotte wouldn't aim at monsters by default, which doesn't actually make sense for them), I accidentally broke this cycling for several *non*-spell effects that were still using it (and in some cases, not even having a proper hit function.) This is a fairly minimal-effort improvement that should at least restore as good functionality to phantom mirror (and several god abilities) as existed before the major targeting rewrite. But in future, it might be nice to make, for instance, Wall Jump actually target walls by default. -------------------------------------------------------------------------------- 3dd2b31670 | DracoOmega | 2024-12-11 17:43:39 -0330 Fix Rending Blade being hostile to Oka worshippers (Ge0FF) -------------------------------------------------------------------------------- 4374b4c6da | DracoOmega | 2024-12-11 16:02:22 -0330 Fix DB description lookup of identified armour not working (NotBatman) It was accidentally including the armour plusses in the DBName. -------------------------------------------------------------------------------- 577656edd5 | DracoOmega | 2024-12-11 15:57:28 -0330 Fix a webtiles crash with monster player tiles (gammafunk) 008097b accidentally gave the monster_info the player's actual weapon and shield instead of a copy of them, leading to deleting a pointer that was still in use. -------------------------------------------------------------------------------- 008097b4cb | DracoOmega | 2024-12-11 02:47:28 -0330 Squash all ID flags into one, refactor heavily Crawl's identification game has grown more and more simple over the years, but much of the *backend* for its old complexity remained in the code: there were flags for individually identifying an item's type, plusses, and even each individual artprop of every artefact. At one point in time, these all served a purpose, but most of them are redundant or unnecessary now. This replaces all existing ID flags with a single one, ISFLAG_IDENTIFIED, and refactors a ton of code to be simpler and more clear; items are now either fully identified or unidentified. Multiple completely unnused functions have been removed, a few more have been renamed for clarity, and identification checks for situations where un-ID'd items should be impossible (ie: checking the ID status of equipment the player is currently wearing) are also removed. Old uses of set_ident_flags() and set_ident_type() are both folded into identify_item() as appropriate. get_item_known_info() is removed entirely. With item identification being binary and all monster equipment being pre-identified, this felt like overkill for most current uses. Instead, we just hide unknown properties of items in player-facing description, rather than making a copy of every item with all unknown properties removed (in fact, most uses of this function effectively did so already.) ID checks were added to a few clue item functions, but the only place that required any special handling (as far as I noticed, at least) was calculating attack delay with an unidentified weapon with a speed or heavy brand, and that can be handled more simply. The stanard way to check whether an item is identified is now item_def::is_identified(), which checks not only the ISFLAG_IDENTIFIED on the item itself, but whether the item *type* is known. (A less obvious effect of get_item_known_info was that the item copy could be *more* identified than the original in many cases - in fact, this was seemingly how the game showed items on the floor whose type was known, but which you had not yet picked up, as identified - but that functionality is no longer needed.) Since there are no longer multiple levels of identification, itemspec identification syntax is changed somewhat. Instead of "ident:all" or "ident:type", there is just "pre_id". (I wanted to just use "ident" originally, but this ran into issues with scrolls of IDENTification and trIDENTs...) One minor loss is that item_def::name can no longer be passed ISFLAG_KNOWN_PLUSSES to hide printing of plusses on items, but on reviewing all current uses of this, approximately the only change I can see is that item plusses will be used for the message about manifold assault being incompatible with your current weapon, and the name of armour echoes (which is arguably an improvement for them, now that they're not longer +0 all the time). DESC_DBNAME no longer includes plusses by default (it never made sense there). Given this was a complicated and far-reaching refactor, it is possible some additional bugs remain, but I've verified a plethora of different interactions, both in wizmode and actual gameplay, and they seem correct. Fingers crossed. -------------------------------------------------------------------------------- 146f489888 | David Lawrence Ramsey | 2024-12-09 18:26:10 -0600 Add another mythical creature to artefacts. According to E. Nesbit's "The Book of Dragons", it's an inverse griffon, with the lion half in the front and the eagle half in the back. It's spelled leo-griff there, but that doesn't fit the style of e.g. hippogriff. -------------------------------------------------------------------------------- 1592f7d419 | regret-index | 2024-12-09 20:02:47 -0330 Set up a four-month-long gag (Darby) The process for this went: * Reading through ToME4's list of spell effects and noticing the capacity to make one of one's ally skeletons a Lord Of Skulls, then * comparing Crawl's lack of skeleton spell allies these days (to recieve such a title) to one of Dragon Quest's greatest monster designs, the guaardvark. The end results should somewhat reasonably work even without this context, in terms of emphasizing how this perpetually-joyful-looking marsupial has over a hundred thousand kills under its name in this ever-so-violent video game. -------------------------------------------------------------------------------- bd2725d2c0 | jjjingleheimer | 2024-12-09 20:02:47 -0330 Add tile for player under Glaive of Prune curse (#3239) It would be helpful for some visual to see when the prune curse kicks in, & adds fun flavor. [Committer's notes: Decided on one of the submissions that didn't have any icy effects on it, due to either coming off as closer to fire or being very obviously cut off, and desaturated it a bit from the Glaive of Prune's colours to try and get closer to the specific dark glossiness of a prune. Implemented actually displaying this with the tech introduced for a31ef7c, and cleared out a redundant tile while doing so. It's a little weird looking (though prunes are not the most photogenic of food in the first place), but the visuals when it happens are 100% worth it, so I am grateful for the submission. Closes #3239.] -------------------------------------------------------------------------------- a6ff03a38b | Implojin | 2024-12-09 07:46:56 -0600 Enable some slow-swap artps on talismans (Lici) This enables +invis, harm, and rampage as possible randart talisman artps. It does not enable -cast for now, as an intentional design choice, because we want to encourage spellcaster -> shapeshifting skill transitions. It also does not enable regen, because of an extant regen-related crash in the underlying item deactivation code. (TODO: fix this) -------------------------------------------------------------------------------- 2ebf7937d9 | Implojin | 2024-12-07 14:44:30 -0600 Fix a des typo (Pinkbeast) -------------------------------------------------------------------------------- 7c3642ac46 | Implojin | 2024-12-07 10:25:43 -0600 Don't skip mutation and forms checks when equipping bardings As reported in #4142, Nagas were previously able to equip bardings while in beast form. This was because `can_wear_armour` was returning true early when equipping bardings, thus skipping the mutation and forms checks further down in the function. Fixes #4142 Closes #4148 -------------------------------------------------------------------------------- b64493d6d0 | Implojin | 2024-12-07 07:56:09 -0600 Remove a spurious untransform barding check As far as I can tell, it isn't currently possible to wear boots on a barding species while transformed. Also, special casing this slot removal exclusive to boots on barding species was super weird; if this fix was previously needed, it seems like it should have been handled on the equip side. (Did we ever have a form that *intentionally* gave temporary legs with an attached equip slot??) -------------------------------------------------------------------------------- fb585edb74 | brandon s allbery kf8nh | 2024-12-07 06:30:20 -0600 remove old g++ check The pattern matches Arch's 14.2.x, which leads to inconsistent optimization and crashes with their build flags. Meanwhile, (a) OS X no longer ships the ancient gcc/g++ it's trying to avoid, and (b) akrasiac was at some point upgraded to a gcc/g++ that supports C++11, so just remove the whole thing instead of trying to fix it. -------------------------------------------------------------------------------- 80a0b1252b | regret-index | 2024-12-07 01:59:07 -0330 Vault review ever-repeating Worthy of note: * A few decorative altar vaults to Chei and Oka can now appear in Snake, and a few more vaults closer to the tone of V than Depths (using e.g. crystal guardians or slime creatures) have been moved to the former. * In an experimental and incomplete fashion, a small number of Elf end vaults that had singular single-tile corridors for entrances now have diagonal entryways that allow for mild ducking around corners but also don't make it quite so easy to funnel enemies down a single line, to try and mildly discourage digging tactics nearly as much as the branch already does for the first ~50% of the end vault. Possibly these stone entrance paths want to get fairly larger still to more meaningfully discourage such, but I'm wary of doing too much with this when the end castle layout wants more discrete singular boxes.... * Yet more small amounts of beast and serpent talismans are in thematic vaults early on. * Some of the statistically weaker Pan lord vaults and Swamp end vaults have been nudged upwards again. * The last couple of rounds of arenasprint are slightly more vicious yet again, due to the ceiling already being quite high and the discrete nature of waves being easy to adjust. Some day I'll do enough fresher tests to get a feel for the overall wave balance. -------------------------------------------------------------------------------- a893128bbb | DracoOmega | 2024-12-06 19:21:50 -0330 Fix bombard having the wrong projectile tile -------------------------------------------------------------------------------- 5a6c091abe | gammafunk | 2024-12-06 14:13:20 -0600 Fix the build on CAO Apparently CAO's gcc 4.7 doesn't like that various calls to std::sort() have lambdas with non-const arguments. We're not sure precisely why it's complaining, since this doesn't happen with non-ancient versions of gcc. Until we can upgrade CAO's toolchain, this fix will allow CAO's crawl builds to complete. -------------------------------------------------------------------------------- f8f82a2dde | DracoOmega | 2024-12-06 06:43:47 -0330 Fix Searing Ray crashing when cast Broken by 1f3234b. I should have paid more attention to the 'else' below that... Fixes #4162 -------------------------------------------------------------------------------- 8bf3021b3d | DracoOmega | 2024-12-05 23:24:28 -0330 Revert "Make banish animation (and similar) fill the webtiles viewport properly" This seems to be causing crashes with shift+X that I don't yet know the cause of, so I'm reverting for now in hope that the slow build servers don't catch this. This reverts commit 761acde7cbba57105fef83c912b375ac92b690cd. -------------------------------------------------------------------------------- ceed6161e0 | DracoOmega | 2024-12-05 21:25:23 -0330 Reduce Diamond Sawblade damage This spell has gotten overall positive feedback, but is probably a little overtuned. This reduces its damage output by ~20% (a little less at low power, and a little more at high power.) -------------------------------------------------------------------------------- ec6189af12 | DracoOmega | 2024-12-05 21:16:14 -0330 Allow Spike Launcher to be built in any type of wall I'd originally thought that limiting it to rock walls would be a positional restriction of mild interest (the vast majority of early walls are rock already, after all, and the spell is long past its lifespan by the time that changes). This has been somewhat unpopular, but the biggest motivator for this change was realizing that this makes it almost completely unusable in Sprints. Arguably that isn't the biggest deal with the current state of Sprint maintenance, but I'm also not sure 'rock only' is a critical part of the spell's design either. So now it works in all walls. There is no functional benefit to making the trap in a metal or crystal wall, compared to rock, but it does work. (I didn't want to incentivize people dragging things back to an isolated crystal pillar in earlygame, and the random targeting might feel worse if it could miss the 'good' wall nearby.) This also adds a static targeter (which coincidentally fixes a crash with the default one, which thought it was a beam spell with -1 range...) -------------------------------------------------------------------------------- 1f3234b322 | DracoOmega | 2024-12-05 20:55:42 -0330 Fix Searing Ray charging an extra 1 MP on its first turn active If you only had 2 MP, it would still work, but would eat up 3 MP if you had it available. If you were a djinn at 3 HP, though, it would just crash. -------------------------------------------------------------------------------- ddd2a15787 | DracoOmega | 2024-12-05 20:54:52 -0330 Fix sawblades still spinning in Sanctuaries (Bn) -------------------------------------------------------------------------------- 698b4d415c | DracoOmega | 2024-12-05 20:53:43 -0330 Don't let alembic brew potions by hitting firewood (Oneirical) I considered ignoring peripheral monsters also, but that might be unintuitive and those at least typically only show up mid-battle. -------------------------------------------------------------------------------- d85df88ef1 | DracoOmega | 2024-12-05 20:52:43 -0330 Fix pillars of rime not expiring with time (Oneirical) And make them last just a touch longer than they were supposed to. (Was accidentally broken bye the summon refactor.) -------------------------------------------------------------------------------- 761acde7cb | DracoOmega | 2024-12-05 19:34:37 -0330 Make banish animation (and similar) fill the webtiles viewport properly crawl_view.viewsz is supposed to represent the size of the viewable viewport, but webtiles only ever used the default value (33x17, for some unclear reason...) rather than adjust it based on the actual viewable area. The map itself was clearly drawn without needing to consult it, but this made some animations take up a fixed size in the middle of the screen rather than the whole viewable area. (It also negatively affected feature cycling with x, and potentially some other UI things that expected viewsz to correspond to the viewable area, instead of typically being smaller than it.) Given that I still have low confidence with webtiles rendering, I'm not completely confident something else didn't rely on the old (seemingly buggy) behavior, but fingers crossed... -------------------------------------------------------------------------------- 9d6bf4ca7f | DracoOmega | 2024-12-05 06:05:24 -0330 Disallow casting Poisonous Vapours on yourself (It currently crashes if you do so, but I'm not especially sure there's any good reason to allow it anyway.) -------------------------------------------------------------------------------- 34712576ec | regret-index | 2024-12-05 00:53:27 -0330 Tweak Call of Chaos's target checks It used to only exclude firewood, but not tentacle segments or projectiles. Providing message spam _and_ visual confusion for buffing tentacle segments (that may despawn anyway as part of tentacle movement) is particularly obvious with Mnoleg having both Call of Chaos and Malign Gateway. As such, it now uses the is_peripheral check from 62137d7 to cover those other missing parts. -------------------------------------------------------------------------------- 7ca0e80452 | regret-index | 2024-12-05 00:45:36 -0330 Further Forgecraft tiles (Sastreii) Spell icons for Nazja's Percussive Tempering and Splinterfrost Shell, alongside a new monster look for platinum paragons. -------------------------------------------------------------------------------- 7ba2e51c61 | regret-index | 2024-12-05 00:16:29 -0330 Prevent Xom bazaar trips in Sprint Crawl crashes rather unhappily when Xom tries to enact bazaar banishment, due to all branches outside of the Sprint map not being allowed to exist. It'd screw up arenasprint and meatsprint timers, and Lugonu doesn't get to do any Abyss shenanigans either, so we might as well just disable it both from Xom's choices and wizmode calls. -------------------------------------------------------------------------------- 988c20a3a5 | regret-index | 2024-12-04 23:50:30 -0330 Remove an unused enum dragon_class_type was used for Summon Drakes having a chance to also pick base draconians or random dragons (and for bonus points, listed all the drakes under lizards due to having a chance for komodo dragons), but hasn't been used for such since the Summon Drakes changes in 9b5a216 (as 0b5e84b carried forward). -------------------------------------------------------------------------------- afdce70f48 | DracoOmega | 2024-12-04 21:04:50 -0330 Fix the game thinking Mercury Arrow could hit 1 past its range (pisaster) This was true of Mercury Vapours, but you only get the splash effect when you actually hit something now, so it cannot affect things with no enemy in range. -------------------------------------------------------------------------------- ae92cfba07 | DracoOmega | 2024-12-04 18:41:24 -0330 Fix randart staves getting verbose descriptons in dumps (Ge0FF) Other weapons did not get the block about how your skill training would affect them (which even contained unstripped colour tags). -------------------------------------------------------------------------------- a90abc6ff1 | DracoOmega | 2024-12-04 17:32:42 -0330 Fix custom books shop for new spells (Oops) -------------------------------------------------------------------------------- c082a88ec8 | DracoOmega | 2024-12-04 17:12:38 -0330 Don't weaken monsters with no attacks (It cannot actually do anything to them, so don't bother announcing.) -------------------------------------------------------------------------------- f97d59c571 | DracoOmega | 2024-12-04 17:12:38 -0330 Remove rPois from endoplasms With Alchemist's starting spell now literally unable to harm monsters with rPois, an early endoplasm seems unnecessarily threatening to XL 1 alchemists. So let's just cut their rPois entirely (who says all slimes are made of the same sort of stuff, anyway, right?). This should have little meaningful effect on anyone else. -------------------------------------------------------------------------------- baccc4ca43 | DracoOmega | 2024-12-04 17:12:33 -0330 Experimentally adjust Alchemist level 1/2 spells Mercury Vapours was a spell that many players struggled to find worth using. The weakening effect could hit the player in close range (making it less good for helping melee encounters than one would like), and the very short range left its smite-targeting only mildly useful. The fact that the weakness ignored rPois was *intended* to help alchemists a little against poison-immune encounters, but generally it didn't help by *enough* to make it worth fighting poison-immune enemies instead of fleeing. It certainly wasn't useless, but it feels like we can do better. This is an attempt to make the Alchemist level 2 feel a bit better, while keeping the uses between their level 1 and 2 spell more distinct. Mercury Vapours is replaced with Mercury Arrow, a range 4 level 2 conj/alchemy spell that does partially-irresistable poison damage (just like sting did) and inflicts Weakness on the enemy hit (and all enemies adjacent to it) using the same formula Mercury Vapours used to. It *cannot* weaken the player. Sting is replaced by Poisonous Vapours (slightly different than the old spell by that name). It is range 3 level 1 alch/air spell that does a tiny bit of AC-ignoring poison and inflicts 1 level of poison on a target, but does not affect anything with rPois at all - essentially a weaker/shorter-range version of 0.30 poisonous vapours, but level 1. The hope here is that the level 2 is more worth using in more situations (including sometimes against rPois enemies, even if they remain a distinct weakness for early alchemists), while making the level 1 a bit more distinct in usage compared to a couple other level 1 spells and Sting. (It retains utility for a little while by being able to poison enemies behind other enemies, even while mercury arrow does more burst damage.) (Sting continues to exist as a monster spell, for the very few current uses of it.) Let's see how this feels! -------------------------------------------------------------------------------- 67a601c709 | regret-index | 2024-12-04 16:53:07 -0330 Vault review: partisan distribution edition This comes with an occasional reformatting to vaults as I came across them, of course. Vaults listing off all types of weapons now deploy partisans as long as they featured polearms, aren't looking for demonic weapons or two-handers across weapon types or hydra-head chopping capabilities, and especially if they were otherwise looking for one-handed weapons. They regularly replace in vaults a number of lair-branch-or-later halberd and glaive uses, since both of those are still already thrice and twice as common respectively and this is meant to help prop polearms as a weapon category up. They're also deployed in early portal rewards and as part of regular sprint weapon distribution as one would expect, and get a branded enchanted appearance half of the time in the bardiche slot in the Hall of Blades. -------------------------------------------------------------------------------- 3e022af010 | DracoOmega | 2024-12-04 16:53:07 -0330 New melee weapon base type: Partisan Polearm itemization had a conspicuous gap compared to most other weapon types. Not only did it only have a single top-tier one-hander (demon tridents), but it also didn't have a common weapon drop in a similar position to scimitars; tridents fell off pretty early and then the only better one-hander was both rare and evil. (Yes, trishulas exist, but also they barely exist and are highly specific.) While it is true that decent *two-handed* polearms are fairly common early on, which presents a somewhat different earlygame path than other weapon classes, the fact that there was no transitional 'Lair-depth' weapon *and* reduced availability of an endgame one-hander (good gods forbid the only option, and it also cannot show up in Hall of Blades unlike all other weapon classes.) commonly made it less attractive to invest in compared to other options. This is an attempt to improve that a little bit without making it feel like weapon classes are being homogenized in the process. Partisans are a one-handed polearm with 14 base damage and 17 delay, making them the slowest one-hander in the game. They are intended to be generally worse than a demon trident, but also more common - the high investment both differentiating them a little from scimitars and similar weapons, while also being a beneficial use of the high skill investment a polearms player may have put into, say, using a glaive before finding one of these. They have been added to the weapon tables of many existing monsters which could use both broad axes (ie: weapons of similar tier) and polearms. A few monsters whose *only* demon weapon option was demon tridents had them replaced entirely with partisans (on the assumption that it was purely mechanical reasons they had one demon weapon, and not flavor ones). I opted to skip giving them to merfolk, as getting Shoals in a game is already a huge boon to a polearms player, but naga can spawn with them at a somewhat increased chance compared to other monsters. Credit to regret-index for the tile edits. Sources: * Shafts: roctavian's mundane / magical glaives, magical halberds, and randart tridents. * Ribbons: roctavian's old randart glaives. * Points: ontoclasm and roctavian's long swords and double swords. * Player doll tiles: roctavian's magical spear. -------------------------------------------------------------------------------- 0c05a917f8 | DracoOmega | 2024-12-03 21:34:47 -0330 Fix beams not being properly bouncy (ragingrage, pisaster) I used the wrong bool in 7056299 and didn't notice at the time because it *also* fixed the bug. Oops. -------------------------------------------------------------------------------- c3491426b6 | DracoOmega | 2024-12-03 18:59:44 -0330 Fix monster_pathfind::fill_traversability ignoring no_actors argument The argument was set and then *immediately* discarded by the call to init_pathfind, so let's just do the proper setup directly in fill_traversability. (This resulted in battlesphere being able to 'blink' to the other side of enemies, even when no visible path existed.) -------------------------------------------------------------------------------- a85234a9e1 | DracoOmega | 2024-12-03 18:59:44 -0330 Fix battlesphere sometimes shooting its owner (1000000branches, Darby) When a battlesphere fails to find any path to shoot at its primary target, it can accept a 'fallback' position that let it shoot at *some* enemy in that direction instead. But the source of the beam wasn't being properly updated if it did so, causing it to fire from whichever position it fired a tracer from *last* - which could even strike the player! -------------------------------------------------------------------------------- afa22cc02a | DracoOmega | 2024-12-03 04:09:23 -0330 Fix rings of Fire/Ice having a {buggy} stash prefix (Namsan) -------------------------------------------------------------------------------- 862ef21dcb | DracoOmega | 2024-12-02 20:53:22 -0330 Fix item spell fail preview sometimes giving the wrong summary (Ge0FF) -------------------------------------------------------------------------------- f291e87058 | DracoOmega | 2024-12-02 20:51:01 -0330 Have clockwork bee remember its target focus between windings Instead of picking an entirely random enemy target each time a clockwork bee is reactivated, have it prefer the target it was last focused on (if it's still in sight and valid). It even maintains this memory if the original target it was aimed at leaves LoS before the bee deploys (so that bumping it afterward will still get it heading in the proper direction, instead of somewhere else at random). This should be a small QoL improvement, hopefully. -------------------------------------------------------------------------------- 74c169a5b7 | DracoOmega | 2024-12-02 20:30:00 -0330 Fix being able to deconstruct blazeheart cores with ctr+direction (Ge0FF) (Really, I don't think they made sense as a tempering target anyway.) -------------------------------------------------------------------------------- 7056299157 | DracoOmega | 2024-12-02 20:26:33 -0330 Prevent a rare Call Down Lightning crash If Call Down Lightning was cast upon a solid feature containing a monster, it would attempt to bounce (being electricity). And trying to bounce when it took no path in the first place would assert. It is very hard for this situation to even occur at the moment, but one specific instance is when an eldritch tentacle has first appeared and is still in its malign gateway feature (which is solid). A thunderhulk can aim at it with Call Down Lightning, and then try to bounce off the 'wall' it just shot. Now, beams will not bounce at all if they are aimed at a spot. (Thanks to Implojin for the suggestion, which is a better general fix than just making Call Down Lightning non-bouncy, which I'd been otherwise about to do.) Note: due to a separate issue, the spell still doesn't *hit* the tentacle when cast from this spot, but the tentacle would be immune to the damage even if it did, so I don't consider that as relevant to fix at the moment. Perhaps if we ever end up with other monsters inside walls, in the future. -------------------------------------------------------------------------------- e6a5942adc | DracoOmega | 2024-12-02 19:59:00 -0330 Try again to fix assorted buggy behavior with exploding monsters 4d9de507325e9399f8639ab74e243801ce0b59dd fixed some bugs and introduced others. It broke blame strings for player's being killed by friendly exploders (ie: would claim that they were killed by an exploding program bug) and also introduced a weird issue where monsters would flee away from blazeheart core explosions because they were testing reachability against ANON_FRIENDLY_MONSTER at (0,0) and determining that they could not reach it. Instead of setting ANON_FRIENDLY_MONSTER as the source of friendly explosions directly now, it still uses the exploder's mid (for proper blame strings), but beam::agent() is changed so that if it fails to find anything when retrieving the agent by mid, it checks if a monster by that mid has been cached (as is currently done only for dying exploders) and then uses MID_ANON_FRIEND purely for damage attribution (so that the player gets XP but not penance). Since this still means that the ME_WHACK event will be attributed to ANON_FRIENDLY_MONSTER, specifically ignore that for purposes of setting foe (but still do all the other aspects of getting hit by them, like breaking fear, etc.) I'm not 100% confident this doesn't introduce some other bug somewhere in this ongoing game of explosive whack-a-mole, but fingers crossed! -------------------------------------------------------------------------------- 5569844878 | regret-index | 2024-12-01 18:55:29 -0330 Don't place a Zot entrance on D:15 (PanSaczeczos) Possibly we should have more standardized function-based set-ups for placing Depths and Zot entrances, between the tags, the weights, the gems, and the actual specific entry features- the last of these got the wrong feature in a copy-paste, making due_index_antique_fridge place the wrong branch entrance in the D:15 setting. (Possibly Crawl itself should also actually complain about generating floors not connecting properly to given branches....) -------------------------------------------------------------------------------- bf341ee2b0 | Nikolai Lavsky | 2024-12-01 14:28:47 +0300 docs: remove obsolete targeting commands As a followup to 83d77bb6a, update the list of commands and settings files. -------------------------------------------------------------------------------- d50fa5e7cc | DracoOmega | 2024-11-30 15:12:07 -0330 Don't fail to place explosion clouds beneath the player (grumposus) Broken by 33284afee520d1fe114d1a0560f5795f086bd044 . (The method used there apparently gets tripped for all explosions, causing them to skip the part where they leave clouds on the player's tile. This should hopefully be a bit more foolproof, even if it's slightly ugly.) -------------------------------------------------------------------------------- 914cb651be | regret-index | 2024-11-30 09:53:01 -0330 Withered mystic tiles (pianoman523) Tiles for Iskenderun's Mystic Blast and withered plants. The former had some re-orienting edits done to make it feel less solid for a damaging blast effect, while the latter (which clearly mix both new tiles and Sastreii's new regular plant tiles) have been edited to mix the old focus on grey with the new tiles being brown- said neutral-dark grey helps the tile fit one of its branches' palettes more easily (Zot), and also provides a little less monochromatic appearance mixed amongst the less colourful derived undead it's usually deployed with. -------------------------------------------------------------------------------- 4aaac53294 | regret-index | 2024-11-30 08:27:59 -0330 Some more Forgecraft spell icons (Sastreii) Kinetic Grapnel, Fortress Blast, and Rending Blade, to be precise. -------------------------------------------------------------------------------- 2437acaab0 | regret-index | 2024-11-30 08:03:45 -0330 Count mutant beasts as chaotic (#4150) As the issue notes, the box of beasts is hated by Zin, and they also are explicitly thematically created by radiation. This mostly matters for one vault and one wizlab, but we might as well be consistent about this. Closes #4150. -------------------------------------------------------------------------------- 151a97f16f | DracoOmega | 2024-11-30 01:01:53 -0330 Fix a typo (Patrick2011b) -------------------------------------------------------------------------------- 83d77bb6aa | DracoOmega | 2024-11-30 01:01:53 -0330 Completely rewrite default target picking and cycling code The code which rested at the core of direction_picker and controlled how default targets were picked for spells was ancient and deeply arcane, making it laborious to make even simple, oft-requested QoL improvements to many spells. It also suffered from multiple surface-level issues, like inconsistent behavior about aiming explosions to avoid the player hitting themselves. (eg: casting fireball with a single enemy in melee range of you would aim off to the side of that enemy, so as to avoid getting caught in the blast, only if you had not previously aimed at that enemy on a prior turn. If you *had*, it would instead aim straight at them and force the player to adjust the aim or deal with a warning prompt.) This commit replaces the inner workings of this part of direction_chooser entirely and improves a multitude of autotargeting behaviors in the process. It no longer uses recursion with multiple gotos or targets enemies based on viewport dimensions(!) and should be vastly easier to work with in future. In addition: -AoE will be noticably better at avoiding the player, regardless of whether you'd previously aimed at that enemy. -AoE will also attempt to avoid harming allies, if a trivial aim adjustment could accomplish this. -The aimer is more aware of when AoE is harmless to the player, and won't needlessly aim-adjust a wand of roots off to the side of an enemy. -You no longer need to aim directly at a monster for the aimer to consider it your 'previous target'; merely catching it in the blast of a spell is sufficient. (In cases where multiple monsters are in the affected area, it will prioritize keeping its existing target lock, and otherwise pick the closest to the centre.) -+/- can now cycle through enemies that aren't themselves in range, but could be hit by AoE (ie: enemies just beyond the range of fireball) and will work sensibly with LRD. -Ranged autofight will more consistently use smart default aim, instead of only doing so for some spells. -Previous monster target is saved via mid instead of mindex (which could rarely do weird things when mindexes were reused) -Better default behavor for some spells like Gavotte (no longer prioritizes aiming at nearby enemies) or Tempering (prefers constructs with enemies actually in the blast zone.) All in all, this should produce meaningfully improved behavior for a number of spells (and AoE spells like fireball, in particular, should prompt the player about harming self or allies *significantly* less, making them more autofight-friendly.) To be clear, this isn't an attempt to make targeting smarter in the sense of 'make better decisions for the player'. It doesn't attempt to choose more important enemies or maximize how many things are caught in AoE, but rather to not present the player with 'obviously incorrect' default aims. It will still generally prioritize 'last-targeted enemy' or 'closest enemy', but not default to including the player's face in the blast when some obvious way not to do that exist. (And all of this new behavior is disabled if Options.simple_targeting is true, though using that feels personally quite questionable to me.) This commit also removes a couple unused or non-functional commands (some effectively broken since as far back as 553c0cd8d1dc9edb71fdb08f1d3d3be3 ), as well as CMD_TARGET_PREV_TARGET (which I feel was largely opaque and unhelpful). Finally, while 'iterate through feature in viewport while aiming' has been reimplemented for the sake of using stairs via x, you can no longer cycle through items on the ground with ;/' in that mode. I am unconvinced that this was ever useful to do when ctrl+x exists (and X still offers the same functionality for the map in general.). +/- still works for cycling objects when aiming Apportation. All in all, I hope this is a significant improvement to code readability, and also a meaningful improvement to player QoL with many different spells. Death to _find_square. -------------------------------------------------------------------------------- 870d526920 | Nikolai Lavsky | 2024-11-29 19:53:11 +0300 fix: don't print messages when monsters cast Irradiate out of LOS -------------------------------------------------------------------------------- 2f7cafc865 | patrick | 2024-11-27 00:30:52 -0500 Checkwhite :I -------------------------------------------------------------------------------- 223376ce86 | patrick | 2024-11-27 00:19:44 -0500 Tone down nicolae_beast_mode This vault places a box of beasts, and surrounds it with hostile but weak mutant beasts. It turns out that even weak mutant beasts who roll the shock facet can be overwhelmingly murderous with their blinkbolts. (Blinkbolting mutant beasts are responsible for one of the few times I've killed myself with one of my own vaults, even.) Thus, I have specified the non-shock combinations of facets explicitly for the juvenile mutant beasts. Additionally, slightly tone down the number of juveniles, from 4-7 to 3-6. The lone larval mutant beast will retain the ability to roll the shock facet, at least for now. -------------------------------------------------------------------------------- cdad7ad164 | regret-index | 2024-11-26 22:24:07 -0330 Fix a vault testing weight (tekkud) (Really large vaults and vaults_hard vaults are both difficult for the V layout generators to handle, so this wasn't quite as common as its weight made it appear to be.) -------------------------------------------------------------------------------- 1c27a4ad61 | DracoOmega | 2024-11-26 21:05:08 -0330 Fix Charm instantly breaking (not_that_greg) Accidentally broken by 1dcf16d5f2f0bb8b4fbd7f36cd11368bcbb95fe0 -------------------------------------------------------------------------------- cd918d39a0 | DracoOmega | 2024-11-26 19:33:03 -0330 Don't launch bomblets at firewood (Ge0FF) -------------------------------------------------------------------------------- 61fbf599b9 | Nikolai Lavsky | 2024-11-26 12:31:28 +0300 fix: don't say Paragon can use any current weapon since paragons can't fall back on using the player's current weapon since 901f017ee1. -------------------------------------------------------------------------------- 5daf8ae013 | DracoOmega | 2024-11-26 01:14:37 -0330 Fix a knockback-related crash -------------------------------------------------------------------------------- 41443316a5 | Isaac Clancy | 2024-11-26 00:09:27 -0330 Warn when summoning with fulsome fusillade active (Flugkiller) Fulsome fusillade can damage your summons so it should warn when you try to summon with it active, similar to spells like polar vortex. Should resolve #4055 -------------------------------------------------------------------------------- 7791d1a895 | DracoOmega | 2024-11-26 00:00:40 -0330 Fix some illusions not being marked as summoned/temporary While many illusionary clones are supposed to hide the fact that they are summoned (since it's part of the illusion that you can't tell them apart from the original), this is fairly silly for things like player illusions or hostile clones of your ancestor and such. But treating those *entirely* as normal summons would reintroduce an information leak, where it was possible to identify the real Mara by looking at the 'summoner' of your illusion. But the real problem is not player illusions, but Mara themselves, so refactor things to hide the summoner specifically if it's Mara, but show it for other player illusion sources (ie: mainly the strange machines in the Tukima wizlab) This fixes #4083 -------------------------------------------------------------------------------- 1dcf16d5f2 | DracoOmega | 2024-11-25 23:31:58 -0330 Refactor god_protects, shoot_through_monster, and related functions A number of different types of ally are intended to either never be harmed by player actions, or outright be fired through (eg: battlespheres, Hep ancestors, demonic guardians). But many of these different catergories are handled by different functions, and one category or another being overlooked from some attack is a frequent source of bugs. This refactors essentially all such cases to go through a pair of functions: never_harm_monster() and shoot_through_monster(). The former is for all monsters that should never be negatively affected by any actions caused the a given agent (usually the player). shoot_through_monster() is mostly the exact same list, except additionally includes Jiyva jellies (where the player cannot harm them, but also cannot shoot through them.) (I think some of this Jiyva behavior is a bit strange and incorrect, but I've not attempt to change its current functionality in this commit.) never_harm_monster() shoud be used in most cases, with shoot_through_monster() specifically for projectiles. This commit also fixes a handful of existing bugs, such as it being possible to affect a demonic guardian with Irradiate or slow any normally-unharmable ally with Metabolic Englaciate. This also fixes #3985, and half of #4083 -------------------------------------------------------------------------------- 77984fd6c1 | DracoOmega | 2024-11-25 19:17:36 -0330 Improve out of range message when aiming Paragon finisher (pisaster) If you aimed it at a spot the Paragon could not see (possibly because you had blinked away from it), the game would confusingly claim "You cannot see that place." when the actual issue is that the *paragon* cannot see that place. So let's just say that it's out of range instead. -------------------------------------------------------------------------------- d464759a54 | DracoOmega | 2024-11-25 19:06:36 -0330 Don't show EV/fail rate preview when examining unID'd randart weapons (Armour and jewelry appear to have already had this check.) -------------------------------------------------------------------------------- cfb42be0b4 | DracoOmega | 2024-11-25 19:05:47 -0330 Don't allow looking at spell success rate changes for unequippable items While (for example), a spriggan examining a scale mail wouldn't be told that it would affect their spell fail chances, if they pressed '!' they could still bring up a tab confusingly showing some of that information anyway. -------------------------------------------------------------------------------- 66324250c4 | DracoOmega | 2024-11-25 18:42:38 -0330 Allow deconstructing forgecraft constructs with ctrl+direction You used to be able to accomplish something similar with lightning spire, back when it got upset when you hurt it, but this stopped being possble once mindless constructed stopped caring about player damage. It felt that it was fine if the player *couldn't* instantly dismiss them (and largely still do), but this is aimed at improving QoL for clockwork bee in particular. When there are no more targets around to attack, clockwork bee falls dormant. It also cannot be recharged without a visible target. This frequently results in it briefly blocking a corridor after a battle, and while I have not *personally* felt that this is a problem (you should rest!), enough other people have found it annoying that I am doing this with the aim of making it feel better for them. This solution still feels 'clunky' to me (needing an additional command and giving a *much* longer message when trying to reactivate a bee without a target), but other proposed solutions have had potentially more serious side-effects, so let's just give this a try for now and see what player response is. -------------------------------------------------------------------------------- 97b8356728 | hellmonk | 2024-11-25 15:14:28 -0600 add vouchers to $ and typo fix -------------------------------------------------------------------------------- 8d44b91d9a | hellmonk | 2024-11-25 14:50:36 -0600 checkwhite -------------------------------------------------------------------------------- d38a5f2e37 | hellmonk | 2024-11-25 14:49:18 -0600 Add extreme couponing This needs some interface work. -------------------------------------------------------------------------------- bdf4c9db22 | dependabot[bot] | 2024-11-25 13:50:22 -0600 Bump tornado in /crawl-ref/source/webserver/requirements Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4.1 to 6.4.2. - [Changelog](https://github.com/tornadoweb/tornado/blob/v6.4.2/docs/releases.rst) - [Commits](https://github.com/tornadoweb/tornado/compare/v6.4.1...v6.4.2) --- updated-dependencies: - dependency-name: tornado dependency-type: direct:production ... Signed-off-by: dependabot[bot] -------------------------------------------------------------------------------- 20f8f3c1c4 | Implojin | 2024-11-25 13:43:26 -0600 Add Robert J. Redelmeier to the credits For 520e15dbdb. -------------------------------------------------------------------------------- bec97544d0 | regret-index | 2024-11-25 09:35:05 -0330 Checkwhite (...doesn't know about newly added files for a given commit? Hrm.) -------------------------------------------------------------------------------- 18c7c0e533 | regret-index | 2024-11-25 08:46:56 -0330 New monsters: alderkings, death trees for Depths and rarely Crypt While plants have been very slowly added to Crawl due to the innate difficulties of designing more immobile monsters, the motile plant glyph ('f') is one of the few console glyphs mostly wide open for additional monsters. There's a lot of easy flavourful design space for more plants, and in particular, adding one of them in Depths has multiple benefits: it can connect the various spriggans moved there closer to a branch otherwise mostly preoccupied with giants and undead, it can make Fedhas's plant pacification mean a little more throughout the game, and it can help further split apart the artificial fortification spirit of the Vaults versus the more uncontrolled cavern-dungeon of the Depths. Alderkings are a translated name of something from various works of Germanic literature, a storied figure of a darkwood elf king that haunts deep forests and absconds with or kills trespassers. (Crawl's elves aren't particularly fey, so it's deployed around the main fey threats of spriggans instead. The translation drift between the Danish elverkonge and German erlkönig is a couple centuries old, so it feels fine to make it literally a tree as the artistic tradition still includes rather than some fey spirit. Without a name to the title and with a lot of differing takes in centuries of tradition, demoting them to a non-unique feels fine enough to me.) These are deep out-of-depth walking trees in Depths with mildly-below-ettin level melee damage, reasonable hp and AC but poor EV and rF-, plus three notable spells: * Grasping Roots, the ranged constriction spell used by shambling mangroves: aside from using a little more constriction in Depths as is less present in Vaults with tentacled monstrosities moved out from the branch, it also slows running away from its short-range other spells. * Siphon Essence, the range-2 torment into self-healing ability provided by talismans of death: an experiment in trying out more highly dangerous short-range spells and means of healing monsters in a more reasonably tangible fashion, a means of endangering lategame characters with very high defenses, and a chance to establish yet another unique way to deal unholy damage as Crawl's large focus on unholy threats regularly needs. Unlike Torment, this range can be avoided for a large number of characters, and it also can avoid hurting living allies as Depths still contains plenty of. * Dispel Undead, the not-ranged version players, their ghosts, and burial acolytes use: a chance to further emphasize that monsters can have varying Dispel Undead ranges, and one short enough to still emphasize their Grasping Roots. Thus, they pin their foes in place, cast high-damage short-range spells with various non-standard resistance checks, and then finish them off with heavy melee. Hopefully the obvious synergies between these spells and the rarity of a character caring about both Siphon Essence and Dispel Undead will be straightforward enough for players to learn and fear. They're quite scary in practice, but Depths threatens a lot with large bands of monsters; they'll mostly endanger reckless spell-less characters, who would be just as imperilled if not more so by shrike and spark wasp bands. One can always teleport before they get close, after all.... Aside from placing around once or twice per game in generic threat vaults and regular floor spawns, they also appear in a number of forested, necromantic, and magical vaults throughout Depths. As strong necromantic casters, these also appear in a sparse Crypt vaults that already used dead trees; since the branch has plenty of regular living necromancers already, this shouldn't be too out of place. (This also comes with some tweaking of various other uses of dead trees and petrified trees, to deal with the automagic feature-recolouring-to-tile match-up mess.) Their tile is an amalgamation of CanOfWorms's hill giant, Sastreii's demonic trees, roctavian's shambling mangrove, and ontoclasm plus lingerstink's Asterion. It animates in a mildly experimental fashion to bridge tree foilage and necromancy colours. -------------------------------------------------------------------------------- e55ba79dcc | DracoOmega | 2024-11-24 03:47:20 -0330 Fix missing break in disjunction dart description (Bn) -------------------------------------------------------------------------------- 9ebf140c76 | Alejandro Ramirez | 2024-11-24 03:07:28 -0330 Make player doll match lost wings mutation (#3973) Redraw the player doll when losing wings so that draconians that loses their big wing mutation see the change immediately (kuniqsX) Resolves #3973 -------------------------------------------------------------------------------- c1ee981f09 | regret-index | 2024-11-24 03:06:14 -0330 Changelog tweaks (various) -------------------------------------------------------------------------------- c1d4bba160 | regret-index | 2024-11-24 03:05:27 -0330 Tweak spriggan druid call / might criteria 8a9237d added a special case to make only swamp dragons count for mons_is_beast, leaving out the swamp end fire and ice dragons due to their noticeably higher threat. Since then, Swamp has gotten quite a ways more dangerous, and in particular druids can call in bunyips in Swamp or shrikes and spark wasps in Depths. As such, I'm removing this one special case, letting them care about the other types of dragon when calling in or granting might to beasts in general. -------------------------------------------------------------------------------- d3692a3390 | regret-index | 2024-11-24 03:05:27 -0330 Various quick adjustments to ironbound beastmasters * The beastmaster spawn count is higher than desired due to a shift later in design to target slime creatures instead of harpies plus an accidental use of max over min, doubling their overall placement rate from what was planned. This enstates their proper chance to appear in a band versus depth, while adjusting the numbers to make them appear quite often with lindwurms, more rarely with slime creatures, and with less beasts overall in their more common vaults. * Arcanists were added on the same console glyph and colour combination in 129f0b0 since the ironbound beastmaster removal. I'm moving arcanists over to lightred, since it matches their tile and what currently is on that same combination (the true form of shapeshifters) is harmless whenever actually found anyway. * Their description has been tweaked to not raise confusion about them causing frenzy or berserk with their aura. -------------------------------------------------------------------------------- d447e0d7be | DracoOmega | 2024-11-24 03:02:01 -0330 Don't remove felid stat-0 status on revival if stats still below 0 Dying removes stat drain, which will *usually* result in stats being above 0 again (in which case it's fine to remove these statuses), but mutations or equipment may result in them still being 0 or less after being revived, in which case they should persist. Closes #4066 -------------------------------------------------------------------------------- dac7352ac4 | DracoOmega | 2024-11-24 02:33:18 -0330 Fix spacing in reminder message for recruiting first apostle This closes #3865 -------------------------------------------------------------------------------- eefd5e6a19 | DracoOmega | 2024-11-23 23:21:54 -0330 Fix/tweak a few things about randart artprop descriptions -Remove a redundant additional description of Wiz effect for randart rings of wizardry -Give a few more base types 'fake' artprops (now that appropriate ones exist) and remove the hard-coded descriptions of even faker artprops -Cut some descriptions that weren't even being used at present (due to having been using fake artprops for a while) -Describe artprops in full item descriptions in the same order that they appear in the inscriptions (instead of enum order, which reads as very arbitrarily unrelated in-game) -Show the rC+/rF- from base rings of Ice (and inversely for Fire) in the randart's inscription. At one point in time, 'Fire' was sufficient to imply rF+/rC-/fire-enhancer, but that is no longer the case. (ie: when 'Fire' shows up on a randart staff or orb, it may *only* mean a fire enhancer, with no resists baked in.) This closes #2664 -------------------------------------------------------------------------------- 520e15dbdb | Robert J. Redelmeier | 2024-11-23 19:39:40 -0600 Fix a typo Correct tense for Phalanx Beetle spell description. [Committer's notes: Edited commit message. Closes #4139.] -------------------------------------------------------------------------------- 26961a4193 | DracoOmega | 2024-11-23 21:49:24 -0330 Fix a comment -------------------------------------------------------------------------------- afcf477568 | DracoOmega | 2024-11-23 20:07:41 -0330 Refactor how tile-picking for beams works Tile selection for beams used to be handled by tileidx_bolt(), which was organized in an... archaic manner. Tile selection was done via a combination of beam color and string-matching against the name of the projectile being fired. This was clunky and also error-prone in several ways: projectile text could be edited elsewhere (which would silently cause their custom tiles to disappear), tile overrides for removed spells could remain long after the spell was gone (since it's not obvious which string corresponds to what spell). In fact, both of those things were true for at least one or two spells immediately prior to this commit! This removes that function entirely and instead allows any custom tiles to be specified as a simple member of zap_info (or manually-specified via beam.tile_beam and beam.tile_explosion, in cases where zaps are not used.) If neither is specified, it will still fall back on the default color-to-tile mapping done by tileidx_zap(). This also allows the tile for the path of a beam, and the explosion at the *end* of that beam, to use different tiles easily. This has been applied to iceblast (and related spells) and fireball at present, but could easily be extended to move things. (I think it is a cleaner visual, in general, if the non-damaging trail and damaging explosion of an effect use different tiles, though not all effects have such obviously useful tiles pre-existing.) Tile directional orientation is now also handled automatically by vary_bolt_tile() and I renamed the tile enums for the 'default' color-based bolts to be clearer. Aside from the aforementioned animation tweaks to iceblast/fireball, there should be no other functional change. -------------------------------------------------------------------------------- b703b2c8d9 | Implojin | 2024-11-23 13:11:09 -0600 Defer klown pie fragility ordering (Flugkiller) Following the reasoning of 1838bd627c, here we defer applying player-targeted klown pie effects until after their damage is dealt. Monster-targeted klown pie effects were already being applied after the hit, so nothing to change there. -------------------------------------------------------------------------------- 97f3e5c200 | Implojin | 2024-11-23 13:01:12 -0600 Defer monster-targeted crystallizing bolt fragility ordering This is for consistency with 1838bd627c and really should have been a part of that commit. Mea culpa. -------------------------------------------------------------------------------- ec2332499f | David Lawrence Ramsey | 2024-11-23 10:52:05 -0600 Fix typos. -------------------------------------------------------------------------------- 0f947df1d0 | brandon s allbery kf8nh | 2024-11-23 10:35:37 -0600 disable installation of pkg-config and libpng Both are already installed on current GHA images; the former is actually redirected to install a different variant (there are two: the original, and a fast but buggy C version), which then conflicts with the already-installed version. So simply skip installing both. -------------------------------------------------------------------------------- 4990ddc06c | brandon s allbery kf8nh | 2024-11-23 10:27:56 -0600 silence unused flash_tile parameter warning on console -------------------------------------------------------------------------------- 8b3c75940f | regret-index | 2024-11-23 04:57:22 -0330 0.33 changelog update up through ga4cb51f6ed It seems unlikely that any Forgecraft spells or the set of new decorations are about to be removed any time soon, so it's probably safe to go ahead and write up the new changelog entry for this version. -------------------------------------------------------------------------------- a4cb51f6ed | DracoOmega | 2024-11-23 04:22:10 -0330 Nerf Monarch Bomb While feedback has been that the desired loop of 'deploy bomblets, then blow them all up' is a fun one, there's concern that monarch bomb is too good at doing things *other* than that - doing meaningful direct damage with Launch Bomblet and creating surprisingly durable meat shields in the process. Since I think the explosions are the star of the show, this is an attempt at reducing the power of other aspects: -Bomblets are significantly more fragile and expire more quickly -Launch Bomblet damage is greatly reduced -Monarch Bomb melee damage slightly reduced -Monarch Bomb itself is very slightly more durable (it was always quite fragile compared to other constructs of similar level, and still is) I considered additional measures like reducing the chance that their melee attack spawns a bomblet based on the number of bomblets already deployed, but I'm going to hold off on any further changes until seeing feedback for this version. -------------------------------------------------------------------------------- 356abe4680 | DracoOmega | 2024-11-23 04:22:10 -0330 Tweak Clockwork Bee While the tradeoffs involved in the spell are interesting, there has been concern that it is too strong in corridors, where the player's ability to repeatedly repair their bee when it runs out of charge allows it to hold place in front of the player too consistently. This experimentally attempts to counterbalance that somewhat by adding a 1 MP cost to recharging the bee (along with decreasing the amount healed when you do so.) Given how time-consuming it is to resummon a bee mid-fight, I do think there's a somewhat delicate balance of durability here before it starts to feel outright bad (and I have concerns of design overlap with healing inugami via MP), but let's give it a try for now, anyway. -------------------------------------------------------------------------------- 0c973e93fc | DracoOmega | 2024-11-23 04:22:10 -0330 Reduce monster Hellfire Motar power After hellfire mortar damage scaling was adjusted by e22bf9ab365384d5e94 (for player-side purposes), I neglected to consider the effect this would have on monsters. Wiglaf's mortar (in addition to gaining 1 range) went from 3d15 to 4d18! (This reduces it to 4d13, which is still a little stronger than in 0.32, but to a degree that feels more reasonable.) -------------------------------------------------------------------------------- 5b279c5cb0 | DracoOmega | 2024-11-23 04:22:10 -0330 Allow hellfire mortar to try pushing obstructing monsters backward Since becoming 3-school, hellfire mortar is a much bigger investment than it used to be. Sinking back into magma the moment a stray flier steps in front of its path is mildly annoying, and I think unnecessary. So now it will try to push such things back one space instead. (It doesn't do anything fancy to push obstructions away, so two in a row will still block it, but this should make it less likely to be defeated by 'incidental' obstacles.) -------------------------------------------------------------------------------- 9c6473c76c | DracoOmega | 2024-11-23 04:22:10 -0330 Fix incorrect messages being printed if pushed back by a boulder (And in a somewhat more plausible situation after the next commit.) -------------------------------------------------------------------------------- 0a4fc1a4de | DracoOmega | 2024-11-23 04:22:10 -0330 Adjust Rimeblight spread mechanics While a powerful spell in the right circumstances (and with appropriately grisly flavour), rimeblight could be more inconsistant than one would like. While the spread chance from explosions was quite high, it was never guaranteed, and poor early rolls could fail to get the plague going in a meaningful way, making it sometimes feel like a poor use of turns. Delayed damage always has an uphill fight to compete against burst damage, and the whiffs felt just a bit too common. Also, while there was a chance to spread upon death, the fact that a living infected had many *more* chances to spread rimeblight (via explosions) could make it feel bad to have them die early. A level 7 spell ideally shouldn't make you feel bad if it kills something, so I have changed the spread mechanics in the hope to make it both more consistent and never 'punish' you for killing an infected monster early. Rimeblight now has the same 'chain-to-adjacent-enemies-on-cast' behavior that Petrify does, afflicting up to two connected enemies per cast. The ice shard explosion no longer spread rimeblight at all, but upon death, it has a 100% chance to spread to adjacent enemies, and a 50% chance to spread to those at radius 2. Combined, these should make it easier to get started, less likely to abruptly peter out due to RNG, and if anything *reward* killing things quickly with undead or refridge assistance to spread it further. -------------------------------------------------------------------------------- d1af28e953 | DracoOmega | 2024-11-23 04:22:10 -0330 Make Teleport Other smite-targeted A fairly unpopular spell in the Warper starting book. Teleport Other does have some value when a character is weak and needs to escape things, but Piledriver makes it a less appealing spell to learn early (when spell levels are scarce) and it's never been terribly exciting any later than that. Allowing it to be cast on specific monsters in packs, to remove the most dangerous elements of them in advance, will give the spell more flexibility that I hope make it feel a little more worth considering in more situations. -------------------------------------------------------------------------------- d268329e45 | DracoOmega | 2024-11-23 04:22:10 -0330 Replace Darts of Dispersal with Darts of Disjunction Darts of dispersal were most noticable as part of Warpers' starting kit, but despite multiple buffs, were still largely a 'desperation option' you were never happy to use. Warper's biggest weakness is that none of its kit provides it any offensive power whatsoever until it can cast Piledriver (which is at least XL 3, and usually later) Back when their darts were boomerangs instead, sometimes the damage *could* make a difference in early fights, but now they are more akin to a blink that can miss (but costs no MP) and blinking is something warpers are generally not lacking for! And since dispersal darts aren't really relevant to anyone else when they can (rarely) show up later in the game, let's just try replacing their effect entirely. Disjunction darts inflict a short-lived status effect on enemies they hit which causes them to blink a short distance away from the thrower for 3-4 turns in a row, taking 2d2 damage each time they do so. This still allows them to be used as an escape option (perhaps even more reliably than present), but the small flat damage very specifically is aimed at helping win fights in those first couple XLs. They also do not auto-mulch, like dispersal used to, but mulch at the standard rate for dats. (I feel this behavior was somewhat of a holdover from when it could show up on proper ammo that did *real* damage. There's a big difference between doing a whole battle's worth of normal attacks that keep a target displaced versus the ocassional dose of minor damage.) I did not remove the Dispersal missile brand entirely in this commit (it might be possible it finds another home on something in future?), but it no longer naturally spawns on anything. Outside of a sprint, all places that used dispersal darts now use disjunction ones instead. -------------------------------------------------------------------------------- e44d3cceb3 | DracoOmega | 2024-11-23 04:22:05 -0330 Make Piledriver's targeting more flexible While Piledriver's damage can be significant when the spell is first learned, there are a number of things about the spell that make it awkward to use in a number of situations - one of which is how groups of enemies will tend to file into a neat line behind each other while the player is repositioning to line up a shot, rending the spell literally unusable on any of them. Now, multiple contiguous enemies in a row can be pushed together, dealing damage to whichever enemy is at the *back* of that line. This should hopefully allow the spell to feel like it 'misses' less often. (Regardless of the length of this line of monsters, they must still move at least 1 tile and strike something which is in LoS of the caster, which actually fixes a preexisting bug that allowed kobolds to sometimes query for presence of walls or creatures out of their LoS.) Additionally, this commit allows the player to pick which of multiple valid piledriver directions they want to move along. I'd originally hoped that the auto-targeting would create interesting positional decisions, and while I believe that it does to an extent, it is common to end up with coinflips between 'good move' and 'extremely bad move'. I don't think these feel very satisfying and can make it feel punishing to try utilising the spell as a core part of your kit sometimes. "I would have been better off casting nothing and just running away." is not a great feel and happens somewhat commonly at the moment. The spell still does dramatically more damage when pushing things a long distance, so I am hoping that alone is sufficient to create interesting positional questions and encourage some aggression (rather than only using it along 'safer' trajectories). We'll see. -------------------------------------------------------------------------------- 5383b0d124 | regret-index | 2024-11-23 00:29:02 -0330 Tweak the Iceblast effect tile (DracoOmega) Less orthogonal symmetry and less taking up the whole tile to get closer to the other blasting effects Crawl already uses, and a slight amount more visual variety through rotation now that it's noticeable when it does so. -------------------------------------------------------------------------------- a727347fca | regret-index | 2024-11-23 00:29:01 -0330 Heavily revise and revive ironbound beastmasters V is a branch that is very pressured in its placement- usually immediately after some of the higher variety in the game in the Lair branches, usually before the heavy large vault use in Elf and Depths that it itself can barely use, and yet not originally given a unique monster set to itself. There's been multiple attempts to help out the branch out with more and more unique monsters, and in my personal opinion, it could always use more: the loose theme of much more organized and cosmopolitan structure is easily workable, and V:1-4 has decent value as a pacing break after the first few runes that still tries to stand out mechanically. Ironbound beastmasters were tried out in 0b001ba and removed in f8b08d3 for a number of reasons that are each reasonably addressable in different fashions: * Depending solely on their bands made them require unique and very frail special-casing to always place their band regardless of other calls for individual monsters (in vaults, wizmode placements, bot information calls, and so on). Rather than going out of the way to make sure individual beastmaster spawns come with a band, they instead now only spawn a part of V animal and slime bands when those bands already successfully place, with a chance increasing by depth to join lindwurm, slime creature, and dire elephant bands when the full band spawns already. (This replaces one of the dire elephants with a beastmaster when it spawns, but doesn't for lindwurms or slime creatures.) * Goad Beasts was a very invisible spell, since the actual number of actions monsters take in a turn without involving spells is a relatively subtle effect. Instead of relying on the energy system, this instead relies on a far more direct effect using other reworked systems: they simply have an passive aura of haste for living creatures of animal or lower intelligence. This should also help create very little ambiguity as to what they haste, because they visibly immediately haste or don't haste given other monsters. * They were also pretty weak for their depth when caught by themselves seperated from a successful band placement, whether from bands wandering around or being convoked. This return comes with somewhat higher base damage and a coinflip chance for a polearm. They also now have a new support spell that can work with other monsters than beasts or slimes, "Throw Bolas", which does relatively minor physical damage for the depth and also inflicts -Move. (The rope for the bolas projectile and spell icon is a CC0 asset by fleurman, and the balls are steel sling bullet icons by ontoclasm.) (To accomodate the last of these, paralysis and petrification both end with "You can now act again", and -Move from Momentum Strike now reads "You can move again" rather than "You are no longer robbed of your momentum".) I'll let players find out in practice just how common it is to be bound in place as hasted dire elephants or hasted titanic slime creatures barrel towards them. Players are pretty strong by the time they do V, and I'm doubtful the ~4 beastmasters per visit will noticeably more dangerous than the multitudes of thunderhulks or convokers, anyway. Being interrupted heavily by not being able to move may get some resistance from players who otherwise focus solely on playing quickly (c.f. 98a3e4f and 54e5184), but fortunately their boosted allies can help solve the problem of reckless play in a quick and direct fashion. -------------------------------------------------------------------------------- 49d95937af | gammafunk | 2024-11-22 17:18:53 -0600 Fix the build (DracoOmega) In 8f22220, the tile enum was added as a new entry instead of replacing the dummy entry of 0. For at least GCC, on newer compilers this incorrect data was silently initialized into the struct, but the older version of GCC on CDO was not happy. Concerning that newer compilers didn't at least warn about the problem, but at least the offending line was easy to detect... -------------------------------------------------------------------------------- 5fac02aaea | Implojin | 2024-11-21 12:46:35 -0600 Revert "Fix slime not showing around slime walls after reload" This commit was causing level previews using shift-X [ or ] to display the player's current floor in the main viewport, instead of the target floor. I don't have time to hunt this down right now and am concerned about leaving it alone since this was likely caused by an interaction with tags, so I'm simply reverting for now. This reverts commit 96a7ec282a2df5b68c187281be947cd77b4c37f8. -------------------------------------------------------------------------------- e3c942dec9 | DracoOmega | 2024-11-20 22:47:29 -0330 Fix Ru magic school sacrifices blocking the wrong schools (Lightli) Sac Forgecraft blocked Translocations, Sac Translocations blocked Alchemy, etc. (even though it removed levels of the appropriate skill.) -------------------------------------------------------------------------------- 39329bb7ae | DracoOmega | 2024-11-20 18:24:08 -0330 Don't show irrelevant information when looking up non-book spells (Ge0FF) Looking up spells with ?/s that were technically player usable (because they were wand spells, or an internal implementation of an ability) would still display miscast effects and some other things which would only be relevant if any player could actually cast the spell directly. Instead, hide this information for non-book spells. -------------------------------------------------------------------------------- 7ab36c3030 | DracoOmega | 2024-11-20 18:16:36 -0330 Fix an Arenasprint crash with foxfires After 6938ffb21ab4f, foxfires are directly killed as part of them hitting enemies, but if such an attack ended a wave in Arenasprint, the automatic 'dismiss all allies' function in lua would kill the foxfire before the point where the foxfire's own code would kill it, leading to an assert. I am... not entirely happy with this sort of safeguard here just for one sprint (and suspect there are similar cases elsewhere, too), but it's an immediate short-term fix at the very least. -------------------------------------------------------------------------------- 4d5a26f9b7 | DracoOmega | 2024-11-20 18:06:07 -0330 Don't ignore beam.aux_source set by mons_spell_beam A couple spells set custom aux_sources in their beam setup, which would be entirely ignored in practice. For instance, when 357ea4826f refactored how Creeping Frost was set up, the game began to claim that players killed by it were killed '...by a frost.', but that is not the only spell thus affected. I can't see any obvious reason why we should ignore aux_sources set up manually, and the code here is truly ancient. So let's try only setting default values if no non-default values have already been set. This fixes #4011 -------------------------------------------------------------------------------- 4330605426 | DracoOmega | 2024-11-20 17:00:16 -0330 Shorten alchemy artprop string to match other spell schools After 1bdb9b73b77 shortened forgecraft's, I realized that basically every other school used an abbreviated version as well. Alchemy could arguably have still fit, but Alch seems adequately clear to me. -------------------------------------------------------------------------------- 531cc0b697 | DracoOmega | 2024-11-20 17:00:01 -0330 Fix battlesphere firing message (Flugkiller) I considered rolling back to the shorter 'Your battlesphere fires!', but since battlesphere uses more particular target selection now and yet cannot *always* reach the target of that selection (though it tries very hard), I thought that specifying its aim might reduce confusion sometimes when it hits something other than its ideal target. Maybe this doesn't matter? Easy to change again later, at least. -------------------------------------------------------------------------------- c00413b3c2 | DracoOmega | 2024-11-20 17:00:01 -0330 Flag Kinetic Grapnel as destructive I hesitated a little, since half the point of this spell is as a melee augment, but I'd mostly been thinking of Vehumet support at the time. But since this flag also affects whether it works with battlesphere, probably it shouldn't be excluded from support by a spell in its own school. -------------------------------------------------------------------------------- e3ca3d1998 | DracoOmega | 2024-11-20 17:00:01 -0330 Don't let the player (rarely) shoot themselves while confused Firing beams while confused aims randomly, but this random space chosen to aim at could extremely rarely be the player's own location, giving them a 1 in 169 chance to shoot *themselves.* Melee attacks cannot harm the player while confused, and I think this is unexpected behavior that could sometimes be quite lethal. Just aim somewhere else instead. This closes #4091 -------------------------------------------------------------------------------- 9a27585c1c | DracoOmega | 2024-11-20 16:29:24 -0330 Don't let Fusillade target (or affect) orbs of destruction This fixes #4010 -------------------------------------------------------------------------------- 7bd8858e0c | DracoOmega | 2024-11-20 16:28:06 -0330 Make message for hitting rC- monsters with cold less misleading It sounded similar to applying the frozen status to them, and was also completely different than the player message for the same thing (whereas both players and monsters are 'burned terribly' by fire when rF-) This closes #4098 -------------------------------------------------------------------------------- 1bdb9b73b7 | Implojin | 2024-11-20 11:30:07 -0600 Shorten Forgecraft's artefact property string (gammafunk) Using the full name here was a bit unwieldly. -------------------------------------------------------------------------------- 8f22220ccd | regret-index | 2024-11-20 02:12:47 -0330 Yet further and further additional tiles Something of a milestone to have one of these sets of tiles finally completed; the generic monster spell icon is now used on nothing and all spells have a fitting non-generic icon now. No promises on this being accomplished for mutation icons (which are far more specific than the various blasts of spells and thus have far less resources to ply upon), or vfx (far less bounded in terms of what could do with unique effects), and the statue work of 8e166ad seems to have not been noticed much. * Call Down Lightning, Primal Wave, Hurl Sludge, icons: CC0 spell icons by frosty_rabbid. * Call Lost Souls icon: ontoclasm's lost soul icon + DracoOmega's ghostly status icon. * Creeping Frost icon: Denzi's crystal square walls + CanOfWorms's Frozen Ramparts icon. * Death Rattle icon: ontoclasm's cloud spell tile + Denzi's old dragon breath ability icons. * Holy Breath icon: Sastreii's pearl dragon + another CC0 spell icon by frosty_rabbid. * Hunting Cry icon: CanOfWorms Wereblood icon + Ultraviolent4's swift status icon. * Launch Bomblet icon: The current Hurl Damnation icon by ontoclasm and the current CC0 bomblet tile by Chrisblue. * Mourning Wail, March of Sorrows icons: Denzi's Tomb rock walls, ontoclasm's cloud spell tiles, and a CC0 spell icon by frosty_rabbid. * Paralysis Gaze icon: A CC0 eye by Surt. * Pyroclastic Surge icon: pianoman523's Hellfire Mortar tile + multiple CC0 spell icons by frosty_rabbid. * Seismic Stomp icon: Denzi's old 64x64 dragon tiles paired with pianoman523's Resonance Strike icon. * Still Winds icon: jpeg's travel exclusion adjustments and the generic cloud spell icon by ontoclasm. * Waterstrike icon: CC0 water tiles by finalbossblues + another CC0 spell icon by frosty_rabbid. * Wind Blast icon: A public domain piece by 7soul1. * Wild Magic, Subdued Magic icons: CanofWorms's Demonic Magic icons. * Big Wings icon: A public domain piece by 7soul1 + Sastreii's robust mutation icon. * Another Zot granite statue: Denzi's old Tornado spell icon. (Additionally, Battlecry's palette was tweaked a little, and Hoarfrost Bullet joins the other cannon-output spell in the monster list.) -------------------------------------------------------------------------------- 3db37b140e | yrdzrfxndfvh | 2024-11-20 02:12:46 -0330 add monsters to ziggurat_pillar_centre_c (#4109) "Summoners get stokers, fravashi, moths of wrath (decreased weight), and guardian serpents." "Smiters get deep elf high priests, ophanim, salamander tyrants, soul scholars, naga ritualists (decreased weight), soul eaters (decreased weight), flayed ghosts (decreased weight), entropy weavers and daevas, and lose glowing orange brains, with decreased weight going to monsters that don't do anything against the undead." "Suppressors get apises and glowing orange brains. The latter are a curious case because they fit well into all three types, but IMO having a permanent brilliance aura is justification enough to end up in the AOE buff/debuff category." [Committer's notes: Seraphim and silent spectres have both been rejected for being too strong and defining of other zig floors. Polterguardians have been rejected for being too weak in impact, and I'm taking out servants of whispers in the same capacity. Since these lists are getting exceptionally long and messy, I've adjusted the lines here to use only one of a given monster per floor- this hopefully will be more specifically memorable to use a floor of curse skulls support, ot a floor of moth of wrath support, rather than intermingling every floor getting the vault with a dozen or more different enemies from the one custom list. Finally, I moved undying armouries out of the summons list- Flashing Balestra doesn't work through grates- and over into the suppressors list now renamed a support list. Merges and closes #4109.] -------------------------------------------------------------------------------- f19855ecf0 | regret-index | 2024-11-20 02:12:46 -0330 Give Dispater AF_CORRODE Multiple fronts of reasons for this, really: * Dis has a corrosion mechanic presented simply for being inside it, but only caustic shrikes further the flavour or mechanical connection between the location of the hells' iron city and said corrosion effect (versus how many different ways earth and metal themes are used on monsters across the game and in Dis itself). While the other floors of Dis are plenty dangerous as is, Dispater themself has the lowest killratio of any of the hell lords in the past three versions, and thus can take a buff. * Compared to the unrand Pan lords, who have lots of unique or nearly unique spells to be flashy and memorable encounters, the hell lords are rather straightforward and boring in various different capacities. The hells themselves may be fairly more dangerous, but surely the uniques guaranteed each extended rune should get a little more to them too? Antaeus is easily kited, Ereshkigal has so many spells she's too inconsistent at actually following up silence or paralysis, and Asmodeus and Dispater are extremely similiar uniques with elemental projectile spells + Hurl Damnation + limited demon summon options, high AC and low EV, and a fixed equipment drop. (Asmodeus is statistically more dangerous due to Fire Summon getting to summon more at once, of course.) AF_CORRODE's irresistable corrosive nature as is deployed only on rust devils otherwise somewhat adds to the threat possibility space (I expect a bunch of good death logs with Corr (-40) before enough people pay enough attention) in a reasonably thematic enough fashion to work with. -------------------------------------------------------------------------------- 43d13352a3 | Aliscans | 2024-11-19 23:15:38 -0330 Don't let non-damaging clouds or walls stop shift+dir running. Let the player run (shift+dir) through safe clouds. Let the player run up to slimy walls if immune to their effects. In both cases, the player could already travel through an affected square. -------------------------------------------------------------------------------- 51936a82b6 | Isaac Clancy | 2024-11-19 23:15:33 -0330 Fix display of GDR in wizmode Use the rounded down instead of randomly rounded version of the players AC when calculating guaranteed damage reduction for display. [Committer's note: edited slightly to silence a compiler warning.] -------------------------------------------------------------------------------- 96a7ec282a | Isaac Clancy | 2024-11-19 22:46:07 -0330 Fix slime not showing around slime walls after reload After reloading and sometimes after changing levels, the slimey acidic floors around the walls in the Slime Pits (and oozemancy walls) wouldn't appear. -------------------------------------------------------------------------------- 9afaf516a7 | Isaac Clancy | 2024-11-19 22:45:46 -0330 Don't blame the player when a confused ally kills (BarneyGumball) Angels summoned by The Shining One worshippers could become confused (e.g. by being hit by a tarentella) and then kill themselves or other angels putting the player in penance. Fix this by not blaming the player for kills by confused allies unless they (or an ally) confused the ally. Fixes #3304 -------------------------------------------------------------------------------- 1c2b424464 | Isaac Clancy | 2024-11-19 22:31:30 -0330 Let grey draconians keep iron scales in dragon form (kuniqsX) Other draconian get to keep the mutations they get from their colour when possible in dragon form, so it would be consistent for grey draconians to keep their iron-fused scales. Fixes #4111 -------------------------------------------------------------------------------- c7453fe8aa | Isaac Clancy | 2024-11-19 22:17:19 -0330 Fix autofight not moving over web with slick slippers (jejorda2) When autofight was trying to move towards an enemy to attack it and the only way you could see to reach the enemies was through a web, autofight would give a message saying there was no safe path to the enemy and do nothing. It should have moved through the web as the slick spippers give immunity to them. Fixes #3125 -------------------------------------------------------------------------------- ee4b17a322 | Isaac Clancy | 2024-11-19 22:00:55 -0330 Round down the displayed damage for thrown weapons (sdynet) Previously, displayed damage for thrown weapon was rounded randomly possibly giving a different value each time you examined your weapon. It is now rounded down similar to unarmed. Fixes #4047 -------------------------------------------------------------------------------- 438ea5f9f1 | DracoOmega | 2024-11-19 20:04:13 -0330 Allow looking up spells by school with ?/s Currently, looking up 'necro' with ?/s returns just 5 results, one of which isn't even a player spell. Looking up 'fire' returns an incredible number of results (most of which aren't fire.) This is an often-requested feature in one form or another, so here's a stab at something simple and hopefully helpful. If you type '@', followed by a part of that school name, into spell search, it will now return all player book spells of that school and nothing else. (ie: '@necro' returns all player necromancy book spells.) A reminder of this behavior is given at the prompt for entering a search key (the same way as is done for glyph lookup options for some other categories.) Thanks to Ge0FF for some helpful suggestions. -------------------------------------------------------------------------------- 30e30eea18 | DracoOmega | 2024-11-19 17:40:59 -0330 Unbreak Vanquished Vanguard / Summon Mortal Champion summon cap (Ge0FF) Broken since fb19e97205a5 which made ENCH_SUMMON get set even when mark_summoned is called with a summon type of 0. Both of these spells call mark_summoned() a second time, after the monster is created, to properly mark their manually-created gear as summoned, but this was trashing the record of what spell had created them, causing their summon cap to be ignored. -------------------------------------------------------------------------------- 02a2365326 | DracoOmega | 2024-11-19 15:45:58 -0330 Improve spell failure change description (Ge0FF) Due to not checking the *displayed* chance on xv, it was possible for the UI to think that a visible change in cast rate would happen for an item, even when it would not (for instance, 'improving' it from way over 100% fail to merely slightly over 100% fail). This meant the game would suggest pressing '!' even though that did nothing. Now we calculate all of the actual percentages directly, even on the first pass, so that we can be sure to give accurate information. Additionally, xv will now summarize by listing the change of the spell whose failure rate is most affected by the gear change (eg: "your spell failure would worsen by up to 22%"), to give a better idea whether those details are worth looking at or not. -------------------------------------------------------------------------------- 2e717cac72 | DracoOmega | 2024-11-19 02:34:56 -0330 Add a preview for examined equipments' effect on spell success Equipment in Crawl has a signficant effect on spell success that can often be difficult to intuitively predict the magnitude of. The general advice for determining just how badly that heavy armour will affect your spells is to try it on, but this isn't always possible. Sometimes a player is considering buying expensive armour from a shop, but isn't sure if it will ruin their important spells or not. Worse, Ashenzari worshippers often cannot swap their items without literally destroying them forever. In the spirit of items showing preview of how they would modify your EV, item descriptions now indicate their effect on spell success. Since effect on spell success is extremely individual to the spell, a single number cannot be provided; instead, a second page of information is provided for items that would modify spell success rate (accessible by pressing '!') This indicates the change in spell failure for every spell the player knows which would change by at least 1%. They are sorted in order of magnitude of change, and color-coded for how good/bad the change is. Items which cause any such change mention this in the same space where AC/EV changes are listed (along with how to access the additional information). Something like this has been a repeatedly-requested feature for some time now. I hope it will be helpful! -------------------------------------------------------------------------------- 2d3314aca4 | hellmonk | 2024-11-18 21:01:33 -0600 fix descent portal messages (again) -------------------------------------------------------------------------------- 4d9de50732 | DracoOmega | 2024-11-18 15:38:51 -0330 Fix various brokenness with exploding monster attributions (Midn8) The most obvious breakage is that the player was incorrectly getting penance for blazeheart core explosions, but the player also was not getting XP for some things like ballisto spore explosions. I *think* this should straighten most of that out. -------------------------------------------------------------------------------- 648c01eb48 | DracoOmega | 2024-11-17 22:49:25 -0330 Don't crash when a spike launcher made on the level border fires By making the source of the attack be the monster's feet rather than the spike launcher's own location (I don't think this actually affects anything meaningful, since it was only range 1 anyway.) -------------------------------------------------------------------------------- 9a63397c37 | DracoOmega | 2024-11-17 21:08:17 -0330 Fix a pronoun issue with Curse of Agony expiring (salticid) -------------------------------------------------------------------------------- aa28e0d10a | DracoOmega | 2024-11-17 21:02:10 -0330 Don't warn about hurting immune allies with Plasma Beam or Magnavolt -------------------------------------------------------------------------------- 0618abe852 | DracoOmega | 2024-11-17 20:57:28 -0330 Tweak will-of-the-wisp resists Remove the mildly-inexplicable rC+ and add another level of rF+ -------------------------------------------------------------------------------- 165d15814e | DracoOmega | 2024-11-17 20:56:50 -0330 Fix Soul Splinter not working on electric eels They're not normally spectralisable on account of having no melee attack, but since the soul wisp does not refer to any of the source monster's stats besides HD in any way, there's no reason they should be excluded. -------------------------------------------------------------------------------- 37ced69e49 | DracoOmega | 2024-11-17 20:45:00 -0330 Ban Awaken Forest from being cast via Aphotic Marionette (Colgate) Since it will currently always be hostile to the player. (I could have sworn I disabled this before the ability was first pushed to trunk, but seemingly not.) -------------------------------------------------------------------------------- 1f546792b7 | DracoOmega | 2024-11-17 20:40:48 -0330 Make phalanx beetle AC boost colour AC blue in webtiles This fixes #4138 -------------------------------------------------------------------------------- 971a450147 | DracoOmega | 2024-11-17 20:15:15 -0330 Be a bit clearer that pyre arrow's listed damage is per turn -------------------------------------------------------------------------------- 0e9803c144 | DracoOmega | 2024-11-17 20:15:02 -0330 Give the player a helpful suggestion when set on fire While information about how to deal with sticky flame is included directly in the status description, spell description, and bombardier beetle description, let's try a tiny bit of extra notice that is hopefully inobtrusive enough (rather than yell this at the player every single turn). -------------------------------------------------------------------------------- adb32c1a65 | DracoOmega | 2024-11-17 20:07:36 -0330 Don't claim that gravitambourine does anything to orbs of destruction It would still print the 'is pinned by gravity' message, even though it did not actually affect them. -------------------------------------------------------------------------------- 0817dc3971 | DracoOmega | 2024-11-17 20:03:35 -0330 Allow Yara's to remove Bestow Arms's effect Also, use a prop to handle the cooldown on the undying armour, rather than repurposing the enchantment itself, now that it can be blown up and is no longer 'decorative'. -------------------------------------------------------------------------------- 177a7290d3 | DracoOmega | 2024-11-17 20:01:42 -0330 Fix spacing in hoarfrost cannon idle messages -------------------------------------------------------------------------------- d82fd1d872 | DracoOmega | 2024-11-17 19:22:43 -0330 Make spike launchers more visible in console (Undo) -------------------------------------------------------------------------------- 6624952077 | DracoOmega | 2024-11-17 19:22:43 -0330 Unbreak matches_player_speed for zombies Summoned creatures were not intended to have the 'automatically match the player's speed when travelling' behavior, but after the recent summon refactoring, is_summoned() returns true for a larger category of monster, including zombies. Intead, let's try excluding based only on whether they have a summon timer or not. -------------------------------------------------------------------------------- 1e4d284106 | DracoOmega | 2024-11-17 19:22:43 -0330 Don't let hostile polymorph prevent Vessel of Slaughter's transformation Makhleb's power is not so puny. (Also, it consumed costs without even doing its thing.) -------------------------------------------------------------------------------- e0577c41e0 | DracoOmega | 2024-11-17 19:22:43 -0330 Don't fumble Wu Jian wall jump attacks if your destination has water The ability itself says that you attack 'from above', yet you technically landed at your end point *before* attacking, which could result in silly things like falling into water a moment before being described as jumping over something, and water at the end point could also cause you to fumble your attack altogether. Now, you should funtionally attack first and *then* land (and cannot fumble even if you're leaping towards water.) -------------------------------------------------------------------------------- f3c5cb16e6 | DracoOmega | 2024-11-17 19:22:43 -0330 Don't give apostles extra plusses on unrandart armour Could result in silly things like them showing up in +8 moon troll leather armour. -------------------------------------------------------------------------------- c6086724bb | DracoOmega | 2024-11-17 19:22:43 -0330 Forbid imprinting a weapon your god hates (Ge0FF) And if you already imprinted one before switching to a god who dislikes your prior choice, unimprint it upon conversion. -------------------------------------------------------------------------------- 4d67529974 | DracoOmega | 2024-11-17 19:22:43 -0330 Let Spike Launchers be LRD'd -------------------------------------------------------------------------------- 82142fbd45 | regret-index | 2024-11-17 05:47:07 -0330 More specific spell icon / effect tiles Most of these are using the new flash_tile() functionality added for various Forgecraft spells to add new flashes of debuffs that are extremely important to not miss, dramatizing them more than other debuffs and hopefully continuing to make it harder to miss that they were inflicted. (Several of these didn't even _have_ visual effects previously, which was especially strange considering most hexes do by default.) The splinterfrost barricade salvo, meanwhile, is meant to help distinguish it from using the non-penetrating Throw Icicle effect. Sources: * Draining Gaze vfx: roctavian's edit of Denzi's eye of draining. * Doom Howl vfx: roctavian's Shadow Fiend tile. * Entropic Weave vfx: Denzi's burst graphics and Pete Hurst's cobwebs. * Sap Magic vfx: snw-0's icon for the Sap Magic invocation + Sastreii's antimagic icon. * Sentinel's Mark vfx: aidan holm's Sentinel's Mark spell icon. * Splinterfrost salvos: An edit of roctavian's throw icicle projectiles. * Stoke Flames icon: pianoman523's current creeping inferno tile. This also comes with some reorganizing of dc-misc.txt to sort the spell effects by rough school of origin, to ease any further additions to the file. -------------------------------------------------------------------------------- 599108c877 | Nikolai Lavsky | 2024-11-17 00:13:13 +0300 fix: give water elementals animal intelligence too This got missed in 62137d702. -------------------------------------------------------------------------------- 901f017ee1 | DracoOmega | 2024-11-16 16:53:26 -0330 Make Platinum Paragon use artefact weapons only (PleasingFungus) I'd originally implemented per-weapon-type damage scaling for paragon out of concern that certain weapon types (like axes or quick blades) would be disproportionately good on them. Many of the usual factors that govern player weapon choice don't really apply to either monsters or lategame - scaling is very different, and you're sure to have your choice of a reasonable weapon in nearly any category. I didn't want the choice to feel too 'flat'. But something you perhaps *aren't* guaranteed to have an obvious gauranteed best option of are artifacts (and artifact weapons are the most fun to use anyway.) So let's try removing the weapon-type-based scaling and just only allow imprinting artefacts. (This does make Gyre and Gimble even more absurd, but... maybe that's allow?) This does mean the paragon can no longer fall back on using the player's current weapon, if you've never imprinted one, so to try and avoid players not realizing they should use this, you can no longer cast paragon unless you first imprint *something*. (I considered just having them be unarmed in this case, but it seems likely some players will miss that.) -------------------------------------------------------------------------------- 838d476545 | DracoOmega | 2024-11-16 16:53:26 -0330 Don't waste a turn trying to deploy a Paragon in deep water (Lightli) Possibly the paragon should just fly, but while I debate about that, it shouldn't consume a turn and 9 mana to do nothing. -------------------------------------------------------------------------------- d03ed3959e | DracoOmega | 2024-11-16 16:53:26 -0330 Be more clear in the Spike Launcher failure message (ragingrage) -------------------------------------------------------------------------------- a53a18d65b | DracoOmega | 2024-11-16 16:53:26 -0330 Fix spell memorisation menu spacing (Lightli) I forgot to realign this to fit crocodile when I adjusted the spell cast menu. -------------------------------------------------------------------------------- 46016ea2b6 | DracoOmega | 2024-11-16 16:53:26 -0330 Don't let Walking Alembic give player potions in Cocytus (regret-index) If it deliberately works like real potions in as many other ways as possible, probably this should also block it. (For now, it doesn't affect ally buff effects, but to be honest, I am not sure how much we can concieve of sawblades as drinking a potion anyway. Maybe the alembic just made it some nice industrial oil to polish it with.) -------------------------------------------------------------------------------- 99847303ae | DracoOmega | 2024-11-16 16:53:26 -0330 Preserve clockwork bee HP better than winding/unwinding This grew especially weird when Tempering was involved, and could result in it looking like your bee grew steadily more injured each time you re-activated it. -------------------------------------------------------------------------------- 50e1018844 | DracoOmega | 2024-11-16 16:53:26 -0330 Fix missing Shred spell icon -------------------------------------------------------------------------------- c18741777b | DracoOmega | 2024-11-16 16:53:26 -0330 Preserve Tempering status when a clockwork bee unwinds/winds (ragingrage) This also meant you could get explosions off the bee much more often than expected. -------------------------------------------------------------------------------- 976cc2dc96 | Implojin | 2024-11-16 13:25:02 -0600 Draw Kinetic Grapnel UI icon in webtiles This was left out of 0183c6dfd6. -------------------------------------------------------------------------------- 68e16c8a2b | Implojin | 2024-11-16 13:02:18 -0600 Don't randomize Fortress Blast damage description (again) This is a fixed version of the fix from 94af0e6272d7. -------------------------------------------------------------------------------- b7987cb560 | Implojin | 2024-11-16 12:58:23 -0600 Revert "Don't randomize Fortress Blast damage description" I didn't know we were already using a different call for non-randomized AC in the UI, fixing this differently in a following commit. This reverts commit 94af0e6272d72a908e7deefd438db50019df8eae. -------------------------------------------------------------------------------- 94af0e6272 | Implojin | 2024-11-16 12:44:11 -0600 Don't randomize Fortress Blast damage description It looks like this had been the intent already, but we were passing in armour class with a div_rand_round. -------------------------------------------------------------------------------- b8170214e4 | Implojin | 2024-11-16 12:37:09 -0600 Fix Fortress Blast damage description (Oneirical) This spell description was using presumably-older version of its damage formula that capped at 51 ac, instead of 70. -------------------------------------------------------------------------------- 90355d26cc | Implojin | 2024-11-16 10:28:52 -0600 Fix book of metalworking description (Zeldest) -------------------------------------------------------------------------------- 6b26e9b081 | regret-index | 2024-11-16 08:47:26 -0330 Tweak and add some more Xom tension spells Battlesphere and Intoxication have been adjusted towards their new spell levels, while two new Forgecraft spells have been introduced for the sake of both variety and tactical screwery: Alistair's Walking Alembic feels both appropriate for Xom's potion effect focus as well as leaving around poison clouds to screw with a non-poison-resistant player's movement, while Diamond Sawblades encourages repositioning mid-combat to be able to get any value out of their free but arbitrary rare placement. -------------------------------------------------------------------------------- a5ffdf50d9 | regret-index | 2024-11-16 08:47:26 -0330 Fiddle with a variety of monster attack type messages Alembics and blazehearts both punching were using attack types not actually in active use previously, as were dream sheep headbutting foes. In this same spirit of being a little more specific with reasonably straightforward attack types, the following not-weapon-using enemies now use attack types and words other than "hit": * iron golems punch both times, * draconian monks punch for their first hit (and still kick + tailslap after), * ushabti headbutt (they're too rigid to do much else), * spatial maelstroms and thermic dynamos touch and engulf, * and toenail golems gore. None of these should affect gameplay- even if one dragged an undying armoury over to draconian monks, they already preferred their bare fists before any other weapons. -------------------------------------------------------------------------------- d0176ef91a | regret-index | 2024-11-16 08:47:26 -0330 Short vault review, post-Forgecraft edition * nemelex_lonely_heart_becter no longer places Jessica post Temple. * Crypt entrances are now capped on their laughing skull counts, since rolling multiple laughing skull bands is quite dangerous for characters that kill monsters more slowly. * alphashops, custom_books, the Xom bazaar, and a variety of other vaults have new spells and books in the context of both the past couple of versions and Forgecraft. -------------------------------------------------------------------------------- 2aa0d2bae1 | David Lawrence Ramsey | 2024-11-16 01:07:10 -0600 Fix typo. -------------------------------------------------------------------------------- b5dd53abf3 | David Lawrence Ramsey | 2024-11-16 01:01:15 -0600 Add Winding status description. Also remove extra %%%%'s from status.txt. -------------------------------------------------------------------------------- 12864aae5e | DracoOmega | 2024-11-16 02:37:35 -0330 Fix a crash with examining Platinum Paragon spell description -------------------------------------------------------------------------------- e664b64c1b | Nicholas Feinberg | 2024-11-15 21:46:47 -0800 Dedent -------------------------------------------------------------------------------- b08092cf68 | Nicholas Feinberg | 2024-11-15 21:22:29 -0800 Small spell description tweaks -------------------------------------------------------------------------------- 907fb87e44 | David Lawrence Ramsey | 2024-11-15 23:18:48 -0600 Add a few Forgecraft ghost lines. -------------------------------------------------------------------------------- 2e8e2f50cc | David Lawrence Ramsey | 2024-11-15 23:17:16 -0600 Fix spelling. -------------------------------------------------------------------------------- 69e20f60b9 | gammafunk | 2024-11-15 23:13:46 -0600 Tweak a clua function For the newly added view.trap_at() function, slightly rework it to return the "base" trap name by the crawl-side trap_name() function. This is mostly for consistency with the c_trap_is_safe() clua hook, which is passed this same form of name. Previously we used a longer form that includes "trap" in its returned string, which is more appropriate for e.g. `x` mode descriptions. -------------------------------------------------------------------------------- 241dc13c55 | Nicholas Feinberg | 2024-11-15 21:12:45 -0800 Remove the indescribeable Since an actual Forgecraft description is higher in the same file. -------------------------------------------------------------------------------- 0267f39781 | Nicholas Feinberg | 2024-11-15 21:10:49 -0800 Fix a few monstrous typos -------------------------------------------------------------------------------- 0c33a18029 | Nicholas Feinberg | 2024-11-15 21:05:00 -0800 Fix: (Parenthesize) Percussive Tempering Make percussive temp check attitude while ignoring monsters. -------------------------------------------------------------------------------- d72c9b7a1d | DracoOmega | 2024-11-16 01:28:25 -0330 Fix tag upgrade build? Apparently the only beetle that had the beetle genus was phalanx beetle, and it is otherwise dummied out. It's maybe arguable a mechanical one shouldn't be a living genus anyway, but I honestly barely know what genus even affects. -------------------------------------------------------------------------------- 0f9341590b | Nicholas Feinberg | 2024-11-15 20:56:59 -0800 Lay seige (to rest) -------------------------------------------------------------------------------- 48282d16c9 | DracoOmega | 2024-11-16 00:46:48 -0330 Diamond sawblades monster placeholder (regret-index) Pulled out from Sastreii's spell tile until a final version arrives. -------------------------------------------------------------------------------- d547fa6d45 | DracoOmega | 2024-11-16 00:46:48 -0330 Forgecraft spell tiles (Sastreii) -------------------------------------------------------------------------------- ab24663898 | DracoOmega | 2024-11-16 00:46:48 -0330 Mark a majority of Forgecraft constructs as LRD-able Battlesphere and Rending Blade feel too insubstantial for this, but most other constructs are clearly made of metal or a similar hard material. -------------------------------------------------------------------------------- 6070836552 | DracoOmega | 2024-11-16 00:46:48 -0330 Various Forgecraft monster/spell tiles/placeholders (regret-index) "CC0 piece usage: * Walking alembic enemies: shade's CC0 potions * Monarch bomb and bomblet enemies: Chrisblue's CC0 bombs The rest were cobbled together from old Crawl tiles." -------------------------------------------------------------------------------- ef13c8a7ea | DracoOmega | 2024-11-16 00:46:48 -0330 Fix a typo -------------------------------------------------------------------------------- 070a0f9593 | DracoOmega | 2024-11-16 00:46:48 -0330 Don't fire battlespheres at pacified monsters (SallyRoses) -------------------------------------------------------------------------------- 2d81e8531f | DracoOmega | 2024-11-16 00:46:48 -0330 Remove a martyred shade's injury bond when it becomes a flayed ghost Injury Bond ends automatically when the source of the effect dies, but the shade isn't 'dead' - it's just not a shade anymore. While the flayed ghost cannot *continue* to apply the aura to allies, it would still linger for 30 aut after the shade died/transformed. Now, it should end immediately. -------------------------------------------------------------------------------- 5a289ac79d | DracoOmega | 2024-11-16 00:46:47 -0330 Expire capped summons immediately instead of only *almost* immediately Removing pre-existing summons when summoning things over a cap used a special internal status for 'quickly expiring', but this expiring was still very, very quick - immediately as that monster's next turn arrived, which was virtually always before the next player action. It was only even possible to see this in particular circumstances such as after an animated armour moved a step, or for monsters summoned by other monsters. Instead, just remove the summons immediately. (This also makes bookkeeping for certain effects less troubled by ensuring that any previous monsters made by a spell are removed *before* the new one is fully set up.) -------------------------------------------------------------------------------- a521cab93d | DracoOmega | 2024-11-16 00:46:47 -0330 Reorder some checks in _set_firing_pos The considerably more involved checks in mon_can_move_to_pos were being called even for positions that were clearly out of range, leading to potentially a great deal more work than was needed. Instead, do the quickest vetoes first. (There should be no functional change.) -------------------------------------------------------------------------------- abaddbb882 | DracoOmega | 2024-11-16 00:46:47 -0330 Try to prevent Battlesphere / Rending Blade from leaving their caster's LoS Their somewhat chaotic-looking movement gives them higher odds than most allies of breaking LoS with their caster, which can be somewhat confusing (ie: 'did it expire without me noticing?'). Try a little harder to keep them where their creator can see them. -------------------------------------------------------------------------------- 49116da691 | DracoOmega | 2024-11-16 00:46:47 -0330 New Forgecraft UI/effect tiles (regret-index) Spell tiles for Percussive Tempering and Magma Barrage. Effect tiles for Detonate Monarch Bomb, Paragon Tempest, Percussive Tempering, and Manifold Assault. Sources: * Platinum Paragon tempest / Manifold Assault: CC0 slash vfx by Cethiel. * Nadja's Percussive Tempering icon: Denzi's old Force Lance icon. * NPT vfx: A CC0 aura effect by Kutejnikov and roctavian's branded hammer tile. * Monarch Bomb shrapnel: Denzi's old zap effects, lava tiles, and LRD icon. -------------------------------------------------------------------------------- dc4253ee1e | DracoOmega | 2024-11-16 00:46:47 -0330 Let flash_tile display arbitrary tiles, not just colours (And fix an animation delay bug in Shadow Tempest) -------------------------------------------------------------------------------- 01bb53b866 | DracoOmega | 2024-11-16 00:46:47 -0330 Exclude various Forgecraft spells from Oka/Sac Love On the fence about Diamond Sawblades (it's a monster where attacking it is meaningful, but it's also kind of 'Frozen Ramparts, but you make the rampart yourself') and Lightning Spire (traditionally excluded, but you can no longer give it orders, which makes it closer to Hellfire Mortar which *is* currently allowed). Wouldn't be surprised if more debating the subject happens later. -------------------------------------------------------------------------------- 62137d7022 | DracoOmega | 2024-11-16 00:46:47 -0330 Heavily refactor mons_is_conjured/mons_is_object, simplify mons_is_conjured was a category being used in multiple (only partially overlapping) ways. In some contexts, it was used as an equivalent for is_summoned() for non-abjurable things which is_summoned() did not return true (but now does, since the recent rework). In other contexts, it was used to exclude monsters too minor to be randomly targeted for certain effects (eg: Obsidian's Axe's mesmerisation effect or Ignis's Fire Champion). In others, it was used overly broadly to avoid prompting the player about harming invulnerable allies (ie: orbs of destruction), with sometimes odd effects like Shatter being unable to damage spatial vorticies or boulders. In still more, it was used (as part of mons_is_object) to control what allies were angered by attacks and which ones gods would penance you for attacking - which weren't even symetrical categories! A lightning spire would be angered by you hitting it and vanish, but Ely would not min. But a spellforged servitor would *not* be angered by you hitting it, and yet Ely would penance you anyway. mons_is_object also relied on a bespoke list of things we considered to be 'a mindless object' that often overlooked things which seemingly belonged there (while also producing weird effects like Orb of Mayhem never triggering off killing dancing weapons or lighting spires, even though other seemingly similar things counted.) This commit replaces both of those functions completely. M_PERIPHERAL replaces M_CONJURED (since the ancillary nature of these monsters is the relevant mechanical thing, and not the fact that they were made by magic), actor::is_peripheral() replaces most uses of mons_is_conjured() and also folds tentacles and firewood into that same category. The very large number of places that checked firewood/conjured/tentacles together now need only check is_peripheral(), which should largely encompass 'is a proper monster'. Places that used mons_is_conjured to exclude 'minor monsters' now use is_peripheral(). Places that used it to exclude 'pseudo-summons' just use is_summoned() instead. Places that used it to reduce targeting prompts now check always_shoot_through_monster() instead (which isn't actually comprehensive, but the rest of that will wait for a later commit). mons_is_object is removed altogether and rules regarding angering allies and incurring penance are simplified. Anything which is both non-living and brainless neither gets angry nor incurs penance - full stop. I gave elementals animal intelligence, since it *feels* like they should have enough sapience to complain about being attacked, but I doubt this matters in practice. Most other uses of mons_is_object are simply cut (so orb of mayhem will work on kills of any xp-granting enemy) Sac Love / Oka ally conduct behavior is also effectively simplified a little - monsters that are peripheral are okay and everything else is not. There may be a handful of other minor behavioral changes (Siphon Essence no longer works on firewood, for instance...) but I think most not already mentioned are of minor conseqeuence. -------------------------------------------------------------------------------- da257ce4a4 | DracoOmega | 2024-11-16 00:46:46 -0330 Make mons_is_firewood() into an actor method and replace usages Firewood checks are done in many, many, many places. And many of these places want to perform that check on an actor which might not actually be a monster, leading to a common idiom like: if (targ->is_monster() && !mons_is_firewood(*targ->as_monster()) This is so common that I think being able to just call targ->is_firewood() is a lot cleaner. This commit replaces all usages of mons_is_firewood() with the new method, improves one or two comments, and additionally fixes a minor bug where Chaos slow/minipara could be chosen against monsters with stasis. -------------------------------------------------------------------------------- 74f4821936 | DracoOmega | 2024-11-16 00:46:46 -0330 Make Refrigeration *actually* count only allies for huddle bonus While I claimed to do this in 1450d63957e5a (and the reasoning stands), a misreading of the code meant that the commit did *literally nothing*. Let's try doing it properly. -------------------------------------------------------------------------------- cdf5795841 | DracoOmega | 2024-11-16 00:46:46 -0330 Use message channel to categorically ignore monster timeout messages Since that was part of the point of there being one in the first place. (And also ignore decor messages by default, too, in the rare case where someone has told themselves to run across piles of fruit) -------------------------------------------------------------------------------- 33284afee5 | DracoOmega | 2024-11-16 00:46:46 -0330 Fix enemies sometimes getting incorrectly hit twice by allied beams When allies fire a piercing beam at an enemy, and the player happens to be standing in the path of that beam (and could be harmed by it), they will cut their shot short immediately before it would hit the player. But this is done by 'rewinding' the beam as soon as they test whether it can harm the player, and code designed to allow piercing beams to hit monsters standing at the player's location (ie: Fedhas plants) allows a beam to try hitting a monster immediately after trying to affect the player. But the beam has already rewound at that point, resulting in hitting the monster in the space immediately *prior* a second time. Now try a bit harder to actually end the beam processing when we mean to. -------------------------------------------------------------------------------- cf86d80d2e | DracoOmega | 2024-11-16 00:46:46 -0330 Adjust how spell range is displayed in the spell menu Instead of being shown in the form of @---->, it now just displays an actual number. There was some recurring ambiguity among new players as to whether you were supposed to just count the dashes or include the > as well, but it was also needlessly hard to tell at a glance whether a spell was full LoS range or only *almost* LoS range (unless the player had another spell with longer range to compare it to). This change also comes with a few other improvements: -Variable range spells are now listed in the form of X/Y where X is the current range and Y is the maximum possible range. The old method used . after the > to indicate 'possible range which the player does not yet have enough power to reach', but I think this was a little non-obvious and it also did not in any way indicate that a spell had variable range if you had already reached its maximum. I think this should now be clearer. -The red coloring of monster spell ranges in xv will now properly account for the player being *too close* to be in range of Call Down Lightning and Flashing Balestra. -The player spell menu in webtiles should no longer flicker between two sizes when you switch display modes with ! -Range takes up less width in the spell menu (so something else can use it instead). -------------------------------------------------------------------------------- 6c71ebfaaa | DracoOmega | 2024-11-16 00:46:46 -0330 Actually give Shadow Puppet a summon cap The commit that added it claimed it has a cap of 3, other information sources have since claimed it has a cap of 3, and I am fairly sure I have responded to a question at some point by saying that it had a cap of 3, but it actually had no cap at all. Oops. (I guess, in practice, it's quite hard to summon more than 3 of them in a single battle anyway.) -------------------------------------------------------------------------------- fb2b16b6a3 | DracoOmega | 2024-11-16 00:46:46 -0330 Add Dithmenos shadow mimic spell for Forgecraft Shadow Turret: makes a stationary ally which repeatedly fires Shadow Shot, a basic single-target spell with full LoS range (that otherwise does much less damage than direct shadow attack spells, of course). Summon cap of 2. -------------------------------------------------------------------------------- 1f958b4f53 | DracoOmega | 2024-11-16 00:46:46 -0330 Move Animate Armour into Forgecraft, rename and tweak Saying that the spell created 'animated armour' always felt a little wierd to me given that it clearly wasn't your armour that had gotten up and started moving about (unlike with dancing weapons!). The writing tried to describe this as the 'spirit' of your armour rather than the armour itself, and I have attempted to lean a little further into that. The spell is now named Awaken Armour and explicitly draws out an 'echo' of your current armour (with some descriptions tweaked, as needed). The one current use of natural animated armour (nicolae_shop_mannequins) now no longer drop 'themselves' (which was always an unexpected interaction, given how the spell clearly doesn't animate a real object). I apologize to people who got creative with Overgrowth to snag an early dragon scales. The spell now also copies your armour in its entirety (rather than creating a plain +0 version of your armour's base type). It feels a little more fun to me to be able to apply artifact properties to your minion, and in general Animate Armour was never considered overly powerful, so some degree of buff seems fine. Inheriting plusses does mean that it is probably a fair bit more durable, so I've nudged down its base HP slightly at the same time. Finally, the armour echo now tries to spawn adjacent to the caster. (I also removed the 'dancing weapon' icon in the corner, since animated armour generally looks nothing like armour on the ground, unlike dancing weapons, and shouldn't be similarly confusable.) -------------------------------------------------------------------------------- 3cf105bb5b | DracoOmega | 2024-11-16 00:46:45 -0330 Distribute spells through new books And give Forgewright/Summoner their new starter spells. (As well as fixing up a couple cases where an earlier spell was mistakenly in 3 books (Gavotte / Simulacum) or just 1 (Grave Claw).) These are a little more provisional than usual, since I'm still hoping to heavily overhaul the spellbook system at some point in 0.33. -------------------------------------------------------------------------------- d5f8b11300 | DracoOmega | 2024-11-16 00:46:45 -0330 Don't give djinni Percussive Tempering without something to temper Technically some of the spells on this list are impossible to be offered before a level 5 spell, but it seemed worth being comprehensive in case the spell levels of any of these things change in future. -------------------------------------------------------------------------------- ff6897e465 | DracoOmega | 2024-11-16 00:46:45 -0330 Move Battlesphere into Forgecraft, tweak, rewrite backend code This commit moves Battlesphere from Level 5 Conjurations to Level 4 Conjurations/Forgecraft. I was a little less certain about this becoming Forgecraft than I was the other spells I've moved, but it does allow it to share schools with its closest relatives, Servitor and the new Rending Blade. At the same time, this adjusts the behavior of battlesphere slightly, and rewrites its code almost completely. While the refactor of ca6d514eab45b7 greatly reduced the number of situations where a battlesphere looked like it should have triggered, but did not, it didn't remove them altogether. Battlesphere's original implementation worked by co-opting normal monster movement/action code to try and coax the battlesphere into relocating itself over multiple actions until it had line-of-fire to a given target. This was quite brittle and involving an increasing amount of bespoke code and properties to try and do so intelligently. Rather than try to add *even more* to fix these issues, I've opted to use a different approach altogether. Now, when a battlesphere is looking for an alternate firing position, it calculates what spaces it could reach from its current position within 3 movement actions (accounting for what creatures are currently in the way), and if any of those are valid firing positions, it will just immediately move to that location. The battlesphere was already fast enough that 'teleporting' in this way should be visually indistinguisable from doing it the normal way, but considerably less error-prone. At the same time, I've changed the battlesphere's targeting behavior from 'pick a target at random' to 'pick the most injured target' (as calculated by the difference between its max and current hp). This should greatly increase the chance of it focusing on the target the player wants it to (or at the very least - a target it is most likely to finish off). I've also removed the effect of spellpower on duration and number of shots before disappearing. Doing low damage at low power is enough, I think, rather than doing low damage *and* only lasting for a few turns. (I've set the average number of shots per cast at around ~70 power in the old system.) Battlesphere's been a fairly lackluster spell in recent years, and moving it into side schools would probably make it even less appealing without some touch-ups, so hopefully this new version feels better to use. -------------------------------------------------------------------------------- 8729743b89 | DracoOmega | 2024-11-16 00:46:45 -0330 Add method to compute movement reachability for monsters in a given range monster_pathfind::fill_traversability() allows computing all spaces reachable by a given monster, up to a given range. This information can then be queried by monster_pathfind::is_reachable(pos). This allows seeing which spaces a given monster could or couldn't reach within X moves. I also added a boolean to allow considering actors to be opaque to movement (so that you can ask the question of "What can I reach if everything in my way remains there?") The implementation isn't really the cleanest, but it saves on reimplementing things monster_pathfind can already do. This code will be used for a subsequent Battlesphere rewrite, but might have other theoretical uses in future. -------------------------------------------------------------------------------- f64de3d7f2 | DracoOmega | 2024-11-16 00:46:45 -0330 Move Spellforged Servitor into Forgecraft and rename While I've always thought Spellforged Servitor had a nice ring to it, the name feels increasingly weird when there's now no less than 4 other "Forge [Creature]" spells. Being forged by a spell isn't a distinguishing property anymore! So now it's called Spellspark Servitor instead (and descriptions updated accordingly). Besides not being abjurable, there is no functional change. -------------------------------------------------------------------------------- bcf7d946de | DracoOmega | 2024-11-16 00:46:45 -0330 Move Hoarfrost Cannonade to Forgecraft/Ice, tweak placement very slightly The cannons can no longer place in melee range of the player and will always appear at range instead. (Also slightly remove alchemy references from the spell's descriptions.) -------------------------------------------------------------------------------- e22bf9ab36 | DracoOmega | 2024-11-16 00:46:45 -0330 Add Forgecraft school to Hellfire Mortar and adjust numbers It is now Earth/Fire/Forgecraft instead of just Earth/Fire. Since 3-school spells are quite a bit harder to cast (especially at level 7!), its numbers are generally adjusted upward. It now uses a different internal spell from bolt of magma that is functionally very similar, but with +1 range and different scaling. The reliance on monster bolt of magma was a little restrictive and caused the spell to have much poorer scaling with power than I think is desireable. (200 power mortar didn't even do 50% more damage than 50 power mortar, while the damage of many other high-level attack spells increases by nearly 200% in the same comparison.) A mortar-unique spell allows more control here. (As an incidental side-effect, Mortar HP no longer increases with spellpower, but was always generally high enough that the mortar dying from damage was rarely a real concern, so I think it's fine.) -------------------------------------------------------------------------------- a5f1cede91 | DracoOmega | 2024-11-16 00:46:44 -0330 Move Summon Blazeheart Golem into Forgecraft (with minor flavor rewrites) Besides becoming a non-abjurable construct, there should be no functional changes. -------------------------------------------------------------------------------- d6ff5ca7ac | DracoOmega | 2024-11-16 00:46:44 -0330 Move Summon Lightning Spire into Forgecraft, tweak behavior Moves Lightning Spire from summonings/air into forgecraft/air and renames. At the same time, I am trying a behavioural change in the spirit of forgecraft allies having more unique deterministic behaviors (and also to differentiate it a little further from Hoarfrost Cannonade, now that they will share schools in addition to being close in level). Instead of being a 'normal' ally that listens to your instructions about what to hit, spire now always fires its bolt at the *furthest viable hostile target* (much like how plasma beam works). If that path is blocked, it will aim at increasingly closer enemies until it finds a shot it's willing to take. It still has its 50% chance to cast per turn. (I think the 'spikiness' of this is also a good differentiator from hoarfrost's reliable shots every second turn.) -------------------------------------------------------------------------------- 31361a5066 | DracoOmega | 2024-11-16 00:46:44 -0330 New spell: Rending Blade (Level 4 Conjurations/Forgecraft) Intended as a new Reaver capstone spell, as well as a sort of 'melee counterpart' to Battlesphere. Continuing the reaver tradition, this is a strong damage conjuration with significant downsides, which supports a conjurations hybrid playstyle. Casting this spell uses *all* of the caster's remaining MP to create a magical blade that flies alongside you for a small number of turns. Whenever the caster hits with a melee attack while the spell is active, this blade will attempt to dash through a line of enemies, inflicting irresistable damage to all of them. When the blade dies or expires, the MP used to form it is returned to the player. (An earlier version just gave -Cast for the duration, but I thought it was a little more interesting if it was *possible* to restore MP during the spell's effect, and also if the amount of remaining MP provides a small power boost.) The blade will prioritize the most HD of enemies in can hit in one dash without leaving the caster's sight. If no viable target exists that turn, it will retain up to 3 charges to unleash the next time a target presents itself. (Since the blade uses the same M_MAINTAIN_RANGE behavior that Battlesphere does, which jitters a bit, it tends to find viable shots again on subsequent turns.) Hitting multiple enemies in a single attack (such as with an axe) can trigger the blade multiple times at once! This is obviously strong, but axe conjurers are such a niche thing that I think it's okay if it's theoretically especially good with them (after all, it's also especially good with quick blades.) Given that the blade *deliberately* cannot fly through the player themselves, it tends not to function well without a little space around, but can be quite strong with the proper terrain. (Reavers are not an especially weak background, although not a popular one, and anectodally, many seem to stop training conjurations after Momentum Strike. By offering a higher-level spell that continues the hybrid playstyle, it may make them feel a bit more attractive - at least, make them more likely not to ignore conjurations entirely in the long-term, in favor of melee.) -------------------------------------------------------------------------------- 9e9ac7db5e | DracoOmega | 2024-11-16 00:46:44 -0330 New spell: Phalanx Beetle (level 6 Forgecraft) This spell constructs a fast-moving ally whose mere presence increases the caster's AC while it is alive, but which has a unique behavior: it will never leave the caster's side under its own power. If the caster moves, it will follow in lockstep with them (although it can pivot around to reach enemies near you.) If forcibly separated (ie: via knockback or blinking) it will prioritize returning to your side over attacking anything else. It cannot be ordered away. Its attack is fairly unimpressive for its level, and it cannot be thrown at enemies, but it is durable and increases the caster's own durability (as well as providing a natural synergy with Fortress Blast). Intended as a generic mid-range option that can fit into almost any Forgecraft build. -------------------------------------------------------------------------------- dd785e4bd3 | DracoOmega | 2024-11-16 00:46:43 -0330 Fix Shadow Tempest skipping stationary monsters I think this was a mistake from copy-pasting Shadow Bind (which obviously does nothing useful against stationary monsters) -------------------------------------------------------------------------------- e2ea8aeea1 | DracoOmega | 2024-11-16 00:46:43 -0330 New spell: Summon Seismosaurus Egg (Level 4 Summonings/Earth) Intended as the other half of a replacement for Summoner losing Blazeheart and Lightning Spire, while trying to retain some of the dynamicism that Blazeheart added to the background. This spell summons a dinosaur egg on a random tile between 2-3 spaces away from the player. If the player sticks near that egg for several turns, to imprint upon it, *while enemies are nearby*, the egg will hatch into a very strong ally for its level. (A small heart icon will be displayed over the egg if the conditions are right for it to hatch, making it more transparent to players when things are sufficiently in range.) A seismosaurus is somewhat overstatted for level 4 (to compensate for the slowness and positioning needed to hatch one) and has the Seismic Stomp ability, which deals smite-targeted damage to several random enemies within 4 tiles of the seismosaurus. This deal only 1/3 damage to fliers, but can sometimes cause grounded enemies hit by it to stumble and miss their turn outright. They will use Stomp immediately upon hatching, and can also use it randomly thereafter. Being a smite-targeted AoE, it plays well with all sorts of allies (ie: it can shoot 'through' them) and positions you end up in. And I think it naturally gives the spell a sort of progression, where when you *first* get it, the dinosaur is very strong, but you need to put effort into holding the line with much weaker allies in order to hatch it. And then later on, when you have stronger allies, you can toss an egg out for some supplementary damage behind your higher-level summons. Initial playtesting feedback has been positive, and I think the spell is fun to use! -------------------------------------------------------------------------------- 9cda979304 | DracoOmega | 2024-11-16 00:46:43 -0330 New Spell: Fortress Blast (Level 6 Forgecraft) A deliberate melee hybrid spell to further establish Forgecraft as not *just* about making allies, but also other things conceptually related to tangible physical structure and armou Fortress Blast is a player-centered AoE attack spell whose damage scales entirely based on your AC. Casting it roots the player in place for several turns (during which they can still perform other actions), and at the end of these turns, there is a large explosion of physical force. Spellpower affects how quickly the blast charges up, but the power cap is deliberately low, since this is aimed at characters with high AC who are less likely to plausibly *reach* high power. This is aimed, to a degree, as a sort of inverse counterpart to Manifold Assault. Where that spell tends to be favored by EV characters (due in part to its spell level making it harder to cast in armour), this one is obviously aimed at AC characters. It comes with the downside of needing to anchor you in place, but can do a lot more damage-per-MP if you're facing many enemies. A spell to be added in a subsequent commit can also increase the player's AC directly, providing a natural synergy for this spell (and Animate Armour, slated to be moved to Forgecraft, naturally is boosted by similar things, creating a cohesive sub-theme) The damage scaling from AC is non-linear (ie: each point of AC is worth *more* than the last) and currently caps at ~70 AC. The damage is *quite* high with high AC, but given that it can inflict that damage at most every few turns (along with downside), I do think it needs to be at least a little high. (Formulas are, of course, subject to change from playtesting.) -------------------------------------------------------------------------------- 79a0bfb111 | DracoOmega | 2024-11-16 00:46:43 -0330 Don't override spell targeters for helpful spells, regarding the player Regardless of what targeter::valid_aim returned for the player, direction_chooser would consider the player a valid target and default to them for anything with spflag::friendly or spflag::neutral. -------------------------------------------------------------------------------- 123cb02394 | DracoOmega | 2024-11-16 00:46:43 -0330 New spell: Nazja's Percussive Tempering (Level 5 Forgecraft) Another hybrid offense/defense spell, Nazja's Percussive Tempering targets an allied creature which was created by a Forgecraft spell and applies the Tempered buff to it as well as healing it somewhat and immediately dealing AoE damage around that creature. Tempering boosts the monster's HD by 4 and also increases its melee damage by 25%. Tempering is fairly short-lived, but importantly the spell cannot be recast on an ally who is currently tempered. And since a large chunk of the spell's utility is in the damage burst (and a little in the heal), the hope is that it isn't something you auto-cast on an ally, but rather choose an appropriate time to use. A useful and flexible utility spell that naturally interacts with different forgecraft allies in different ways. -------------------------------------------------------------------------------- 5bfd77ad25 | DracoOmega | 2024-11-16 00:46:42 -0330 New Spell: Splinterfrost Shell (Level 7 Ice/Forgecraft) This spell creates 4 splinterfrost barricades in an aimable semi-circle around the caster, pushing anything currently occupying those spaces backward first, if possible. These barricades are moderately durable walls (with standard ice resists), but when destroyed will fragment into piercing ice projectiles that launch in the direction of whatever destroyed them (as long as no allies are in the way). They will melt automatically if the caster moves more than 2 tiles away from them. The spell can be used both offensively and defensively, providing breathing room against melee enemies (and conveniently moving them out of permafrost eruption's minimum range, while the barricades themselves are immune to the damage from permafrost / freezing cloud / refrigeration) and also being a meaningful source of damage themselves against enemies that can destroy them rapidly. I've been a *touch* concerned about how strong it is to be able to reliable and repeatedly push enemies out of the way with a 'wall', but lategame has many enemies who can fire through these barricades, and a level 7 dual-school that is foremost defensive probably gets a fair bit of room to be powerful. (There are some mildly weird-looking behaviors monsters currently exhibit when pathing around barricades, but nothing outright broken. I hope to fix some of these in the future.) -------------------------------------------------------------------------------- 998f96577b | DracoOmega | 2024-11-16 00:46:42 -0330 New spell: Forge Monarch Bomb (Level 6 Fire/Forgecraft) This spell summons a Monarch Bomb, which is a relatively weak ally with the ability to deploy a large number of Bomblets via its melee attack (or at range with the Launch Bomblet spell). These bomblets are mobile, but possess no attack of their own (and cannot be ordered around). However, when the player recasts the spell, all active bomblets and the monarch bomb itself will detonate, dealing half-physical/half-fire damage to all adjacent targets (and destroying themselves). This has shades of the old Forceful Dismissal spell, but in a more specific context. There's a certain mild 'push your luck' element with detonating the bombs now versus waiting for more bomblets to be deployed, and setting up and then triggering large explosions is fun! It also offers Fire magic an optonal side path that can perform better against fire-resistant targets, making what I think is an interesting option when approached from either school. -------------------------------------------------------------------------------- 5a53e7b716 | DracoOmega | 2024-11-16 00:46:42 -0330 Move warn_about_bad_targets, improve slightly This adds a parameter which can be used to exclude certain targets which cannot be harmed by the attack being warned about. (This isn't used more widely at the moment, but there are some existing uses that probably should be edited to account for resists.) Also, if the same space is affected more than once, don't confusingly claim that "Something (and 1 other bad target)" could be hit. -------------------------------------------------------------------------------- 2b47ff03c0 | DracoOmega | 2024-11-16 00:46:41 -0330 New spell: Alistair's Walking Alembic (Level 5 Forgecraft/Alchemy) This spell creates a potion-brewing golem with both offensive and supportive properties. Its melee attack vents fumes (creating short-lived poison clouds around what it punched), and after it has performed a certain number of attacks, it will finish brewing potions and distribute them. This affects up to 5 nearby allied monsters, and also the player (if they are within 3 tiles of the alembic when it finishes.) For monsters, the effect is chosen randomly among haste, might, brilliance, or heal wounds (choosing only effects that could do something for the monster in question - ie: no might on monsters with no attacks.). For players, it chooses one of haste, magic, heal wounds, might, or invisibility, at random. These effects are slightly weaker than drinking the potion directly, but otherwise count as a 'real' potion for multiple effects (ie: mummies cannot drink them, oni can get a cleave attack from drinking !hw/!magic, etc.) Now, giving the player unlimited potion effects 'for free' might seem very strong, but I believe the combination of the randomness, as well as needing to have this golem survive and attack a bunch of turns in a row before getting any effect at all, can balance this out appropriately. !haste is strong not *just* because being hasted is strong, but because you can become hasted the moment you want to and not: a ~1-in-5 chance 5-6 turns later. Also, the potion connection is, I think, good flavor to make alchemy feel more alchemy-like. A useful offensive buddy, with a unique bonus. -------------------------------------------------------------------------------- beb85e986e | DracoOmega | 2024-11-16 00:46:41 -0330 New spell: Platinum Paragon (level 9 Forgecraft) The capstone of the Forgecraft school, this spell is intended as an ally-creation spell that holds up as being worthly of level 9, while also being as different from Dragon's Call as is possible. Instead of creating a large number of short-lived, disposable, regular monsters, it creates a single unique ally that you are encouraged to keep alive (at least for a little while) and even fight beside (as opposed to maneuvering to use your dragon swarm to *prevent* enemies from being beside you.) As a single bespoke ally with modality, Paragon has a lot of things going on, but I think many of these properties flow naturally together and play in a fun and distinctive way: -Your Paragon can wield any melee weapon the player has found. (You use the Imprint Weapon ability to select this weapon, similar to how Imbue Servitor is used to select servitor spell.) Whenever you cast Paragon after this, it will spawn wielding a perfect replica of that weapon (so there's no need to carry it around in your inventory or switch to it before casting the spell). -Whenever the caster performs a normal melee action, your paragon will also perform an instant melee attack again a random enemy in its range. -While within 2 tiles of your paragon, it has a 1-in-3 chance to block any attack targeting the player. (This is aimed to further encourage the caster, who might be themselves frail to have a level 9 spell, to melee alongside their paragon with more confidence.) -The paragon builds up charge as it melees things, and when it has attained a sufficient amount, the spell can be recast to perform a powerful finisher - unleashing a weapon attack with a bonus damage multiplier again many nearby enemies, and destroying the paragon in the process. -Casting the spell itself deploys the paragon to a selected nearby location and deals modest damage via a concussive shockwave to nearby enemies (aimed at making the cycle of 'deliberately destroy paragon, replace paragon' feel better since you also get an immediate benefit to making a new one.) All together, this makes a customizable ally that can feel different from run to run (lots of exciting unrand weapons to give it!), encourages the player to get in the thick of battle themselves (it charges up the finisher faster!), and gives not just a stat-stick, but a fancy button to press as your level 9. Some numbers may still need adjusting, but early playtesting feedback has been quite positive, and I think it's a very fun spell. -------------------------------------------------------------------------------- b6ef6c3bbe | DracoOmega | 2024-11-16 00:46:41 -0330 Pull out some Gravitas and animation code into reusable functions Since these are slated to get an additional use shortly. -------------------------------------------------------------------------------- 5f7b8dfc52 | DracoOmega | 2024-11-16 00:46:41 -0330 New spell: Eringya's Surprising Crocodile (Level 4 Summonings) Intended as a Summoner starting to spell to replace the two level 4s it's about to lose to Forgewright. This spell summons a crocodile as a short-term mount beneath the caster, which performs an ambush attack and repositions the caster in a single action. This spell is cast upon a target in melee range. The summoned crocodile will perform an immediate attack against that enemy (which never misses and has bonus damage based on spellpower), and drag both it and the caster backwards. Then the caster hops off the crocodile, landing a space further back, while the crocodile remains as a normal summon. It also makes some water along the drag path. The spell cannot be recast while the crocodile is still active (so you can't perform silly chain-grabs), but it's fairly short-lived and fragile. This is intended to be a more dynamic use of summons than average, and allow some useful repositioning - leaning into crocodile's natural drag attack by making it even better at deliberately pulling enemies away from their allies to surround them with your own creatures, while also putting the crocodile between you and whatever enemy was just next to you. -------------------------------------------------------------------------------- 3d961a6350 | DracoOmega | 2024-11-16 00:46:40 -0330 New spell: Diamond Sawblades (level 7 Forgecraft) This spell creates up to 4 sawblades in the following fixed positions around the player, which deal damage to adjacent enemies each turn they are active: X...X ..... ..@.. ..... X...X (They cannot be placed in any space the player cannot see, or one with a wall or other monster.) The sawblades can be used both as AoE damage, or short-lived obstructions (though they're not terribly durable) and the unique targeting will hopefully interact with different spaces in interesting ways. (For instance, they are useless in straight corridors, but very strong in diagonal ones, and can be used both defensively and offensively in a single cast, with the proper positioning.) They are intended as a flexible and straightforward high-level single-school option. -------------------------------------------------------------------------------- 0183c6dfd6 | DracoOmega | 2024-11-16 00:46:40 -0330 New spell: Kinetic Grapnel (Level 1 Forgecraft) Given that Spike Launcher will be online for most Forgewrights by XL 2, this is a spell with a short shelf-life, but they *do* need a generally reliable XL 1 option and this is intended to be that. Kinetic Grapnel is a short-range direct-damage projectile. If it successfully does damage, it lodges a grapnel in that enemy which allows the caster's next melee attack against them to be an automatic hit with +3 slaying. Requiring a dodgeable, low-damage projectile to do damage should hopefully limit its long-term usefulness as an accuracy boost (and the flat slaying falls off quickly), but this forefronts some of the 'melee hybrid' properties of Forgecraft from XL 1 while offering a straightforward tool before more positional ones come online. (The spell tiles at the moment don't look very grapnel-like, but this was at least the 3rd level 1 spell I tried, so we'll just consider them a placeholder for now.) -------------------------------------------------------------------------------- 0e8916362e | DracoOmega | 2024-11-16 00:46:40 -0330 New spell: Construct Spike Launcher (Level 2 Forgecraft) Another Forgewright starter spell, this temporarily transforms a random adjacent rock wall into a 'trap'/turret that repeatedly attacks a random adjacent enemy each turn. If the caster moves more than 2 tiles away from this launcher, it will disappear prematurely. The idea here was to explore creating an 'ally' that couldn't be used as an earlygame corridor swap or obstruction for enemies (which Summoner is famously good at). In practice, it plays a little like making a single-tile and single-target Frozen Ramparts, which allows a bit more movement while active (and might, in fact, require the caster to move immediately in order to position an enemy in the launcher's range). But that is a popular and successful spell, and I feel this is more than sufficiently distinct from it. (I would have been happy to have this spell by targeted as Forgewright's level 1 spell, but its terrain-dependence means that some entry vaults simply will not allow the player to use it at all in their initial battles and that feels unacceptable.) -------------------------------------------------------------------------------- 524258f53f | DracoOmega | 2024-11-16 00:46:40 -0330 New spell: Launch Clockwork Bee (level 3 Forgecraft) A starter spell for Forgewrights (and their first that actually places a monster on the field), this creates a fast and powerful-for-its-level mechanical bee, with a number of specific limitations. Casting the spell requires a hostile target to point it at, and then winding the bee's clockwork requires channelling it for several turns before it launches. The bee will fixate its attacks on the selected target while it lives (similar to how Haunt and Soul Splinter work), but can perform only a limited number of attacks before running out of power. When the bee runs out of power, it falls dormant to the ground. The player can wind it back up again by attempting to move into its tile, which will refill it with energy and even heal it a little (and is a lot faster than channelling 4 turns to launch a new one). The idea is that the slow deployment (that cannot be done pre-battle), combined with the strong incentive to actually poke your bee when it falls down, will make playing with this ally a distinctive experience. And its raw stats will make it feel good despite its limitations. (It even comes with rF+/rElec+ to make it play a little better with Forgewright's level 4 spells.) -------------------------------------------------------------------------------- 08c86277a0 | DracoOmega | 2024-11-16 00:46:40 -0330 Unify handle of channelled spells Searing Ray, Flame Wave, and Maxwell's Capacitive Coupling all had a bunch of common behavior (ie: ending on movement or becoming silenced during the casting of the spell) that each spell implemented individually - and sometimes in slightly different ways from each other. This is an attempt to provide common functions to handle these shared behaviors in a unified way (and make it easier to add a 4th such spell without more code duplication). This doesn't clean up all props used by these spells the way the old code did, but that shouldn't matter - the props will always be set to relevant values when the spell is cast, and ignored when the spell is not active. This commit also contains save compat code to handle anyone who happened to have saved in the middle of channelling one of these spells. -------------------------------------------------------------------------------- ce823060fa | DracoOmega | 2024-11-16 00:46:40 -0330 Make quote text more visually separated from mechanical text This adds a visual divider between mechanical descriptive text and flavor text for most non-monster UI (monsters already have it on a seperate tab), as well as drawing said text in a darker color. It would be nice if there was some color between grey and darkgrey here, and it would be *especially* nice if I could actually center the divider, but as far as I can tell, a bunch of places that construct these descriptions do not yet know the width of the popup they will be placed in, so left-justified it is for now. (While I feel many of the real-world quotes Crawl currently uses are dubious or added out of a sense of completionism, I think the same space could be used for ancillary flavor text or *in-world* quotes instead, and plan to use it for such for at least a few forthcoming spells. More could theoretically be done over time.) -------------------------------------------------------------------------------- 382a69801f | DracoOmega | 2024-11-16 00:46:40 -0330 Allow specifying weapon renames in job-data, give Forgewrights hammers This is an ugly solution and maybe I should just canonize hammers as a non-generating item again. -------------------------------------------------------------------------------- 845a3d3791 | DracoOmega | 2024-11-16 00:46:40 -0330 Implement backbone of new spell school: Forgecraft Forgecraft is about making tangible physical constructs and reinforcing them in various ways. It contains many spells which create things like cannons, golems, or magical weapons, as well as a variety of supportive utility. This school is not intended to address a specific 'flaw' in Crawl at the moment, but rather because I think it would be a fun new thing and allow for even more cross-school diversity. I believe there is still a lot of untapped potential in ally-creation spells, but Summonings was already one of the most populated schools in the game. Necromancy shows that other schools with an ally+utility focus can work well in Crawl, and this is intended to be a new one of such - landing somewhere between the two in terms of ally/utility balance. Compared to Summonings, Forgecraft allies tend to have more specific unique behaviors, and either operate in a limited way or are triggered based on the caster's own actions (ie: as Battlesphere is). Forgecraft is also aimed with hybrid play in mind from the start - with multiple spells that benefit from melee cooperation in specific ways that Summoning spells don't or which are directly augmented by melee ability. Multiple existing spells will be moved into Forgecraft (with some adjustments), as well as many new spells across subsequent commits. This commit adds the basic infrastructure of the Forgecraft skill, as well as icons, descriptions, Forgecraft enhancer artprop, Ru sac skill, randbook words, and so forth, as well as a placeholder for a new mage background, Forgewright. (Because of strict skill enum grouping among spell skills (ie: all of them have to be contiguous), this repurposes the SK_TRANSMUTATIONS enum to become SK_FORGECRAFT. But, after examining this, I think it should be basically safe.) Aptitudes: Mountain Dwarf: +2 (but now have -2 Summoning) Coglin: +2 Yellow Draconian: +2 (they were the only colour with no aptitude bonus, and this seemed reasonably connected, since Alchemy was already used.) Demonspawn: -1 Felid: -1 Ghoul: -2 Minotaur: -2 Tengu: -2 (to contrast with their +2 summoning, as an inverse of MD) In all other cases, species have the same Forgecraft apt as they had Summonings. Forgecraft miscasts cause self-corrosion - less because acid damage is a theme in Forgecraft spells, and more that operating upon the structural integrity of physical objects is their domain, and making said structure *worse* feels like a plausible failure state to performing them incorrectly. -------------------------------------------------------------------------------- 0b821916ea | gammafunk | 2024-11-15 15:49:54 -0600 A clua function to examine traps Traps can currently mostly be described by view.feature_at() by parsing the resulting feature name. However "mechanical" traps like net and pressure plate use the same terrain type, so there's no way to differentiate those. Furthermore one has to manual parse the internal feature name. This commit adds a `view.trap_at(x, y)` function that returns a base trap name if a trap exists at (x,y), otherwise returning nil. -------------------------------------------------------------------------------- 1838bd627c | Implojin | 2024-11-15 15:08:45 -0600 Fix crystallizing bolt fragility ordering (Flugkiller, Ge0ff) Crystallizing beams were previously applying fragile before they calculated their initial hit damage, meaning that their listed in-game description significantly undersold their max damage, which was misleading and surprising to players. Here we tone down the initial hit damage of this beam significantly by fixing it to apply fragile after the hit when cast on the player, similar to our handling of BEAM_ACID corrosion. TODO: Should any other beam effects also be reordered to apply after the hit? -------------------------------------------------------------------------------- 559d583a2e | DracoOmega | 2024-11-14 17:43:19 -0330 Tweak foxfire monster description The part about it being able to injure friendlies hasn't been true in years. -------------------------------------------------------------------------------- d02de9489b | DracoOmega | 2024-11-14 17:43:18 -0330 Don't let foxfires drag around enemies who cannot move Due to a misordering of checks in _mons_can_displace, monsters were able to swap with a hostile foxfire even if they were bound, paralyzed, caught in a net, or several other things. This had the apparent effect of looking like foxfires were 'pulling' this enemy towards them sometimes, as they hit it. The whole 'enemies can freely swap into hostile foxfires' thing is a little weird when the player cannot do anything of the sort. I guess the idea was to prevent them being used to body-block enemies (since instead of wasting a turn swinging at the foxfire, the monster will still be able to step forward where they wanted to go), and removing this *would* be an earlygame buff to the spell. But I wonder if the player should also be unobstructed by them, since marshlight health is set so high that you cannot practically injure them anyway. A question for another day... -------------------------------------------------------------------------------- 4d9b5d05aa | DracoOmega | 2024-11-14 17:43:18 -0330 Don't have hostile marshlights sometimes fly in the wrong direction Or rather: despite being 'projectiles' shot by a will-o-wisp, marshlights could fail to even notice the player after spawning and wander away while looking confused (especially if the player had high stealth.) Instead, have hostile foxfires simply inherit the caster's foe. -------------------------------------------------------------------------------- 6786cf231f | DracoOmega | 2024-11-14 17:43:18 -0330 Set MG_AUTOFOE targets upon monster spawn, instead of later This should hopefully make the process slightly less brittle by *immediately* setting an MG_AUTOFOE monster who finds a foe to BEH_SEEK instead of relying on it happening later. (This might render the previous commit unnecessary, but it might still be relevant for homing in on a target only notice *after* spawn.) -------------------------------------------------------------------------------- 80d639dd4d | DracoOmega | 2024-11-14 17:43:18 -0330 Try to prevent foxfires from sometimes failing to move towards enemies If the player cast foxfire with the only hostile targets at the edge of their vision, it was possible for some foxfires to spawn too far away from this enemy to see it themselves. Crawl generally handles these situations by using the player's vision to pick foes for summons, but for exploding allies *in particular*, their target would not be properly set on spawn, since this seems to be done via an ME_ALERT event. This meant that there was a small chance that the foxfires you spawned would just run off in a random direction and disappear, despite there being an obvious target for them. Removing the check this commit touches altogether causes foxfires to cluster nicely next to the player and follow them around if no enemies are in sight, allowing you to 'pre-fire' a bunch of them in advance of an incoming enemy, which I'm not sure is great gameplay for this spell. But this smaller change seems to at least *mostly* fix the aforementioned issue (even if it feels like a bit of a band-aid). -------------------------------------------------------------------------------- 6bca15cbc9 | DracoOmega | 2024-11-14 17:43:17 -0330 Re-enable certain animations on webtiles after 10 years These were disabled by c562a60e928ebbb . It's unclear what technical issue might have caused them not to function properly at the time, but they seem to work without issue now, and it seems a shame for webtiles players not to have the fancy banishment entrance animation. (Also, without it, there were complaints that the Xom bazaar entrance was jarringly abrupt.) -------------------------------------------------------------------------------- be89f894c6 | Implojin | 2024-11-14 10:02:18 -0600 Fix a purple draconian Ru sac will crash https://underhound.eu/crawl/morgue/ZingZang1235/crash-ZingZang1235-20241112-1840 40.txt What happened here was that first, the player took Ru sacrifice will, granting an innate MUT_WEAK_WILLED. Then, at XL7, they became a purple draconian, and the levelup mutation code tried to grant them an innate MUT_STRONG_WILLED. This caused the loop in perma_mutate() to assert, because there was an implicit assumption there that we wouldn't try to grant conflicting innate mutations. To workaround this, here we prevent granting a species mutation on levelup (!) if a prior conflicting innate mutation exists. This really shouldn't be happening, but as we've seen, continued expansion of Ru sacrifices and species mutations (and now Makhleb marks) over time makes it increasingly likely that someone will inadvertently add conflicting innate muts which will need to be handled. These conditions could have theoretically triggered an assert for a long time, but as far as I can tell, the conditions to actually trigger this bug were introduced in 02fa12cfa58b when purple Dr gained strong-willed. This commit therefore shouldn't need to be backported further than 0.32. I've also added an explicit assert here to maybe save some future devtime in tracking this down, if it reoccurs through an alternate (non-levelup) call to perma_mutate() in the future. -------------------------------------------------------------------------------- 37b12fa2a3 | Implojin | 2024-11-14 09:00:36 -0600 Fix two clua make api errors This should once again be working properly. Would be nice to get doc.dcss.io updated at some point. -------------------------------------------------------------------------------- 4d20f59752 | Implojin | 2024-11-13 09:00:43 -0600 Dedup invocations manual acquirement (Darby) Here we dedup some code that's being checked in invo_skill(), and also permit invocations manual acquirement under GOD_NO_GOD with the reasoning that this might affect future god choice. We also block this acquirement for demigods, as it will never be useful for them. -------------------------------------------------------------------------------- 661e094aa2 | Implojin | 2024-11-13 03:47:39 -0600 feat: Add player torment immunity info to clua Here we expose player torment immunity as a clua function, you.torment_immune(). Players have occasionally asked for this info to become available in clua, so here it is. Internally, this just wraps player::res_torment(). Our C++ handling of the various torment-affecting statuses is mildly messy, but I'm not touching any of that here. -------------------------------------------------------------------------------- a8252ba838 | regret-index | 2024-11-13 01:53:01 -0330 Some more new specific spell effect tiles A bunch of these were produced as side-effects or add-ons for impending Forgecraft spells that can also just be added in advance for other spell effects. In particular, I'd like to make partially-resisted blasts more visually distinguished from regular blasts in general, and this should be a reasonable start; splitting off Flash Freeze and Chain Lightning would be next if I had ideas for either. Sources: * Wand of Warping's blast: A CC0 slash vfx by Cethiel. * Iceblast and Seracfall and Glaciate: Denzi's old LCS icon. * Magma zaps and Fire Storm: Denzi's old zap effects and lava tiles. (I'd like to reorganize dc-misc.txt entirely and make tileidx_bolt solely fall on spell sources rather than colour + string matching, but I'll wait until after Forgecraft lands to slightly reduce the number of merge conflicts, since it's not greatly pressing to do either.) -------------------------------------------------------------------------------- 6419177204 | Implojin | 2024-11-12 09:43:09 -0600 Add Lici to the credits Thanks Lici! -------------------------------------------------------------------------------- c977fbfc18 | Implojin | 2024-11-12 09:25:31 -0600 Remove some obsolete Ru code Following e16e337a13, SIZE_SMALL species can now use staves one-handed. -------------------------------------------------------------------------------- e16e337a13 | LiciTheCrawler | 2024-11-12 09:20:50 -0600 1h enhancer staves for small species Enhancer staves are currently two handed for Ko and Sp. I feel like it mostly catches people off guard and doesn't matter much as far as their power level goes. It might be worth taking a look at other stuff since it feels like there is little reason behind what is two and what is one handed for small species. -------------------------------------------------------------------------------- 3712c6d7f1 | David Lawrence Ramsey | 2024-11-11 08:09:48 -0600 Add another mythical creature to artefacts. -------------------------------------------------------------------------------- fd16a8b4c0 | Nikolai Lavsky | 2024-11-10 16:49:53 +0300 text: update the description of Bolt of Light This wand spell doesn't confuse the player anymore. -------------------------------------------------------------------------------- 6a9379c173 | Aliscans | 2024-11-10 12:24:04 +0000 Use more nouns when a boulder pushes something into the unknown. Brom's Barrelling Boulder can push monsters into terrain you haven't seen. This created a message such as " Your boulder crushes the orc against and falls apart!" as feature_description_at() returns an empty string for unknown terrain. Replace the empty string with "something" for that message. -------------------------------------------------------------------------------- 75134b2f13 | gammafunk | 2024-11-09 13:03:51 -0600 Fix the CAO build by using std::set::insert() It seems that CAO's STL doesn't support std::set::emplace(). -------------------------------------------------------------------------------- f801aa8b2f | gammafunk | 2024-11-09 02:04:32 -0600 Fix mapstat/objstat initialization issues This commit fixes a crash due to mapstat/objstat not resetting seen unrands between iterations. Once all 8 octopus king rings had been generated from previous iterations, the first iteration that attempted to generate another octopus king ring would cause a crash. Even if the crash didn't happen, objstat wasn't generating unrands correctly across iterations. To fix this, I've made mapstat/objstat use a centralised dgn_reset_player_data(), which is a function formerly called dgn_flush_map_memory() that was used by lua tests. This function covered all resets mapstat/objstat was already doing as well as those it was missing. It was missing one reset for item sets, which I've added. Use of dgn_reset_player_data() reduces the number of places where we have duplicate player data reset code from three to two; hopefully at some point we can reduce this to one. Additionally for mapstat/objstat, we call initial_dungeon_setup() to get a more centralised and complete initialisation of dungeon setup that includes setting up Ecumenical Temple maps. I've also rename the dlua function dgn.clear_data() to dgn.clear_persistant_data() for clarity and consistency with another related dlua function. -------------------------------------------------------------------------------- 0d2c7b62eb | Nikolai Lavsky | 2024-11-08 15:34:55 +0300 text: update the description of Trog's wizardly items conduct Troglodytes can safely use pain-branded weapons now, but a wizardly item like the sphere of Battle will get them into trouble. -------------------------------------------------------------------------------- 9556e82baa | Nikolai Lavsky | 2024-11-08 13:19:26 +0300 fix: don't let pain weapons enable Necromancy training under Trog Even though followers of Trog can use pain branded weapons since 9c3d1c461, they get no benefit from training Necromancy. So training this skill is not only harmful, but also useless for them. -------------------------------------------------------------------------------- f847e8a4cf | David Lawrence Ramsey | 2024-11-08 01:24:37 -0600 Unbrace. -------------------------------------------------------------------------------- 832354d22e | David Lawrence Ramsey | 2024-11-08 01:20:22 -0600 Fix missing message when all gems are collected. It wasn't properly accounting for gems in branches that weren't generated in a given game (Swamp, Shoals, Snake Pit, Spider's Nest). -------------------------------------------------------------------------------- c96b193c27 | brandon s allbery kf8nh | 2024-11-05 19:17:29 -0600 work around crash in actor::knockback https://cbro.berotato.org/morgue/sjaakdevlaming/crash-sjaakdevlaming-20241006-01 4359.txt Passive retaliation killed the caster of a force lance before knockback could occur; since the caster's position was long gone by the time actor::knockback finally got called, there is no position to knockback away from any more, so just return false. [Committer's notes: DracoOmega mentioned a preference for trying to preserve knockback direction here even if the knockback agent was dead, but as that commit hasn't yet happened, I'm merging this, since it should fix a recurring segfault. Closes #4077.] -------------------------------------------------------------------------------- 559140af29 | David Lawrence Ramsey | 2024-11-04 08:09:13 -0600 Reword Brilliance's description. So that it only refers to Yredelemnul by name, as is done elsewhere. -------------------------------------------------------------------------------- 2694494baf | Nikolai Lavsky | 2024-11-04 15:03:42 +0300 fix: adjust conditions for activating skill training (dilly) Currently, the activation of skill training has a few false positives and false negatives: * Artefact rings and amulets with +Blink/+Inv don't activate training of Evocations. * Weapons and staves with evocable abilities enable training of Evocations even if you can't use such items. E.g., carrying an artefact GSC with +Blink does that even if you're a kobold or felid. * Artefact talismans with +Blink don't activate Evocations training. * An active talisman doesn't enable relevant skills unless you have it in your inventory. So evoking a talisman from the ground doesn't activate training of Shapeshifting. * Shattering a cursed item under Ash doesn't deactivate training of corresponding skills. This commit fixes that and refactors the relevant code a bit. Thanks to dilly for reporting this! -------------------------------------------------------------------------------- 381ce9d8e6 | regret-index | 2024-11-02 21:28:10 -0230 Don't display doubled vigour fading messages out-of-los (Implojin) -------------------------------------------------------------------------------- 4b1f6b956e | David Lawrence Ramsey | 2024-10-30 19:14:38 -0500 Fix typo. -------------------------------------------------------------------------------- b28a76aa2d | Nikolai Lavsky | 2024-10-30 23:31:58 +0300 refactor: tweak some unrand staves-related code Both UNRAND_ASMODEUS and UNRAND_DISPATER are no longer staves. Also, the former has a passive effect now, which doesn't depend on Evocations. -------------------------------------------------------------------------------- 7c11dcb7fa | regret-index | 2024-10-30 17:55:22 -0230 New Xom action: light webs on fire On one hand, it's what a lot of games that aren't Crawl would allow the player to do anyway, and Xom already has a noticeably fiery action. On the other hand, the idea that in the entirety of Crawl, that only Xom can rarely decide to do this, is probably funny enough in and of itself. Much like Snakes to Sticks, this is meant to provide a Xom action that changes according to the branches one gets in a game- and somewhat usefully, there's only two monsters in Spider's Nest with any fire resistance. Unlike Snakes to Sticks, this comes with a fair bit less complexity- it just removes all webs in sight (and frees anybody stuck in a web), then creates fire clouds where those webs were. It provides a little more ease of movement for the branch in a flavourful fashion without being too intrusive, and continues the trend of Xom uniquely warping the Dungeon's terrain on a whim. -------------------------------------------------------------------------------- 8dadf6a4fb | David Lawrence Ramsey | 2024-10-30 13:04:49 -0500 Add missing Divine Shield status description. -------------------------------------------------------------------------------- 8d75f24163 | Sean Dewar | 2024-10-29 19:10:16 -0500 Add missing space to Horror status light text Makes it consistent with other such status light texts, and should fix the WebTiles hover tooltip showing "No description found" despite a correct description existing in `dat/descript/status.txt:458` (though I couldn't locally test that; assumed from looking near `tileweb.cc:1213` and `webserver/game_data/static/player.js:447`). -------------------------------------------------------------------------------- 14434f1371 | Implojin | 2024-10-29 12:45:07 -0500 Add adelrune to the credits -------------------------------------------------------------------------------- 10d9a8409e | guillaume | 2024-10-29 12:06:25 -0500 Apply location effects to flank and swoop Before this commit, flank and swoop attack flavours would not trigger traps and trap-like effects like sigil of binding when moving the monster. I haven't found an issue for this but I stumbled upon that bug while feeling clever about a ufetubus getting sigil'ed. The ufetubus didn't get sigiled as I expected. Here we also let sigil of binding prevent monsters from flanking or swooping: without this change, adjacent bound ufetubui would still be able to flank the player. [Committer's notes: Squashed. Edited commit message. Closes #4101.] -------------------------------------------------------------------------------- 5f200facdd | regret-index | 2024-10-28 18:15:47 -0230 Minor vault review, mostly aesthetics edition Worthy of note: * Vaults entry vaults now consistently all don't take up the large vault slot on the floor, so late D has more odds to place more interesting vaults to thus stand out a little bit more to justify itself. * wizlab_eringya has grass floor tiles again, as was accidentally removed in 5f48996. * lightli_orcish_oven is downweighted in V, since vaults_rooms are used substantially more thoroughly than otherwise and we've gotten plenty of vaults for V since 831329d. * nicolae_yak_garden has been moved from an incredibly deep depth (originally meant to be half way through Lair, now pushed upwards as Lair has picked up more threat) and has a Crypt version to use the old lich garden flavour when it was in Zot before 8ac13c1 moved it to Forest (followed by it eventually moving it to Lair). * serial_glass now has a 1/4 chance when placing in Depths, Elf, or Crypt to use different (but still reserved) tile colourations, to make it a little nicer seeming later on. This also makes a handful of generic glass vaults sometimes use those different colours, but honestly, it's fine to throw around more tile changes visuals-wise compared to a lot of other accumulated vaultmaking sins. * "you.depth_fraction() < 1" checks in vaults for being on floors before the end of a branch have been replaced with checks for "you.depth() ~= dgn.br_depth(you.branch())", which is longer but actually directly states its usage intent and makes lua usage more consistent for future guide-writing purposes. -------------------------------------------------------------------------------- 2e8f5e9b4e | DracoOmega | 2024-10-26 04:51:29 -0230 Fix monsters sometimes following the player into Duels (particleface) MF_TAKING_STAIRS is set on nearby monsters when the player starts to take a stair. This flag is used at the end of the stair delay to determine what monsters are eligable to follow. It is cleared from non-following monsters when the player leaves the floor, but was *not* cleared when the player's attempt to take the stairs was interrupted (eg: by constriction, trampling, etc.) Oka's Duel ability enters the arena via code that handles normal stair transitions. It does not *set* the MF_TAKING_STAIRS flag, but it still respects it on any monsters which already had it. Thus it was possible, if the player took the stairs, was interrupted, and then used Duel, to pull in all the monsters that *would* have followed them across the stairs into the Duel. This was a rather mysterious bug to deduce and I'm still not 100% convinced this solves all instances of Duel stowaways, but it does solve at least a solid chunk of them. -------------------------------------------------------------------------------- 9f708d3ed5 | DracoOmega | 2024-10-26 04:51:23 -0230 Apply some attack flavours against dead monsters Monster attack flavour handling was skipped if the initial hit killed a monster's target. Most of the time this was sensible (no point in freezing something that is already dead!), but a handful of attack flavours had effects that reached beyond just the target they were attacking. For example: -Broodmothers/Obsidian Bats couldn't summon things off killing blows -AF_VAMPIRIC monsters couldn't drain HP from killing blows (notably: the vampiric weapon brand *does* work on killing blows. -Shadowghasts don't lose their invisibility on shadowstabs that kill their target (allowing them to reuse it immediately) -AF_SWARM, AF_BLOODZERK, AF_BLINK similarly don't work properly. This commit changes a handful of such attack flavours to work even if the defender is dead. -------------------------------------------------------------------------------- 1faad6508c | tuohy | 2024-10-25 23:36:33 -0700 correct period to comma in wand of light description -------------------------------------------------------------------------------- 1108719ceb | regret-index | 2024-10-24 21:59:46 -0230 Reorganize dc-wall.txt This file is a complete mess, depositing branch walls all over the place and with two awkward divisions of intermingled rock and stone tiles before an end point of glass / crystal / metal splits. This shouldn't have any visible effects in-game, but it should make adding new wall tiles reasonably more consistent through ordering and sectioning. Sections-wise, everything has been split into: * The default wall tiles (+ colour variations) for each main wall type, * then branch tiles according to their rough depth, * then portal tiles, * then vault tiles. This also consistently puts features in those given sections into split-ups of rock, then stone, then other features, rather than mixing the former two. It also adds comments over tiles for branches and portals whose tile file names don't contain their given location in their name. Altogether, this should hopefully significantlly help keep the file more organized and help others look up tiles' places and uses for vault deployment. -------------------------------------------------------------------------------- 6879795947 | regret-index | 2024-10-24 21:59:46 -0230 New Makhleb Mark invocation icons (Sastreii) Undeniably striking art, each of them. -------------------------------------------------------------------------------- b0ae30da48 | regret-index | 2024-10-24 21:59:45 -0230 Adjust Xom polymorph checks (Mike) 5cebcaf adding in a condition to avoid polymorphing super early bats over arrival / altar vault liquids also accidentally screwed up the logic checks to properly exclude firewood, the non-living, or the undead as long as one was above XL 3. This has been fixed and tweaked upwards to require being above XL 4, also preventing Xom from polymorphing regular firewood plants and fungi entirely. Xom could previously still polymorph early oklob plants into thorn hunters or starflowers or shambling mangroves, though, (and could make sleepcaps turn into ballistomycetes to sporulate with extremely little warning), which is now also softly excluded from completely destroying early chaos knights (by refusing to polymorph plant holiness monsters period unless one's above XL 8). -------------------------------------------------------------------------------- 26535046ea | regret-index | 2024-10-24 21:59:45 -0230 Place a missing midnight gem (#4097) Accidentally broken in ce7c55b. My apologies. -------------------------------------------------------------------------------- e21b1ddef6 | regret-index | 2024-10-24 21:59:45 -0230 A variety of remixed extended tiles All of these branches lacked their own unique tile appearances beyond a few recolours of default tiles. With the bulk of extended running heavily off of theme and novelty more than about replayable variety, it helps Pan and the Hells each to have their own unique tiles for both the sake of external vault flavour and for the flavour of each of those branches. (I also have some ideas and work done on new Zot tiles in this capacity, but it required each branch to technically have its own tiles first.) * Pandemonium stone: A mix of Denzi's wall_relief, wall_bars, and Porkchop's stone_dark walls recolouring Denzi's stone_grey walls. * Mnoleg stone variation: A mix of Denzi's wall_relief, wall_bars, and unrecognizably-warped old very ugly thing tile. * Gloorx Vloq stone: A mix of ontoclasm's Crypt metal, plus Sastreii's Snake stone and Depths vault floors. * Lom Lobon crystal: A combination of heavily edited CC0 art by NettySvit and cynicmusic. * Cerebov metal: A mix of Heavily edited CC0 art by Surt and unrecognizably-warped balrug tiles by Sastreii. * Gehenna stone: A mix of ontoclasm's Labyrinth stone and unrecognizably-warped pit fiend tiles by Denzi. This also comes with some minor adjustments to a number of vaults to deploy these tiles a bit more (for various demonic contexts), and to avoid using them in holy_pan while that's still around. Should be a little easier to make Pan decor any visually interesting, at least. -------------------------------------------------------------------------------- d854694f7a | Kate | 2024-10-24 22:22:23 +0100 Remove a speech line -------------------------------------------------------------------------------- bacc2b0399 | Kate | 2024-10-24 22:22:10 +0100 Adjust some more Yredelemnul messages To properly refer to Yredelemnul only by name. -------------------------------------------------------------------------------- 48f6307ce2 | Kate | 2024-10-24 22:12:08 +0100 Clarify some Yredelmnul ability descriptions -------------------------------------------------------------------------------- 41421e2eb3 | Nikolai Lavsky | 2024-10-24 16:21:14 +0300 text: tweak a few more descriptions To match the "Does X" format. Also, remove a stray space. -------------------------------------------------------------------------------- f2f3612d91 | Kate | 2024-10-24 00:33:11 +0100 Adjust some god descriptions To match the other descriptions in referring to the player as "the worshipper", "the follower" etc, rather than directly as "you". -------------------------------------------------------------------------------- 9ae0b0c6c5 | Kate | 2024-10-24 00:29:17 +0100 Adjust some ability descriptions To match the format of other abilities ("Does x" rather than "Do x"). -------------------------------------------------------------------------------- c4cfdf539c | Kate | 2024-10-24 00:25:46 +0100 Reword some god messages and descriptions By convention, Crawl gods aren't gendered, and they are referred to directly by name only (not by singular they pronouns). Adjust some speech lines, descriptions and other messages to match this. -------------------------------------------------------------------------------- e5f5f5be5e | Kate | 2024-10-23 01:14:20 +0100 Fix Ignition exploding on projectiles -------------------------------------------------------------------------------- 2f91ea3cd2 | Kate | 2024-10-22 23:17:35 +0100 Display Imbue Servitor's delay on the ability menu -------------------------------------------------------------------------------- 361589c4d2 | Kate | 2024-10-22 18:02:12 +0100 Fix Ash bondage not updating with slot-blocking muts Bondage level was rechecked if an equipped piece of equipment was forced off due to a mutation, but not if you didn't have anything equipped in that slot already. However, it should still be rechecked in those cases because piety scales based on the number of available slots (so if, for example, a player has every slot filled except one, and then that uncursed slot is blocked by a mutation, they should then reach max piety). -------------------------------------------------------------------------------- d558c92145 | Kate | 2024-10-22 18:02:04 +0100 Australianise some spelling And fix a typo. -------------------------------------------------------------------------------- 6938ffb21a | Kate | 2024-10-22 16:30:54 +0100 Fix some Foxfire messaging Prevents foxfires from printing "Your foxfire is destroyed!" messages when hitting something, and correctly uses their timeout message on expiry. -------------------------------------------------------------------------------- 6727bf9f3c | Nikolai Lavsky | 2024-10-22 17:58:03 +0300 feat: make miasma-breathing monsters less picky about their targets There doesn't seem to be one explicit and consistent policy for player resists affecting monster AI, but most cloud spells don't check even species-level resistances. A catoblepas would happily breathe calcifying dust at a gargoyle or djinni, swamp dragons don't mind breathing poison at a mummy, having poison resistance or even poison immunity doesn't affect swamp drakes' AI too, and only death drakes absolutely refuse to waste turns breathing miasma at anyone with rMiasma. This includes not only mummies, ghouls, and bloodless vampires, but also players who wear the Cigotuvi's embrace and players in statue, storm, death, or wisp form. Death drakes share this spell with a few extended monsters, so this commit makes them all ignore rMiasma when casting Miasma Breath or Death Rattle. -------------------------------------------------------------------------------- a0fd5bc31a | Implojin | 2024-10-21 19:49:30 -0500 docs: deprecate some mantis links Players haven't been able to create accounts on mantis for many years, it doesn't seem helpful to continue to link mantis in our in-game FAQ. I've also updated a few links here to our currently active community feedback locations: github issues, github PRs, and the roguelikes discord. -------------------------------------------------------------------------------- 90227b9278 | DracoOmega | 2024-10-19 12:59:53 -0230 Don't have inner flame monsters explode on timeout (dilly) While this is appropriate behavior for things like ball lightning, inner flamed summons that expire should just disappear quietly. -------------------------------------------------------------------------------- 3d4140c9fd | regret-index | 2024-10-18 23:59:00 -0230 New requested monster spell icons (pianoman523) Spells that get new icons: Blink Allies Away, Blink Allies Encircling, Dimensional Anchor, Flash Freeze, Mesmerize, Resonance Strike, Vitrify, and Vitrifying Gaze. Most of these have come with some edits and tweaks to the initial submission. The Blink Allies [Encircling | Away] icons also uses the old ally heart icon drawn by ontoclasm, and the Resonance Strike icons also uses the Leda's Unmaking tile by Sastreii. (Also, removed an excess placeholder Hoarfrost Cannonade tile left in a different folder for now.) -------------------------------------------------------------------------------- de4f08d9b4 | regret-index | 2024-10-18 23:32:31 -0230 Some more preliminary tiles, triton edition Composited from other tiles to fulfill differentiating the large number of absent mutation and spell icons, as is usual: * Mertail mutation: ontoclasm's mermaid statue. * Siren Song, Avatar Song: CanOfWorms' Fugue of the Fallen icon, ontoclasm's merfolk siren / merfolk avatar water tiles and dancing weapon status icon. -------------------------------------------------------------------------------- 790fefb5c0 | regret-index | 2024-10-18 18:08:17 -0230 Don't try to place blind dancing weapons (#4089) nicolae_gammafunk_elf_defective_weapons_storage tries to make one set of defective dancing weapons blind, but nonliving creatures can't be blinded in the first place, losing the defective weapon flavour that excuses a runed door box from placing ~8 or more dancing weapons. (The vault's own comments mention trying out confusion instead, but this will just make them kill everything else in the vault.) To fit the defect theme of being slow or covered in acid, and to follow the bug report's suggestion, they are now vitrified instead so they will effectively die much faster. Closes #4089. -------------------------------------------------------------------------------- 6dbb4b3ddd | regret-index | 2024-10-18 17:41:20 -0230 Add more to the Abyss feature sanitizing list This list is used for when banishment changes one's immediate terrain surroundings from the prior branch into the Abyss. (Honestly, we could probably do with more of the reverse of Abyss corruption here and have the floor tiles of given old branches show up in the Abyss both on immediate banishment and in the floor copying so people can more easily notice that the Abyss is mirroring places besides Swamp.) * Decorative floors rely on vault redefinitions and thus show up as question marks asking for a bug report otherwise. They now are just replaced with plain floor instead for now. * The Orb Dais was duplicated by banishment (and is itself still otherwise unchanging in the process), and now is replaced by a statue instead. * Runed doors not set by vaults (and instead by the Abyss copying seen and generated floors) tend to not actually lead to anywhere or serve their purpose at all, which is flavourful but also confusing for the heavy usage of runed doors as a highly mechanical matter. They now are replaced by regular clear closed doors instead. (Abyss recently got new flavour with the eye fountains, anyway.) -------------------------------------------------------------------------------- 803e90bfac | regret-index | 2024-10-18 17:14:10 -0230 New leather armour tiles (Sastreii) Good updates for all of the base leather armour tiles (mundane, good_item, and randart), as well as a new tile for Cigotuvi's Embrace. (I also moved the most easily reusable old variation to the unused/armour directory and deleted some quite old tiles in exchange.) -------------------------------------------------------------------------------- 551f775c75 | DracoOmega | 2024-10-18 15:09:12 -0230 Fix Gavotte not being aimable at the level boundary (Drazool) The spell never directly affects the target cell anyway, and you can already cast it against any other type of wall just fine (if your objective is to move things besides yourself). -------------------------------------------------------------------------------- 0442bec93c | DracoOmega | 2024-10-18 15:06:03 -0230 Fix pillars of rime not being LRD-able (Drazool) -------------------------------------------------------------------------------- 49991a7d3d | DracoOmega | 2024-10-18 15:02:56 -0230 Properly use the MONSTER_TIMEOUT channel for explosion poof messages (Since this is intended to replace the normal poof message when inner flame blows up a summon, for instance.) -------------------------------------------------------------------------------- 14ba1b91ca | DracoOmega | 2024-10-18 15:02:14 -0230 Fix some weirdness with blazeheart core explosions (Ge0ff) The core itself was now accidentally treated as abjurable, resulting not only in some odd messages about its residue disappearing in a puff of smoke (and it itself disappeared in a puff of smoke), but *actually* making smoke on its own tile, which prevented the flame clouds from ever being placed there. -------------------------------------------------------------------------------- a278277405 | DracoOmega | 2024-10-18 14:59:59 -0230 Don't make blazeheart golems explode on timeout (particleface) -------------------------------------------------------------------------------- 8cbeda2b7e | RypoFalem | 2024-10-18 05:15:08 -0500 Extend single-day holidays to three days. Since servers use UTC to determine the time, Halloween evening in the Americas doesn't count as Halloween in web games. Extend Halloween and April Fool's to 3 days so it's covered by all time zones. The winter holidays already last over 2 weeks so remain unchanged. -------------------------------------------------------------------------------- 2bbf05e178 | regret-index | 2024-10-18 03:12:17 -0230 Revive and heavily revise some removed vaults This isn't meant to be a completely comprehensive project, but a continuation of a loose experiment of mine to help with various always pressing desires (like V vaults, D:$ vaults, or Depths:$ vaults) in line with d25c09d's own revivals. * dhfh_tomb_1: Removed in 8598196 for its Norse flavour of jotunn and cursed undead also just being the same contents as lategame enemies anyway (and also having very little nested-portal interest), this has been revived as a vault for V mixing those together with thematically -appropriate preservers, gargoyles, and new decorations to try to hit its mourning-crypt concept once more. * metal_show: Removed in 1042b88 for using very harmless enemies and uniques quite late into the game as a wave of miscellaneous fans watching a metal concert in a game with no instruments. This has been revived back in its V position with a heavy upgrade in threat using monsters already present in V, and further heavy redecoration. Even if it mostly comes off as a nightclub coven, that's still something of reasonable interest for a vault. * wizlab_ozocubu: Removed in 9c11f61 for being incomplete before initial wizlab testing, as well as filled with comically underpowered enemies for its depth, and then never followed up upon due to the great design difficulty of it not overlapping too heavily with Ice Caves. Following on its initial use of skeletal warriors to vary up the opposition, I've converted the provided layout into a cavern's icy castle with various living and dead warrior options usually equipped with cold gear, and deploy it through a large number of branches for another themed V vault, a Zot stair vault hitting on a neglected resistance there, and a D:$ / Depths:$ vault. -------------------------------------------------------------------------------- b65ea80194 | Implojin | 2024-10-17 20:30:45 -0500 Fix inhibited regen infoleaking invis mons Previously, the inhibited regen mutation effect was being applied while any monster was nearby, regardless of whether the player knew that it was there. This was technically an infoleak, and also led to messaging that players found confusing: E.g. with a nearby unseen horror, players couldn't rest, and they weren't being informed why in the combat log. This commit changes the behavior of inhibited regen to only take effect with visible nearby monsters: there shouldn't be any issues with this from a gameplay perspective, and this fixes both the infoleak and the messaging. Fixes #4018. Closes #4064. -------------------------------------------------------------------------------- 3dacd37fa5 | Implojin | 2024-10-17 00:48:52 -0500 Clarify spellcasting tutorial phrasing (Noctsol) We had a report from a player that the `z?` message in the spellcasting tutorial wasn't very clear (is the game unsure about what the command is?). This commit tries to clarify things by breaking up that message, into separate memorisation and quivering tutorial tiles. -------------------------------------------------------------------------------- 3973d0effb | Medrano83 | 2024-10-15 22:15:46 +0200 Fix the Android default screen settings This value error makes the game crash on some devices when starting the game in landscape mode. Thank you to the player from Indonesia who reported the bug. -------------------------------------------------------------------------------- 0e9ad9ad44 | Implojin | 2024-10-14 22:12:27 -0500 Remove an outdated slime shaft veto (gammafunk) Previously, player shaft destinations were specifically vetoing target positions with adjacent slime walls. This check was added in 61e6210cf4, to prevent shafts in slime from dealing damage to the player (and possibly killing the player) before they had a chance to react. That reasoning was obviated in e3182b2870, when slime walls were reworked to no longer deal damage. Preventing the player from being shafted to a position that corrodes them is less compelling reasoning; let's allow it again. This reverts commit 61e6210cf4b648636163e9fe7f42c1eae1754a39. -------------------------------------------------------------------------------- 921eff9f32 | regret-index | 2024-10-14 22:26:30 -0230 Replace the V / Trove rock tiles These rarely-seen rock tiles have always been somewhat gaudy in their highly-saturated fashion from back in the very first days of Crawl having tiles, and don't particularly obviously suit either of their uses. I'm fusing them with the equally-old and currently quite rare wall_brick_gray (currently used in one Spider end, one Shoals end, one Kiku vault, and one bazaar option) to present a sort of "flaking golden bricks stained very lightly with blood" look, which should hopefully work out better in terms of resembling regular building material while still looking different from most other places' rock tiles. -------------------------------------------------------------------------------- 0bf80241f6 | mumra | 2024-10-14 08:02:16 +0100 Properly remove Animate Skeleton Animate Skeleton was nominally removed in 613369f but the removal was somewhat incomplete. The spell description was left in a number of translations (just removed in en), the spell tile still remained, the spell data was still present and not made into an AXED_SPELL, the enum was not marked for TAG_MAJOR_VERSION deletion, and (consequently) it was not added to removed_spells. So to avoid potential confusion and errors I have done the above. I also added a fixup in tags.cc so very old Necromancer saves should now receive Soul Splinter instead (which it was ultimately replaced with). -------------------------------------------------------------------------------- 06e22a58e0 | regret-index | 2024-10-13 00:58:34 -0230 Fit more vault.lua includes into the .des files Crawl rebuilds got somewhat tempermental about the .des caches after 5f48996 and ce7c55b made the bulk of files rely on dlua/vault.lua functions to redefine statues or floor- this should hopefully should fix up such issues by putting the crawl_require line into all files that use any of the three redefinition functions. -------------------------------------------------------------------------------- 8334a9b5f1 | regret-index | 2024-10-13 00:48:28 -0230 Adjust some spell tiles * Removed the Fake Rakshasa Summon icon, since the old Rakshasa summon behaviour is extremely unlikely to return and current Rakshasas split without casting a spell. * Made a new quick placeholder Hoarfrost Cannonade tile using Sastreii's recent hoarfrost cannon submissions. Spells like this one meant for the upcoming school may need a new full revising in time to get them closer to one another in colour schema and consistent tile appearance, but this should most likely wait until the initial spells are added for the school. * Repurpose a Hoarfrost Cannonade tile submission that lacked any visible cannons to instead work as Hoarfrost Bullet and Legendary Destruction icons, with the former also using ontoclasm's Throw Icicle icon. * Trim the accidental black border off of the Gell's Gavotte icon. -------------------------------------------------------------------------------- 6874458004 | regret-index | 2024-10-13 00:48:28 -0230 Heavily rewrite Xom's action picking code + subsequent odds Xom's twin action-picking functions (one each for good and bad actions) were legendarily bad code that was next to impossible to properly assess the odds of any given action or change such in any meaningful way. (One could run the wizmode Xom simulations list to get a very rough idea of the former, but the latter was heavily bound by its implementation.) This rewrite replaces massive waterfalls of condition + roll checks to instead just use a list of weights and lambdas, to make it much easier to parse and adjust for any future Xom changes, as well as to minorly tweak Xom's overall effects with such newfound capabilities. This also comes with some implementation changes: * Xom will only polymorph allies with non-zero tension, so Xom will no longer see the player resting and decide to replace the regenerating single long-term ally with a random no-longer-regenerating ally. * Tension checks are no longer heavily fudged between actions, and now weapon animation, multiple ally summoning, mass charm, and swapping door states all require more than next to no tension to happen. * Most noticeably: Xom's non-boredom mood no longer de-emphasizes the most common effects, for both good and bad effects. Xom's mood has always been one of Xom's weakest design components (in how Xom's inherent lack of reliablity meant particularlly good or bad moods were background announced swings of luck rather than any inherent change). Future goals for Xom in this version are to replace all of Xom's mood levels besides boredom with a visible tension meter, while slicing out the most enemy-annihilating / player-annihilating options into more controlled fashions to try and save a worshipper rather than annihilating individual quokkas or komodos with half a dozen force lances. * Most noticeable out of this is that Xom is marginally more likely to teleport the player into bad situations in a worse mood at no tension, and is more likely to stick to potions and tension spells versus summoning allies or raining down destruction when in a good mood at any meaningful tension. In the total average of Xom moods, action chances shouldn't change by more than a flat 0.1% to happen or 4% proportionally either way with the new math, but even mood evening out the likelihood of actions more often there are a few notable shifts while these initial numbers were being set: * In the good actions list, tension spells and random item gifts are marginally more common (as they're some of Xom's most usefully variable actions in the first place), while detect all, fog, mass halo, and bazaar trips are all less common (the first is quite good these days but has significant fall-off on more completed floors, the second is boring, and the last two work better the rarer they are to see). * In the bad actions list, Xom has less chance to roll nothing and slightly more chance to make idle noise. -------------------------------------------------------------------------------- 701edd8936 | DracoOmega | 2024-10-13 00:44:25 -0230 Fix Yred reaping always working (T1-M4T) The code explicitly skipped summoned zombies/spectrals, but since the recent summon refactor, Yred's own zombies counted as such, causing your reaping effect to think you never had any zombies (and thus should have a 100% chance of success). In addition to fixing that, this commit adds an explicit summon type to track Yred-reaped undead more directly. -------------------------------------------------------------------------------- 0a5ed6d79a | DracoOmega | 2024-10-12 23:54:25 -0230 Fix Elemental Force summons expiring immediately (Autarch) -------------------------------------------------------------------------------- 07456b3189 | DracoOmega | 2024-10-11 17:28:07 -0230 Fix tentacles losing constriction whenever they pull something The entire concept behind how starspawn tentacles and snaplasher vines are supposed to work is that they pull the thing that they are constricting. But (since 0.18-ish) due to their own movement, they actually stop constricting the thing immediately *before* they drag it, resulting in confusing message sequences like "The snaplasher vine loses its grip on you. The vine pulls you backwards!" How is it doing that, exactly? This is, of course, because there is a moment in time where the tentacle has moved, but the constrictee has not yet, and thus the constriction is 'invalid'. Conceptually, they're supposed to be moving at the same time, though, so this adds a parameter to actor::moveto and actor::move_to_pos to allow skipping constriction invalidation until after both things have moved. -------------------------------------------------------------------------------- 3382226504 | DracoOmega | 2024-10-11 17:28:07 -0230 Don't display tentacle/segments as 'minions' They may internally be treated as summons, but are logically part of a single large creature and probably make sense to display as such. (Solo tentacles created by magic still display as minions, but their segments should not.) -------------------------------------------------------------------------------- 9adc1c5f74 | DracoOmega | 2024-10-11 17:28:06 -0230 Be a little more specific about summon dismissal on attacking friendlies Use a (hopefully) more correct killer_type and don't fire this for tentacles/segments. Propogating the event to the head should properly handle whether the tentacle monster should go poof or just get angry with you. -------------------------------------------------------------------------------- 9dbd12bfa3 | DracoOmega | 2024-10-11 17:28:06 -0230 Fix attitude change propogation for tentacles Changing the attitude of a tentacle head properly adjusted the attitude of its tentacles, but the reverse was *not* true, leading to some weird behavior. If a player (for instance) attacked the tentacle segment of a charmed starspawn, the starspawn would appear to ignore it entirely. (The segment's attitude would be made hostile, but segments are constantly recreated every action, and it would be seemlessly replaced by another friendly one essentially immediately.) But if the player attacked the *tip* of a tentacle, the tip would turn hostile, *but the rest of the segments would not*, resulting in some impressive acrobatics as the tentacle attempted to attack/constrict its own segments. This commit attempts to do a better job of propagating attitude changes back up to the head. Changing attitude directly in wizmode works properly if you do it for tentacle segments, and attitude changes cased by ME_WHACK/ME_ANNOY behavior events called on child monsters will send the same event to the tentacle head itself. This should result in attacks against any part of the tentacle monster being interpreted as attacks against the monster as a whole. -------------------------------------------------------------------------------- 1d54a0429a | DracoOmega | 2024-10-11 17:28:06 -0230 Fix a crash on non-damage kills of tentacle segments (staticshock) If a tentacle segment was killed for reasons other than damage, the code in monster_die that attempts to clean up the rest of the tentacle would recursively kill it a second time before the first monster_die finished, resulting in an assert. (Presently this is happening due to a second bug that is considering all tentacle segments to be summons which should be abjured upon taking friendly fire, but it is conceptually possible to trigger this in other ways.) -------------------------------------------------------------------------------- 2156aa9015 | mumra | 2024-10-11 05:47:28 +0100 Fix randomness in shield block to-hit calculation To account for shield block in hit %, shield_bonus() was copied to monster_info; however slightly unexpectedly there was a random roll being applied in this method. This meant that for monsters with shields (or an amulet of reflection) the to-hit % would randomly change each time inspected. Additionally the way integer division was used across these methods meant there was some further inaccuracy in the simple average calculated for some values of sh. This change improves the formula a bit; it's still not perfect but definitely better. It also now correctly indicates when a monster's incapacitated status is affecting the shield block, if that monster had zero dodge normally. -------------------------------------------------------------------------------- 6ce201e34c | mumra | 2024-10-11 05:47:27 +0100 Clean up an unused function call In the past, _player_hurt_monster handled its own death cleanup, but this was changed in 1567df3. Various other incremental changes to the function mean there is nothing hurting the monster *other* than the ::hurt call, and as that now handles any necessary death cleanup this final condition should never be possible to hit. -------------------------------------------------------------------------------- 2cf4ae63b3 | mumra | 2024-10-11 05:47:27 +0100 Comment cleanup: an already-done constify todo Was apparently already done in 083cf6bb240 -------------------------------------------------------------------------------- 6fe43b3371 | mumra | 2024-10-11 05:47:27 +0100 Fix Sniper showing 1% hit chance and bypass shield Improvements to the hit chance display unfortunately introduced a bug when hit chance is AUTOMATIC_HIT, causing the xv to show to hit as 1%. While fixing this I noticed there is a very tiny but still non-zero chance for AUTOMATIC_HIT attacks to be blocked by a shield, due to AUTOMATIC_HIT being treated as a hit roll of 1500. Since this is either slightly unexpected or if intended should be more impactful, it seems easiest to just bypass shield checks as well for something like Sniper. -------------------------------------------------------------------------------- de153c73cf | mumra | 2024-10-11 05:47:27 +0100 Correctly describe Canine Familiar cooldown Due to confusing property ordering in duration data, the "You are unable to call your canine familiar" message was only visible in wizmode, and not on the @ screen as intended. -------------------------------------------------------------------------------- e325cd85d1 | mumra | 2024-10-11 05:47:27 +0100 Remove and clarify a TODO around OOD monsters The comment was inaccurate as the check *can* come out true, so I added an explanation as to why it's there. -------------------------------------------------------------------------------- 41fc793b43 | mumra | 2024-10-11 05:47:27 +0100 Remove a redundant XXX comment Given ammo no longer really exists, this comment seems to be irrelevant now. -------------------------------------------------------------------------------- c8b311e6f6 | mumra | 2024-10-11 05:47:27 +0100 Remove some dud param comments and fix typo The documented params seem long gone. -------------------------------------------------------------------------------- 06a421242d | gammafunk | 2024-10-10 23:40:20 -0500 Add the Abjuration spell to clua monster info Monsters with spells marked with the summon flag get Abjuration the automatically, although only cast with a chance when they would cast a summon spell. This special case has to be handled separately if we're listing a monster's spells. Hence this commit adds Abjuration to a monster's spell list in clua when appropriate. -------------------------------------------------------------------------------- 7f099897d9 | mumra | 2024-10-11 04:45:44 +0100 Fix directional bias in pool fixup Due to the algorithm modifying tiles as it went, subsequent iterations were based on the new state rather than the original - this resulted in North- and West-facing pools getting affected potentially several tiles deep, while the South and East edges general got just a one tile layer of shallow water, which looked a bit odd and not symmetrical. The adjusted algorithm builds a vector of coords to paint later: however this looked rather too neat as then there is only ever a 1-tile border of shallow water. So I ran a 2nd pass to let the shallow water encroach to 2 tiles deep in places. The probabilities needing tweaking to produce a satisfying organic look that is quite varied. Sometimes the 2nd pass will not run, with a 25% chance, to produce tidier pools and moats occasionally (but not in Lair). -------------------------------------------------------------------------------- 4eba2d974d | DracoOmega | 2024-10-10 17:19:34 -0230 Fix mangrove hornets being marked as 'minions' (Riverefiend) This also gives them not having XP. Additionally, fix summon marking for hornets from mangroves that are themselves summoned (ie: by shadow creatures). -------------------------------------------------------------------------------- 19655175bd | DracoOmega | 2024-10-10 16:07:52 -0230 Fix Wucad Mu / Borg wizlab summons being broken (midn8) When summon mgen_data was switched to using aut durations instead of abj degree, vaults which manually created summoned monsters was overlooked. Since it's a bit of a pain to do the per-monster duration randomization in vaultspec, I've made "dur:X" there default to calling summ_dur directly. This means it isn't possible to specify summon duration in aut in vaults (or wizmode monster creation...), which I consider inideal, but this is a reasonable quick fix given how rarely this functionality is used. (This also makes all summoned monsters made by monspec 'actual' summons, which isn't strictly true in theory, but is true for all current uses I know of. Slightly unhappy about this.) -------------------------------------------------------------------------------- 21dfed3d1e | patrick | 2024-10-09 10:08:52 -0400 Make a scroll shop always ID the scrolls lying around These days, vaults that always place a specific type of consumable will pre-ID that consumable to avoid the need for spoilers. This scroll shop vault, which leaves a few scrolls of noise lying around, somehow missed the memo. So I'm fixing that. -------------------------------------------------------------------------------- 09451382ac | Nicholas Feinberg | 2024-10-08 22:06:30 -0700 New Fedhas altar (Sastreii) -------------------------------------------------------------------------------- ac5b87be5f | Nicholas Feinberg | 2024-10-08 22:06:05 -0700 New plant tiles (Sastreii) -------------------------------------------------------------------------------- 6c17059a10 | DracoOmega | 2024-10-07 19:20:39 -0230 Fix agent-less monster::was_created_by() always returning false Things likely broken by this: -Qazlal elementals losing their cloud and Upheaval immunity -Lugonu anti-wrath protection not prioritizing wrath summons -Flashing Balestra weapons using the wrong death messages -------------------------------------------------------------------------------- 7c53e13f8b | DracoOmega | 2024-10-07 19:20:33 -0230 Fix Flayed effect ending upon taking stairs with a ghost (staticshock) The comment for monster_cleanup() was misleading enough that some on-death functions ended up being moved here by 5f5c15f, but this resulted in Flay wearing off immediately if a flayed ghost left the level (including by taking the stairs with the player!) There were some other bugs also, such as earning credit for Beogh Venegance kills by merely taking the stairs with a vengeance-marked target. They didn't even lose the status, so you could dance up and down with the same simple enemy repeatedly to clear a vengeance debt against many other things! (I've rewritten the function comment to hopefully be clearer in future.) -------------------------------------------------------------------------------- 44df65d264 | Matthew Granstrom | 2024-10-07 14:40:20 -0400 Remove Gell's Gravitas from Nicolae's custom books shop -------------------------------------------------------------------------------- 443864507a | gammafunk | 2024-10-04 18:20:37 -0500 A clua monster method for finding its summoner The crawl UI highlights a monster's summoner in LOS examination mode, but there was previously no way to determine a monster's summoner from clua. This commit adds a summoner_pos() method to the monster info table that returns a pair of LOS coordinates of the monster's summoner. It returns nil if the monster's isn't summoned or it the monster or its summoner are not in LOS. I've copied the summoning monster's mid into the monster_info class and updated the examination mode UI to use this information. This way we have a centralized check for whether the summoner is valid to reveal, at least regardless of LOS concerns. -------------------------------------------------------------------------------- 933e26f2f7 | David Lawrence Ramsey | 2024-10-04 12:21:45 -0500 Fix typo. -------------------------------------------------------------------------------- dcf9493a85 | DracoOmega | 2024-10-04 14:30:22 -0230 Better-document some methods (Ge0FF) -------------------------------------------------------------------------------- 74cecdf8d6 | DracoOmega | 2024-10-04 14:28:36 -0230 Fix Pan lords improperly using A/An when coming into view with others ie: "A Plog and a hellwing come into view." (This lead more than a couple players to think they were a weirdly-named ordinary monster and not a pseudo-unique.) -------------------------------------------------------------------------------- 4be0ea19d6 | DracoOmega | 2024-10-04 13:37:04 -0230 Adjust kill crediting for exploding monsters in general The more I look at crediting in _setup_base_explosion, the more I feel like it doesn't make sense. So now, non-abjurable monsters created by the player always credit the player directly (ie: prisms, ball lightning) and other friendly monsters will credit ANON_FRIENDLY_MONSTER to ensure you get proper XP for them. -------------------------------------------------------------------------------- e630d8722b | DracoOmega | 2024-10-04 13:37:04 -0230 Fix fulminant prisms having incorrect summon data (aliasthespectator) They were appearing as abjurable, which not only made their death messages weird ("the fulminant prism residue disappears in a puff of smoke!") but possibly affected the fact that you weren't credited for their kills anymore. -------------------------------------------------------------------------------- 6d1de5a75f | regret-index | 2024-10-04 00:32:06 -0230 Tweak confusion's interaction with tension Confusion is easily cured with potions of curing later in the game, so staying in confusion being a high multiplier of tension is sort of weird in so far as one would only do such if they weren't any concerned with the encounter. (However, it's still plenty lethal very early on, when one doesn't know about potions of curing yet.) Contrariwise, confusion is substantially worse than many other statuses if one can't actually cure it any time soon due to not being able to drink potions (whether in Cocytus, while possessing -Potion status, or being a mummy / lich). As such, this takes the current x2 tension multiplier for confusion, sets it slightly higher by default, and drops that slowly down versus one's current XL, unless one can't drink to cure it which case it becomes a flat x2.5 multiplier. (This is a little silly for Elyvilon, but there's a piety cost involved for the extremely little non-Xom non-wrath uses of tension that could even come up versus -Potion.) Hopefully this should help out Mummy Chaos Knights a little bit more and get tension the littlest bit closer to being a more usable function. -------------------------------------------------------------------------------- f9cddea6ec | regret-index | 2024-10-03 23:48:00 -0230 Teach searing wretches to swim across lava Gehenna is in a weird place versus Cocytus, where over half of its threats can't move across lava the way Cocytus's can move across deep water. While this does provide a useful contrast point for the differing varieties of ranged monsters in Gehenna (and tyrants also work very differently than wellsprings), it means the main unique layouts of the Hell work out awkwardly in terms of several threats figuring out how to walk towards the player. As a point of comparison, the other fiery undead in the branch (stokers) actually _swims_ across lava, which feels like precedent enough to let searing wretches do the same. Melee-only threats being impeded by their own branches terrain feels very awkward, there's no vaults in Gehenna that seem to rely on them being unable to move across lava, and there's not a lot of lava for them to otherwise swim in as part of Margery's band, so this should be a reasonable safe change. -------------------------------------------------------------------------------- fb316f7f2e | regret-index | 2024-10-03 23:42:46 -0230 Name removed spells when failing to learn or cast them It can be quite annoying to type in wizmode e.g. just "Conjure" for Ball Lightning and not be explicitly told it first found Conjure Flame, or that "Summon S" fills in the rest as Swarm and not Small Mammals, so we might as well list what exactly it tried to find instead. -------------------------------------------------------------------------------- 40db0d2193 | regret-index | 2024-10-03 23:18:16 -0230 Fiddle with Hells stair -> fountain replacements Getting what are now established as normal drinking water fountains in the hellish realms of endless lava and endless decay looks a bit silly, so their non-blood fountains have been replaced with dry fountains. (In the hell filled with water it's fine, and in the hell meant to be a city it's one of the closest way its boxes are actually any life-like.) -------------------------------------------------------------------------------- 3a15ca111d | regret-index | 2024-10-03 23:18:16 -0230 New creeping inferno tile (pianoman523) As with the apis change in b8f47f2 and retiling in b29aa79, this submission was delayed until the mechanics for the monster were reworked, to hopefully help tiles players associate a new appearance with a drastically different behaviour. This combines and edits multiple submissions by the same artist; it still looks a bit silly, but vastly less janky than the previous creeping inferno's lurking horror recolour tile. -------------------------------------------------------------------------------- b7d3b0a02a | regret-index | 2024-10-03 23:18:16 -0230 Revise creeping infernos and tweak stokers Creeping infernos are very strangely troubled monsters for Gehenna. * Frail explosive enemies in extended are extremely unlikely to actually detonate on the player in general, as anything from wands to level 2 spells to boomerangs and stones could easily kill them before they approach. * The lurking horror behaviour where they hesitate to move the further away they are combines very strangely with their limited explosion range and frailty- while lurking horrors are a usefully-scaling screen-wide torment burst, creeping infernos can take over a dozen turns from being a screen-distance away (thus giving players lots and lots of time to throw a stone), and can take twice as long if a player actually tries to run away at all. * Even when they actually succeed at hitting the player, their 8d7 partially-resistable damage is only slightly stronger than a balrug's 3d23 fireball with one pip of rF, and weaker than balrug smiting or hellion damnation at two pips of rF, which is very sad for something that could have very easily failed to hit the player. (I'm not going to even start on how stokers have little chance to succeed in rarely summoning bombs that are slow to actually have walk up. Maybe these designs made more sense when stokers had maintain_range? They're extremely unlikely to get it back, but this should help them too- for now, they're moving from a tiny 5% to a passable 10% chance to actually summon their defining threat.) This commit reworks creeping infernos entirely to instead just act like bloated husks do for Swamp- they have an average of 111 HP, move normally at normal speed, and still explode on death or on touching the player (for 8d10 rather than 8d7 previously!) if they reach melee range. This reasonably increases their functionality while still preserving their namesake impending threat- now instead of collapsing from individual stones, they require rather deliberate firefighting as their new bulk inevitably creeps towards the player. To help make this not trivially ignorable, they also go from Will 10 to Will 60- by the time one's in the Hells, non-spellcasters can afford some Evocations investment. It will take a fairly long bit of testing to see how this works out- extended feedback takes quite a while to come in. Gehenna is unlikely to move that much further from its current easiest Hell position or push that much higher than the other hells (which _have_ been adjusted recently), anyway- these still die to anything from summons to conjurations to Manifold Assault to charming a hell hog to just facetanking their relatively low single-burst damage anyway. -------------------------------------------------------------------------------- 52868c5510 | DracoOmega | 2024-10-03 22:33:08 -0230 Fix Boris's timeout speech -------------------------------------------------------------------------------- 2442f177b0 | DracoOmega | 2024-10-03 22:33:02 -0230 Fix a handful of monsters not counting as true summons (Basically anything that called mark_summoned() directly, without ever having used mgen_data::set_summoned()) This incidentally messed up the poof messages for them as well. -------------------------------------------------------------------------------- 4bb16c9eb9 | DracoOmega | 2024-10-03 22:32:53 -0230 Fix summons not looking like summons during timeout (Colgate, Darby) monster::is_summoned() was looking for the presence of a summon timer to determine whether a monster was summoned, but this timer doesn't actually exist while they're in the process timing out. As a result of this, it was possible to get XP from hitting hostile summons and then letting them expire. (If you actually killed them, they would still look like summons and grant no XP). While KILL_TIMEOUT probably never needs to give XP, it seems dangerous to allow summons to look - at any point - like they are not summons. Who knows what other things, now or in the future, might work improperly this way? I am *hoping* the new criteria for is_summoned() will properly encompass everything that should count and nothing which shouldn't, but I won't be entirely confident until we test it out. Fingers crossed! -------------------------------------------------------------------------------- bb4998b30b | DracoOmega | 2024-10-03 13:05:12 -0230 Use a different color dot for non-abjurable summons And describe them as 'minion' when examined, instead of 'summoned'. (Also fix the Unrewarding icon not rending on webtiles) -------------------------------------------------------------------------------- df8c4cf9b9 | DracoOmega | 2024-10-03 13:05:12 -0230 Fix Makhleb god description not rending on webtiles fc8bfd6970fa08 caused the description + cost of Makhleb's capstone ability to be exactly 80 characters in length, which meant there was no space between the description and the cost (longer strings get spaces inserted, but *exatly* 80 characters does not). This caused the regex the webtiles UI uses to split the string to not work. This commit changes the regex to no longer require a leading space before the parantheses, since those are only used for costs here anyway. This fixes #4068 -------------------------------------------------------------------------------- 4194ddcd66 | DracoOmega | 2024-10-03 13:05:12 -0230 Fix crash with blastmotes clouds exploding Accidentally broken by d9015ae29d17d9 -------------------------------------------------------------------------------- 550cd92e2e | Nikolai Lavsky | 2024-10-03 18:08:42 +0300 fix: don't transit all banished low HD monsters to the Abyss After 3fdf3ab24, banished uniques and some high HD monsters were sent into the Abyss where the player could find them again. But after 25b58072b, all banished monsters get `MF_BANISHED`, so `needs_abyss_transit()` is true for all of them, regardless of their HD. As a result, the Abyss could have too many non-abyssal monsters, especially if the player uses a weapon of distortion. This commit fixes that by restoring the HD filter. -------------------------------------------------------------------------------- 6c114678ce | DracoOmega | 2024-10-03 03:15:21 -0230 Fix multiple creatures having incorrectly brief durations (Shummie) When I changed summons to take aut durations instead of abjuration degree, I overlooked those effects which call mark_summoned() directly (rather than using mgen_data::set_summoned()). This meant that anything created by several effects would spawn with a duration of less than 1 turn. These included phantom mirror (both the item and the monster spell), phantom blitz, chaos clones, and the flayed ghost from Martyr's Knell. -------------------------------------------------------------------------------- cd4c005c59 | DracoOmega | 2024-10-03 01:12:48 -0230 Fix players getting no XP for kills by their own ball lightning I'm not really satisfied with some of how kill attribution works for exploding monsters *in general*, but I think this should fix the most significant known issue for now. (Prisms still worked properly, even without this) -------------------------------------------------------------------------------- 56ef7711ba | regret-index | 2024-10-03 00:34:45 -0230 More nekomata tweaks * Don't use the altered nekomata tile for Phantom Blitz unless the caster-to-clone is a nekomata, just in case some sprint monster ends up using the spell. * Tweak the nekomata experience value yet further up. Honestly, we could probably do with adjusting threat display for lategame characters with some sort of overriding threat flag- hell sentinels no longer being listed as lethal at reaching XL 20 is a pretty direct demonstration that the whole system is troubled at high experience levels. * Remove nekomata from the orb run, as they're overshadowing the random Pan lords there and many people aren't examining a new monster to treat it with the same respect a random Pan lord would deserve. (I'd rather just keep the strongest Pan monsters out of the orb run entirely than actually nerf down monsters meant to be highlights of a given extended branch. If we continue to move in the direction of Hell-Pan roulette, we can just seperate orb run lists from Pan entirely (since Pan wouldn't exist in half the games) and it could mix in Hell enemies without expecting either branches' strongest and most emblematic monsters to appear on the orb run like shard shrikes or doom hounds.) -------------------------------------------------------------------------------- 30d083ede6 | DracoOmega | 2024-10-03 00:23:43 -0230 Don't crash on monsters dying to dead monsters (+fix monster frenzy orb) The guard which prevented a crash on kills by dead monsters (such as exploders) was removed by 400f974 at least in part because the comment above it was misleading enough that I thought it wasn't necessary. This also fixes a second bug among the same code, where Orbs of Mayhem wielded by monsters could only trigger if the player currently worshipped TSO and the monster which died was evil. ...because for some reason, the mayhem check was in the TSO follower blessing codeblock, and appears to have always been. -------------------------------------------------------------------------------- eaf764a6c2 | DracoOmega | 2024-10-02 21:43:37 -0230 Don't kill an ancestor every time the player takes the stairs (Shummie) After the recent refactoring, the simplified ally dismissal code was killing *all* monsters on the floor the player was leaving that were marked as having been created by the player. And for some reason, Hep ancestors considered the player to be their summoned. I don't *think* there will be any issue with them just not having a summoner marked at all, and this fixes the present issue. (If some reason is discovered why this marking is important, I can fix it in some other way.) -------------------------------------------------------------------------------- 07b0ac27cd | DracoOmega | 2024-10-02 15:38:34 -0230 Fix minor message bug and simplify summon removal upon leaving floors -------------------------------------------------------------------------------- 4639139513 | DracoOmega | 2024-10-02 15:38:34 -0230 Rename monster::is_summoned_by() to ::was_created_by() Since it includes more things now where monster::is_summoned() will return false, and it feels very wrong to me if is_summoned_by() is ever true when is_summoned() is false. (There's a decent argument that is_summoned() should also be renamed to is_temporary() or something. I'll consider it.) -------------------------------------------------------------------------------- 53d16b7429 | DracoOmega | 2024-10-02 15:38:34 -0230 Narrow what returns true from monster:is_summoned() To ensure that unrewarding monsters from god wrath, etc, do not count. (This also means that friendlies made by Animate Dead / Death Channel will go back to not counting, but I am fairly sure this doesn't actually affect anything meaningful.) -------------------------------------------------------------------------------- d61e3f1930 | DracoOmega | 2024-10-02 15:38:34 -0230 Use a couple documented-but-mostly-unused summon types Despite being clearly described as existing for this purpose, MON_SUMM_WRATH wasn't used for god wrath summons and MON_SUMM_ZOT wasn't used for things made by Zot traps. Fix this (at least partially; it's possible I overlooked some wrath effect). (This actually has a mechanical effect now that Lugonu anti-wrath specifically looks for monsters created by other gods' wrath. But it seems like good policy regardless.) -------------------------------------------------------------------------------- e49fde2923 | DracoOmega | 2024-10-02 15:38:34 -0230 Make Bind Soul simulacra (and Kiku wrath derived undead) unrewarding It wasn't terribly obvious that the simulcra created by Bind Soul were temporary, since their durations were extremely long, but they were. Which meant that the player got no XP for them, despite no messages otherwise indicating they were 'summons'. At that rate, it seems fine if they just stay around forever, and are explicit about this. This also fixes a bug where the MF_NO_REWARD flag set by Kiku wrath reanimations was being overridden just a few lines below where it was set. This didn't *seem* to result in the player being able to get XP from them in 0.32, so a different (bug?) must have been preventing this bug from mattering. At any rate, it should be fixed now. (The MF_HARD_RESET doesn't really do anything except make the new icon and description appear properly) -------------------------------------------------------------------------------- 8706489d8f | DracoOmega | 2024-10-02 15:38:33 -0230 Rename 'durably summoned' to 'unrewarding' and tweak a few things Despite the name, durably summoned monsters didn't act like summons in very many ways besides 'created by a spell/effect and don't drop items or xp'. They weren't abjurable, could take stairs, were valid targets for many things summons were not, never went away when the thing that created them was destroyed, etc. At the same time, some monsters which were *effectively* the same as 'durably summoned' were not marked as such, presumably because no pretense of magic was involved - most notably the spawns of The Royal Jelly. I think this entire thing would be made clearer by not giving any suggestion that current 'durably summoned' monsters are similar to 'summoned' and instead hilight the part that *actually* distinguishes them from any other normal monster: the fact that they don't give any reward. These monsters now say 'unrewarding' when examined, and the icon used is slightly different (to distinguish it further from the summon dot). TRJ spawns also recieve this icon, so it will now be possible to tell them apart from other jellies at a glance. (This was always possible if you xv'd them, but that was very time-consuming) This additionally removes the message "That felt strangely unrewarding" for monsters explicitly labelled as unrewarding. I mean, what else would one expect? Note: this icon is presently displayed both on the same condition as durable summons were (ie: having both MF_HARD_RESET and MF_NO_REWARD) but also the old condition used to mention no rewards when xv'd (which just checked for MF_NO_REWARD and mons_class_gives_xp()). This previous behavior was always *slightly incorrect*, since MF_NO_REWARD does not prevent item drops, and while many effects set both flags at once, not all of them do. In fact, it is important that some don't! (Bound souls should still drop their equipment, for instance). But despite this, xv will claim that they cannot drop items. A review to fix up a few cases where this gives slightly misleading information would be a good idea, but it rarely actually matters, so I will do that at some future time. -------------------------------------------------------------------------------- e1902a1114 | DracoOmega | 2024-10-02 15:38:33 -0230 Use the new summon placement range functions in a few more places -Tukima's Dance will now prefer to spawn the dancing weapon adjacent to its wielder (but can still spawn at range 2 if this isn't possible). -God wrath summons can now place all the way to the edge of the player's LoS, if nearer spots are occupied. (Instead of being trivially foiled by a couple nearby monsters in a hallway.) -Wizmode monster creation no longer refuses to place things beyond 2 tiles away from the player, but will also go all the way to the edge of LoS if nearby spaces are full. -Derived undead will prefer to be placed upon the dead creature's own space, if possible. (This potentially has more balance effects than these other changes, but it feels more theatically sensible if a monster rises as a zombie where it fell instead of 'sometimes several spaces away for some reason'.) -Kiku's Unearth wretches can place wretches up to 4 tiles away, if nearer spaces are occupied. -------------------------------------------------------------------------------- 5f4ad15b96 | DracoOmega | 2024-10-02 15:38:33 -0230 Add new members to mgen_data to control placement radius Prior to this commit, monsters created via create_monster() were either created at a specified position (if the MG_FORCE_POS flag was set) or at a random habitable spot within 2 tiles of a specified position (if it was not). If a spell wanted to choose a random spot at any other distance, even just '1', they needed to write their own code to do so - and there were many examples already in the codebase of performing a very similar sort of random iteration manually. This commit aims to make that much easier to do, with less boilerplate, by adding 3 new members to mgen_data: range_preferred, range_max, and range_min. ranged_preferred sets the range from the center point where the monster can be randomly placed (ie: the current behavior functions as if this was always '2') range_max allows placement to exceed this range if, and only if, all tiles within that range are invalid. This allows an easy fallback in cases where we'd rather place something close, but will accept placing it far away rather than not place it at all. range_min specifies the minimum distance that the placement *must* be further than - to allow forcing something to be placed non-adjacent to a given location, for instance. All of these can be conveniently set via mgen_data::set_range() This commit also adds the MG_SEE_SUMMONER flag, which requires that the chosen spot also be within line-of-sight of its summoner. (Most summon spells do not require this, as they are centered around the summoner in the first place, and line-of-sight to the center point is *always* required, but some create summons at a random location around a target instead, where this is useful.) This commit also refactors multiple existing spells to benefit from this new capacity - sometimes shortening them a great deal in the process. There should be just a couple minor functional changes from this. -Dragon's Call can no longer create dragons outside of the player's LoS, if it chooses a target on the edge of the player's LoS -Haunt likewise will no longer place ghosts out of sight, when aimed at a distant enemy. This was awkward, since it was possible for it to appear as though the spell did nothing (and in practice, it might *actually* do nothing, since the ghosts can't attack from there anyway). I expect this is a small buff in practice, but I think it's just good policy. -Scroll of Butterflies uses trivially different placement logic for its more distant butterflies (but note that the edited comment was always inaccurate, due to a lack of the MG_FORCE_PLACE flag. It chose a random spot within 2 tiles of another random spot that was within 3 tiles, irrespective of whether the first chosen spot was empty, and thus always effectively picked a spot with 5 tiles. Since ?butterflies current behavior seems good to me, I've not elected to change the code to fit the comment, but rather the comment to fit the code.) -------------------------------------------------------------------------------- 1689aa8ef3 | DracoOmega | 2024-10-02 15:38:33 -0230 Slightly change find_habitable_spot_near and document This adds the ability to set an 'exclude_radius' to the search, which will ignore all spaces within that radius of the center point. This expands and replaces the old 'allow_center' argument (since an exclude_radius of -1 is equivalent to false, and 0 to true). It also generalizes the 'in_player_sight' argument to work for any actor, by passing a pointer to that actor. Both of these will be used by a subsequent commit. (I kind of dislike how radius and exclude_radius arguments aren't next to each other, but since the latter rarely needs to be specified, I opted to put it afterward so that it can be optional.) The default behavior for this method is now equivalent to if allow_center was true. Many uses of this method specified false, but I have not preserved this behavior since in almost all cases it did nothing - the center point in many searches is already occupied and thus will already be ignored. The time savings of skipping a single cell check is irrelevant compared to a simpler method call, imo. -------------------------------------------------------------------------------- f263a04dbc | DracoOmega | 2024-10-02 15:38:33 -0230 Simplify monster_habitable_grid and refactor monster_habitable_grid allowed specifying a 'wanted feature', which could cause the function to return false even if the primary feature being queried was otherwise habitable. While technically more flexible than this, the only uses of this in the codebase were to prevent amphibious/flying monsters in Shoals (and Crypt zombies) from spawning in deep water, where the player might not even encounter them. I think the entire notion of a 'wanted feature' was unnecessarily confusing for this purpose, so I have replaced mgen_data.preferred_grid_feature with a simple flag, MG_PREFER_LAND, which accomplishes the same behavior as if preferred_grid_feature had been set to DNGN_FLOOR before this commit. I have also removed the wanted_grid argument from monster_habitable_grid altogether.) At the same time, since monster_habitable_grid actually took a *feature* as its argument, rather than a position, I renamed it monster_habitable_feat instead (similar to the naming convention of other existing functions), and wrote a simple monster_habitable_grid which takes a coord_def as an argument instead, slightly shortening a very common way that monster_habitable_grid was already used. There should be no functional change from this commit. -------------------------------------------------------------------------------- 654a16ed5e | DracoOmega | 2024-10-02 15:38:33 -0230 Remove one-off code to handle Marionetting Hellfire Mortar With the new summon refactoring, this special case should no longer be necessary. -------------------------------------------------------------------------------- e900964f09 | DracoOmega | 2024-10-02 15:38:33 -0230 Allow sculpt simulacrum to use normal summon cap behavior Now that it should work properly for it. -------------------------------------------------------------------------------- 9c9fe8b57b | DracoOmega | 2024-10-02 15:38:33 -0230 Add a message channel for monster timeout / summon poof messages So that they can be consistently darkgrey. The most common of these were already colored that way by string-matching in default options, but many others were overlooked (eg: firewood withering away wasn't marked boring.). Rather than keep adding more strings to default options, set their interest level at the source (which is easier now due to recent refactoring!) (For the moment, I elected to keep Kiku wretches dying in default colors, unlike other timeouts. Maybe other people will think this is needless, but it's trivial to change now.) -------------------------------------------------------------------------------- 27754e092d | DracoOmega | 2024-10-02 15:38:33 -0230 Remove one-off handling of Awaken Vines Awaken Vines' implementation used multiple single-use props, an enchantment, and a custom removal function to manage what was *effectively* just a normal summon cap and summon/summoner relationship. Especially with the recent refactoring of summon handling to include non-abjurable creations, this is entirely unnecessary, so let's cut it all. (One bit of hard-to-even notice behavior that is not preserved by this restructuring is that snaplasher vines would instanty die if the dryad which created them ever lost LoS to them. This may have made some sense when dryads were normal enemies, but that hasn't been the case in over a decade.) -------------------------------------------------------------------------------- 5f5c15f4b7 | DracoOmega | 2024-10-02 15:38:33 -0230 More assorted tidying of monster_die -Use a macro to more cleanly check for all 'reset-style' killer_types in some places. -Move some cleanup-related code into monster_cleanup() -Tweak what monster death effects are blocked by exploding (will no longer allow Gozag worshippers to make a dancing weapon actually fall to the ground by using Firestarter) -Rename a confusingly-named and rarely used argument. -Use the new 'real_death' boolean to shorten a common grouping of death checks in many on-kill effects. -Add a small number of clarifying comments. This isn't comprehensive. There's quite a few things which *probably* should be in monster_cleanup() and aren't (which could matter in the multiple situations where monster_cleanup() is called without monster_die()). I also wanted to wrap a number of monster-specific death effects into a function similar to _player_on_kill_effects() but there's good reason for some of them to happen *before* death messaging and for some of them to happen *afterward* (and while almost none of them trigger for non-real_deaths, a couple need to). But this still fixes several small bugs (and hopefully doesn't introduce as many new ones!) while being slightly tidier. -------------------------------------------------------------------------------- 400f9744fa | DracoOmega | 2024-10-02 15:38:33 -0230 Pull a variety of player on-kill benefits into a new function Various benefits that were triggered upon the player or their allies killing monsters (such as heal-on-kills, berserk extension, or Fugue of the Fallen) were scattered all over monster_die() - some of them before the death message for the monster would even be printed! For clarity's sake, I have pulled all of these that do not concern corpse-based necromancy into a new function: _player_on_kill_effects. The hope is that this improves clarity somewhat by centralizing such things together and giving them a designated 'place'. I've also removed a few logical checks that seemed unnecessary. There should be almost no deliberate functional change (besides some messages being re-ordered). -------------------------------------------------------------------------------- d9015ae29d | DracoOmega | 2024-10-02 15:38:33 -0230 Fix inner flame explosion message order for summons This was incorrect, even before the recent refactoring. If an abjurable summon exploded from inner flame, the message log would print something like: "The wolf spider disappears in a puff of smoke. The wolf spider explodes!". Now it will properly print a summon poof message afterward, instead (by saving it in the explosion_fineff itself). -------------------------------------------------------------------------------- 9931db76b1 | DracoOmega | 2024-10-02 15:38:32 -0230 Refactor death message handling for summons and death cloud handling Previously, clouds left upon the death of abjurable summons (but also chaos spawn death clouds and the flashing balestra death animation) were handled by _monster_die_cloud while many clouds left by other monsters upon death (such as fire vorticies or simulacra) were handled elsewhere. Additionally, _monster_die_cloud was the function responsible for printing expiry messages for abjurable summons (which led to minor nits like living spells having a custom expirely message which could never be printed because they were set to not leave clouds upon death.) Tidy this up a little. _monster_die_cloud covers more cases of monsters leaving clouds, _print_summon_poof_message now covers messaging seperately of leaving clouds, flashing balestra handling is moved to the block of other dancing weapon special cases. There are a few minor functional changes. For one, fire vorticies will no longer vanish without a message, and will leave a fire cloud when they expire instead of just when they are destroyed (which is a deliberate change). There may be some other more minor effects (primarily with messaging). -------------------------------------------------------------------------------- 79d8e41889 | DracoOmega | 2024-10-02 15:38:32 -0230 Remove (hopefully) unused pluralization code from summoned_poof_msg While summoned_poof_msg was normally used for summoned monsters disappearing, it could also be called with an item argument, which was used when monsters opted to drop a summoned item (and that item subsequently disappeared). The pluralization code was used only in this place, but I do not believe it is actually possible for living monsters to drop summoned items in a way the player can see it. (They sometimes do during their creation, but this is silent, and they specifically can't pick up new gear which might cause them to swap out their old gear.) In the interest of simplification, I have removed this code and placed an assert in monster::drop_item to catch the possibility that some case still exists where a summoned item can become non-silently dropped. -------------------------------------------------------------------------------- 80a12c77ea | DracoOmega | 2024-10-02 15:38:32 -0230 Remove a deeply misleading comment To what degree this was ever true, it hasn't been for over a decade. -------------------------------------------------------------------------------- ecef227842 | DracoOmega | 2024-10-02 15:38:32 -0230 Rename KILL_DISMISSED to KILL_RESET_KEEP_ITEMS and use it less KILL_DISMISSED was identical to KILL_RESET except that non-summoned items in the monster's inventory would be dropped, but whether one or the other was used for a given function call was rather arbitrary (and it wasn't intuitively clear how little difference there was without looking it up.) This commit renames the enum value to be more explicit about what it does and then changes most uses of KILL_DISMISSED to KILL_RESET instead. In the overwhelming majority of cases this was either used for monsters that can't drop items in the first place (ie: ioods, foxfires), or used after manually setting MF_HARD_RESET on a monster (which is just a longer way to do the same thing KILL_RESET does anyway). A few points in monster_die even converted KILL_RESET to KILL_DISMISSED for specific enemies, like fire vorticies for no reason I can determine (they can't have items, either!) I have kept KILL_RESET_KEEP_ITEMS in the couple cases where preserving the items is deliberate. (It's *possible* that converting KILL_RESET to KILL_DISMISSED for dancing weapons was intended to serve some actual function, but I'm not sure there's any situation that should KILL_RESET an arbitrary monster and want any piece of it to remain. If I've overlooked a good reason, that bit can be changed back again.) -------------------------------------------------------------------------------- 98d3b7e5f7 | DracoOmega | 2024-10-02 15:38:32 -0230 Remove the 'wizard' argument from monster_die() This was almost entirely redundant with using KILL_RESET / KILL_DISMISSED with the 'silent' argument true. The only actual difference I could find (summoned monsters still making clouds for non-wizmode reset kills) is arguably a bug and will probably be changed later. -------------------------------------------------------------------------------- fab00f013d | DracoOmega | 2024-10-02 15:38:32 -0230 Use KILL_TIMEOUT for ENCH_SLOWLY_DYING and reorganize death messages This attempts to make KILL_TIMEOUT the universal killer_type for a monster dying due to time, as well as centralize the unique death messages for various sorts of temporary monsters in the same place a little better. -------------------------------------------------------------------------------- 714e8dfca1 | DracoOmega | 2024-10-02 15:38:32 -0230 Fix a minor message issue with Fugue and wretches Due to a misplaced bracket, all deaths of Kiku wretches would generate a Fugue stack, even if the spell wasn't active. This didn't actually *do* anything without the spell being active (and stacks were set to 0 again whenever you actually cast it), but it would still print the message for reaching maximum stacks upon the 7th wretch death since the last time the player cast the spell. -------------------------------------------------------------------------------- fc3e015edf | DracoOmega | 2024-10-02 15:38:32 -0230 Remove KILL_MISCAST and replace with KILL_NON_ACTOR This was essentially identical to KILL_NON_ACTOR in effect, and not even used consistently for miscasts; ones caused by Spellbinder would use either KILL_YOU or KILL_MON depending on who wielded it and the Wild Magic card uses KILL_YOU. But mummy death curses (despite not being miscast for many years) *did* use KILL_MISCAST - at least when they came from actual mummies. I think this is just confusing and doesn't add anything of value to the codebase that I can see. Note: this enum is only for deaths of *monsters* and has nothing to do with ktypes regarding the player being killed by miscasts. -------------------------------------------------------------------------------- c0f3b9e138 | DracoOmega | 2024-10-02 15:38:32 -0230 Rename KILL_MISC to KILL_NON_ACTOR This better-communicates the largest use of it (direct damage done by things which are neither the player nor monsters, such as neutral clouds or some god actions). It is still used for a few things that arguably don't fit under this definition, but some of them will be moved out again shortly. -------------------------------------------------------------------------------- 2912c12445 | DracoOmega | 2024-10-02 15:38:32 -0230 Don't use KILL_MISC for tentacle cleanup deaths Tentacle segments are killed and recreated constantly in the background, and to prevent these 'internal' kills from causing infinite recursion (via killing a segment leading to trying to destroy the whole tentacle leading to killing a segment, etc.) KILL_MISC kills specifically will not clean up the rest of the tentacle. ...except KILL_MISC is used for actual sources of damage in the game, which can kill a tentacle segment in the traditional way. If a tentacle takes damage this way (eg: from some Xom actions or vault cloud generators, among other things), it can cause affected sections to disappear in puffs of smoke or even appear temporarily disconnected. Since this internal tentacle cleanup is something *very* specific, I've given it its own killer_type to avoid any possible ambiguities. No other effect should ever use this. -------------------------------------------------------------------------------- 2d1a5b4622 | DracoOmega | 2024-10-02 15:38:32 -0230 Add M_UNSTABLE flag to handle removing some monsters on level change Several monsters do not play well with how 'catchup' turns work in Crawl upon returning to a previous floor - hellfire mortar fires multiple times in a row, ball lightning blow up near where they were the last time the player was there, even if hundreds of turns have passed. Removing a few of these upon level exit was already handled, but some were not, and this generalizes all that by adding a monster flag for 'always remove summoned instances of this monster when the player leaves the level they're on'. (Note: this is *not* already handled by the code to remove player summons upon leaving a level, since this is an issue for hostile ones as well.) -------------------------------------------------------------------------------- fb19e97205 | DracoOmega | 2024-10-02 15:38:32 -0230 Refactor backend handling of summons / created monsters (Part 1) Crawl's handling of summoned and not-technically-summoned-but-close monsters is a complicated and somewhat untidy thing that makes it harder to generalize behavior between conventional summons and other monsters that share many of their properties, without considerable special cases and bespoke code in various places. For instance, monsters created by the player can use one of *4* different enchantments for their timer, which can result in those monsters expiring with with 4 different killer_types (but not even on a 1-to-1 basis with which timer is used!) that results in sometimes-unclear differences in behavior. It's also needlessly verbose to ask if a given monster was created by a given spell, easy to forget to check for all 4 different ways a monster can be temporary here, and many other issues that have resulted in various bugs over time (several of which were outstanding at the time of this commit.) This is an attempt to significantly clean up and better-document this entire system, as well as make it easier to interact with and fix a number of bugs in the process. Major changes: -ENCH_ABJ, ENCH_FAKE_ABJURATION, and ENCH_SHORT_LIVED are all folded into a single timer: ENCH_SUMMON_TIMER. (Save-compat code will convert deprecated enchantments into the new standard timer). -Rather than differentiate summon behavior by which timer is used, two monster flags are added (MF_ACTUAL_SUMMON and MF_PERSISTS) to cover the most clear and actually-meaningful differences that already existed. -MF_ACTUAL_SUMMON indicates the a monster is abjurable, will produce a poof message (and possibly clouds) when it dies - regardless of whether this was by timeout or being directly killed - and will not produce other death effects (like simulacrum freezing clouds) when it times out. -MF_PERSISTS indicates that a monster should not be removed when its creator dies (ie: the current behavior for ball lightning and prisms). Both of these flags can be easily set by bool parameters to mgen_data::set_summoned() (which has a new method signature). Otherwise, all summons follow the same set of behaviors. -monster::is_summoned() will now return true for any sort of 'temporary' created monster, regardless of specifically its type. It no longer uses outparams. -monster::is_summoned_by() allows easier querying of summon type (and summoner, if desired). -Summon durations specified in mgen_data now use auts instead of 'abjuration degree'. The latter was coarse-grained in a way that made it problematic to work with for effects that wanted to scale duration with power (sometimes resulting in durations that could vary randomly between 8-200+ turns!), but also: durations for things like ball lightning were too short to fit in even the smallest degree, so this change was strictly necessary -summ_dur(degree) provides a short-hand to emulate the old duration behavior, where desired. There are places this ought to be changed, but I have not yet done a thorough review of them, and summon duration of most things should generally remain unchanged by this commit. -The duration of things that used a default ENCH_SHORT_LIVED is adjusted slightly (instead of 2.4 - 8.4 aut, they use 4-7) -Planned-but-not-fully-implemented: All deaths due to summon timers expiring will use KILL_TIMEOUT rather than the mishmash of things they currently do. (Not only will this refactoring make it easier to add forgecraft creations with less special-cased code, but ideally the UI will be slightly improved by showing the summon dot icon on exactly those monsters which will vanish with their creator and never on those which will not - removing some ambiguity that players have complained about in past.) Note: some changes regarding proper tidiness and unification of killer_type to make all of the above statements work properly, will be done in subsequent commits. -------------------------------------------------------------------------------- b498025f53 | DracoOmega | 2024-10-02 15:38:31 -0230 Remove the 'god' argument from most player summoning spells Despite being in the method signature of many, many spells, this argument was almost never used, and in the rare situations where it *was* used, mostly never mattered. It set the god of the summoned monster to a given value, but monster gods (especially of player-friendly summons) aren't displayed to the player in nearly any situation outside of the cast messages of priests (which none of these spells could even create). Despite several comments in spl-summoning.cc saying otherwise, this argument was not the 'god of the caster' and in fact one of the only ways it could be anything other than GOD_NO_GOD for many spells was when Xom cast the spell through the player, which would make the resulting monster worship Xom (not that the player could tell the difference). Approximately the only functional changes are: -If Xom makes the player cast Summon Horrible Things, the player has the normal 1-in-5 chance to lose int instead of 0. (This very minor downside hasn't been able to be fatal in ages, and double-sided Xom effects are something Xom is already full of.) -Summons created by player spell cast by Xom will no longer reduce tension by an exaggerated amount. Ones created by Xom code directly still will (though this may be removed in a future commit) -------------------------------------------------------------------------------- ce7c55b1ec | regret-index | 2024-10-02 15:27:32 -0230 Vault review, clean-up edition Worthy of note: * A variety of overflow altars now have a low chance to be used in V as empty room choices, to further try and help the branch's flavour by making given rooms dedicated to given gods. (This also takes from Depths decor options, but that branch has extreme counts of potential choices to take from). Only a select number of gods show up in this capacity; Okawaru, for the metal and gifts; Gozag, for the gold; Zin, for the law and metal themes, Sif Muna, as the main magic god with material possessions (as nearly all the ironbound enemies are magical), plus very rare sightings of Ely and TSO to join Zin. * After adjusting for their respective weights, I've buffed the two weakest Shoals ends (the original huts and the second-ever caves) and nerfed the second-highest after the recently-adjusted holies end (storm_palace), to try and normalize end threat a little more. This does increase the average Shoals threat overall, but Shoals is doing slightly worse than the other three Lair branches currently (and the branch really needs a fresh monster infusion, honestly), so it should be fine. * New lua functions now cover regularly-reused granite statue and metal statue redefinitions as 5f48996 set up for decorated floor options, which should make diggability and console colours be far more consistent between feature uses, trim down a large bunch of repeated boilerplate throughout .des files, and also be much easier to explain in future documentation- now all a vault has to do to get one of these various themed pieces is specifying the right glyph and feature name for a given function call. -------------------------------------------------------------------------------- 6f3bd40977 | David Lawrence Ramsey | 2024-09-30 15:07:27 -0500 Fix typo. -------------------------------------------------------------------------------- 1636c52b2f | Nikolai Lavsky | 2024-09-30 18:51:05 +0300 feat: make &H reset more cooldowns and heal more statuses This commit lets wizmode super healing cure -Recite, -Gavotte, rF-, and -Word and also fully charge Grave Claw. -------------------------------------------------------------------------------- 81d07ba6e8 | patrick | 2024-09-30 08:55:05 -0400 Fix small typo in vaults_rooms_hard.des It's been bugging me for a while. -------------------------------------------------------------------------------- 860b457654 | regret-index | 2024-09-30 04:32:30 -0230 New Coglin paper doll tile (pianoman523) It gets somewhat awkwardly covered up by the default pants characters get, but it's a reasonable improvement in terms of more obviously being a mechanical harness than prior. -------------------------------------------------------------------------------- 407acacb1d | Brian Power | 2024-09-29 23:48:13 -0230 Fix #4063: Quad damage (Sprint) is pluralised to "quad damagi" (#4064) [Closes #4063. Closes #4064.] -------------------------------------------------------------------------------- 0e6af4a6f9 | RypoFalem | 2024-09-29 23:17:51 -0230 Update quickstart.md (#4057) Replace a mention of Hill Orc with Mountain Dwarf. Make the layout section less console-specific. Mention that heavy armour also hampers launcher attacks. [Closes #4057.] -------------------------------------------------------------------------------- fc8bfd6970 | regret-index | 2024-09-29 23:07:41 -0230 Tweak the text of large HP costs on abilities The previous ambigious cost of "Pain" was used on four different abilities: * Kiku's Brand Weapon With Pain: invoking Torment * Lugonu's Enter the Abyss: a completely random but non-lethal HP amount * Yred's Bind Soul: 1/3rd of HP, returned on soul-binding * Makhleb's Brand Self: 2/3rds of HP Mentioning in abilities that this merely "will hurt you" is quite the understatement, and was also entirely false for Kiku if the player is undead or a wisp. "Pain" is also a relatively overloaded term in-game, with both a weapon brand and a monster spell that both don't hurt nearly as much. As such, I've added another ability flag to differentiate Kiku's Torment cost from the other costs, and more precisely state in the other ability's cost descriptions that one will lose a large fraction of their HP. Hopefully, this should prevent people from using Kiku and Makhleb 6* gifts mid-fight as can be quite dangerous. -------------------------------------------------------------------------------- 0e69982c27 | regret-index | 2024-09-28 23:49:36 -0230 Prevent most (but not all) auras from affecting firewood (Sastreii) This was less obvious when the main aura being deployed was torpor snails and thus players only saw them when a wand of charming or a scroll of summoning got a friendly torpor snail to affect firewood. Now that polterguardians can make rare V plants repel missiles and apises can double the vigour of nearby Shoals or Holy Pan plants (yet not prevent them from withering away entirely), this is conspicuous enough that it's now disabled for most auras by default. (The main exception here is for martyred shades, as Fedhas doesn't complain about summoning ghosts these days and they definitely _should_ be able to support player or enemy briar patches. For now, unless further aura effects produce a second exception, said injury bond is the only one that still affects firewood.) -------------------------------------------------------------------------------- 437a092d51 | regret-index | 2024-09-28 23:41:03 -0230 New tiny tiles (Sastreii) Scrub nettles and boggarts, to be more specific. (To offset adding a few more tiles into rltiles/UNUSED for the sake of future potential placeholders, I've also cut a few more of what was in the folder.) -------------------------------------------------------------------------------- 5f489960a8 | regret-index | 2024-09-28 23:04:15 -0230 New decorations: flags, flowers, mop buckets, fur brushes All of these employ the previous commit's "decorative floor" feature. As a result, they are all mutually exclusive in appearances with each other, and all thus lack messages or solidity. Still, they should help liven up the Dungeon with various non-obtrusive themes. * "Orcish standards" appear in the more statistically dangerous orc bailies, a few of the blander orc vaults outside of their branch, and some of the least decorated Orc vaults in the branch, so these vaults have more than orcish idols and altars of Beogh. * "Infernal standards" mostly appear in Gehenna, so the branch has something specific to it (compare 9c46c80.) * Regular "mop and bucket" decorations appear in Vaults, with the rare occasional other use in D and other humanoid-centric branches like Snake. We've got a lot of random generic boxes made by layout generators already- given closets and corners might as well be handed a small bit of flavour and purpose. * "Bloodied mop and bucket" decorations mostly appear in Dis and Makhleb vaults (compare to pillars of rime and infernal standards). * "Garden patches" and "floral vases" appear in various housing and garden locations (extending some of 5c82c18 while also giving them descriptions), with the latter also getting a few graveyard uses. * "Flower patches" appear in various forests, grassy locales, and around a few killer bee vaults. * "Mourning vases" and "broken floral vases" appear in ruins, undead vaults, memorial graveyards, and so on and so forth. * "Fur piles", while very rare, mostly appear in Vaults (where they're brushing the various yaktaurs) and other yak vaults. All of these tiles are by ploomutoo, as was added in 76a730d. I trimmed out and made various colour-cyclings of the cobblestone garden flowers for more visual variety in flower patches. To ease further tile additions using these features and to make the colouration schemas more consistent for any other uses, these all use a predefined list in dlua/vault.lua- just use something like ": decorative_floor(_G, 'p', "flower patch")" in a given vault. (Some other repeated feature renames / recolours / retiling, like 0.32's various statues, probably should get this same sort of ease in the future, to trim down on boilerplate and make it easier to document and teach other would-be users of such in the future.) Thanks to DracoOmega for helping edit these new decorative feature descriptions. (I also resorted dat/descript/features.txt a little while adding these new descriptions, to split apart portals from other vaults.) -------------------------------------------------------------------------------- 1f37800eb1 | regret-index | 2024-09-28 23:04:14 -0230 Placeholder feature: decorative floor This is a bit of a placeholder hack for a large number of good tile submissions in 76a730d and potential additional tile additions over time, that don't want to actually be executed as rapidly-destructible or diggable statues, solely placed on top of walls, or heavily written up for character-specific messaging as fountains and food incidentally heavily rely upon. (There are also no features left that entirely make sense for them to be renames for, after fountains gained flavour messages in 8966e59 to help justify their whole lot. It would also add an indefinite number of additional floor tiles to feign these otherwise being properly layered on top of given branch layouts, and would lose out on writing up any descriptions for them.) Without any other relatively reasonable ways to approach such, and with nearly a dozen different potential tiles workable for these purposes, I am using a hack of a new feature solely meant to be redefined, which for all intents and purposes is floor with a different glyph. (As with the addition of food caches back in 831329d, these are all walkable features that shouldn't interrupt terrain transformation in any fashion, and which Xom doesn't interact with.) Ideally, these cases would instead be handled with a significant rewrite to the vault code for KFEAT to allow per-instance per-glyph redefinitions of names and colours and tiles, in much the same way as vault monsters, scythes, and hammers work. It'd deal with various other issues (like the current inability to use both dead trees and live trees in the same vault, or the inability to use more than two types of statues) and smoothen over a fair bit of this code. Until then, the relatively invisible hack should be worth the straightforward additional flavour possibilities. (Note: I am 100% against adding almost anything else in this space, like DNGN_METAL_STATUE_2 or DNGN_DECORATIVE_FLOOR_2, solely for the sake of vaults that want to deploy multiples of these at once. Said rewrite should happen before stretching this hack any further, as the cost of having a single feature wouldn't be nearly as bad as adding further ones.) -------------------------------------------------------------------------------- 12f2da7b15 | gammafunk | 2024-09-28 15:34:33 -0500 fix: Correct a filename to fix the build The Makefile expects the splash screen filenames to have a prefix of "title_". Also clean up some tabs in the Makefile itself. -------------------------------------------------------------------------------- 9ec8a70db8 | Nicholas Feinberg | 2024-09-27 12:17:27 -0700 New Oni Summoner splash (benadryl) -------------------------------------------------------------------------------- 660b845a87 | gammafunk | 2024-09-25 20:41:49 -0500 doc: Update the debian changelog for 0.32.1 (cherry picked from commit f5deb65975461a56ac8751e43d5d0e34f98eae4c) -------------------------------------------------------------------------------- 533394c400 | gammafunk | 2024-09-25 20:41:47 -0500 doc: Update the changelog for 0.32.1 (cherry picked from commit ba77377449e8c9fd173e04de3e1cb4a329792bc7) -------------------------------------------------------------------------------- c1924735fe | DracoOmega | 2024-09-25 14:03:02 -0230 Fix apises giving monsters permanent max HP every turn (RoGGa) The apis aura, behind the scenes, was removing and re-adding the doubled vigor buff each turn. This theoretically would have no effect (dividing their doubled max HP by 2, then multiplying it by 2 again), but math in monster::scale_hp intended to prevent monsters from *losing* max HP after berserking, due to rounding, was causing each monster in the aura to gain 1 base max HP for every turn they were near the apis. This meant that by the time the player found the apis, monsters nearby might have gained hundreds of additional max HP! The solution in this commit is very quick and hacky. A better solution would involve actually storing the monster's 'original' max HP in some fashion. But since there are multiple stacking ways to modify this, and some care would be needed to make sure it did not introduce new bugs, I have opted for the simplest, quickest solution for the moment, to put a stop to a bug that will easily kill players. -------------------------------------------------------------------------------- 07630011bb | regret-index | 2024-09-25 01:52:00 -0230 Silence a build warning -------------------------------------------------------------------------------- 70dc07e95b | regret-index | 2024-09-25 01:07:21 -0230 Adjust the repulsion field mutation text (#4053) As the issue notes, 359da3a forgot to adjust this mutation's description of repel missiles, which this now fixes. -------------------------------------------------------------------------------- aa0487cc57 | regret-index | 2024-09-25 01:04:43 -0230 Add a description for Mass Regeneration (#4049) The addition of the Mass Regeneration monster spell in e97a2a3 forgot to include a written description for the spell. Closes #4049. -------------------------------------------------------------------------------- c7607e5391 | regret-index | 2024-09-24 23:27:22 -0230 Fix elves_outpost_lemuel's lua (#4050) I screwed up some brackets slightly in 8908559- this should place in each of its locations now. Tweaked some syntax slightly while I was here. Closes #4050. -------------------------------------------------------------------------------- 9c46c80674 | regret-index | 2024-09-24 22:25:16 -0230 Reuse pillars of rime as occasional Cocytus decor Another attempt to try and use what we already have available in game for another decorative purpose, to make Cocytus feel a little more Hell like instead of just being an ice zone with demons in it as ice caves already present. Compared to the usage of decorative boulders in d9500d9 and their replacement for piles of debris in 03d5c24, these don't list a movespeed or have use that itself is more active. (If people _are_ still going to be paranoid about them doing something, then those same people are probably still paranoid about granite statues or pillars of salt.) Also: by the time one's in Cocytus, most characters should also be readily easily able to break apart or pierce attack past an obstacle with only ~37 average HP and 15 AC, so I am experimenting a second time with using obstacles that don't start slowly dying on the slightest touch. It should distinguish it a little more as an actual new decoration, and they're not really placed in a branch that has lots of space or running around to encourage individually destroying them all. -------------------------------------------------------------------------------- c068db49a3 | regret-index | 2024-09-24 22:25:16 -0230 Don't claim stationary monsters can open doors As they can't, which is listed confusingly for ice blocks and pillars of both salt and rime (due to them depicting things frozen or saltified being able to wield equipment before they collapse entirely) plus Roxanne. -------------------------------------------------------------------------------- c0dc3ca754 | patrick | 2024-09-24 18:01:15 -0400 Fix up the custom gadgets shop Now that evokers are basically unrands, it's possible for one gadget shop to stock a good chunk of the evokers in your game. I've changed the inventory so it can only ever generate one evoker at once. -------------------------------------------------------------------------------- 4966338b9b | DracoOmega | 2024-09-24 17:09:16 -0230 Don't zap self with Magnavolt if standing in a dust cloud (monkooky) It didn't even warn the player, even. -------------------------------------------------------------------------------- 4e3108018c | regret-index | 2024-09-24 15:37:54 -0230 Make base jellies amorphous (Ogregutan, rypofalem) When I was working on cc540e3, I was replacing what were originally checks for monsters with the jelly genus, and forgot to actually adjust the base jelly monster itself. Whoops. (This mostly makes them immune to constriction and nets again.) -------------------------------------------------------------------------------- b29aa79de7 | regret-index | 2024-09-24 15:37:53 -0230 Two new holy tiles (Sastreii) Apis and ophan tiles, to be specific. Hopefully people will quickly associate the newer tiles with their new aura behaviours? -------------------------------------------------------------------------------- b8f47f2566 | regret-index | 2024-09-24 15:37:53 -0230 Give apises an aura of doubled vigour Apises are entirely vanilla monsters after they lost their weakness death curse effects, which is somewhat understandable (no resting off statuses whenever a monster dies (unless we made a completely different schema of needing to kill other monsters first, which would still be extremely weird flavour for an Elyvilon curse)). It is also very awkward, as holies are already struggling with being homogenous walls of stats without much to distinguish the each of them. They're thus prime material for giving a new gimmick. This passive aura of a status added in the prior commit that doubles enemy health (for all enemies besides other apises) should help on multiple fronts. Much like torpor snails, eyes, and various summoners, it should make them a high priority target, though they get to have solid melee damage (and slightly reduced HP than their current very high numbers) to help them stand out a little from those monsters. It also provides very direct Elyvilon flavour- they're using Divine Vigour on all of their allies- without the awkward inconsistency and low impact that more indirect means of healing allies could look like, and it heavily fits one of the kinds of flavour of what one might expect holy monsters to do compared to other holiness categories throughout the game. (This, of course, also comes with significant reworks to the vaults deploying apises to make them use far less apises- not that there's almost any of them in the game. This is most notable for heavily tweaking shoals_end_hellmonk_holy_island, which is also the top end of current Shoals end weight-adjusted kills; aside from a relatively slight amount of enemy tweaking, this also comes mostly with making the islands larger and adding marginally more randomized cover so that the whole level is far less densely concentrated, letting less of the level wake up and rush the player at once.) -------------------------------------------------------------------------------- e876008791 | regret-index | 2024-09-24 15:37:53 -0230 New monster buff: doubled vigour One troublesome part of making more monster designs for sufficient variety in several remaining branches is the lack of straightforward buffs available for monsters to apply to one another. (We _are_ using Battlecry or Might Other on eight different monsters at this point, as an obvious example.) It's not the most pressing matter, but additional buffs of reasonably straightforward and reusable capacities would help. This new doubled vigour buff extends relatively simply on another common status effect- berserk, which multiplies both melee damage and hp on monsters by 150%. This rare buff doesn't affect melee damage, but instead further increases health by 200% instead. Most uses of hostile healing beyond Major Healing (on two extended uniques) and innate regeneration don't really stand out that much, while this should be dramatic enough to notice. (Since it'll still rescale dealt damage after the status wears off, it also shouldn't be much more annoying in giving a monster longevity than berserk itself does). Admittedly, this buff should be used extremely sparingly as a result, and the current default duration is only as long as Berserk is. While this is mostly meant for an Elyvilon-themed monster in an upcoming commit (thus a name corresponding with the Divine Vigour invocation), this commit also slips it into the Call of Chaos list (where it can replace the extremely weak effect of agility to instead give the list something of high, brief notability besides haste, and thus actually be a dramatically relevant spell when cast) and onto Xom's hyper-buffing an ally action (where it can help the earlier xp end of possible provided allies not immediately die in various situations). Another home may show up for it in the full scope of time- but for now, it's actually relatively simple in-code, compared to a lot of other effects, so it shouldn't hurt any more than Agility somehow still sticking around does. -------------------------------------------------------------------------------- 23b886832e | DracoOmega | 2024-09-24 01:13:56 -0230 Don't claim 'You are here.' about tiles on other floors -------------------------------------------------------------------------------- 5e1e37f56a | DracoOmega | 2024-09-24 01:08:36 -0230 Don't allow performing actions on features on other levels (angelslayer) Related to the previous bug, it was possible to open/close doors on other floors, provided you were standing adjacent to the same coordinate on your present floor. You could also interact with transporters and worship at altars (and possibly other things?) -------------------------------------------------------------------------------- e40546fae5 | Aliscans | 2024-09-24 00:44:16 -0230 Don't let the player use off-level items with CMD_DISPLAY_MAP. _allowed_actions() had allowed commands such as (g)et for items on another level, so long as they have shared the player's co-ordinates. You could (say) pick up the orb of Zot from D:1, or "blink" through a wall using a suitably placed scroll. It now only allows "(g)o to location" for anything on another level. -------------------------------------------------------------------------------- d0a131fed7 | regret-index | 2024-09-23 02:21:44 -0230 Fix a teleport closet in nemelex_altar_shiori (Halvarca) The risks of compressing dense SUBST lines together combined with the no_tele_into flag, alas. -------------------------------------------------------------------------------- 3386d7afde | regret-index | 2024-09-23 02:21:44 -0230 Let player illusions copy a lot more statuses The _player_duration_to_mons_enchantment list for player illusions (whether sourced from Mara, Nemelex, or Xom) is extremely short, unchanged in 13 years. Unsurprisingly, we've added quite a few statuses over such a span of time, but next to none of them have been included in this list. It's got a strangely flavour-based comment explanation above it stating that "internal" "magical" effects are supposed to be gathered, but not "external" effects- I'm choosing to forego this entirely, due to such logic being both 1: non-obvious, 2: weird to single out when illusions also are ostenibly getting one's collective equipment offenses and defenses, and 3: extremely out of date with other added "internal" magic effects. The old list of copied effects were: invisibility, confusion, paralysis, slow, haste, might, berserk, and poison. The new list adds on: barbs, blind, brilliance, corrosion, dimensional anchor, fire vulnerability, frozen, lowered or heightened will, -move, petrifying, poison vulnerability, resistance, sap magic, sign of ruin, swiftness, toxic radiance, vitrification, and weak. This should make friendly illusions a little weaker (which is fine, since Nemelex is quite strong) but with a few key upside uses (in preserving some notable effects like brilliance and swiftness). It should also make hostile effects a bit scarier (unless one is already heavily debuffed, which covers for itself anyway), which is good due to Mara underperforming these days and Xom always being in need of more noticeably variation in threat. -------------------------------------------------------------------------------- ea5bc3604b | David Lawrence Ramsey | 2024-09-22 08:51:36 -0500 Fix typo. -------------------------------------------------------------------------------- b0d9199257 | regret-index | 2024-09-22 04:18:47 -0230 More tweaks to more recent monsters * Experience value increases are being handed out to thermic dynamos (which are taking up quite a high proportion of kills versus appearance numbers), undying armouries (who are successfully providing very dangerous support roles while being reasonably sturdy themselves), and nekomata (who are successfully completely terrifying if not properly respected, can squash most other tier-1 demons, and are currently tearing apart Pan visitors). Since the winrate went slightly down in the last tournament, this should be fine in terms of slightly increasing overall amounts of experience in the game, and it should also help the monster threat assessment displays. * Sin beasts continue to underperform in Pan- unsurprising, considering their relatively low damage as melee threats that late. Rather than buff Geryon much further, sin beasts spawning rather than being summoned now appear in duos- trampling non-draconic monsters tend to spawn in bands as is, and their support capacities of antimagic and repositioning for other monsters will work better when they get another body to work with. * To help make finding the original nekomata easier to parse, their summons now get a differently-recoloured tile to help mark them seperately from the original beyond the small purple summoned status dot. (I'm divided on doing what AF_SWARM does and sending the summons to be owned by original caster, as this will make them summon copies much faster due to individual ones not having their own effective summon cap- I want more data before revising such an implementation.) -------------------------------------------------------------------------------- 8e166ad1d2 | regret-index | 2024-09-22 03:58:17 -0230 New tileset for granite statues in Depths, Zot The long granite statue tile list has a number of upsides and downsides. It provides reasonably easy flavour for given vaults of civilisation or ruin, it highlights the highly cosmopolitan population of the Dungeon and its branches, and they always immediately serve as a conspicuous highlighting point to indicate the presence of a vault. However, they also have major issues- with 29 different statue tiles depicting completely different matters used in excess amounts throughout every single branch regardless of that branch's flavour, they immediately all blend into the mental background. A given arbitrary hall in D, Lair, Snake, Swamp, Elf, and Zot all share depictions of angels, demons, warriors, and snails, which actually homogenizes those branches with the very means a vault is meant to stand out with. While an extensive list of highly-specific stand-out decorations have been deployed throughout 0.32 and 0.33 to try and provide more specific flavour, they can't be deployed absolutely everywhere without losing their own distinctive flavour, and already in their sparser uses lead to concern and confusion about whether or not they actually do anything. As an attempt to deal with such issues, I'm starting what may be an extremely long-term project, to deploy overlapping but mostly completely different tilesets for granite statues in different branches corresponding to their contents and flavour both. As I have plenty of artistic limitations, the bulk of what I'm deploying here is admittedly recolours using current tiles, unused tiles, and replaced tiles. Still, I am adamant that this overall effort is worthwhile for making a statue actually have any deliberate purpose rather than being effectively random noise in over 75% of their hundreds of uses. This commit starts off with Depths and Zot, branches that already heavily want to stand out as dramatic for being the end of a regular three-rune game. These statue sets include focusing down on demons, not-yet-walking tomes, liches, spriggans, and varying depictions of orb guardians over the ages. Hopefully they'll succeed at making Depths and Zot feel more coherent in their specific flavour, and the palette + statue tiles they'll share amongst themselves but not other branches will hopefully help connect the two branches yet further. "New" tile sources: * Tomes statue - Ploomutoo's decorative books. * Spriggan, vampiric fang statues - Coolio's spriggan berserker and mimic tiles. * Asmodeus, devil statues - roctavian's non-tall Asmodeus and blue devil. * Lich, seraph, serpent and old orb guardian statues - Denzi's old 32x32 and 64x64 tiles. -------------------------------------------------------------------------------- 9b1a4445c4 | regret-index | 2024-09-22 03:58:17 -0230 New tengu tiles (Sastreii) Wonderfully sharp tilework as is usual. (I quickly threw together a new Shadowslip base tengu tile, since it was missing from the submission and those are relatively simple tiles to make. Maybe something else besides the tengu conjurer can get a goofy wizard hat that doesn't blend in so much with the tile in the future?) -------------------------------------------------------------------------------- f64d002df9 | regret-index | 2024-09-22 03:58:17 -0230 New decorations: weird machinery Both of these new, very rare, and harmless statue-variants are using pieces from the large tile submission by ploomutoo in 76a730d. Since they're much more advanced technology than is usual for the rest of the Dungeon, they're currently solely meant to be used in Wizlabs (where they can join conduits in being weird magicwork equipment) and Zot (where electric golems have been running around for decades, which has other sci-fi references in it, and which has always wanted to seem more notably different from the rest of the Dungeon). The enigmatic dynamoes are flavoured around knowing as little as possible about the machine, while the nascence circuits are flavoured around inexplicably knowing its exact purpose in making constructs. The duality of this should be cute enough to justify such an isolated shift in technological purpose (and neither actually implies that much more fancy capabilities than what iron and electric golems already imply). Both are only deployed in already relatively weird vaults or wizlabs that already focus on construct and mystery themes. (There have been some disagreements between devs about how much these tiles and other vault statues should be deployed, so for now, they're only in a handful of vaults each. Several other decorative statues and petrified trees are in less, so this is fine for now. In the future, there should probably be more overall decoration options, which will also help figure out what exact tones and contents each branch wants.) -------------------------------------------------------------------------------- 89085595bf | regret-index | 2024-09-22 03:58:16 -0230 Ever-recurring vault review Of note: * grunt_temple_overflow_holy_war uses rock walls for wall_catacombs, so it matches the use of that rock in serial_column_ruins. * st's old swamp vaults now have several still-relatively-old Swamp monsters added to them so that they're less monotonously close to the Swamp rune vaults (since they lack the sheer number to hold any of the same interest said rune vaults also possess). * elves_outpost_lemuel and sword_in_stone are now rescaled earlier on, so they're not quite so aggressive with pre-Lair threats like e.g. 5.5 zephyrmancers. * Chaos zig floors no longer include greater demons (as proteans provide plenty of non-pan-lord variety and other floors emphasize plenty of greater demons at this point), while Vestibule zig floors use slightly slower amounts of silent spectres (as they become redundant after a certain point versus the actual threats of a floor) in exchange for more greater demons. -------------------------------------------------------------------------------- 2999c8d83f | patrick | 2024-09-21 23:06:20 -0400 Add a quote for the hand cannon. -------------------------------------------------------------------------------- d67f649228 | DracoOmega | 2024-09-20 02:43:18 -0230 Don't attack an exponential number of times with cleaving quick blades (ie: if you have the Cleave status from Xom) The second attack against each target would initiate an entire new series of attacks against every adjacent enemy, which grew *wildly* out of hand with many nearby enemies. If you were sufficiently bad at killing them (maybe only possible in wizmode), this could even crash the game. Instead, only determine cleave targets from the first attack. -------------------------------------------------------------------------------- 3f967fc499 | regret-index | 2024-09-19 20:07:49 -0230 Hatch off a spider teleport island (#3611) I'm not the most worried about people using their last blinking scrolls to leap onto no_tele_into islands and having absolutely no other ways to get out, but we might as well be consistent about handling such through hatches. -------------------------------------------------------------------------------- 6e02436c18 | regret-index | 2024-09-19 20:06:06 -0230 Fix an Abyss crash (Implojin) ae9bbc2 screwed up Abyss feature conversion (as I had been indecisive as to whether or not fountains of eyes should be handled in sanitize_feature or push_features_to_abyss), and should now properly handle weird terrain again. -------------------------------------------------------------------------------- b814bfba8c | regret-index | 2024-09-19 19:55:38 -0230 Properly contain a runed door (#4040) minmay_the_grid_triangle_9x9_subtriangle didn't account for subvault usages that would connect in the backmost part- I've had to squish in the vault to make sure it's sealed in. This sometimes means that there's no actual monsters behind a runed door, but the vault creator has a deep antipathy against NSUBST and I'd need to review the entire rest of this file if I was going to make that more consistent anyway. Closes #4040. -------------------------------------------------------------------------------- 4cb121a70e | regret-index | 2024-09-19 19:48:14 -0230 Make the Robe of Folly actually a dull grey (#3787) The 16-year-old rltiles tile for the Robe of Folly has never actually matched its description as "a dull grey robe", a description roughly equally old. With a new fanciful Robe of Augmentation tile replacing a previously grey tile, I've quickly tweaked that old Augmentation tile to be both a dull grey and stained like the old Robe of Folly tile was. Closes #3787. -------------------------------------------------------------------------------- af0e7bad45 | regret-index | 2024-09-19 19:31:05 -0230 New default meat cache tile (pianoman523) Modified to be slightly redder than the original submission- they may be mostly cured and smoked meats, but they should also parse as meat. -------------------------------------------------------------------------------- 675ddfb807 | regret-index | 2024-09-19 18:48:41 -0230 A wide variety of new tiles (CanOfWorms) New Tiles for the Robe of Augmentation, Firestarter, the rarely-seen base forms for shapeshifter monsters and glowing shapeshifters, and living spells now in newly different shades depending on the spell they'll cast. There's also a new a great orb of eyes tile that I can't help but see a face in, and have thus mirrored to face left (as every single monster besides the one literally-sleepwalking monster does). We'll see how it feels in practice. -------------------------------------------------------------------------------- 22c7523c43 | regret-index | 2024-09-19 16:49:52 -0230 Fix a mutation text typo (CanOfWorms) -------------------------------------------------------------------------------- b1f659f69e | Nicholas Feinberg | 2024-09-19 09:08:50 -0700 Convert monster_shout to use a reference As a demonstration, and also cleanup. -------------------------------------------------------------------------------- 4d60b030d2 | David Lawrence Ramsey | 2024-09-18 23:38:10 -0500 Rename Agonizing Touch to Agonising Touch. -------------------------------------------------------------------------------- 39ec392c86 | David Lawrence Ramsey | 2024-09-18 23:25:29 -0500 Fix typos and spelling. -------------------------------------------------------------------------------- 36d77bed45 | Index | 2024-09-19 01:49:17 -0230 Fix crash in Xom's wave of despair effect (#4037) If `place_monster_corpse` returns nullptr, the game crashes when trying to call `turn_corpse_into_skeleton`. Possible when placing a skeleton on a terrain feature that destroys items, like lava. (`move_item_to_grid` destroys the would-be corpse item) Example crash log: https://underhound.eu/crawl/morgue/seandewar5/crash-seandewar5-20240902-225318.t xt -------------------------------------------------------------------------------- a16d74b5a3 | regret-index | 2024-09-19 01:48:19 -0230 Revive ancient pizza memes (pianoman523) Add a new cache of meat tile by pianoman523 that clearly is Just A Pizza with slight extras. Since caches of meat are meant to convey a wider variety of meal options beyond pizza itself, the odds of seeing it out in the wild are relatively low compared to the current placeholder sausage + jerky tile, but it _can_ be specified by a vault, as has now been done for a few old vaults and with the revival of one old food vault. -------------------------------------------------------------------------------- cdc6e31f64 | regret-index | 2024-09-19 01:03:32 -0230 Reorganize monspell.txt (completely) and rltiles/UNUSED folder (a little) * Removed some tiles in the UNUSED folder otherwise already in use, renamed more &s as .small.pngs, and moved some more tiles to proper locations. * unused/armour/cornuthaum.png is entirely supplanted by item/armour/headgear/wizard_hat.png and is thus no longer stored. * monspell.txt has been alphabetized heavily, had several removed spells or specific-spell monster cast lines cleaned out, and had a number of entries placed in their right header sections. Hopefully, having an already alphabetized set of lists should make this have far less decay and rot set into the entire arrangement over the next years. -------------------------------------------------------------------------------- a3ff4ff344 | regret-index | 2024-09-18 21:02:02 -0230 New creepy-crawly tiles (Sastreii) New brain worm and culicivora tiles, to be specific. -------------------------------------------------------------------------------- 37ed16d397 | regret-index | 2024-09-18 19:46:00 -0230 Fix gold_lair_mu's teleport islands (#3612), update it The bug report issue pointed out some teleport islands, which I've handled here through hatches since it's not the most compactly threatening vault by any real margin. While I'm here, I also fiddled with the header to fit more house style matters, removed oklob plants entirely as are harmless at Depths depth, and doubled the golden dragon count (to two) due to golden dragons no longer being such a rare highlight with the reworking of D:16-27 into Depths. -------------------------------------------------------------------------------- 97551ef1b1 | regret-index | 2024-09-18 05:41:52 -0230 Adjust blizzard demon flavour, messaging, substance (Lici, acrobat) With blizzard demons having had a formless (and angry) crackling cloud tile for over a dozen years (e970459), they can reasonably count as insubstantial. With c2ce1f5 having changed their shape out of a humanoid state, their Airstrike message has been screwed up (not that it's ever really clear they ever had conventional arms), so they now have a custom. arm / hand name string. With a deeply generic elemental description since their inception in caa05f8 (not a single other demon is even just described as "greater"), they can do with even the slightest bit of emotion-driven flavour in their description and cast messages. -------------------------------------------------------------------------------- 4c57dba787 | regret-index | 2024-09-18 00:13:34 -0230 Fix an include error 727ca9e forgot to include coord-def.h in mon-clone.h adding a new default argument for clone_mons. Weirdly enough, regular compiliation didn't complain at all about this, probably due to chain includes. -------------------------------------------------------------------------------- 8afca07a99 | regret-index | 2024-09-18 00:05:44 -0230 Fix the build Forgot to not cast players as monsters in 9f88647. -------------------------------------------------------------------------------- 80eda39fb5 | Lexi Hattaway | 2024-09-17 22:30:39 -0230 Add arrival / ecumenical / ice cave entry vaults (#3984) [Committer's notes: Most of what I'd do here was sent as feedback to the PR and eventually handled by the submitter. The only things I'm doing here are tweaking one of the vaults' header line orders and squashing all of the commits into one. Merges #3984.] -------------------------------------------------------------------------------- 5656a03f3f | regret-index | 2024-09-17 22:30:39 -0230 Prevent more species dummy monsters from getting Crypt zombies Since the player isn't expected to fight plain deep dwarf, tengu, draconian, or vine stalker monsters in general, making their zombies in Crypt is deeply silly and weird. The former two at least have the reasoning that they were previously regular monsters and got removed from such a position, the plain draconians are weird (holdovers from shapeshifters turning into them)?, and vine stalker zombies raise general questions of "just how alive is their host body" that are difficult to answer. -------------------------------------------------------------------------------- 9f88647463 | regret-index | 2024-09-17 22:30:39 -0230 Don't let chaos confuse boulders and bombs (#3654) Most mons_is_conjured spell components shouldn't be confusable in the first place, aside from the vortices already being redundantly pseudo-confused- they all have specific behaviours that don't work when confused or acknowledge being confused. Closes #3654. -------------------------------------------------------------------------------- 727ca9edda | regret-index | 2024-09-17 22:30:39 -0230 New Pan demon: nekomata Pandemonium could always do with some more variety beyond the demons one sees shared between summoning from the rest of a 3-rune game, the demonic vaults before Lair branches + entry vaults Depths, and the demons shared with the Abyss and the Hells. Demonspawn enemies and Pan lords themselves reasonably help with this, but there's plenty of hypothetical space across multiple glyphs to fit in more monsters, especially in the danger tier that demonspawn try to fulfill between tier 2 and tier 1 demons. This new feline demon of trickery and disdain, a white "R" in console, is meant to try out a strange conjoining of archetypes- it is a ranged weapon threat _and_ a summoner, simultaneously. In the former aspect, it always comes with a branded ranged launcher (of flaming or draining, to reflect its arson and necromantic mythological capacities), plus Repel Missiles (as we never used in extended) and a demon blade (of either brand) as a fallback. In the latter aspect, it has a high chance to cast a new conjurations spell- "Phantom Blitz", a single-target projectile that deals damage and summons a copy of itself where the projectile stops. The summon cap for the spell is only 2, but each of the clones have their own summon cap for the spell, which should be memorably terrifying if let out of control. This thus has the unique, cruel property of being even stronger than previous monsters that summon-on-hit by instead summoning from a distance with a conjuration, and works as a new iteration on the illusion mechanics of other eastern demons used in Crawl already. In its placement, it joins Pan and ranged Zig floors, gets to appear as a mage in Lom Lobon's floor and in a few guaranteed demonic rune vaults, plus regular Pan floor monster set generation / orb run sightings. Very high level Xom worshippers may also see them rarely- a summoning demon that can get out of control feels entirely appropriate for Xom. Their tile is a modification of Sastreii's current rakshasa tile (with twin tails pulled off of Denzi's felid tiles). The current rakshasa tile is far too cat-like to be any mythologically accurate- a proper rakshasa may be somewhat beastial, but is hardly a full anthromorphic design, and also usually somewhat deformed. (Blame D&D for the tiger associations.) The previously-unused tile by meckryl still emphasizes ornate accessories while fitting a more fangsome and asymmetric appearance, and is now used for the rakshasa earlier in the game instead. The Phantom Blitz spell icon placeholder simply modifies ontoclasm and roctavian's Searing Ray icon. -------------------------------------------------------------------------------- 2b7a90caab | DracoOmega | 2024-09-17 15:38:32 -0230 Remove a tiny bit of obsolete code It isn't actually possible to directly create skeletons of active monsters since the removal of Nectotise. -------------------------------------------------------------------------------- fe4f17deeb | DracoOmega | 2024-09-17 15:38:32 -0230 Update a comment Fountains haven't counted as water since b47861556a4dd18e -------------------------------------------------------------------------------- 4012fd3d9b | DracoOmega | 2024-09-17 15:38:32 -0230 Fix a rare crash with Dith shadow shot If the player made a ranged attack which killed its primary target, and also triggered a shadow shot while the player shadow was not already out *and* the player was both invisible and could not see invisible, the game would crash. If any of these things was not true, it worked properly. (The issue stemmed from fuzzing for beams near invisible players and how MID_PLAYER was used as the source of the tracer for determining what other target the shadow should shoot at, if it wasn't deployed yet. But MID_PLAYER_SHADOW_DUMMY was added for the specific purpose of simulating a player shadow that doesn't exist yet, so use it instead here. To be honest, I'm not sure why it wasn't already.) -------------------------------------------------------------------------------- 8218d4fa48 | Sean Dewar | 2024-09-17 11:55:17 +0100 Fix crash in Xom's wave of despair effect If place_monster_corpse returns nullptr, the game crashes when trying to call turn_corpse_into_skeleton. Possible when placing a skeleton on a terrain feature that destroys items, like lava. (move_item_to_grid destroys the would-be corpse item) Example crash log: https://underhound.eu/crawl/morgue/seandewar5/crash-seandewar5-20240902-225318.t xt -------------------------------------------------------------------------------- fd2f4f1e42 | brandon s allbery kf8nh | 2024-09-16 21:27:03 -0500 don't crash if shadow can't be placed (ChongLi) If a player is surrounded by monsters to depth 3+, _get_shadow_spots produces an empty vector and the game crashes trying to dereference the first entry. Check for an empty vector first. (https://cbro.berotato.org/morgue/ChongLi/crash-ChongLi-20240908-132253.txt) -------------------------------------------------------------------------------- df7c40bf2b | NormalPerson7 | 2024-09-16 21:00:13 -0500 Don't auto-hide currently unmemorisable spells when picking up books Previously, if you worshipped Okawaru (for example), spells which could not be memorised would be silently added to your library and also hidden in your library. Spells that can't be memorised do not appear on the spell library interface, so this had no actual effect as long as the spell could not be memorised. But, say, if you then abandoned Okawaru, you would find all their previously unmemorisable spells hidden in the library (so that, to unhide and memorise them, you would have to visit the "Show" screen). In practice, this meant many players would just assume the spell was lost forever. Resolves #3994. -------------------------------------------------------------------------------- 4126433af7 | DracoOmega | 2024-09-16 20:08:03 -0230 Don't boost !magic from Potion Petition by being an oni/Kyrias (Lici) Technically !ambrosia would also be bugged in this fashion, were it possible to actually get it via Potion Petition. -------------------------------------------------------------------------------- ad5dd902bf | DracoOmega | 2024-09-16 20:08:03 -0230 Don't generate coglin gizmos with Rampage for Chei worshippers In the same spirit that acquirement respects items your god bans, don't let coglins of Chei invent gizmos with rampage (which therefore rules out an entire whole item, along with its guaranteed properties). -------------------------------------------------------------------------------- e7007fb380 | NormalPerson7 | 2024-09-16 20:07:53 -0230 Don't gain experience from killing allied apostles Previously it was possible to kill your apostles with e.g. scrolls of poison, not incur wrath, and gain experience from the kill. I can't really imagine players ever wanting to take advantage of this, but nonetheless it goes against the spirit of Beogh so let's prevent apostles from giving experience. -------------------------------------------------------------------------------- c4b16875ff | NormalPerson7 | 2024-09-16 20:07:34 -0230 Preserve bribe enchantments for reviving bennu Previously, if a bennu was friendly-bribed in their first life, it would revive as a permanent friendly ally that could follow the player everywhere. If it was temporarily neutral-bribed, it would revive as a permanent neutral monster. Fix this issue by preserving friendly and neutral bribe enchantments upon revival. Sidenote: currently unbribed bennu get a second chance to become bribed upon revival - is this good behaviour? Resolves #4026. -------------------------------------------------------------------------------- 45882a55ab | NormalPerson7 | 2024-09-16 13:57:27 -0500 Fix HP/MP not updating when (un)equipping the Charlatan's Orb Make the Charlatan's Orb explicitly update the player's HP and MP in its equip/unequip functions. Also add the Charlatan's Orb as a cause of increased skills on the skills screen to fix the previous text "Skills enhanced by are in green." -------------------------------------------------------------------------------- 55f019ead6 | DracoOmega | 2024-09-16 16:08:21 -0230 Make exploding sheep properly flee from the player (Lici) The dream sheep spawned by kb_xom_exploding_sheep are generated permanently afraid, with the presumable intent that they run away from the player, however they aren't generated being *aware* of the player, which means that they usually have an internal target of (0, 0) and they try to run away from that instead of the player (ie: they just move south-east in general, regardless of where the player is). If any other monster shouted or the player otherwise got the sheep's attention somehow, they would start fleeing in the proper direction, but it could still sometimes be a rude surprise to a low XL player. So let's try to get them moving in the right direction to start with. -------------------------------------------------------------------------------- f9f973bd00 | gammafunk | 2024-09-16 09:18:11 -0500 task: Remove the trunk 0.32 tournament reminder This reverts commit b3de7b944d009aaea3c3fea32e8150c556050f64. -------------------------------------------------------------------------------- bf3d107625 | regret-index | 2024-09-15 23:41:53 -0230 Scale Zig sets a marginal amount harder Since the quadratic scaling introduced in 5942d1e seems to have gone on perfectly fine without much noticing for ziggurats in the last tournament, we clearly can do with a little bit more harsh scaling for more floors. Worthy of note: * Tar floors become almost entirely tzitzimimeh and silent spectres. * Dis floors become almost entirely hell sentinels. * Fire floors become almost entirely orbs of fire. * Holy floors become almost entirely seraphs. * Abyss, as a branch that can technically spawn silent spectres, now joins the fun of becoming a floor with explicit silent spectres and a swapping out of liches for daevas (who still smite under Silence). Also, with increasing chances up to a guarantee on the ninth completed ziggurat, Zot traps replace the floor of many (but not all) ziggurat pillar vaults after one has completed more than one ziggurat, so that pillar vaults are more noticeable amongst all the rest of the enemy spam. I do want to still come up with more unique scaling effects for ziggurats, later in this version, but they'll most likely wait until after more Pan and holy work is done. -------------------------------------------------------------------------------- 9310caa5ee | David Lawrence Ramsey | 2024-09-15 20:39:18 -0500 Fix doubled foul flame melee attack damage. The previous doubling of damage was only supposed to apply to foul flame weapon attacks. This partially reverts 90a6e0420698cfe08bc0206b481ef80845585b54. Closes #4000. -------------------------------------------------------------------------------- 01db4b9143 | regret-index | 2024-09-15 18:42:45 -0230 Make Ephemeral Shield only activate on invocations that cost anything (Ge0FF) Mostly to prevent instantly renaming one's ancestor from providing free SH over and over again. "Costs" as the mutation description now mentions include piety, HP, MP, cards, gold, max HP draining, Exhaustion, -Recite, and (begrudgingly) sacrifices to Ru. It's a weird list, but for the most part it should be fine for costing something or another preventing most invocations spam anyway- the only real cost here is losing Wu Jian wall-jumps, and Serpent's Lash is already an invocation that can highly value getting some shields afterwards. (I'm not greatly worried about this still counting allies recall, as I mentioned in 9303715. Wasting the turn for 7 SH is unlikely to be of much value versus either walking away from enemies or swapping behind one's allies, and the mp cost is not insignificant when the gods with Recall also have MP-costing abilities of much higher value between Smiting, Torchlight, and Idealize.) (There _might_ be some arguing about cards, Exhaustion, and Recite all counting. We'll see how this feels out over the long time it takes for non-Xom non-Jiyva characters to even see the mutations.) -------------------------------------------------------------------------------- 433eebaeb2 | regret-index | 2024-09-15 17:32:41 -0230 Let player berserk give immunity to fear (DracoOmega) Berserk monsters are immune to fear when berserked (as is obvious with early black bears), but players aren't (and a comment has been wondering about this discrepancy since c6d2f85). Cause Fear is a relatively rare effect only used on about four monsters, so it's not too significant a monster nerf / berserk buff (and those monsters all either meaningfully summon or debuff from a distance, so there's still some danger), but it adds a little more consistency in a relatively player-generous fashion. (Also of high importance: Crawl doesn't show the fear aura that well when one is also berserk, and it'd be a massive headache to try to make it do so. Happy dual solutions.) -------------------------------------------------------------------------------- b1b5fd0351 | regret-index | 2024-09-15 17:32:41 -0230 Marginally nerf ball pythons After the major constriction rewrite of 9adf0d1, ball python have finally started to successfully tutorialize on the existence and power of constriction for D:1. This is good! It means there's a monster with a gimmick that'll take a fair ways longer to be seen again, that can allow experimenting with the gimmick much earlier, and which stands out amongst other D:1 and D:2 enemies in its support + damage role. However, they're also a noticeably increased threat on D:1, which doesn't really need the bump upwards- between the two tournaments, they moved from the 43rd killer to the 13th. A good promotion, but possibly a bit much for one. As such, I'm nudging down their non-constriction damage and their EV very slightly, which should make it easier to kill them when there's other enemies around, but which should also still let their newly finally threatening constriction be somewhat noticeable if they're not focused down on. -------------------------------------------------------------------------------- c2ce1f5d24 | regret-index | 2024-09-15 17:32:40 -0230 List which monsters can open doors There are a number of monster tile bodyplans that would seemingly preclude the ability for a monster to open doors, yet some of those monsters still can in practice. Sun demons, ugly things, tentacled monstrosities and starspawn, glowing orange brains, various weirdly-composed golems and wraiths (including putrid mouths), Gloorx Vloq, Lom Lobon, and orb guardians make up the most obvious candidates here. It would be a significant nerf to make many of these unable to use doors (and console has gone on by knowing e.g. most Xs and all tiered demons can use doors). Instead, this could be addressed by UI means somewhat directly. This comes with a variety of different attempts to address this: * Every monster that can wield equipment already has the ability to open doors. Doors descriptions (outside of runed and sealed doors) further emphasize this fact, as well as mentioning some monsters that don't use equipment but can open doors. * Monsters that could have equipment but haven't found any (crimson imps and iron imps being the obvious stand-outs), as well as monsters that only have MONUSE_OPEN_DOORS, now mention it amongst the other travel lines. To try to make the nonstandard-appearance door users stand out, monsters that lack a humanoid shape have a conspicuously different properties line than normal. * (Ufetubi are now MONS_SHAPE_BIRD (they're closest to penguins), sun demons are now MON_SHAPE_ORB (matching foxfires and orbs of fire), and blizzard demons and putrid mouths are now MON_SHAPE_MISC (matching worldbinders as hands in clouds). This should only affect messaging and not anything else.) * Jellies, Xtahua, and the Serpent of Hell also explicitly mention they can eat or crash through doors, as well. * To try to reduce the number of description lines here, don't bother listing off if a monster could survive in water or lava if it already flies- currently, there's no way to ground enemies without outright polymorphing them anyway. If there are sufficient complaints about excess monster information displayed here versus other more important bits, then some of this can be reverted. I'd like to keep the unusual door interactions and avoiding flying + water travel reductions, regardless. -------------------------------------------------------------------------------- 1d4d42d1c2 | regret-index | 2024-09-15 17:32:40 -0230 Prevent polymorph and shapeshifters from accessing base tengu Plain base tengu monsters were used for a while as regular monsters in making classed tengu into regular monsters, but were cut for being far more plain and weaker than comparative naga or merfolk. As such, they never got the M_NO_POLY_TO tag other base player-species monsters got, which I'm fixing up here- if it's not already a branch spawn, the only player species monster that's allowed to spawn normally (i.e. not as part of vault decor) are humans. -------------------------------------------------------------------------------- 7901554542 | regret-index | 2024-09-15 17:32:40 -0230 New spell / unrand tiles by Sastreii, some unused tile reorganizing New great tiles for Permafrost Eruption, Magnavolt, Hellfire Mortar, Fulsome Fusillade, the hoarfrost cannon and hellfire mortar monsters, and the unrands Brilliance + the Sword of the Doom Knight. Most of the previous tiles were moved to the unused folder, and I've now now moved many old spell tiles from the unused/gui folder to their proper unused/spells folder while tweaking said tiles. -------------------------------------------------------------------------------- 9a799e10ea | regret-index | 2024-09-15 17:32:40 -0230 New decoration: cache of baked goods A follow-up to 831329d in terms of providing more options for civilized and lived-in housing flavour, though with some different angles here. These try for species' culture flavours rather than cultivars of fruit or given animal meats, and they're creeping into spriggan / centaur / klown / V vaults more than caches of meat go towards carnivore species and caches of fruit go to various old fruiting plants / trees. As with the other food caches, Xom also can spawn or shuffle them around, and they use the same food_snacking_frequency option added in 9f76b2e. This also gets to mean the triumphant return of spriggan bakers. Their tiles are by ploomutoo, edited slightly from 1a665c4 to have more outlining as helps with lighter background tiles. -------------------------------------------------------------------------------- 5c82c18273 | regret-index | 2024-09-15 17:32:40 -0230 A quick distribution of some new decorative tiles * The yak with flowers on it is now part of the Elyvilon peaceful quokka vault at further depths and one of the more grassy bazaars. * The bailies with orc warlords now get quick wall tiles dedicated to Beogh, using one of the Beogh wall banners. * A few vaults meant to be a nice, idyllic home or garden get the gardens with cobblestones around them. * A few Vaults and Zot vaults sample from the newer fountains. Ideally, I'd like to use different fountain tile bases per branch, but this would need more than just palette-adjusted drawing efforts for dry + eye fountains- probably would be good to ask other artists for such. TODO: Write up decorlines as was done for food and fountains for different types of flowers between each branch, add a variant recolour or two (and use the version without the cobblestone in Lair), then have gardens be a new kind of walk-on-for-commentary terrain type? -------------------------------------------------------------------------------- 76a730d507 | perci | 2024-09-15 17:32:39 -0230 Added a batch of 44 vault decor sprites (#3992) "including baked goods caches, flower pots, banners, fountains, and a mop" [Committer's notes: Pretty great tiles that'll help spruce up a large number of vaults and portals and branches. Squashed the three commits together, put the wall tiles into their own folder, made one additional variation of a flower garden tile going into UNUSED for future plans, and updated some comments + moved it to the right position in the text file. Following commits will make use of a number of the more straightforwardly usable tiles. Not entirely sure how to handle some of the others, but the overall set can be useful for other devs in the future. Closes #3992.] -------------------------------------------------------------------------------- fe9c01f85b | regret-index | 2024-09-15 17:32:39 -0230 Comprehensive updates to pitsprint This was a bit of an experiment to see how it'd feel to try and make one of the most flexible sprints (due to its game-wide monster tiering system) catch up to the modern day, after the decade since any sprints last got any serious work on them. It took far more than I expected, so I'm not in much of a rush to update much of the other's. * Half of Crawl's development's worth of enemy additions have been added to the Sprint's monster tier sets (that are mostly bound solely by power, not theme), which should heavily increase enemy variety. * Through the complete revising of the monster tier sets and the addition of one more monster tier, the power curve of the Sprint is more generous early on and more lethal later on- of particular note, the Storerooms, the Metal Vault, the path to the Armoury, and the Steel Vault have less spiky difficulty than prior, while the iron rune, golden rune, and Orb of Zot are all even more heavily guarded than they used to be. People like shrikes, right? * The Storerooms contain one randbook at the end (so spellcasters aren't forced to take a small number of gods to get any spells between their starting book and the Elf:3-styled Coven), and several lower-level talismans (so Shapeshifters aren't utterly hopeless). Each rune contains increasing amounts of scrolls of acquirement underneath them, also, for a splash of possibly-actually-worthwhile variety amongst the excess of later loot. * The labelled chambers between sections are now distinguished from other doors within the vaults and pits by being opaque runed doors. This should help make them stand out more for the sake of examining them to see the difficulty order one can take throughout the Sprint, and also help them stand out better in tiles. * The Crystal Vault is now the Titanium Vault, since it was never actually made of crystal walls in the first place and the Coven actually did in fact have Crystal walls surrounding it. -------------------------------------------------------------------------------- 1e7691d964 | regret-index | 2024-09-15 17:32:39 -0230 Add a dozen-plus mythological randart armour names The myth sources in question are mostly representing relatively sparsely-acknowledged continents and regions in fantasy- Africa, South East Asia, and further parts of South America. Maybe some day a game will directly feature rainbow-furred lightning anteaters or basket-headed hyenas, but for now, more references are always good to send some slim number of players off learning more for. -------------------------------------------------------------------------------- 626d331453 | regret-index | 2024-09-15 17:32:39 -0230 Give runed translucent doors actual descriptions (CanofWorms) The commits adding clear runed doors and making them spawn regularly throughout the dungeon, 546a308 and b3145dc, both didn't actually give them descriptions, I'm just combining the regular translucent door and opaque runed door descriptions here, which should be functional enough. (On a tangential note: we probably just make regular translucent doors and translucent rock / stone walls actually made out of glass, rather than mentioning magic wood for the former and being so wordy for the latter. Glassblowing is thousands of years old, to the point of being older than iron smelting, and we already have trees for "things players could expect to destroy without much effort but instead have to use specified means to do so". This would probably have to come with making glass eyes not LRD for an extra large radius, though.) -------------------------------------------------------------------------------- c186b92f40 | regret-index | 2024-09-15 17:32:38 -0230 New holy monster: Fravashi Whether or not the full longterm plans of a holy rune and a shortened rest of extended follow through, there's still some reasonable value in adding and keeping around other holy monsters. For over a decade, we kept around a unique encompass vault in Pan that was supposed to test and showcase holy monsters, only for six out of twelve non-boss monsters to all have been cut for various strange mechanical experiments. It's hard to say, however, that Pan should lose the vault- with nine different runes dedicated to partially or fully demonic realms, there's a lot of obvious value to having a vastly different theme to varying games up with. As such, on occasion, more holy monster work will be followed through. Fravashi are Zoroastrian guardian spirits both for and from heroic mortal spirits, and here serve as the fourth simple humanoid(ish) 'A'ngel between angels, daevas, and cherubim. (Aside from fitting the martial angle TSO innately provides for humanoid holies in this game, they also continue to attempt to broaden the sources of holy monsters beyond Christianity, if somewhat ironically through using a faith angled to the opposite of daevas.) They lack angel speed or daeva tower shields and smiting spells, but as both embodiments and guides of moral champions, they represent a relatively straightforward, inverted component of holy worship in Crawl- they summon a single living warrior to their cause, which in this case is a deep elf blademaster or a spriggan defender always granted a holy short blade or two. Most non-unique summoners in Crawl try to be dangerous by hiding among multiple summons or plying on much later enemies than one might fight otherwise, but these should serve a unique purpose by doing meaningful damage from behind their summons with a two-handed holy or electrocution polearm. (There's a neat incidental theme across the weapon-wielding holies that they all have next to no randomization in their weapons and emphasize different weapons each, which this continues to invoke.) Much like pearl dragons in their prior high-damage state and ophans with their new extremely powerful support status, these are not meant to show up in almost any 3-rune game aside from the occasional vault already using angels and daevas out in the open. They thus are only set to appear in sparse late-game / extended / sprint uses of holies, and do not appear with TSO's summoning invocation. Their placeholder tile is a mix of the deep dwarf artificer tile made by Coolio, the phoenix tile made by Porkchop, and an old dwarven buckler tile by roctavian. Their Summon Mortal Champion spell icon combines CanofWorms's Okawaru weapon acquirement, the standard summoning circle, and a spriggan defender coloured slice of roctavian's deep elf blademaster tile. -------------------------------------------------------------------------------- c637f1ba41 | regret-index | 2024-09-15 17:32:38 -0230 Adjust some portal monster population tables This mostly just affects scrolls of summoning, Kiku's wretches, and the rare Xom action, when inside these portals, unless somebody ends up using Shadow Creatures casters in any of them. Still, it's good to keep an eye on them ever-so-often whenever the portals themselves are changed. * Since a couple of Sewers have dart slugs as of e431911, they've been added to the list to reduce the chances of the high-roll crocodiles and take some weight off the not-very-thematically-appropriate quokka. * Ice caves haven't had non-summoned ice beasts in them since cc58b11, so their notably high weight in the list is weird. They have given most of their weight over to adding in wolves at a low weight, plus increasing the odds of the highly appropriate (and readily findable) polar bear. * Volcanoes only have one layout with toenail golems, so their high chance to place is relatively quite weird. Their weight has been reduced down slightly with obsidian bats and fire crabs, and given over to the iconically-present salamanders and fire elementals. -------------------------------------------------------------------------------- cc540e3e4a | regret-index | 2024-09-15 17:32:38 -0230 Unite jellies and water elementals under M_AMORPHOUS, tweak other checks There's been some consternation for a while that water elementals and elemental wellsprings, as entities composed of liquids, should have the same immunities that jellies get (constriction, webs, nets as of 4fe0c3d). There have been a few requests to make them insubstantial (c.f. PR #3032), but I would prefer to instead unite them with jellies in a new flag that can reduce the number of jelly genus checks, instead of granting the water-formed enemies immunity to petrification or implying that a monster which can entirely engulf a player also has no actual substance. This commit adds the M_AMORPHOUS flag, shared by both jellies and water elemental / wellsprings. This gives the latter web, net, constriction immunity, and Shatter resistance as the former does, and hopefully should feel a bit more logically consistent while cleaning up a weird check scattered across the code base. This commit additionally teaches the monster information bots to display insubstantial and amorphous flags, as is useful for offhandedly checking net and BVC immunity. (This commit also removes the barbs immunity from jellies. If they'd be immune to barbs because they can force the barbs out of themselves, then the same can be said of all sorts of other physical projectile states, like Frozen. The committer of dd4bd0d agrees with doing this.) FIXME: Borgjnor's Vile Clutch always listed the hit chance as 100% for insubstantial enemies, and continues to display it for amorphous enemies. It's a very silly targetter since it's always 100% or 0%, but it should show the latter for those immune to it. -------------------------------------------------------------------------------- 5cebcafe45 | regret-index | 2024-09-15 17:32:38 -0230 Yet more Xom and tension tweaks * Xom polymorph now cannot target monsters before XL 4 if they're over deep water or lava, as the attempt to prevent them from drowning can easily produce D:1 killer bees or ynoxinuls. Xom polymorphing hostile monsters up in HD before XL 10 now also comes with a consolation prize of a malmutate, to make it slightly less horrendous to handle very early. * Bazaars have been randomized some more to mildly weaken them; I had originally designed them anticipating it to be far more rare that what turns out in practice, and them appearing at all is already plenty of a buff to Xom enough they can take some downtweaks. * Manuals no longer extra bias to be evocations or shapeshifting, * Spellbooks have a fifth potential spell in each school but are now capped at two spells available per book, * Randart jewellery has a small chance to be randart amulets of both regeneration and faith with the same downsides, and no longer shares the exact same downside in each bazaar, * Xom bazaars contain only two of the three wands and only one of berserk potions, ambrosia potions, or silence scrolls, * Orbs and scarves have a new joke dud option, * and Xom bazaars past the first have been made yet further rarer, while somewhat more gold is recquired to access bazaars at all (which hopefully should also delay them until after seeing Orc.) (The talismans are untouched mostly in anticipation of the future version's development hopefully helping with shapeshifter variety needing more than it currently does in general. The reduction in chance to get a manual of shapeshifting probably reasonably nerfs this enough for now.) * Xom draining now is halved (draining 3.25% instead of 7.5% of max hp) if one is very low level or already any drained unless Xom is bored or wrathful, as there's some unfun death spirals to getting heavily drained repeatedly and it's a lot less unique than many of the other ways Xom can try to kill the player. * Since the demonic plant / toadstool ring is meant to be an relatively positive action, Xom now checks if there are monsters with smiting attacks that aren't at least two squares or closer to the player, and needs there to not be too many as long scaled versus one's XL. * Sleeping and feared monsters now count for an notably small fraction of their experience value for the sake of tension assessment (instead of counting as absolutely zero threat). Sleeping monsters in sight are unlikely to stay sleeping for long, and feared monsters can turn around for all sorts of accidental or terrain-based reasons. -------------------------------------------------------------------------------- 0f4f676546 | regret-index | 2024-09-15 17:32:37 -0230 Further adjust Cheibriados wrath and haste response Cheibriados wrath uses tension very strangely with a both fine-grained yet randomized fashion. Since tension is useful only as an extremely loose assessment and awkward to ever calculate versus given threats, I'm going to heavily simplify the check, so it will hopefully reduce the need to keep an close eye on this wrath whenever adjusting tension in the future. The five different tiers of mixing together effects across Cheibriados's current wrath have been reworked and combined into three instead. * If there's almost any notable tension: * current hp >= 75% of your max hp: inflict sleep. * Otherwise: remove haste plus inflict slow. * Otherwise: drain stats plus make an extremely loud noise. This is still dynamic in its own straightforward fashion, hopefully: bringing in more enemies while exploring, threatening the player without just using direct damage while in combat in a fashion that can technically be survived, and statdraining the player heavily if they try to wait it out in a closet. To disincentivize the last of these, stat drain has been further pushed up in severity. (Cheibriados wrath has been repeatedly heavily changed, perhaps because the time theme is one of the loosest in available themes for malevolent effects- wrath once contained miscasts, other god wraths, random item curses, and so on and so forth. God wrath doesn't inherently need the most variety as long as it's actually reasonably threatening in a distinct fashion, though, as can be seen with Hep and Ash and Ru, so it should be reasonably fine in this very compressed state.) Also in this commit: Cheibriados now prevents potions of haste from ever actually affecting the player, rather than forgiving them only if they drink it unknown and throwing them into penance otherwise. This is mostly meant to makes matters more consistent with Chei's prevention of haste from chaos and berserk, as well as with Okawaru's prevention of using ally summoning scrolls. In the future, it also helps with probably just making all penance just involve removing god passive benefits and invocations as the good gods and Beogh do, as piety loss to a sufficient degree and said restrictions can be plenty enough downsides, and it'd make god penance fairly more straightforwardly parseable for all gods. -------------------------------------------------------------------------------- 06665551a2 | regret-index | 2024-09-15 17:32:37 -0230 Adjust and replace some unrand tiles * Implement ploomutoo's new replacement for the toga "Victory" floor tile, extracted seperately from PR #3992 since the rest of that PR is about a different topic entirely. Annotation for future reference: it's meant to represent a toga praetexta. * Brilliance and Punk now have actual acid brand and foul flame brand icons, the former mixing together snw-0's modifications of ontoclasm's electrocution and holy wrath brands, the latter mixing the same snw-0 and ontoclasm sourced exploding missile / immolation scroll icon with UltraViolent4's corroded status icon. (Previously, their brand icons generated by bleeding over into the old list of missile icons, marking foul flame as an electric weapon and acid as an exploding weapon.) -------------------------------------------------------------------------------- 8966e59373 | regret-index | 2024-09-15 17:32:37 -0230 Fountain decor messages + new options to set their frequency Since the fruit and meat decoration messages have worked out reasonably well, we clearly could expand this notion to the other already-present breadth of entirely-decorative features: fountains. Since there's not nearly as many varieties of water that are of interest compared to different varieties of fruit and meat, these messages mostly take on an entirely different tact- they instead differ by one's worshipped god. The gods already serve quite directly in Crawl as some of the most prominent personality and flavour throughout the game, and they can lend some reasonable (and potentially mildly controversial) characterization to the otherwise featureless, faceless adventurer all characters serve as. Some of these gods surely have very obvious influences and focuses on their worshippers, after all- shouldn't a Makhleb worshipper care in some way about a fountain of blood? These messages come with yet further experimentation in flavour lines. Many messages are only provided when there are no hostile enemies in sight, and the chance differs based on said hostile presence: 10% if they're present, and 40% if they're not. (Much like as was done in 9f76b2e, this comes with a new option: "fountain_line_frequency".) This also comes with a brief flavour nod (but hopefully not much chance of confusion) back to sparkling fountains being differentiated by having miniscule magical effects. Not all god and fountain combinations come with unique lines, but there's enough cute little lines written up that it should be a good start. Thanks to Darby, staticshock, and nicolae for additional message ideas, and DracoOmega for both additional messages + proofreading. -------------------------------------------------------------------------------- ae9bbc25c5 | regret-index | 2024-09-15 17:32:37 -0230 New decorations: fountains of eyes Fountains have been heavily established for a decade as entirely decorative features, which is both beneficial (parses immediately as a sign of civilization or ruin, doesn't have to interrupt the hyperfocus Crawl has on combat) and detrimental (they usually immediately fade into the mental background). Since we've already got melodramatic features like fountains of blood established for many years, we might as well try out more weird materials that can be a little more memorable. Fountains of eyes recontextualize a never-used tile submission for great orbs by pubby in Mantis Issue 9606. They spawn solely in the Abyss (replacing fountains besides blood when the Abyss layouts choose levels one has been through before) and a few vaults elsewhere with explicit themes based on either flesh, organs, or shapeshifters. They should probably help Crawl continue to feel memorably weird. (As to why they're not just vault renames of fountains of blood, a follow-up commit will actively use the differences between the two on a lower scale.) Possibly in the future we may get further unique fountain options? -------------------------------------------------------------------------------- fe3b5c5baa | regret-index | 2024-09-15 17:32:36 -0230 Partial transitional vault review A fair number of changes I noted down during feature freeze and the 0.32 tournament, to nerf and tweak a number of vaults. Worthy of note: * beargit_hepliaklqana_dungeon_heroes only uses wands of polymorph on D:3-4 and atropa darts on D:5-6 instead of wands of charming, as it's far too easy to get completely locked down if one doesn't have much luck with potions of curing early on due to monsters zapping wands very frequently due to spells (the brigand even has higher chances to confuse than Sigmund does). If wands of charming get a different player effect later on, then these can be returned. * Moved _guarded_unrand_wrath_of_trog to Elf instead of D:13-15. If the idea of guarded_unrand vaults is to use out-of-depths one can leave for later or reasonably run away from, then being able to autoexplore into three spriggan berserkers on D:13 breaks this rule. * serial_library no longer generates Sif Muna altars before D:8, in correspondence with other early non-Portal altars being heavily curtailed. * The old Forest end Depths vaults now no longer use any deep elves, to further distance itself from Elf and Vaults using deep elves. * One of the_grid vaults has been tweaked so it no longer places ancient liches on D:14, as we've mostly stopped doing without the use of runed doors. * Gauntlet monster sets have been repeatedly tweaked over, as they were never adjusted after the buffs to glowing orange brains. The highest non-Minotaur killers in the portal by a noticeable statistical margin have been somewhat nerfed (death scarabs and death drakes), while some of the least common killers have slightly more company (arcanists / occultists, tyrant leeches, shadowgasts, and chaos spawn). * shoals_end_grunt_garden now places slightly more plants and has fancier non-default wall and floor tiles, to hopefully make it fairly more obvious actual vaults are still being placed on the last Shoals floor. -------------------------------------------------------------------------------- 6ec11c1643 | regret-index | 2024-09-15 17:32:36 -0230 New Xom action: hyperbuff a (low HD) ally This new effect has multiple different fronts of interest. It tries to experiment yet further with monster effects not easily available for players otherwise (e.g. invisible + radiating + mirror-damaging allies), it tries to have Xom do more obviously interesting things according to one's build (as summoners and necromancers may notice this more often), and it also just has the "Xom could do absolutely anything" wild factor expanding past the current status effect tricks to instead hone down onto over ten different buffs being thrown around at once. This very rare good Xom effect looks for rather low HD allied monsters present, scaling with one's experience levels and extended runes, and falling back onto creating some relatively mundane allies otherwise. Once there's at least something to target, Xom then gives it 20-40 turns of might, haste, invisibility, brilliance, repel missiles, resistance, regeneration, increased Will, toxic radiance, damage mirror, swiftness, and a full heal. The chosen ally is still reasonably likely to die, in all honesty, but what a glorious death it will be! (While the scaling is quite slow, it will at least usually care for some zombies and Xom-granted allies both across the length of the game. It's fairly less likely to happen for those not running around with allies, though.) -------------------------------------------------------------------------------- 0fe423d510 | regret-index | 2024-09-15 17:32:36 -0230 Various small extended / recently-changed monster adjustments * Arcanists have felt relatively weak in their uses relative to old wizards or the shoved-downwards occultists, despite the multiple spell revisions they've gotten, while occultists continue to be quite harmless in Depths. The former has one more HD, and both now have a bit more health and evasion, so they can live long enough to actually do any of their collective gimmicks. * Bennu have a very specific mechanical purpose (punish undead players who otherwise don't care about most other Tomb threats with a fast holy-branded monster that's difficult to kill) which they're not very impressive at executing in practice. To make them stand out more as a melee threat in the branch and to actually function as a threat undead characters worry over, their three attacks have been consolidated to two and the bulk of their damage is in the holy-branded first attack (which should then multiply to deal fairly more holy damage). * Iron golems now have slightly less health and defenses- while they still serve a reasonable role as extremely difficult to break in the middle of ambushes across Dis, they can have enough to be relevant without also being extremely slow to kite and kill once they're inevitably the last enemies alive. Since it's nice that Dis is one of the most dangerous places in the game, as compensation crystal echnidas are now speed 13 to try and actually be any relevant alongside the next change. * Crystal guardian crystallizing shot is rare to actually hit in practice compared to their prior rebounding fire / cold bolts, both dealing fairly less damage and being newly blockable. (While Vitrify is quite dangerous, they aren't guaranteed to actually live long enough to capitalize on it.) Since they're no longer late D out-of-depths, they can afford some direct buffs to try and approach their old threat levels. Crystallizing shots now are more accurate, more damaging, and more likely to apply Vitrify, while crystal guardians themselves hit mildly harder. -------------------------------------------------------------------------------- a98c639910 | regret-index | 2024-09-15 17:32:36 -0230 New mutation: haste allies when injured Another mutation meant to be exciting in differing ways for differing builds yet balanced out by being rather build specific. This two-level mutation uses the Mark of the Celebrant rules (triggers at 50% health, comes back only the next time one reaches 100% health) as are reasonably reliable and straightforward enough to parse for something far less directly destructive- the spilling of one's time-warped blood instead hastes the highest HD allies in sight, two per level. This has obviously extremely strong consequences for summoners and necromancers, but also having allies in the first place means that whoever is damaging the player by a fair bit is also ignoring those allies to do so, which is dangerous enough that it will only somewhat help out the given situation at hand. The permanent-ally gods obviously reasonably benefit from it, though Yred gets a lot more than 2 or 4 allies and Hep's ancestors eventually will haste themselves anyway, while gods with big ally-summoning invocations like TSO, Nemelex, and Fedhas still see a little bit of unique interest compared to relatively plainer mutations. (This mutation is completely suppressed by Chei, in the same way Okawaru suppresses demonic guardian, of course.) The extremely placeholder mutation icon combines ontoclasm's Sublimation of Blood and hasted status icons. -------------------------------------------------------------------------------- 9303715c30 | regret-index | 2024-09-15 17:32:36 -0230 New mutation: spell / invocations shield Following up on the spirit of the previous commit trying to add positive mutations dependent per-build for the sake of adding more energy and excitement to the overall pool, this good mutation is a touch more complicated but should still be relatively straightforward. Casting spells gives the bearer +7 SH for a turn, and using invocations gives the bearer +7 SH for 2-4 turns (with the duration reset for each invocation). This is meant to parallel several other conditional defenses as we've built up over the years (acrobat's evasion when moving or standing still, protection brand and ParryRev's AC when attacking with one's weapons), while avoiding those established exact means of defense or condition. (It does share the same number and multiple-turns status of protection brand, though). It also shouldn't overlap too much with large bone plates (highly conditional for several builds, with piety and mp limits, yet the single level gives more than the first two levels of bone plates), and it no longer collides with TSO's divine shield. As a bonus, invocations aren't really a space explored with mutations outside of early Forlorn experiments, and this starts out exploring that space with a relatively safe mutation. (While there's some jankiness about using it for Recall abilities, this still costs MP and also lasts so little time one probably could have just tried to reposition around allies in most of those circumstances more than just repeatedly using the ability standing in place. Everything else costs at least something innately.) Hopefully this should be reasonably interestingly variable with differing characters without being too much to keep track of on a regular basis (at least, not any more than protection and acrobat themselves already need). The mutation icon uses Ontoclasm's Divine Shield icon with different magic and invocation colours. -------------------------------------------------------------------------------- 9235b1e983 | regret-index | 2024-09-15 17:32:35 -0230 New mutation: efficient magic Random mutations have had a rocky history across Crawl, with very uneven high rolls and low rolls now long past (like changing movement speed in either direction, much more minor AC and stat changes than currently, and various troubled experiments with a multitude of different potions all held back by there being too many minor mutations). The current state of positive mutations and singular potions of mutation at this point is at relatively stable if boring equillibrium- the proportions of meaningful defensive benefits and net positive benefits versus effects that can be easily ignored are pretty generous in the player's favour, though a variety bad mutations are far worse (and should be far worse) than even the best good mutations are any good. On and off during 0.33, I'd like to try and make this state of affairs more exciting with relatively simple build-specific mutations to add more spice to the overall mutation pool. Forcing people to engage with the mutation system via singular potions of mutation might as well have more exciting rare high-rolls involved, and Xom in midgame / lategame shouldn't mostly make characters overloaded with resists. Whether or not they'll survive the years, I don't know, but as long as they're all relatively conservative effects, at least some fraction of them should probably survive and already be restrained by the lack of control on the overall mutation system. This mutation at hand... is actually quite simple as new effects go. In the same vein as Coglin gizmo Spellmotor, it flatly reduces the cost of spells (but can't go below 1 MP) equal to one's mutation level (which has 2 ranks). Unlike Spellmotor, it doesn't come with free random melee swings or the potential to go even higher, but in exchange being untied to melee attack has obvious benefits for a variety of conjurer builds. Compared to adjusting mp capacity, the flatter effects are excitingly stronger earlier in the game (spells are lower level and one has less total mp) than later on (a lot more mp-efficient spells are open and it discounts proportionally less). Also, it doesn't help out invocations nor guardian spirit (as shared with wild and placid magic). It _is_ quite strong with other stacking mp saving effects, but beyond the limited count of brilliance potions, getting both in most games is decidedly unlikely anyway. (There might be more complicated ways to better approach this overall discount space, but it's probably fine to start simple here.) The mutation icon recolours ontoclasm's Channel Magic icon with Sastreii's head-slot mutation icons. -------------------------------------------------------------------------------- a31db6c34e | regret-index | 2024-09-15 17:32:35 -0230 Reflavour, retheme, rename - quicksilver oozes -> void oozes Expanding the mechanics and flavour of quicksilver beyond just a rare dragon and its draconian counterpart over the course of versions and years has gone onwards somewhat awkwardly. Quicksilver oozes were added in 0.27 (433ef79) and didn't use the exact dispelling effects mechanism when there was only one other quicksilver monster around, which would have been fine by itself. It became somewhat awkward, however, when quicksilver elementals were added in 0.28 (e42411b) and wands of quicksilver were added in 0.29 (5a96994), making there be a total of three explicitly quicksilver-themed items and monsters that dispelled plus one monster that didn't. While there's almost no quicksilver elementals in 3-rune games without the intervention of Xom these days, which helps avoid confusion between oozes and elementals, it's still a weird state overall. As such, after some previous bikeshedding on the topic, they are now named void oozes, and have a much more explicitly antimagic emphasis in their description. The new tile, new flavour, and new name all do not, however, actually change their stats or mechanics. I'm not sure what I make of their current weird position, where they're notable threats in early portals and rare vault uses but common fodder throughout their native home of Slime. It's probably fine for now. Potentially their new starry name and appearance flavour could also encourage more abyssal and ruins themes without relying so heavily on monsters meant to stay in the Abyss, which is also good for keeping monsters more reasonably bounded per-branch. Their new description is by DracoOmega, and their new tile is by pianoman523. -------------------------------------------------------------------------------- 8750c69c83 | regret-index | 2024-09-15 17:32:35 -0230 Make Xom's altar tiles a bit more colourful In console, Xom's altar cycles through every colour available. In the altar's description, it mentions it shimmering through every possible colour. In tiles... the altar has been an iconic greyscale face the entirety of its existence. I'm not really sure why there has never been any attempts at colour for it whatsoever. To make the most prominent chaos god in the game more chaotic, I'm tweaking the tile as a compromise- the base changes colours with every different frame, but the face remains grey. These colours, naturally, are based off of the chaos clouds' colours and mixing between them, though with mild desaturation. Hopefully it shouldn't be too eyesearing to rest alongside, any more than other older chromatic tiles like Nemelex's altar or the bigger frame-per-frame changes like Makhleb / Hepliaklqana / Sif's altars. If it _is_ and feedback asks something less conspicous, I can try a second approach of coloured sparkles akin to what Zin and Nemelex altars use instead. -------------------------------------------------------------------------------- 67b09052d6 | Kate | 2024-09-15 17:26:14 +0100 Mark milestones when buying runes (grothendieck) Buying items in shops always creates a note and then flags the item to avoid creating duplicate notes, but that flag then also caused milestone recording to be skipped. Historically this wasn't an issue because the only items that need milestones are runes/gems/the Orb but at least one of those is now purchasable in a rare case! -------------------------------------------------------------------------------- 460ee30645 | regret-index | 2024-09-14 21:25:52 -0230 Don't spawn abyssal stairs on Abyss:7 (Shadow_Rider) No accessing Abyss:8 just yet, anyway. -------------------------------------------------------------------------------- ff001066c8 | regret-index | 2024-09-14 21:25:52 -0230 Put a spot for the Serpent of Hell in tar_mu (Lici, #4027) The encompass vault was missing an actual place for the Serpent of Hell's set-up function to look for and spawn the unique in question. Closes #4027. -------------------------------------------------------------------------------- 55745971f8 | gammafunk | 2024-09-13 16:47:33 -0500 feat: Add monster intelligence to clua Monster intelligence (e.g. "Human" or "Mindless") was missing from clua even though it's present in the UI. This is a minimal implementation that simply returns the standard description string of a monster's intelligence. This is technically a feature, which we wouldn't normally add to stable/tournament, but it's only related to UI and arguably a bug that it was missing. It's also very minimal and has been tested locally. (cherry picked from commit cc8dab42f0033f0eb96e1de10bcbeea62793514c) -------------------------------------------------------------------------------- 9043e79ccf | Samantha Tobias | 2024-09-08 04:35:42 -0230 fix: "Ran out of altars for temple" error (thirdmesn, Vajrapani) (#4005) A few temple vaults had a temple_altars_X tag where X was lower than the number of altars in the vault. This caused the "Ran out of altars for temple" error during the creation of a new character/dungeon. This commit fixes the issue by increasing the tag values to match the number of altars in the vault. This change results in temple vaults with 22 and 26 altars, instead of the previous max of 21. Note: Does not update temple vaults with a variable temple count due to substitution removing the superfluous altars in the vault. Resolves #2810 Resolves #3846 [Committer's note: actually tweaked the initialization temple function to allow the 22-altar temples to be picked. This _does_ slightly raise the average number of gods compared to 1659c76, but it's probably fine now that more gods are attractive to more characters in 0.32. Also, left a few more comments around. Closes #4005.] -------------------------------------------------------------------------------- 7029d3762f | gammafunk | 2024-09-07 21:04:49 -0500 fix: Don't nest the clua monster spell table The implementation of the clua monster info spells() function was unconditionally putting the array of spells in another table, probably to handle the case when a monster doesn't have spells. This commit uses this (empty) table only in the case when a monster doesn't have spells. -------------------------------------------------------------------------------- e99af74eb8 | DracoOmega | 2024-09-06 21:59:22 -0230 Add Alejandro Ramirez to CREDITS.txt -------------------------------------------------------------------------------- 1545d69ba7 | DracoOmega | 2024-09-05 15:29:20 -0230 Fix gravitambourine being able to move orbs of destruction Since virtually nothing in the game can act upon these directly, I don't think this should be able to either. -------------------------------------------------------------------------------- fa4ca675df | DracoOmega | 2024-09-05 15:28:53 -0230 Fix octopode physiology (dilly, rypofalem, ge0FF) Their species_flags were split between two blocks and seemingly only the second was having any effect. -------------------------------------------------------------------------------- 321b5f042a | Alejandro Ramirez | 2024-09-05 15:13:46 -0230 Ensure only actual spells trigger SpellMotor (#4003) -------------------------------------------------------------------------------- 9fb28c6a05 | DracoOmega | 2024-09-05 15:12:09 -0230 Don't trigger chaotic artifact weapons against dead monsters This could happen if specifically the base *brand* of the weapon killed a monster, and even then didn't usually cause a visible problem. With chaotic Rift and Punk *specifically* (among all chaotic unrands that can currently appear in the Xom bazaar), this resulted in a crash. Unlike other sources of brand damage, Punk's acid and distortion banishment fully reset a monster when they happen, meaning the defender's type is MONS_NO_MONSTER by the time the secon apply_brand_damage() happens. And chaos brand specifically tries to look at a monster's resists to determine what brands it can roll. Against a normal dead monster, this happens normally (and then it elects not to apply the brand at all), but against a reset monster, this causes an assert when it looks for its resists. I think a more proper solution involves refactoring the chaos brand check, but I'd like to cherry-pick a bugfix in 0.32, so I'm going with the simpler solution with less possible side-effects for right now. -------------------------------------------------------------------------------- 92cb95d158 | regret-index | 2024-09-02 19:47:05 -0230 Fix a vault using Dungeon's gem in Depths (WizardIke) An unfortunately missed copy-paste from the D:$ configuration screwed up the Depths:$ configuration. For bonus points, it'd show up as shattered on the ground. -------------------------------------------------------------------------------- b3cc53a541 | DracoOmega | 2024-09-02 15:06:26 -0230 Give the Black Torch status some short_text (So that it can be queryable from lua, first and foremost.) -------------------------------------------------------------------------------- 75c2363917 | DracoOmega | 2024-09-02 15:06:26 -0230 Hopefully fix crash when viewing the Form Properties menu (ge0FF) This crash doesn't occur on any architecture I personally have access to, but had been reported for local tiles on both Arch Linux and Fedora. Big thanks to ge0FF for hopefully tracking down the real culprit. I'm just going to have to take other people's word that this fixes things. -------------------------------------------------------------------------------- 41e258f827 | DracoOmega | 2024-09-02 15:06:26 -0230 Don't let Vanquished Vanguard summons sometimes drop items (cfcfcfcfcf) This only happened if they were killed directly (as opposed to timing out or the summoner being killed). -------------------------------------------------------------------------------- 4495e38fd1 | DracoOmega | 2024-09-01 18:28:53 -0230 Fix all blockable beams being blocked 100% of the time (Lici) Broken since 2031b86 alarmingly.... -------------------------------------------------------------------------------- b3de7b944d | gammafunk | 2024-08-30 21:21:10 -0500 task: Add the trunk 0.32 tournament reminder -------------------------------------------------------------------------------- 6fe00ff5d4 | gammafunk | 2024-08-29 16:13:02 -0500 doc: Update the changelog for the 0.32 release (cherry picked from commit 2a3b71ecb9cd912fbbc65fd33e16365abcc6daa8) -------------------------------------------------------------------------------- f63b3e169c | gammafunk | 2024-08-29 15:56:07 -0500 task: Update the debian changelog for 0.32.0 (cherry picked from commit e9cc5b35c8837d80da24021ff7dc4a8983bbf222) -------------------------------------------------------------------------------- cf2570bee3 | DracoOmega | 2024-08-28 18:20:19 -0230 Add Grave Claw to the list of monster smitey spells ...that is used to determine whether the caster will push past allies. As per the comment above the list, these probably should really be spell flags (or maybe a flag on the monster itself instead??) There are quite a few things which would theoretically qualify to be on this list, but I'm not filling it out right now as this would cause monster behavior changes that may or may not be positive and shouldn't be done so close to release. Will aim to do something with it in 0.33, though. -------------------------------------------------------------------------------- 30fde11914 | DracoOmega | 2024-08-28 18:18:18 -0230 Significantly decrease monster Grave Claw damage While this isn't used on any normal monsters (yet?) and scary ghosts with it can mostly be avoided, wizard apostles (especially early ones) could be disproportionately deadly to fight with the numbers the spell currently has. (I'll probably take a closer look if anything else gets this in 0.33, but for now I feel a quick fix is warranted.) -------------------------------------------------------------------------------- df7718d54d | DracoOmega | 2024-08-28 18:14:02 -0230 Describe the pseudopod aux attack when examining the mutation -------------------------------------------------------------------------------- 516f9d4634 | DracoOmega | 2024-08-27 23:03:11 -0230 Fix enhanced breath damage not displaying for red draconians (Undo) -------------------------------------------------------------------------------- 8f600990a4 | DracoOmega | 2024-08-27 21:58:25 -0230 Fix draconians not getting breath power boost in dragon form (Undo) This was always intended, but the refactoring done as part of 0.32's draconian breath revamp ened up accidentally removing the new breaths from the code which would give them increased power. At the same time, clean up a confusing remnant of that old code, which gave ABIL_BREATH_FIRE reduced power outside of dragon form (even though it was impossible to have it outside dragon form) and gave Naga who had mutated ABIL_BREATH_POISON increased power if they were in dragon form (???) (Dragon form breath weapon really should scale with Shapeshifting skill now instead of XL, but I plan to do that as part of a greater pass on forms in 0.33) -------------------------------------------------------------------------------- a5f74d5c56 | DracoOmega | 2024-08-27 16:52:28 -0230 Fix another spacing issue with player titles on % screen (NormalPerson7) -------------------------------------------------------------------------------- 01a4114b50 | DracoOmega | 2024-08-27 16:33:33 -0230 Fix an extraneous space in Dith max invo title in webtiles sidebar -------------------------------------------------------------------------------- ad26841d26 | DracoOmega | 2024-08-27 16:33:33 -0230 Add a placeholder description for armataur monsters These can be encountered in a few entrance vaults, so it's possible for players to examine them, and they were missing a description altogether. (It amuses me a little to write of yaktaurs as if they were common frames of reference for people from this world.) -------------------------------------------------------------------------------- 3f04b6fbeb | DracoOmega | 2024-08-27 16:33:33 -0230 Adjust orc monster description The current one's flavor seemed a little incongruous with the 0.32 Beogh changes. -------------------------------------------------------------------------------- 0e1e677ba4 | DracoOmega | 2024-08-27 16:33:33 -0230 Prevent a crash with a phantom mirrored Blorkula being killed Cleaning up enchantments on Blorkla before 'saving' them prior to bat split was also deleting the abjuration timer, causing them to die mid-split. Ideally, I'd like to let them just split into summoned bats, but there's no easy way at present to delete enchantments *other* than abjuration. So instead, just prevent summoned Blorklas from splitting. This makes me a little sad, but it's so niche a situation that I can't justifying the refactoring that might be involved post feature-freeze. Maybe some future time? -------------------------------------------------------------------------------- fefbaf9652 | DracoOmega | 2024-08-27 16:33:33 -0230 Fix a possible crash with Xom fake shatter It tried to modify the quantity of the large rocks created *after* they were placed on terrain, but if the location selected to place them was lava, the rock would already be destroyed by the time the code attempted to modify it. It would be easy enough just to not try to place rocks in lava at all, but the sizzling splashes caused by them seems flavorfully appropriate enough to me. -------------------------------------------------------------------------------- df10614e8e | CipHuK | 2024-08-26 16:04:40 -0230 fix(trove): allow wand of digging for trove_misc_dual_throne_room (#3993) [Committer's note: Unnerfed the wand of digging charges count; the trove's already more niche than the other wands trove, trove_wands_scrolls. Closes #3993.] -------------------------------------------------------------------------------- d232e38429 | DracoOmega | 2024-08-26 02:35:44 -0230 Don't crash when aiming Gavotte near the edges of an unseen map boundary -------------------------------------------------------------------------------- b05a317584 | DracoOmega | 2024-08-25 16:57:30 -0230 Fix a crash when shock serpent reprisal kills a monster -------------------------------------------------------------------------------- 6d945e7588 | DracoOmega | 2024-08-25 16:17:38 -0230 Use attack_strength_punctuation for shock serpent reprisal (cfcfcfcfcf) Surprising amount of code editing was needed to do this and still print the resist message in the proper place. -------------------------------------------------------------------------------- 89b494631c | DracoOmega | 2024-08-25 16:17:32 -0230 Make recruitable apostles disappear when you change floor Previously, if you were off-level when the recruit timer expired, the apostle would remain wandering on that floor forever. Instea, end the timer immediately if you leave the floor. I'm a *tiny* bit uncertain about whether this could catch a player off-guard by ending the window prematurely, but it's relatively consistent with other uses of good-neutral orcs and there's probably not many situations where a player needs to leave a floor immediately, and still plans to come back and recruit afterward. (And this is simpler to implement by far). -------------------------------------------------------------------------------- 4120489253 | Medrano83 | 2024-08-25 16:35:14 +0200 Android fix. Declare the gategory of the app as a game Categories are used to cluster multiple apps together into meaningful groups, such as when summarizing battery, network, or disk usage. -------------------------------------------------------------------------------- 2325b17bb0 | DracoOmega | 2024-08-25 02:17:57 -0230 Display Lightning Spire's damage in Summon Lightning Spire cast interface Following similar logic to Hoarfrost Cannonade doing so. -------------------------------------------------------------------------------- 11011316db | DracoOmega | 2024-08-25 01:59:56 -0230 Display which monster is engulfing the player (when examining them) In a similar fashion to when a monster is constricting you, indicate which monster is engulfing you when you are being engulfed (to help with ambiguities when there are several possible monsters nearby). This doesn't indicate the source of monster/monster engulfment, but that seems of much more marginal value. (It is much less straightforward to do this, since monsters themselves don't track who or even *if* they are currently engulfing anything) -------------------------------------------------------------------------------- 6b671fb534 | DracoOmega | 2024-08-25 01:55:05 -0230 Display Makhleb's Unleash Destruction hit-chance when targeting -------------------------------------------------------------------------------- 2c1f918eca | DracoOmega | 2024-08-25 00:35:43 -0230 Remove some old runrest_ignores The reasoning no longer applies to current Yred (and only one of these message even happens anymore). -------------------------------------------------------------------------------- 3094c0ca69 | DracoOmega | 2024-08-25 00:35:07 -0230 Stop auto-explore rest over deep water with expiring temp flight If the player had temporary flight and was over deep water or lava, pressed autoexplore, and was injured enough for autoexplore to rest first, the game would skip past the expiring flight warning instantly and activate emergency flight (potentially draining the player quite a bit for no good reason). It feels like autoexplore rest probably just shouldn't ignore force_mores at all (this was already a default force_more), but for the moment adding the message to runrest_stop_message fixes the immediate problem. -------------------------------------------------------------------------------- 5a265af164 | DracoOmega | 2024-08-24 23:24:10 -0230 Don't let cosmetic clouds block catoplepas breath (among other things) We've established reasonably clear rules about cloud overwriting by now, and cosmetic (ie: harmless, non-opaque) clouds are supposed to be overwritable by everything. This is true in perhaps the majority of cases, but bolt::affect_place_clouds() (used mainly for placing clouds *along* a beam path) still has a check that ends prematurely if there is *any* cloud already at a given space. This didn't even always just prevent clouds being placed in *that* space. Noxious Breath and March of Sorrows used this function to place clouds in tiles *adjacent* to the beam path and those would also be skipped if there was a cloud present. So, for instance, using Vhi's to engage Boris could give several turns of immunity to misery clouds being placed anywhere near you. This affected at least: catoblepas breath, player green and yellow draconian breath, March of Sorrows, Mourning Wail, ushabti Death Rattle, and creating cold/steam clouds over water with cold/fire beams. It nominally affected many other monster cloud breaths, but those placed most of their clouds outside of this function, so in practice it likely only blocked cloud placement near the monster when the monster itself was breathing far away from itself (ie: you couldn't use Vhi's or similar for any practical protection.) -------------------------------------------------------------------------------- e8922636c0 | DracoOmega | 2024-08-24 21:34:00 -0230 Don't leak the presence of monsters in the Refrigeration targeter The color-coding used to indicate how many allied monsters are adjacent to each monster (affecting Refrigeration's damage) leaked information on the presence of both invisible monsters and those out of the player's line of sight entirely. -------------------------------------------------------------------------------- 9311ea8977 | DracoOmega | 2024-08-24 21:22:35 -0230 Fix a niche crash with displaying future XL-based mutations If the player already recieved a non-innate version of a mutation they were slated to receive at a later XL, the mutation preview would display an incorrect mutation level (ie: expecting that they would gain an additional level of that mutation, instead of making the level they had already gained innate.) If that level was higher than the actual max, this would cause a crash when opening the mutation menu. (A realistic example is a felid mutating a level of fur at random, resulting in the mutation preview thinking they will gain Fur 4 at XL 12) -------------------------------------------------------------------------------- c0fac641d8 | DracoOmega | 2024-08-24 21:13:50 -0230 Allow casting BBB on deep water (Dilly) The boulder can already travel through deep water, so there's no reason to prevent the player from casting it on a deep water tile. (This was a leftover from when it wasn't large enough to cross deep water). Also slightly tweak failure messages. -------------------------------------------------------------------------------- 8ec6a561cd | DracoOmega | 2024-08-24 21:07:52 -0230 Fix Shadowslip having a misleading duration when used repeatedly (Acrobat) Using Shadowslip while it was already active would *set* the duration of the misdirection effect on all enemies to a rolled duration, while the visual change to your shadow was *added* to the duration of its curent transformation. This meant that if you used it again before it wore off, the effect would expire long before it 'looked' like your shadow had returned to normal. Now the shadow visual transformation should better match the duration of the mechanical effect. -------------------------------------------------------------------------------- afe045b255 | DracoOmega | 2024-08-24 20:53:33 -0230 Fix canine familiars being left alive on past floors I am not sure what this function call was doing in the old coded that it was copied from in this refactor, but at the very least it seems superfluous now (it will be called by monster_die() below anyway). -------------------------------------------------------------------------------- be950636f5 | DracoOmega | 2024-08-24 20:32:22 -0230 Fix a crash when trying to use quivvered Shadowslip with no shadow Even if the ability was unusable because of no active shadow, the codepath for using it via quiver would still construct a targeter first, and this targeter (used to show what monsters will be distracted) assumed that it could not be called without an active shadow. This turns out to not be the case. (The targeter is never shown to the player, either way.) -------------------------------------------------------------------------------- 5a015b80b9 | Medrano83 | 2024-08-24 22:51:02 +0200 Fix Android mouse detection The code inherited from SDL compares Event.getSource with InputDevice.SOURCE_MOUSE. This doesn't work on modern devices. The right way to identify a mouse event is: - Event.isFromSource(InputDevice.SOURCE_MOUSE) This also improves commit e7e1c0f, because SOURCE_CLASS_POINTER is too generic. I'm also removing some unused variables. -------------------------------------------------------------------------------- 4b97a1a549 | Medrano83 | 2024-08-24 22:50:49 +0200 Fix Android touchpad scrolling Chromebooks use buttonless ACTION_MOVE events to represent touchpad scrolling. Normal cursor movement uses a different action: ACTION_HOVER_MOVE. -------------------------------------------------------------------------------- fa02dad217 | gammafunk | 2024-08-23 18:01:28 -0500 fix: Don't mark certain spells as self enchantment A number spells are marked as self enchantments despite not setting any kind of duration or enchantment on the caster itself. These are mostly demon-related summon spells, a few conjurations that create monsters (e.g. Marshlight and Conjure Ball Lightning), as well as Phantom Mirror and Spawn Tentacles. For the non-summoning spells, having this flag leads to them not being considered as ranged spells. For Spawn Tentacles, there's even an explicit check to override this! This commit removes the self enchantment spell flag on the aforementioned spells. It also removes checks in the monster casting code for some of these spells that were only needed because of this flag. One subtle aspect affected by this commit is a monster's second spell cast attempt. If a monster rolls a targeted spell for its action and is unable to find a target, a second casting attempt is made, and 50% of the time this second check only considers self enchantment spells. So this change effectively reduces the frequency monsters would cast these spells if they also have a spell that can somehow fail to target. However this frequency reduction is very small in practice for the monsters affected by this change. For example, I have tested orc sorcerers who are in LOS but unable to target the player with bolt of drain/paralyze, and they still readily cast Summon Demon. Monsters that don't have targeted spells in addition to these spells will see no change at all. Not including summons nor spells that make conjured monsters as ranged attacks doesn't make a lot of sense and should be revisited in a future commit. In terms of player safety, many monster summoners create summons with "proper" ranged attacks or superior terrain traversal compared to the summoner. And conjured monsters certainly pose an acute threat to the player at range. I want to make extra sure I understand all the implications of designating summon spells as ranged attacks for monsters, although I'm fairly sure there are no issues. For now, the only change in this regard is removing an explicit exclusion for Conjure Ball Lightning as a ranged spell. Lom Lobon is the only monster with this spell and has Glaciate, another ranged spell, so this has no in-game effect. Finally, Repel Missiles and Berserker Rage are clearly self enchantments and so are given the self enchantment flag by this commit. For Berserker Rage, this means that bear monsters will no longer be flagged as ranged monsters. -------------------------------------------------------------------------------- b2e620de6b | Nicholas Feinberg | 2024-08-22 16:29:25 -0700 Fix: don't stairs into the abyss (CarefulOdds) Malign Gateway's terrain feature isn't stairs, so don't colour it on the minimap as if it were stairs. Display it as a wall. -------------------------------------------------------------------------------- 34d56c8fa2 | Nikolai Lavsky | 2024-08-23 00:16:07 +0300 text: mention that Soul Splinter inflicts weakness (MIC132) -------------------------------------------------------------------------------- e7e1c0f356 | Medrano83 | 2024-08-22 20:43:27 +0200 Fix Android mousewheel scrolling The code used to detect mouse scroll events in the SDLActivity doesn't work in modern devices because the event's source is different from SOURCE_MOUSE. Reference: https://developer.android.com/games/playgames/ input-mouse#handle_mousewheel_scrolling -------------------------------------------------------------------------------- fc2bf62883 | David Lawrence Ramsey | 2024-08-21 19:17:44 -0500 Don't give gladiators default kite shield tiles. They haven't had shields in their starting equipment for ages. -------------------------------------------------------------------------------- 8817171229 | Medrano83 | 2024-08-21 21:52:02 +0200 Android: Add a full screen option to the launcher I got this message from an Android user: > can't enable full screen mode by setting "tile_full_screen = true", > still shows a black bar on top with device status. I agree a full screen option for Android can improve the user experience. Mostly when playing on landscape mode with modern devices. You can read this in the docs: > Where you set the UI flags makes a difference. If you hide the system > bars in your activity's onCreate() method and the user presses Home, > the system bars will reappear. When the user reopens the activity, > onCreate() won't get called, so the system bars will remain visible. > If you want system UI changes to persist as the user navigates in and > out of your activity, set UI flags in onResume() or > onWindowFocusChanged(). Tried both options and the behaviour when using onWindowsFocusChanged is more consistent. When using onResume, full screen is lost whenever you open the top menu. -------------------------------------------------------------------------------- ae761ad27d | David Lawrence Ramsey | 2024-08-21 10:57:38 -0500 Adjust kraken tentacle msgs to not mention water. Since a soul-bound kraken flies and so is not in water. -------------------------------------------------------------------------------- 589741c2aa | gammafunk | 2024-08-20 21:09:48 -0500 fix: Add some missing KMASK to a vault (dilly) Set these unreachable areas to have no level generated monsters nor items. Also, we can't actually make a gnoll bouda skeleton, just gnoll skeletons, so simplify the skeleton placement. -------------------------------------------------------------------------------- 099670764a | David Lawrence Ramsey | 2024-08-20 18:18:40 -0500 Fix Xom glove slot msgs for certain randarts. The Mad Mage's Maulers and Delatra's gloves don't start with "pair of ", but make Xom glove slot messages put that at the beginning of their names anyway, so that all glove names come out as singular and the message grammar fits. There should be a better way to handle this, but this will work for now. -------------------------------------------------------------------------------- 72c75df84f | David Lawrence Ramsey | 2024-08-20 16:55:14 -0500 Fix indentation. -------------------------------------------------------------------------------- eb33c5b31a | Medrano83 | 2024-08-20 23:50:43 +0200 Android fix: Swipe gestures produce undesired click events I had the chance to play the game on a tablet and tried to use touch events only. It was a painful experience, but this will help. -------------------------------------------------------------------------------- 5cf48a82f6 | David Lawrence Ramsey | 2024-08-20 12:12:41 -0500 Add missing commas to some monster speech. -------------------------------------------------------------------------------- aee97d7bc7 | DracoOmega | 2024-08-20 14:10:45 -0230 Properly make Oni double potion heal affect !magic (Acrobat/dilly) It was always intended to, and the mutation description even mentions such, but apparently it never worked properly. This also affects Kyrias, which is intended to have the same set of functionality. -------------------------------------------------------------------------------- f212be2d05 | Nikolai Lavsky | 2024-08-20 14:55:01 +0300 fix: remove evocable flight, again Having a barding or boots of flying in the inventory enables training of Evocations, even though such items no longer require an activation. This commit fixes that. -------------------------------------------------------------------------------- 24a3017434 | Nikolai Lavsky | 2024-08-20 13:39:55 +0300 docs: mention the removal of permanent bazaars in the changelog They were removed in e446cd8f. -------------------------------------------------------------------------------- f2d5535fad | Nikolai Lavsky | 2024-08-20 13:25:09 +0300 docs: update `dump_order` in the options guide Document the new `apostles` field, which was added in d887a3bc. Also, convert some stray tabs to spaces. -------------------------------------------------------------------------------- dab2e85f15 | David Lawrence Ramsey | 2024-08-20 00:53:11 -0500 Fix Xom ring msgs for macabre finger necklace. Since the ring there isn't worn on a hand. -------------------------------------------------------------------------------- a8b5e4c4fa | David Lawrence Ramsey | 2024-08-19 20:34:12 -0500 Move Beogh resurrection invo icon to UNUSED. -------------------------------------------------------------------------------- fda3adbe32 | DracoOmega | 2024-08-19 20:09:57 -0230 Allow no_tele_into tags (and some others) to actually work for subvaults Map tags which applied fprops (such as no_tele_into, no_tide, no_jiyva) did nothing at all when attached to a subvault. Most of these were not used this way, as far as I can tell, but no_tele_into *was* used several times - notably in the S-branch preview chambers for grunt_ashenzari_visionary - meaning that it was possible for the player to teleport (or take a hatch) into a place from which there was no escape and also many wildly out of depth monsters. Now, the same set of fprop tags that work with parent vaults should also be respected by subvaults. (It's worth nothing that kprops applied to subvaulted glyphs by the parent vault are *also* ignored when a subvault is merged, so there was really no good way to do this sort of thing prior to this commit, despite what one might expect.) This fixes #3979 -------------------------------------------------------------------------------- 8f3c08acc0 | DracoOmega | 2024-08-19 20:09:57 -0230 Show some fprops in the local tiles tile tooltip It wasn't easily possible to see what tiles were marked no_tele_into in game, and this is helpful for diagnostics sometimes. (I didn't bother showing fprops here which are easy to verify visually, such as Sanctuary. It would be easy enough to expand this list in future, though, if there's any need.) -------------------------------------------------------------------------------- 1eb867fef6 | DracoOmega | 2024-08-19 20:09:57 -0230 Hopefully finally make player ghosts stop trying to cast Gell's Gravitas The spell was removed from existing monsters in unmarshallMonster() (as is done for many other spells) but player ghosts apparently don't go through that function when they are loaded, allowing it to cast a spell that didn't exist for monsters anymore. -------------------------------------------------------------------------------- 3d2af943be | DracoOmega | 2024-08-19 20:09:57 -0230 Update removed_spells list And add version tags around a few spells that were effectively removed, but never got them. I wonder if, instead of using the AXED_SPELL macro in spell-data.h, dummy data should automatically be provided for any spell in the removed_spell list? Since currently there are effectively multiple places to say that the spell was removed, with different consequences for not being listed there. -------------------------------------------------------------------------------- 751def610d | Medrano83 | 2024-08-20 00:19:32 +0200 Fix Android build on armeabi-v7a There's an error when building the game with NDK 26 for armeabi-v7a. This passed unnoticed on previous tests because the other architectures supported by Android are not affected. It can be fixed with another function casting on sdl2-mixer. -------------------------------------------------------------------------------- cf733dc7dc | DracoOmega | 2024-08-19 15:22:12 -0230 Fix swoop/flank attacks missing some of the proper checks (Ogregutan) It was possible for a monster to perform one of these attacks while afraid, pacified, in a sanctuary, or possibly even against an ally (though I'm not 100% sure that the circumstances that would set up this last case were possible in practice). -------------------------------------------------------------------------------- e547df2160 | Sean Dewar | 2024-08-19 09:52:17 -0700 Fix stash search prefixes for golden dragon scales Presumably broke since the rename from gold -> golden. -------------------------------------------------------------------------------- 8ac6e3977b | DracoOmega | 2024-08-18 18:24:36 -0230 Display what aspiring flesh will turn into when you examine them The game already announces this in the message log, but it can be easy to overlook and more fiddly than necessary to go find it again if you want to double-check. Now it is displayed on the same line with other status effects when you look at them. -------------------------------------------------------------------------------- 1836586e43 | regret-index | 2024-08-18 17:53:36 -0230 Add tekkud to the credits Missed back in 84d97b0 and ea827eb. -------------------------------------------------------------------------------- 4ec9ae56f4 | regret-index | 2024-08-18 17:53:36 -0230 Mildly adjust the changelog Remove a duplicate soul scholar entry, mildly allude to the conditions Xom bazaars happen in, and list off a fair number of tile additions not listed in other changelog updates. -------------------------------------------------------------------------------- 1d4c9e7c8f | DracoOmega | 2024-08-18 17:31:10 -0230 Don't (confusingly) leak invisible monsters with Piledriver (Acrobat) While Piledriver already could never target and move a monster the player could not see, it was possible for an invisible monster to be in the way of moving something the player *could* see, which resulted in a confusing message about the spell being unusable in situations where it looked like it should be. Now the targeter will display paths based on what the player can see, but if an invisible monster is in the way of the selected path, the spell will fizzle without effect when cast instead. This is a little unfortunate, but also we can't really move something that has nowhere to move. (If *a* viable path remains unblocked, the spell will take that one instead) -------------------------------------------------------------------------------- e868d8570b | gammafunk | 2024-08-18 13:54:57 -0500 doc: Changelog update -------------------------------------------------------------------------------- fdaad256b3 | David Lawrence Ramsey | 2024-08-18 10:04:14 -0500 Fix wrong changelog commit hash (gammafunk). -------------------------------------------------------------------------------- 8529b04c42 | DracoOmega | 2024-08-17 21:40:06 -0230 Stop Coglins from destroying cursed items without a prompt in local tiles Clicking on a weapon in the inventory panel in local tiles attempts to wield that weapon. For coglins in particular, it bypasses the normal prompt for 'which hand do you want to put that weapon in?' - with left click going into the main hand and ctrl+left click going into the offhand. However, the logic in can_wield() regarding curses only checked that the player had *a* hand free to wield a given weapon - not necessarily the hand they were about to put something in! So if a player had one cursed weapon and their other hand was free, using click-to-equip for the hand with the cursed weapon would see that it was possible to equip a new weapon, and then immediately unwield and destroy the cursed item to replace it with the one just clicked on. Now there is specific logic to check for the corresponding weapon being cursed first. -------------------------------------------------------------------------------- 193dd4b38f | DracoOmega | 2024-08-17 21:07:55 -0230 Fix ally-cast foxfires from counting as the player's own kills I'm not sure this matters for a whole lot outside of messaging, mind you. -------------------------------------------------------------------------------- f4a7df68b9 | DracoOmega | 2024-08-17 21:06:41 -0230 Fix an issue with Mark of the Celebrant and Reflection Since Celebrant's cooldown was set *after* the volley of blood arrows fired, if the player took damage as a result of it, this damage could trigger another barrage. (Possibly this could also happen with Pain Mirror) But while this is a bug in its own right, the crash mentioned in #3972 doesn't seem to me like it could be directly caused by getting multiple bloodrites. I think reusing the beam structure may have resulted in improper values being set if the beam was reflected in the process. So instead, copy the beam structure anew with each shot to avoid this. This should fix #3972 -------------------------------------------------------------------------------- 470f6e4a91 | DracoOmega | 2024-08-17 20:11:45 -0230 Some Gavotte targeter improvements If a monster that will get wall slammed overlaps with the player's transit path, it will still be hilighted to indicate it will take damage. The targeter now accounts for seen terrain and monsters that are outside the player's current line of sight, instead of effectivey treating everything the player cannot currently see as empty floor. This allows more intuitive and accurate hilighting of which monsters will take damage from a given movement (since it otherwise may not be obvious why a given monster isn't hilighted when the *player* knows there's a wall in the way already.) This does mean the tracer will sometimes claim a monster will take damage when it won't (ie: because something dug a wall out of line of sight or destroyed a plant it was expected to hit) but this should be much, much more rare than the previous situation of ignoring map memory of unseen walls entirely. -------------------------------------------------------------------------------- 691159746b | DracoOmega | 2024-08-17 20:11:45 -0230 Expire boulders and ballisto spores when changing floors At some point in the not-so-distant future I will actually unify 'temporary monster' checks that don't depend specifically on abjurability. But in the meantime, don't let the player drag boulders between floors with them. (Amusingly, spores would effectively only follow you only if there was a hostile monster in sight when you took the stairs, and otherwise stay on their original floor.) -------------------------------------------------------------------------------- d9894b7f15 | DracoOmega | 2024-08-17 20:11:45 -0230 Note in Upheaval's description that it cannot harm the player (Or elementals summoned via Elemental Force) -------------------------------------------------------------------------------- e2c4daa879 | DracoOmega | 2024-08-17 20:11:45 -0230 Prevent spawning a Crucible exit on the other side of deep water Since the only deep water possible in this map is on the very edges of the arena, forcing the exit to only place on the floor (which makes more sense anyway) should prevent any possible softlocks. -------------------------------------------------------------------------------- 718b86c488 | DracoOmega | 2024-08-17 20:11:45 -0230 Don't let Rimeblight explosions hit good neutrals This mostly only matters for Beogh worshippers, but could unduely cause penance at random mid-battle. If it can ignore friendlies, it can ignore neutral orcs, too. -------------------------------------------------------------------------------- 959a7d1ea5 | DracoOmega | 2024-08-17 20:11:45 -0230 Fix AF_SPIDER and AF_HELL_HUNT printing messages when triggered out of LoS -------------------------------------------------------------------------------- e09b82ad32 | DracoOmega | 2024-08-17 20:11:45 -0230 Fix initial explosion from Rimeblight ignoring LoS check (CarefulOdds) -------------------------------------------------------------------------------- 9405a8f6c0 | DracoOmega | 2024-08-17 20:11:45 -0230 Remove Oni gaining extra benefit from mutation potions An oversight left over from when the original armataur double potion mutation applied to all potions. Oni are only intended to double healing potions. -------------------------------------------------------------------------------- 62c44d5b28 | DracoOmega | 2024-08-17 20:11:45 -0230 Add a confirmation prompt for accepting Infernal Marks (various) This is a high-impact choice made once per run. A confirmation prompt seems reasonable here. -------------------------------------------------------------------------------- c9fbf6cc2f | DracoOmega | 2024-08-17 20:11:45 -0230 Remove an orphaned comment The code it was commenting *on* has been already removed anyway (it was in regard to spell enhancers not applying to spells cast via rods). -------------------------------------------------------------------------------- 1502f1d042 | DracoOmega | 2024-08-17 20:11:45 -0230 Remove code for handling zapping wands with 0 charges. This isn't possible to do anymore, anyway. -------------------------------------------------------------------------------- 0ad0e9b9b2 | DracoOmega | 2024-08-17 20:11:45 -0230 Don't let !/@ work when aiming smite-targeted spells These keys allow force-casting a spell not just beyond its range, but at places where the spell's targeter:::valid_aim() returns false - essentially ignoring any target validity checks that are done there. While this serves some purpose for beam spells, by allowing the player to select beam paths that are not possible within the spell's range, (and the beam's range and physical properties will be respected, regardless), I don't think it serves any purpose for spells which target a specific location. Forcing a spell to be cast on a location the game itself says is not valid is just asking for undefined behavior. And boy, there's quite a bit of it at the moment. This may not be comprehensive, but at the moment at the very least: -Grave Claw, Mercury Vapours, Momentum Strike, Cigotuvi's Putrefaction, and Sculpt Simulacrum can all be cast at full LoS range. -Magnavolt and Putrefaction can trigger a crash-on-demand by aiming at a tile without a monster. -Putrefaction can be functionally used on uninjured monsters and non-living monsters. Many older spells in the game do not exhibit the same range bugs because each spell's own code checks manually that the target they have been given is valid and in range - with even the most straightforward of range checks being essentially duplicated countless times in different places. Some of these spells predate the targeting API existing at all, and some were bandaided later on, but I'm inclined to think that where a spell defines a hitfunction for validity, that this function should be authoritative and the spell should not have to duplicate its checks (this sort of problem has come up many times in past and been fixed in a one-off manner on many of this times.) Doing so would allow cutting out a bunch of now-redundant code from many spells, though I am going to pass on doing so during feature freeze, since it seems at risk of introducing new bugs. I'd like to make it a 0.33 thing, though. -------------------------------------------------------------------------------- 280500051a | DracoOmega | 2024-08-17 20:11:45 -0230 Display the health buff that shadows get from Shadowslip in xv (Acrobat) -------------------------------------------------------------------------------- fccc69708b | DracoOmega | 2024-08-17 20:11:45 -0230 Don't mislead firewood with Shadowslip "The fungus turns its attention towards your shadow x24" -------------------------------------------------------------------------------- 098aa689ba | DracoOmega | 2024-08-17 20:11:45 -0230 Fix enemies being mislead by Shadowslip after being charmed (Monkooky) If an enemy was distracted by your shadow, they would continue to fixate on it even after being charmed. On the one hand, this makes a certain sense. They think your shadow *is* you, so why should they listen to orders from that othere chump over there? And it *is* pretty funny. But probably it should just break the mislead effect, so now it does. This fixes #3970 -------------------------------------------------------------------------------- 2c87f10760 | Kate | 2024-08-17 22:05:56 +0100 Adjust a description for consistency "Magic" rather than "mana". -------------------------------------------------------------------------------- 2cd2782243 | gammafunk | 2024-08-17 15:07:03 -0500 doc: Some clua api doc tidying -------------------------------------------------------------------------------- 8b4f558f18 | gammafunk | 2024-08-17 15:02:40 -0500 fix: A check for monsters having ranged spells The function mons_has_ranged_spell() didn't considered spells marked as ranged by _ms_ranged_spell() to actually be ranged unless their range was greater than 1. The problem with this is that many LOS-affecting spells have an undefined range, which gets resolved to a range of -1. Hence a monster like a curse toe with e.g. Symbol of Torment and only summons as its other spells was incorrectly not flagged as ranged. This commit only excludes attack spells if their range is exactly 1. I've looked over all calls to mons_has_ranged_spell() and there's nothing that should break if we expand the list of monster ranged spells in this way. It might be good to actually designate a LOS range for all the various smite targeted attack spells for clarity in the monster info UI. Smiting itself already has such a range, for example. I'm not changing any spell definitions for now, since I've not checked if those changes could somehow have other side effects. Monster AI is notorious for having subtle bugs. (cherry picked from commit 585c54f536188b0a9123da2be5ea99197ebdd732) -------------------------------------------------------------------------------- f3f7718482 | Implojin | 2024-08-17 14:48:55 -0500 fix: clua api ldoc generation This has apparently been broken since 60c0b14602 (mid-0.31), as mentioned in previous commits on this ldoc remains pretty fragile. To regenerate these, run `make api`. -------------------------------------------------------------------------------- a3a3e7ce51 | Implojin | 2024-08-17 11:36:33 -0500 Add Lexi Hattaway to the credits -------------------------------------------------------------------------------- 28ae855c5f | David Lawrence Ramsey | 2024-08-16 22:30:14 -0500 Fix enum name for magnetised dust clouds. So it consistently uses 'magnetised', instead of 'magnetized' in some places and 'magnetised' in others. -------------------------------------------------------------------------------- 9333e8e020 | patrick | 2024-08-16 23:23:25 -0400 Tone down the greed value of a Shoals shop 100 is the same value as Gozag's Platinum Reserve, which is intended to be a ridiculously high overcharge. The proprietor of the mermall isn't supposed to be quite that greedy. Now it's 20. -------------------------------------------------------------------------------- 191c959e3d | David Lawrence Ramsey | 2024-08-16 22:06:45 -0500 Tweak food_snacking_frequency documentation. Since 40% is not one third of the time. -------------------------------------------------------------------------------- cc75f2f1da | Lexi Hattaway | 2024-08-16 23:04:53 -0400 added my first vault (pentagon) after testing -------------------------------------------------------------------------------- 88fe4fe15f | David Lawrence Ramsey | 2024-08-16 21:36:48 -0500 Use @objective@ properly in Nergalle's dialogue. -------------------------------------------------------------------------------- 385508daed | regret-index | 2024-08-16 01:59:21 -0230 Add Darby to the credits Accidentally left out after f582fa6, despite d06570b and 3ec762b. -------------------------------------------------------------------------------- 8f138eace0 | David Lawrence Ramsey | 2024-08-15 16:17:24 -0500 Add Michael Hunter to CREDITS. -------------------------------------------------------------------------------- 6728d54412 | David Lawrence Ramsey | 2024-08-15 10:43:37 -0500 Add Christopher Partin to CREDITS. -------------------------------------------------------------------------------- 122fbd90ea | DracoOmega | 2024-08-15 05:54:48 -0230 Make uniques a little more chatty There's been a bunch of effort in recent years to characterize uniques better, and give them more personality in their dialogue. It seems fair that they get to chat a little more than other monsters as a consequence, so that players have a better chance to see it before killing them. (Donald and Yuif had greatly increased odds to talk compared to other uniques, and I have lowered their bonus to keep their net rate of conversation about the same as it was before now.) -------------------------------------------------------------------------------- 0be9698d78 | DracoOmega | 2024-08-15 05:54:48 -0230 Nudge Mark of Haemoclasm's numbers up again just a small bit After the previous buffs of 4c67e76a8e2a7885a haemoclasm feels a lot closer to the right place, but could possibly stand to be just a *bit* more frequent, so this increases its trigger chance from adjacent enemies a small bit more and also nudges its base damage a tiny bit higher. -------------------------------------------------------------------------------- 38b740fdb0 | DracoOmega | 2024-08-15 05:54:48 -0230 Fix Unleash Destruction being completely silent Not sure *exactly* how much noise to give it, but 'more than none'. In theory, I could see it argued that lightning-based destruction should be louder than other types, and this wouldn't actually be hard to implement, but I'm unconvinced that it's meaningfully better to sometimes be much louder than other times at random. -------------------------------------------------------------------------------- 562a9a4611 | DracoOmega | 2024-08-15 05:54:47 -0230 Don't let player shadows stab loudly (Midn8) Player stabs are deliberately silent, but when your shadow joined in to eviscerate some poor elf in their sleep as well, it would make enough noise to potentially wake up all the others. I could just block shadow melee noise on stabs, but shadow *spells* are already all completely silent, so it seems fine to make their melee universally silent as well. -------------------------------------------------------------------------------- 907ac0868c | DracoOmega | 2024-08-15 05:54:47 -0230 Allow divine heal-on-kill to work on monsters which are 'objects' It already seperately excluded summons and things which don't grant the player XP, but for some reason it *additionally* vetoed monsters which were objects. Monsters that counted as objects but also gave XP *mostly* meant 'dancing weapons', but it was still strange that Makh/Veh/TSO healing didn't count them. This bit of code seems ancient, and if there was ever a good reason for it, I doubt there is anymore. -------------------------------------------------------------------------------- 0c44f4d719 | DracoOmega | 2024-08-15 05:54:47 -0230 Slightly rescale chance of good god lifesaving to cap at 6* In keeping with a general policy of not giving god benefits that scale beyond the 6 piety stars the player is able to see, piety above 160 no longer increases the chance of good gods randomly saving your life (Ely's guaranteed lifesaving already hit max chance at 6*) The old chance was ~28% at 200 piety and ~24.4% at 160 piety. The new chance maxes at 26% at 160 piety (using a very slightly simpler formula). -------------------------------------------------------------------------------- a6fa64cfb8 | DracoOmega | 2024-08-15 05:54:47 -0230 Slightly tweak Magnavolt spell description To try and make it somewhat clearer that it fires one beam individually at each marked target. -------------------------------------------------------------------------------- b7f7cf1fb9 | DracoOmega | 2024-08-15 05:54:47 -0230 Fix a possible Crucible of Flesh crash When new victims are spawned, they are placed with 30-80% of their max hp, but for enemies with very little max hp, it was sometimes possible for this to round down to 0, placing a seemingly-normal-looking enemy that the game nonetheless thought was 'dead' when you tried to hit it, causing an assert. -------------------------------------------------------------------------------- 3e066615e7 | DracoOmega | 2024-08-15 05:54:47 -0230 Buff / un-nerf Drain Life While 9e354a60c6874087a purported to only make Ramparts and Refrigeration check AC (and gave them additional damage in compensation), it also did this to Drain Life and *without* giving it any additional damage at the same time. With the low damage that Drain Life puts out from monsters, this was a very significant accidental nerf. Since the game is already pretty consistent about life-draining style effects ignoring AC, I've opted to return this property to Drain Life instead of just buff its damage. But since Soul Eaters were never known to be *that* scary, I've also adjusted its damage slightly upward as well (from 1d21 to 2d13). Unavoidable damage that ignores AC is pretty strong, but Drain Life is extremely resistable, so I think it's fair for its raw numbers to feel relevant. (I've also removed a bit of unnecessary code/comments now that Drain Life isn't player accessible in any fashion.) -------------------------------------------------------------------------------- d20efa1b82 | DracoOmega | 2024-08-15 05:54:47 -0230 Make a few more spells work with Aphotic Marionette This implements Marionette casting of Battlesphere, OTR, Polar Vortex, and Malign Gateway (mostly through calling the player versions of these spells via overrides). It also fixes Berserker Rage being inconsistent about when it could be used this way, as well as Invisibility not producing a message when gained this way. -------------------------------------------------------------------------------- 6655e30ea7 | DracoOmega | 2024-08-15 05:54:47 -0230 Give RevMPSaver an additional effect, rename to SpellMotor In theory, flat spell cost reduction is a powerful effect, but capitalizing on this gizmo property is difficult. To benefit from it, you need to engage in weapon combat first, but many of the spells which gain the most from being able to repeatedly cast with cost reduction tend to be attack spells you'd preferred to have cast from a distance. Its design seems to want a character who is strong enough to comfortably sit in melee, but who has relevant blasty spells they want to cast a lot *after* that point, which is a hard sell on a species whose biggest strength comes from leaning into their ability to do enormous weapon damage while sacrificing defense. Moreover, the cost reduction is also short-lived, since Rev will wear off while the player is casting. In the hope of moderately addressing both of these awkwardnesses, I am adding a second effect to RevMPSaver and renaming it to SpellMotor. In addition to its current effect, it also causes the player to launch a melee attack at a random enemy in range whenever they cast a spell. This gives a direct boost to the hybrid blaster archetype, but also helps the player *sustain* the cost reduction by maintaining Rev if there are nearby enemies to hit while casting. It also allows the player to *build* Rev by spellcasting (but only while directly engaging in combat with those spells). If your weapon attack would somehow have a delay *longer* than it takes to cast a spell, there is a proportional chance to perform no attack (so no being cheeky with giant heavy weapons). While this arguably makes this gizmo property more powerful than its peers, I think the archetype it directly supports is also weaker and less straightforwardly popular on coglins such that I think this is okay. (And it would be nice if all gizmo properties felt reasonably worth taking; I think RevMPSaver is currently a bit of a dud.) -------------------------------------------------------------------------------- 2cfdfcf2c9 | DracoOmega | 2024-08-15 05:54:47 -0230 Adjust Dazzling Flash tracer for monsters, increase duration vs. player Monsters previously considered already-blind enemies as useful targets for this spell. And while the duration *can* stack, it's generally not very useful to keep extending blindness on an already blind player (and, in fact, the moon troll's cast rate was high enough that they would spend fully 25% of their turns casting it, regardless of it accomplishing anything). In some mild compensation, increase the baseline duration when applied to the player. This does affect some other methods of blinding the player, but in general it is a weaker effect on players and a longer duration makes sense to me. (This also doesn't matter a lot given the rarity of blind effects in the game that will hit the player. This is slated to be changed somewhat in 0.33 and duration will be reviewed again at that time.) -------------------------------------------------------------------------------- 04ba9e8093 | DracoOmega | 2024-08-15 05:54:47 -0230 Change Dazzling Flash schools (Conj/Hexes -> Hexes/Fire) A remnant of back when Dazzling Spray actually *was* a damaging spell, conjurations has been an extremely weird fit on the completely non-damaging Dazzling Flash spell for a while. It also meant that Vehumet could gift it to players, despite it not being appropriate to the god at all. The choice of Fire as the new secondary school is somewhat arbitrary, but it felt like the closest thematic fit for 'makes a lot of light, very abruptly'. (I don't think it will affect players much, as one never really trained conjurations as a hexer, nor picked up flash as a conjurer.) -------------------------------------------------------------------------------- cb2735431a | David Lawrence Ramsey | 2024-08-14 22:16:14 -0500 Add another Xom ring slot message. -------------------------------------------------------------------------------- 34a0b8a54a | David Lawrence Ramsey | 2024-08-14 20:45:31 -0500 Fix typo. -------------------------------------------------------------------------------- 414de441e9 | regret-index | 2024-08-14 23:12:42 -0230 Update some ancient documentation links After adding quite a bit more to the Art Requests wiki page, I realized I should check what is recommended for people reading the documents, and found incredibly ancient references. Some of these tile requests stretch as far back as 14 years ago, and should at least be directed more towards present day contexts. -------------------------------------------------------------------------------- ac85ce32bd | regret-index | 2024-08-14 16:24:29 -0230 Add a force_more to sighting the_gamble (Riverfiend) While autoexplore does stop for the immediate sightings of both an altar and a transporter, it is relatively plausible to completely miss that it is a limited time offer amongst the messages of sighting the enemies and rewards in either side. Since this has completely different behaviour than normal transporter vaults in being temporary (and is thus better off for it), it might as well get a force_more the way temporary portals do. -------------------------------------------------------------------------------- e0650be844 | regret-index | 2024-08-14 05:15:14 -0230 Make some food documentation more consistent Indecisiveness bleeds through, sometimes. -------------------------------------------------------------------------------- 5a795d2ccf | CipHuK | 2024-08-14 05:03:55 -0230 Trove: Fix trove_misc_dual_throne_room veto (#3976) "The trove contains two misc which are useful even for low Evocations. There are four talismans which do not depend on the no-device mutation, plus evocation + shapeshifting manuals." "Also, there's no wands in the 'prices' table." [Committer's notes: squashed the two commits together and adjusted the logic syntax to be a bit more easily readable. Closes #3976.] -------------------------------------------------------------------------------- 9f76b2ef98 | regret-index | 2024-08-14 03:38:11 -0230 New option: food_snacking_frequency (default 40%) A relatively quick and simple setting for caches of fruit and meat, which allows setting the percent chance of displaying their corresponding flavour message. Should be relatively harmless, but also reduce the current awkwardness of people who want to see the messages dancing back and forth on top of the piles (as long as they read the options guide, alas). On that same note, since people seem to be relatively receptive of the flavour messages in the first place, the odds have been increased (from ~33.3% to 40%). -------------------------------------------------------------------------------- 6bd198a3e8 | regret-index | 2024-08-14 01:28:58 -0230 Brief quick vault passover Some living trees replaced with dead ones, a late D glowing orange brain placement nerf, and some decorative altar adjustments + fix-ups. The last of these adds a small chance for the tiny altar square used in a large amount of games to get a highly variable floor tiling arrangement around it, to add a little more interest to the open-altar squares being used constantly throughout such a large part of the game. It also comes with a few tweaks to _pick_an_altar() for a few branches to catch up to some later flavour options; as long as we've got such a minor flavour function already around, we might as well continue to update it. -------------------------------------------------------------------------------- a9c2434b49 | regret-index | 2024-08-13 21:55:46 -0230 Tweak some Xom messages The Xom pseudo-miscasts that entail "Something invisible lands on the floor beside you!" and the like unfortunately collide with the warning colours in the default messages.txt for invisible monsters using something as broad as "Something .* you". This commit replaces those messages with new ones that won't collide with such and are still appropriately confusing for Xom. -------------------------------------------------------------------------------- 3ec762b4b6 | regret-index | 2024-08-13 20:57:20 -0230 Further loose tile edits and additions * New tiered talons mutation icon by Darby. * New vampire bat tiles and the held Charlatan's orb by pianoman523, both with edits (the former brightened up in a few shades to contrast better against dark floors, the latter desaturated to match the item on the ground). * A less inaccurate rakshasa tile by meckryl has been added to the unused monster tile folder in anticipation of finding a proper home later for the current tiger-demon rakshasa tile. * The new claws mutation icon has been edited to show three levels through darkening and brightening individual different claws, as was suggested by Ge0FF. * Mystic cages have been edited to hopefully read more as a feature and less as an item, through chopping off the top to fit on a plinth. * Coolio's edit of Denzi's dwarf tile has been edited further to remove the axe always in its hands, since cosmetic weapons on monsters inteferes with showing actual weapons on the same monsters. * Wiglaf's duplicate tile in the /player directory has been cut, since there's already one in the /unique directory. * Additional mutation icons: no potions (ontoclasm's potions), no armour (Bloax's troll hide armour), no grasping (ontoclasm's statue tiles), stabbing paws (aidanholm's generic monster spell icon), multilived (Denzi's felid tiles), shaggy fur (Sastreii and CanOfWorms's death yak tile), gelatinous body (CanOfWorms's slime creatures), camouflage (white_noise's D walls and snw-0's pebble walls), beak (outlining from a Creative Commons Zero bird vector by Lexatchison), and torment resistance (CanOfWorm's resistance icons + roctavian's tormentor). -------------------------------------------------------------------------------- 86e73b92f4 | DracoOmega | 2024-08-13 17:55:46 -0230 Properly add dummy data for removed electroferric vorticies This fixes #3977 -------------------------------------------------------------------------------- d22c55109e | gammafunk | 2024-08-13 09:13:25 -0500 fix: DES syntax in a serial vault (ASCIIPhilia) The serial_demonic vault had a malformed KMONS for depths 9 and 10. -------------------------------------------------------------------------------- b660852781 | Nikolai Lavsky | 2024-08-12 13:19:45 +0300 docs: adjust a couple of help texts Fix a colour tag and realign table columns. -------------------------------------------------------------------------------- d7452cd21e | DracoOmega | 2024-08-12 01:51:23 -0230 Nudge Hellfire Motar damage down slightly This spell is slated to become 3 school in 0.33, and will likely get this damage back again afterward, but for the moment it may be a *touch* too strong when also considering its utility and excellent MP-efficiency. -------------------------------------------------------------------------------- c677a86b84 | DracoOmega | 2024-08-12 01:51:23 -0230 Slightly relax Eringya's Toxic Bog's placement restrictions By allowing bog to be created on tiles with a maximum of *2* adjacent walls instead of just one. Bog is a spell with a lot of limitations, and while I think some of those limitations are interesting, it could probably stand to be just a *bit* more permissive. Let's give it a try. -------------------------------------------------------------------------------- cc760f6cd4 | DracoOmega | 2024-08-12 01:51:23 -0230 Properly make orc wizard apostles Cautious Astoundingly, despite this flag having been implemented *for* them in the first place, it appears to have never actually been implemented in trunk at any point. I am really not sure how this came to happen. Hopefully this makes this feel a little less suicidal to have as allies, as it was originally intended to. -------------------------------------------------------------------------------- d7b6f665e1 | DracoOmega | 2024-08-12 01:51:23 -0230 Increase Cigotuvi's Putrefaction draining cost The latest iteration on corpse rot seems to have been well-received, but is probably a bit strong for where it is. I considered moving it to level 5, but the original intent of "Strong for a level 4 spell, but with a meaningful draining cost" is something I want to try leaning a bit more into first, and the current iteration virtually removes the cost if spellpower is high enough. New draining cost is 75->35 at max power (versus 55->5 before this commit) -------------------------------------------------------------------------------- ce3698e0c0 | DracoOmega | 2024-08-12 01:51:19 -0230 Revamp Brom's Barrelling Boulder a little When first added to the game, there were significant concerns that BBB's obvious upsides of providing blockers and crowd-controlling lines of enemies while also damaging them would be too strong. In practice, the spell's many limitations and low damage made it almost universally considered to be bad instead. While sometimes one hit the perfect storm of juggling a scary monster repeatedly out of sight until it died, there were simply too many ways for the spell to fail to provide value. It was useless against adjacent enemies, usually useless against enemies at range 1 (who would destroy the boulder before it did anything), extremely unreliable against enemies at a distance (due to veering off course at random), easily sidestepped by groups of enemies on open terrain, aimable only in compass directions, and after all that did much less damage than stone arrow. For comparison, IMB (also a level 4 starter book spell) knocks back enemies in *all* directions, is usable against things already on top of you, *and* does more damage, without being considered overpowered. So I think it's time to revisit boulder. Boulder now moves one tile immediately upon being cast (so that it can no longer be destroyed before even moving). Its HP increases with spellpower (and will generally be higher). It no longer causes a fragmentation explosion upon hitting a wall (this did almost no damage anyway) nor takes passive damage from running into enemies. Instead, it simply is destroyed upon hitting a wall or moving into an enemy that cannot be moved (whether because it's against a wall or otherwise stationary) - though it will do additional damage in the latter case. It no longer applies a ministun to pushed enemies (previously done automatically via actor::knockback). It also no longer veers off course. This was likely intended as a way to keep it from being too reliable an obstruction in corridors, but it also made it too unreliable in the open as well (and the aiming restrictions *already* made it require specific positioning to be useful). Instead, corridor protection comes in the form of the boulder taking abrasion damage from solid terrain it passes alongside. Each time it moves, it takes (randomized) damage proportional to how many adjacent solid features there are. This means that it takes no damage rolling in the open, but will disintegrate after only a short distance in a full corridor. The targeter has even been updated to indicate the distance at which a boulder (with HP based on your current spellpower) may disintegrate before reaching. Finally, boulder damage has been increased. The hope is that this iteration on boulder feels more rewarding to use, and is appropriately powerful for a level 4 dual-school spell. -------------------------------------------------------------------------------- 322ac23952 | DracoOmega | 2024-08-12 01:51:19 -0230 Remove some seemingly-redundant rendering code While investigating the issue that is hopefully resolved in the prevous commit, I noticed that monster status icons are seemingly rendered twice in local tiles. The code I am removing appears to be effectively repeated by the call to pack_foreground() in DungeonCellBuffer::add -------------------------------------------------------------------------------- 0f7a2dab06 | DracoOmega | 2024-08-12 01:51:19 -0230 Properly render clouds on top of items in local tiles The comments suggest this was always intended, but didn't actually work due to how items are packed in a different buffer than monsters (and one which appears to always be rendered after clouds). Now it applies a similar technique used when items are to be drawn submerged in water, and moves cloud-engulfed items to a lower buffer. (Webtiles uses different rendering code and did not have this bug.) -------------------------------------------------------------------------------- 1803d01ea8 | DracoOmega | 2024-08-12 01:51:19 -0230 Tweak Magnavolt behavior a little and buff Electroferric vorticies were always a bit of a kludge to fix how otherwise the spell (designed to ramp up in power over multiple casts) got a lot worse when it actually killed the magnetised enemies quickly. But I never really liked how they were big and space-filling and sometimes oddly good as obstacles; it felt out of theme for how the spell was supposed to function. So here's another take on solving the same problem: Instead of magnetised enemies making an always-magnetised vortex monster upon death, they leave behind a cloud of magnetised fragments instead. This cloud has no effect on its own, but will function as an attractor for Magnavolt, just like a magnetised enemy would. It lasts a short time and then dissipates (without any of the 'extended duration by rezapping' behavior electroferric vorticies had). I have also increased the base damage of the spell by a moderate amount, given feedback over its current power level. Finally, the magnetised dust status reveals invisible enemies - mostly to ensure that enemies which go invisible *after* marking them will not result in the beam tracer either leaking information *or* misleading the player about whether or not the beam paths that will result from casting the spell are safe. -------------------------------------------------------------------------------- 2a9263fe16 | regret-index | 2024-08-11 19:24:16 -0230 Various requested tiles (pianoman523) + Jiyva altar adjustments Tin of tremorstones active and inert versions, claw and hoof mutation icons, and Hellfire Mortar's spell icon. * The hooves and claws icons don't have three variations like most mutations, but getting away from the generic mutation icons (especially for mutations given player species will have innately, who probably) shouldn't show helix strands) is the more important goal for UI consistency than having the full count of gradations. * Hellfire Mortar's icon is in a weird spot because the actual mortar monster itself is using an old recolour of a granite statue rather than having a proper mortar-like tile, but "mortar shaped like a dragon" will probably still be retained eventually anyway. * The Jiyva altar tweaks in this fixes the light-direction to be consistent with each part, brings the palettes of each part closer, and adjusts the outlining of the slimeball against the the wobbling altar it's on top of. Hopefully it'll read better now? -------------------------------------------------------------------------------- aa93178157 | regret-index | 2024-08-11 02:27:19 -0230 Yet further adjustments to Xom effects * Xom bazaars hold one less talisman (since they frequently get repeats and the randart is more enticing), plus potentially one more potion (since most of the consumables presented are relatively undervalued). * Xom hostiles have been further tweaked downwards at earlier levels, with there being plenty of new effects covering the "Xom tries to directly kill the player" front without needing the precise nature of "Xom directly just summons something you can't fight in a corridor ambush situation". While it was always possible to get early tier-4 and tier-3 demons, they were much less likely than the revised state was for XLs 6 and 7, which has thus been tweaked upwards. Also, the first few XLs get even less hostiles, so there's a decent chance to at least fight or get something before dealing with 4 crimson imps on D:1 or D:2. -------------------------------------------------------------------------------- 3bae8276e6 | regret-index | 2024-08-11 01:42:44 -0230 Last big vault review for 0.32 This, of course, continues to include tweaks to the most dangerous and least threatening portals and branch ends for many places. Worthy of note: * To help make early portals be somewhat easier to find, two of the Sewer entries that only placed in far corners of levels now have experimental severe wall padding away from the furthest corners, and the Bailey entry that has no monsters or terrain differences has been cut. * cheibrodos_frozen_isle has no_tele_into (to reduce getting wrecked by teleport) _and_ a hatch in it now, dealing with issue #3927. * Crypt entry vaults now use Crypt walls to sell a little more flavour for the ever-struggling Vaults branch, and have specified monster types to reduce overlap with other Vaults enemies / Depths enemies and also cut the small chance to see non-Crypt curse skulls. * Pan entries now use Pan floor (but not Pan wall) so there's less spoilers about which of a dozen fixed boxes in each game have demons in them in each Depths. * pleasuredromes is updated to better suit Depths again. (Why did we have commits screwing with Depths encompass vaults, but none to reduce all of the unthemed deep elf use?) * wizlab_doroklohe now has pretty different monster sets to try and reduce its overlap with other demonic and undead wizlabs, either pairing those more directly or swerving over into earth and construct themes alongside some sparse use of undead. * (Base gargoyle monster tiles and war gargoyle tiles have been adjusted to actually more obviously split from one another, since this will make for the second wizlab pairing the two.) -------------------------------------------------------------------------------- dd5112e32b | David Lawrence Ramsey | 2024-08-10 19:41:37 -0500 Add another gizmo noun. -------------------------------------------------------------------------------- fe854bf2fb | David Lawrence Ramsey | 2024-08-10 11:18:58 -0500 Remove now-inaccurate comment bit (ge0FF). -------------------------------------------------------------------------------- b3f2be6f28 | Nicholas Feinberg | 2024-08-10 08:37:18 -0700 Remove an antique bit of monster AI (Monkooky) Doesn't seem helpful to make low HP monsters avoid targeting the player. This logic dates back to pre-Stone Soup days. -------------------------------------------------------------------------------- 7c87569a87 | David Lawrence Ramsey | 2024-08-10 10:18:02 -0500 Make Blorkula's bat form unconstrict him. Closes #3971. -------------------------------------------------------------------------------- c9a0f24d00 | David Lawrence Ramsey | 2024-08-10 01:34:58 -0500 Fix indentation and spacing. -------------------------------------------------------------------------------- 49d6eb21ec | DracoOmega | 2024-08-10 00:51:32 -0230 Fix console build -------------------------------------------------------------------------------- c18c819373 | DracoOmega | 2024-08-10 00:15:32 -0230 Make it more obvious where the Crucible exit is Properly update the minimap when the portal opens (I thought this happened already, but apparently not) and also make a ring around it change to a different type of floor. Possibly a higher-visibility floor could be chosen or (ideally) a fancier exit tile made at some future point, but this should still improve visibility a little, at least. -------------------------------------------------------------------------------- 6f226b4170 | DracoOmega | 2024-08-10 00:15:32 -0230 Make poison status icon overlap a little less with other things -------------------------------------------------------------------------------- 7ec8f00e54 | DracoOmega | 2024-08-10 00:15:32 -0230 Show some status icons above the player (and add customizable options) Certain negative statuses are very important, but can be easy for a player to overlook when they are applied randomly or unexpectedly (eg: Slow from *Slow triggering, or from draconian cold-bloodedness). We already have standard icons for many of these things, so it seems possible to indicate them directly above the player, where it may be a lot more obvious than the sidebar. I have added support for displaying a number of statuses there (and it is now straightforward to add more). Since there are many statuses that *could* be indicated but which are often not important to do so (either because they're low impact, beneficial, or already have their own default force_more), I've added a new option: tile_player_status_icons. This allows a player to decide which of the implemented statuses they want to show this way (if any). Currently there is support for displaying slow, fragile, sentinel's mark, will/2, haste, weak, corrosion, might, brilliance, -move, constriction and petrifying. By default, it only displays slow, fragile, constricted, and 1/2 will. This is somewhat arbitrary and I am open to input for different defaults. I tried to make the string used in the options to enable a status be the same as it appears on the sidebar (though it bothers me a bit that it's harder than I'd expect to efficiently query this directly - duration-data.h currently cannot be included anywhere without manually including a bunch of things before it, which is awkward....) -Potion and -Scroll are other statuses that immediately jump out to me as worth showing in this manner (since they can be critical, and also easy to miss activating) but no icons exist for them yet. (Also, poison is still handled by an older method and cannot be edited with this option yet.) -------------------------------------------------------------------------------- 39fa310435 | DracoOmega | 2024-08-10 00:15:32 -0230 Give Animated Armour the resists of their base type (ie: animated fire dragon scales having rF++ rC-, etc.) It seems like this was always intended, but because animated armour wasn't flagged as using equipment, the resists on their gear was also ignored (though the AC on their gear was *not*, oddly enough...) -------------------------------------------------------------------------------- e9c885f53b | regret-index | 2024-08-09 19:05:27 -0230 Further dog summon icon improvements (pianoman523) It's a little fancy for something relatively mechanically straightforward, but hey, people love their (magical) dogs, so we might as well lean into it. -------------------------------------------------------------------------------- 1fec1db897 | David Lawrence Ramsey | 2024-08-09 09:12:26 -0500 Add another new Makhleb line for Donald. -------------------------------------------------------------------------------- 78ccd735b5 | DracoOmega | 2024-08-09 04:17:47 -0230 Fix broken Mark of Execution activation chance (Acrobat) I forgot to remove the 100% chance to activate that I'd be using in testing and I additionally forgot to check that what you were killing was actually hostile, so that the player couldn't activate it by killing cheap friendly summons. Oops. -------------------------------------------------------------------------------- e9ac164b42 | DracoOmega | 2024-08-08 23:12:25 -0230 Prevent using Passwall to move through temp terrain (rypofalem) It was *also* possible to use Oozemancy to Passwall through metal or similar walls. Now it isn't. -------------------------------------------------------------------------------- 19bd505595 | DracoOmega | 2024-08-08 23:12:25 -0230 Mention that Dissolution/Xak'krixis can dig in xv -------------------------------------------------------------------------------- 0dac2c7386 | DracoOmega | 2024-08-08 23:12:25 -0230 Fix multiple broken things with monster digging/burrowing For some reason, burrowing monsters could only burrow through exactly rock wall and clear rock wall and *no other* diggable features. Yes, this meant that Dissolution, whose name has been in the section header comment of the digging section forever, and who has special messages unique to them alone, *couldn't dig through any wall type that actually exists in the zone they appeared in*. Wow. Also, monsters that could cast the Digging spell could only dig through exactly rock wall, clear rock wall, and grates - none of the other types of diggable terrain would prompt them to cast the spell, even though it would work if they did. This commit refactors that entire section slightly, and makes burrowing and digging directly check for feature diggability instead of this ancient narrow list. I've banned burrowing monsters outside of Dissolution (which is currently just Xak'krixis) from burrowing through slime walls, largely for parity with the reasoning given to player formicids. Take proper care of those mandibles! -------------------------------------------------------------------------------- 8a5fa98918 | DracoOmega | 2024-08-08 23:12:25 -0230 Fix Polar Vortex not properly putting water under destroyed mangroves It was bypassing the normal wall destruction function entirely, and it's not clear to me that there was any good reason for this. -------------------------------------------------------------------------------- 851616cc3e | DracoOmega | 2024-08-08 23:12:24 -0230 Remove a digging exploit with formicids of Jiyva While wands of digging would simply not work on temporary terrain prior to the previous commit, formicid digging *did* work. And it was possible to use Oozemancy to make metal walls slimy and then simply walk through them. While it would be, in theory, possible to apply the same policy as the previous commit - let the player walk through walls whose underlying feature could also be dug - it has awkwardness with how the player moves in the process. We can't just revert to metal and keep you in the same place; the player may have forgotten which walls were metal and which weren't! After a little discussion, it seems fine to dodge the question by just not letting you dig through acidic slime with your mandibles at all. Technically a small nerf to formicids in Slime, but I doubt it ever really mattered there anyway. (I am normally adverse to one-off exceptions like this, but people seem to think this one is intuitive enough and it neatly solves the issue.) -------------------------------------------------------------------------------- 7cfa934292 | DracoOmega | 2024-08-08 23:12:24 -0230 Allow summoned trees to burn (and oozified walls to be dug) For some years now, temporary terrain has been immune to numerous effects that might destroy it, such as wands of digging. This is a sensible precaution to prevent the player from temporarily transforming metal or other undiggable terrain into rock so that they can dig straight through it. Summon Forest can transform metal walls into trees as part of its effect, but it also places numerous trees on empty terrain, and it's always felt a shame to me that it's impossible to burn those down too. Messy conflagrations can be fun from time to time, and it also makes the trees feel more tree-like instead of inexplicably fireproof. So this is an attempt to make temporary terrain behave more like that type of terrain normally does while *still* preventing the player from using it to cheese their way through terrain that they should not. Essentially: digging and burning works on temporary terrain like it would on normal terrain, but if the underlying feature could *not* be affected by that effect, it simply causes the terrain to revert to that instead. Zapping digging at a metal wall that has been oozified will return it to metal, as will burning a wall that has been turned into a tree. But oozified rock will dig as normal, and trees made in open areas can spawn fires propery. (As a bonus, burning down a rock-tree still makes some fire cloud nearby - like what would happen if it *could* put a spreading fire in the wall's place). Currently, all other sources of terrain destruction are unchanged. Forest fires can't spread *into* temporary trees, they are unaffected by Polar Vortex, and Shatter still completely erases rather than reverts terrain (even though trees are easier to shatter than metal walls). -------------------------------------------------------------------------------- 1c43b724a3 | DracoOmega | 2024-08-08 23:12:24 -0230 Make dryads cautious Summon Forest is already a strong spell, but the degree to which the dryad (key to the spell actually doing anything at all) will suicidally rush enemies for no benefit can sometimes be fiddly or dissatisfying. Having to protect them with your own body can be interesting, but the open layout often makes that impossible when they're so insistant on moving past you to hit stuff for irrelevant damage, and it feels wrong that it's helpful to order them *not* to attack stuff, which you can only do if you're not using other allies at the same time. Now they should be a little less overeager to close in on enemies. -------------------------------------------------------------------------------- af4033067c | DracoOmega | 2024-08-08 23:12:24 -0230 Don't print message for breathing your draconian breath when it fails -------------------------------------------------------------------------------- acb7b81f54 | regret-index | 2024-08-08 20:48:58 -0230 A spree of placeholder innate trait / mutation / weirdness icons Even if it'll take quite a long while to properly really fill out this space, it'll look less and less awkward the more non-generic icons there are available to correspond to each individual trait. This commit continues to remix old tiles to provide new ones. (FIXME: I'd _really_ prefer if the handful of mutations that are innate to some species but possible to mutate on other species didn't share the "generic" mutation icons in both circumstances. After this commit, that list is limited to Beak, Talons, Claws, and Gelatinous Body.) Credits: Mutations: * Berserk: aidanholm's Malmutate icon and snw-0's rage ego icon. * Deterioriation: The Malmutate icon and roctavian's flayed ghost tile. * Persistent drain: The Malmutate icon and Denzi's Tartarus stone walls. * Teleportitis: ontoclasm's Teleport scroll icon and Bloax's Corona icon. * Strong-willed: CanOfWorms's resistance icons and ontoclasm's magic resistance / willpower item ego. * High mp + low mp: Sastreii's robust, thin skeletal structure, and antimagic status icons, plus CanOfWorms's mana mutations. Innate traits * Forlorn (demigod godlessness), faith (as innate to mummies): snw-0's faith item ego. * Demonspawn Hurl Damnation: ontoclasm's Hurl Damnation ability icon. * Demonspawn Demonic Will: roctavian's red devil plus the strong will pieces. * Draconian cold-blood: aidanholm's adjustment of ontoclasm's Freeze icon, paired with ontoclasm's Sublimation of Blood icon. * Yellow draconian acid res, pale draconian steam resistance, gargoyle petrification res: CanOfWorms's poison resistance icon, snw-0's petrified status icon, and Denzi's steam breath ability icon. * Kobold nightstalker: CanOfWorms's shadow item ego icon. * Naga spit poison: Ontoclasm's spit poison icons. * Tengu acrobatics: Sastreii's edit of Lasty's acrobat item ego icon, and ontoclasm's statue tiles. * Vine Stalker antimagic bite: Sastreii's fangs tile plus CanOfWorms's mana mutations. Gods: * Jiyva-gifted / yellow draconian acidic bite: Bloax's acid blob tile plus jpeg and coolio's old mimic teeth. * Jiyva-gifted eyeballs: Denzi's great orb of eyes tile. * Jiyva-gifted engulfing: ontoclasm's water elemental tile. * Jiyva-gifted item detection: ontoclasm's detected item plus CanofWorms's slime creature tile. * Ru's skill sacrifices: snw-0's skill-training icons, one of Denzi's old skill-training icons, and ontoclasm's sacrificial Ru dagger. * Sacrifice resistances / temperature sensitivity: CanOfWorms's fire vuln and cold vuln mutation icons. * Sacrifice essence -> weak-willed: CanOfWorms's vulnerability icon and ontoclasm's MR / Willpower item ego. -------------------------------------------------------------------------------- bb65b56dd8 | DracoOmega | 2024-08-08 15:33:04 -0230 Fix Shadow Tempest sometimes failing to hit anything Due to a missing break statement, the chosen casting position was being ignored and a completely random one used instead (which might frequently not have LoS to any valid enemy). -------------------------------------------------------------------------------- f6b258df08 | DracoOmega | 2024-08-08 15:33:04 -0230 Fix Yred zombies persisting after leaving the floor (Undo) -------------------------------------------------------------------------------- 4f2d7920a8 | michaelhunter27 | 2024-08-08 07:46:42 -0500 Add doll editor info to docs/tiles_help.txt Adds a 'character appearance' section in tiles_help.txt that gives an overview of the Doll Editor. Resolves #2815 -------------------------------------------------------------------------------- 700f80e4b4 | DracoOmega | 2024-08-08 05:00:10 -0230 Fix a test suite error (unhappily) It was being used to perform mutation tests without a core part of mutation data being initialized, and only appeared to work up to this point due to what I consider essentially a coincidence. It made mutation-related functions effectively consider *all* mutations to have the data of the first mutation listed in mutation-data.h, which until 02fa12cfa58bf5b15c769780ce23e0ab14f10ce6 was Tough Skin (which happened to have 3 levels - the only reason that a test didn't fail before now). The test harness here is skipping a massive amount of standard initialization code for Crawl, seemingly deliberatetly. I understand the desire for more isolated tests, but this strikes me as deeply concerning, as it's not at all clear when necessary parts in this complex system may or may not be initialized in ways that cause the test to produce incorrect values. This time, a test failed that should have succeeded, but it seems entirely possible to me that it could also cause tests to succeed that ought to fail. Basically: I don't really like this, or my equally ad hoc fix here. This will silence build failures for the moment, but it feels like a bad long-term solution to any of this. -------------------------------------------------------------------------------- 96dd062b79 | David Lawrence Ramsey | 2024-08-08 00:34:33 -0500 Fix missing period. -------------------------------------------------------------------------------- 52cfe79831 | David Lawrence Ramsey | 2024-08-08 00:26:28 -0500 Fix indentation. -------------------------------------------------------------------------------- c4951ef730 | David Lawrence Ramsey | 2024-08-08 00:25:02 -0500 Fix typos. -------------------------------------------------------------------------------- 17f805d8e1 | David Lawrence Ramsey | 2024-08-08 00:24:22 -0500 Fix doubled word. -------------------------------------------------------------------------------- f1bee5885c | DracoOmega | 2024-08-08 02:30:38 -0230 Adjust flavour descriptions of draconian scales a little Yellow draconian scales were described as 'golden yellow' and in fact their dragon talisman transformation described them as turning into 'golden dragons', despite mechanically and flavor-wise having almost nothing in common with these. I assume it dates back to before acid dragons actually existed and was just an attempt to get *some* dragon that was similar to yellow draconians. Well, now we have a very clear analogue, so let's use that. Flavor descriptions tweaked accordingly. (Also moving the 'iron' descriptor out of grey's scales, since that should now be covered by their XL 14 mutation.) -------------------------------------------------------------------------------- 02fa12cfa5 | DracoOmega | 2024-08-08 02:30:37 -0230 Adjust player draconian color balance a little Draconians have long been considered a strong species, but after the breath rework of 926e5b6e4c1ff7608bc4a4bdb60678fc7a80099a , multiple players thought they had become even stronger. This wasn't my intention and I had considered nerfing their aptitudes in weapon/magic skills a little in compensation, but after further investigation into player data, it appears like draconians may benefit from being played by experienced players to a noticably greater degree than most other species do - in other words, they are only an outlier in species strength when including experienced players and seem closer to middle-of-the-pack otherwise. I am theorizing that this is because benefiting from the new breath mechanics involves active resource management moreso than most species' strengths do. At any rate, I am reluctant to broadly nerf a species that may be 'fine' for the larger chunk of Crawl's playerbase, especially since one of the ways in which they are strong is varied, interactive, and unique. However, balance *between* colors could use some adjustment. To this end, I am making the following changes: -Grey draconians get their +5 AC bonus at XL 14 instead of XL 7 -Red draconian breath damage is significantly increased and can no longer miss. -Black draconian breath damage is slightly reduced. -Yellow draconian breath range is increased by 1. (A tweak to acid bite may also be coming in a future commit) -Purple draconians no longer have increased willpower scaling with XL, but get the Strong Will mutation at XL 7 and at XL 14 gain 'Inviolate Magic' which prevents their magical effects from being unravelled and reduces hostile MP drain by 2/3rd. More detailed reasoning: -Grey draconians are clearly ahead of the pack at the moment. 5 AC may be debatably weaker than a key resist in lategame, but 5 AC is a lot when you get it all at once at XL 7. To that end, move their +5 AC to XL 14 instead. (It may be tradition for all draconians to get some resist at XL 7, so let's just say they're getting rFumblingInWater which is already more impactful than rSteam) -Red draconians are clearly worst and I think the numbers on their breath are a large part of it. It was balanced with the assumption of being able to hit a single target with multiple explosions, which I think is more awkward in practice than I'd expected. -Purple getting a better willpower modifier than other draconians is rather opaque if you're not familiar with the game and barely indicated anywhere. Making this an explicit mutation is a lot more transparent *and* has the helpful side-effect of making them stronger from XL7-14, since they were also underperforming. Since this nonetheless results in them having 1 less pip of willpower by the end of the game, I've given them a different minor thematically congruent benefit at XL 14 (credit for the suggestion to Undo) -------------------------------------------------------------------------------- 0b084fa221 | DracoOmega | 2024-08-08 02:30:37 -0230 Slightly refactor/simplify _dispellable_player_buffs It hasn't needed to keep track of both durations and attributes for years now, so remove the remaining references to dispellable attributes. (Even ATTR_DELAYED_FIREBALL was removed automatically on load, so it was impossible for the removed save compat code to even do anything). -------------------------------------------------------------------------------- a427651528 | DracoOmega | 2024-08-08 02:30:37 -0230 Slightly increase chance of Mark of Execution activating Also remove the clause about it not triggering off of summons. This never actually worked, due to being incorrectly checked after the monster was already dead, but on reflection I think it might be fine to activate on kills of summons; I don't see any obvious cheese potential attached. -------------------------------------------------------------------------------- 4c67e76a8e | DracoOmega | 2024-08-08 02:30:37 -0230 Buff Mark of Haemoclasm The most underperforming of the Marks, haemoclasm is popular and conceptually fun, but frequently failed to help the player very much - and could in fact make things worse for them! The explosion chance was far too low to rely on doing anything useful (and would commonly hit nothing even when enemies did explode) but still generated normal explosion noise, attracting more enemies to the player's position without even much compensation. This commit greatly reduces explosion noise (down to 5), lowers the chance of enemies exploding with nothing nearby to hit, and greatly increases the chance of enemies exploding when they *do* have something adjacent to hit - rising moderately with how many things are nearby. I'm not 100% certain that this is better than just a flatly higher chance at all times, but the idea is to reduce purely-negative noise generation from blasts that cannot be productive, while somewhat encouraging the player to wade into dense piles of enemies to maximize explosion chance (and the possibility of chain-reactions!) in crowds. I've also slightly increased the blast damage caused by higher HP enemies. We'll see how this feels and further adjustments will be made if called for. -------------------------------------------------------------------------------- 7d931e3562 | DracoOmega | 2024-08-08 02:30:37 -0230 Tweak Crucible of Flesh danger level slightly It's still a little hard to tell exactly where to balance this. On the one hand, several players have repeatedly stated is was surprisingly easy to handle. On the other, nearly 20% of players who have taken this mark have ultimately died to the Crucible itself. Maybe this is slightly inflated by how the same characters *without* Vessel of Slaughter may have died in whatever situation caused them to use it instead. At any rate, this is intended to be a fairly minor adjustment. The easiest levels players can plausible enter the Crucible will have slightly weaker demons, while at higher levels the Crucible has a slightly higher cap on the number of demons it can produce at once (and how many will be there when the player first arrives). -------------------------------------------------------------------------------- 1005255f1a | DracoOmega | 2024-08-08 02:30:37 -0230 Nerf Mark of the Celebrant damage Celebrant has been a popular mark, and is widely agreed to be the most powerful at present. It seems fun, which is good! It also seems like it might be a little *too* good, so let's try reducing its numbers somewhat. (This is about a ~22% reduction in damage output) -------------------------------------------------------------------------------- 55b383cc16 | DracoOmega | 2024-08-08 02:30:36 -0230 Improve Mark of the Legion's description, slightly improve demon quality The mark description failed to mention that demons summoned by Infernal Legion will never be hostile (unlike regular servants!) and may have undersold its power by referring to the summons as 'weaker demons'. While it's true that their tier will be lower than those produced by the baseline Infernal Servant, their quantity is intended to *more* than make up for that. (It's been the least-chosen mark in testing and I haven't gotten much direct feedback on it yet. Will this help? Perhaps slightly.) -------------------------------------------------------------------------------- 51068f2e44 | DracoOmega | 2024-08-08 02:30:36 -0230 Increase Globe of Annihilation damage Giving up your ability to summon servants can feel like a significant sacrifice for a Mahkleb worshipper to make. Let's make what you get in exchange feel a little more exciting by increasing the payoff a bit. -------------------------------------------------------------------------------- f8e23a721c | DracoOmega | 2024-08-08 02:30:36 -0230 Slightly reduce Mark of Atrocity scaling cost, make finale auto-hit Using ramping destruction with Mark of Atrocity is a heavy commitment that costs a large amount of HP, and while I do like the risk/reward aspect of this, it can feel unsatisfying if your big payoff misses. While I don't think it was terribly likely to do so, let's try just making it not. -------------------------------------------------------------------------------- 2eb4e9bb4a | DracoOmega | 2024-08-08 02:30:36 -0230 Adjust Dith shadow HP calculation, improve durability during Shadowslip Instead of Invocations directly increasing Dith shadow HP, scale it with player XL only. This should largely be in line with line with the present values at moderate amounts of Invo (though less if invo was raised high). Instead, make using Shadowslip directly increase your shadow's HP based on your invocations skill. While Invocations already increased the duration of Shadowslip's decoy effect, this additional duration could be hard to benefit from due to the decoy dying too quickly. This should help a little with that, while also making it possible to explain Invocations' effect directly in the ability description, without it having any other hidden effects. (Also make the shadow mimic linger just slightly longer after appearing, to widen the window where Shadowslip is possible to use.) -------------------------------------------------------------------------------- 0cffd93fc7 | DracoOmega | 2024-08-08 02:30:36 -0230 Tweak Dith weapon damage Remove the damage reduction given to ranged weapons versus melee ones. I was a little concerned originally that archer of Dith would be overly strong compared to other options, but this seems to not be the case (and many launchers are already slower than melee weapons, so they were additonally disfavored). Give quick blades a 25% reduction in shadow base damage compared to other weapons. They should still be the weapon that benefits the most from shadow mimic melee, but to a somewhat more moderate degree. -------------------------------------------------------------------------------- 2995cb534d | DracoOmega | 2024-08-08 02:30:36 -0230 Tweak Dithmenos shadow spell numbers Shadow Prism does less damage, Shadow Ball and Creeping Shadow do slightly less damage at low power, all shadow spells which can miss (Shard, Ray, Tempest) are a little more accurate at higher power. Shadow Torpor's formula is changed and it slows for much longer than before (it was excessively weak in its current incarnation). Shadow Puppet has a little less HP in general, lower damage earlygame and increased damage very lategame. -------------------------------------------------------------------------------- 878f319458 | DracoOmega | 2024-08-08 02:30:36 -0230 Reduce Dith piety gain slightly, tweak ability costs Marionette is now a little cheaper and Nightfall is slighty more expensive. -------------------------------------------------------------------------------- b1c0d4f7e4 | DracoOmega | 2024-08-08 02:30:36 -0230 Fix a possible crash with Shadow Tempest If it killed an enemy that caused other enemies already selected as valid targets to die (ie: summons vanishing because their summoner died), it could still try to zap one of these now-dead monsters (now located at (0, 0)), causing an assert. -------------------------------------------------------------------------------- da2ddc2728 | DracoOmega | 2024-08-08 02:30:36 -0230 Don't cause self-used Cleansing Flame to engulf the caster Since all users of this were already immune to its effects, this just produced needless (and possbly confusing) messages about resisting something. Instead, just have it affect tiles in range that are *not* the source, as most caster-centered AoE effects already do. -------------------------------------------------------------------------------- 11afe5f69b | DracoOmega | 2024-08-08 02:30:36 -0230 Pay HP/MP costs at the start of using an ability instead of afterward Spells pay their costs before the code of a given spell executes, which allows (for example) Vehumet/TSO's mp-on-kills passive to cover the cost of the spell itself. But abilities only paid their costs *after* their code was finished executing, meaning this was not possible. It also resulted in oddness with Mark of Atrocity's scaling HP cost, where the player would be charged the cost of the *next* level of atrocity while only checking that they could afford to pay for the current level of atrocity. (Fortunately it was not actually possible to die this way.) I have rearranged code so that the payment happens before the ability is used and is silently refunded if the ability fails or is cancelled (just like spells currently do). Unfortunately, piety costs are much more complicted, since gaining/losing piety can trigger messages and other mechanical effects. So piety is solely paid after the ability code is complete. I think this has much less of a noticable gameplay effect than with HP/MP costs, however. Finally, this also fixes a bug where the check for triggering Celebrant after casting a spell with an HP cost happened at the wrong moment, and could be triggered at instant speed merely by aiming a spell that *would* result in the caster falling below 50% HP if they cast it - whether or not they actually did so. -------------------------------------------------------------------------------- 96598cd710 | DracoOmega | 2024-08-08 02:30:35 -0230 Map Makhleb's Accept Mark abilities to capital letters by default -------------------------------------------------------------------------------- 25aef92037 | DracoOmega | 2024-08-08 02:30:35 -0230 Prevent casting Rimeblight on yourself (Midn8) -------------------------------------------------------------------------------- 64bea3c403 | David Lawrence Ramsey | 2024-08-07 13:46:36 -0500 Add a few more Xom drained brain messages. Which use the other random body part options. -------------------------------------------------------------------------------- 0111239397 | Implojin | 2024-08-07 13:24:48 -0500 fix: Don't reject bones muts in tempforms (acrobat, Ge0ff) 23c4013377 introduced a bug where demonspawn could miss a horns levelup mut (with a blank demonic ancestry message) by gaining an XL while in treeform, stormform, wispform, etc. We really don't want to be rejecting mutations based on temporary forms here. -------------------------------------------------------------------------------- d06ab9c186 | David Lawrence Ramsey | 2024-08-07 12:31:05 -0500 Tweak Xom more-stealth message. Feeling more catlike makes little sense if the player's a felid, and it doesn't match the initial stealth message. -------------------------------------------------------------------------------- d3e31708f3 | David Lawrence Ramsey | 2024-08-07 12:23:02 -0500 Fix indentation. -------------------------------------------------------------------------------- 9c17b79270 | David Lawrence Ramsey | 2024-08-07 12:16:29 -0500 Fix Xom drained brain msgs. They don't go through god_speaks(), so they need the substitutions and substring handling to be done manually. Maybe random body parts should be handled in the database instead of the code, but that would require adding Lua hooks for all the functions indicating which body parts the player does and doesn't have. For now, this is simpler. Closes #3966. -------------------------------------------------------------------------------- 8f36e4defd | Nikolai Lavsky | 2024-08-07 16:11:02 +0300 fix: pluralise Xom-summoned illusions correctly -------------------------------------------------------------------------------- 89ee397a09 | regret-index | 2024-08-07 02:36:33 -0230 Throw together another Makhleb overflow altar A lot of Makhleb's overflow altars rely on fighting tier-5 demons (which are barely seen from Makhleb outside of potential future Crucible wrath), or demons behind glass (an old cliche we don't need that much more of). This vault playing around with negative space should help out those vaults without too much extra burden, deliberately drawing off of a new flavour Makhleb has in marks, by carving / splattering one onto the floor rather than into one's flesh. -------------------------------------------------------------------------------- 634013aeb6 | David Lawrence Ramsey | 2024-08-07 02:36:33 -0230 Add rare fire-themed temple to Ignis and Makhleb. "It contains a fire pit and bloody fountains on both sides (more Makhleb's preference than Ignis', but the former has many nore worshippers, after all)." [Committer's notes: Due to containing a non-Temple god, I decided to make this a rare Makhleb overflow altar with an Ignis altar rather than the other way around. Also took out some unecessary randomization covered inherently with vault rotation and mirroring default functions, moved around the header lines to fit house style, and opted for a dry fountain for Ignis instead. Closes #3791.] -------------------------------------------------------------------------------- 51d8626461 | regret-index | 2024-08-07 02:36:33 -0230 Quick small icon adjustments Hide some error question-marks in the spell list, give the Word of Chaos mutation a non-default icon using its own ability icon, fixed a weird visual issue with the cold / fire resistance level 3 mutations, and properly give reduced potion healing the same icon as other mutations one can mutate without innately having it (by being Vine Stalker). (It'd be nice in that last case if we had a certain dynamic icon adjustment for splitting up innate versus changeable mutations, but there's still an absolutely immense amount of new mutation icons needed before that can really be done anyway, alas.) -------------------------------------------------------------------------------- 156bdd17b3 | David Lawrence Ramsey | 2024-08-06 17:26:53 -0500 Fix wording regarding death cobs. Since they're described as cobs of maize. -------------------------------------------------------------------------------- cc84cd3215 | David Lawrence Ramsey | 2024-08-06 14:28:21 -0500 Add another Xom gizmo slot message. -------------------------------------------------------------------------------- 8252d5bbfe | David Lawrence Ramsey | 2024-08-06 14:00:41 -0500 Add another gizmo noun. -------------------------------------------------------------------------------- 56fa223c91 | David Lawrence Ramsey | 2024-08-06 13:47:19 -0500 Revert "Make maximum skill checks account for Ru." Since it only affects maximum XP level, not maximum skill level. This reverts commit 79a3620ce472ee7c03ea3699a0e18aa6aacdea37. -------------------------------------------------------------------------------- 452ae66ae0 | David Lawrence Ramsey | 2024-08-06 12:26:51 -0500 Make XP docking account for Ru's Sacrifice Exp. Since your maximum XL is no longer 27. -------------------------------------------------------------------------------- 79a3620ce4 | David Lawrence Ramsey | 2024-08-06 12:16:59 -0500 Make maximum skill checks account for Ru. If you've sacrificed experience, you maximum level is no longer 27. Also, make gaining the inexperienced mutation lower your training targets so that they're in range. -------------------------------------------------------------------------------- a8328fd078 | elliottbernstein | 2024-08-06 11:35:09 -0500 block entry of > 27 skill target -------------------------------------------------------------------------------- d85c740706 | Isaac Clancy | 2024-08-06 09:07:14 -0500 Fix incorrect dependencies in the Makefile -------------------------------------------------------------------------------- 0644d943d1 | Implojin | 2024-08-05 21:44:17 -0500 Increase visibility of malevolence messaging (sdynet) Here we force_more for malevolence messages and highlight them in the log, to hopefully reduce the incidence of players not realizing they've been hit with malevolence (especially when going down stairs). -------------------------------------------------------------------------------- c0d1bbeec4 | regret-index | 2024-08-05 21:03:50 -0230 Don't try to use the Bazaar wrapper outside of Bazaars (Cheibrodos) The default-depth line for the entries was still applying to the bazaar wrapper vault (for Xom versus not-Xom vault bazaars), which meant there was a small chance for a bazaar-entry floor to try to place the wrapper itself (and then fail due to the bazaar layouts all being only valid within bazaars). Moving the default-depth line above it fixes this. -------------------------------------------------------------------------------- e579cb0a31 | Nikolai Lavsky | 2024-08-05 23:16:29 +0300 feat: add an indicator for banished apostles Sometimes an alive apostle doesn't show up at work, doesn't answer work emails, and ignores Recall Apostles. This can happen if the apostle has been banished, but there was no indication for that on the Extra religion screen previously. This commit fixes that. -------------------------------------------------------------------------------- 909ce11954 | David Lawrence Ramsey | 2024-08-05 12:13:28 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- 90a6e04206 | David Lawrence Ramsey | 2024-08-05 02:28:16 -0500 Fix foul flame damage (hjklyubn, DracoOmega). The formula was only doing half the damage it was supposed to be doing. -------------------------------------------------------------------------------- f8a32a3a8c | regret-index | 2024-08-05 03:43:32 -0230 Use a min and not a max Whoops. -------------------------------------------------------------------------------- 0c025799d4 | David Lawrence Ramsey | 2024-08-05 00:06:44 -0500 Add another mythical creature to artefacts. -------------------------------------------------------------------------------- 0ccf3f1864 | regret-index | 2024-08-05 02:15:52 -0230 Summon only two, not three illusions from Xom wrath + Oka (particleface) The action normally gives one a friendly illusion to offset the two hostile ones, but with sacrificing love or worshipping Oka the friendly one would be hostile instead. This now only places two illusions period if allies are forbidden, so it's not made _extra_ worse. -------------------------------------------------------------------------------- 8b305a4296 | regret-index | 2024-08-04 22:04:14 -0230 More adjustments to Xom and tension Worthy of note: * Xom's bazaars are now a lot less likely while autotravelling between floors, and with decreasing odds past the first if one's not in noticeable trouble. While they're a reasonable success, getting seven per 3-rune game after hitting the rough basic gold minimums is far too many per game. * Xom's divination is once more less likely on already-explored or already-revealed floors- the creature detection isn't super reliable due to not updating compared to Ash or antennae, so it shouldn't eat up a variety of Xom actions. * Xom's door opening-and-closing is now solely a bad act with minimum rather than maximum tension, due to the number of ways things can go badly with it (like ghost vaults), and it is now no longer nearly so likely in high tension scenarios. A small amount of other scenery screwery has also been added (food and tree warping), to still keep a little more variety when Xom's in a good mood. * Xom's hostile shadow creatures count scales even further to XL now, since it got a lot from guaranteeing a chaos-list creature amongst them. * Xom's actions have been juggled around a bit more to make stat drain and torment less likely plus showcase the newer effects instead. Hopefully 0.33 will contain a massive rewrite of the overall action choices.... * The monster current percent of health to tension threat ratio is no longer a 1-to-1 ratio (and instead scales to 33% of their total threat if they're hostile or neutral, and to 20% otherwise). As everybody knows, "almost dead" means "still entirely capable of killing you". * Monsters chanting Word of Recall count more for tension, and monsters that can't see an invisible player no longer count as much less. Neutral and good neutral monsters now count for half rather than 0 tension, also (so frenzying a monster doesn't completely throw out its capacity to also spin around and hurt you, and so that random friends aren't completely ignored for the distractions they may be). Silence is now tracked for the player always (invocations and scrolls are just as relevant as spells are), and for monsters only if they care about such. * Tension is now always slightly higher in Pan (where there's no easy escape and still regular monster summoning) and much higher on the Orb run (for obvious reasons). -------------------------------------------------------------------------------- c3173615b2 | DracoOmega | 2024-08-04 18:43:43 -0230 Fix off-by-one error in Dismiss Apostle descriptions (Mattlistener) Accidentally broken by 258319946a6387f947fb8e9a2748ec4143870134 It was printing the stat block for the incorrect apostle (including, more confusingly to players, the last apostle that was available to be recruited, whether they had actually taken them or not!) -------------------------------------------------------------------------------- f9ad053adf | David Lawrence Ramsey | 2024-08-04 14:12:47 -0500 Don't refer to undead krakens as dead (Aliscans). Simplify the message to not mention dead ones (as is done with starspawn) and to be more accurate regarding tentacles in a way that should cover all cases (e.g. a soul-bound kraken from Yred's power flies, and so is not in water). -------------------------------------------------------------------------------- f563a0e96e | David Lawrence Ramsey | 2024-08-04 14:04:39 -0500 Remove obsolete comment. -------------------------------------------------------------------------------- faebb8589b | David Lawrence Ramsey | 2024-08-04 12:23:32 -0500 Document BiA Sprint change. -------------------------------------------------------------------------------- d9b9d3c9f4 | David Lawrence Ramsey | 2024-08-04 12:11:00 -0500 Rename the Xom number key. Since it's only used locally. -------------------------------------------------------------------------------- 579b58d1eb | David Lawrence Ramsey | 2024-08-04 12:00:28 -0500 Put back an eye reference in a Pan lord desc. This partially reverts commit e099dce725e5513535340ebb5d52ce9d2ed2cbab. -------------------------------------------------------------------------------- 33269283d3 | David Lawrence Ramsey | 2024-08-04 10:08:47 -0500 Improve Charlatan's Orb changelog entry (ge0FF). -------------------------------------------------------------------------------- 48756ab783 | David Lawrence Ramsey | 2024-08-04 09:27:17 -0500 Revert "Replace eyebrow references with hair references." Now that all species have eyes again, we can assume again that if they have hair, they have eyebrows. This reverts commit 61b81b70c18568995e0eea3fec7c10c91e6aba5e. -------------------------------------------------------------------------------- 132a33245d | Monkooky | 2024-08-04 09:21:14 -0500 Remove undocumented 'wait here' command The behaviour of the undocumented 'wait here' shout is clearly similar to 'guard this area'; but the different parameter for _set_friendly_foes obfuscates that they are identical. This makes the code harder to parse with no real gain to gameplay. -------------------------------------------------------------------------------- 33c259952e | David Lawrence Ramsey | 2024-08-04 09:21:09 -0500 Update changelog for Charlatan's Orb changes. -------------------------------------------------------------------------------- ad2143bade | Monkooky | 2024-08-04 09:21:09 -0500 Update Charlatan's Orb The Charlatan's Orb can currently break the 27 skill limit for evocations, and this does not behave correctly for some misc evokers. The orb was already probably an incorrect choice for a significant majority of characters, and simply capping the boost at 27 would have made this worse. Instead, we give the orb a more unusual effect of directly boosting skills based on unmodified evocations. -------------------------------------------------------------------------------- e91ea31d48 | Implojin | 2024-08-04 05:25:11 -0500 Remove an obsolete fake lang line We haven't passed out from exhaustion since 0ac0241410, and I'm removing this because it came up in an unrelated grep. Possibly more of these are obsolete, but I haven't the heart to brutally trim them. -------------------------------------------------------------------------------- 4b24945042 | Implojin | 2024-08-04 02:49:32 -0500 Remove a 2010 sprint piety cost hack Prior to this commit, this hack only affected BiA, increasing its piety cost (and no other god abilities) by 2.5x in sprint. Very dubious that this approach was ever a good idea. Sprint could certainly use a balance pass, but this isn't it. This reverts commit 8636e5810e06c6195528b92d0df079439bb1c6f5. -------------------------------------------------------------------------------- 9bdd919550 | orjb1 | 2024-08-03 21:37:44 -0230 Propose unrand guarded vault for Rift "So the flavour I'm going for here is [...] not abyss/leakage themed, [and I] did not want a portal (in my headcannon the acolyte got stuck here experimenting). My idea was that the acolyte has been busy 'forging/blessing/animating' demon tridents repeatedly eventually created 'Rift'. Elf/Vaults seemed reasonable?" [Committer's notes: Squashed commits, fixed another descriptions issue according to dolorous's comments in the PR, moderately nerfed the other dancing demon tridents, added new tile decoration, and heavily adjusted the header to fit Crawl house styles- see my comment in the PR for further elaboration there. Closes #3711.] -------------------------------------------------------------------------------- 85f748f000 | yrdzrfxndfvh | 2024-08-03 20:23:44 -0230 add silly lair vault "oh no... the lair of the legendary eight-headed giant serpent Orochi has been infested with cockroaches!" [Committer's notes: Removed float orientation (why are people so ready to take up the big vault slot with small vaults?), moved it to the right file, handled some teleport closets, and added a makeshift kusanagi reward. Closes #3848.] -------------------------------------------------------------------------------- a3d266470a | yrdzrfxndfvh | 2024-08-03 19:28:13 -0230 2 monster additions to ziggurats "adds protean progenitors to giants because they are giants and undying armories to orc because it sounds fitting (they get the same scaling as moths of wrath)" [Committer's notes: Both notions are appreciated, but are both restrained in being being added here for differing reasons. I somewhat lowered the chances on Orc floors for both moths of wrath and undying armouries, to try and not outweigh their prevalence already in Spider / Vaults / Lair Branches / Earth floors, and also because they can't actually affect one another that well. It, of course, should still be meanfully harder off with the undying armouries regardless. Protean progenitors also are somewhat lowered in weight from other stronger giants because they're rather mechanically different from other giants and because it'd take away from the juggernaut + titan focus otherwise when protean progenitors also already have Chaos floors. Still should both be good for a little more spice in the already too-weak floors. Closes #3920.] -------------------------------------------------------------------------------- 28c56dd285 | gammafunk | 2024-08-03 11:44:42 -0500 fix: Correct a Bazaar item name (Oneirical) -------------------------------------------------------------------------------- f6a9f58c4e | David Lawrence Ramsey | 2024-08-03 11:02:19 -0500 Tweak Zin angel message. Refer to gambling as lawless, not evil; it's a chaotic, but not evil, act. -------------------------------------------------------------------------------- 300cd2986e | David Lawrence Ramsey | 2024-08-03 09:14:30 -0500 Rename default djinni/naga tiles w/colours. So that all the pairs are next to each other in alphabetical order. -------------------------------------------------------------------------------- 41edf89b93 | David Lawrence Ramsey | 2024-08-03 08:31:18 -0500 Fix XL typo. Coglins get gizmos at XL 14, not 13. -------------------------------------------------------------------------------- 4a25f2133e | David Lawrence Ramsey | 2024-08-03 07:48:03 -0500 Fix typo and capitalisation. -------------------------------------------------------------------------------- 20d766a256 | DracoOmega | 2024-08-03 04:36:59 -0230 Update changelog -------------------------------------------------------------------------------- 19b87b1804 | David Lawrence Ramsey | 2024-08-02 22:21:21 -0500 Fix spacing. -------------------------------------------------------------------------------- 6abdf1223d | regret-index | 2024-08-02 23:04:40 -0230 New Xom action: force speaking a slow Word of Recall The easiest way to interact with players in a game about killing monsters is to introduce more monsters, and while Xom's list of actions is very full of summons already, there are yet still further contexts and twists one can reasonably experiment with. This very rare bad Xom action, with controls on minimum XL and maximum tension, should reasonably stand out on a few fronts: it can be interrupted (and takes between 2x and 3x as long as a normal word of recall to do so, so there's lots of space to react), and it's pulling out actual monsters from the level and its vaults as opposed to generating yet more monsters one could flee and wait out timers for. Probably it's fine under Xom's continued flexibly unreliable nature? Definitely not any worse than when a Zot trap randomly does it. (Also, it allows lines like "The rat is forced to slowly start squeaking a word of recall!", which is a great notion in and of itself.) -------------------------------------------------------------------------------- c468895e65 | regret-index | 2024-08-02 22:54:56 -0230 Let Xom add an extra chaos brand to unrands (DracoOmega) "This implements an item flag that lets unrand weapons be described as 'chaotic' and gives them the chaos brand (on top of whatever brand or on-hit effects the unrand weapon might already have). This is intended solely as a Xom perk for Xom's bazaars. Regular rebranding can't work on unrands, and it felt like there could be some fun to be had with Xom breaking the rules and giving you a touch more chaos on some of the most interesting and exciting weapons." [Committer's notes: This gives a 37.5% chance of seeing a chaotic-touched normal unrand weapon distributed amongst the weapon types in a Xom bazaar, and a 37.5% chance of seeing a regular unrand that was already risky or chaotic enough without extra effects. Since chaos brand is actually a relatively poor fit on weapons besides ranged or short blades or top-end two-handers on a god that provides zero reliable emergency escape options, the power already baked into unrands should help cover for it. For the record, just to reiterate: absolutely do not provide this in any contexts besides Sprints or Xom's bazaars. This is solely meant as a rare treat for Xom worshippers in the base game.] -------------------------------------------------------------------------------- c472126ed2 | regret-index | 2024-08-02 22:54:56 -0230 New Xom action: special bazaar banishment The most exciting part of Xom by a decent margin are the strategic benefits for worshipping them, since this lasts far longer than any given moment of Xom's whims passing by to make a situation worse or better. While direct gifts and mutations are relatively fine starting points, there's a decent space more to do something unique, especially with only one other god interacting with shops solely through direct player's choices of semi-permanent dungeon fixtures. This rare Xom action directly warps a character over to a unique Bazaar, as long as they have a sufficient amount of gold. (For technical reasons involving losing previous bazaar floors, this can't happen while in you're in a Bazaar or the Abyss. Whenever you exit, you'll arrive wherever you just were previously.) This Xom-exclusive bazaar itself contains all three of the following heavily customized shops: * "Party Supplies": Potions and scrolls with some risk to the user (e.g. immolation, silence, ambrosia), and a small amount of debuff darts, both for cheap and with extra-high quantities. * "Affordable Mysteries": Spellbooks leaning on effects Xom directly or indirectly uses across the non-conjurations non-elemental schools, some wands, some talismans with one randart, plus a manual that supports one of those prior books / wands / talismans. * "Avant-Garde Galleria": Chaos randart weapons, small chances for innately risky or chaotic unrand weapons and armour, two randart rings with a negative resist plus either ^Contam or ^Drain, and two randart orbs of mayhem / wrath / guile with a chance of a randart scarf of harm instead. This being done through a bazaar's shops rather than god gifting reasonably differentiates it from other god gift upgrades (including Xom's own untouched regular gifts), but it should hopefully feel quite distinct and memorable and exciting when one gets the opportunity, and it should also encourage people to try out more of riskier consumables, equipment egos, and negative artefact properties. -------------------------------------------------------------------------------- b3ecabcc9f | David Lawrence Ramsey | 2024-08-02 16:56:14 -0500 Improve player blindness check. Use is_lifeless_undead() for consistency with everywhere else. -------------------------------------------------------------------------------- f771970a14 | David Lawrence Ramsey | 2024-08-02 16:47:16 -0500 Remove stray blank line/semicolon. -------------------------------------------------------------------------------- 3c87236292 | David Lawrence Ramsey | 2024-08-02 16:27:52 -0500 Add a few more eye messages for Xom. -------------------------------------------------------------------------------- 1698bd01fb | David Lawrence Ramsey | 2024-08-02 16:18:51 -0500 Reorder Xom body part checks a bit. Put eyes after ears, as is done in random_body_part_name(). -------------------------------------------------------------------------------- 9069b2dbac | David Lawrence Ramsey | 2024-08-02 16:16:06 -0500 Remove lack of eyes from players/monsters. Every player species/form is now assumed to have eyes. Only undead players (not counting living vampires) are unblindable and undazzleable. Monster vine stalkers also lose the unblindable flag. Eyes are still available as a random body part in Xom messages. -------------------------------------------------------------------------------- 9a6a6aee9f | David Lawrence Ramsey | 2024-08-02 14:54:43 -0500 Consistently add commas to definitions. -------------------------------------------------------------------------------- 857e39b105 | David Lawrence Ramsey | 2024-08-02 14:41:50 -0500 Properly ban eye sacrifices for eyeless players. It was done in the wrong place; Ru's sacrifice mutations are handled differently. -------------------------------------------------------------------------------- d77ae7e48b | DracoOmega | 2024-08-02 15:55:11 -0230 Fix ranged auto-fight behaviour with Soul Splinter (CarefulOdds) It wouldn't properly realize you couldn't usefully cast it on a monster that was presently soul-splintered. -------------------------------------------------------------------------------- 996240b6d9 | David Lawrence Ramsey | 2024-08-02 13:15:11 -0500 Fix comment wording. -------------------------------------------------------------------------------- 3fab5b5d33 | David Lawrence Ramsey | 2024-08-02 12:50:56 -0500 Fix comment typo. -------------------------------------------------------------------------------- 61fea11729 | David Lawrence Ramsey | 2024-08-02 12:00:25 -0500 Add a few lines to Zin angels/goblin sharpers. Taken from an image in this Reddit thread (u/kuniqsX): https://www.reddit.com/r/dcss/comments/1ei6m5l/5_hand_blackjack_deal/ -------------------------------------------------------------------------------- 666e40ff79 | David Lawrence Ramsey | 2024-08-02 11:54:20 -0500 Fix punctuation. -------------------------------------------------------------------------------- ec6e65acc9 | David Lawrence Ramsey | 2024-08-02 11:03:18 -0500 Add another book magic entry to artefacts. -------------------------------------------------------------------------------- 9dd00976c5 | Monkooky | 2024-08-02 00:24:10 -0500 remove auto-hit flag this flag is entirely redundant; it is true exactly when aimed_at_feet is and checked exactly when aimed_at_feet is -------------------------------------------------------------------------------- c4cf240705 | DracoOmega | 2024-08-02 02:29:43 -0230 Allow Mark of the Celebrant to trigger when djinn pay HP for spells (If such payment lowers them below 50%) -------------------------------------------------------------------------------- 5a228cc3b6 | DracoOmega | 2024-08-02 02:29:18 -0230 Make Permafrost Eruption actually unable to miss Since it was intended to be, and the description implies it is (as opposed to merely being very accurate). -------------------------------------------------------------------------------- 0da81c886d | DracoOmega | 2024-08-01 02:54:10 -0230 Fix typo in god description -------------------------------------------------------------------------------- 2a28826f5c | DracoOmega | 2024-08-01 02:54:10 -0230 Fix a future mutation indicator still showing on 'A' when it shouldn't -------------------------------------------------------------------------------- f7326234eb | regret-index | 2024-08-01 00:43:27 -0230 Vaults vaults batch (with extras) Part of the problem of the Vaults branch is that with its level generation focus on themeless minivaults making up the majority of every floor, there's not very much space to actually focus on the strength of vaults as something different from regular floor generation to notice as it stands out. The heavy work done on differentiating V from Depths has somewhat helped this, but for the most part, if there's no significant out-of-depth spam it can be difficult to actually distinguish floors as floors and not just opportunities for ironbound gimmicks to roll high and mean. This vaults batch, aside from one themed vault and a few vaults that try to place themselves throughout most of the game, is meant to somewhat address this with a few relatively simple themes and a depth-scaling lua function to help emphasize monsters the branch consistently already uses as instead part of given themed chambers- cold storage ice boxes, parks and zoos, charnelhouses, and intersection checkpoints for mages or ranged monsters. They're a little more likely to place monsters than other vaults because the depth scaling somewhat warps the capability to normally rely on normal monster band placements, but overall few should stand out versus what one could get already, while varying up the terrain and each game just that little bit more. (Also, this commit comes with a minor additional case to prevent weaponless training dummies from interrupting rest, and also consolidating the two "preserve_wall" and "no_wall_fixup" tags into one rather than splitting their vault usage between the two.) -------------------------------------------------------------------------------- 4455a2a023 | regret-index | 2024-08-01 00:43:26 -0230 Green tiles (pianoman523) The volley of thorns spell icon and a new extra-fancy altar for Jiyva, both with heavy edits. -------------------------------------------------------------------------------- 1ee3b3fea3 | David Lawrence Ramsey | 2024-07-31 21:06:30 -0500 Mark serpent form as having a tail. And make sure it only works for constriction, not tail-slaps. -------------------------------------------------------------------------------- 75b3d6c479 | DracoOmega | 2024-07-31 23:14:36 -0230 Fix inverted logic in refactor aux attack checks. Players could use every aux they *didn't* have, instead of ones they did... -------------------------------------------------------------------------------- dcd205b14f | DracoOmega | 2024-07-31 21:44:54 -0230 Make Blindness actually reduce player aux accuracy (One of the pitfalls of it using an entirely different to-hit function...) -------------------------------------------------------------------------------- 31a074b6e7 | DracoOmega | 2024-07-31 21:44:54 -0230 Reword the names of a few aux attacks to look better in xv Avoiding such lines as "You have 80% to hit with your claws and 75% to hit with your claw." (This doesn't affect hit verbs, though will also affect miss messages.) -------------------------------------------------------------------------------- ee1fe2baa0 | DracoOmega | 2024-07-31 21:44:54 -0230 Change how aux attack accuracy is displayed Previously, the small description of aux attack mutations would list trigger chance, accuracy, and base damage in one block, which misleadingly made it look like the accuracy was in some way a property of that specific aux attack. But in fact, all aux attacks have the same accuracy and this was just reporting the player's current to-hit with aux attacks in *general* (a fact that was misunderstood by literally everyone involved in a recent discussion about them) and additionally doing so using a scale of plusses that no one had any confidence about the meaning of. We already report player melee to-hit in monster descriptions in a human-readable way, so I am adding a description for aux attack accuracy there as well (if the current character has any) and removing the line from aux mutation descriptions. I tried to be careful that the math here was correct (there are multiple subtle differences between how the to-hit value is used by auxes versus normal melee attacks) but am still not 100% confident. -------------------------------------------------------------------------------- e50eda5ae6 | DracoOmega | 2024-07-31 21:44:54 -0230 Refactor aux attack usability Instead of a switch statement in _extra_aux_attack(), add a is_usable() method to AuxAttackType (so that it is possible to direct query whether the player possesses a given aux attack type outside of trying to perform them. -------------------------------------------------------------------------------- 2b9147af3d | Implojin | 2024-07-31 18:39:45 -0500 fix: Disallow zigfig use on the orb dais (Lightli) Previously, it was possible to use a zigfig while standing on the orb dais, resulting in the zigfig being used without a zig entrance appearing. Here we mark the dais as "critical", hopefully preventing this and other issues in the future. -------------------------------------------------------------------------------- b43e308ab6 | Implojin | 2024-07-31 17:49:59 -0500 fix: tweak colours of evokers in item stacks Following from 3b7b6a97b3 and 50297eb6a4, here we give evokers the same treatment as the previous commit. -------------------------------------------------------------------------------- 3b7b6a97b3 | Nikolai Lavsky | 2024-08-01 01:30:45 +0300 fix: tweak colours of artefacts in item stacks It's hard to notice artefact magical staves and artefact talismans in big item stacks, because their glyphs are coloured in darkgrey as if they were mundane items. This commit fixes that, and also gives unrandarts lightcyan colour as a followup to cf64465. -------------------------------------------------------------------------------- 5e7d71ec3a | DracoOmega | 2024-07-31 06:13:40 -0230 Let orc wizard apostles know Soul Splinter and Grave Claw. -------------------------------------------------------------------------------- cbb58235ac | DracoOmega | 2024-07-31 06:13:40 -0230 Let monsters cast Grave Claw Also mostly for ghosts and illusions. (Most of the code was already in place for this to work earlier; I just hadn't done the last bits.) Monsters, of course, are flagrant cheaters and don't have to care about ammunition for this spell. Ghosts, at least, are probably as full of the malice of the recently dead as they can hold. (This means the spell description could be a little misleading with the latter paragraph; in future I will try to find a way to fix that.) -------------------------------------------------------------------------------- bc9fe51480 | DracoOmega | 2024-07-31 06:13:40 -0230 Let monsters cast Soul Splinter Mostly for ghosts/illusions at the moment, though who knows if another use will present itself in future. -------------------------------------------------------------------------------- d9bca62529 | DracoOmega | 2024-07-31 06:13:40 -0230 Gently nerf Gravitambourine Make it require slightly more evocations to get a radius upgrade and decrease its Bind duration at less than ~11 evocations. -------------------------------------------------------------------------------- e2a70cf4d0 | DracoOmega | 2024-07-31 06:13:40 -0230 Prevent Injury Bond from being cast on firewood (regret-index) -------------------------------------------------------------------------------- afbbcc1b85 | DracoOmega | 2024-07-31 06:13:40 -0230 Make Blazeheart Golem explosion *actually* scale with spellpower. This has been bugged since the spell was first implemented and would always cause a 3d20 explosion regardless of spellpower (oh, the irony....). After so long seeming to not be wildly overpowered at this level, I was a little hesitant to nerf it to the originally-intended values, so I have moved those upward a little. It will now reach 3d20 at 80 spellpower instead of 100 (capping at 3d22 at 100 power). I expect it will still feel like it packs a sufficient punch (but it really was intended to care about spellpower.) -------------------------------------------------------------------------------- 87d6e9d5b4 | DracoOmega | 2024-07-31 06:13:40 -0230 Make recasting Canine Familiar give a minor duration boost at low duration It was possible if a familiar was already nearly expired when the player recast it (to heal/buff them) for it to poof before even making use of the instant attack you gave it. Now, ensure this doesn't happen by giving a few extra turns of duration if they were almost out. (This isn't enough to make it viable to keep them along with you at all times, but should ensure that if you spend MP in their direction that they will remain long enough to immediately make use of it.) -------------------------------------------------------------------------------- df025e5179 | DracoOmega | 2024-07-31 06:13:40 -0230 Fix random rounding in Rimeblight spell description (Acrobat) -------------------------------------------------------------------------------- c1ca0b895e | DracoOmega | 2024-07-31 06:13:40 -0230 Display hoarfrost cannon damage in Hoarfrost Cannonade description To make it a little easier to tell how gear changes will affect your summons' bullets without having to actually cast the spell. -------------------------------------------------------------------------------- cde8aef498 | DracoOmega | 2024-07-31 06:13:40 -0230 Rename a couple confusing zap_types ZAP_FLASH_FREEZE wasn't actually used by Flash Freeze, which instead used ZAP_ICY_FLASH_FREEZE (while the former was used only by Creeping Frost). Rename these to actually correspond to the spell that uses them. -------------------------------------------------------------------------------- 480633aa27 | DracoOmega | 2024-07-31 06:13:39 -0230 Clear the pursuers list after uncontrolled blinks/teleports This mostly addresses the rare case of a teleport going off (or dispersal trap being triggered) on a turn where the player had stepped away from some monster and this translocation moving them into range of the monster when they otherwise would not have been. (ie: it is possible to recieve an attack of opportunity if you step away from a monster, teleport, and then land 2 tiles away from their present location - even if you were nowhere near the monster when you moved). (Technically this makes the player immune to attacks of opportunity even in cases where they were already in range and shifted only a single tile, but that seems harmless.) -------------------------------------------------------------------------------- b985506b0a | David Lawrence Ramsey | 2024-07-30 22:38:28 -0500 Tweak a few Xom pseudo-miscast messages. -------------------------------------------------------------------------------- 9527bbf916 | David Lawrence Ramsey | 2024-07-30 22:35:04 -0500 Reorder Makhleb mut checks. Put them in the same order that's used elsewhere. -------------------------------------------------------------------------------- 46e0fb5215 | David Lawrence Ramsey | 2024-07-30 21:22:27 -0500 Add a few more time names to artefacts. -------------------------------------------------------------------------------- 39ff337fbb | David Lawrence Ramsey | 2024-07-30 21:14:10 -0500 Add second placeholder for Globe of Annihilation. If the player had no Makhleb hell-mutation, it would mention drawing power from "the Hells themselves", but have no description for the energies produced; it now uses "hellish energy" as a placeholder there. -------------------------------------------------------------------------------- 79739bf276 | DracoOmega | 2024-07-30 22:25:53 -0230 Make Call Down Lightning a bit more visible when cast Without a beam trail, the default animation was very brief. Let it linger just a tiny bit longer. -------------------------------------------------------------------------------- 1adbacb195 | DracoOmega | 2024-07-30 22:24:22 -0230 Make cerulean imps more likely to speak after summoning them I actually went in to find out why the line to make them speak was 'broken' and couldn't actually trigger, but evidently they just had a ~96% chance to opt to say nothing when asked. These lines feel cute enough that I think they should be a little more common. -------------------------------------------------------------------------------- db1a49ac58 | DracoOmega | 2024-07-30 22:20:13 -0230 Fix 'future XL mutations' key showing up all the time on 'A' (PJRamaglia) -------------------------------------------------------------------------------- bd53a00970 | DracoOmega | 2024-07-30 21:14:37 -0230 Fix incorrect labels for local tiles paperdoll editor (inflori) Off-by-one since Coglins added an off-hand weapon slot. -------------------------------------------------------------------------------- ebd19936ad | DracoOmega | 2024-07-30 21:13:38 -0230 Display Makhleb's 4* Destruction upgrade on the god power screen (cfcfcfcf) Not really happy with how hacky this code is, but it otherwise seems hard to insert the power at the appropriate point it is gained. -------------------------------------------------------------------------------- f4909a7c5b | DracoOmega | 2024-07-30 21:11:17 -0230 Slightly clarify a point in Mark of the Legion's description (Acrobat) -------------------------------------------------------------------------------- b5635700b4 | DracoOmega | 2024-07-30 21:10:42 -0230 Let ?summoning work in the Crucible (Lici) It's not really easy to scale the results of this scroll with how dangerous the Crucible itself has scaled at any given time, but that's probably fine. (I've included all of the non-Tyrant Makhleb servant set in the list that the scroll can produce.) -------------------------------------------------------------------------------- b690a713b1 | DracoOmega | 2024-07-30 21:07:39 -0230 Prevent aiming Unleash Destruction at yourself (cfcfcfcfcf) The player couldn't be hurt by the beam itself, but would still pay the cost for the ability and waste time. -------------------------------------------------------------------------------- 73a98bbdeb | DracoOmega | 2024-07-30 19:17:56 -0230 Display future XL-based mutations on the 'A' screen (elliptic) This commit will make the 'A' screen display mutations that will be gained predictably at a future XL (ie: *not* for demonspawn or base draconians, but for all other species-based mutations). I have attempted to word these to make it somewhat more clear that the player does not have the mutation in question *yet* (ie: turning 'you can' into 'you will be able to' and so forth.) Simple automatic string replacements cannot reliably shift the tense of everything, so a custom message to describe a future mutation can also be specified in mutation-data.h (and this is done for a few of them, including ones that are especially long or would be really confusing, like claiming that vampires will 'become afflicted by vampirism' by XL 3 because bat form is technically an uprade to the vampirism mutation... I'm not entirely happy with the implementation, but it should still be a mild status quo improvement. -------------------------------------------------------------------------------- a117348762 | David Lawrence Ramsey | 2024-07-30 14:35:30 -0500 Fix punctuation. -------------------------------------------------------------------------------- 263b1d479b | David Lawrence Ramsey | 2024-07-30 14:22:50 -0500 Add demonspawn soul scholar quote. -------------------------------------------------------------------------------- cabdb54bf2 | David Lawrence Ramsey | 2024-07-30 13:57:30 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- 0340e304aa | David Lawrence Ramsey | 2024-07-30 13:56:59 -0500 Tweak a hell message. We don't know if the player can taste things, and while there is a can_smell() function, there's no can_taste() function, and the sense of taste is mostly the sense of smell anyway if real-life rules apply here. As for the player's not having blood, the blood definitely isn't theirs in that case, so the message still works for them. -------------------------------------------------------------------------------- cddd9a82b6 | David Lawrence Ramsey | 2024-07-30 13:39:32 -0500 Add "mouth" to Xom's list of body parts. Also add a few messages for it. (Also, regarding the previous commit message, all players are guaranteed to have two arms, if not two hands [due to Ru sacrifices], so they're all have singular and plural external body part options.) -------------------------------------------------------------------------------- cc40c1ef04 | David Lawrence Ramsey | 2024-07-30 12:34:31 -0500 Add "muscles" to the list of internal body parts. So an octopode (with no bones) in death-form (with no blood) has one singular internal body part (the soul) and one plural internal body part (the muscles), so that internal body parts always have a possible option. External body parts are covered in singular by the head, and in plural by the hands, so they always have a possible option already. -------------------------------------------------------------------------------- 8c2505f567 | David Lawrence Ramsey | 2024-07-30 11:58:18 -0500 Add another gizmo modifier. -------------------------------------------------------------------------------- cc2d2dd7b6 | David Lawrence Ramsey | 2024-07-30 11:44:11 -0500 Replace redundant gizmo entry (oops). -------------------------------------------------------------------------------- f42772b7c7 | David Lawrence Ramsey | 2024-07-30 11:11:58 -0500 Update Xom message to account for all body parts. -------------------------------------------------------------------------------- accad25bde | David Lawrence Ramsey | 2024-07-30 11:08:31 -0500 Add Xom messages for internal body parts. -------------------------------------------------------------------------------- 903400a49a | David Lawrence Ramsey | 2024-07-30 11:08:31 -0500 Add "soul" to the list of internal body parts. -------------------------------------------------------------------------------- 7a905b2f1b | David Lawrence Ramsey | 2024-07-30 11:08:31 -0500 Rework random body part handling. Properly separate internal and external body parts via a flag defined in mon-util.h, and actually include mon-util.h in mon-util.cc and xom.cc so that it's properly defined. -------------------------------------------------------------------------------- f36d2cfbaf | David Lawrence Ramsey | 2024-07-30 11:08:13 -0500 Add another gizmo entry. -------------------------------------------------------------------------------- 8415c405d9 | patrick | 2024-07-30 11:26:26 -0400 Add more gizmo terminology -------------------------------------------------------------------------------- b2e4c6566d | DracoOmega | 2024-07-29 19:09:05 -0230 Remove a very tiny chance to fail to place a Duel opponent monster::find_home_anywhere() (used as the default placement method for transiting monsters) isn't guaranteed to actually work. It tries 600 times to place a monster (choosing a random cell anywhere on the floor, which may be well outside the bounds of a portal vault) and afterward just gives up. This may be acceptable behavior for shafted monsters (though I am a little dubious even here), but in the case of Duel it results in the Duel immediately ending and the *next* time the player duels, that monster can appear alongside the new one. I'm not 100% sure this is the underlying cause of a recent bug, but it I can't see any other obvious cause, and this definitely is *possible* (if fantastically rare). Anyway, just place the duel target next to the player on arrival (like with stairs), which is more certain to work. (It will be relocated after that time anyway.) (Side note: monster::find_home_anywhere() doesn't appear to respect no-tele-into either, meaning it is probably possible to shaft monsters into display case vaults. Fixing this is somewhat non-trivial, though, since I think the most obvious implementation would also prevent monsters from taking stairs or hatches into no-tele-into areas as well, and I think at least some vaults make use of this at present?) -------------------------------------------------------------------------------- f184c26545 | DracoOmega | 2024-07-29 19:02:41 -0230 Place duel opponents properly if you have LoS range < 3 (inflori) Duel tries to place your opponent a random 3-5 tiles away from the player, in a spot that the player still can see. But it is possible for kobold with scarf of shadows and Robe of Night to have LoS 2, making those two conditions mutually exclusive. This resulted in the monster placing 'anywhere' instead, which could include in the spectator stands where it was impossible to reach them.... Now the min placement distance will be capped by you.current_vision -------------------------------------------------------------------------------- cea2b13a19 | gammafunk | 2024-07-29 12:05:42 -0500 fix: Remove a teleport closet (Natris,nicolae) For nemelex_altar_shiori, some glyphs that became floor were not flagged with `no_tele_into`. Some glyphs inside unreachablehk -------------------------------------------------------------------------------- 38ce937ec6 | Christopher Partin | 2024-07-28 21:13:21 -0500 Update README.md Added a link right below # How to Play to help navigate users to the installation help documentation. This documentation is nested under several folders. For new users or those who aren't technically-savvy, having these installation instructions directly in the README, under How to Play, makes sense. That way they don't have to go searching if they run into any confusion, which will cause frustration. [Committer's note: Removed unneeded initial slash from link, and reformatted commit message.] -------------------------------------------------------------------------------- 1bdf80281f | regret-index | 2024-07-28 23:05:04 -0230 Idiosyncratic earthworks (pianoman523) New barreling boulder tiles, a more convincing Charlatan's Orb, and something heavily repurposed into providing unique stone walls for the Abyss. Abyss as a result has one of three different tile colours of stone each game, which is a little weird but looks unique enough that I'm willing to take the chance on this experiment. -------------------------------------------------------------------------------- 4efc981e7d | David Lawrence Ramsey | 2024-07-28 19:08:27 -0500 Put Makhleb's mut desc checks in the same order. In case someone uses wizard mode to grant themselves multiple ones, the description will be as accurate as the code is. Also, remove a duplicate "the" from a fallback message. -------------------------------------------------------------------------------- 3abf8ce565 | David Lawrence Ramsey | 2024-07-28 18:43:01 -0500 Remove unneeded line breaks. -------------------------------------------------------------------------------- 19d7f822da | David Lawrence Ramsey | 2024-07-28 18:36:37 -0500 Also mention piercing in Hell-upgraded UD. -------------------------------------------------------------------------------- 9376fc3c60 | David Lawrence Ramsey | 2024-07-28 18:21:46 -0500 Mention how your associated Hell changes UD. Closes #3938. -------------------------------------------------------------------------------- a9c1aa24dc | DracoOmega | 2024-07-28 14:47:06 -0230 Fix weird typo with Infernal Servent power boost from hostiles (ge0FF) -------------------------------------------------------------------------------- 7aa91e79b9 | regret-index | 2024-07-28 06:22:01 -0230 Improve calcifying dust visibility (pisaster) While the older calcifying dust tiles were troubled ones on an aesthetic level, they admittedly were all quite difficult to miss- fully opaque and mostly a colour not densely provided in most capacities. For visibility's sake, I'm making the new tiles somewhat more filled in, brighter, more saturated, and fully solid. This still isn't perfect, but I'd honestly prefer more changes on other system levels for this sort of matter anyway for other clouds, as many other cloud tiles are much harder to see and mostly rely on not being nearly as prominent, in much higher quantities, or both. Some sort of not-standing-in-a-harmless-Cloud status, maybe? (Also, I adjusted the default danger highlighting for calcifying dust in general- its phrasing doesn't seem to account for it doing less than one exclamation mark's worth of damage, which is very silly in its inconsistency.) -------------------------------------------------------------------------------- f9c04a0793 | regret-index | 2024-07-28 06:22:01 -0230 Fruit tiles (meckryl) and spider tile (pianoman523) The cache of fruit and culicivora tiles, specifically. Both nice improvements on accuracy and colour. -------------------------------------------------------------------------------- 03e56d13fd | DracoOmega | 2024-07-28 03:07:22 -0230 Don't display Charms/Transmutations skills in Djinn dumps (inflori) When manually enabling spell skill training on a djinn (either for a character type that started with it off, or toggling it off and on again on some other character), it would enable *all* magic skills, including those which had been removed. I don't think had much effect, since it wouldn't train them or display them in the skill menu, but they WOULD show up in chardumps after that point. -------------------------------------------------------------------------------- c00c2e1e4a | DracoOmega | 2024-07-28 02:10:23 -0230 Checkwhite -------------------------------------------------------------------------------- 6854c7020c | DracoOmega | 2024-07-28 01:54:55 -0230 Fix another lua test assert Apparently fsim.lua was turning the player into a minotaur, which caused them to have horns by the time mutation.lua rolled around, which prevented them from gaining antennae (and had previously only been stopped by mut_species.lua turning them into something else first). Instead, change into something with no *physiological* mutations to conflict with tests, during this test itself. (I do still wonder if an explicit test species makes sense...) -------------------------------------------------------------------------------- 6b3df5fff8 | DracoOmega | 2024-07-28 01:54:55 -0230 Improve Mark of the Tyrant's hostile summon behaviour (Lightli) Getting a hostile demon from Infernal Servant also raises the quality of the friendly demon you get, but with 25+ invo and Mark of the Tyrant, this made demon qualify fall off the top of the chart and summon the default demon (a red devil) instead. Additionally, being able to get actual hostile fiends at the highest levels of invo with this mark could feel overly punishing for the player's investment, so let's cap hostiles to the same level that they would be at high invo without having this mark. -------------------------------------------------------------------------------- a89054ee6c | DracoOmega | 2024-07-28 01:54:55 -0230 Raise Formicid translocation aptitude to +2 After felid and spriggan's massive +4 translocations apt, virtually no other species in the game has better than 0 (aside from +1 for Deep Elf and Barachi, who have positive apts with virtually every magic). I find the idea of a species who cannot translocation *themselves* being otherwise one of the most adept at using it to be amusingly paradoxical, and there are multiple high level spells now that a formicid would be very happy to cast (even while still lacking access to the low-level bread and butter of the school, which I think could create some interesting tension.) Let's see how it feels. -------------------------------------------------------------------------------- 3a655b3292 | DracoOmega | 2024-07-28 01:54:54 -0230 Fix a crash with killing an enemy with the 1st of 2 retaliation attacks More specifically, with killing one via minotaur retaliatory headbutt when the executioner blade aux from Mark of Execution was active. It would try to retaliate a second time, after the monster was dead. -------------------------------------------------------------------------------- fafa18294e | DracoOmega | 2024-07-28 01:54:54 -0230 Tweak some mutation lua tests There are now no species in Crawl without any innate mutations at all, so it is not possible for the lua tests to rely on any playable species not having any. In fact, it turns out that mutation.lua *already* silently relied on you being a species with no innate mutations, even though that had stopped being true by default since humans were changed, and it was only due to 'cleanup' at the end of a previous test in the default ordering that it didn't assert. (ie: it would already assert if you ran the test on its own) I've changed mut_species.lua to restore the player to the species they were at the start of the test rather than to any specific species (this feels closer to the idea of 'cleanup' to me and is what is currently done with the player's position.) As for mutation.lua, I changed the asserts to only ensure that NON-innate mutations are cleaned up (this was only done during random mutation tests anyway, and not ones that cared about mutation conflicts). If we really want to ensure a blank slate of innates for the purposes of tests, I think we would be better off either creating a method specifically for this pupose or a vanilla species specifically to be used for tests only (and thus not depending on vagueries of design changes over the years). -------------------------------------------------------------------------------- 766c39c706 | DracoOmega | 2024-07-28 01:54:54 -0230 Give Deep Elves innate increased MP regen Deep Elves are the last remaining species without anything unique about them besides numbers - even humans have a neat special gimmick now! And while they are a fairly popular and extremely iconic species for pure casters, many skilled players consider them to be on the weak side even within their own domain - their skills at magic simply not outweighing their fragility. While winrate should not be a primary concern with species design (cf. mummies!), I think this is a case where it's possible to make them a little stronger and also a little more fun without fundamentally affecting how they play to anyone who enjoys their current incarnation - something minimally intrusive that will make them better at specifically the thing they are already chiefly associated with doing. And I firmly believe everyone likes having a little something they can point at about a species they like and say "This is a thing they can do that no other species can!" Let's try giving Deep Elves one of those things! (And given the positive reaction that was voice dabout a previous changelog update that falsely claimed this change had already been made, I suspect many people will be happy to see it.) -------------------------------------------------------------------------------- f17e09bd7d | DracoOmega | 2024-07-28 01:54:54 -0230 Make tides look a little better around some pseudo-walls (regret-index) While trees and statues are 'solid', they don't actually visually occupy all of their tile, and having the tide in Shoals make a hard cut off around them looked kind of bad. This generally looks much nicer. -------------------------------------------------------------------------------- dce7167cdc | DracoOmega | 2024-07-28 01:54:54 -0230 Don't let Vessel of Slaughter be dispelled It would even immediately throw the player into the Crucible if an enemy did this! -------------------------------------------------------------------------------- b58bf77696 | DracoOmega | 2024-07-28 01:54:54 -0230 Don't crash on using Vessel of Slaughter in Sprint This one *does* potentially allow 'stalling' in Meatsprint specifically, but Djinn warpers having Vhi's is probably more balance-affecting than this is (and what *is* Meatsprint balance, anyway?) I don't expect it should be problematic in other ones). -------------------------------------------------------------------------------- cfb98ad842 | DracoOmega | 2024-07-28 01:54:54 -0230 Re-enable Duel in Sprint There were some past concerns about it affecting the balance of certain sprints by letting the player duck out of situations that were never intended to allow a breather, but the current version of Duel mostly doesn't allow using it to stall. It seems like it should be fine to me. -------------------------------------------------------------------------------- 3ada536caa | DracoOmega | 2024-07-28 01:54:54 -0230 Mildly reduce Soul Splinter's power This has been a well-liked and effective spell, but might be a little bit TOO effective. This lowers its health by ~30% and decreases its damage a little when extracted from enemies with more than 2 HD. -------------------------------------------------------------------------------- d8249b9959 | DracoOmega | 2024-07-28 01:54:54 -0230 Prevent recasting Soul Splinter on a monster with a wisp already out Or at the very least, say that they're not susceptible and prevent it from working (being beam-targeted makes it a little hard to outright prevent it from being cast in the direction of an ineligable monster). This prevents the current wierdness of it making weakness wear off the target when you recast it (as well as strange message ordering). Additionally give better messages when the wisp doesn't form due to a lack of adjacent space (and likewise don't auto-target an enemy in such a position). -------------------------------------------------------------------------------- c485ba435c | DracoOmega | 2024-07-28 01:54:54 -0230 Refactor and simplify how monsters follow the player across stairs The code that handled determining which monsters would follow with the player when they took stairs or transporters had some opaque and complicated behavior which may have once served an important purpose, but enough of the game has changed around it that I think a simpler and more intuitive method could be better. Namely: friendly monsters could follow the player from up to 5 tiles away from the staircase, but only so long as they were connected in a contiguous chain, and *only* if there was not a single non-friendly monster adjacent to the player at the same time (at which point the max distance allies could be pulled from was 1). Note that 'non-friendly monster' in this case included PLANTS. So merely being near a plant would cause you to leave allies behind which you'd normally expect to follow you. Note also that this chain didn't care about line of sight, so you could pull along things around multiple corners, just so long as they were all touching each other. There was additional behavior of flagging monsters as MF_TAKING_STAIRS even when we knew they *couldn't* take stairs, just so they could count as links in that chain to allow access to stair-taking allies who might be behind them, and needing to juggle separate return values for whether that flag *really* meant they were taking the stairs or not. (Also, if one of them broke the chain during transit, the rest of your allies wouldn't arrive...) The original stated purpose of this code was to prevent zombies and summons from blocking perma-allies behind them from travelling with the player, but in the time since it was written, interlevel-recall was added and most perma-allies removed from the game. There just isn't a compelling need for this additional complexity anymore, in my opinion. The new logic is: stair-using allies can follow from 3 tiles away (so long as the player can see them) and adjacencies don't matter. MF_TAKING_STAIRS should now only be used for monsters who are *actually* taking the stairs, and determining followers can be done via a simple radius_iterator instead of a sort of breadth-first search. This does allow you to pull allies that are clearly not adjacent to the you through transporters, which are instant, but it's not like the previous logic ever pretended the monsters were walking multiple tiles into the gate under their own power in a single turn anyway. I think it should be fine. (I have also fixed a few other minor bugs at the same time, such as it being possible to seperate Dowan and Duvessa if one of them gets confused after you start taking the stairs but before you finish.) Finally, since we no longer need to keep non-stair-using allies alive during the entire transit process merely to determine which monsters WILL transit, I have moved the code to kill such summons before it, which can help with certain bookkeeping. -------------------------------------------------------------------------------- f8c9cd62c2 | DracoOmega | 2024-07-28 01:54:54 -0230 Fix being unable to fire Unleash Destruction through plants This was because Unleash Destruction lacks piercing before 4* and the zap type used for the tracer in this case wasn't actually defined (and the logic was backwards anyway...) This fixes #3941 -------------------------------------------------------------------------------- c1c50dc342 | DracoOmega | 2024-07-28 01:54:54 -0230 Don't claim that battlespheres and boulders are 'summoned allies' When you leave them behind by taking the stairs. Battlesphere already has its own messages and I doubt anyone would expect a tumbling boulder to follow them down the stairs at any rate. -------------------------------------------------------------------------------- f1d1f664bd | DracoOmega | 2024-07-28 01:54:54 -0230 Expire friendly summons upon leaving a level instead of returning to it This makes bookkeeping for a number of things easier (since summoners can be notified that their summons expired while they're still on the same floor as each other instead of possibly never) and I think it more intuitively fits what the player would expect to happen anyway. I have slightly simplified the relevant code after moving it to remove cases I don't think matter anymore (ie: there are no more Yred perma-allies that *aren't* bound souls). One trivial behavioral change is that if you leave summons behind and then immediately return to the floor you just left, you won't see any clouds of translocational energy left behind where they were standing. I don't think this really matters. -------------------------------------------------------------------------------- a12b9cfa14 | David Lawrence Ramsey | 2024-07-27 20:01:54 -0500 Remove soul-ripe check for Yred lit torch kills. Killing a ripe soul apparently bypasses the lit torch kill routine entirely when it becomes a bound soul. -------------------------------------------------------------------------------- 344574098c | David Lawrence Ramsey | 2024-07-27 19:47:19 -0500 Use the possessive for Yred souls/Beogh donors. Also ensure that unseen kills with the black torch unlit use "a" instead of "the", as is done for such kills with the black torch lit. -------------------------------------------------------------------------------- a15a51717f | DracoOmega | 2024-07-27 14:26:07 -0230 Fix the Crucible of Flesh's branch description not displaying properly. -------------------------------------------------------------------------------- 83ca460988 | DracoOmega | 2024-07-27 14:24:19 -0230 Fix Makhleb (and Veh/TSO...) heal-on-kill chance (Acrobat) Due to an issue with bracketing in 6009e8ebb8f3537a9b757f7d46b1154c4f9f549e the heal chance didn't smoothly scale between 1* and 6*, but rather remained at 30% at 1* until jumping suddenly to 80% at 6*. This should fix that. -------------------------------------------------------------------------------- d116fae4fa | DracoOmega | 2024-07-27 14:06:51 -0230 Slightly clarify some code regarding kills by Dith shadow mimic Since the revamp, shadow mimic no longer tries to pretend it has the player's MID, so I'm pretty sure it's not necessary to seperate this logic (and the comment is outdated at any rate). -------------------------------------------------------------------------------- 1ab59e17f5 | DracoOmega | 2024-07-27 14:06:51 -0230 Make Dimensional Bullseye default targeter prefer the most distant enemy Instead of defaulting to the closest (which is often pointless). The hope is this is a very minor improvement to QoL when using this spell frequently. -------------------------------------------------------------------------------- 75a34a4cac | DracoOmega | 2024-07-27 14:06:51 -0230 Have Beogh-pacified Orc drop their equipment upon leaving level (Acrobat) Automatically pacifying orcs who were wearing equipment the player wanted could be a sometimes-frustrating experience for Beogh worshippers. The heavy penance Beogh exacts for attacking neutral orcs was intended to discourage the deeply unflavorful act of murdering your converts to steal their stuff, but in practice it was still sometimes possible to body-block their exit from the level and find something else to kill them for you. I'm not sure exactly how often this was practical, or how commonly players actually did this, but at the same time I don't know that 'randomly lose access to a monster's items from time to time' is an especially interesting thing to try and preserve. So now pacified orcs will simply drop all their items when they leave the level. I've tried to flavor this in the most sensible way I could think of (since one assumes they're not completely giving up the sword to live in the woods and still have a use for those items themselves!). But you *are* the possible messiah after all... -------------------------------------------------------------------------------- 5b40a6c5d3 | DracoOmega | 2024-07-27 14:06:50 -0230 Make Arachne's band actually place Due to this oversight, Arachne's band had *never* placed after she was moved outside of Spider, and somehow this never got reported despite her description and dialogue repeatedly mentioned this presence. >.> The multiple buffs she recieved were done under the assumption that her band had been spawning properly all along, but let's see how she performs now that they have finally been reunited. -------------------------------------------------------------------------------- 1bfce1397b | David Lawrence Ramsey | 2024-07-27 10:59:45 -0500 Adjust Crucible of Flesh branch naming. The short name shouldn't have an initial "The" (so the Place: entry doesn't display "a The Crucible"), and the full name shouldn't have its initial "The" capitalised (so artefacts named after it don't have a capitalised "The", as artefacts named after other branches don't). -------------------------------------------------------------------------------- 85759862ca | David Lawrence Ramsey | 2024-07-27 09:46:08 -0500 Fix punctuation. -------------------------------------------------------------------------------- 26e724702a | David Lawrence Ramsey | 2024-07-27 09:24:02 -0500 Don't display Makhleb abilities w/o descriptions. Only brand 1 has an associated god ability description. Attempting to display brand 2 or 3 will erroneously add a "None." to the the end of Makhleb's god abilities list, so skip doing that. Closes #3937. -------------------------------------------------------------------------------- 59ecee1589 | David Lawrence Ramsey | 2024-07-27 08:47:33 -0500 Remove redundant code. Dith's behaviour in describe_god_powers() is the same as the default. -------------------------------------------------------------------------------- 139e194fa2 | regret-index | 2024-07-27 00:48:33 -0230 Some experimental projectile & cloud effect tile placeholders These new tiles are mostly meant to try and reduce Crawl's use of the exact same single cyan blast for effects themed after translocations, metal, lightning, and necromantic effects, alongside a few others. These new effects are for: * Metal Splinters (using roctavian's Sandblast) * Splinterspray and Volley of Thorns (also using that Sandblast) * Force Lance (using snw-0's spell icon for Force Lance) * Harpoon Shot (using roctavian's Stone Arrow and Iron Shot effects) * Ghostly Fireball (using unused Warp Weapon, Guardian Statue, and Kitsune tiles by Denzi, jpeg, and amcnicky) * Calcifying Dust (using snw-0's seething chaos clouds) (The Ghostly Fireball looks a little weird for a fireball but fine for a negative energy effect, and that spell already probably should be joined back to other negative energy themes if it's not going to have the healing effect- even will-o-the-wisps didn't end up becoming undead. This still leaves out Flashing Balestra and Momentum Strike in terms of keeping the blast mostly for lightning effects, but I don't know what to use for the former and the latter is part of a couple different effects that should be adjusted to actually draw the beam at all times instead of only when it misses.) -------------------------------------------------------------------------------- 51ccf8c654 | gammafunk | 2024-07-26 22:12:33 -0500 feat: Extend and clean up a clua debug function For `crawl.stack()`, allow passing a coroutine as an argument, so that we can examine its stack instead of the current clua one. This is necessary for debugging something like qw, which wraps its main execution in a coroutine. I use standard lua functions for checking when an argument is a lua "thread" (lua's terminology for coroutines) and converting a coroutine into a lua state. The approach used in this commit is modeled on what the `debug` library `stacktrace()` function does to examine coroutines, as seen here: https://github.com/crawl/crawl-lua/blob/master/src/ldblib.c#L99 I've tested this with qw, and it works as expected. This commit also removes the request in the call `lua_getinfo()` for the number of upvalues, since this isn't used. It also fixes up and completes the lua documentation of `crawl.stack()`. Resolves #2677. -------------------------------------------------------------------------------- 3a32abd9b4 | mgdelmonte | 2024-07-26 22:03:11 -0500 Add `crawl.stack` function to return the current Lua stack. Committer's Note: Squashed a subsequent bugfix commit that used snprintf since we use a fixed-length buffer. There were concerns expressed in the #crawl-dev channel about allowing introspection from clua, but after looking over this implementation I think it's fine. The `debug` lua library supplied by lua itself does far more than what this simple stack printing function is doing, and probably needs to remain unavailable from clua. The debug information gathered by `crawl.stack` is as minimal as possible, it can only ever look at clua state, and it only ever obtains basic strings about each function's activation record as supplied by the `lua_Debug` struct. -------------------------------------------------------------------------------- c4896267e4 | David Lawrence Ramsey | 2024-07-26 11:19:32 -0500 Add another Donald line for new Makhleb. -------------------------------------------------------------------------------- 35137aee6f | DracoOmega | 2024-07-26 12:40:34 -0230 Add a default force_more for Makhleb offering Marks (ge0FF) -------------------------------------------------------------------------------- 7459a598b3 | DracoOmega | 2024-07-26 12:23:52 -0230 Fix indentation -------------------------------------------------------------------------------- 3eb02839ad | DracoOmega | 2024-07-26 12:23:51 -0230 Don't let the player use Vessel of Slaughter while a vessel of slaughter While the instant damnation blast makes this potentially useful, and it doesn't even extend duration (thus delaying the Crucible), it's not the most intuitive thing and was never intentional. (Also properly mark the ability as disabled inside the Crucible, rather than merely have it abort on using.) -------------------------------------------------------------------------------- 1eedee072e | DracoOmega | 2024-07-26 12:23:51 -0230 Fix %s falsely claiming Vessel of Slaughter gives 'half damage' (ge0FF) A remnant from an earlier iteration. -------------------------------------------------------------------------------- b0f3c1772e | Nikolai Lavsky | 2024-07-26 17:46:44 +0300 fix: don't brand self with a buggy note description Also, remove an unnecessary space and full stop for consistency with other `perma_mutate()` and `temp_mutate()` calls. -------------------------------------------------------------------------------- a2252a6852 | David Lawrence Ramsey | 2024-07-26 08:36:09 -0500 Add more comma fixes (ge0ff). -------------------------------------------------------------------------------- 796cbfd0a2 | David Lawrence Ramsey | 2024-07-26 08:28:35 -0500 Fix wrapping. -------------------------------------------------------------------------------- 309b93d907 | David Lawrence Ramsey | 2024-07-26 08:28:35 -0500 Fix wording. -------------------------------------------------------------------------------- a62e944755 | David Lawrence Ramsey | 2024-07-26 02:23:56 -0500 Fix typo. -------------------------------------------------------------------------------- 5e83875c39 | David Lawrence Ramsey | 2024-07-25 23:57:48 -0500 Fix incorrect comma in inexperienced mutation. -------------------------------------------------------------------------------- f333cd237d | David Lawrence Ramsey | 2024-07-25 23:57:04 -0500 Revert one more incorrectly added comma (DracoOmega). This partially reverts commit d8dc43ca6bb7975a14134bd797f78f8a4c8ebf60. -------------------------------------------------------------------------------- fff831dfa0 | DracoOmega | 2024-07-26 02:18:20 -0230 Fix a crash upon using Vessel of Slaughter (Lightli) This one is sort of amusing, since it didn't crash for me locally. But apparently if you try to call zappy to fill out a beam struct for a zap with no player defined hit/damage values, and are in wizmode, it will *silently* replace those empty values with the monster equivalent zap. But outside of wizmode, it will not (and then promptly assert due to not having any values). And of *course* I do my testing and development in wizmode... >.> -------------------------------------------------------------------------------- e40bc53d54 | David Lawrence Ramsey | 2024-07-25 23:46:29 -0500 Revert some incorrectly added commas (DracoOmega). This partially reverts commit d8dc43ca6bb7975a14134bd797f78f8a4c8ebf60. -------------------------------------------------------------------------------- cde62734c2 | DracoOmega | 2024-07-26 02:00:49 -0230 Fix missing Vessel of Slaughter ability (Lightli) -------------------------------------------------------------------------------- dde1e95dc1 | David Lawrence Ramsey | 2024-07-25 23:22:30 -0500 Add another ghost line for new Makhleb. -------------------------------------------------------------------------------- faf5e19491 | DracoOmega | 2024-07-26 01:33:07 -0230 Flag Brand Self abilities as hurting the player This may not be a sufficiently emphatic warning for how much they hurt, but it's at least better than claiming they cost nothing. (And is about the same as what Kiku's Brand Weapon With Pain ability says.) -------------------------------------------------------------------------------- 4064a0edb0 | David Lawrence Ramsey | 2024-07-25 23:01:36 -0500 Update a few Donald lines for new Makhleb. -------------------------------------------------------------------------------- 7e27316db8 | David Lawrence Ramsey | 2024-07-25 22:48:55 -0500 Add another Makhleb executioner line. -------------------------------------------------------------------------------- e8675a7101 | David Lawrence Ramsey | 2024-07-25 22:42:42 -0500 Rewrap Fugue status description. -------------------------------------------------------------------------------- 08024717e7 | David Lawrence Ramsey | 2024-07-25 22:42:04 -0500 Add comment regarding now-unused ability flag. So it can be more easily reused. -------------------------------------------------------------------------------- d8dc43ca6b | David Lawrence Ramsey | 2024-07-25 22:39:05 -0500 Fix typos/spelling/wording/punctuation. -------------------------------------------------------------------------------- fd94369f82 | DracoOmega | 2024-07-25 23:22:04 -0230 Fix tag upgrade build -------------------------------------------------------------------------------- fed0f14cea | DracoOmega | 2024-07-25 22:56:49 -0230 Update Makhleb powers description a little -------------------------------------------------------------------------------- 54559aaebc | DracoOmega | 2024-07-25 22:56:49 -0230 Save compat code for existing Makhleb worshippers Will set up the selection of Marks, as well as confer a random destruction flavour if they're already at 4* or above. -------------------------------------------------------------------------------- 718c1bd059 | DracoOmega | 2024-07-25 22:56:49 -0230 Nudge up Unleash Destruction's cost and damage -------------------------------------------------------------------------------- c22535738f | DracoOmega | 2024-07-25 22:56:48 -0230 Add a note and milestone for accepting Marks from Makhleb -------------------------------------------------------------------------------- 30a9add2dc | DracoOmega | 2024-07-25 22:56:48 -0230 Add icons for Makhleb Mark mutations/abilities (regret-index) -------------------------------------------------------------------------------- 2c43a06e4e | DracoOmega | 2024-07-25 22:56:48 -0230 Rename destruction flavour mutation enums -------------------------------------------------------------------------------- 07fbe39955 | DracoOmega | 2024-07-25 22:56:48 -0230 Makhleb capstone: Mark of the Fanatic The most flashy and complex mark by far, this grants the player the Vessel of Slaughter ability - a high piety-cost ability that transforms them into a demonic avatar of Makhleb and unleashes a large blast of damnation around themselves as they do so. While in this form, the player has demonic resistances (including torment immunity), will invulnerability, takes 1/3rd less damage from all sources, recieves doubled healing from kills, and has a bonus to all outgoing damage proportional to how low health they were when they activated the ability (with the expected healing from damnation kills encouraging the player to 'push their luck' a little). But in exchange, once the transformation wears off, the player will be dragged into the Crucible of Flesh and made to suffer and slay in payment. The Crucible is a medium-size portal arena that continually spawns waves of hostile demons (scaled to the player's level and also how many runes they have collected beyond 3) and paralyzed mortal victims. The player must earn their exit by finding and slaughtering enough of these victims (killing demons also counts for half as much, but the faster the player can manage it by taking out 'helpless' targets, the less bad things will be for them.) Killing a mortal victim will immediately spawn another somewhere else on the map, while demons instead arrive at semi-regular intervals (up to a cap). Kills in the Crucible grant no xp or items, but still count for Makhleb's heal-on-kills passive, to help allow the player to sustain themselves (since resting will often be difficult here). There are also a small number of single-use teleport traps scattered around which the player can use for short-term escapes. In some ways, the gameplay of the Crucible is reminiscent of being banished, but should still be sufficient different as to be distinct - the map is pre-revealed and stable, it has walls instead of being endless, the monster set is more controlled, ?teleport works the same as usual, etc. A fundamental flavor aspect of Mahkleb's Marks is about accepting hellish bargains at the cost of oneself, and I felt like at least one of them should lean as hard as possible into classical 'deal with the devil' flavour: tremendous power at a cost one may come to regret later. And Vessel of Slaughter's power is undeniable, and its cost unique. I hope people find it fun! (I am sure various numerical knobs will need tweaking, since this is a complex double-edged effect and it should both feel worth it AND dangerous). (I also plan to replace Makhleb wrath with use of the Crucible so that we can fully eliminate all the unsatisfying direct-damage wrath effects that tend to either do nothing or kill the player with little counterplay). Massive credit to regret-index for designing the portal vault (with heavy subvaulting randomization), as well as the Crucible wall tiles and tiles for slaughter form. Couldn't have done this without her. -------------------------------------------------------------------------------- 182a3b3928 | DracoOmega | 2024-07-25 22:56:48 -0230 Mahkleb capstone: Mark of Atrocity This Mark increases both the power and cost of the player's Unleash Destruction ability each time it is used consecutively (ie: without doing anything else inbetween). Upon using it a 4th time, it will also unleash 4 additional empowered bolts of destruction at random distant targets and reset this buff. Some of the additional cost is in flat HP, making this slightly better in relative terms on high HP species. -------------------------------------------------------------------------------- a31ef7ce32 | DracoOmega | 2024-07-25 22:56:47 -0230 Mahkleb capstone: Mark of Execution Allows a fragment of an executioner to rest dormant inside oneself. Whenever you kill an XP-granting enemy in melee, there is a 1-in-8 chance for it to awaken and manifest their iconic whirl of blades around the player. For the duration, the player gains rampaging and a very good aux attack (whose base damage scales with XL) which also triggers upon the player dodging (like minotaur retaliatory headbutts). The duration of this status effect is very brief, but it does not expire for actions that the player spent attacking (allowing one to keep it up indefinitely as long as they keep swinging). -------------------------------------------------------------------------------- 21b3c34ece | DracoOmega | 2024-07-25 22:56:26 -0230 Refactor melee aux attack handling slightly This is to allow performing an individual specific aux attack without needing to perform all the rest of the attack round at the same time. There should be no functional change caused by this commit. -------------------------------------------------------------------------------- 6638cf3674 | DracoOmega | 2024-07-25 22:56:24 -0230 Makhleb capstone: Mark of the Celebrant Whenever a player with this mark is reduced to 50% or less HP, they unleash a flurry of blood arrows aimed randomly at nearby enemies (at least one per enemy, though if there are fewer than 8, it may shoot at the same enemy up to twice, with the remaining shots scattered randomly). Rather than a time-based cooldown, the passive recharges immediately when the player returns to full HP again - which in some situations might even happen due to Makhleb's healing in a protracted battle. To help this slightly, kills made with these blood arrows will always trigger Makhleb's healing passive. Given that it is effectively 'easier' to trigger and recharge with less max HP, and provides an immediately response to help stabilize after spike damage, it is expected this will be relatively more appealing to lower HP / EV-based characters than Marks which rely on paying flat HP instead. -------------------------------------------------------------------------------- 33c4ccffdb | DracoOmega | 2024-07-25 22:32:52 -0230 Remove a couple outdated comments (and some irrelevant code) Exploding spores haven't made monsters beneath themselves in a long time, and likely won't again (certainly not in this manner, at any rate.) -------------------------------------------------------------------------------- 06b347fab1 | DracoOmega | 2024-07-25 22:32:52 -0230 Makhleb capstone: Mark of Haemoclasm This mark gives a passive 10% chance whenever the player kills a monster themselves for it to explode in a violent rain of gore, damaging enemies in a 3x3 area. The damage the explosion does is proportional to the max hp of the thing killed (and cannot harm the player or their allies). If an enemy dies to this explosion, they instead have a 100% chance to explode, allowing for occasional dramatic chain explosions (especially if the player has been using AoE damage sources up to this point, which likely gives it additional synergy with axes and conjurations). -------------------------------------------------------------------------------- ecea4f0a1a | DracoOmega | 2024-07-25 22:32:52 -0230 Different tiles for each flavor of Destruction (regret-index) -------------------------------------------------------------------------------- 9c19790104 | DracoOmega | 2024-07-25 22:32:52 -0230 Mahkleb capstone: Mark of Annihilation Replaces Infernal Servant with Globe of Annihilation, which launches an iood-like projectile that explodes in a large blast of the player's signature destruction. It moves at speed 15 (so about half the speed of an iood), and the size of the explosion increases with the distance travelled: no explosion (and only 1/2 damage) at point-blank range, radius 1 at 1 tile travelled, 2 at 2-3 tiles travelled, and finally 3 at 4+ tiles travelled. Part of the logic of this replacing servant is that while this is a destruction-flavored ability, I didn't want it to completely eat up having a 'free' conjurations button of flexible elements with something much more expensive and less flexible. And it wouldn't play very well with servants anyway, so the loss might not be that meaningful. (I considered it simply being a 3rd ability, but at the moment am saving that for something a bit flashier; I could be convinced otherwise, with testing.) -------------------------------------------------------------------------------- 07ef8100c4 | DracoOmega | 2024-07-25 22:32:51 -0230 Makhleb capstone: Mark of the Legion This mark replaces the player's Infernal Servant ability with Infernal Legion, which gives a status that summons many short-lived demons near the player over time instead. These demons are weaker (equivalent to using Infernal Servant with approximately 1/2 of your Invocations skill), and the ability itself is much more expensive. They will only be summoned while at least one enemy is nearby. This mark also allows you to fire Destruction through your allies without harming them (since they now have a much greater tendency to get in the way at all times), which has some additional synergy with other player builds as well. -------------------------------------------------------------------------------- d15373d040 | DracoOmega | 2024-07-25 22:32:51 -0230 Mahkleb capstone: Mark of Carnage This mark changes how the player's Infernal Servant operates. Instead of summoning a demon near the player, it instead summons that demon adjacent to a random visible enemy and causes a 5x5 burst of destruction where it appears. This burst uses only the 'characteristic' types of the player's Unleash Destruction ability (ie: fire/lava if you have Geh, acid/metal splinters if you have Dis) and cannot inflict damage on either the player or your other allies. -------------------------------------------------------------------------------- f17db963b2 | DracoOmega | 2024-07-25 22:32:51 -0230 Makhleb capstone: Mark of the Tyrant This mark improves the player's Infernal Servant ability, especially at very high invocations. Summoned servants have duration 6 instead of 4, and at 19+ invocations it starts to become possible to summon the other tier 1 demons (with hell sentinels needing ~26) at an additional piety cost. Whenever the player kills an enemy on their own, a random active servant will be buffed with one of: haste, might, brilliance (if they have spells), or regeneration. -------------------------------------------------------------------------------- 258319946a | DracoOmega | 2024-07-25 22:32:51 -0230 Add code framework for gaining Infernal Marks This adds the basic backend for gaining Makhleb's new capstone gift - one of a selection of Makhleb-specific mutations that grant powerful passive effects and/or change how your Makhleb invocations work. At 6*, the player will be offered a choice of 3 different Marks (out of however many exist - currently planned at 9). Selecting one of these will permanently brand the player with it (injuring them greatly in the process...) and give them its effect for as long as they worship Makhleb. The mark will persist as a mutation, even if they abandon the god, but will not actually function unless they start worshipping them again (this prevents any possibility of abandoning to reroll your mutation possibilities, and it's also good flavour that you have to live with the consequences of your actions here.) Forms which normally suppress mutations will not suppress these. (They also cause silver vulnerability - despite otherwise being perma-mutations, they are clearly demonic in origin and ought to count.) None of the marks included in this commit *do* anything yet; that will come in future commits. -------------------------------------------------------------------------------- 2cd86a2a38 | DracoOmega | 2024-07-25 22:32:51 -0230 Merge Lesser/Greater Servant abilities into Infernal Servant As part of the Mahkleb revamp, both demon summoning abilities are being merged together. Infernal Servant is still obtained at 3*, is priced between the two previous abilities, and the quality of demon summoned is now strongly influenced by invocations (and sorted roughly in order of strength, so that it requires more invocations to get executioners and balrugs than other 2s, for instance.) The variety of demons it can summon is expanded to include red devils, ice devils, rust devils, soul eaters, sun demons, and sixfirhy, while losing neqoxecs (which were very weak as allies and unpleasant as enemies). Hostile demons are no longer produced by failing to use this ability, but instead there is a flat 1-in-6 chance that any use of it will produce a durably summoned hostile demon *alongside* your friendly one - along with a small increase in quality of the friendly demon summoned at those times. The hope is this preserves some of the 'deal with a devil' flavor of the ability while making it less correct to 'use at the start of battle and then ?tele if you get a bad roll'. -------------------------------------------------------------------------------- ac1edcbc3a | DracoOmega | 2024-07-25 22:32:51 -0230 Greatly simplify demon summoning from Obsidian Axe With Mahkleb servant summoning changed, the last remaining code using cast_summon_demon() and _summon_demon_wrapper was the Obsidian Axe. This code still retained support for summoning hostile and temporarily-friendly demons (the latter not used since player Summon Greater Demon's removal by f16e6d0322db59044e3995c94cea1b2b62393fd3 ) and imps, almost all of which was unused. The Obsidian Axe doesn't need most of that, so I folded a simpler version directly into the artefact function itself. It should work largely the same as before this commit, with only a very minorly different chance of summoning a 3 vs. 4, and always at duration 6 instead of something like a ~90% of being duration 6. -------------------------------------------------------------------------------- 02c4a77254 | DracoOmega | 2024-07-25 22:32:50 -0230 Merge Minor/Major Destruction into Unleash Destruction Mahkleb was the last god remaining who had a minor/major split among abilities doing largely the same thing (and where the lesser of those eventually becomes almost entirely obsolete as the game goes on.) It makes some sense to merge them to create more room for other exciting toys at higher piety levels. But even though Major Destruction had the lowest piety cost among all abilities in the game that cost piety, Minor Destruction literally cost 0 and there can be a powerful psychological difference between 'free' and 'only almost free'. Some players liked having an ability they could use without long-term cost! But the same time, having something 'freely spammable for limited effect' has some design awkwardnesses, so let's try leaning into the HP cost even more (which is flavorful for Makhleb, and can counterbalance the ability being free in the short-term while still having no *strategic* cost). At the same time, let's introduce a little more chaotic diversity from run to run by having 4 different 'flavours' of Unleash Destruction (themed after each of the Hells) and granting the player a random one of these when they first hit 4* with Makhleb (ie: the same threshold that previously granted Major Destruction.) Unleash Destruction now costs more HP (which scales with the player's max HP) and no longer relies on existing unrelated zap types (which caused periodic issues when one of those was changed, and also made it difficult to even tell what Destruction's average damage was). In its base form, it selects between Fire, Cold, Electricity, and Negative Energy (all dealing the same damage) and is non-piercing. All 4 of the upgrade mutations give it piercing, replace one of these elements with a different thematically- appropriate one, and add an additional property to a base element. In full: Gehenna Destruction: -Fire (which inflicts rF-), Lava, Lightning, Negative Energy Cocytus Destruction: -Cold (which inflicts Frozen), Ice, Lightning, Negative Energy Tartarus Destruction: -Fire, Cold, Negative Energy (with bonus damage!), Devastation Dis Destruction: -Fire, Cold, Lightning, Acid, Metal Splinters (It gets a 5th, since the Negative Energy that gets swapped out is the most frequently useless of the base types and Acid is arguably best) Hopefully this revamped Destruction feels suitably relevant both early and later, a least a little distinct from other blasty invocations such as Qazlal's by being piety-free but self-destructive, and gives a touch more variety between runs. (The player character now also produces blood around themselves whenever they use this or any other Makhleb invocation, as another touch of flavour.) -------------------------------------------------------------------------------- 0afb396884 | Nikolai Lavsky | 2024-07-26 00:15:17 +0300 fix: treat artefacts with Reflection as unusual items The `unusual_monster_items` option is case-sensitive, so the default "reflect" value matched only non-artefacts. -------------------------------------------------------------------------------- 0624b5bc0c | advil | 2024-07-25 14:48:33 -0400 fix: correctly call job-gen.py in Makefile The #! line in this script is the best option, but it's still not going to solve every configuration. In build scripts, it's best to rely on the Makefile's configuration, not the #! value. -------------------------------------------------------------------------------- 342958b4cc | David Lawrence Ramsey | 2024-07-25 13:24:26 -0500 Decouple being a draconian and lacking hair. All draconians are now explicitly flagged as lacking hair. -------------------------------------------------------------------------------- 2eaa09f63e | David Lawrence Ramsey | 2024-07-25 12:59:30 -0500 Use species::skin_name() for flesh peoperly. Check for pluralisation as the species::skin_name() comments suggest. -------------------------------------------------------------------------------- 3489c0331a | Implojin | 2024-07-25 12:31:48 -0500 fix: Draw ghost backgrounds in webtiles This was left out of 767fb09e7d. Thanks again to index for her tiles work here, this seems like a nice improvement! We're missing an unusual background tile for ghosts, but there should be no way for ghosts to have unusual items with the current code anyway: I've defaulted unusual ghosts to have the regular unusual highlight just to let this codepath work properly in the future. -------------------------------------------------------------------------------- 786527281b | David Lawrence Ramsey | 2024-07-25 12:18:39 -0500 Describe flesh as "skin" by default. To match species::skin_name() when possible. -------------------------------------------------------------------------------- c59282bd5f | David Lawrence Ramsey | 2024-07-25 12:14:42 -0500 Actually describe gargoyles' skin as stone. At the species level. This matches statue form as well. -------------------------------------------------------------------------------- db40d755ae | David Lawrence Ramsey | 2024-07-25 12:00:47 -0500 Properly describe gargoyle "flesh" as stone. -------------------------------------------------------------------------------- 47babdb9eb | David Lawrence Ramsey | 2024-07-25 11:58:33 -0500 Fix comment typo. -------------------------------------------------------------------------------- a6c389bb27 | David Lawrence Ramsey | 2024-07-25 11:43:05 -0500 Fix flesh name handling. species::skin_name() is not guaranteed to be either singular or plural, so take a cue from expiring petrification and use "flesh". Use "stone" if we're actually petrified. -------------------------------------------------------------------------------- f0725ce4dc | David Lawrence Ramsey | 2024-07-25 11:14:48 -0500 Properly account for form wrt bandages. Currently only mummies have bandages, and can't be transformed into something without them, but check just in case. -------------------------------------------------------------------------------- 93245fa936 | David Lawrence Ramsey | 2024-07-25 11:07:55 -0500 Add flesh to random body parts. -------------------------------------------------------------------------------- cb7f57b3ea | David Lawrence Ramsey | 2024-07-25 10:10:34 -0500 Properly separate singular/plural body part msgs. -------------------------------------------------------------------------------- f64ed195ed | David Lawrence Ramsey | 2024-07-25 09:59:49 -0500 Add another Xom tail message. -------------------------------------------------------------------------------- b0289f24ba | David Lawrence Ramsey | 2024-07-25 09:57:41 -0500 Adjust a Xom tail message. -------------------------------------------------------------------------------- b31574310d | David Lawrence Ramsey | 2024-07-25 09:54:47 -0500 Add Xom random body part pseudo-miscasts. -------------------------------------------------------------------------------- a3dc3e8338 | David Lawrence Ramsey | 2024-07-25 09:45:56 -0500 Split out body part msgs into their own function. Also separate them into singular and plural options. -------------------------------------------------------------------------------- 2c1b039590 | David Lawrence Ramsey | 2024-07-25 07:38:54 -0500 Shorten -Gavotte status description. -------------------------------------------------------------------------------- 5617537c2f | David Lawrence Ramsey | 2024-07-25 00:47:53 -0500 Remove obsolete Stiff status description. -------------------------------------------------------------------------------- f366dc3c9d | David Lawrence Ramsey | 2024-07-25 00:47:53 -0500 Add missing -Gavotte status description. -------------------------------------------------------------------------------- 767fb09e7d | regret-index | 2024-07-25 02:36:53 -0230 More adjustments to ghost visibility While adjusting the opacity of ghosts is somewhat reasonable, it also heavily diminishes them actually being ghosts, due to their tile otherwise relying heavily on player paper doll tiles, so I'd like to try a bit of a different approach that also addresses one of the core awkwardnesses of ghosts varying heavily versus players over time. Regardless of one's threat display settings, all ghosts now have an wavering gradient overlay aura matching their threat level. This should also help with ghost visibility, while additionally emphasizing them a bit more dramatically than just being a player doll tile but harder to see. (This has the weird side-effect of such an aura wavering if one levels up mid-fight, but clearly they're just being intimidated by the player's power.) -------------------------------------------------------------------------------- a15e480964 | David Lawrence Ramsey | 2024-07-24 21:24:51 -0500 Give felids tails (only cosmetic). Such tails don't do tail-slapping, and can't grow stingers either. Since the felid tiles all show tails, and there's nothing indicating they're e.g. Manx types. -------------------------------------------------------------------------------- c0dcec2120 | David Lawrence Ramsey | 2024-07-24 21:12:46 -0500 Use booleans instead of numbers in has_tail(). -------------------------------------------------------------------------------- 3df9983ad0 | David Lawrence Ramsey | 2024-07-24 21:02:09 -0500 Account for player tails in Xom/body part msgs. -------------------------------------------------------------------------------- 353f8a747c | David Lawrence Ramsey | 2024-07-24 20:45:01 -0500 Remember that players generally have heads. Add "head" to the list of random body parts, since we assume in other messages elsewhere that all players have heads. -------------------------------------------------------------------------------- 55c3cb5494 | David Lawrence Ramsey | 2024-07-24 20:27:11 -0500 Add another acrobatic move to Xom dances. -------------------------------------------------------------------------------- 3ba28113cd | David Lawrence Ramsey | 2024-07-24 20:17:54 -0500 Add @random_body_part_external@. This is the same as @random_body_part@, except that it leaves out blood and bones. (If a species with external blood and/or bones is added, it will obviously need to be adjusted for them.) Make Xom use it in clone drop messages, so that mirrors don't get smashed over parts of the player that should not be on the outside. -------------------------------------------------------------------------------- 6575a434b8 | David Lawrence Ramsey | 2024-07-24 20:07:42 -0500 Account for missing a hand in random body parts. -------------------------------------------------------------------------------- 8bde0a30e5 | DevJac | 2024-07-24 19:44:33 -0500 Distinguish explore mode deaths from Felid deaths By adding a note for the former. [Committer's note: Adjusted commit message.] -------------------------------------------------------------------------------- 5e739b3c72 | David Lawrence Ramsey | 2024-07-24 18:35:15 -0500 Add another mythical creature to artefacts. -------------------------------------------------------------------------------- 081d225295 | Aliscans | 2024-07-24 18:22:55 -0500 Improve wrapping for monster_item_view_coordinates. The "monsters in view" display wraps long lines. It ignored monster_item_view_coordinates when calculating this (except with local tiles), so missed the ends of some lines. It no longer does. -------------------------------------------------------------------------------- d8bda1bd53 | Implojin | 2024-07-24 15:46:09 -0500 Slightly improve ghost visibility Player ghosts were kind of difficult to see in tiles and webtiles, especially Op ghosts, which tended to easily blend with their vault backgrounds. This commit slightly increases the alpha of ghost tiles: r-i had mentioned possibly adding an aura to these to improve visibility as well. More to come in a future commit? -------------------------------------------------------------------------------- 6bbb805001 | David Lawrence Ramsey | 2024-07-24 10:39:50 -0500 Keep the petrified from bleeding (Implojin). If they're petrified, they don't have blood. -------------------------------------------------------------------------------- ab7c848782 | David Lawrence Ramsey | 2024-07-24 10:20:55 -0500 Fix merfolk fishtail checks wrt feet (Implojin). The fishtail should override mutations, and is independent of form, so it needs to go before the mutation check and the usual form check. -------------------------------------------------------------------------------- 4a3ce621dc | David Lawrence Ramsey | 2024-07-24 10:16:28 -0500 Disallow gaining blood w/form changes (ge0ff). So gargoyles/djinn will still be bloodless regardless. This means that no form uses FC_ENABLE for has_blood anymore. (Unless we eventually add a hypothetical blood elemental or the like, which would need it by definition.) -------------------------------------------------------------------------------- 3eefd6cc51 | David Lawrence Ramsey | 2024-07-24 09:50:37 -0500 Fix body part checks for forms (#3935). Don't erroneously fall through and use the species body part if the current form doesn't have it. Also, actually use form_has_feet() instead of only checking for the merfolk fishtail. Closes #3935. -------------------------------------------------------------------------------- 1d9136647e | David Lawrence Ramsey | 2024-07-24 07:47:53 -0500 Fix spelling (sulfur -> sulphur) (Graveyardigan). -------------------------------------------------------------------------------- 0c0b0355b8 | David Lawrence Ramsey | 2024-07-23 18:08:41 -0500 Fix spelling. -------------------------------------------------------------------------------- d06570b3e2 | regret-index | 2024-07-23 20:26:15 -0230 New Alchemist starting-screen icon (Darby) Venom Mage's spider was better than the encircled half-box Transmuters used by being more material, but something a little more specifically alchemical like this nice potion is fairly better for it. Now if only it didn't take until L8 Conjurations / Alchemy to get a potion-themed spell. (There's always next version....) -------------------------------------------------------------------------------- 6311a4899b | regret-index | 2024-07-23 19:04:02 -0230 New Xom action: wave of despair Xom already copies a variety of potions as one of the most common effects granted to the player, so why not also some of the more tactically interesting scrolls? In particular, one of the tension spells is using a much weaker version of a consumable, so it's a good idea to make it a little more recognizably distinct. This new rare beneficial action is meant to be dramatic in a different sense than prior debuffs or destruction by combining a few effects together at once. After Xom tells a spooky story, inanimate skeletons pop out, and the ensuing wave of horror halves will, then drains, then fears everything else in sight. The Will/2 state lasts fairly longer than the fear, making it so stabbers can use other hexes if possible once they start chasing the player again, and also applies to the player, so there's still some risk around the right monsters as Xom should always readily wield. (To help make this a bit more visible, I added a quick Will/2 status icon derived from the current scroll of vulnerability icon.) Consequentially, Cause Fear has been replaced in the Xom tension spells list with Dazzling Flash (which is weak, but not much weaker than Small Mammals already is) and Summon Blazeheart Golem (which has a cute "suddenly handed a bomb" mechanical capacity). -------------------------------------------------------------------------------- 7af4bb0ebb | regret-index | 2024-07-23 17:33:16 -0230 New Xom action: friendly + hostile clone drop Another hostile Xom effect meant to naturally inherently scale and vary across games in a relatively straightforward fashion while providing further variety, this rare Xom effect differs from other hostile summons by giving you a free ally! Unfortunately, it's outnumbered- this effect summons brief two hostile illusions and one friendly illusion, with the single real player balancing these teams. While ghost-illusion code continues to lag behind on ranged characters and early spellcasters for more important uses of it- Nemelex's Illusion card, player ghost vaults, and Mara each- Xom cloning the player imperfectly in this notably rare action should feel reasonably fine with Xom's chaotic malevolence anyway. (Having both friendly and hostile copies should make it feel reasonably different than any of those circumstances, also). Part of its rarity includes 1: being only done with other monsters around, so there's any incentive to fight with the free ally if possible, and 2: actually having a maximum tension cap, so that the illusions don't get overshadowed by other ways one might be dying anyway. -------------------------------------------------------------------------------- b48ef885c9 | David Lawrence Ramsey | 2024-07-23 14:52:07 -0500 Fix typo. -------------------------------------------------------------------------------- 1cace68bb9 | DracoOmega | 2024-07-23 17:21:15 -0230 Give the orb dais a proper feature type name (ge0FF) -------------------------------------------------------------------------------- b95f67303f | David Lawrence Ramsey | 2024-07-23 14:47:54 -0500 Unbrace -------------------------------------------------------------------------------- a363cd56c6 | DracoOmega | 2024-07-23 17:12:41 -0230 Don't ever claim the orb dais is '(summoned)' (ge0FF) Using a terrain change effect on top of the dais wouldn't change it, but would still place a map_terrain_change_marker there, resulting in Crawl confusingly claiming that the pre-existing feature had been 'summoned'. Now just don't place a marker there at all. -------------------------------------------------------------------------------- 5f6dd93176 | DracoOmega | 2024-07-23 17:12:41 -0230 Remove an unnecessary use of item_def::is_critical() I believe this was once to prevent Xom from making you drop critical items from your inventory, but all that would do now is print a harmless flavour message about the item (and since runes and the orb were goldified, I don't think it even does this anymore!) -------------------------------------------------------------------------------- 83d8b1f7ab | DracoOmega | 2024-07-23 17:12:41 -0230 Mark gems as critical items (ge0FF) A little light future-proofing against them potentially being destroyed by terrain changes. -------------------------------------------------------------------------------- 44e0ba907c | Implojin | 2024-07-23 14:28:17 -0500 fix: don't hide the orb in console The orb dais feature was preventing the orb from being drawn in console. Easy enough to fix! -------------------------------------------------------------------------------- f20c09c4ad | DracoOmega | 2024-07-23 15:16:09 -0230 Remove a now-unused include -------------------------------------------------------------------------------- dfbe08ab73 | DracoOmega | 2024-07-23 15:04:19 -0230 Place the Orb of Zot on an untransformable dais When b22d4219adc6 was done to address Hellfire Mortar cheese, I didn't fully consider all the different effects that might cause the orb to be displaced without the player anticipating this. While it's arguable that Xom starting the orb run without warning is just Xom being Xom, it also seemed likely that casting Summon Forest near the orb could randomly do so, as well as Imprisoning a monster adjacent to the orb, and likely other things. Starting the orb run unexpectedly is a nasty surprise, so instead of doing that whenever the orb is displaced by (possibly unintentional) terrain changes, let's just veto all terrain changes beneath the orb's original location entirely (by giving it a special pedestal feature that is immune to such things). -------------------------------------------------------------------------------- 16c7f17c50 | DracoOmega | 2024-07-23 14:55:57 -0230 Don't be content with shifting items into closed doors When trying to relocate an item because the terrain beneath it changed, any 'traversable' square that doesn't destroy automatically destroy items (ie: lava) was considered an adequate place to put them. But closed doors are considered traversable only because they *can* be opened, not because they aren't solid right now. -------------------------------------------------------------------------------- a91aa3b054 | DracoOmega | 2024-07-23 14:54:09 -0230 Don't let Xom door rings destroy items It was only intended that the door push items out of the way, rather than destroy them altogether. This fixes #3932 -------------------------------------------------------------------------------- 4f39dfde82 | David Lawrence Ramsey | 2024-07-23 08:19:09 -0500 Add another noisy hell message. -------------------------------------------------------------------------------- d1fa21d13b | Neil Moore | 2024-07-22 21:45:15 -0400 Fix extra percents. -------------------------------------------------------------------------------- 81e4515041 | Neil Moore | 2024-07-22 21:41:30 -0400 Re-arrange artefact weapon animal names. -------------------------------------------------------------------------------- 922ebfbbec | Neil Moore | 2024-07-22 21:29:11 -0400 Add more insects and other crustaceans as artefact names. [skip ci] -------------------------------------------------------------------------------- 262b726ed5 | Neil Moore | 2024-07-22 19:32:53 -0400 Add amphibians to randart names. The section supposedly half-devoted to them didn't have a single one. [skip ci] -------------------------------------------------------------------------------- 0219e330f3 | Neil Moore | 2024-07-22 19:05:25 -0400 Add some arachnids and reptiles as artefact names. [skip ci] -------------------------------------------------------------------------------- ebc898e6fd | David Lawrence Ramsey | 2024-07-22 17:55:20 -0500 Add another bird name to artefacts. -------------------------------------------------------------------------------- 3dcc86864f | Neil Moore | 2024-07-22 18:51:07 -0400 Add more ratites. Especially emus, who famously managed to defeat a military expedition. [skip ci] -------------------------------------------------------------------------------- c53ba1435b | Neil Moore | 2024-07-22 18:43:55 -0400 Add more birds to artefact names. A few of which, but not most, are native to Australia. Also, move "Fulmar" to be in correct alphabetical order. [skip ci] -------------------------------------------------------------------------------- f39ece730e | regret-index | 2024-07-21 19:12:25 -0230 * All three of Xom's divinations are now crunched together into one effect. Each individual component frozen in time doesn't really provide much for useful strategizing, and this also helps those with less spoilers tell where vaults are by adding creatures to the magic mapping. (Also, detect creatures using only creature genera is kinda funny anyway.) In exchange, these divinations are slightly less likely to occur, swapping positions with the already-enticingly-variable and scaling tension spells. * Xom's sticky ignition, divine lightning, force lance fleet, tension spells, and friendly / hostile monster summons all now softly scale with runes 5 through 15 so Xom is more noticeable throughout extended. * Xom's ally and hostile summoning now also gets rare bunyips and always-chaos-branded reapers, since the top end needs a bit more variety overall and the latter combines the undead + demon options reasonably nicely. Hostile summoning in general has also been tweaked again: more distance if you're in wrath with less monsters (as the new upgrades have been a bit aggressive sometimes), and less distance without wrath (as it's a little too easy to run away otherwise). * Xom's decor list now includes one-use teleport traps, since it coincides with other translocation Xom effects and it provides a bit of interesting upside to have a few to fall back upon, without ever interrupting full level connectivity in a troublesome fashion. * Xom's fake shatter now drops some sparse large rocks for decorative purposes and other Xom vault correspondence, as well as a consolation prize for Oni and Trolls. * A variety of Xom's rarer good actions are now slightly more likely to happen, period, to compensate for the list of new actions making it less likely Xom will give strategic benefits like items or good mutations. Ideally nearly all of _xom_chooses_good_action and severity alike would be completely revised for a regular random weighting function, while strategic effects would be collected up and timed entirely seperately of Xom's random tension-tracking actions (incidentally also dealing with xomscumming at the same time), but for now, Xom acting slightly more often is fine since over a third of Xom actions have been freshened up and made more variable at this point. -------------------------------------------------------------------------------- 1273c59209 | dependabot[bot] | 2024-07-21 20:30:08 +0200 Bump zipp in /crawl-ref/source/webserver/requirements Bumps [zipp](https://github.com/jaraco/zipp) from 3.18.1 to 3.19.1. - [Release notes](https://github.com/jaraco/zipp/releases) - [Changelog](https://github.com/jaraco/zipp/blob/main/NEWS.rst) - [Commits](https://github.com/jaraco/zipp/compare/v3.18.1...v3.19.1) --- updated-dependencies: - dependency-name: zipp dependency-type: direct:development ... Signed-off-by: dependabot[bot] -------------------------------------------------------------------------------- abeaff3f86 | Medrano83 | 2024-07-21 18:48:40 +0200 Update Android SDK - API level 34 Starting August 31, new apps and app updates must target Android 14 (API level 34) to be submitted to Google Play. https://support.google.com/googleplay/android-developer/answer/11926878 -------------------------------------------------------------------------------- bf73d41ef1 | Implojin | 2024-07-21 09:42:24 -0500 Fix a teleport closet in water_maze_lemuel Looks like this was a minor oversight in d77652238, we were trying to place a hatch and some teleport scrolls here without a corresponding glyph. -------------------------------------------------------------------------------- 1906822081 | David Lawrence Ramsey | 2024-07-20 13:42:52 -0500 Add another gizmo entry. -------------------------------------------------------------------------------- 91f3fefd7d | David Lawrence Ramsey | 2024-07-20 13:41:32 -0500 Fix spelling. -------------------------------------------------------------------------------- ca01da35c6 | patrick | 2024-07-20 14:17:32 -0400 Increase Coglin gizmo-related vocabulary After consulting with a consortium of Coglin engineers, we have learned a great deal about their technology, and accordingly we have been able to expand the technical language used in Crawl to describe their magnificent gizmos. In other words, I added a few entries to gizmo.txt, including both real-world technical jargon and technobabble memes. Just a few. Some of the names thus generated may seem redundnant -- it's possible to get, say, an "autoautomatic autolator" -- but remember that Coglin technology is very advanced, and their terminology must be very precise to include all the nuances of meaning, which sometimes appears as redundancy to lesser minds. Thank you for understanding. -------------------------------------------------------------------------------- 2a440f7bdf | regret-index | 2024-07-19 21:08:43 -0230 Ever-continuous widespread vault review Of note: * A few undying armouries have been snuck into a few Crypt ends, as they're 1: undead, 2: a bridge between the various constructs old Crypt ends used before Crypt had more undead and the undead in Crypt, and 3: work well with vampires as several Crypt end sets try to make work despite the vampire presence in Depths. They're only in a few of these vaults, so they'll still mostly stay highlights of V:$ and Cerebov's level, regardless. * _qazlal_generations has become another rare D:$ depths entrance vault. * sewer_co_15_rooms now actually provides a potion of enlightenment to enter its center room, and grunt_spider_rune_island no longer can roll a chance to need flight or digging to acquire its rune. * volcano_pools has been adjusted to make it so no starting positions can see the main center eruption point, so people quickly diving into a volcano and then resting up won't be engulfed in flames. * Troves that focused on jewellery now also provide a pair of random talismans with increased randart weighting the lower tier they are, to help out shapeshifters without excessively increasing the value of troves for most other characters otherwise. This matches up with talismans being sold in jewellery shops. * One evocations trove designed before evokables became singular items also now also provides talismans and higher overall wand quality, and a trove that focused on providing four weapons each of four different brand now uses Lua to place much higher quality equipment than before (but still has no guarantees it matches up with one's own weapon skills). For the record, we should avoid using "any weapon" in troves without either heavy Lua or as a weighing down of "acquire weapon", because "any weapon" loves constantly going for D:1 kobold and goblin gear. * Two nearly-or-literally identical Ziggurat entries were crunched together, and a quick new one was added for variety's sake. -------------------------------------------------------------------------------- 20967cede3 | Nikolai Lavsky | 2024-07-19 16:56:54 +0300 fix: time out a few more statuses when returning to a level Continuing from 116ff8c4a, make a few more monster enchantments time out while the player is off-level. Affects most noticeably the Snake Pit and Elven Halls, where the player could return to a previously visited floor and find that buffs of nearby monsters didn't expire after hundreds of turns. -------------------------------------------------------------------------------- 3cb1da796b | David Lawrence Ramsey | 2024-07-18 22:18:35 -0500 Add missing -GClaw status description. -------------------------------------------------------------------------------- b744d034b2 | David Lawrence Ramsey | 2024-07-18 15:51:31 -0500 Add another Xom flora message. -------------------------------------------------------------------------------- 41f0f79244 | David Lawrence Ramsey | 2024-07-18 13:15:48 -0500 Document holy/unholy brand wielding changes. -------------------------------------------------------------------------------- 3d9f9bc62a | David Lawrence Ramsey | 2024-07-18 10:11:50 -0500 Add another substance name to artefacts. -------------------------------------------------------------------------------- 74a7a6101b | David Lawrence Ramsey | 2024-07-18 10:06:54 -0500 Drop "THE_" from the Enchantress' enums. Since the other monsters with "the" names don't include it. -------------------------------------------------------------------------------- 2231033d06 | David Lawrence Ramsey | 2024-07-18 09:48:14 -0500 Make unique_name() handle the Enchantress. -------------------------------------------------------------------------------- c619bd7f2a | David Lawrence Ramsey | 2024-07-18 09:48:14 -0500 Fix indentation. -------------------------------------------------------------------------------- ea9f75d149 | David Lawrence Ramsey | 2024-07-18 01:40:29 -0500 Add another colour to the database. -------------------------------------------------------------------------------- bcf935ffba | patrick | 2024-07-17 23:42:44 -0400 Add a quote for Magic Dart -------------------------------------------------------------------------------- 071218b31a | regret-index | 2024-07-17 23:24:07 -0230 Make tension track more statuses from both players and monsters For the most part, the tension formula hasn't been adjusted since e11a346 fourteen(!) years ago. It's an extremely imprecise formula in a multitude of ways- it doesn't know the actual attack or spell ranges of any given monsters, anything about monster support capacities, the path and presence of spell components like clouds or ramparts or prisms, the players' and the monsters' resistances, and so on and so forth. It somewhat works as a very simple way to track the density of hostile monsters present versus one's own health, but would be quite burdensome to make be actually reasonably good at guessing much more than that. As a result, we've tried to use it for less and less actually meaningful roles over time. Currently it's most prominent for reasonably informing Xom of when to act, whether or not to forbid Beogh's apostle challenges, and if a vault warden should close a given door or not, all of which are reasonably relevant enough that they should reasonably work regardless of how little we'd want to use tension elsewhere. While I'm not pushing for making tension actually become more unweighty and lengthy, it's currently already supporting a number of enchantments on players and monsters, and an update for all of the particularly dramatic new effects added over the past 14 years should be reasonable to quickly work into what already exists. (For reference's sake, slow counts for x1.5 tension, being netted or webbed is x2 tension, and of course none of this matters if there's nothing hostile in sight.) * Players with corrosion get a scaling multiplier for each point of corrosion they have on them. * Players at 10% or lower mp adds a x1.125 multiplier. * Player mesmerization and fear adds a x1.2 multiplier. * Players that are fragile, have the -Potion status, or the -Scroll status get a x1.33 multiplier. * Players that are marked, attractive, unable to cast due to Sap Magic, in bat form, or in wisp form get a x1.5 multiplier. * Players in fungus, pig, or tree form get a x1.66 multiplier. * Monsters that have brilliance or are armed by an undying armoury get a x1.25 multiplier. (The only particularly controversial point here is most likely MP, but most gods use MP for invocations even on non-spellcasters, tension is fuzzy anyway, and most reliable mp drainers should have some reasonable threat to them also, so it's probably fine. There's a long list of absent bits here- sticky flame and poison are the most conspicuously absen-, but this probably shouldn't go for much else not added here, since most of the above are player-option-limiting in some obvious dramatic fashion or another.) Since most of what relies on tension is both invisible and randomized for most players, this shouldn't be too concerningly gameable or complex. Zapping one's self with polymorph, drinking attraction, and drinking lignification are all now technically options for grabbing Xom's attention or delaying an apostle challenge, but this is quite unlikely to make things net better than if one did not in fact do any of these things. The player also could have just hurt themselves instead to get the same rough circumstances change. What this does mean, however, is that Xom should feel fairly more proactive in a wider number of scenarios and Beogh will send challengers in less awful situations, which is plenty enough gain for both gods to probably be worth a page's worth of easily-adjustable and easily-removable checks. (Others may quibble about these exact values. Future commits may change any of these multipliers' strength.) -------------------------------------------------------------------------------- a06d8ee8d1 | regret-index | 2024-07-17 20:36:29 -0230 Adjust each Serpent of Hell The Serpent of Hell hasn't changed much since 06872b5, which lets even an extended-only unique of four manifestations provide reasonable statistical data for assessment It also means the context of the Hells has changed around them a fair bit around them, and while we don't need to make every Hell be competively close to one another, it does highlight a few strange bits. In particular, the Tartarus Serpent uses corrosion despite the fact Dis directly uses such multiple times, and the Gehenna Serpent lagging behind the others is more pressing now that Gehenna fell behind the other hells with the 0.28 hells overhaul. This commit adjusts most of the Serpents' potential breaths: * Tar: Bolt of Draining 🡲 Ghostly Fireball, Corrosive Bolt 🡲 Poison Arrow This frees up Corrosive Bolt for Dis, while leaning a little on the poison attacks of putrid mouths plus the extra miasma in the branch since the 0.28 overhaul. In exchange, since Bolt of Draining directly out of the Serpent's mouth hasn't killed anybody in 15 versions, that's swapped out with Ghostly Fireball to let it at least skip EV. * Dis: Metal Splinters 🡲 Corrosive Bolt, Crystal Spear 🡲 Iron Shot The hell that automatically corrodes those who enter should be the hell with the Serpent that breathes corrosion. Caustic shrikes already made it valuable to keep rCorr on anyway, so it shouldn't be too worriesome to upgrade. Crystal Spear has been swapped out for Iron Shot to deal flatly less damage, with the range difference not matter too much due to each serpent being speed 14. * Geh: Flaming Cloud 🡲 Bolt of Magma Flaming clouds don't scale at all with the rest of the game, so the breath attack barely matters in the Hell one is most likely to have fire resistance in. Magma at least is partially irresistable, without being quite as devastating as Damnation is. Also, the Cocytus and Gehenna Serpents now get equal health with the other two Serpents (from ~280 HP to ~323 HP), since those are the two worse performing Serpents and they're already more than differentiated enough on most other levels. The Dis Serpent, meanwhile, loses a little AC and EV, mostly to help subdue Dis that little bit more and compensate for the Metal Splinters replacement. (This does mean the Cocytus one keeps the strangely low-power Freezing Cloud breath, but it's getting a health buff here and its Flash Freeze was buffed by both a0a6642 and f3e26c5, so its broader term stats should probably equal out over more time.) -------------------------------------------------------------------------------- b72f62450a | regret-index | 2024-07-17 18:16:46 -0230 Give ?/b a tile for Arena Just Okawaru's altar, which is kind of silly but fairly less silly than showing off a question mark for a place that uniquely doesn't have a normal regular entrance feature for it. -------------------------------------------------------------------------------- 0268064b0c | regret-index | 2024-07-17 17:47:06 -0230 Add "any hex wand" shorthand This lets vaults and wizmode use the seed's hex wands slot with "any hex wand" like "any beam wand" and "any blast wand" do, which seems to have been accidentally left behind when c28e0ee left out what 376ae5a and a4b73df did. -------------------------------------------------------------------------------- ad30c92003 | David Lawrence Ramsey | 2024-07-16 16:53:09 -0500 Tweak "Brilliance"'s deescription again. Specifically mention the dark energy instead of saying "it"; "it" could erroneously refer to the weapon instead. -------------------------------------------------------------------------------- a504a9fe27 | David Lawrence Ramsey | 2024-07-15 23:08:22 -0500 Fix typo. -------------------------------------------------------------------------------- b736c3cf91 | David Lawrence Ramsey | 2024-07-15 22:38:57 -0500 Fix the message naming unique simulacra (#3887). Use the species name for uniques in such messages. If you make simulacra out of the Enchantress, you get Enchantress-shaped blocks of ice that turn into spriggan simulacra; make the message reflect this. This also avoids problems with naming simulacra after uniques with names starting with "the". Closes #3887. -------------------------------------------------------------------------------- 7c789dabc8 | David Lawrence Ramsey | 2024-07-15 22:19:24 -0500 Fix some Enchantress naming issues (#3887). As a monster with a name starting with "the", she was only handled properly in name_zombie(). She wasn't handled properly in either monster naming or polymorphed monster naming; Although there has to be a better way than hardcoding it for all those cases. -------------------------------------------------------------------------------- 30ed0ade3c | David Lawrence Ramsey | 2024-07-14 16:20:27 -0500 Simplify Xom pseudo-miscast feature checks. Use feat_is_statuelike() and feat_is_tree() for the cases where they apply. Accordingly, rename the Xom message key "Xom feature statue" to "Xom feature statuelike". -------------------------------------------------------------------------------- 86621e3b08 | David Lawrence Ramsey | 2024-07-14 16:15:07 -0500 Fix comment typo. -------------------------------------------------------------------------------- e9b8def293 | David Lawrence Ramsey | 2024-07-14 13:10:25 -0500 Vary the number of times Xom makes you do stuff. Always using three is boring. Vary from two to six instead. Also use this for the number of extra fingers Xom makes gloves grow. -------------------------------------------------------------------------------- 5bdad0bed3 | David Lawrence Ramsey | 2024-07-14 12:46:45 -0500 Add more dance moves to Xom messages. Accordingly, handle hand and foot substitutions in such messages. Hand(or whatever)stands may get a bit odd for certain types of @hand@, but... it's Xom. -------------------------------------------------------------------------------- 665319e8ad | David Lawrence Ramsey | 2024-07-14 12:25:06 -0500 Rename Xom message key from "two eyes" to "eyes". To make it match the other pairs-of-body-parts tags. -------------------------------------------------------------------------------- 1bc7ac4a97 | David Lawrence Ramsey | 2024-07-14 11:45:18 -0500 Add purple vine stalker player base tiles. For a little more variety. These are just palette-tweaked versions of the red ones. -------------------------------------------------------------------------------- 3abdcd505c | David Lawrence Ramsey | 2024-07-14 09:28:54 -0500 Add Xom pseudo-miscast messages for trees. -------------------------------------------------------------------------------- 41815e7850 | David Lawrence Ramsey | 2024-07-14 09:09:07 -0500 Simplify atropa blindness checks. We only need to check for blindness resistance once, whether player or monster. -------------------------------------------------------------------------------- 815c66556a | David Lawrence Ramsey | 2024-07-14 08:59:32 -0500 Fix blinding-related crash (NormalPerson7). Don't treat the player as a monster if they can't be blinded. -------------------------------------------------------------------------------- 0dbcb5d558 | David Lawrence Ramsey | 2024-07-13 20:28:44 -0500 Add a few more types of evil to artefacts. -------------------------------------------------------------------------------- 1e61e2beae | David Lawrence Ramsey | 2024-07-12 23:21:10 -0500 Add a few acrobatic moves to Xom's dances. -------------------------------------------------------------------------------- c1d8bbef5d | David Lawrence Ramsey | 2024-07-12 23:07:28 -0500 Add another microorganism name to artefacts. -------------------------------------------------------------------------------- 2721c5bb2a | elliptic | 2024-07-12 13:36:13 -0400 Allow randart launchers to have chaos or holy brands (rarely) It wasn't clear to me why these were forbidden - chaos is a possible result from brand weapon scrolls on launchers and TSO can holy brand launchers, so there's no implementation concern at least. The weight here has been taken from speed (now 75% as common as it used to be) and antimagic (now 50% as common as it used to be). The remaining forbidden brands on randart launchers are venom, protection, pain, spectral, and distortion. For reference, here are some brief arguments for why each of those should probably remain forbidden: - venom: would encourage a lot of kiting, since venom weapons max out monster poison quickly - protection: defenses are less relevant/interesting when at range - pain: ranged is awkward with necromantic allies since can't shoot through them - spectral: positioning is less interesting than with melee, and the spectral weapon is less likely to take damage from monsters - distortion: currently even Lugonu is forbidden from disto-branding a launcher - would turn one of distortion's major downsides, blinking monsters away, into an advantage -------------------------------------------------------------------------------- 99b34a318c | patrick | 2024-07-11 20:05:13 -0400 Update Big Baal Hell's to use artprops Specifying armour randarts with egos gives display bugs; the ego property gets listed twice. Fix that by using the artprops feature for what it was meant for: generating randarts with a specific property (that randarts are supposed to have). While I'm here, make all the gear into randarts, not merely good_item, and touch things up in a few other places. -------------------------------------------------------------------------------- 17eea93bd4 | patrick | 2024-07-09 22:23:11 -0400 Clear out the Clear Minds Boutique There were two shops using the gimmick of having randarts with properties that can't normally generate: Clear Minds Boutique and One-of-a-Kind Rings. This is a bit much for a gimmick that's already on the edge of what these people let me get away with. Clear Minds was made entirely as a proof-of-concept while gammafunk was implementing artprop specification syntax, while One-of-a-Kind Rings already existed before then and has a stronger theme. Also, by only generating one such randart, One-of-a-Kind Rings is a little less egregious with its gimmickry. Accordingly, Clear Minds is getting cut. While I'm rummaging around in shops.des, One-of-a-Kind Rings is also getting an inventory tweak: the HP and MP artprops get their higher ends toned down somewhat. -------------------------------------------------------------------------------- 162e8f4579 | Nicholas Feinberg | 2024-07-09 16:22:41 -0700 Set up a nine-month-long gag (ploomutoo) It's like April Fools in July! -------------------------------------------------------------------------------- df7db63c15 | David Lawrence Ramsey | 2024-07-09 00:19:24 -0500 Remove another reference to ears. -------------------------------------------------------------------------------- 3855256e49 | DracoOmega | 2024-07-08 21:38:50 -0230 Fix an obscure crash with tgw_kikubaaqudgha This vault used lua to place a miasma cloud, killing a caged human and 'raising' them as a zombie. A script called upon the human dying deleted the cloud they were standing in, but due to a change introduced in c0b93f29f480c8b389dd038c0c571e0ef521d79d it was now possible for them to die before _actor_apply_cloud was finished looking at that very cloud which it still maintained a reference to, resulting in undefined behavior. Despite what the lua comment says, the presence of the cloud does not actually prevent placing a zombie there (perhaps it did when the comment was written 13 years ago), so let's just not delete it. -------------------------------------------------------------------------------- 281234c535 | David Lawrence Ramsey | 2024-07-07 11:44:43 -0500 Properly check for unsigned char range (oops). Instead of casting and comparing (which will fail if the casted value coincidentally ends up in range), use UCHAR_MAX. -------------------------------------------------------------------------------- 484b3ae991 | David Lawrence Ramsey | 2024-07-07 11:34:39 -0500 Remove duplicate word in comment. -------------------------------------------------------------------------------- 64a9791703 | David Lawrence Ramsey | 2024-07-07 11:31:02 -0500 Avoid crashing at Yes/No/All prompts. If the key is out of range, act as though we hit Escape, as we do with other non-alpha keys there, instead of causing undefined behaviour in isalpha(). Closes #3505. -------------------------------------------------------------------------------- 582db3b95e | David Lawrence Ramsey | 2024-07-07 10:37:07 -0500 Consistently use python3 in scripts (Aliscans). -------------------------------------------------------------------------------- da96e870eb | David Lawrence Ramsey | 2024-07-07 09:10:25 -0500 Fix spacing. -------------------------------------------------------------------------------- bbbd308e8c | David Lawrence Ramsey | 2024-07-07 09:03:45 -0500 Add a quote for the Malign Gateway portal. -------------------------------------------------------------------------------- 1c079de84e | David Lawrence Ramsey | 2024-07-07 08:34:12 -0500 Fix fire crab quote. -------------------------------------------------------------------------------- 888de62073 | David Lawrence Ramsey | 2024-07-07 08:22:22 -0500 Fix more unused variable warnings. -------------------------------------------------------------------------------- 677be5308e | David Lawrence Ramsey | 2024-07-07 08:15:17 -0500 Remove unused variable (geekosaur). Closes #3911. -------------------------------------------------------------------------------- 9e1b529eb0 | elliptic | 2024-07-07 08:04:55 -0400 Fix HW's Conj starting skill being accidentally changed to 1 (acrobat) (This was accidentally changed by 17d8ae0d.) -------------------------------------------------------------------------------- 51ab8bf2ec | David Lawrence Ramsey | 2024-07-06 01:38:20 -0500 Remove Terence quote. Since he's been reflavoured from a murderer to a veteran, a quote about a murderer no longer fits. -------------------------------------------------------------------------------- 494059ca46 | regret-index | 2024-07-06 03:41:49 -0230 Quick generic mutation icon placeholders To help some filter out mutations more easily on the A menu, this adds generic icons each for good mutations, bad mutations, Jiyva mutations, and Demonspawn mutations. The categories should provide a bit more immediate usefulness compared to the generic pawprint monster spells frequently rely upon, at least. This mostly tries to avoid innate species mutations (since it's not great to confuse them for other temporary mutations one has), and also Ru's sacrifices (since I didn't have much for ideas that didn't involve basically making the entire set). I might eventually get ideas for following up further on either. Tile used: CanOfWorms' mutation resistance icons, aidanholm's Malmutate icon, snw-0's Summon Demon icon, and Denzi's edible royal jelly tile. -------------------------------------------------------------------------------- 52db497177 | regret-index | 2024-07-06 03:29:03 -0230 New Xom action: fake Shatter An rather rare action meant to provide more uniquely Dungeon-altering material as Xom alone can abuse, in the veins of c695c3f and f441f4b. This action has a few changes from Shatter: it has much worse odds to destroy most features beisdes doors or diggable objects (enough to make it much more likely Xom will malmutate, banish, or teleport people hoping Xom will cut through a vault for them), it leaves behind piles of debris in the rock or stone features it destroys, and most importantly, it doesn't actually do any damage- but it still makes one of the loudest noises in the game. The singular nature of the random destruction is somewhat neutral, really- thinner corridors become wider, opener areas may produce new corridor veins out of them, rooms may break open, and it's slow for all but the last of these to matter much in one combat due to the slowly withering nature of debris- but the extreme of a proper (fake) shatter still marks it as a net bad effects. It's a reasonable joke, at any rate, for Xom to do something unique. -------------------------------------------------------------------------------- 1167860672 | David Lawrence Ramsey | 2024-07-05 15:47:16 -0500 Show aux hoof/talon base damage (CrawlOdds). Whether or not it's blocked by wearing boots. Closes #3779. -------------------------------------------------------------------------------- 39ae1f09f9 | David Lawrence Ramsey | 2024-07-05 08:37:18 -0500 Prevent casting BVC on oneself (CrawlOdds). Closes #3901. -------------------------------------------------------------------------------- c50a736680 | David Lawrence Ramsey | 2024-07-05 08:13:59 -0500 Properly represent coglins in one more place. All player species were represented in a few vaults where they're caged up, but not in this one. -------------------------------------------------------------------------------- 83a2a37392 | David Lawrence Ramsey | 2024-07-05 08:02:41 -0500 Remove plant holiness from Maurice (ge0ff). Added accidentally. -------------------------------------------------------------------------------- 89fc517f9a | DracoOmega | 2024-07-05 04:25:40 -0230 Fix Grave Claw no longer recharging after dying as a felid (Doctor Sulfur) -------------------------------------------------------------------------------- 4f90109601 | David Lawrence Ramsey | 2024-07-05 00:23:17 -0500 Update docs for new species flags. -------------------------------------------------------------------------------- 7c36963bb8 | NormalPerson7 | 2024-07-04 23:54:13 -0500 Use plaintext for more things in species and background YAML files Change the background YAML files to use plaintext for the recommended species and skills fields, and the species YAML files to use plaintext for the recommended jobs, flags, undead, and recommended_weapons fields (for consistency). The only enum values remaining are the species' corresponding monsters and the backgrounds' starting spells, which probably ought to remain enum values as they don't always correspond to their in-game names. Hardcode job-gen.py to allow writing simply 'draconian' in the yaml recommended species field instead of 'base draconian', where the enum value is SP_BASE_DRACONIAN. -------------------------------------------------------------------------------- 9c0ddd4bd7 | NormalPerson7 | 2024-07-04 23:24:20 -0500 Move some common functions out of job-gen and species-gen This commit moves common validation and other helper functions that would be useful for any yaml-to-header generation file out of job-gen.py and species-gen.py, and into a new file genutil.py, and lets the two scripts import gen_util.py. Note the name of the utility module is genutil.py without a hyphen, because importing file names containing the hyphen character is impractical in Python. -------------------------------------------------------------------------------- 6ad58cae74 | NormalPerson7 | 2024-07-04 23:24:11 -0500 Convert weapon_choice to an enum class and abstract the yaml field This commit changes enum weapon_choice into an enum class. This allows a neat pattern format in job-data-jobs.txt of weapon_choice::{weapon_choice}, and consequently permits changing the enum values in the job yaml files into simple strings. Hence, the weapon_choice yaml field now has the three possible values "none", "plain", and "good", as opposed to the old enum values "WCHOICE_NONE", ..., "WCHOICE_GOOD". Update background_creation.md to reflect this. Note that previously, the type weapon_choice was defined twice, once as an enum type, and once as a pair in newgame.cc. Changing the enum to an enum class prohibits the second definition, so this commit renames the type defined in newgame.cc to weap_choice. -------------------------------------------------------------------------------- f6c074b974 | NormalPerson7 | 2024-07-04 23:23:52 -0500 Move weapon_choice and job_def definitions out of job-data.h After this commit, the enum weapon_choice and struct job_def are located in a new file, job-def.h, instead of being generated in job-data.h by job-data-header.txt. The header of job-data.h now contains a description of the struct. -------------------------------------------------------------------------------- 0b8ad47905 | NormalPerson7 | 2024-07-04 23:23:24 -0500 Add documentation for background creation using yaml files This commit converts background_creation.txt to use the format of species_creation.md to document the yaml format for backgrounds. Also add a one-line README to dat/jobs/. -------------------------------------------------------------------------------- 6925c6ba18 | NormalPerson7 | 2024-07-04 23:20:24 -0500 Generate job groups on the character selection screen from yaml files This commit adds the following new, automatically generated file: - job-groups.h generated by job-gen.py, using almost identical code to that for the species groups generated by species-gen.py. -------------------------------------------------------------------------------- 17d8ae0da5 | NormalPerson7 | 2024-07-04 23:20:10 -0500 Generate job data from yaml files This commit converts the following files from hand-written to automatically generated: - job-data.h - job-type.h These files are generated from yaml files in the same way as species, using the Python script job-gen.py, which is a modified version of alexjurkiewicz's original species-gen.py. -------------------------------------------------------------------------------- 240133560a | David Lawrence Ramsey | 2024-07-04 23:09:13 -0500 Fix typo. -------------------------------------------------------------------------------- 4d2d54d482 | David Lawrence Ramsey | 2024-07-04 23:09:10 -0500 Remove unneeded space. -------------------------------------------------------------------------------- d92453a9ef | regret-index | 2024-07-05 01:30:46 -0230 Fix the Xom test -------------------------------------------------------------------------------- 0f6896ee0c | regret-index | 2024-07-05 00:37:21 -0230 New Xom action: mass(?) charm Another unique and removed god ability reasonably shareable with the maximalist god of random effects: the Crusade card. There's some further design space between and beyond replicating single target hex wands and the invocation buff with weird intelligence checks, after all. Swapping around multiple allegiances in the midst of battle is good chaotic fun, but since it can be much stronger to convert multiple monsters present compared to other effects (even in just telling a charmed monster to run offscreen and get itself killed), it's been seperated from the other Xom effects. This good Xom action will always charm one random monster, fail to charm another random monster, and then rolls to mostly find the lower-HD half of present monsters to charm afterwards. Going for the "weaker" proportion of matters is, of course, reasonably balanced by that half having the player to try and balance out present monsters with, and still gets quite involved in the warring afterwards. Let's try it out. -------------------------------------------------------------------------------- a0d142641b | regret-index | 2024-07-05 00:37:21 -0230 More broad Xom action adjustments * As long as Xom's not bored or wrathful, Xom's torment now also hits every other living being in sight as well as the player. With Kiku having lost the effect for Sign of Ruin, there's design space for the mixed-benefits effect, and it can tempt people into still pushing forward on a fight after being tormented, while all still functioning under a mostly negative effect due to being uncontrolled. * Xom summoned chaotic allies and enemies once more are nerfed to be slightly weaker versus XL again, most notably to reduce the odds and pressure of the highest quantity lowest level spawns producing hellwings alongside other tier-4 demons immediately next to players in early Lair, as well as to cover for their new threat levels past Lair branches. Hostile non-brain-drain summons are also fuzzed in placement to not be immediately surrounding the player, to provide more varied tactics to handle them as opposed to being directly in cleaving / IMB range and to reduce the habits of making most Xom worshippers only rest in niches and hallways. * Since bazaars are entirely harmless and thus uninteresting to Xom otherwise, Xom now replaces the flavour customers of bazaars with... very different sights. * Xom now cannot polymorph most monsters into higher HD monsters before xl 4, to prevent D:1 deaths to killer bees and bullfrogs and so on and so forth. (This unfortunately doesn't currently work for bats, as the polymorph fixed-list key per monster needs to prevent shapeshifters from drowning themselves over liquids, and thus any other flying options a bat could be polymorphed into is five or more floors deeper a threat. Passing through a lot more code to allow Xom to not care about instantly drowning given enemies would be ideal, eventually.) Polymorphs are also explicitly described as hostile or not in one's notes. * Xom's good and bad monster enchanting now both can enchant increasing numbers of visible enemies on screen, with a range capped by XL. This also comes with swapping out the charm and invisibility effects for vitrify and regeneration- mass charm is slated for its own seperate effect to actually have resistability attached, and mass invisibility (while very funny) is far too annoying to have be a common thing in Xom games. There might be some space for Xom to do more things in this space (like throw on a dozen debuffs that all don't overlap with paralysis or confusion onto a single target), but this should help for now with the continued goal of the past Xom commits for 0.32 both making Xom's danger scale more throughout more of the game and making Xom's upsides feel more variably tangible than just "skip random fights and get random mutation benefits". -------------------------------------------------------------------------------- f441f4bd93 | regret-index | 2024-07-05 00:37:20 -0230 New Xom action(s): glass door enclosure Why imprison something in silver walls if those walls will inevitably collapse? Might as well at least try something flashier. Vitrification was removed from Xom's list of effects back in 1be608a due to interrupting rest, travel, and exploration with monsters who possibly could yet in practice obviously do not actually have any chance to reach the player. While this is quite understandable, it was nice to have Xom materially effect the dungeon itself in more permanent fashions beyond the extremely rare moving of stairs or a mechnically-irrelevnt smattering of random decor. There are ways to approach this, in particular, that shouldn't really impare the rest / travel / exploration space by too much. This rare Xom action has two different versions depending on Xom's mood. In either form, Xom surrounds the player in a ring of disconnected clear doors at distances 3 through 5, digging through diggable walls and replacing decorative non-altar features as is needed. When Xom is feeling merciful, this also comes with blinking hostile monsters inside or on top of the ring outside the box. When Xom is feeling cruel, this comes with not blinking out adjascent enemies if you're already surrounded, as well as blinking in more visible enemies into the box (scaling randomly to xl). Either way, it should still be nicely dramatic and also still reasonably parseable for Crawl to let one rest behind the transparent doors if monsters on the other side can't, in fact, open them. (Aside from trying to vary up effects here to be seperate of the recent new Xom flora ring, the radius size and disconnected doors here are deliberately evoking reverse_door_vault. While this is somewhat of a very narrow in-joke meme, it also serves interestingly enough from a tactical perspective to excuse such.) -------------------------------------------------------------------------------- 18e1206b13 | Implojin | 2024-07-04 19:48:51 -0500 Remove an unneeded rampage terrain prompt (CarefulOdds) Since a0b39eb048, rampage has been issuing a check_moveto terrain prompt if the player does a rampage double-move across a tile that pings check_moveto, even if that move would end on a "safe" tile. (E.g. rampaging through a poison cloud into an open tile.) This seems unnecessary as long as we're checking the player's final position, which we are. -------------------------------------------------------------------------------- acc7b8076f | David Lawrence Ramsey | 2024-07-04 13:48:45 -0500 Fix typo. -------------------------------------------------------------------------------- 0126419439 | David Lawrence Ramsey | 2024-07-04 13:24:30 -0500 Tweak player dazzling/blinding logic. Dazzling immunity requires blinding immunity, and blinding immunity requires not having eyes. This is closer to the monster version where the former is true alredy, and produces the same results as before. -------------------------------------------------------------------------------- 7058c45308 | David Lawrence Ramsey | 2024-07-04 11:36:37 -0500 Flag vine stalkers/Maurice as unblindable. Like players, they don't have plant holiness, and giving it to them might introduce bugs. So match the player side of things (no dazzling/blinding) the easiest way. -------------------------------------------------------------------------------- b54987c067 | David Lawrence Ramsey | 2024-07-04 10:55:30 -0500 Add another Xom ear message. -------------------------------------------------------------------------------- 534115abf4 | David Lawrence Ramsey | 2024-07-04 10:50:11 -0500 Remove a few references to ears. -------------------------------------------------------------------------------- e137b16e2f | David Lawrence Ramsey | 2024-07-04 10:46:53 -0500 Replace another eye reference. -------------------------------------------------------------------------------- 503b74bf45 | David Lawrence Ramsey | 2024-07-04 10:43:07 -0500 Tweak see invis description to mention vision. This matches the in-game text in mutation-data.h. -------------------------------------------------------------------------------- 61b81b70c1 | David Lawrence Ramsey | 2024-07-04 10:36:41 -0500 Replace eyebrow references with hair references. Checking for hair for only the eye messages that reference eyebrows in Xom pseudo-miscasts is overly complex. -------------------------------------------------------------------------------- 98fe185553 | David Lawrence Ramsey | 2024-07-04 10:31:29 -0500 Rename gold dragon scales to golden dragon scales. -------------------------------------------------------------------------------- 0ec4f85e22 | David Lawrence Ramsey | 2024-07-04 07:54:29 -0500 Make Vine Stalkers not have ears. Since they're symbiotes, it could go either way, but the tiles seem to not show visible ears, and plants don't have external ears in the usual sense anyway. -------------------------------------------------------------------------------- 9b862b9597 | David Lawrence Ramsey | 2024-07-04 00:00:26 -0500 Put random body part msg code in the right place. It was in Xom's pseudo-miscasts so I could test it more easily, but it should have been in do_mon_str_replacements() so that it could be used generally, e.g. in god_speaks(). -------------------------------------------------------------------------------- 971c8ffe15 | David Lawrence Ramsey | 2024-07-03 23:48:12 -0500 Make Xom make your ears wiggle instead of glow. Glowing a random colour is interesting, but movement is more interesting. -------------------------------------------------------------------------------- a66dc387fe | David Lawrence Ramsey | 2024-07-03 23:45:07 -0500 Replace a Xom ear pseudo-miscast msg. We don't know if your species already has pointed ears or not, so just make them glow some other colour. -------------------------------------------------------------------------------- d6264605d0 | David Lawrence Ramsey | 2024-07-03 23:40:26 -0500 Add msg for Xom's ripping magic out of you. Using a random body part the player has. Suggested by regret-index. -------------------------------------------------------------------------------- 5d929861f7 | David Lawrence Ramsey | 2024-07-03 23:31:39 -0500 Add Xom pseudo-miscasts for ears. -------------------------------------------------------------------------------- 6afc23fd24 | David Lawrence Ramsey | 2024-07-03 23:27:28 -0500 Indicate whether species/forms have ears. In species, make a new species flag for it. The player species and forms that don't have external ears are now flagged as having no ears. Nothing is done with the functions to detect player ears yet; this will be remedied. -------------------------------------------------------------------------------- d25bf8764e | David Lawrence Ramsey | 2024-07-03 22:08:28 -0500 Tweak Xom's eyes pseudo-miscasts again. Drop references to right and left, and just say one of your eyes. This allows the message to work regardless of which eyes it's talking about. -------------------------------------------------------------------------------- 2d43d07d79 | David Lawrence Ramsey | 2024-07-03 21:55:49 -0500 Document the fix for Xom's eyes pseudo-miscast. -------------------------------------------------------------------------------- de14e3e199 | David Lawrence Ramsey | 2024-07-03 21:48:53 -0500 Fix Xom's eyes pseudo-miscasts. Count the ones from your current form, but not the ones form Jiyva's mutation, since the latter are not the usual left/right eyes that the messages are made for. -------------------------------------------------------------------------------- a0bb186744 | David Lawrence Ramsey | 2024-07-03 21:05:37 -0500 Fix override warnings? -------------------------------------------------------------------------------- e099dce725 | David Lawrence Ramsey | 2024-07-03 20:46:51 -0500 Handle players with no eyes. Fix a few references that assume eyes (the see invisible mutation's long description, plus a Pan lord description). Also account for no eyes in Ru's eye sacrifices and Xom's eye-related pseudo-miscasts. -------------------------------------------------------------------------------- 3a50e4b0e9 | David Lawrence Ramsey | 2024-07-03 20:46:46 -0500 Indicate whether species/forms have eyes. In species, make a new species flag for it. The player species and forms that are immune to dazzling/blinding (vine stalkers, trees, and fungi) are now flagged as having no eyes, and that quality is now what gives them such immunity. The code assumes elsewhere that all species have eyes; this will be adjusted. -------------------------------------------------------------------------------- 2ac8d13b53 | David Lawrence Ramsey | 2024-07-03 20:46:36 -0500 Try to clean up dazzling/blindness checks. Move them to actor, and apply them consistently to both player and monster as much as possible: dazzling checks everywhere, except for atropa darts, which explicitly do blinding checks. On the player side, resistance to being dazzled is the same as resistance to being blinded, to keep dazzling/blinding as available to players as possible. This means that vine stalker players, as well as players in tree or fungus form, can no longer be dazzled/blinded, but all other players can. -------------------------------------------------------------------------------- c8384d3eb5 | elliptic | 2024-07-03 20:34:53 -0400 Fix the wrong gem being placed in a D:15 vault (sosloow) -------------------------------------------------------------------------------- 195b16cf10 | David Lawrence Ramsey | 2024-07-03 18:45:13 -0500 Add a few blank lines. To make the form_has_ functions stand out better. -------------------------------------------------------------------------------- d6cd30cd14 | DracoOmega | 2024-07-03 20:39:55 -0230 Let Divine Shield block ioods and refactor a little -------------------------------------------------------------------------------- eaf127bca1 | David Lawrence Ramsey | 2024-07-03 17:54:11 -0500 Fix death-form's never having bones (oops). It now has bones only if the original species does. Also, consistently refer to it as fossilised instead of bony, for those species without bones. -------------------------------------------------------------------------------- 483be5070d | elliptic | 2024-07-03 18:03:53 -0400 Save compat to remove negative Divine Shield charges -------------------------------------------------------------------------------- a96e11e7f4 | elliptic | 2024-07-03 17:46:12 -0400 Fix characters getting a negative amount of divine shield charges (They got them even without worshipping TSO!) -------------------------------------------------------------------------------- e965ef129e | David Lawrence Ramsey | 2024-07-03 16:38:46 -0500 Fix bugs/inconsistencies for plant players. Since they don't actually get plant holiness, the player::can_be_dazzled() checks for such did nothing. Check for the species and forms directly instead. Also, make fungus form immune to torment, since it's supposed to have plant holiness, and tree form makes you immune to torment for the same reason. -------------------------------------------------------------------------------- 9bc2200ab7 | Nikolai Lavsky | 2024-07-04 00:03:53 +0300 fix: remove duplicate "the" from RevPerry messages Fixes messages like "You knock the the +0 club out of the goblin's grip!" -------------------------------------------------------------------------------- b22d4219ad | DracoOmega | 2024-07-03 16:42:47 -0230 Make the Orb complain if any method moves it (ge0FF) It was possible to use hellfire mortar's temp lava to slowly shift the Orb of Zot all the way to the stairs before picking it up (by creating lava under it, causing it to be displaced by one tile). Other less practical methods of moving it include Tomb cards and Summon Forest. Since the Orb complains about apportation, it probably ought to complain about this as well. Now any terrain change that triggers a shift which moves the orb will have a similar effect as apportation being cast upon it. -------------------------------------------------------------------------------- b890d635f5 | DracoOmega | 2024-07-03 16:39:38 -0230 Actually print a message when Sign of Ruin blinds a monster (elliptic) -------------------------------------------------------------------------------- 0a67a26650 | DracoOmega | 2024-07-03 16:39:27 -0230 Apply Sign of Ruin effect on either melee *or* brand damage (elliptic) Sign of Ruin had a mild lack of synergy with Kiku's pain brand gift (in that Pain weapons function even on 0 damage hits, but those hits still could not trigger Sign of Ruin). Now it triggers if either the main hit *or* brand does damage on a given attack. -------------------------------------------------------------------------------- 2031b86b8c | DracoOmega | 2024-07-03 16:31:43 -0230 Make Divine Shield actually block beams (elliptic) Not sure how I overlooked this.... -------------------------------------------------------------------------------- 329bce5e63 | DracoOmega | 2024-07-03 16:31:07 -0230 Don't expire Divine Shield with time (elliptic) When reworking this ability, I'd kept a small duration on top of the limited block charges with the aim to keep the scope of the ability to a single combat. But it's been pointed out that this makes it possible to end a fight with blocks remaining, walk over to a second, and have the effect expire right as you're about to get hit. Since there's a non-trivial piety cost to the ability, we shouldn't need to worry about pre-buffing, so now your block charges simply stay around indefinitely until used. (This converts DUR_DIVINE_SHIELD to now be the number of remaining block charges rather than aut, and removes the use of ATTR_DIVINE_SHIELD entirely) -------------------------------------------------------------------------------- 23c286355e | David Lawrence Ramsey | 2024-07-03 01:08:16 -0500 Avoid spurious blinding msgs from TSO's shield. Try to blind them first, and display the "struck blind" message only if it succeeds and they weren't blinded before. Since unblindable monsters can't be blinded, this will properly stop the "struck blind" message from displaying for them. -------------------------------------------------------------------------------- 54083d67a5 | David Lawrence Ramsey | 2024-07-02 22:31:13 -0500 Fix incorrect possessive in merfolk siren msg. (Why isn't there a warning for a non-boolean erroneously used as a boolean parameter?) -------------------------------------------------------------------------------- f62c45d80e | elliptic | 2024-07-02 13:53:14 -0400 Tweak Hedge Wizard start (acrobat) Hedge Wizard had one of the least reliable XL 1 starts in the game since their starting spell, Magic Dart, had extremely low damage at their 1 Conjurations skill spell power. power. So let's raise that to 2 starting Conj skill. In addition, let's give them 1 Necromancy skill for symmetry with Summoning and Translocations now that they have a L2 Necromancy spell in their starting book. This commit also removes Slow from their starting book - it wasn't very appealing to raise Hexes just for Slow spell power given how many other schools they might want to train, and it isn't a very good spell at very low power. This means that Slow now isn't in any starting spellbooks, so it seems reasonable to cut it as a player spell altogether - it isn't very fun gameplay anyway. I'll wait a bit on doing that though. -------------------------------------------------------------------------------- b4b85c6ba5 | David Lawrence Ramsey | 2024-07-02 10:20:12 -0500 Move player_has_bones() into actor. Map the monster version to mons_skeleton(), which is the closest equivalent on that side. It's currently not used directly anywhere, but it might be useful at some point for an eventual spell that only affects living monsters with bones. Whether monsters have hair and/or feet doesn't seem to affect much on that side, so those functions are still player-specific. (Unless there are eventual spells to e.g. strangle monsters with their own hair, or knock their feet out from under them.) -------------------------------------------------------------------------------- 38ac799c93 | David Lawrence Ramsey | 2024-07-02 09:50:24 -0500 Update comment. Now that has_blood() exists, Xom could rip your magic out through it, too. -------------------------------------------------------------------------------- 4f4802e42f | David Lawrence Ramsey | 2024-07-02 09:44:19 -0500 Indicate whether species/forms have blood. In forms, move the quality from can_bleed to has_blood. Elsewhere, rename the function. In species, make a new species flag for it. Note that having certain holinesses no longer automatically implies not having blood. Species with no blood are explicitly flagged as having no blood instead. (The one exception to this is the check for is_lifeless_undead()'s being false, which is needed to account for the one odd case of not-currently-alive vampires.) -------------------------------------------------------------------------------- 611ce37909 | David Lawrence Ramsey | 2024-07-01 18:26:45 -0500 Indicate whether species/forms have feet. And make player_has_feet() use it properly. Note that having certain intrinsic mutations no longer automatically implies not having feet. Species with such mutations are explicitly flagged as having no feet instead. -------------------------------------------------------------------------------- 23c4013377 | David Lawrence Ramsey | 2024-07-01 17:28:34 -0500 Indicate whether forms have bones. And make the various bones checks use it properly. -------------------------------------------------------------------------------- ab78b9c92e | David Lawrence Ramsey | 2024-07-01 17:07:26 -0500 Rename function to match associated variable. Use form_changes_physiology() instead of form_changed_physiology(). -------------------------------------------------------------------------------- 61c9020154 | David Lawrence Ramsey | 2024-07-01 17:02:53 -0500 Indicate whether forms have hair. And make player_has_hair() use it properly. -------------------------------------------------------------------------------- 5f993c34c6 | David Lawrence Ramsey | 2024-07-01 13:17:33 -0500 Fix desc of death-form arms for boneless species. Use "fossilised" instead of "bony" for them. Maybe there's a better option, but it's all I could think of at the moment. -------------------------------------------------------------------------------- c0d58c9ec9 | David Lawrence Ramsey | 2024-07-01 09:59:29 -0500 Properly check if the player has hair. Account for forms as well as species (as best we can), and have Xom's hair-related pseudo-miscasts use this check. -------------------------------------------------------------------------------- cffdeba968 | DracoOmega | 2024-07-01 02:31:44 -0230 Buff Arachne yet more Even after the last buff, she's still been lagging behind; venom bolt and poison arrow just don't scale that aggressively compared to other uniques she shares her depth range with now. This gives her some more HD for extra spell damage, nudges up her conjuration cast rate just a smidge, and replaces Blink with Blink Range. -------------------------------------------------------------------------------- 3df90f6c32 | DracoOmega | 2024-07-01 01:52:01 -0230 Make the number of Elemental Force summons a little more consistent It used to summon between 1 and 'Invocations - 1' elementals, resulting in an extremely wide variance, especially at higher invocations. It's already generally outshone by direct damage options at high invo, so it probably doesn't also need a chance to roll just a single elemental. -------------------------------------------------------------------------------- 3e911bed26 | DracoOmega | 2024-07-01 01:30:41 -0230 Slightly clarify message for trying to invent a gizmo with full inventory At least some players didn't seem to understand that this was referring to their inventory, as opposed to some other problem. -------------------------------------------------------------------------------- e3ac9d4567 | DracoOmega | 2024-07-01 01:30:09 -0230 Make Planerend summons last a bit longer. Abjuration degree 1 is just a very short length of time for hostile summons to last. (Forceful Invitation can stay at 1, due to the context in which it is usually encountered.) -------------------------------------------------------------------------------- 6d7365d79f | DracoOmega | 2024-07-01 01:28:40 -0230 Don't let Orb of Mayhem's effect target the thing that just died. This produced a very confusing series of messages (and also wasted the effect on a monster who was in the process of dying at the time.) I kind of think that monster_near_iterator by default just shouldn't include the monster whose perspective it is from, as the vast majority of time this specific check is then added manually (or forgotten!). -------------------------------------------------------------------------------- 17a61085a0 | DracoOmega | 2024-07-01 00:37:55 -0230 Tweak message for trying to use draconian breath that is exhausted This was written for an old draft that restored charges when you entered new floors, but apparently was never changed when it became xp-based instead. -------------------------------------------------------------------------------- 712046fcb8 | DracoOmega | 2024-07-01 00:37:07 -0230 Fix a visual bug with green draconian breath tracer At XL too low to have the breath spread beyond the central line, it was nonetheless showing that it might affect an area adjacent to any monsters hit by the central line (due to shared code with Combustion Breath). -------------------------------------------------------------------------------- 80f043cd07 | DracoOmega | 2024-07-01 00:35:44 -0230 Prompt and warn if green draconian breath could leave a cloud on an ally -------------------------------------------------------------------------------- 8640a3fb66 | DracoOmega | 2024-06-30 22:02:30 -0230 Hopefully fix some webtiles flash alpha problems more properly screen_cell_t.flash_alpha and cell_t.flash_colour weren't initialized upon construction. While draw_cell() would set these to appropriate defaults before using them for most purposes, TilesFramework::_send_cell specifically only wrote these values to json if they differed from the previous frame. This allowed a brief window upon loading a screen (and maybe other times?) where it was possible the uninitialized number would equal the 'real' number we wanted to write there, and because there was 'no change', it would not get written to webtiles json at all. At the same time, this means that a flash_alpha of 0 should never cause a json write under most circumstances, even though this is used as a 'default alpha' for active flashes (often actually 100). So notice when they're trying to use an undefined alpha value javascript-side and assume it is zero instead. I'm not 100% convinced this will properly fix all of the bugs bandaged over by 6d3ed6f0afcef2dff2510c721f16ae45721817a5 but it seems like a good attempt. -------------------------------------------------------------------------------- d7d0690006 | DracoOmega | 2024-06-30 22:02:30 -0230 Don't assert when aiming a lightning rod at LoS 0 It's not clear to me that this assert is needed in the first place (and regular beam targeters don't have a similar one). -------------------------------------------------------------------------------- b41b9731f8 | DracoOmega | 2024-06-30 22:02:30 -0230 Don't let faint miasma linger indefinitely if the player stands on it -------------------------------------------------------------------------------- ddb5797f8f | DracoOmega | 2024-06-30 22:02:30 -0230 Preview EV/SH changes from wielding randart staves (pisaster) They should now display the same info block that randart weapons do, in this regard. -------------------------------------------------------------------------------- a2a0cb1fca | DracoOmega | 2024-06-30 22:02:30 -0230 Fix Marionette targeter not counting draconian breaths (not_that_greg) In the demoninator, at least. This turns out to actually have been an issue with get_unique_spells(), which would ignore breaths if no spell filtering flags were set. This doesn't seem to have had wider consequences as other uses of this function specify at least one filter. (Though I think this function was accessible to client lua, so it may have also affected someone else at some point in time, somehow.) -------------------------------------------------------------------------------- 14bc459c0f | DracoOmega | 2024-06-30 22:02:30 -0230 Flag Fulsome Fusillade as chaotic The chance is low, but it *can* malmutate enemies caught in an unstable reaction, so this would be consistent with other mutating spells. Sorry, Zin worshippers. -------------------------------------------------------------------------------- bb5b61914e | DracoOmega | 2024-06-30 22:02:30 -0230 Show Grave Claw charges in quiver line, while it's quivered (CarefulOdds) Seems like a small UI nicety. -------------------------------------------------------------------------------- 0bbe9e1929 | David Lawrence Ramsey | 2024-06-30 14:46:07 -0500 Fix typo. -------------------------------------------------------------------------------- e1784ef838 | DracoOmega | 2024-06-30 17:02:21 -0230 Improve Step From Time's functionality Step From Time is a conceptually cool ability - let the level run for a few hundred turns without the player and see how much that improves your situation - but its reliability is deeply troubled in practice. It is very common for it to make no meaningful improvement in your situation - and worse, enemies get an immediate action so sometimes the player can even get blasted by monsters that weren't in sight before they used it! A fundamental problem with the ability working the way it does is that monster wandering behavior in Crawl - when there is no player to track nor noise to pursue - is very, very dumb. A monster can literally spend thousands of turns in a medium-sized room without figuring out how to exit it - a problem that gets even worse the more other monsters are in the room for it to bump into, as each time its movement is blocked, it will start moving in a different random direction instead, making it near-impossible for a cluster of monsters to exit a corridor. I spent a while investigating how this basic wandering behavior might be improved, but it's unclear that any changes which do not require a massive-scale refactoring of monster behavior code (which is a good idea in general, but very daunting) would actually be beneficial. The incidental property of 'monsters tend to stay inside enclosed major vaults unless the player is fighting nearby' is arguably good, more intelligent behavior could be much more computationally expensive, and what monsters do when the player is extremely far away from them mostly just isn't that important. Except for Step From Time. So instead, let's cheat. Rather than merely causing a large amount of time to pass and hoping the results incidentally make a good button to press, let's move some things behind the scenes to ensure that they do - while still staying true to some of the flavor and 'unpredictability' of the ability - but to a more acceptable degree. Step From Time now passes only 100 turns in the old way (enough to introduce some general randomness, and cause timed effects to wear off, summons expire, poison to kill things, etc.). And then it grabs a random 50-85% of nearby awake monsters and manually moves them some distance away from the player to simulate them wandering (if wandering actually worked any good at all). They will always end up somewhere out of the player's LoS that they could have walked under their own power (so it's definitively *not* a teleport). Then we roll an independent power-based chance to put awake creatures anywhere in the level to sleep. (A property Step From Time effectively had in the old days, and one that seems thematically appropriate without being too easy to exploit.) Finally, we steal just enough energy from monsters which remain in the player's LoS to ensure that they do not act before the player has seen them. In total, using this ability is a lot more likely to improve the player's situation (but is not guaranteed, still has a large degree of randomization, and still functions poorly in places the player could *expect* it to function poorly, like enclosed spaces with no exit.) I've nudged the piety cost up slightly at the same time, but it should feel like a much better button to push, regardless. -------------------------------------------------------------------------------- fadd82bc4f | DracoOmega | 2024-06-30 17:02:21 -0230 Don't crash when shadow-throwing a large rock The game wasn't considering them throwable by player shadows, which led to other issues with code that assumed they could. Fixes #3899 -------------------------------------------------------------------------------- 0d330ff531 | David Lawrence Ramsey | 2024-06-30 00:05:21 -0500 Update Kiku powers description (jlwoodwa). Since torment has been replaced with the sign of ruin. Closes #3898. -------------------------------------------------------------------------------- 9325eb94cc | David Lawrence Ramsey | 2024-06-29 21:33:42 -0500 Tweak a Xom divine lightning message. Since the effect produces multiple blasts now, instead of just one. -------------------------------------------------------------------------------- 79019f5db0 | David Lawrence Ramsey | 2024-06-29 20:51:52 -0500 Fix spacing. -------------------------------------------------------------------------------- 069b42e500 | David Lawrence Ramsey | 2024-06-29 20:42:38 -0500 Fix spelling. -------------------------------------------------------------------------------- bdf0b8bb2c | regret-index | 2024-06-29 22:43:51 -0230 Scattered Xom buffs to both worship and wrath As mentioned back in a3c6b23, the various changes between dropping miscasts and adding heavy XL scaling have reduced the chances Xom will directly kill the player, which is good for making people actually stay with and appreciate Xom, but also lets chaos knights who abandon Xom early live more often. The latter is unideal- it goes against the spirit of chaos knight in the first place!- and so several bits of wrath are now a bit harsher, to invoke the prior state of tier-3 demons on D:2. * Xom's wrathful actions no longer can include harmless miscast messages or random noise, as these don't actually do anything much to a given sinner. * Hostile summons counts are doubled under boredom and tripled under wrath (alongside an upgraded increase in effective level). * Xom banishes deeper and earlier while wrathful. * Xom's bad mutation effect is guaranteed to have at least one bad mutation if you're under wrath. * Xom enemy buffs no longer include BEAM_AGILITY- it's just not much of a decent joke unless it's actually made to do something, anyway. As a bit more of a carrot to go with the stick, to reward those who stay with Xom, more positive actions are a bit more noticeable and less malevolent to the player, also: * Xom polymorph-to-shapeshifter effects now require being at least xl 5, unless under Xom wrath or boredom. * Xom's single-ally summons last an average of 320 aut (up from 170) before vanishing and now get a free regeneration buff, so one can actually keep them around for a reasonable while on their floor without making one's own resting awkward. * Xom's random spells-through-the-player cast list swaps out Summon Ice Beast (boring, old, starter book spell) with Martyr's Knell (exciting, new, unique in support capacities), and Metabolic Englaciation (redundant with several other haste and slow effects) with Animate Dead (since Death Channel is already present and useful). Tension now also contributes to spellpower alongside Xom interest and player XL. * Xom's divine lightning blast now also comes with several random lightning bolts occasionally aimed somewhat towards enemies, since some seem to miss the random firing of old black draconian breath and disc of storms. * Xom's Ignition-predecessor Mass Fireball now also sticky flames on hit. Since Xom won't catch worshippers in the fireball barrage, there's now a bit more of interest and agency in charging towards whatever one wants to keep alight, and it's also a bit closer to Xom's tones by highlightning status effects too. -------------------------------------------------------------------------------- 5538e63c64 | regret-index | 2024-06-29 22:37:57 -0230 New Xom action: living Force Lance fleet Divine foxfire swarms are clearly too weak to interest Xom. Xom's direct destruction effects (outside of the incredibly rare Fusilade and Chain of Chaos calls) are currently rather dull for a contemporary divine context- either blasting the worshipper directly with a lightning AOE or tossing around a few fireballs that might incidentally be fake. There's ripe space for additional effects and revisions that can at least look fancy and also let the god remotely catch up to the newer effects from Nemelex, Qazlal, Ru, and Ignis, as long as they're unaimed as always. This new effect only activates if there's more than one enemy visible. If it does, it first does non-damaging knockback in a small radius around the player, akin to the scroll of butterflies, and then fills the space around the player with living spells that cast Force Lance. Force Lance in particular is chosen for its capacity to wildly push enemies around if they aren't immediately killed (and even repeatedly knock enemies out of sight only for them to walk back in and get pushed out again), which provides a more positive contrast to the position-swapping Xom action that's already been around for a while. The effect itself scales both spawns and damage heavily to the player's XL and is reasonably weaker during Xom wrath. It tends to mostly wound but not directly kill from full health random bands appropriate for their XL while rapidly crushing uniques without bands or summons, which is fine since Xom's random irresistable debuffs will already do the same anyway. -------------------------------------------------------------------------------- 9b0b472dee | regret-index | 2024-06-29 22:37:57 -0230 New Xom action: brain drain Other new joke directions: doing the active opposite of divine abilities. In this case, Channel Magic and Draw Out Power. Since Xom's already covering statdrain, active draining, and torment, we might as well complete the number of ways Xom can affect the player's stats and points with something a bit more dramatic. (They did always find Brain Feed amusing, for whatever reason.) This Xom bad action drains 3/4ths of a worshipper's current mp (if and only if they have any) and transforms such into hostile (rarely neutral with severity) brain worms, mana vipers, and / or quicksilver elementals, scaling heavily to that worshipper's level. If Xom's bored or wrathful, this instead drains all mp, has no neutrality chance, and scales one's XL up further. It's a bit more violent of a prank than usual for Xom, but is that really that much different than their old predilection for explosions? -------------------------------------------------------------------------------- beb539b8dc | David Lawrence Ramsey | 2024-06-29 18:57:12 -0500 Tweak Xom gizmo pseudo-miscast msg. To make it overlap less with the dragon armour pseudo-miscast msg. -------------------------------------------------------------------------------- c6c5c127b9 | David Lawrence Ramsey | 2024-06-29 18:25:00 -0500 Add Xom pseudo-miscasts for gloves/boots slots. There are grammar oddities for a few unrands with plural names (e.g. the Mad Mage's Maulers, which are not described as a pair of maulers), but they have the same oddities when in the player's inventory. -------------------------------------------------------------------------------- f4a1136d2b | David Lawrence Ramsey | 2024-06-29 17:50:37 -0500 Clarify comment. Gods can change unrands, as shown by Yred and "Brilliance". Xom could change unrands for chaos branding, but doesn't. -------------------------------------------------------------------------------- 6f9366b24c | David Lawrence Ramsey | 2024-06-29 17:48:19 -0500 Improve display of Xom ring slot miscasts. The ring names should start with "your" even if they're artefacts, like the other slot miscast messages. -------------------------------------------------------------------------------- f6d08ccad7 | David Lawrence Ramsey | 2024-06-29 17:41:54 -0500 Add a Xom pseudo-miscast for ring slots. -------------------------------------------------------------------------------- 1c16d331d5 | David Lawrence Ramsey | 2024-06-29 16:13:55 -0500 Add a Xom pseudo-miscast for the gizmo slot. -------------------------------------------------------------------------------- 6061a74ad1 | David Lawrence Ramsey | 2024-06-29 13:37:09 -0500 Add another pattern to the colour database. -------------------------------------------------------------------------------- f4827b8d6a | David Lawrence Ramsey | 2024-06-28 21:23:18 -0500 Add a few more Kiku Donald/player ghost lines. To reflect the flavour change from pain and torment to ruin and despair. The player ghost line referencing pain and torment is still there, but the way it's worded, it could apply to the ghost instead of the player, and who knows how Kiku punishes worshippers who fail them by dying? -------------------------------------------------------------------------------- a8b34eb901 | DracoOmega | 2024-06-28 18:27:35 -0230 Fix a possible Xom mass-paralysis crash -------------------------------------------------------------------------------- eaafe8afc0 | David Lawrence Ramsey | 2024-06-28 15:18:34 -0500 Fix spelling. -------------------------------------------------------------------------------- b744659e03 | David Lawrence Ramsey | 2024-06-28 15:17:20 -0500 Update Necromancer background desc (jlwoodwa). Since the Necrotise spell has been replaced with Soul Splinter. -------------------------------------------------------------------------------- 7b7531d185 | David Lawrence Ramsey | 2024-06-28 14:27:08 -0500 Add another Xom dry fountain message. -------------------------------------------------------------------------------- 798c8b9a8b | gammafunk | 2024-06-28 10:23:09 -0500 fix: Use the correct number of altars in a temple (nicolae,Namsan) For mainiacjoe_temple_bowtie_tessellation, this map actually has 19 altars, so tag it correctly as such. -------------------------------------------------------------------------------- 3f2e493c45 | DracoOmega | 2024-06-28 12:11:06 -0230 Change/improve how Aphotic Marionette works somewhat. Targeting this ability now calculates how many spells each visible monster could cast *at the present moment*. This accounts for whether other enemies are in range of their conjurations (and not immune to them), whether the player is able to be buffed by any buffs they may have (accounting for stasis or already having these buffs), and several other things. This should make the ability feel more reliable, as it should always be able to cast as many spells as it claims it can. The ability also no longer requires an audience if the monster has spells that would function without one (ie: you can have a monster Haste you without needing some random bystander in sight.) This also means that since Marionette should *always* do something, it no longer needs the weird piety cost system where most of the cost was deducted only *after* a monster did a thing (but would be partially-refunded otherwise.) I remain concerned at how wildly effective this version is against certain enemies, like Zenata. Requiring another enemy around diluted her Sheza's Dance casts with Resonance Strikes (and often meant she had her own weapons for distractions against your weapons). I am not currently sure how to dilute the strength of Marionette in its best cases without making it too unappealing in more average ones (nor how to cost it based on how much it *did* via any sane formula.) However, players were regularly confused by facets of the old method and this should be a lot clearer by default, so let's go with this for now. -------------------------------------------------------------------------------- 1ec71475ea | DracoOmega | 2024-06-28 12:11:06 -0230 Make summons gained via Marionette appear around the player Instead of around their nominal summoner. This is intended in part to make it less trivial to immediately kill a summoner with their own summons (though I am unsure how much it helps, since the player could be near them in the first place.) -------------------------------------------------------------------------------- a5e027c416 | DracoOmega | 2024-06-28 12:11:06 -0230 Fix Marionettes not appearing to have the right alignment to some spells mons_aligned() worked properly, but wont_attack() did not. Spells are entirely inconsistent as to which they use, so some spells would not consider the marionette to be on the proper team. -------------------------------------------------------------------------------- a5c9273df1 | DracoOmega | 2024-06-28 12:11:06 -0230 Fix spells cast by Marionettes caring about their own health (ie: they would be reluctant to cast attack spells in ways that could also hurt them, when they were explicitly intended to be indifferent to this fact.) -------------------------------------------------------------------------------- f1b019fc7b | DracoOmega | 2024-06-28 12:11:06 -0230 Fix monster Eruption cast message always claiming it's aimed at the player -------------------------------------------------------------------------------- a3775c49d2 | DracoOmega | 2024-06-28 12:11:06 -0230 Fix being able to aim Grave Claw at yourself (Which would immediately crash) -------------------------------------------------------------------------------- 8e808ea584 | DracoOmega | 2024-06-28 12:11:06 -0230 Fix capitalisation in Grave Claw spell description -------------------------------------------------------------------------------- 94106ed5a1 | DracoOmega | 2024-06-28 12:11:06 -0230 Fix missing break statements (Waxwing) Was requiring Grave Claw to be recharged for Starburst to be castable. -------------------------------------------------------------------------------- a9aa173657 | regret-index | 2024-06-27 22:43:35 -0230 Silently clear player tile clouds when Xom stops time Since there's not much counterplay to Xom's mass-paralysis otherwise, and also since there's not too many other ways to actually take much damage when everything on screen's paralyzed. (Aside from lethal poison? Well, when worshipping Xom, one probably should have been a little more cautious enough to cure such quickly when other possible actions like divine lightning or hostile summons could have been called instead.) -------------------------------------------------------------------------------- ca161acf3c | regret-index | 2024-06-27 22:43:35 -0230 Loose odds and ends vault review Not too much of note, but still noted down amongst other tweaks: * Fixed up evilmike_haunted_forest having living tree tiles amongst the the dead trees. * No longer make the serial_ice vaults place inexplicably harmless enemies in D:12-15 or Vaults:1-4. * Marginally increased the weight of non-encompass Depths entry vaults that are themed vaults with Depths entry configurations; we should embrace more of D:15 being notable with more vaults in the same sort of arrangement, honestly. -------------------------------------------------------------------------------- 0121280f0d | regret-index | 2024-06-27 22:43:34 -0230 Fiery and icy Swamp end vault fusion I've never been much of a proponent of leaning on threats not based on a branch for branch ends when said branch ends are supposed to be the dramatic finishing point of the branch in question. It dilutes the branch identity and threats already present in a branch to swerve over into a different direction with only the loosest of collective theme justifications, and frequently doesn't even try to connect them back to the monsters present. If we need more branch end variety, plenty can be done while still trying to connect to what's present and with new layouts. Sometimes this guests-work has been retroactively made to make more sense (like pharoah ants in Spider for the death scarab end), but I'd like to continue to keep a stern eye on such spaces regardless. One of the most obvious manifestations of this is in Swamp, which despite getting notable enemy updates in 0.14 and 0.26, has had a historical obvious emphasis on looking elsewhere for more threats (due to design patterns built up from a decade and a half ago prior to either update). I've pared this back down a little over time for other concerns, and will continue it here by merging two other troublesome vaults- swamp_fiery and swamp_icy. These two have had issues for a while- the former's unrestrained clouds fry most of what's inside before being fought (and for a long while was at the bottom of threat level due to using, like, steam dragons and fire crabs for a rune vault), while the latter relies heavily on slow melee monsters and has extremely little connection to Swamp itself beyond modified hydras. This merger emphasizes a few different points: * Having both themes provides enough variety to still work with both the old iconic monsters and regular Swamp spawn. The half of present monsters that aren't hydra simulacra are instead branch spawns that still work with simulacra, like swamp dragons and will-o-the-wisps. * The clouds and walls have been reworked to make the former more organized and the latter thicker, enough to reduce the likelihood monsters will wake up and wander into damaging internal flaming clouds before actually approaching the vault. It also makes the external freezing clouds mildly easier to move past, to focus more on other internal threats. * In an experimental difference from other swamp layouts, combining both layouts is meant to emphasize several large open chambers rather than dense singular cave-boxes or a long corridor of spawns. Let's see how such revisions work out. The old two vault layouts might get used eventually for more elemental game-long vaults later on, but the vault's sort of combining the two shapes together, so it's fine for now. -------------------------------------------------------------------------------- 88ce094893 | David Lawrence Ramsey | 2024-06-27 20:10:26 -0500 Actually remove Pakellas altars for version > 34. Formerly, it was moved upward for that case, but not removed as it was everywhere else. -------------------------------------------------------------------------------- ef57fefe5d | DracoOmega | 2024-06-27 19:38:18 -0230 Don't allow casting Soul Splinter with Oka (elliptic) Just an oversight. -------------------------------------------------------------------------------- 1c6beb5740 | DracoOmega | 2024-06-27 19:38:18 -0230 Change how Grave Claw recharges There were numerous concerns raised that the original recharge behavior of Grave Claw (a single use which was restored after 2-3 kills) was troubled. It could place too much emphasis on the order that fights were encoutered or prompt retreating from threatening fights to go recharge a shot elsewhere first. I don't want the spell to feel tedious, but I *do* want to emphasize the 'harvesting death' flavor of it while presenting a unique consumable-ish mechanical identity. After some discussion, it was decided to try this instead: The player can now stockpile up to 3 charges of Grave Claw at once. Each of these charges takes a random 4-6 living deaths to recharge. To avoid showing a status light at all times for the state of a spell the player will eventually stop caring about, the number of remaining charges is listed in other ways: -When you are aiming the spell, the targeter line says how many charges are remaining. -When the spell is examined, it will say how many charges remain. -When the player is out of charges completely, there is still a -GClaw status light. -When the player expends their last charge upon casting it, there is a message printed. Hopefully these are comprehensive enough while being inobtrusive. When the player first memorises the spell, they gain one charge of it immediately (to prevent starting necromancers from learning a spell and then being unable to use it at all for several battles). Save files being upgraded from an older version will also gain one charge if they already had the spell. Let's see how this feels. -------------------------------------------------------------------------------- 25ed1c7c0c | Nicholas Feinberg | 2024-06-27 15:04:47 -0700 Fix another bug -------------------------------------------------------------------------------- 29f3d313aa | Nicholas Feinberg | 2024-06-27 15:02:52 -0700 Silence a warning -------------------------------------------------------------------------------- e2cddfa179 | Nicholas Feinberg | 2024-06-27 15:00:58 -0700 Fix: not every attack should eviscerate (Epsilon) C++ is a good language. -------------------------------------------------------------------------------- 76dddd7891 | David Lawrence Ramsey | 2024-06-27 12:10:28 -0500 Add a few more glowing_adj entries to colours. -------------------------------------------------------------------------------- fdff619988 | DracoOmega | 2024-06-27 03:06:29 -0230 Don't let your shadow cast Shadow Puppet out of combat (Acrobat) Being the only shadow spell that didn't require a target, it was possible to repeatedly cast summon spells outside of combat to fish for shadow puppets - especially since low level summon spells could still produce strong allies this way if the player's xl was reasonably high. Worse, because the shadow triggers <25% of the time, you could be encouraged to keep rerolling until you got lucky enough to get several in a row before running out of MP. Let's curtail this possibility by only allowing the spell to be cast in combat (like other shadow spells effectively already were). -------------------------------------------------------------------------------- f798c56413 | DracoOmega | 2024-06-27 03:03:04 -0230 Give Dithmenos melee shadows better sleep stabs A common situation with Dithmenos stabbers is that their opening attack kills a sleeping monster and their shadow immediately attacks another sleeping monster which the player *could* have dispatched the following turn, and merely wakes it up without much damage done. This feels bad. But forbidding shadows from attacking sleeping outright enemies would feel bad in so many other situations. Instead, let's try to make this feel less bad by letting the shadow just stab the sleeping monster themselves. Monsters already get a large damage multiplier when attacking a sleeping target, but they can always roll low. Good player stabbing weapons get some guaranteed damage, so let's give that to shadows also: if and only if they are attacking with a short blade or felid claws. (I am unsure whether to include the Hood of the Assassin in this condition. Shadows normally don't care about anything the player is wearing beyond their weapon, so it would be inconsistent with that. But not doing so may cause a similar feelsbad situation - just a rarer one. I could be pursued otherwise.) -------------------------------------------------------------------------------- 8a0c661859 | DracoOmega | 2024-06-27 02:54:02 -0230 Make slept monsters unable to wake before the player's next turn There have been recurring bugs over the years of various methods of putting monsters to sleep being immediately broken (ie: a monster being woken up by the very thing that put them to sleep), and sometimes-brittle code trying to patch over specific instances of this. This is an attempt at a more general solution. Monsters which are put to sleep via (hopefully) any method are now immune to being woken up by (hopefully) any means until the player's next turn. This automatically addresses special cases added to handle Creeping Shadow procs from Ensorcelled Hibernation, should fix chaos weapons waking up monsters that they just put to sleep, and possibly other things. This does have the effect where player allies can attack a sleeping enemy for bonus damage without waking it up - theoretically multiple times in a row. In practice, I doubt this will be a real problem. Most enchanter types are not using allies to any real effect at the same time they are sleeping things (and would have just one-shot the sleeping enemy with their next attack anyway). It may come up a little more often with chaos weapons and Dithmenos, but that seems fine if it does. (It also has the positive side-effect of removing feelsbad situations where a monster that the player put to sleep is woken up by some immediate incidental damage they did not anticipate.) One may note the 'hopefully's up there. Monster behavior code is a tangled beast and I am not at all fully confident there isn't some way to accidentally wake a monster up despite this. We shall see. -------------------------------------------------------------------------------- f7cbc378ca | DracoOmega | 2024-06-27 01:03:34 -0230 Allow Vehumet's range bonus to apply to the player's Spellforged Servitor The servitor is explicitly casting the player's own spells (and is the one summon that Vehumet explicitly supports), so it seems fair to me that it shares the player's own range with them as well. -------------------------------------------------------------------------------- 1ed0126d3b | DracoOmega | 2024-06-27 01:03:34 -0230 Allow Vehumet range bonus to affect a few more spells IMB, Flame Wave, and some other player-centered AoE already benefited from an effective radius extension via Vehumet. This expands that to include Hailstorm, Frozen Ramparts, and Eringya's Toxic Bog, which had previously been excluded. This seems fairly harmless, arguably more consistent, and importantly probably more fun. -------------------------------------------------------------------------------- 602a2ca46c | DracoOmega | 2024-06-27 01:03:34 -0230 Make Vehumet's 2nd gift be level 2-3 instead of 1-2 (elliptic) There's already a fair bit of randomness in when the player can be offered Veh gifts (compounded by randomness in when one finds Veh altars in the first place), and getting a level 1 spell for your second gift is almost universally sad - even if worshipped fairly early. Let's be a little more generous. -------------------------------------------------------------------------------- 6009e8ebb8 | DracoOmega | 2024-06-27 01:03:34 -0230 Greatly boost the effectiveness of heal-from-kills at low piety While the ability to heal HP/MP from suitable kills was nominally given at 1* for worshippers of Mahkleb, Vehumet, and TSO, the chance of it actually happening on a suitable kill at that point was less than 1%. It basically didn't *really* exist until a decent bit more piety was gained. Since the amount of healing itself was already based on the HD of what was killed (making it naturally weaker in the earlygame anyway), it doesn't need to be practically useless at first. At the same time, it meaningfully scaled at piety values above 6* and there's been some efforts over the years to make piety-based things actually max at the highest level the player can see. This commit rescales the trigger chance to be 30% at 1*, maxing at 80% at 6*. This is slightly below the old theoretical max (85% at 200 piety), but a combination of piety decay and diminishing returns on piety gain and actually *spending* piety on things meant that one wasn't likely to ever stay at 200, and so this is hopefully - at most - a tiny reduction in practice. (This may be slightly less true for Vehumet, who doesn't have any way to spend piety, but I still doubt it's significant. If so, these can be decoupled from each other.) -------------------------------------------------------------------------------- 3d6ac616a9 | David Lawrence Ramsey | 2024-06-26 18:16:25 -0500 Reorder spells in Trismegistus Codex. This fixes a test failure caused by Cigotuvi's Putrefaction's now being level 4. -------------------------------------------------------------------------------- 3c3405656d | David Lawrence Ramsey | 2024-06-26 18:08:48 -0500 Fix spelling. -------------------------------------------------------------------------------- 3947c7c5ea | David Lawrence Ramsey | 2024-06-26 18:08:20 -0500 Fix punctuation. -------------------------------------------------------------------------------- cefdf76d2c | David Lawrence Ramsey | 2024-06-26 18:08:16 -0500 Fix naming of #ifdef'ed-out enum. -------------------------------------------------------------------------------- b2846a84f6 | DracoOmega | 2024-06-26 20:35:50 -0230 Fix Bestow Arms animation being visible out of LoS (regret-index) -------------------------------------------------------------------------------- d6a4db0e28 | DracoOmega | 2024-06-26 20:35:50 -0230 Fix tag upgrade build -------------------------------------------------------------------------------- 69d1a470dc | regret-index | 2024-06-26 20:26:31 -0230 New Xom action: haste / slow / para _everything_, including you Other gods Xom can reasonably easily make jokes about: Chei. This categorized-as-a-bad action has Xom give the same duration (give or take time slices and base delay) of haste, slow, or paralysis to both the player and everything else in sight. Because of this symmetry, it's less terrible than it seems, yet still serves a seperate purpose from just affecting the player / individual monsters: it changes the usefulness of subsequent summoning or necromancy from either side, it lets other monsters wandering in be more or less noteworthy, and it lets damage-over-time effects still tick down on the paralyzed. Should be fine as another simple Xom action, and gets to bring up the divine dramatics of e.g. bending time into knots. (This does occasionally screw over formicids with mass haste, but they also get the benefits of mass slow and mass paralysis. Xom's summon and banishment rescaling already made formicid chaos knights far less troubled, anyway.) Note: I opted not to absolutely flood the message log with every single last enemy in sight being affected. If other devs feel like this should be done for consistency's sake or to make it be more obvious in the message log, they may go ahead and change this. -------------------------------------------------------------------------------- afaae9a287 | regret-index | 2024-06-26 20:16:48 -0230 Add Ambrosia to Xom's potion list Xom loves confusion and provides both healing and magic potions, so it seems entirely appropriate. It gets half weight to match with the other double-sided potions like attraction and berserk, though it'll probably be less bad than those nonetheless. -------------------------------------------------------------------------------- c695c3f67a | regret-index | 2024-06-26 20:16:47 -0230 Let Xom decorate with more than just altars While Xom being vain is good for characterization and jokes alike, we've got a variety of other options at this point that reasonably allow for some other jokes. Xom can now rarely randomly place caches of fruit, caches of meat, open or closed doors, and entrances to the Abyss, on open floor in the same fashion they place altars to Xom. The caches are entirely decorative, the doors provide a weird occasional LOS manipulation tactical benefit but are rarely relevant for cutting off monsters so they instead get to look nicely absurd, and the entrances to the Abyss probably won't matter too much versus Xom being able to banish directly or getting to the normal Depths entrance but does allow for a little bit of a dramatic yet entirely harmless effect on the nearby environs. With there being more terrain changes besides altars, this also lowers the chance of Xom summoning friendly butterflies a bit to show those off, since the other summon effects can now also include butterflies. -------------------------------------------------------------------------------- a3c6b23753 | regret-index | 2024-06-26 20:16:47 -0230 New Xom action: surround with toadstools / demonic plants Xom hasn't gotten new effects in eight years, and has in fact mostly lost effects due to the miscast simplification in 3e08ee0. With Xom being a little less likely to directly kill the player earlier on after db1107a and b92a340, there's a fair bit more space to try and actually introduce more upsides and more downsides to effects compared to prior. It's a bit difficult to make too many jokes that don't feel too meta, but angling for some of what many other gods have, since they've changed a lot more than Xom has in the past eight years, is a reasonably easy angle to work with. This new effect makes a ring of toadstools or demonic plants with a radius between two to four, biasing towards the plants and radius 4 with XL. We've still kept around toadstools around despite not using them much (maybe they should go in more Sewers?), but they serve fine enough as uniquely frail firewood, and demonic plants are entirely in the spirit of Xom's still-somewhat-demonic focus. Mechanically, this effect may block off player retreats, or it might prevent large groups of enemies from properly surrounding the player as they fight / try to teleport away. Reasonable enough for one of many upcoming bits of spice, and allows a few lines riffing off of Fedhas (alongside some other silly joke lines). -------------------------------------------------------------------------------- 5113baeebe | regret-index | 2024-06-26 20:16:47 -0230 Give Sif Muna's Channel Energy back its success message This was lost in 942ac9c, and I feel like it's better for consistency's sake to make gaining all buffs actually provide a message in the message log; by the time one can make it much reliable, it's only one message across five or six turns of spellcasting anyway. -------------------------------------------------------------------------------- 6dbd6f5238 | DracoOmega | 2024-06-26 20:15:36 -0230 Fixup a renamed enum that got missed when squashing -------------------------------------------------------------------------------- c9b62028b5 | DracoOmega | 2024-06-26 20:04:41 -0230 Fix rings of wizardry and amulets of regenMP having a stash tag of {buggy} -------------------------------------------------------------------------------- 2c54b8fa63 | DracoOmega | 2024-06-26 20:04:41 -0230 Cigotuvi's Dreadful Rot -> Cigotuvi's Putrefaction (level 4 Necro/Air) Cigotuvi's Dreadful Rot was a spell in an awkward place. It could be used to open up small gaps against enemies in corridors in the earlygame, but it was found only on the background which already had Call Imp and Blink, both of which can do this more flexibly (and actually be a primary kill tool, in the case of Call Imp). You could sometimes use Mephitic Cloud to confuse enemies into it, but it was unclear how much help you needed against an enemy that was already confuse-locked. So let's try a different and higher-level take on making miasma clouds. Cigotuvi's Putrefaction is a smite-targeted level 4 Necromancy/Air spell which must be cast on a living monster that is at least 'heavily wounded'. Repurposing the old cloud spreader code (last used about 10 years ago, but never removed) it causes miasma clouds to billow out from this monster over the next several turns. These clouds start as harmless 'faint miasma' that exists to give the player a better idea of the area of effect before turning into proper miasma the next turn. Faint miasma will never turn harmful so long as the player themselves is standing there (so no matter what terrain you create the clouds on, they won't hurt you - though it's still possible to surround yourself!) The spell has a fairly significant draining cost, but this cost itself is heavily reduced by spellpower. (Increasing number of clouds and cloud duration via spellpower felt like it ran the risk of sometimes making the spell harder to use instead of strictly better.) Let's see if Corpse Rot the Fifth (Sixth?) feels in a better place. -------------------------------------------------------------------------------- bfa4c909b4 | DracoOmega | 2024-06-26 20:04:41 -0230 Don't absolutely forbid monsters from stepping into miasma Unlike essentially every other harmful cloud in the game, no monster that could be affected by miasma would *ever* step into it. Even mindless monsters who explicitly will walk into any other type of cloud, no matter how injured they are, would stop dead in their tracks in front of miasma. This made using some miasma-related effects as a player somewhat awkward. Either it was too hard to convince anything to stand in it or it could be used as a weirdly reliable obstacle even to endgame monsters that would barely be harmed by it. Let's try just making the logic use the same hp-based check it does for other damaging clouds in general. -------------------------------------------------------------------------------- c0b93f29f4 | DracoOmega | 2024-06-26 20:04:41 -0230 Buff / unbreak miasma cloud effects versus monsters Due to a seemingly innocent change in 3abaafb9f6336d86ed529b034a35b75a16c8f4ec that tweaked the formula for slow duration from BEAM_SLOW versus monsters, miasma clouds went from slowing monsters for ~10+ turns to exactly 1 turn. (This is because the fake beam miasma used to apply slow had an ench_power of 0, which previously gave a slow duration of 0 and now gives a slow duration of 1. Except 0 is special-cased to use the 'default' duration of an enchantment as specified in mon-ench.cc, which was actually something like 10 times longer...) This gives miasma slowing an explicit duration again (bypassing any beam nonsense), as well as applying additional impact damage to monsters. (Unlike against players, miasma clouds applied identical poison and nearly identical base damage to monsters as regular poison clouds. Since monster poison stacking is weird, rather than try to poison them harder (which would barely matter) apply additional impact damage if they fail their rPois check as a proxy for how much scarier they are supposed to be than poison clouds). -------------------------------------------------------------------------------- 3d5deab1c5 | DracoOmega | 2024-06-26 20:04:41 -0230 Make necromancers start with a dagger Now that their level 1 spell will often involve them also meleeing the target before killing it. -------------------------------------------------------------------------------- 2685a3d210 | DracoOmega | 2024-06-26 20:04:41 -0230 Add Grave Claw (level 2 Necromancy spell) This is partially intended to make Vampiric Draining no longer the singular damage tool a necromancer relies on before Animate Dead comes online, and also as a relevant replacement for Cigotuvi's Dreadful Rot in the Hedge Wizard book, where I think it may also play interestingly. Grave Claw is a smite-targeted direct damage spell that does physical damage and inflicts a very short-term Bind effect on a monster. It can be fired while on the other side of your allies (allowing it to play well with Soul Wisp - and sometimes help it get an extra hit on a monster if the wisp spawns on the other side of it), can damage rN-immune targets, and even does more upfront damage than Vampiric Draining (though checks AC). With one important stipulation: it cannot be recast until you have killed 2-3 living/zombifiable monsters. This makes it a situational tool that can help equalize otherwise difficult fights, but can never be the main way you deal with anything. I think a spell directly relating to harvesting deaths is good flavor for early necromancers to have, especially now that their level 1 spell no longer does this. It helps with hostile undead (while not preventing them from being an overall bad matchup) and I think it presents some interesting decisions. It does overlap with Vampiric Draining in several ways, but I think there are enough distinctions that this will improve the gamefeel of their kit as a whole. (Hedge Wizards can also benefit from a more impactful spell in their necromancy slot, and they too have an ally to synergize with it.) -------------------------------------------------------------------------------- c2cd7fecab | DracoOmega | 2024-06-26 20:04:41 -0230 Replace Necrotise with Soul Splinter Necrotise is a perfectly functional damage spell for early floors, but the skeleton often feels like an afterthought; there's frequently nothing around for it to hit and it will usually be gone by the start of any subsequent battle. By the time this is less true, its damage is already starting to fall off. (Also: neither it nor Vampiric Draining can do anything to rN+ monsters, some of which are quite threatening to a background that is already considered a weaker mage start). There has been some desire for necromancer to have a more reliable 'ally' spell before reaching Animate Dead, but one that still clearly falls off past earlygame. Derived undead have some issues in that regard, with how they naturally scale with the monsters they are made from, so this is an attempt at accomplishing this goal with a new fixed ally. Soul Splinter is a will-resisted enchantment that breaks off a tiny fragment of a monster's soul into a Soul Wisp: a short-lived ally that will fixate on the monster it was extracted from (much like Haunt summons do at higher levels) though can stick around a short while afterward. A wisp can be created from any spectralisable monster and will spawn adjacent to it, also inflicting weakness on the monster for more or less as long as a part of its soul is out of it. Higher HD monsters will produce wisps with somewhat stronger attacks, but its health is always low. The beam-based targeting and unique monster placement should make it feel distinct from existing level 1-2 summons while remaining necromantic. It notably helps necromancer's bad matchup against ufetubi. The fact that it can spawn on the opposite side of a monster in a corridor to let the necromancer team up on someone is also relevant. Let's give it a try! -------------------------------------------------------------------------------- 456191073c | David Lawrence Ramsey | 2024-06-26 17:30:03 -0500 Use && instead of and. The latter is valid, but is harder to search for. -------------------------------------------------------------------------------- 6b5e21af4e | Nicholas Feinberg | 2024-06-26 15:13:30 -0700 Fix missing space (SallyRoses) Minor oversight in 325916669285695f42df15ebe3e2019d2ac322ea. -------------------------------------------------------------------------------- 811786a8ad | David Lawrence Ramsey | 2024-06-26 08:00:33 -0500 Add a few more glowing colour messages for Xom. One matches the one already used for singular items, and the other uses the newly revived glowing_adj. -------------------------------------------------------------------------------- 97836dd66e | David Lawrence Ramsey | 2024-06-25 23:17:07 -0500 Tweak orc priests' description of Beogh. New Beogh seems to have enough mercy to balance out their cruelty. -------------------------------------------------------------------------------- ec53afd64b | David Lawrence Ramsey | 2024-06-25 22:10:56 -0500 Fix typo. -------------------------------------------------------------------------------- dcf5b866f4 | David Lawrence Ramsey | 2024-06-25 21:30:03 -0500 Use @the_monster_possessive@ in one more place. -------------------------------------------------------------------------------- b399a4f4c3 | David Lawrence Ramsey | 2024-06-25 21:20:29 -0500 Add another glowing_adj to the colour database. -------------------------------------------------------------------------------- f9429a18e8 | David Lawrence Ramsey | 2024-06-25 21:17:44 -0500 Fix comment typo. -------------------------------------------------------------------------------- 4b1f165adb | David Lawrence Ramsey | 2024-06-25 21:15:44 -0500 Add another monster alchemy miscast message. Based on the similar unseen alchemy miscast. -------------------------------------------------------------------------------- 57f3d0c160 | David Lawrence Ramsey | 2024-06-25 21:13:03 -0500 Simplify glowing dust miscast messages. -------------------------------------------------------------------------------- 2796a0dc91 | David Lawrence Ramsey | 2024-06-25 21:09:50 -0500 Fix incorrect weight in monster miscast message. -------------------------------------------------------------------------------- 6d36d0655f | David Lawrence Ramsey | 2024-06-25 21:03:47 -0500 Use @the_monster_possessive@ in more places. I missed these in the last update. -------------------------------------------------------------------------------- 0e839f5252 | David Lawrence Ramsey | 2024-06-25 21:00:25 -0500 Add glowing colours to the color database. Pulled from the old scrolls of random uselessness. This partially reverts commit 00efbec225e6347ddd28a58c3dd2184177f46084. -------------------------------------------------------------------------------- 13f425ce8b | DracoOmega | 2024-06-25 22:47:19 -0230 Fix a weird infinite loop with ally retreat orders (robotcentaur) Due to an oversight, after ally retreat behavior was refactored by 6316ba047ae8947d194a466133b87ee628c4d497 it didn't actually properly end once they'd reached their destination. Their behavior and patrol points would be set properly to end it, and then handle_behavior would silently reset their behavior back. I am frankly astounded that no one else reported this problem before now. But even worse: because it would set their patrol point to (0, 0) WITHOUT actually changing their behavior to not seek it out, anything that reached the end of where it was going would immediately attempt to travel to (0, 0). And apparently if you were on a level where the ally in question could get near to the level boundary (eg: Shoals), this would cause an infinite loop. I am not sure the specific cause of this, since it went away when the first bug was fixed; I assume it was because handle_behavior kept getting called to give the monster somewhere valid to move and it kept on insisting it should move to (0, 0). Anyway, it seems to work properly now. -------------------------------------------------------------------------------- bc0a3b031a | David Lawrence Ramsey | 2024-06-25 14:39:34 -0500 Add another Donald Dithmenos line. -------------------------------------------------------------------------------- be422a758e | David Lawrence Ramsey | 2024-06-25 12:51:01 -0500 Don't apostrophise grunting crab melee attacks. The monster name isn't used in those messages at that point, and getting the apostrophisation in that case is complex enough that it currently isn't worth the effort, and likely will be wrong because it involves fake language support anyway. -------------------------------------------------------------------------------- 3259166692 | David Lawrence Ramsey | 2024-06-25 12:32:15 -0500 Make simple god and monster msgs apostrophise. By adding an extra parameter to the functions, so that "'s" isn't hardcoded everywhere the possessive is needed. The only instances of a hardcoded "'s" left are ones in string replacements that will likely break if changed (or if apostrophise()'s current logic is changed); the vast majority are now properly passed through apostrophise(). -------------------------------------------------------------------------------- e3f4e31a3f | David Lawrence Ramsey | 2024-06-25 09:29:39 -0500 Reflavour Terence. He's now a veteran of a war with the armataurs. Much of his dialogue has been rewritten to reflect this. -------------------------------------------------------------------------------- 5e8508d677 | RypoFalem | 2024-06-25 09:21:52 -0500 Update search help text for shops (PJRamaglia) ! is used to toggle between travel and view in the search window. ? seems to do nothing. -------------------------------------------------------------------------------- 4ceacca870 | DracoOmega | 2024-06-25 04:17:50 -0230 Fix a possible crash with Sign of Ruin (Dhd) -------------------------------------------------------------------------------- b4869f84db | David Lawrence Ramsey | 2024-06-24 01:27:40 -0500 Fix spacing. -------------------------------------------------------------------------------- 5c60499851 | Nicholas Feinberg | 2024-06-23 22:39:25 -0700 Fix azure jelly xv display (Flugkiller) Any monster with two or more identical melee attacks *followed* by more melee attacks of a different type would fail to display the latter attacks. Oops. -------------------------------------------------------------------------------- 0fb811b797 | regret-index | 2024-06-24 02:21:51 -0230 Bump up Xom chaos upgrades and Xom-through-player spells * Make chaos branding a monster's weapon give a stronger range: +2 to +4, instead of +0 to +4. This should make it a bit more tempting to use chaos brands as Xom indirectly offers by consistently offering more enchantment on the weapons dropped afterwards, which continues to be in the proper spirit of Xom. * Give Xom Fulsome Fusillade at the near-top end of player spells they can cast through the player. While the presented list is mostly trying to avoid direct damage higher than OTR, it's also a random elements spell that inflicts random debuffs in random areas, which is extremely chaotic in a nice dramatic fashion similar to Chain of Chaos staying just above it. While there's a bit of jank in it running out immediately if one has next to no MP, that also works well as a joke Xom can pull on the player, and it takes so long to get to the point one can get enough tension to see the spell even non-spellcasters should have enough MP to work with anyway. * Give Xom's spells-cast-through-the-player a small amount of flat additional spellpower scaling to one's XL. Currently, such effects use a weird spellpower range based on how far one is away from the centre of piety, which makes Chain of Chaos and the various hexes options regularly fail to do almost anything against enemies for a later chunk of the game; the player's XL contributing to this should help with Xom feeling more noticeable later on as they currently struggle with. Since Xom is rarely a reliable god at the best of times and all of the spells are scaled directly to tension anyway, this shouldn't much worrisome a buff. -------------------------------------------------------------------------------- db1107abd2 | regret-index | 2024-06-24 01:40:30 -0230 Scale Xom's summons to XL, introduce a lot more options For a god of chaos that has little restraint in choice or power, Xom is kind of dull in their choice of servants. Demons tiers 3 through 5 and some random shadow creatures both binds singularly demons too heavily to chaos and leaves out a variety of more fun and weirder options than what one will see plenty of in Orc or the branch they're already within. Alongside the old demon summons (and a few more demon summons at higher tiers), this adds a fairly large amount of various living and undead monsters themed around various themes Xom already focuses upon: relocation, confusion, mutation, variable summoners, chaotic natures, and so on and so forth. There's also a sparse amount of additional demons meant to preserve and extend the old demonic flavour, mostly aimed at demons not more obviously used by Makhleb or Nemelex. To help make it more plausible to parse such, there's also a decent chance to make given choices appear in pairs. Also, shadow creatures calls themselves will always get one of these manifold chaos options (and are slightly less common), to both make it a little less plain and because it's a little funny to see a given demon look lost in a swarm of Vaults humans and troll / taurs. This also adjusts the scaling of monsters chosen and placed: it is now impossible to meet any tier-3s on D:1 without Xom being bored or abandoned, while one will stop seeing tier-3s past lair branches. There is also a lot less of a chance to see over 6 or so monsters, outside of a couple of banding-designated monsters such as laughing skulls or dream sheep, since the overall pool is a lot more dangerous / strong later on than it used to be. This should mostly make it so Xom is much less likely to directly kill on the first few floors, but is always providing some degree of potential threat later on instead of hitting a tier-3 wall or solely relying on shadow creatures. While summoned allies are also scaled to be notably strong later on, getting more than one comes with quite a short duration by default, so it's just a per-fight uncontrollable perk. TODO: This is still somewhat rather limited in decent options for lategame and extended characters, in trying to not overlap too hard with Lugonu, Makhleb, Jiyva, or using holies. Maybe Xom briefly summoning a distorted bound soul of a slain unique as an ally could pass as a joke at Yred's expense? Maybe we just need a few more Depths, Zot, and Pan enemies. -------------------------------------------------------------------------------- 73ecd75965 | Nicholas Feinberg | 2024-06-23 17:52:59 -0700 Remove unused god passive messages These were added in 5f1ddaaadb3 (2015) and last seriously touched in fc596c4910b (2017). They are a grand and noble project which no one has taken up, and which has caused a great deal of dev confusion as a result. (E.g. people changing these messages, which do nothing, instead of the real ones.) They're also a bit rotten, I suspect. Let's cut them for now. We can re-add them whenever someone has the steam to take this on again. -------------------------------------------------------------------------------- 6d26cd89fa | Nicholas Feinberg | 2024-06-23 17:46:48 -0700 Fix thresholds for kill god passives Match messaging in religion.cc, etc. -------------------------------------------------------------------------------- bf6a2ca414 | Nicholas Feinberg | 2024-06-23 17:45:35 -0700 Revert "Make Veh MP restore better at low piety (DracoOmega)" We're going to make a better version of this change later. This reverts commit c39d94d1f1a73ce59934977991b5215bdd183d79. -------------------------------------------------------------------------------- c39d94d1f1 | Nicholas Feinberg | 2024-06-23 17:34:18 -0700 Make Veh MP restore better at low piety (DracoOmega) There's some feeling that this is too unimpactful early on. -------------------------------------------------------------------------------- 950dbd3e0a | Nicholas Feinberg | 2024-06-23 10:15:01 -0700 Maybe fix gem mimic bugs Don't let gem mimics block real gems from breaking. Also, always show shattering messages for *on-map* gems, even if more_gem_info is false. That setting is only supposed to hide it when gems shatter *while in your inventory*. -------------------------------------------------------------------------------- 6ea4a1c0b2 | regret-index | 2024-06-23 00:45:33 -0230 Further additional monster spell icons With over 60 monster spell tiles done for 0.32, we're roughly at about 27 monster spells lacking distinct icons. Ideally, that latter number would be 0, but it's taken plenty enough to get to this point. Sources: * Chain of Chaos: Sastreii's Manifold Assault and snw-0's Mass Confusion. * Chaos Breath: snw-0's Freezing Cloud's icon. * Conjure Living Spells: snw-0's Recite icon and hellmonk's recolouring of ontoclasm's living spell icon. * Doom Howl: snw-0's summoning ring and roctavian's Shadow Fiend tile. * Flaming Cloud: snw-0's standard cloud icon. * Flay: Denzi's flayed ghosts. * Funeral Dirge: snw-0's Might icon, Ultraviolent4's Swiftness icon, CanofWorms's Fugue of the Fallen icon, and flodiebold's adjustment of the degeneration potion icon. * Harpoon Shot: roctavian's Stone Arrow and PleasingFungus's Lesser Beckoning. * Holy Flames: roctavian's Ring of Flames and snw-0's Swiftness. * Spit Lava: Denzi's Spit Poison and roctavian's Stone Arrow. Also, mirrored the various dragon / draconian breath / spit tiles to face right rather than left, to more closely match the direction the majority of other conjuration icons are oriented. -------------------------------------------------------------------------------- 6d3ed6f0af | DracoOmega | 2024-06-22 04:53:11 -0230 Quick stopgap measure to fix webtiles flashes sometimes being fully opaque For unclear reasons that I have been completely unable to reproduce, flashes for some players in webtiles sometimes become completely opaque instead of transparent. Even worse, since this applies to the constant screen effect from berserk, it can make the player completely unable to see the battlefield for the entire duration of the effect. This behavior is inconsistent, and seems to sometimes go away on reloading, but given that we can't expect players to know or do this, I've attempted to disable the only place I can see that allows for variable alpha transparency in flashes (ie: any value other than hard-coded 100/150). This will result in the screen effect for blind being a bit overly loud, but hopefully this is just a short-term measure until someone can figure out what the real problem is. (I mean, hopefully it even works - it's hard to test a fix to a problem I cannot reproduce...) -------------------------------------------------------------------------------- b5a8b8454b | Aliscans | 2024-06-22 01:44:54 -0230 Mark transporter destinations as known on entering a fully_mapped level This lets the player use travel commands to reach an altar in hellmonk_temple_divided_pantheon (where there are transporters between the stairs and most of the altars) without first visiting the transporters manually. brflag::fully_map now also prevents transporters from appearing in the level overview. On other levels this happens until the transporter is used. -------------------------------------------------------------------------------- c13c8a0a3b | NormalPerson7 | 2024-06-22 01:16:36 -0230 Use redefinable yellow for poison in hp-bar (mumra) This brings poison in line with all other HP/MP-bar colours. -------------------------------------------------------------------------------- 2bc2bbeccd | NormalPerson7 | 2024-06-22 01:16:36 -0230 Allow using black as a menu_colour for Webtiles inventory UI Previously, using black as a menu_colour option was never useful, because black text is always invisible on the black game background. However, we can now redefine the colour black, as of d719f66, opening up a 16th possible text colour to use with menu_colour. Upon trying to do exactly this myself, I discovered the Webtiles inventory UI implicitly, and apparently unintentionally, replaces black text with lightgray, regardless of what black may have been rebound to. Let's fix this, so we really can have a 16th colour. -------------------------------------------------------------------------------- d165621694 | DracoOmega | 2024-06-22 00:51:52 -0230 Fix another invisible monster leak with Gavotte (Don't leak whether a visible monster will take damage only because it *hits* an invisible one.) -------------------------------------------------------------------------------- 9ce1d27a0f | NormalPerson7 | 2024-06-22 00:51:52 -0230 Don't leak invisible monsters when casting Gell's Gavotte (#3836) Fix the targeter revealing the locations of invisible monsters in line of sight when they would be hurt by the spell. Resolves #3836 -------------------------------------------------------------------------------- a7e19f97df | DracoOmega | 2024-06-21 17:50:32 -0230 Cut an extremely niche and mostly-pointless monster behavior If holies walked over a good god altar, or branch natives of orc, elf, or spider (but no other branches!) walked over the entrance/exit to their branch (only the entrance, in Spider's case) while wandering, they had a chance to set that location to their patrol point and stick near it. Did you know that? Of course you didn't. (Realistically, this mattered slightly more when monsters could spawn on top of stairs over time, and this could cause these monsters to cluster up around the place they came out of. But that behavior is itself long gone, so this can join it.) -------------------------------------------------------------------------------- 02cc6ff11a | DracoOmega | 2024-06-21 17:46:31 -0230 Remove a couple vestiges of armataur curl status -------------------------------------------------------------------------------- 2ec1b1993f | DracoOmega | 2024-06-21 17:45:57 -0230 Fix all statuses coloring SH blue in webtiles After removing Divine Shield's effect on SH, this left SH-boosters with an empty string (even when there is no defined "sh" member at all...) which matches all other strings and made all statuses color your SH. I could reorder checks so that it never looks for "sh" here, but then it might surprise someone in future that tries to put another in and it doesn't work. This is still dumb, though. -------------------------------------------------------------------------------- cb7df17468 | DracoOmega | 2024-06-21 16:52:48 -0230 Don't crash on reusing a shadow mimic with a non-ranged weapon If a player created a shadow mimic while wielding a non-launcher, then switched to a launcher and triggered a shadow shot, the code would assume it could reuse the existing shadow mimic and attempt to fire from whatever it was wielding (which crashed). Now we simply don't reuse a shadow mimic for shadow shoot unless it's wielding a launcher. -------------------------------------------------------------------------------- 8499d7ef60 | DracoOmega | 2024-06-21 16:51:15 -0230 Prevent casting Starburst with LoS 0 (elliptic) Due to how the beams are handled, this would try to fire all 8 of them directly at the player instead (though at least it prompted you not to). It already was incapable of firing *beyond* your LoS. -------------------------------------------------------------------------------- 2ed6c15cf2 | DracoOmega | 2024-06-21 16:50:25 -0230 Prevent Polar Vortex from affecting things beyond the player's sight range The fact that Polar Vortex could damage enemies beyond sight range was most obvious in combination with Primordial Nightfall, but was already attainable just by being a kobold (and especially one who also had a scarf of shadows). Now we simply cap the max vortex radius each turn by your current vision range. -------------------------------------------------------------------------------- 9a3e478684 | DracoOmega | 2024-06-21 13:24:02 -0230 (Maybe) fix LoS range being semi-permanently reduced by Nightfall Or rather, it seemed like it may have been possible for Nightfall to end while the player's LoS was still less than normal, and then nothing would trigger a LoS range update to reset it properly. (It's not altogether clear to me how, but might involve low invo and high delay actions.) Now, simply call update_vision_range whenever Nightfall wears off, which should fix any similar problem. -------------------------------------------------------------------------------- b304cf6f2a | David Lawrence Ramsey | 2024-06-21 10:47:46 -0500 Tweak wording of Ruin status description. -------------------------------------------------------------------------------- 0ea0d47ddd | DracoOmega | 2024-06-21 13:02:35 -0230 Fix Dazzling Flash player tracer not working properly (dilly) Looking at the code I edited here, I wonder if mons_aligned should just be renamed to actors_aligned or something, to make it more obvious that it works just fine for players, too. -------------------------------------------------------------------------------- de231d1551 | DracoOmega | 2024-06-21 13:00:48 -0230 Don't crash when dropping items into lava -------------------------------------------------------------------------------- 21e9c0a11a | DracoOmega | 2024-06-21 13:00:33 -0230 Add missing status description for Sign of Ruin -------------------------------------------------------------------------------- 6630b05a1f | DracoOmega | 2024-06-21 01:22:50 -0230 Remove some unused arguments -------------------------------------------------------------------------------- afa2d2b35f | DracoOmega | 2024-06-21 01:22:17 -0230 Fix a possible crash -------------------------------------------------------------------------------- 99379c98dc | DracoOmega | 2024-06-21 00:28:40 -0230 Don't block Deathly Blight from slowing stationary monsters -------------------------------------------------------------------------------- 1438d3d306 | DracoOmega | 2024-06-21 00:28:40 -0230 Replace Kiku's Torment power with Sign of Ruin Kiku's Torment ability was widely considered a very niche aspect of their kit. While its effect could be situationally powerful, it was unpredictably dangerous to the player *and* duplicated a scroll effect. There were often already enough scrolls of torment in a game for the number of times one really wanted to use torment (unless the player was undead) resulting in it just not being a button people were very excited to have. So let's experiment with something else. The revamped Sign of Ruin was done with this possibility in mind; Soul Scholars were always Kiku worshippers, after all. By debuffing a group of enemies with something that scales directly off receiving melee attacks (and has no friendly-fire), it plays well with having lots of minions in play, but importantly does not actually *require* them. (An earlier draft used the old ally-buff version of Black Mark, but if Kiku hadn't deigned to give you actual ally creation spells you could use with Wretches, it was very sad). Kiku has the highest abandonment rate of any god besides Ignis (part of why their wrath was buffed significantly a short while ago). Maybe a little carrot to go with that stick? (The numbers are still pretty fuzzy, but I'll adjust them based on feedback if the net effect of having this ability feels good.) -------------------------------------------------------------------------------- 65f7e67581 | DracoOmega | 2024-06-21 00:28:40 -0230 Split Black Mark (the spell) away from Black Mark (the mutation) Black Mark was the signature spell of the now Demonspawn Soul Scholars, but was usually unimpactful in practice and symmetry with the player demonspawn mutation of the same name limited its ability to be buffed without confusing people (and had historically resulted in its most significant effect being outright removed). An always-on player passive and a signature short-term status used only in extended have such different balance considerations that I think it better if they just be two entirely different effects. The DS mutation remains named Black Mark (and is unchanged). The Soul Scholar spell has been renamed to Sign of Ruin and its functionality changed (though with the same core mechanical thrust). The spell now places a debuff on a 5x5 area of enemies that will trigger each time those enemies are hit with a melee attack, applying heavy draining and then one of either slow, weak, or blind. This is basically an inverted (and more powerful) version of their old effect, with the antimagic removed (Warmongers in the same zone already have the anti-magic end of things as a focus). As a debuff, it can follow the player through an extended battle, but there are additional lines of counterplay if things get rough enough (ie: !cancellation works on it). It also works better with the subject of the immediately following commit. -------------------------------------------------------------------------------- c06f56343a | DracoOmega | 2024-06-21 00:28:40 -0230 Make Divine Shield (hopefully!) more interesting TSO's Divine Shield ability was reasonably useful, but extremely plain. It gave you some more SH for a little while and... that was it. (It also arguably suffered a bit with the change to max-blocks-per-turn, where even tacking on a large SH number to a buckler still only let you block once per turn). Let's try something that might feel a little more exciting. Instead of giving you SH over a medium period of time, Divine Shield now causes you to have a 100% block chance for the next X attacks (for relatively small values of X without lots of invo). Ranged attacks will be reflected and melee attackers have a 50% chance to be briefly blinded. (The fun thing is that since TSO prevents stabbing entirely, blindness is actually purely defensive for once, instead of also offensive.) Guaranteed [block X times] has some potentially interesting ramifications in that it's much worse against rapid numbers of small hits and much better against slow singular attackers. (It's worth noting that shield blocks always happen *before* the player rolls to dodge, so many of those blocks might get eaten up by attacks that would have missed you anyway, making the raw number look potentially stronger than it actually is.) The blindness gives a potentially longer-term benefit even if the blocks get eaten immediately, but it does matter where you are standing when you activate it. In any event, the hope is that this makes earlier TSO a little more exciting and feels fun to use. -------------------------------------------------------------------------------- c1a0a21539 | DracoOmega | 2024-06-21 00:28:40 -0230 Don't let TSO halos make allies easier to hit TSO offers some obvious support to a general summoner: halo makes summons more accurate and TSO's blessings will heal and extend the duration of summons. It feels slightly awkward in this context that it will *also* make all of your non-divine summons more likely to *be* hit. Let's lean a little more into generalist summoner support by making this not be the case. -------------------------------------------------------------------------------- 24f1105c5b | DracoOmega | 2024-06-21 00:28:40 -0230 Player blindness tweaks Move the min and max duration rolls from chaos/light beam blindness closer together, add a status description for webtiles, and let wizmode super healing remove blindness. -------------------------------------------------------------------------------- 7051e9d3e0 | DracoOmega | 2024-06-21 00:27:21 -0230 Simplify player Blindness formula, bugfix Increase of directly interacting with to-hit rolls relative to a target's EV (which make the status itself doubly ineffective against non-evasive targets and was more complex to describe), being Blind now causes the player to have a flat chance to miss with any attack or dodgeable spell - multiplicative with your baseline accuracy. At distance 1, this is a 30% miss chance, increasing by 15% with each tile of distance and capping at 90%. 90% is very high, of course, but for a temporary status effect that already has several forms of counterplay, it *should* feel tactically dubious to just punch through it at its worst. (This also fixes a bug with the previous implementation where *all* beams aimed at monsters would suffer blindness penalties relative to the player's location while the player was blinded - even if the player was not the one firing them!) -------------------------------------------------------------------------------- 33b0d0bbf2 | mumra | 2024-06-21 00:27:21 -0230 Revised formula for player blindness The old formula produced weird cliffs where chance dropped rapdily to 2% at an arbitrary distance, because we were scaling to_hit to *below* the target's ev where it is no longer possible to hit them. The new formula treats target ev as a "minimum" to-hit and scales to near that point instead, using a simple inverse formula to produce a curve. This provides a much smoother and more predictable change over distance while still meeting the basic requirements of "noticable in melee, but extreme at LOS range". The malus is move to pre_roll rather than post_roll as this adjustment *has* to be made before the roll when we still know the margin. Another surprise: it escaped my attention before that ev is applied wildly different in beam accuracy vs regular combat; for beams, the ev is randomised so the effective useful to-hit is 0 instead of the targets ev. So the old formula was already behaving quite reasonably for beams, but the new formula didn't: so now beams pretend that ev is 0 for the purpose of the blindness malus. Other minor changes: - Tweaked language to be less ambiguous - Removed blindness preventing you read scrolls - Don't specifically wake player up on blinding (the cause of the blinding will probably wake them anyway) - Slightly shuffle messaging and other side effects so they don't trigger if blindness didn't increase - Cleaned up an unused key and some unneccessary consts - Fixed some Lua interface comments - Split out the description function from the calculation so the same rendering can be used for beam targetting -------------------------------------------------------------------------------- 8b871bd4d5 | mumra | 2024-06-21 00:27:21 -0230 Blindness visual: fix missing function call -------------------------------------------------------------------------------- 624a8697e9 | mumra | 2024-06-21 00:27:21 -0230 Monster version of Dazzling Flash Now we can blind the player in an interesting way, dazzling flash can be unlocked for player ghosts. The resist mechanism (chance depending on player XL vs spell power) is perhaps not great and should be reviewed. I gave the spell to Moon Trolls slightly arbitrarily as I was testing with them and it felt thematic so I left it in (it's a very rare encounter anyway). -------------------------------------------------------------------------------- 21430ed920 | mumra | 2024-06-21 00:27:21 -0230 Gozag wrath can distract players We now have an effect quite close to disraction, we can blind the player when they see the glint of gold. -------------------------------------------------------------------------------- 99f3dc8830 | mumra | 2024-06-21 00:27:20 -0230 Use blindness for Zin wrath Zin recite can blind monsters so it seems reasonable to do the same to the player. -------------------------------------------------------------------------------- f578f06fe3 | mumra | 2024-06-21 00:27:20 -0230 Add blinding to klown pie effects -------------------------------------------------------------------------------- 224f11bc01 | mumra | 2024-06-21 00:27:20 -0230 Add blinding to possible chaos effects -------------------------------------------------------------------------------- f154754031 | mumra | 2024-06-21 00:27:19 -0230 Add visual effect for blindness A flash overlay with opacity increasing with distance from player -------------------------------------------------------------------------------- 748e439bf7 | mumra | 2024-06-21 00:27:19 -0230 Add an alpha channel to screen flashes Makes it possibly to specify a custom alpha level per tile for a screen flash. Not actually used anywhere in this commit, it's for blindness effect in forthcoming commit. -------------------------------------------------------------------------------- 99b0e4aa55 | mumra | 2024-06-21 00:27:19 -0230 Make flashes consistent in webtiles Webtiles only had a full-screen flash but in desktop it was per-tile (with an optional hitfunc). The colour was already available on screen_cell_t so it was easy to just send this value in the cell json only if it changed, and this even saves redraws as we don't need to invalidate the entire map on a flash, only the changed tiles. And it's much easier on the eyes to boot. -------------------------------------------------------------------------------- 369c5d7d74 | mumra | 2024-06-21 00:27:19 -0230 Blindness: player accuracy debuff Monster blindness has been available in various forms for some time, but there was no equivalent player effect and obvious sources of blindness just Confused the player if anything. The new Blind status can be inflicted on the player with a wand of light and with atropa darts. While affected, your accuracy is reduced; by more the further away the target is. Mechanically your "to hit" roll is reduced by 10% for every tile distance (starting at your own tile) so maximum 80% for a normal race or 90% for Barachi. It affects melee and ranged, and also those spells that care about accuracy, so this has most effect on ranged combat. -------------------------------------------------------------------------------- be225da3e8 | mumra | 2024-06-21 00:27:18 -0230 Make "to-hit" display more accurate and consistent A number of improvements to the % displayed while targetting and also on monster information screens. The existing state of things was not ideal, and not made clearer by a lot of duplication of logic. In some places "to hit" was shown while in other places "to evade", meaning the player has to invert their mental arithmetic arbitrarily. This was supposedly intended to convey that some calculations did not take shield blocking into account but others did; however even this logic was not always applied and some cases of "to hit" were still pre-shield, and regardless there was no way for the average player to understand this distinction. (It also doesn't help that in code language, "to hit" is always the roll *before* accuracy penalties and shields take place). The calculations were also not done at all for thrown projectiles, and I uncovered a bug where due to a double negative, Umbra was actually *increasing* accuracy (but the % display got used the *correct* formula so nobody ever noticed). And different paths implemented different logic for displaying the % (melee vs throwing vs ranged vs spells). This commit fixes all of that; shields are now taken into account in all estimations, the language is changed to consistently "to hit", all forms of to-hit display are calling the same logic, and Umbra is actually penalising accuracy as intended. -------------------------------------------------------------------------------- a50e958451 | DracoOmega | 2024-06-21 00:27:04 -0230 Finally give Bind a proper status icon (regret-index) Reusing the constrict icon was misleading since not only could monsters not escape from it under their own power, but it didn't inflict any damage or EV reduction. I don't know how it took me this long. -------------------------------------------------------------------------------- f8b37b105b | DracoOmega | 2024-06-21 00:27:04 -0230 Place monster non-adjacent to player at start of Duel (elliptic) It could be extremely advantageous to melee characters to always start in melee range of the target they picked (while simultaneously being worse for ranged characters, which Okawaru also explicitly supports). Now instead the duel target will be placed in a random spot in the arena, 3-5 tiles away from the player. The smallest arena wasn't actually large enough to do this if the player started at its centre, so we now randomize your arrival location to one of the corners there instead. I added a small bit of similar randomization to the second-smallest. The larger arenas remain unchanged. -------------------------------------------------------------------------------- d717340134 | DracoOmega | 2024-06-21 00:27:03 -0230 Don't give the player an extra turn in a Duel if the target kills itself -------------------------------------------------------------------------------- 1b3ecf1023 | regret-index | 2024-06-20 22:24:11 -0230 Adjust Kiku titles and the corresponding Ds enemy There's not been much adjustment of piety rank titles in the past decade unless the gods in question were adjusted, which has some silly and rather strange overlaps in contrast with one another as more and more titles are racked up between them. Kiku's is one of the strangest; we've got a 1* "Scholar of Death" as a stepping stone to greater power in contrast to Sif's 4* "Scholar", a 2* "Merchant of Misery" who has no connection to Gozag or any selling in Crawl, a 3* "Artisan of Death" who doubles up on the word death just in case one missed the theme of the god, a 4* "Dealer of Despair" unrelated to Nemelex, and a 6* "Lord of Darkness" unrelated to Dith. Most jarring is the occult symbol title at 5* that even beyond its unfortunate modern associations breaks the naming schema in nearly every way: neither "X of Y" nor a pairing of concrete job and suffering. This adjusts some (if not all) of Kiku's piety titles to focus a little harder on a particularly academic angle of necromancy (helping further distinguish from Yred's more ferverent faith angle), as well as deal with a variety of the prior mentioned matters. This naturally also comes with renaming (and retiling) the Demonspawn enemy that explicitly invokes Kiku and mirrors one of the available titles. These new demonspawn soul scholars are a little less dramatic in their new names, but add a bit more texture to all the intimidation and bluster attached to other unholy matters throughout Crawl (see also Nergalle and Xak'krixis)- it's also no more bland than the current corrupters. They could honestly do with a pretty significant buff on their signature spell anyway (which struggles immensely against extended player defenses), which would coincide well with this rename. -------------------------------------------------------------------------------- dbccd6685e | DracoOmega | 2024-06-18 19:46:52 -0230 Fix Dith shadow mimic and Yred reaping chance not maxing at 6* The former seems to have been uncapped entirely, while the latter falsely believe piety_breakpoint(6) was 6* and not... 255 piety?? (I swear, I am just going to make that mistake in perpetuity) -------------------------------------------------------------------------------- ca6d56b4bc | DracoOmega | 2024-06-18 19:46:11 -0230 Fix/adjust Blorkula the Orcula Being able to kill all of Blorkula's bats before he could reform was probably just a little bit too unlikely, and success was overly binary: if you couldn't kill all of them, there was no benefit to killing *any* of them. Instead, Blorkula will reform with HP missing for each bat lost below 4 (since he splits randomly into 4 or 5) - recovering with only 2/7th HP if only one bat remains. At the same time, the fact that Blorkula had a long cooldown before being able to split into bats a second time was a bit too opaque, and even some players who had killed him repeatedly did not realize. I have added it to the description and now also utilise the 'catching his breath' status to display the cooldown in the status line. I hope this makes it more intuitive. Since it should be a fair bit easier to kill Blorkula in a single fight now, I've minorly nudged up the stats of the bats themselves. (I expect he's still less dangerous overall.) Finally, this fixes a pair of bugs that could sometimes clone Blorkula. Due to erroneous bracketing, if Blorkula 'died' while out of the player's line of sight (or while invisible), bats would be created without removing the humanoid Blorkula (or even injuring it from the deathblow). The bats would eventually form into another Blorkula, resulting in two alive at once. This was exacerbated by timeout_enchantments causing Blorkula to blink randomly at the moment of death, if he was confused when he died (thus increasing the chance of dying out of the player's LoS). This should hopefully be working properly now. -------------------------------------------------------------------------------- f261964bf6 | DracoOmega | 2024-06-18 19:34:16 -0230 Fix a crash with generating wizard apostles at very low power Their secondary spell could have power so low there was no valid spell to go in that slot, resulting in an infinite loop of rerolling. -------------------------------------------------------------------------------- f429392eed | David Lawrence Ramsey | 2024-06-18 14:26:54 -0500 Add another ancestor name. -------------------------------------------------------------------------------- 9260dd1d50 | Isaac Clancy | 2024-06-18 10:56:04 -0500 Improve picking up part of a stack with the mouse -------------------------------------------------------------------------------- 8a41b728e5 | advil | 2024-06-18 08:41:50 -0400 fix: quiet some clang warnings clang now gives warnings on set-but-unused variables (including incremented ones that are never accessed). This commit addresses the ones it found. -------------------------------------------------------------------------------- 023c873f58 | David Lawrence Ramsey | 2024-06-18 02:16:18 -0500 Re-separate priestly god overrides (oops). So they don't fall through to non-priestly monsters. -------------------------------------------------------------------------------- e2b7767857 | David Lawrence Ramsey | 2024-06-18 02:12:02 -0500 Simplify god override logic a bit. -------------------------------------------------------------------------------- 523ca51177 | NormalPerson7 | 2024-06-17 21:32:16 -0500 Rebalance wanderer good staves skill, remove decent staves skill For a while now, staves skill has been completely unbalanced for wanderers, as the wanderer background treated a +0 quarterstaff as if it was equivalent to a +0 falchion/hand axe/mace/short sword, when it is considerably better. This commit makes a +0 quarterstaff the good quality reward for staves skill (instead of a +2 quarterstaff). I have spent some time considering a suitable replacement for decent staves skill, including a random magical staff, a magical staff matching possible magic skills, or simply a -2 quarterstaff. But magical staves are probably a little too niche, and I consider that it might feel bad to start with a -2 unbranded weapon, even if in reality it's okay. So I've just decided to remove decent staves skill as a possibility. After all, there is no staves option for the backgrounds that get a choice of a decent weapon (Mo/Be/CA/CK/Wr/Re), so why should there be for wanderer? [Some data: from a sample of 1,000,000 HuWns, good staves skill occurs about 4.2% of the time, and decent staves skill occurred before this commit about 4.8% of the time. After this commit, other decent weapon and magic skills are each picked about 5.1% of the time.] -------------------------------------------------------------------------------- 0b7e42055f | NormalPerson7 | 2024-06-17 21:32:16 -0500 Slightly improve wanderer stat assignment This is all very theoretical, and wanderer stat assignment is ultimately overwhelmingly random. Make polearms and staves always give an increased chance for strength (instead of coinflip str/dex) and make evocations give an increased chance for a random stat (because all three stats are entirely irrelevant to evocations). This leaves all weapon skills benefitting their damage-increasing stat except throwing and UC (which I feel thematically have much better claims at being random str/dex). Fighting and shapeshifting appropriately give random str/dex. From a sample of 1,000,000 both before and after this commit, this changes the average str/int/dex assigned by the background for HuWn from 3.55/3.75/4.69 to 3.75/3.89/4.35. The objective is very much not to reach 4/4/4 as species tend to give more str and backgrounds tend to give more dex on average. But this seems acceptable to me. -------------------------------------------------------------------------------- 4b47c47490 | NormalPerson7 | 2024-06-17 21:32:16 -0500 Force wanderers to get three unique skills, reorder skill adjustments Put the adjustments to wanderer's skills earlier in the wanderer process, so that skills are rerolled instead of being assigned to SK_NONE whenever incompatible (shield + 2-h weapon) or duplicate skills are chosen. This allows wanderer stat assignment to use the reassigned skills, and it forces wanderer to actually choose three unique skills, instead of just abandoning one of them if a duplicate was picked and replacing it with random skill levels and a decent consumable. I have retained the behaviour that you can't get two pieces of armour, and that the second skill out of armour, dodging and decent stealth gives a decent consumable instead, but now assign the skill levels normally instead of ditching the decent skill altogether. -------------------------------------------------------------------------------- 47c2c9e938 | David Lawrence Ramsey | 2024-06-17 20:28:14 -0500 Update documentation for monster god YAML. -------------------------------------------------------------------------------- c5d1addcfd | David Lawrence Ramsey | 2024-06-17 12:09:03 -0500 Set monster gods in YAML. _place_monster_set_god() is now place_monster_maybe_override_god(). It can override the YAML-set god (orc Beogh-worshippers and unbelievers, Xom-adopted holies in the Abyss), and gives any priestly monsters with no god set the nameless god, just like the old code, except without the explicit genus checks. The explicit genus checks were redundant anyway, since they all fell through to the default case. The old code included a comment that all (non-priestly) angels and daevas worship TSO, except for Mennas. However, the actual code made all (non-priestly) holies worship TSO except for Mennas and apises (Elyvilon worshippers); seraphim were explicitly set as TSO worshippers. I've made the new code give angels and daevas who normally worship TSO a chance to worship Xom in the Abyss; doing that for all holy beings who worship TSO would override seraphim. Also, make orc apostles explicitly worship Beogh, instead of leaving it as a 6-out-of-7 chance for the non-priestly ones. It doesn't make sense for the latter to be unbelievers. -------------------------------------------------------------------------------- be31ae4084 | David Lawrence Ramsey | 2024-06-17 11:22:21 -0500 Fix comment typo. -------------------------------------------------------------------------------- 7f99e5bb7e | David Lawrence Ramsey | 2024-06-17 08:29:50 -0500 Set the god wrath avatar's god properly. It should have the god whose wrath it represents. -------------------------------------------------------------------------------- 753a682cf0 | David Lawrence Ramsey | 2024-06-16 08:42:51 -0500 Change apostrophe usage back in one case (wheals) Since "lotus" is not a proper name. (Although its apostrophe usage could technically go either way; the rules are not consistent.) -------------------------------------------------------------------------------- bbce87da4e | David Lawrence Ramsey | 2024-06-16 08:31:24 -0500 Fix spacing. -------------------------------------------------------------------------------- abf264ae7c | David Lawrence Ramsey | 2024-06-15 16:44:51 -0500 Add another fruit name to artefacts. -------------------------------------------------------------------------------- 748c53551c | David Lawrence Ramsey | 2024-06-15 16:27:28 -0500 Add another Xom lava message. -------------------------------------------------------------------------------- 12c7e32266 | David Lawrence Ramsey | 2024-06-15 16:09:28 -0500 Fix more apostrophe usage. -------------------------------------------------------------------------------- 2324582093 | David Lawrence Ramsey | 2024-06-15 15:24:54 -0500 Construct proper possessive monster names. Apostrophise them properly, and use e.g. "@The_monster_possessive@" and @The_something_possessive@ instead of "@The_monster@'s" and "@The_something@'s". -------------------------------------------------------------------------------- a62346c5fa | David Lawrence Ramsey | 2024-06-15 15:21:51 -0500 Construct proper possessive player names. Apostrophise them properly, and use "@player_name_possessive@" instead of "@player_name@'s". -------------------------------------------------------------------------------- 1b1507a7a7 | David Lawrence Ramsey | 2024-06-15 15:21:47 -0500 Construct proper possessive god names. Apostrophise them properly, and use "@god_name_possessive@" instead of "@god_name@'s". -------------------------------------------------------------------------------- 3d6a2cece9 | David Lawrence Ramsey | 2024-06-15 15:18:26 -0500 Use @Subjective@ in Zenata speech. Accordingly, make subjective and objective pronouns get capitalised properly dependent on the case of the tag, so that they aren't always lowercase when in the middle of a line, as in Zenata's dialogue. -------------------------------------------------------------------------------- d5ad79822a | David Lawrence Ramsey | 2024-06-15 14:31:53 -0500 Fix typo. -------------------------------------------------------------------------------- d2a126e119 | David Lawrence Ramsey | 2024-06-15 13:54:26 -0500 Replace duplicate word in Crazy Yiuf speech. Use "knee" instead of "hand" a second time. -------------------------------------------------------------------------------- b736c20c39 | David Lawrence Ramsey | 2024-06-15 13:46:59 -0500 Fix capitalisation. -------------------------------------------------------------------------------- e40d03d5a3 | David Lawrence Ramsey | 2024-06-15 12:47:26 -0500 Fix apostrophe usage. -------------------------------------------------------------------------------- 823a3ec96b | David Lawrence Ramsey | 2024-06-15 12:42:15 -0500 Fix punctuation. -------------------------------------------------------------------------------- 088a3bca6d | DracoOmega | 2024-06-14 14:34:20 -0230 Fix a crash with xv-ing Nessos -------------------------------------------------------------------------------- 4b4f0a9da8 | NormalPerson7 | 2024-06-14 14:34:20 -0230 Add x-v row showing primary melee damage/flavour for ranged monsters Except for Nessos, monsters never apply an attack flavour to their ranged attacks. Previously, x-v would pretend that monsters' ranged weapon attacks additionally applied their primary melee attack's flavour - this most notably applied to salamanders. Fix this. So that the player can always see the attack flavour of a monster's primary melee attack, add an additional row to the attacks table for monsters that wield a ranged weapon to show the base melee damage and flavour of the monster's primary melee attack. Ideally, we would show the damage of the monster's alternate weapon (if they have one) if and only if the player has already seen them wield it. However, this information is currently not tracked by the game, and would require a disproportionate amount of work to implement for what is a very minor improvement. [Note: while I believe a monster cannot dual-wield or dual-fire ranged weapons at present, the code does not assume this, in case it becomes possible in the future.] -------------------------------------------------------------------------------- 2c2fcc182a | NormalPerson7 | 2024-06-14 14:34:20 -0230 Split up and clean up _monster_attacks_description _monster_attacks_description was becoming a monster, and, without this commit, the changes in the following commit would have grown it even further. Split it up into several helper functions, and tidy up some unnecessary code (e.g. we don't need to check weapons for ARTP_SLAYING). -------------------------------------------------------------------------------- 02f1baff1b | NormalPerson7 | 2024-06-14 14:34:20 -0230 Treat ghost/pan lord brands like other brands on x-v There seems to me to be no reason to treat these differently now that normal weapons have their maximum brand damage shown together with their normal damage numbers. Ghosts will now have their attacks shown as "Hit: weapon of " and pan lords as "Hit: touch". I admit that this is ultimately a loss of information on the x-v screen, but it also makes x-v more universally consistent. Also, properly include might/berserk/weak effects for the calculation of max brand damage. Perhaps we could add weapon brands to ?/ at some point to improve the transparency of what each brand actually does. -------------------------------------------------------------------------------- c23e6531e3 | NormalPerson7 | 2024-06-14 14:34:20 -0230 Don't imply melee-only buffs affect ranged weapon damage on x-v Applies to might, berserk, idealised (not that there's currently any way to get a ranged ancestor anyway) and weak. -------------------------------------------------------------------------------- e41de2be01 | dependabot[bot] | 2024-06-14 14:10:25 -0230 Bump tornado from 6.4 to 6.4.1 in /crawl-ref/source/webserver/requirements (#3857) Bumps [tornado](https://github.com/tornadoweb/tornado) from 6.4 to 6.4.1.
Changelog

Sourced from torna do's changelog.

Release notes

.. toctree:: :maxdepth: 2

releases/v6.4.1 releases/v6.4.0 releases/v6.3.3 releases/v6.3.2 releases/v6.3.1 releases/v6.3.0 releases/v6.2.0 releases/v6.1.0 releases/v6.0.4 releases/v6.0.3 releases/v6.0.2 releases/v6.0.1 releases/v6.0.0 releases/v5.1.1 releases/v5.1.0 releases/v5.0.2 releases/v5.0.1 releases/v5.0.0 releases/v4.5.3 releases/v4.5.2 releases/v4.5.1 releases/v4.5.0 releases/v4.4.3 releases/v4.4.2 releases/v4.4.1 releases/v4.4.0 releases/v4.3.0 releases/v4.2.1 releases/v4.2.0 releases/v4.1.0 releases/v4.0.2 releases/v4.0.1 releases/v4.0.0 releases/v3.2.2 releases/v3.2.1 releases/v3.2.0 releases/v3.1.1 releases/v3.1.0 releases/v3.0.2 releases/v3.0.1 releases/v3.0.0 releases/v2.4.1 releases/v2.4.0 releases/v2.3.0

... (truncated)

Commits
  • 2a0e1d1 Merge pull request #3388 from bdarnell/release-641
  • b7af4e8 Release notes and version bump for version 6.4.1
  • d65f6e7 Merge pull request #3387 from bdarnell/chunked-parsing
  • 8d721a8 httputil: Only strip tabs and spaces from header values
  • 7786f09 Merge pull request #3386 from bdarnell/curl-crlf
  • fb119c7 http1connection: Stricter handling of transfer-encoding
  • b0ffc58 curl_httpclient,http1connection: Prohibit CR and LF in headers
  • 0efa9a4 Merge pull request #3385 from bdarnell/update-black
  • 2757c6e Merge pull request #3384 from tornadoweb/dependabot/pip/requests-2.32.2
  • 291d1b6 *: Update black
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?depend ency-name=tornado&package-manager=pip&previous-version=6.4&new-version=6.4.1)](h ttps://docs.github.com/en/github/managing-security-vulnerabilities/about-dependa bot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/crawl/crawl/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -------------------------------------------------------------------------------- e0739fc0ca | DracoOmega | 2024-06-14 14:04:49 -0230 Improve stumbling into unknown walls with LoS 0 (elliptic) Instead of printing no message at all, instead print a message about feeling something solid and map the tile the player bumped into so they can remember this. -------------------------------------------------------------------------------- 9aaa1af74f | DracoOmega | 2024-06-14 14:03:39 -0230 Don't warn that Permafrost Eruption might hit cold-immune allies Since it will never be aimed at them directly, the only collatoral damage it can ever do is cold. Closes #3863 -------------------------------------------------------------------------------- eb6dff901a | DracoOmega | 2024-06-14 03:16:15 -0230 Fix Charming breaking immediately (Undo) Broken by e42ff28ed44e11e251d firing ME_ANNOY after the enchantment effect instead of before. I opted to solve this by just not considering BEAM_CHARM to be nasty to a monster you're aligned with, which seems to work well enough. -------------------------------------------------------------------------------- a2480ef707 | David Lawrence Ramsey | 2024-06-13 23:19:19 -0500 Update mut_species.lua test for current species. The species list in it now includes all current species except for demonspawn, whose mutations are tested separately from the others. -------------------------------------------------------------------------------- 23b81e505f | DracoOmega | 2024-06-14 01:31:36 -0230 Fix a possible crash -------------------------------------------------------------------------------- 6e0f240ce6 | DracoOmega | 2024-06-14 00:35:14 -0230 Let ranged bump attack work with sight range 0 (elliptic) Currently, if the player has a sight range of 0 (ie: during the first turns of Primordial Nightfall), trying to move into a monster will say "You can't see that place." and consume your turn without doing anything. For more consistency with melee attacks, this aims to let you try to shoot whatever you bump into in this case. Since ranged attacks use beams to create their ranged_attack (and beams can't be aimed out of your LoS like this), this short-circuits that part if your vision radius is 0 and makes the ranged_attack directly. I am not really happy with this implementation and would like to come up with something a little nicer (though I'm not sure how plausible this is), but it seems to produce the desired functionality at present. -------------------------------------------------------------------------------- cabffc2860 | DracoOmega | 2024-06-14 00:35:14 -0230 Remove beam code left over from lamps of fire -------------------------------------------------------------------------------- 50798860ff | DracoOmega | 2024-06-14 00:35:14 -0230 Make coglin shadow mimics wield weapons in random hands Compared to players, this *almost* never matters, since monsters can't stab and their weapons are always unbranded. But technically if a player was wielding an axe and a non-cleaving weapon, it would be optimal to have the axe in the main hand so the shadow could always cleave even if the main target died. -------------------------------------------------------------------------------- ec5035c421 | DracoOmega | 2024-06-14 00:35:14 -0230 Give Coglin ranged mimics a shot with their offhand weapon -------------------------------------------------------------------------------- 74f68ee730 | DracoOmega | 2024-06-14 00:35:14 -0230 Let coglin melee shadows attack with both weapons Shadow mimics of coglin players get a second attack, wielding a shadow copy of their offhand weapon (if they have one). This probably doesn't play nice with shadow positioning if the player is wielding a polearm and a non-reaching weapon at the same time, but hopefully that is a niche enough situation not to worry about it for now. -------------------------------------------------------------------------------- e42ff28ed4 | DracoOmega | 2024-06-14 00:35:13 -0230 Alert monsters hit by enchantments *after* the enchantment effect This is aimed primarily to avoid the relatively-common situation of casting Ensorcelled Hibernation on a wandering monster that is unaware of you, and this causing it to shout and wake up other monsters immediately, even when the spell successfully puts it to sleep. Now (like non-enchantment beams), the monster is alerted only *after* the effect happens - and being asleep will stop them from shouting. This technically buffs a similar situation with paralysis wands and maybe a few others, but that seems fine. I am slightly concerned this might have unforseen consequences (since it's not obvious if there was a *reason* behavior events were fired early in this function), but I guess we'll see them if we see them. -------------------------------------------------------------------------------- a58bd73f9f | DracoOmega | 2024-06-14 00:35:13 -0230 Change Piledriver damage formula Piledriver asks some unique positioning questions of the player and can do very solid damage for a low-level spell when the player lines up a max distance shot with it. However, because it was tied to the default collision damage formula, distance could only scale the dice *size*, meaning that even a high power Piledriver would often wiff. This is not unusual for spells in Crawl, but for Piledriver it was especially bad. Lining up a good shot often takes multiple turns of setup and cannot simply be repeated immediately (or perhaps at all), *and* often asked the player to lunge into a more dangerous position in the process. Especially as a starting spell of a weaker background, the payoff needs to feel more reliable for people to invest the necessary skill points (and also do what the spell asks of them). To that end, instead of 2d(X-Y) damage, Piledriver now does (3-9)dX damage. (Average damage should remain similar, and the ratio between min and max distance shots also remains similar (4 tiles was ~3x as strong as 1 tile). High rolls may be a little less common, but making it far less likely not to get *a* relevant amount of damage may hopefully make it feel better to use. -------------------------------------------------------------------------------- 860313677f | DracoOmega | 2024-06-14 00:35:13 -0230 Refactor collision damage and adjust several things about it. Previously, all knockbacks/collisions which could inflict damage did so via a fixed formula contained in actor::collide (though the power supplied to this formula varied greatly based on source). This made it slightly inflexible for things which wanted to do more specific things with how they applied collision damage (ie: Gavotte or Piledriver caring about the distance a monster has travelled before the collision). actor:collide now instead takes a pre-AC damage number that it will apply to the colliding actors, if applicable. This is in anticipation of a future adjustment to Piledriver's damage, but is more flexible in general. This commit also makes several other changes in the process: -Primal Wave and Mud Breath no longer inflict collision damage. This happened fairly rarely for Primal Wave, due to low knockback distance and being most common in very open areas, but could inflict up to 2d25 additional damage when it happened (which wasn't indicated by xv!). I nudged the spell damage up slightly in exchange for no longer causing nasty surprises if the beam angle lines up just so. (Mud Breath, due to way in which collison damage was calculated, only did 2d3 by XL 27...) -Force Lance knockback distance and chance no longer scale with spellpower (all current casters are pretty similar anyway) -Wind Blast and Force Lance collision damage should be indicated by xv -Brom's Barrelling Boulder inflicts no collision damage when it cannot displace an actor (it was only ever 2d2 anyway) -Force Lance (the weapon) has a higher minimum collision damage it can inflict (now that such things are easy to add) and overall does more collision damage in general. (It's one of the fun points about the weapon that nudges you to use it differently, and I've never heard anyone say it was especially strong) Unless stated otherwise, damage from other effects should not have changed. -------------------------------------------------------------------------------- e112003704 | DracoOmega | 2024-06-14 00:35:13 -0230 Let Harpoon Shot pull monsters This seems to have never functioned, even though the code for it clearly assumed things other than the player *could* be pulled (eg: there was code to check if the player could see the actor being pulled). There doesn't seem to be any particular reason to prevent monsters from being pulled by this (and in fact, warrior apostles can come with Harpoon Shot because I assumed it could do something!). -------------------------------------------------------------------------------- d50b3fb463 | David Lawrence Ramsey | 2024-06-12 21:12:43 -0500 Checkwhite -------------------------------------------------------------------------------- 65f5bb9f5d | David Lawrence Ramsey | 2024-06-12 21:11:42 -0500 Fix spelling and tweak wording. -------------------------------------------------------------------------------- a602a137e7 | regret-index | 2024-06-12 23:35:48 -0230 Changelog updates to be6e7be4eb9 Mostly just describing the new Dithmenos overhaul. -------------------------------------------------------------------------------- d8fb119709 | regret-index | 2024-06-12 23:35:48 -0230 Vault review + Snake decor odds increasing Of note: * Took the no_tele_into out of some Zot and Vaults entry vaults. There's not really any obvious reason to avoid dangerous teleports in specific entry vaults but not most others. * Since we've got about 27x2 decorative vaults exclusive to Snake after 181dc37 and a couple of decorative features options in particular that help them stand out relative to other branches, I've given Snake:3-4 the same 33% extra chance to place decorative vaults that Zot:1-4 got in f5be29c. The branch has difficulties with standing out versus other Lair branches each brandishing obvious terrain feature differences, so this should help it out a little more on its identity front versus D itself. In exchange, a couple of luniq_ and uniq_ tags were thrown around in and out of snake.des to not completely submerge Snake levels in water, lava, or coloured glass. -------------------------------------------------------------------------------- bced643967 | David Lawrence Ramsey | 2024-06-12 15:58:02 -0500 Remove obsolete glowing mutation description. -------------------------------------------------------------------------------- b53bcb1ace | DracoOmega | 2024-06-12 17:36:05 -0230 Fix misnamed shadow spell (Necromancer22) (This also meant its description was missing) -------------------------------------------------------------------------------- 882d200727 | Nicholas Feinberg | 2024-06-12 16:31:55 -0230 Probably fix webtiles offhand weapon display -------------------------------------------------------------------------------- 3a74b83753 | DracoOmega | 2024-06-12 16:16:52 -0230 *Actually* remove the Noise Suppression mutation from the game I dummied it out, but missed setting the weight to zero, so it could still be gotten by players (but would do nothing). (Also remove a stray description) -------------------------------------------------------------------------------- 34fece25b4 | DracoOmega | 2024-06-12 16:16:52 -0230 Don't shift players arriving on stairs with no_tele_into (grumposus) I'd thought this logic was a fallback only used if the position the player was arriving on was unsafe, but in fact it was call every time regardless. This meant we would shift the player merely because they were in a no_tele_into zone, even if where they were standing was perfectly safe. Now we should probably only care about no_tele_into if we have to move the player at all. -------------------------------------------------------------------------------- 9b860b2f1f | David Lawrence Ramsey | 2024-06-12 13:01:34 -0500 Add desc for unrand scarf of invisibility. Since there's one for the unrand amulet. -------------------------------------------------------------------------------- 9407733e47 | David Lawrence Ramsey | 2024-06-12 11:37:53 -0500 Add quote aliases for acrobat/reflection amulets. These are all sorted, except for the amulet of nothing at the end. -------------------------------------------------------------------------------- 98076e6198 | David Lawrence Ramsey | 2024-06-12 11:27:32 -0500 Properly rename ring of willpower tile. It's now i-willpower.png instead of i-r-magic.png, since the term magic resistance is no longer used. -------------------------------------------------------------------------------- c9bec69f6a | David Lawrence Ramsey | 2024-06-12 11:24:08 -0500 Rings of life protection enum -> positive energy. This matches the in-game naming of the item, and makes the ring quotes actually sorted. Rename the associated tile accordingly. -------------------------------------------------------------------------------- ea9a0aee67 | David Lawrence Ramsey | 2024-06-12 11:12:03 -0500 Add quote alias for ring of stealth. -------------------------------------------------------------------------------- 7c37e35bdb | David Lawrence Ramsey | 2024-06-12 11:11:11 -0500 Sort quotes for rings. These are now in alphabetical order (mostly). -------------------------------------------------------------------------------- 5c610d4edf | David Lawrence Ramsey | 2024-06-12 11:01:28 -0500 Move wand of mindburst's quote alias. It's now in alphabetical order like the other wands, instead of in the same position it was in when it was called the wand of disintegration. -------------------------------------------------------------------------------- 6cc9bafbc4 | David Lawrence Ramsey | 2024-06-12 11:00:49 -0500 Add missing quote aliases for other wands. All of them should be covered now. -------------------------------------------------------------------------------- d6a05a151d | David Lawrence Ramsey | 2024-06-11 23:13:32 -0500 Add quote alias for wand of warping. -------------------------------------------------------------------------------- 4bbee2eeb2 | David Lawrence Ramsey | 2024-06-11 23:04:24 -0500 Fix punctuation in quote citations. -------------------------------------------------------------------------------- d4d5bcc6f4 | DracoOmega | 2024-06-11 21:33:53 -0230 Allow Cloak of the Thief to stack with Dith 1* power It may not have been obvious that it did not, and it seems like an unrand probably shouldn't just do nothing for Dith worshippers like this. -------------------------------------------------------------------------------- e82873c70e | DracoOmega | 2024-06-11 21:20:49 -0230 Don't return from the Abyss into inaccessible areas If a character with temporary flight was banished over lava or deep water, upon departing the Abyss, they would be placed on the nearest safe tile they could occupy - but this displacement did not respect no_tele_into and could sometimes result in them landing in places the player was never supposed to be able to enter (and possibly trapping them there). This does mean we will sometimes push the player further than necessary (if they got banished in this way from a ghost vault somehow), but that seems more harmless than the behavior it's replacing. (This scenario also applies to Duel, by the way) -------------------------------------------------------------------------------- d887a3bc58 | DracoOmega | 2024-06-11 21:15:58 -0230 Include apostle short descriptions in Beoghite character dumps Since one's apostles are really a significant part of a Beogh worshipper's power and worth recording/listing. (This uses the same format of description as seen on the Extra religion screen) -------------------------------------------------------------------------------- cafd96f65b | DracoOmega | 2024-06-11 18:55:08 -0230 Rework Okawaru's Duel ability somewhat Duel was an ability with great flavor that, in practice, was usually best used in ways that went against that flavor - by duelling relatively harmless enemies so that the player could stall to heal up. Using it against genuinely scary enemies often meant trapping the player in a fight against them with no escape options and limited reward for doing so. This aims to improve that situation by tweaking a few things about how Duel works. When you start a duel, the player will now instantly heal for half of their missing health. But when the duel ends, your hp/mp will be reset to whatever they were when the duel *started*. This means simultaneously that there is no benefit to stalling to heal (you'll just lose that health when the duel ends), but also that you sometimes stand to benefit greatly from taking a risk (getting a large heal when at low hp, or undoing any battle damage from one scary monster before you fight others) Duels also now end instantly once the main target is dead. All items on the floor are automatically gathered up and deposited at the player's feet, where they exit. (In the rare case of the player standing over deep water or lava, an Okawaru altar will be made at their feet to ensure the items are not lost.) Finally, the piety of cost of duel is also significantly reduced, such that it is equivalent to Finesse. -------------------------------------------------------------------------------- c8ab930618 | advil | 2024-06-11 15:07:37 -0400 fix: handle some webtiles race conditions Most of this was found while debugging cao behavior when out of disk space. A number of extremely strange race conditions could happen when game startup fails in unusual ways, as well as in a subsequent attempt to shutdown the server. This commit tries to handle these a bit better. Unfortunately, the best solution I found for the big one (a race condition after fork, but before execvpe overwrites python) is simply to delay so that execvpe takes hold; fork + asyncio is not well behaved. See: https://github.com/python/cpython/issues/66197 As far as I can tell, the promised solutions of safely closing the event loop in a child never materialized. -------------------------------------------------------------------------------- 01dcfa0dcd | DracoOmega | 2024-06-11 13:57:22 -0230 Fix Beogh ally-heal-on-damage not being active until 4* When the UI claims 3*. (I never seem to remember that piety_breakpoint(3) is actually 4* because why the heck would it be? >.>) (Note: it didn't even check your piety level at all until a couple days ago, but it seemed better to have it match up with the UI's claims. It wasn't really a balance adjustment, since it shows up as soon as you can get apostles in the first place.) -------------------------------------------------------------------------------- 18c097c992 | DracoOmega | 2024-06-11 13:05:51 -0230 Fix an obvious typo (ge0FF) -------------------------------------------------------------------------------- 14a633c46e | DracoOmega | 2024-06-11 13:00:03 -0230 Fix marionette spell markers being visible outside monster lookup (ge0FF) They were still showing up next to spells in books the player was examining. -------------------------------------------------------------------------------- 9bcd2ff519 | David Lawrence Ramsey | 2024-06-11 00:21:15 -0500 Remove doubled word in Primordial Nightfall desc. -------------------------------------------------------------------------------- 2b8cd2b559 | David Lawrence Ramsey | 2024-06-10 17:26:53 -0500 Fix spelling. -------------------------------------------------------------------------------- fa1790ab66 | David Lawrence Ramsey | 2024-06-10 16:39:57 -0500 Add another Screaming Sword line. -------------------------------------------------------------------------------- 77ad410699 | DracoOmega | 2024-06-10 16:54:01 -0230 Fix * next to some spell names for non-Dith worshippers (ge0FF) This was meant to indicate an interaction with Aphotic Marionette. The full description of what the * was indicating was properly hidden for non-Dith worshippers, but a logic error meant that the asterisk itself was still visible for everyone (confusingly). -------------------------------------------------------------------------------- aeb9cdf509 | DracoOmega | 2024-06-10 15:05:04 -0230 Remove some restrictions on where apostle challenges can happen (various) A variety of concerns have been expressed about the gameplay dynamics of blocking apostle challenges on rune floors, and their hidden nature. I still have some significant reservations of my own about changing it (particularly as concerns V:$), but with the HP threshold for challenges being a small bit more generous, we can give it a try to removing these for now. (I left Zot:5 vetoed for now, but the rest of Zot has also become eligible.) -------------------------------------------------------------------------------- 2d498743f0 | DracoOmega | 2024-06-10 14:47:00 -0230 Change Nightfall stealth bonus (elliptic) While the bonus was fairly sizeable, it still didn't do enough to counter the major penalties from heavy armour characters (thus defeating one of the purposes of the bonus - making Nightfall feel more consistent). Instead of giving you 100 stealth, it now caps your minimum stealth at 100. This might technically be a nerf to very stealthy characters using it, but I doubt it's one they could even notice. -------------------------------------------------------------------------------- 1b2b8bafc6 | DracoOmega | 2024-06-10 14:39:37 -0230 Add 'Nightshade' as a Dithmenos title for Vine Stalkers (Flugkiller) -------------------------------------------------------------------------------- 9f789a9292 | DracoOmega | 2024-06-09 21:49:05 -0230 Tweak Dithmenos wrath Instead of summoning demons and undead to harass the player, Dithmenos can now summon multiple shadow puppets (whose damage scales with the player's level) with a chance to slow the player at the same time, or animate the player's shadow against them as an active hostile monster. The hostile player shadow can know a single shadow spell drawn at random from the schools of spells the player knows. A handful of these don't really work when cast by an independent shadow and so are excluded for the moment. I'd still like to do something with the Dith wrath option that puts you to sleep, but this at least excises the 'arbitrarily evil' part of the wrath. -------------------------------------------------------------------------------- 443a00b34a | DracoOmega | 2024-06-09 21:49:05 -0230 Add a targeter to indicate which enemies will be misled by Shadowslip I've seen a little uncertainty sometimes why some monsters were or were not affected by this effect (possibly because the monsters weren't targeting the player at the time), so now it hilights all such monsters before cast. I'm a bit concerned now that it might be misleading in a different way for hilighting something different than 'where the player will move' but I hope at least that part is unambiguous enough with experience to not require it? -------------------------------------------------------------------------------- c9175b0889 | DracoOmega | 2024-06-09 21:49:05 -0230 Fix a few breaks in mons_cast that should be returns Breaks in the giant switch statement led to a default behavior of firing the beam which is always passed into this function, after whatever the spell's own effect was. In almost all cases, there should be a return statement after the spell's code block instead (although at least two cases do this break intentionally...) Mostly, the effect of this seems to be invisible, though it caused Marionette to crash when casting Summon Scorpions due to firing a beam with no source position specified. I'm actually not sure why normal casting of this spell *doesn't* crash, since setup_mons_cast() doesn't fill that info in for the spell either (since it's not supposed to be *using* that beam), but I will just assume something somewhere else along the way of the normal cast path superfluously fills in this information. f -------------------------------------------------------------------------------- 58e5f1b3e6 | DracoOmega | 2024-06-09 21:49:05 -0230 Don't let monsters perform reach attack from out of sight When using Primordial Nightfall -------------------------------------------------------------------------------- 82c59061e6 | DracoOmega | 2024-06-09 21:49:05 -0230 Make Primordial Nightfall give a stealth bonus while active The ability could sometimes be less effective than expected if the player's base stealth was very low (with a few corner cases where that could even be exploited, such as attacking orbs of fire with LoS 0 and 0 Stealth and having them refuse to wander away) This should hopefully make cheese less practical while making it feel a little better in other cases. -------------------------------------------------------------------------------- 38f5e135ac | DracoOmega | 2024-06-09 21:49:05 -0230 Make shadow mimic play less poorly with Ensorcelled Hibernation Due to its schools, casting EH can trigger either Shadow Torpor or Creeping Shadow, both of which are capable of immediately waking up what you just put to sleep, which is extremely bad playfeel for Enchanters - an archetype Dith specifically wants to support. Shadow Torpor now in general doesn't wake sleeping monsters (it seems harmless to slow a sleeping monster). I think it would be more problematic if Creeping Shadow *also* didn't wake sleeping monsters in general (or we might get people spamming Ozo's Armour at the end of LoS to take out sleeping bands...) but the current gameplay is so bad that I'm making it 'cheat' a little and not wake up sleeping monsters that have specifically been put to sleep via Hibernation. -------------------------------------------------------------------------------- 7207012e00 | DracoOmega | 2024-06-09 21:49:05 -0230 Adjust Dithmenos flavor They are no longer an evil god who focuses on corruption-via-darkness, but rather a neutral god of night and of things half-seen in the dark. In keeping with this, Dithmenos now operates on exploration piety instead of kills - they want you to venture into the dark hidden places of the dungeon, as one might wander the night, and discover what lurks there. Since Dith's entire ability context is already changing, upending piety rate ought to be doable without any greater concern than the god rework as a whole has. This commit also replaces all existing titles. One reference umbra (which Dith no longer uses), another referenced 'Endless' night (when you now have a Nightfall ability that explicitly ends and whose description talks about how night always gives way to day), and more references a hatred of fire that is also long-gone. So it felt like a chance to do them over from scratch. -------------------------------------------------------------------------------- 393c3b82af | DracoOmega | 2024-06-09 21:49:05 -0230 Aphotic Marionette (new Dithmenos 4* ability) An activated ability that allows the player to grab hold of an enemy through their shadow and force them to unleash a barrage of spells as if it were the player casting them. In a single action, the enemy will run through their known spells (in random order), attempting to cast each on random targets hostile to the player, and repeating spells only once all valid spells have been cast once. Creatures they summon this way will belong to the player and many beneficial effects that they would apply to themselves will be applied to you instead (such as Might or Invisibility). You are also fully protected from any damage they would cause (ie: if you force Nikola to repeatedly cast Chain Lightning). A handful of spells are not eligible to be cast this way (either because they would be useless, harmful, or are currently broken in some fashion), but these are all clearly indicated with an ‘!’ when examining an enemy. Can only ever be used successfully on given enemy a single time, period. (In some cases, such as an enemy having a single spell that is theoretically valid but which no enemy is in range of, using Marionette may have no useful effect. In those situations, most of the piety cost is refunded and you will able to try again another turn). By default, attempts to cast 3 spells by the targeted enemy, though at very high levels of invocations, this number can be raised as high as 6. ---- The implementation of this is fairly complicated, but I have mostly tried to avoid doing anything *inside* the code of existing spells (with just a couple small exceptions). However, wonky as it is in some ways, I think the net effect feels really cool and meaningfully different than charming, and rounds out Dith's kit as abilities that never directly damage or summon anything but manipulate existing monsters and their ability to act against you through trickery. (I do plan to do a little more refactoring to this later, but it should largely function as-is. Somewhat unclear about what the piety cost should be, since it varies from fairly disappointing to extremely powerful depending on what is around to use it on, but that's some of what experimental branches are for) -------------------------------------------------------------------------------- d9fb448ec8 | DracoOmega | 2024-06-09 21:49:04 -0230 Implement new Dithmenos spell shadow mimic Old spell mimic was a very fickle thing, working properly with fewer and fewer spells over the years as more of them stopped being simple targeted effects (and even those which were often needed special-case logic to prevent, say, immediately cancelling Teleport Other on a monster or immediately destroying your own boulder with a shadow shard). However, the idea of god passive that works differently based on what magic the player themselves is using is a good one, so I have attempted to make a consistent version of this. Whenever you cast any spell, there is a chance for your shadow to cast a 'shadow spell' corresponding to the school of the spell you cast (chosen at random for multi-school spells). These spells mimic something of the *style* of that school of magic, but not the substance - doing non-elemental damage or otherwise being irresistable. The shadow spell list is: Fire: Shadowball (like Fireball, but irresistible.) Ice: Creeping Shadow (like Creeping Frost, except irresistible and with a somewhat smaller range.) Earth: Shadow Shard (single target, high damage projectile.) Air: Shadow Tempest (smite-targeted (but dodgeable) damage that strikes between 30-50% of all visible enemies + 1) Alchemy: Shadow Prism (make a shadow prism that works like a fulminant prism, but is somewhat harder to hit and deals no damage to allies) Conjurations: Shadow Beam (a penetrating damaging beam) Necromancy: Shadow Draining (3x3 damaging burst centered on the shadow which ignores enemy AC.) Summoning: Shadow Puppet (minor ally with swoop/flank/constricting attacks whose base damage scales with spellpower. Summon cap of 3.) Hexes: Shadow Torpor (penetrating beam that applies low-duration Slow to enemies. Ignores Will and always succeeds, though the duration is reduced by enemy HD versus spellpower.) Translocations: Shadow Bind (short-duration Bind (ie: no movement) effect to a random number of enemies in LoS. Spellpower make it affect more enemies at once.) The spellpower of your shadow is based on a function of your XL and the level of the spell which triggered it. (Each spell level is worth 4 Xls) All shadow spells are silent and inflict no damage to the player or their allies. This resist-ignoring boost provides a different vector of supporting spellcasters than current spellcasting gods. You aren't given new spells or the ability to cast them any better, but you *do* get built-in versatility and bonus damage in a way that should feel different depending on what sort of caster you're playing) (Credit to regret-index for the shadow puppet tile and most of the spell icons) -------------------------------------------------------------------------------- 357ea4826f | DracoOmega | 2024-06-09 21:49:04 -0230 Refactor Creeping Frost Simplifies some of the code a little, while also allowing future effects to perform the same 'burst from walls' effect with a smaller radius and different beam properties. There should (hopefully) be no meaningful functional change to the spell. -------------------------------------------------------------------------------- db99905527 | DracoOmega | 2024-06-09 21:49:04 -0230 Add a special mid to simulate being a player shadow For tracers where the shadow does not yet exist, but where we wish to trace from the perspective of a potential one. -------------------------------------------------------------------------------- 5a209e1d8c | DracoOmega | 2024-06-09 21:49:04 -0230 Allow beam tracers to work without an agent This is specifically for shadow mimic spell tracers here, where the shadow monster may not yet exist (yet we need to trace from the shadow's perspective to account for being able to shoot through the player). -------------------------------------------------------------------------------- ff88027d6e | DracoOmega | 2024-06-09 21:49:04 -0230 Force summons created by player shadows to count the player as summoner Instead of the shadow itself, which often will not even last a turn, causing the summons to immediately poof. -------------------------------------------------------------------------------- 7a8788ee89 | DracoOmega | 2024-06-09 21:49:04 -0230 New Dith 5* ability: Primordial Nightfall Immediately reduces the player's sight radius to 0 and then slowly restores it to normal over the duration of the effect. Cannot be reapplied until it has fully worn off (so the player cannot spam it to remain nearly-invulnerable). Fills a little of the role of Shadow Form being a defensive panic button, without nearly so many different properties and up/downsides baked into it, and hopefully feels reasonably unique as well. One quirk that might not be immediately apparent is that enemies can still attack you when your sight radius is 0 because 'moving into a space' always counts as an attack if something is there. You do get the invisibility bonus to avoid their attacks because they still can't 'see' you, however. -------------------------------------------------------------------------------- d377fa96d6 | DracoOmega | 2024-06-09 21:49:04 -0230 Remove unused Dith ability descriptions from translations -------------------------------------------------------------------------------- 57e9c227c7 | DracoOmega | 2024-06-09 21:48:59 -0230 Add noise dampening as Dith 1* ability Intended to fill some of the same role as umbra once did, but in a way that has more potentially interesting ramifications for blasters as well. -------------------------------------------------------------------------------- 63ec5cfc87 | DracoOmega | 2024-06-09 21:41:40 -0230 Remove the Noise Suppression mutation (In preparation for it being baked in as Dithmenos's first passive) -------------------------------------------------------------------------------- 848d387018 | DracoOmega | 2024-06-09 21:41:40 -0230 Slightly improve spacing in god-passive.h for clarity Grouping each god's abilities together, as is done in several other files. -------------------------------------------------------------------------------- ebaddcd06c | DracoOmega | 2024-06-09 21:41:40 -0230 Replace Shadow Step with Shadowslip (new Dith 3* ability) Usable only while your shadow is out, Shadowslip swaps your position with it at instant speed and then misleads all visible enemies into thinking that your shadow *is* you. Enemies mislead this way will focus their attention solely on your shadow for several turns (or until the shadow dies), allowing you to slip away or stab them in the back. It costs a relatively modest amount of piety, but also some HP (as Shadow Step itself did). -------------------------------------------------------------------------------- df2a5d8dae | DracoOmega | 2024-06-09 21:41:39 -0230 Overhaul Dithmenos shadow mimic (for attacks) Instead of briefly placing an invisible monster at the player's location (which tries very hard to convince the code in several places that it really *is* the player - a source of multiple bugs in past), player shadows are now proper monsters that show up on a nearby tile when they trigger. (They do not act independently, so they can be somewhat compared to a spectral weapon that lingers around for a few turns after activating to potentially distract monsters, and will interact with a future ability.) Melee attacks that trigger mimic will attempt to place it on the opposite side of the creature you're attacking and then swing at it, where this is possible, but can place on any tile up to 3 tiles away, and select any valid enemy in this range if it is not. (ie: they will always try to hit something, if they can). Ranged mimics will simply place somewhere nearby, but otherwise follow similar rules. The player and their shadow can freely fire through each other. As before, your shadow wields an unbranded +0 copy of your weapon's base type, though its own base damage now scales with your XL so that it should have more impact and remain more useful across the length of the game. (The logic for spell mimic will be added in a future commit) -------------------------------------------------------------------------------- f6379e189b | DracoOmega | 2024-06-09 21:41:39 -0230 Remove Dith's passive umbra, simplify umbra stealth bonus With umbra having become a core Yred mechanic, Dith is going to be swapping it out for a different method of making the player harder to notice (see d5141423a9 ) Also, rather than handling divine umbras and item umbras differently (which I think was not obvious to almost anyone), just standardize them at +50% stealth regardless of piety. -------------------------------------------------------------------------------- a7885c0a3b | DracoOmega | 2024-06-09 21:41:39 -0230 Rename shadows (the undead monster) to shadowghasts To reduce some confusion/ambiguity between player shadows (which are non-living) and the common monster (which is undead) - especially now that player shadows are a visible thing a Dith worshipper can see (and will likely be eventually used in wrath effects) -------------------------------------------------------------------------------- 8171723bb2 | DracoOmega | 2024-06-09 21:41:39 -0230 Separate the dummy monster used for god wrath from player shadows This has caused bugs in past, and now that player shadows themselves are also no longer going to be weird hidden monsters standing on the player's tile, let's properly give wrath avatars their own monster type. There should be no functional change from this commit. -------------------------------------------------------------------------------- fa19ac73ef | DracoOmega | 2024-06-09 21:41:39 -0230 Remove Dithmenos's Shadow Form ability and associated form Shadow Form was a moderately useful defensive tool, but it came with an extremely long list of assorted bonuses and penalties (several of which were highly specific). As part of the pending revamp, it is slated to be replaced with a different ability that aims to achieve a similar function of 'powerful defensive cooldown that makes you supernaturally hard to be seen' in a more streamlined manner. (See 7444593a7a ) -------------------------------------------------------------------------------- 0d7b496e3d | DracoOmega | 2024-06-09 21:34:15 -0230 Remove Dith's bleed smoke passive This rarely triggered until high piety, and even then was widely thought to be more of a drawback than it was an upside (due to blocking ?blinking at random and interfering with targeting.) Dith's revamp will be doing other things instead. -------------------------------------------------------------------------------- 45bd9992d9 | DracoOmega | 2024-06-09 16:16:57 -0230 Remove default argument from SpellLibraryMenu When I wrote this, I'd intended for the default argument to be memorise (and then typoed it). But since this is only constructed in 3 places, and each one uses a different argument now anyway, might as well remove this. -------------------------------------------------------------------------------- af954efcbc | DracoOmega | 2024-06-09 16:16:57 -0230 Make apostle challenges a little more generous about the player's HP Instead of merely needing the player to be over 50% hp to issue a challenge (which is often still dangerously low early on), use a sliding scale based on the player's xl. (>80% at xl 0 to >50% by xl 27) -------------------------------------------------------------------------------- fdec4ed788 | DracoOmega | 2024-06-09 16:16:57 -0230 Fix pathfinding issues with apostle challenges / Blood for Blood Pathfinding without a proper monster agent always considered closed doors (and deep water and lava) to be untraversible, resulting in the code for apostle challenges and BfB considering areas behind closed doors unreachable. This could happen very frequently in Vaults. Since apostle challenges that cannot be issued are merely delayed, and the player will open doors as they explore the level, this may not have been immediately obvious to most players, but it nonetheless shouldn't be possible to avoid a challenge just by sitting in a room with the door closed. BfB had a similar issue due to how it places continuous reinforcements just out of sight and has them move towards the player. It now should no longer be flummoxed by doors. (Friendly monsters normally cannot actually open doors, but I have made an exception in this case, since it feels appropriate for the gameplay that BfB creates.) -------------------------------------------------------------------------------- e5cf5f0ba6 | DracoOmega | 2024-06-09 16:16:57 -0230 Make Erica always spawn with a ring instead of sometimes an amulet This was always the intention anyway, as I understand it. -------------------------------------------------------------------------------- 5a71cb29df | DracoOmega | 2024-06-09 16:16:57 -0230 Don't let wizard apostles learn the same secondary spell twice This did actually double their cast rate of it, but confused people by showing up twice in the apostle info blub (and was rather opaque anyway). -------------------------------------------------------------------------------- 1a24481981 | DracoOmega | 2024-06-09 16:16:57 -0230 Add Permafrost Eruption and Hellfire Mortar to the wizard apostle list -------------------------------------------------------------------------------- e83a209741 | DracoOmega | 2024-06-09 16:16:57 -0230 Make Beogh ally healing via damage stronger (and tweak wording) I think the pseudo ally-vampirism effect Beogh granted was already decently relevant, but seemed to have gone overlooked by a bunch of people. Since Beogh doesn't seem in danger of being *too* good (and anything which requires the player to put themselves in harm's way is already the 'less strong' side of Beogh anyway), let's try buffing the effect a noticable amount and see if people notice it more. -------------------------------------------------------------------------------- f893faa421 | DracoOmega | 2024-06-09 16:16:56 -0230 Prevent apostle challenges before D:6 Early apostle challenges can be enormously dangerous, and this made early faded Beogh altars and/or monks often more bad than good. This attempts to address the worst cases by simply banning all apostle challenges before D:6. That is still fairly early, but ideally a more manageable level of early. (Progress towards the next challenge will still accumulate even before this point, so the early piety bonus will still result in more rapidly getting a full roster, but hopefully not before the player has a reasonable chance of managing it.) -------------------------------------------------------------------------------- e97a2a3757 | DracoOmega | 2024-06-09 16:16:56 -0230 Fix Regenerate Other being usable on self, add Mass Regeneration Despite the name, priest apostles could use Regenerate Other on themselves. Now it really does require they cast it on someone else, but a high-level version that applies regeneration to *all* allies has been added as a rarer priest spell, in partial compensation. -------------------------------------------------------------------------------- 13359583c7 | DracoOmega | 2024-06-09 16:16:56 -0230 Improve Noxious Breath targeting behavior Targeting will no longer default to aiming at the player, even when susceptible enemies are in range. Also, it will properly display the chance for the noxious clouds to confuse enemies instead of a misleading 'hit chance' (it can't miss in the first place) This fixes #3831 -------------------------------------------------------------------------------- ea5a38db02 | elliptic | 2024-06-09 14:03:25 -0400 Mark the god.worship milestone only after setting initial piety Previously if you had Invocations as your top skill it recorded the penance title for your new god. -------------------------------------------------------------------------------- 0555720625 | elliptic | 2024-06-09 02:06:19 -0400 Fix not being able to memorize spells not currently castable (johngfound) Piledriver and Sublimation were two examples of spells that had issues. -------------------------------------------------------------------------------- dcd31b5c68 | DracoOmega | 2024-06-08 22:54:03 -0230 Mention in spell descriptions whether they are servitorable (elliptic) If the player knows Spellforged Servitor, there will be a line appended to full spell descriptions letting the player know whether this is a spell that servitor could cast. -------------------------------------------------------------------------------- 790598c828 | David Lawrence Ramsey | 2024-06-08 18:55:49 -0500 Fix typo. -------------------------------------------------------------------------------- 4a138bde44 | DracoOmega | 2024-06-08 20:34:37 -0230 Let players choose which spell their Spellforged Servitor casts (elliptic) Spellforged Servitor is a fun and popular spell, but it relies on a hidden priority list of spells it can cast which isn't documented anywhere in game. This is somewhat opaque to inexperienced players, and even for experienced ones, can lead to unfortunate situations of wanting to avoid memorizing a spell that the player would like to use, but which they would rather their servitor not. In an attempt to improve this situation a little, the player now has an Imbue Servitor ability while Spellforged Servitor is known, which will allow them to specify which eligable spell the player would like them to cast. This ability dismisses the servitor and takes 5 turns to complete, so is not intended as a quick swap in combat. If the player never uses it, the servitor defaults to its current behavior (to prevent people who forget or do not realize from having a bad time). If the imbued spell somehow becomes ineligable (either due to ?amnesia or the player no longer being able to cast it well enough), the servitor will also fall back to the old default behavior. (It was suggested that it might be nice if the UI would also list spells in the player's library which *could* be eligable if the player memorized them or trained more, but that seems significantly more complicated to implement. I wouldn't object if someone else tried, though.) -------------------------------------------------------------------------------- b41d2f8c7d | DracoOmega | 2024-06-08 20:34:37 -0230 Remove -MP from Cloak of the Thief (elliptic) The cloak having a downside at all, after its effect was changed, was partially for historical reasons, and it seems plausible it doesn't need one at all (it's already +0). Since -MP seems to still be stopping some of the characters it could be interesting on from using it, let's try getting rid of it entirely. -------------------------------------------------------------------------------- 8bd0f5762a | David Lawrence Ramsey | 2024-06-08 16:43:18 -0500 Clarify changelog entry for DS foul shadow. -------------------------------------------------------------------------------- d719f66080 | DracoOmega | 2024-06-08 15:12:09 -0230 Add option to redefine colours in Tiles/Webtiles custom_text_colours lets you change the RGB value of any of the 16 basic terminal colours used by Crawl and much of its interface. These are specified as arbitrary pairs of colour name and hex code (eg: lightmagenta:#fd59fa ) and can be remapped individually. Thanks a ton to mumra for outlining how to get any of this kind of functionality working in Webtiles. I've never touched options code or webtiles rendering before (or web code in general...), so I am still a *little* nervous I've done something wrong, but it seems to work properly in testing. -------------------------------------------------------------------------------- 1404227de2 | David Lawrence Ramsey | 2024-06-08 09:21:31 -0500 Tweak goblin sharper dialogue. Separate the list of cards from the deck of oddities and the list of cards from non-Nemelex decks, so that the latter can be adjusted more easily. -------------------------------------------------------------------------------- 6e78a6c96c | elliptic | 2024-06-07 22:04:37 -0400 Fix changelog error -------------------------------------------------------------------------------- 7c0229b0b9 | DracoOmega | 2024-06-07 23:23:57 -0230 Make blocks of ice (and hoarfrost cannons) amphibious The former in particular had some awkward interactions with being unable to sculpt simulacra of merfolk while over deep water. The merfolk simulacra would be able to swim, but the blocks of ice could not. Since blocks of ice are pretty well known for floating in the ocean in reality, I don't think it would be too weird if they did so here. And let's let hoarfrost cannons do it too while we're at it, because why not? -------------------------------------------------------------------------------- ecdbb5f6cc | DracoOmega | 2024-06-07 23:09:50 -0230 Tweak AF_VAMPIRIC message (Namsan) Instead of saying they draw 'strength' from your injuries (which might be confused for them gaining Might or some other form of power boost, say they draw 'vitality' instead. -------------------------------------------------------------------------------- 7842008b98 | DracoOmega | 2024-06-07 23:07:07 -0230 Don't claim hellfire mortars 'flop about on dry land' (elliptic) While I found it very hard to cause this in testing, it appears to relate to being constricted in place for long enough that the lava path disappears beneath it. The main answer to this is to make the mortar too large to constrict, but in the rare situation where it may be otherwise possible to replace the lava beneath it with some other terrain, I have also suppressed the message in general. -------------------------------------------------------------------------------- e1e3299b55 | DracoOmega | 2024-06-07 23:05:09 -0230 Remove hellfire mortars upon leaving a level -------------------------------------------------------------------------------- 9f51f148f8 | DracoOmega | 2024-06-07 23:04:18 -0230 Let hoarfrost cannons be affected by LRD Since they're clearly made of ice. -------------------------------------------------------------------------------- a2d40b9c78 | DracoOmega | 2024-06-07 23:03:52 -0230 Buff Undying Armouries a little They have an interesting set of abilities, but feel perhaps a little undertuned for a rarer lategame enemy. Make the dancing weapon created by Flashing Balestra spawn with Might and increase the duration of Bestow Arms (and make ranged weapons a little more likely to be given by it). Also increase their spawn weight in the Vaults OOD table by a modest amount (since it's the only place in the game they naturally spawn), trimming a sliver of weight from storm and shadow dragons in the process. -------------------------------------------------------------------------------- 49f9abe96c | DracoOmega | 2024-06-07 21:11:29 -0230 Preserve the auras of bound souls At the moment, that basically just means torpor snails and glowing orange brains, neither of which are ideal bound souls in the first place, but it seems harmless and maybe ocassionally useful. -------------------------------------------------------------------------------- eb34fb9520 | DracoOmega | 2024-06-07 21:10:13 -0230 Fix being unable to use Bind Soul on monsters without attacks The logic was inverted since %bf13549d7c2a334ff38fb0051bddd08410055114 letting you make spectrals with no attacks via Death Channel, but preventing you from using Bind Soul on such monsters, even if they knew spells. -------------------------------------------------------------------------------- 1cf930e433 | DracoOmega | 2024-06-07 21:08:32 -0230 Fix Yred always saying they were 'Noncommittal' no matter your piety The logic didn't get updated after Yred returned to a normal piety system. -------------------------------------------------------------------------------- b780b6b422 | David Lawrence Ramsey | 2024-06-07 13:52:01 -0500 Unbrace -------------------------------------------------------------------------------- fe1d291595 | elliptic | 2024-06-07 14:41:24 -0400 Simplify weapon acquirement The goals here are similar to that of armour acquirement simplification - remove weird bits of logic that could be exploited by a spoiled player (e.g. raising Necromancy skill from 0 to 2 made non-artefact weapon gifts twice as likely to be pain) and make the code simpler in general, while still trying to give the player useful or interesting items. The way in which weapon acquirement chose a weapon skill to use (via a weighted random choice with weights based on the player's skill levels) is unchanged by this commit. There are two main changes beyond that though: First, weapon subtype (war axe vs broad axe vs battleaxe, etc) was previously chosen with weights determined in a very complicated way that took the player's highest weapon skill (even if not the one being gifted) and their shield skill into account (and had breakpoints when comparing them) and also (for non-Trog acq) looked at the cube of the weapon's base damage divided by the weapon's base delay. This was all on top of acquire_weight numbers in item-prop.cc. That has been drastically simplified - now we mainly just use the acquire_weight numbers. They are modified slightly based on Shields skill (to prefer 1-handers with higher Shields skill) and also unseen subtypes have 5 times the weight (unchanged from before). When coming up with the new acquire_weight numbers, I didn't try to work out what all the effective weights with the old system were (again, they took weapon stats into account in a complicated way) but instead aimed for consistency across weapon skills. For each weapon skill, I aimed for about 50% of the weight to be split among "top-tier" weapons (anything not very clearly worse than other weapons for endgame characters, so e.g. for axes these are broad axe and executioner's axe) and also gave 0 weight to weapons in the set of weaker starting weapon. I also tried to keep things roughly evenly divided between 1-handers and 2-handers at base (though raising Shields skill will make 1-handers somewhat more common). The second major change was to rework brand weighting for non-artefact weapon acquirement. Instead of weights ranging from 1 to 6 for different brands with no apparent logic, I've changed it so there is a single list of "boring" brands that are rerolled 2/3 of the time (effectively meaning their weights in the brand tables in item-prop.cc are divided by 3): flaming, freezing, draining, heavy, venom, protection, and electrocution. It seems reasonable to try to make non-artefact weapon acquirements somewhat more exotic like this. In addition, scroll acquirements no longer generate artefact weapons with negative enchantment (non-Xom god gifts already had this protection). In general I'm unsure how big these changes will be in practice (probably some weapon types are impacted more than others), though things looked fairly reasonable in my testing. It should be much easier to tweak things in the future though. -------------------------------------------------------------------------------- f6fde8ad6d | elliptic | 2024-06-07 14:41:24 -0400 Fix items in starting inventory not being marked as seen This meant that if a fighter starting with a war axe found acquirement before finding a second war axe (or dropping their starting one), they would have the unseen bonus increasing the chance of getting offered another war axe from acquirement. -------------------------------------------------------------------------------- 181dc37c9d | patrick | 2024-06-07 11:42:09 -0400 Add some sinuous, squamous decor vaults to the Snake Pit Also use some more decorative conduits in places, mostly just copying the code that regret-index put in elsewhere in Snake, for thematic consistency. -------------------------------------------------------------------------------- ac80d7c31b | elliptic | 2024-06-07 11:25:35 -0400 Fix typo in tower shield acq weight -------------------------------------------------------------------------------- 5039c0303e | elliptic | 2024-06-07 10:58:27 -0400 Simplify armour acquirement These changes had two goals: to make armour acquirement logic relatively unmanipulable by the player while still being likely to provide useful or interesting items, and to simplify armour acquirement logic. After this commit, the player's skills only affect armour acquirement in two ways: higher Shields skill makes tower shield more likely and bucklers and orbs less likely, and higher Armour skill makes higher AC body armour more likely and lower AC body armour less likely. Both of these effects are relatively weak and don't have any special breakpoints. In particular, body armour acq no longer depends in strange and complicated ways on Dodging and Spellcasting skill. In general it should be much easier to tweak body armour acq in the future, since the weights used are just the acq_weights defined in item-prop.cc (which I have changed to focus more on better/more interesting types) modified by a simple function of Armour skill and AC of the armour. In addition, the logic for making artefacts and items in "unseen" slots more common has been drastically simplified, though hopefully things are still fairly similar. In general it should be fairly hard to notice these changes in practice - probably the biggest changes are to body armour, which I suspect is better in practice on most characters now, and which I've also made somewhat more common. -------------------------------------------------------------------------------- 5c500c4b6e | elliptic | 2024-06-07 10:09:22 -0400 Make demons summoned by obsidian axe always friendly (Ge0ff) Removing the ~4% chance of hostiles - it wasn't documented and wasn't very impactful aside from giving a very tiny chance of getting mutated by a hostile neqoxec before killing it with the axe. This is even consistent with Makhleb Lesser Servant having 0 hostiles after ~8 invo skill. Obsidian axe has a much more dangerous and interesting drawback already. -------------------------------------------------------------------------------- 925b980f54 | DracoOmega | 2024-06-07 01:13:29 -0230 Give Wiglaf's hat a proper tile (regret-index) So now you can look properly stylish (instead of it mostly looking like a wizard hat). (I was sorely tempted to name the file hat_stupid.png, just so everyone's aware, but elected for clarity instead.) -------------------------------------------------------------------------------- 95f95faf5e | DracoOmega | 2024-06-07 00:39:03 -0230 Tweak how piety costs are described in ability descriptions Due to how rounding was performed, and the fact that '1% of your maximum piety' was the lowest piety cost ability descriptions could display, the game claimed Makhleb's Major Destruction and Lesser Servant cost the same amount of piety, when in fact Major Destruction costs 1/6th what Lesser Servant does. (It would be quite a bad ability if it actually did cost just as much!) Piety costs now round up instead, meaning that Lesser Servant will say it costs 2%, while Major Destruction says 'less than 1%', which is a lot closer to accurate. (It's possible this rounding change makes something slightly less accurate somewhere else, but I'm not aware of two abilities belonging to the same god where it was nearly so misleading.) -------------------------------------------------------------------------------- 2b8f59dbc9 | DracoOmega | 2024-06-07 00:25:14 -0230 Fix monster Bind Soul tracer including the caster as an eligible target (Even though it never works on the caster). This could cause monsters to cast the spell to no effect. -------------------------------------------------------------------------------- d392c7bc3d | DracoOmega | 2024-06-07 00:25:06 -0230 Fix a couple monster spells using 'true' attitudes instead of current ones Because of using mons_atts_aligned instead of mons_aligned, a charmed monster would still consider their 'real' allies to be allies and not cast these spells against them. (In fact, they might actually use these effects against 'allies' of the same alignment they had been charmed to be. -------------------------------------------------------------------------------- 088aa39380 | DracoOmega | 2024-06-07 00:24:59 -0230 Rescale Drain status light colors The thresholds currently used seem to have been derived directly from the numbers used when drain affected skill levels instead of HP and are oddly spaced (changing severity at >0%/5%/10%/25%/50% max HP lost), as well as (in my opinion) giving a false impression of the severity of the effect at low levels of draining. (At least I was surprised that red 'heavily drained' starts at only 10% hp loss, which doesn't seem alarming enough to warrant that label). This commit respaces that to >0%/10%/20%/30%/50%. I'm interested in a few more adjustments to draining formulas, but for now this allows a better visible threshold for when Midnight Pantomime turns off. -------------------------------------------------------------------------------- 38bec8a339 | DracoOmega | 2024-06-07 00:24:51 -0230 Don't show a warning for moving while confused near ancestors ...and other allies you couldn't hurt even if you stumbled into them. -------------------------------------------------------------------------------- 995e409d96 | DracoOmega | 2024-06-07 00:24:39 -0230 Adjust some Webtiles text colors Magenta text in webtiles was conspicuously dark, making multiple status indicators unnecessarily difficult to read against the game's black background. (Lightmagenta was also extremely desaturated, and neither looked particularly like their equivalents in local tiles). This commit adjusts these to improve contrast and readability, and also does this to a lesser degree to blues and dark red. (Side note: not a great fan of how many things in this css seem to want to reference a common color specifically, but only do so by copy-pasting it with a name in comments. I've done my best to be careful and keep everything in sync.) -------------------------------------------------------------------------------- 58043dd47d | DracoOmega | 2024-06-07 00:24:31 -0230 Differentiate Magenta and Lightmagenta a little better in local tiles These two colors were so similar that in practice one couldn't really tell them apart. I've made Magenta slightly darker to help with this (though hopefully not by so much that it impacts readability.) -------------------------------------------------------------------------------- be264ac2b7 | elliptic | 2024-06-06 12:43:12 -0400 Let Vehumet support Rimeblight It makes damaging explosions. -------------------------------------------------------------------------------- a65b6e8950 | elliptic | 2024-06-06 12:40:57 -0400 Fix fluxform glow description on A screen It doesn't make the player easier to hit. -------------------------------------------------------------------------------- bc65bc19aa | NormalPerson7 | 2024-06-05 11:00:46 -0700 Fix ^ screen for Jiyva and Ignis (#3851) Apparently Webtiles uses regular expressions to parse the ^ screen, and it really doesn't like the use of parentheses in strings describing god powers. There is a way around this, but it puts the resistance in the cost column on Webtiles (in the same way as Cheibriados' stat boost), which is unacceptable. Also change "injuring" to "harming" when referring to jellies, for better flavour. -------------------------------------------------------------------------------- c82b5af2af | David Lawrence Ramsey | 2024-06-04 13:18:34 -0500 Improve speech regarding random classes of gods. A chaotic, evil, and/or good god can now be randomly chosen via the @random_god_chaotic@, @random_god_evil@, and @random_god_good@ entries. The Zin angel's speeches are now updated to use these; for the last, they now preach about the goodness of random good gods. This way, the lists of chaotic/evil/whatever gods no longer have to be manually updated in the monster speech database when a god's class changes in the code (e.g. Nemelex Xobeh's becoming chaotic). As a side effect, if Jiyva is dead, the Zin angel will now no longer preach about "the lawlessness of Jiyva." -------------------------------------------------------------------------------- b2d4fd1c9b | David Lawrence Ramsey | 2024-06-04 10:59:54 -0500 Fix Grunn speech typo (DevastatorOne). Closes #3854. -------------------------------------------------------------------------------- 795e84f355 | mumra | 2024-06-04 01:19:13 +0100 Add some Xom dance moves -------------------------------------------------------------------------------- eaf9e87d58 | David Lawrence Ramsey | 2024-06-03 11:55:21 -0500 Add Xom translucent wall/empty hands messages. -------------------------------------------------------------------------------- 5e68aa8d9f | NormalPerson7 | 2024-06-02 14:16:02 -0500 Make various small improvements to ability summary on ^ screen - Beogh: add lines for Beogh sending challenges as you gain piety, and explain that they can be recruited if you defeat them; improve various other inconsistencies around ^ for new Beogh - Ignis: explain that Rising Flame is one-use-only - Lugonu: show passive banishment on other gods' wrath - Yredelemnul: explain that light the torch gives allies at 1* - Jiyva: show jellies being peaceful, eating items, and being protected from player damage, and show the Slime Pits unlock at 6* Also move a number of passive abilities with hardcoded descriptions describe-god.cc to the table of god powers in religion.cc. The only abilities left in describe-god.cc are those that have unusual criteria (e.g. Hep frailty), or those whose text changes as you gain piety (e.g. lifesaving, umbra). There remain several minor passives (e.g. Trog's ally protection and berserk extension, Elyvilon's ally lifesaving) which are too minor to appear on ^. [Committer's notes: Squashed. Fixed spacing. Fixed reversed logic that wrongly coloured the convert_orc passive. Fixed piety breakpoint for colouring orc apostle recruitment: it's not 3*, but 0*. Also put all logic that colours passives in the same order.] -------------------------------------------------------------------------------- 251a44db69 | DracoOmega | 2024-06-02 09:34:41 -0230 Don't give XP for killing hellfire mortars -------------------------------------------------------------------------------- c7fbda7099 | DracoOmega | 2024-06-02 09:34:27 -0230 Try to avoid an infinite handle_monsters loop with Hellfire Mortar In some circumstances, it was possible for the mortar to be unable to move, yet not die either, in which case it never consumed energy on its turn and would cause an infinite handle_monsters() loop. While some of the individual causes of this warrant being addressed directly, for now put in general protection so that these should not crash (but simply have the mortar pass its turn harmlessly and expire at the end of the lava effect at the latest). -------------------------------------------------------------------------------- 432df90de2 | NormalPerson7 | 2024-06-01 13:44:33 -0500 Tweak wanderer good-throwing/good-weapon items Previously, the good set of throwing items for wanderer was 1-4 curare-tipped darts and a +2 dagger. Neither of these scale well with throwing skill, which is likely to be your highest skill. This could also be extremely disappointing if you got 1 curare dart and it mulched immediately. To encourage actually training throwing skill, replace the enchanted dagger with large rocks/javelins/boomerangs (depending on size), up to a total of 7 pieces of ammunition. (Note: this uses the same code as the gladiator background, so small species will get double the number of boomerangs.) Also, the good set of weapon items for all weapon skills had a 4/5 chance of giving a +2 enchantment to a decent-quality weapon (falchion, mace, etc), and a 1/5 chance of upgrading to a good-quality weapon (long sword, flail, etc). In practice this upgrade was rather rare, and starting with a +2 decent weapon is a little too frequent. So let's bump the upgrade chance to 1/3, for the sake of variety. [Committer's notes: Edited commit message.] -------------------------------------------------------------------------------- 78dad2f34e | David Lawrence Ramsey | 2024-06-01 11:46:13 -0500 Fix spelling. -------------------------------------------------------------------------------- cc7ef8420a | David Lawrence Ramsey | 2024-06-01 11:38:06 -0500 Clarify Yred's Black Torch changelog entry. It only summons allies starting at 1*, even though you first get it at 0*. -------------------------------------------------------------------------------- 632b080833 | David Lawrence Ramsey | 2024-05-31 16:02:10 -0500 Add a few more chaos manes to artefacts. -------------------------------------------------------------------------------- 426ccd8811 | regret-index | 2024-05-31 02:22:46 -0230 Quick vault review Of note: * Replace shrikes in two heavily-themed Elf vaults with walking frostbound and earthen tomes each. They're strong thematic placements, don't get to fire too horribly-dangerously in the high-monster-density narrow corridors arrangements Elf uses, and there's reasonable enough chances to survive long enough to teleport if one's doing Elf earlier compared to those shrikes. * Add a slight pinch of additional variety to profane_halls. * Slightly more insults via newer items and artprops to tgw_lugonu_bribe. -------------------------------------------------------------------------------- bd61dd866b | David Lawrence Ramsey | 2024-05-29 13:37:02 -0500 Add a few more colour names to the database. -------------------------------------------------------------------------------- b82444e216 | David Lawrence Ramsey | 2024-05-28 19:04:07 -0500 Set proper console colours for conduits. So that all alchemical conduits are poison-coloured, all arcane conduits are Vehumet-coloured, all dimensional conduits are warp-coloured, all earthen conduits are earth-coloured, all fiery conduits are fire-coloured, all icy conduits are ice-coloured, all misfortune conduits are shimmer blue-coloured, all soul conduits are smoke-coloured, and all storm conduits are electricity-coloured. -------------------------------------------------------------------------------- 0e98aa1795 | David Lawrence Ramsey | 2024-05-28 16:31:35 -0500 Set proper console colours for statues. So that all scintillating statues are mountain-coloured, all golden statues are yellow-coloured, and all silver statues are silver-coloured. -------------------------------------------------------------------------------- dbcf8a7b3f | David Lawrence Ramsey | 2024-05-28 00:30:49 -0500 Replace duplicate virtue name in artefacts. -------------------------------------------------------------------------------- d0d00ac9c4 | David Lawrence Ramsey | 2024-05-27 17:05:26 -0500 Add a few more Xom staircase messages. Also tweak the code to replace @staircase@. It's in more than one message now, so the optimisation for it is overkill. -------------------------------------------------------------------------------- e9e123dbde | David Lawrence Ramsey | 2024-05-27 11:24:50 -0500 Add fruit/meat lines for gargoyles/statues. -------------------------------------------------------------------------------- 2b70ce2205 | David Lawrence Ramsey | 2024-05-27 09:24:57 -0500 Add another bird name to artefacts. -------------------------------------------------------------------------------- 198796a1b9 | David Lawrence Ramsey | 2024-05-26 17:30:21 -0500 Attribute death-spread rimeblight correctly. Closes #3833. -------------------------------------------------------------------------------- 275cc6b170 | David Lawrence Ramsey | 2024-05-25 19:22:58 -0500 Reenable Xom miscast substrings. Do them efficiently by only doing substring replacements on the message we end up displaying. Also, add substrings back into Xom eye messages. -------------------------------------------------------------------------------- 3085f02e0b | regret-index | 2024-05-25 21:35:38 -0230 A little more (placeholder?...) spell tile work, new(?) spells edition * Hoarfrost Cannon/ade now uses an extremely modified version of the kobold blastminer's cannon, rather than the diamond obelisk. Eventually, it'd be good to have a semi-crystalline appearance for the cannon, but this should also help with the prior Forceful Dismissal tile not being confused with its current Maxwell's Capacitive Coupling tile. * Bestow Arms uses the rough same icon base as Sheza's Dance, but without the musical notes or many noticeable chips in the main blade. * As future-proofing for other plans, and to help Alchemy's thematic cohesion a little bit more, the Fulminant Prism tile is now themed and coloured as soft fulminating gold, a material well known to western alchemy as both synthesize-able but also mostly highly explosive. (Of course, one can't make prisms of gold, but that's what magic is for.) While I've emphasized that it's 1: magic and 2: soft for it to not count as brittle for LRD purposes, I cannot stop other devs from possibly making it work with LRD anyway in the future if they so desire it. It's a severe tactical error to almost ever do such, considering the spread of different schools involved as well as doing more damage for less MP to just actually place multiple Prisms, so I'd personally prefer to prevent players from even trying to aim for false synergies. * Rename Prayer of Brilliance's tile to its new non-aura name. * Alphabetized the dc-spells.txt file a bit more. Possibly we should be organizing these by spell level and some documentation or UI's order for the spell schools? Not in a rush to figure that out, anyway. -------------------------------------------------------------------------------- 86927b1969 | David Lawrence Ramsey | 2024-05-25 14:55:20 -0500 Fix Xom impromptu dance check. Properly use player_has_feet() instead of making assumptions regarding the ability to wear boots. -------------------------------------------------------------------------------- c506da67b6 | David Lawrence Ramsey | 2024-05-25 10:06:44 -0500 Tweak Xom substitutions. Do the lowercase ones first, as in do_mon_str_replacements(). -------------------------------------------------------------------------------- c2b75838d0 | David Lawrence Ramsey | 2024-05-25 10:04:45 -0500 Simplify Xom database strings a bit. Only check for empty ones if there's a chance of they're being empty (the feature and body armour ones, if nothing Xom can play with is available). Also, drop substring usage, so we aren't calling maybe_pick_random_substring() a bunch of times; the substitutions are enough. -------------------------------------------------------------------------------- 99e0a4bd94 | Aliscans | 2024-05-25 09:16:04 -0500 mprf("string")/mprf("%s", string) -> mpr(string) Also wrap some long lines. [Committer's notes: Edited commit message.] -------------------------------------------------------------------------------- d3ef473dfc | David Lawrence Ramsey | 2024-05-24 21:39:11 -0500 Expand Xom hair messages beyond eyebrows. Now you can spontaneously grow facial hair, too. -------------------------------------------------------------------------------- 0fe9cc0fda | David Lawrence Ramsey | 2024-05-24 12:52:03 -0500 Only do Xom dances if you can wear boots. It's simpler than the naga species/fishtail check, and the heel-clicking message only makes sense if you have heels to click; assume anyone who can wear boots has heels. -------------------------------------------------------------------------------- cf91537885 | DracoOmega | 2024-05-24 14:02:02 -0230 Revert "Prevent enemies from summoning in Okawaru's Arena" There was more opposition to this change than I was expecting from previous discussions. It still feels like Duel could use a little something, but perhaps something else. This reverts commit 28453e28303c8ec3fca004e8f8115febf7e91e70. -------------------------------------------------------------------------------- ae95028895 | DracoOmega | 2024-05-24 13:59:21 -0230 Revert "Make living spells count as 'conjured'" Not only did this make living spells remain after the tome they'd come out of was dead, but it caused them to ignore their summon cap. (Further evidence that the functionality of some of these flags could use consolidation and cleanup) This reverts commit 2d6ab54fa9add43c1c3fbb67585905fc1f3aa11b. -------------------------------------------------------------------------------- 157a17335d | David Lawrence Ramsey | 2024-05-24 10:41:54 -0500 Add another dance name to Xom messages. -------------------------------------------------------------------------------- 45592c0896 | David Lawrence Ramsey | 2024-05-24 10:29:39 -0500 Move Xom's divine lightning msgs to the database. And add two more messages to the original one. -------------------------------------------------------------------------------- c984cbb1ce | David Lawrence Ramsey | 2024-05-24 10:20:37 -0500 Add another Xom shallow water option. It can already briefly boil; let it briefly freeze, too. -------------------------------------------------------------------------------- a78d4baa1f | David Lawrence Ramsey | 2024-05-23 22:22:12 -0500 Add a few more pattern names. -------------------------------------------------------------------------------- 9654fa51c0 | David Lawrence Ramsey | 2024-05-23 21:46:31 -0500 Add another Xom metal wall message. -------------------------------------------------------------------------------- a73736a63b | David Lawrence Ramsey | 2024-05-23 21:36:20 -0500 Expand Xom eye messages beyond monocles. Now Xom can give you eyepatches, too. -------------------------------------------------------------------------------- fdf316e120 | David Lawrence Ramsey | 2024-05-23 20:36:07 -0500 Simplify high degree corrode chances (mumra). -------------------------------------------------------------------------------- b7e3594fbc | Monkooky | 2024-05-23 20:34:53 -0500 fix corrosion chances for high degree likely broken in 7d2b172 not likely relevant since only ever applies to wu jian wrath -------------------------------------------------------------------------------- ad1f891a58 | Aliscans | 2024-05-23 20:26:18 -0500 Don't rest if you're dying in a sanctuary. Refuse to rest if suffering from fatal poison, sticky flames or emergency flight, even in a Zin sanctuary. Before, the game paused for a turn to let these cause damage before stopping. Also remove the word "standing" from "You're standing in..." (you may not have any feet) and split some long lines. -------------------------------------------------------------------------------- a70493316b | David Lawrence Ramsey | 2024-05-23 19:43:29 -0500 Move Xom's armour messages to the database. Simplify things by no longer pluralising the message for a robe; it's the only message that uses pluralisation, and adding it for only the one case would be a lot of effort for little gain. -------------------------------------------------------------------------------- 3fb591a930 | David Lawrence Ramsey | 2024-05-23 15:48:48 -0500 Adjust Xom statue message. Make a statue spin in place instead of doing an impromptu dance, since we don't know what kind of statue it might be (or if it's been redefined). -------------------------------------------------------------------------------- 18e651e562 | David Lawrence Ramsey | 2024-05-23 15:26:10 -0500 Move Xom's heel-clicking message to the database. Simplify things by not having it require boots anymore, and adding it in the impromptu dance messages, since it could be seen as a dance move. One side effect of this is that you can't do it while airborne anymore, but otherwise it has all the same restrictions as Xom's impromptu dances. -------------------------------------------------------------------------------- 33a4c11214 | David Lawrence Ramsey | 2024-05-23 15:11:48 -0500 Fix capitalisation of Xom slot messages. They should only be capitalised if they're at the beginning of the message. Just because all the current messages put them at the beginning doesn't mean that will always be the case. -------------------------------------------------------------------------------- cab03da4c4 | David Lawrence Ramsey | 2024-05-23 15:07:05 -0500 Add Xom offhand slot messages to the database. -------------------------------------------------------------------------------- 6b41a1c859 | David Lawrence Ramsey | 2024-05-23 14:59:18 -0500 Fix basenames for helmet and cloak messages. Using "your" and the basename, as was done before, makes the message shorter, and keeps the "your" part for artefacts. -------------------------------------------------------------------------------- 5f1ab2f97b | David Lawrence Ramsey | 2024-05-23 14:54:52 -0500 Fix check for having one hand available. Account not for just missing hands, but the offhand slot. -------------------------------------------------------------------------------- 5e7fbf1b49 | David Lawrence Ramsey | 2024-05-23 14:48:07 -0500 Add Xom helmet slot messages to the database. -------------------------------------------------------------------------------- e64a787fdf | David Lawrence Ramsey | 2024-05-23 14:41:07 -0500 Move Xom cloak slot messages to the database. To simplify things, use the billowing and head-wrapping messages for both; scarves can billow, and cloaks can wrap themselves around your head if twisted the right way. -------------------------------------------------------------------------------- d3dd8e2323 | David Lawrence Ramsey | 2024-05-23 14:27:35 -0500 Move Xom unarmed messages to the database. Add a message referencing both hands for two-handed players. -------------------------------------------------------------------------------- 7f32bf64ec | David Lawrence Ramsey | 2024-05-23 12:05:51 -0500 Add Xom's bandage messages to the database. -------------------------------------------------------------------------------- 7bd33a5f4e | David Lawrence Ramsey | 2024-05-23 11:55:28 -0500 Add proper empty string checks for Xom speech. For the entries that don't have it, just in case speech lookup fails. -------------------------------------------------------------------------------- 1594a75379 | David Lawrence Ramsey | 2024-05-23 11:53:47 -0500 Add Xom monocle messages to the database. -------------------------------------------------------------------------------- d359847116 | David Lawrence Ramsey | 2024-05-23 11:36:10 -0500 Add Xom eyebrow messages to the database. And do proper substring substitutions on both them and the impromptu dance messages, even though the latter currently has no substrings. -------------------------------------------------------------------------------- 0cf2ae49a4 | David Lawrence Ramsey | 2024-05-23 11:27:03 -0500 Add Xom impromptu dances to the database. Also add another dance option: the cha-cha. -------------------------------------------------------------------------------- d6ea513206 | David Lawrence Ramsey | 2024-05-23 10:43:09 -0500 Add general underfoot messages for Xom. -------------------------------------------------------------------------------- 2164ef01d7 | David Lawrence Ramsey | 2024-05-23 10:40:29 -0500 Use a ternary operator in another place. -------------------------------------------------------------------------------- 67769320d9 | David Lawrence Ramsey | 2024-05-23 09:58:48 -0500 Use push_back() in some Xom messages. Instead of emplace_back(), for when we're pushing back a variable. -------------------------------------------------------------------------------- c2c3137104 | David Lawrence Ramsey | 2024-05-23 09:32:39 -0500 Disallow Xom tapdances for players who can't act. Since the same restriction applies to players who click the heels of their boots together. -------------------------------------------------------------------------------- b12cf6e68c | David Lawrence Ramsey | 2024-05-23 09:14:14 -0500 Simplify naming of Xom inventory-related keys. -------------------------------------------------------------------------------- 4c70718b6c | David Lawrence Ramsey | 2024-05-23 09:09:43 -0500 Fix typo in Xom key (oops). -------------------------------------------------------------------------------- 64b13a49ba | David Lawrence Ramsey | 2024-05-23 09:01:54 -0500 Adjust Xom monocle message for one-eyed players. If you've sacrificed an eye, it no longer specifies which eye gets the monocle. -------------------------------------------------------------------------------- 3bc4ff6abe | David Lawrence Ramsey | 2024-05-23 08:28:29 -0500 Consolidate Xom inventory item messages. The ones that occur only if there's solid ground under the player and the ones that occur regardless now use the same lines when applicable, and the latter are now in the database. Also, inventory items can now glow random colours as well as flash or vibrate. -------------------------------------------------------------------------------- ddd6be794e | Nicholas Feinberg | 2024-05-22 20:48:40 -0700 Make Zin's altar twinkle I'm making this animation for my own purposes, and wanted to give it back to the source. -------------------------------------------------------------------------------- f31e8602d3 | David Lawrence Ramsey | 2024-05-22 20:15:38 -0500 Move more Xom messages to the database. The item(s) jumping out of your backpack and then back in are now handled. -------------------------------------------------------------------------------- d686d4318b | David Lawrence Ramsey | 2024-05-22 19:39:19 -0500 Consolidate two Xom messages. -------------------------------------------------------------------------------- de576c14da | David Lawrence Ramsey | 2024-05-22 19:31:27 -0500 Move more of Xom's messages to the database. This is now done for the messages regarding dungeon features underneath the player. -------------------------------------------------------------------------------- bb75d02521 | David Lawrence Ramsey | 2024-05-22 15:17:25 -0500 Wrap overly-long line. -------------------------------------------------------------------------------- 4c66c2f241 | David Lawrence Ramsey | 2024-05-22 15:13:48 -0500 Tweak for loop condition. -------------------------------------------------------------------------------- d5c3120602 | David Lawrence Ramsey | 2024-05-22 15:06:31 -0500 Move Xom's feature messages to the database. Note that this is currently only done for the messages regarding dungeon features surrounding the player. -------------------------------------------------------------------------------- e8832af77b | David Lawrence Ramsey | 2024-05-22 14:33:08 -0500 Rearrange Xom message checks a bit. -------------------------------------------------------------------------------- 98074d0971 | David Lawrence Ramsey | 2024-05-22 14:06:38 -0500 Remove duplicate Xom blood fountain logic (oops). -------------------------------------------------------------------------------- d7423c112a | David Lawrence Ramsey | 2024-05-22 12:59:18 -0500 Add another Xom stone arch message. -------------------------------------------------------------------------------- 4e5cd39131 | David Lawrence Ramsey | 2024-05-22 12:42:18 -0500 Add a few more Xom statue messages. Statues can now tapdance the same way the player can. (If the statue is of something with no feet... let's say that Xom finds a way.) -------------------------------------------------------------------------------- 4e96f1f5b6 | David Lawrence Ramsey | 2024-05-22 12:39:39 -0500 Fix indentation. -------------------------------------------------------------------------------- 29bc1f9022 | David Lawrence Ramsey | 2024-05-22 12:20:00 -0500 Remove unneeded blank lines. -------------------------------------------------------------------------------- 60ba5cd16a | David Lawrence Ramsey | 2024-05-22 11:59:50 -0500 Make Xom messages account for redefined features. Also, consolidate a few messages. There are still a few oddities, such as "The gravestone turns to stare at you.", but the features are at least named correctly. Closes #3826. -------------------------------------------------------------------------------- a9ead07e84 | David Lawrence Ramsey | 2024-05-22 11:31:45 -0500 Add another dry fountain message for Xom. -------------------------------------------------------------------------------- f7e3935c44 | David Lawrence Ramsey | 2024-05-22 10:33:46 -0500 Fix punctuation. -------------------------------------------------------------------------------- 5cf9a61fe5 | mumra | 2024-05-22 03:48:17 +0100 Remind monsters how to open doors A fairly old bug seemingly introduced in 323ad4e. Monsters would open doors under the simplest circumstances (standing right next to them, and/or with an otherwise unobstructed view to the player) but as soon as waypoint pathfinding kicked in, the is_habitable check was happening too early and they never got to check if they were able to traverse the door. Closed doors are not considered habitable (probably since 323ad4e). These checks were introduced to solve an issue with clinging but were not purged in 53d2a09 when clinging was removed. Both checks were duplicated in mons_can_traverse but in the correct sequence to also account for doors. -------------------------------------------------------------------------------- 87cd461dd1 | David Lawrence Ramsey | 2024-05-21 17:31:47 -0500 Add Xom message for metal statues. And consolidate it with the one for granite statues, since they both do the same thing now. -------------------------------------------------------------------------------- 5ce18b405a | David Lawrence Ramsey | 2024-05-21 10:04:28 -0500 Add another pattern name. -------------------------------------------------------------------------------- 5f74a5512e | David Lawrence Ramsey | 2024-05-20 23:46:59 -0500 Add another pattern name. -------------------------------------------------------------------------------- 5069440637 | David Lawrence Ramsey | 2024-05-20 23:40:33 -0500 Add another Xom message with colour patterns. -------------------------------------------------------------------------------- ce46c558ed | DracoOmega | 2024-05-20 21:08:52 -0230 Don't cover stairs with dead hoarfrost cannons (particleface) The puddles from them melting was intended primarily as a minor flavor thing and not something that should be so mechanically impactful as to block off a player's escape from a floor. They now use logic similar to primal wave and replace only plain floor. -------------------------------------------------------------------------------- 16219f168b | David Lawrence Ramsey | 2024-05-20 18:09:25 -0500 Fix typo in alchemy miscast message. -------------------------------------------------------------------------------- 30aeb729f7 | NormalPerson7 | 2024-05-20 20:18:56 -0230 Fix Hellfire Mortar power cap (#3820) (#3824) Spells implicitly take the lesser of their defined power cap and their corresponding zap's defined power cap when deciding what their real power cap should be. Since Hellfire Mortar is linked to ZAP_HELLFIRE_MORTAR_DIG, which had a cap of 100, Hellfire Mortar erroneously also had a cap of 100. Since it doesn't appear that power actually does anything for this zap, just raise the zap's cap to 200. -------------------------------------------------------------------------------- 08d867e968 | gammafunk | 2024-05-20 16:49:52 -0500 feat: Unarmed attack ego description for clua Via `you.unarmed_ego()`, which returns a string containing a description of the ego, if any. Takes an optional boolean argument to return a terse ego description, which defaults to false. -------------------------------------------------------------------------------- c81a1b28c5 | David Lawrence Ramsey | 2024-05-20 16:03:57 -0500 Add a few Xom messages referencing colour patterns. -------------------------------------------------------------------------------- c7163d470e | David Lawrence Ramsey | 2024-05-20 15:56:13 -0500 Tweak wording of necromancy miscast message. -------------------------------------------------------------------------------- 50be89a3ba | David Lawrence Ramsey | 2024-05-20 15:56:13 -0500 Adjust unseen alchemy miscast messages. -------------------------------------------------------------------------------- 48138d7521 | David Lawrence Ramsey | 2024-05-20 15:55:39 -0500 Fix spacing of a pattern name. -------------------------------------------------------------------------------- 2ab4ef48e6 | mumra | 2024-05-20 15:38:21 -0500 Some tweaks and additions to miscast messages * Added some colourful pattern names, which player and monster skin can turn into on alchemy miscasts * Removed some duplication in miscast messages by combining with [one|two] syntax (and removing an outright duplicate) * Change "sparks" message to "cinders" in Fire miscasts as it was already used in Conj * Necromany "shivers with cold" message sounded too much like an ice miscast, so I modified it to "walking over your grave" message * You feel off-balance for a moment: sounded more like translocation so I moved it there * A number of messages were repeated across several miscast types: - Strange energies run through your body: also used in death curses, almost the same as the malmutate message, and also rather similar to magic contamination "wild energies", so I just removed it to avoid being mistaken - Strange surge of energy: removed from Conjurations since it's also used in hexes alongside "magic surges out" - Air crackles with energy: sounds rather more like an electricity effect, but air *wasn't* a school that used it, so I moved it there instead * Added a few minor variations to things here and there -------------------------------------------------------------------------------- 9b32533982 | mumra | 2024-05-20 15:37:21 -0500 Txt-ify miscast messages Moving these to their own txt file was reasonably straightforward and makes it now possible to translate them - as well as making it easier to make additional substitutions such as colour names or further randomisations (without having to invoke these lookups unneccesarily for cases that are not using them). This commit replicates the exact messages as they were without further modification. -------------------------------------------------------------------------------- d283c3be7c | gammafunk | 2024-05-20 11:51:31 -0500 feat: Add unarmed combat damage to clua Via `you.unarmed_damage_rating()`, which returns two values: the damage rating as a number, and the damage rating description as a string. Also add line breaks to l-you.cc to make reading easier. -------------------------------------------------------------------------------- ac1fde5492 | David Lawrence Ramsey | 2024-05-20 00:32:13 -0500 Fix typos, spelling, and wording. -------------------------------------------------------------------------------- b66479f5cc | David Lawrence Ramsey | 2024-05-19 22:32:26 -0500 Mention Fedhas' protecting friendly plants. -------------------------------------------------------------------------------- b12068d400 | David Lawrence Ramsey | 2024-05-19 21:53:01 -0500 Add correct 0.32 up-through version (oops). -------------------------------------------------------------------------------- 3a8b7b03c6 | David Lawrence Ramsey | 2024-05-19 20:48:56 -0500 Add sometimes-pasta-adjacent food to artefacts. -------------------------------------------------------------------------------- 14f4ba10ed | David Lawrence Ramsey | 2024-05-19 20:07:56 -0500 Add 0.32 up-through version to changelog. -------------------------------------------------------------------------------- 1eea0c6e6f | David Lawrence Ramsey | 2024-05-19 19:58:49 -0500 Fix spelling: bedeviled -> bedevilled. -------------------------------------------------------------------------------- f56e53c086 | David Lawrence Ramsey | 2024-05-19 19:55:44 -0500 Colourise drag and swarm in monster bot. -------------------------------------------------------------------------------- 2ebb5e6a31 | David Lawrence Ramsey | 2024-05-19 19:55:32 -0500 Update monster bot for AF_SWARM. -------------------------------------------------------------------------------- d8addd5893 | David Lawrence Ramsey | 2024-05-19 19:41:57 -0500 Fix description of DS foul flame mutation. -------------------------------------------------------------------------------- 48eddae406 | David Lawrence Ramsey | 2024-05-19 19:24:32 -0500 Clarify new Ijyb's description. -------------------------------------------------------------------------------- 2cd1f3e945 | David Lawrence Ramsey | 2024-05-19 19:23:42 -0500 Fix typos and spelling. -------------------------------------------------------------------------------- 8efb30d515 | regret-index | 2024-05-19 21:46:11 -0230 Fiddle with the changelog's future (various) Deep Elves getting an innate faster mp regen mutation has been discussed multiple times over 0.32's development, but hasn't actually been implemented yet. Sorry for the confusion. -------------------------------------------------------------------------------- d1fd03315b | regret-index | 2024-05-19 21:21:30 -0230 Nudge around some listings and documentation Move Arachne and Wiglaf's sections in uniques.des to the right alphabetical and section positions, mention how we finally have a lava spell and a little more clarity for Air Magic's restrictions in spells.txt. -------------------------------------------------------------------------------- 9412f0fc87 | regret-index | 2024-05-19 21:21:30 -0230 Changelog for 0.32 (up to 78dc6a7) Notes: * I'm probably 33% wordier than others who have written up the changelog before. Some of these overhauls or new spells are pretty complicated, so I think it's fine, but others can abbreviate and alter the changelog as they desire. * I've seen people also lament the loss of Hill Orcs from a flavour perspeective, so I ended up emphasizing "all species can become orcs" in the mentions of Mountain Dwarves thus replacing them multiple times. * We've been a little inconsistent across versions in using Artefact, Item, and Unrand headers. I'm opting for the first two, since that's the most recent changelog's approach. -------------------------------------------------------------------------------- f720f7fe4a | patrick | 2024-05-19 19:38:24 -0400 Decor vaults for Crypt Special request from r-i, ages ago. Contains some that have good loot just lying around, to increase the loot in Crypt, to lure more hapless adventurers to their deaths. Not you, though. You'll be fine. Go in the Crypt. Go in there. Go in the Crypt. Go. Do it. It's fine. -------------------------------------------------------------------------------- 78dc6a7b8a | patrick | 2024-05-19 16:54:01 -0400 Fix up some shop vaults and add some more 1) Redo the inventory of the elemental shop, since the original theme is long-obsolete now that evokers are unique and in item sets. 2) Touch up the changing room inventory. 3) Tweak the rings in the One Of A Kind Rings now that the MP values for regular randarts have been tweaked upwards. Current values may be ridiculous, I will find out when I get yelled at about it-- 4) Added a generically magic-themed shop with some of the new magic-themed decoration features. 5) Added a multi-shop vault featuring antiques out the wazoo. -------------------------------------------------------------------------------- 91856e71ab | DracoOmega | 2024-05-19 15:30:58 -0230 Buff / Fix Rimeblight After 799ce95f6cd29deaeda1c58a8f94fcd328702e82 is was intended that Rimeblight spread to adjacent creatures whenever an infected creature died, but in actuality, this only happened if they died due to the instakill threshold effect and left behind a pillar of rime. As it is extremely common for a monster to go from >20% hp to dead directly, the buff wasn't actually working as intended. I have fixed that now. I suspect this change alone does a very substantial amount to make the spell feel stronger, but in response to feedback, I have also let Rimeblight affect nonliving/undead monsters (with the caveat that they *don't* get the instakill pillar effect, as they have no lifeforce to empower the plague on the verge of their death), and nudged up the low end of its duration and DoT damage by a tiny smidge. Let's see if this finally feels appropriately strong in the proper situations. -------------------------------------------------------------------------------- bb3f4b5168 | David Lawrence Ramsey | 2024-05-19 10:25:06 -0500 Checkwhite -------------------------------------------------------------------------------- ab2d129dd7 | David Lawrence Ramsey | 2024-05-19 10:18:31 -0500 Add a message for when the player finds all gems. Use only the miscellaneous colours in it, to avoid duplicate colours as much as possible. Suggested by regret-index. -------------------------------------------------------------------------------- 540c3cb408 | David Lawrence Ramsey | 2024-05-19 10:02:34 -0500 Fix obsolete orb ego: channelling -> energy. -------------------------------------------------------------------------------- 6251899524 | David Lawrence Ramsey | 2024-05-19 09:59:51 -0500 Fix spelling. -------------------------------------------------------------------------------- db9be81004 | David Lawrence Ramsey | 2024-05-19 09:48:05 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- 69e7503642 | David Lawrence Ramsey | 2024-05-19 08:42:10 -0500 Don't use mprf() when mpr() will do. -------------------------------------------------------------------------------- 5cb19619eb | David Lawrence Ramsey | 2024-05-19 08:10:34 -0500 Add more minor alchemy miscast messages. -------------------------------------------------------------------------------- 732af374f4 | Nicholas Feinberg | 2024-05-18 23:17:30 -0700 Fix missing mons spell info (DeathSushi) The legend that explains how to read monster spell descriptions was missing. Probably broken since at least df0a5da549d686d (2022). -------------------------------------------------------------------------------- 101ff301c8 | David Lawrence Ramsey | 2024-05-19 00:25:43 -0500 Tweak wording of new alchemy miscast msgs. -------------------------------------------------------------------------------- 7eaa27f522 | David Lawrence Ramsey | 2024-05-19 00:04:40 -0500 Add alchemy miscast msgs w/new colours (mumra). Do colour name substitutions on miscast messages so that this works. -------------------------------------------------------------------------------- 5768f2273c | David Lawrence Ramsey | 2024-05-18 21:53:39 -0500 Add a few Xom messages for blood fountains. Since there are Xom messages for all the other fountain types. -------------------------------------------------------------------------------- 5aad360255 | David Lawrence Ramsey | 2024-05-18 21:37:56 -0500 Add a Xom resurrection line referencing colours. Everything turns monochromatic before Xom saves you. -------------------------------------------------------------------------------- 72dcce589e | David Lawrence Ramsey | 2024-05-18 21:14:19 -0500 Add a few Xom mutation lines referencing colours. Good mutations mention gouts of light, while random mutations mention flashes of light; neither use the monochromatic colours. -------------------------------------------------------------------------------- 3cc3825e25 | David Lawrence Ramsey | 2024-05-18 20:52:35 -0500 Add a few more Xom messages referencing colours. Water and water in fountains can now briefly flash colours. -------------------------------------------------------------------------------- ecc208a7ad | David Lawrence Ramsey | 2024-05-18 19:33:59 -0500 Make a Xom message use the new colour database. In Xom's list of pseudo-miscasts, instead of making your offhand item flash a lurid colour, make it flash a lurid "randomly chosen colour". As suggested by regret-index. -------------------------------------------------------------------------------- 0db79e9a43 | David Lawrence Ramsey | 2024-05-18 18:54:38 -0500 Remove unneeded extra "%%%%". -------------------------------------------------------------------------------- f9f58d7fab | David Lawrence Ramsey | 2024-05-18 17:49:03 -0500 Add another sky colour name to artefacts. -------------------------------------------------------------------------------- 64db273368 | David Lawrence Ramsey | 2024-05-18 17:22:38 -0500 Move colour names into their own database entry. They're now in colourname.txt, and accessible to the speech database in general instead of just Blorkula's dialogue. "rainbow_colour" has the rainbow colours, "misc_colour" has the miscellaneous non-monochrome colours, "mono_colour" has the monochrome colours black, white, and grey, and "any_colour" has a mix of them all. Note that "mono_colour" and "any_colour" aren't used anywhere yet, although they work in perfunctory testing. -------------------------------------------------------------------------------- 31401ee733 | David Lawrence Ramsey | 2024-05-18 14:48:46 -0500 Add more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 7932608573 | mumra | 2024-05-18 02:53:47 +0100 Apply defender AC for electrolunge damage Incorrectly the attacker's was being applied instead. -------------------------------------------------------------------------------- 13c1908155 | David Lawrence Ramsey | 2024-05-17 11:05:00 -0500 Add yet more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 75f53f5641 | David Lawrence Ramsey | 2024-05-17 11:03:02 -0500 Fix missorted colour entry. -------------------------------------------------------------------------------- a64f6baaea | David Lawrence Ramsey | 2024-05-17 11:02:39 -0500 Add still more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 39d9cdbf94 | David Lawrence Ramsey | 2024-05-17 10:31:16 -0500 Add another fruit name to artefacts. -------------------------------------------------------------------------------- 0f580fe372 | David Lawrence Ramsey | 2024-05-17 09:12:15 -0500 Add more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- c771b14f0e | David Lawrence Ramsey | 2024-05-17 08:37:39 -0500 Add another Qazlal Donald line. -------------------------------------------------------------------------------- f3498c87cc | David Lawrence Ramsey | 2024-05-17 08:32:57 -0500 Add another thing name to artefacts. -------------------------------------------------------------------------------- f786d4924a | David Lawrence Ramsey | 2024-05-17 08:32:26 -0500 Rock melon -> rockmelon (oops). -------------------------------------------------------------------------------- 249f2362e2 | David Lawrence Ramsey | 2024-05-17 08:24:36 -0500 Cantaloupe -> rock melon (jejorda2). Since the latter is the Australian name for the fruit (and associated colour). -------------------------------------------------------------------------------- f6571284fb | David Lawrence Ramsey | 2024-05-16 21:57:55 -0500 Add a few more fruit names to artefacts. -------------------------------------------------------------------------------- 904c1d6a4d | David Lawrence Ramsey | 2024-05-16 07:46:29 -0500 Fix truncated ghost brand descs (NormalPerson7) -------------------------------------------------------------------------------- e648739837 | DracoOmega | 2024-05-16 05:08:37 -0230 Fix Wiz being listed twice on randart rings of wizardry Was just a visual bug. It still only provided one level of wizardry. -------------------------------------------------------------------------------- e5b5818aa0 | David Lawrence Ramsey | 2024-05-15 21:00:23 -0500 Add yet more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- b41659da18 | Kyle Rawlins | 2024-05-15 21:33:33 -0400 Revert "Add a minimum maximum message size" PF committed this without realizing that the code added by 2d7b844e09c6 is recent. That change already adds a default of 1000, and when the option is explicitly set to None or 0, chat is disabled altogether (chat commands still work). This reverts commit 5fb32589bcaf44ddd6ffcb06a6a8ae016db6489c. -------------------------------------------------------------------------------- 37f40e56f2 | David Lawrence Ramsey | 2024-05-15 19:57:06 -0500 Add still more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 4d507754ad | David Lawrence Ramsey | 2024-05-15 19:26:11 -0500 Add more colour names to Blorkula's dialogue. -------------------------------------------------------------------------------- 91d48be214 | DracoOmega | 2024-05-15 21:29:36 -0230 Boost Coglin base Will, replace Will+ gizmo property (Lici) Coglins have often been mentioned as a species that struggles with Will checks, due to their more restricted access to Will+ items while only having baseline Will. I'd been mostly okay with this being a weakpoint of the species, but after some discussion about how this may bias gizmo selection unduely towards whichever ends up with Will+ on it, I've decided to experiment with removing it. There's a fairly limited list of possible bonuses that could replace Will+ in the minor gizmo slot (I feel See Invisible and Flight are too weak to feel compelling, even paired as a minor bonus, and I'd been deliberately avoiding AC/EV and stat upgrades), and what I've settled on for now is Wizardry+4MP. It's possible this doesn't appeals to enough coglins to open up the decision space between gizmos in the way this commit was generally intended, but wizardry on an otherwise-appealing gizmo might specifically incentivize a little hybridization that a player wouldn't have otherwise done, and that feels worthy trying. -------------------------------------------------------------------------------- 8d0d2ced60 | DracoOmega | 2024-05-15 21:29:36 -0230 Make MP property on randarts not always be exactly +/-9 For variety's sake, more than anything else. The exact range of possible values is now 4-12, though weighted more towards the middle of that range. (The new median is ~7.2, I believe) (Technically this would also affect how much HP randarts could give you if that prop could ever actually appear on them) -------------------------------------------------------------------------------- 5fb32589bc | Nicholas Feinberg | 2024-05-15 14:48:41 -0700 Add a minimum maximum message size For chatty cathys. -------------------------------------------------------------------------------- f2d3ae65d4 | David Lawrence Ramsey | 2024-05-15 13:14:03 -0500 Add yet more colours to Blorkula's dialogue. -------------------------------------------------------------------------------- 2d7b844e09 | Kyle Rawlins | 2024-05-15 13:55:41 -0400 feat: configurable chat message length limits for webtiles This adds a length cap to chat messages, for one variety of flood control. The initial default is a bit arbitrary. This option will also allow a server admin to disable ordinary chat altogether (doing this leaves chat commands still available). This commit will need a webtiles server restart to take effect. -------------------------------------------------------------------------------- f824865791 | David Lawrence Ramsey | 2024-05-15 09:16:49 -0500 Add still more colours for Blorkula's dialogue. -------------------------------------------------------------------------------- ca21d12091 | David Lawrence Ramsey | 2024-05-14 16:49:28 -0500 Add more colours for Blorkula's dialogue. -------------------------------------------------------------------------------- 75c6d2788c | DracoOmega | 2024-05-14 18:30:41 -0230 Fix Arachne's Greater Ensnare making net traps instead of webs When I was busy testing to see if multiple different trap types functioned with the new temporary trap code, I apparently forget to change this back before pushing... -------------------------------------------------------------------------------- 9761ffe6f0 | DracoOmega | 2024-05-14 18:24:02 -0230 Don't block autoexploring through the player's own Toxic Bog Fixes #3813 -------------------------------------------------------------------------------- 144c9d6bc9 | DracoOmega | 2024-05-14 18:13:48 -0230 Give boulders a less insectoid tile This isn't the best-looking rolling boulder, but at least it no longer looks literally identical to a boulder beetle. -------------------------------------------------------------------------------- a792d77c5b | DracoOmega | 2024-05-14 18:12:25 -0230 Fix a buggy interaction between boulders and nets Since boulders bypass much of normal monster movement code, they happily continued to move while netted. But alas, net status works by assuming there is a net item on the ground of tile the netted monster is located in, which causes various wierdness when they move. Fixes #3763 -------------------------------------------------------------------------------- 3c570bdce9 | DracoOmega | 2024-05-14 16:54:22 -0230 Fix unique kills with Hurl Torchlight not granting extra torch charges Fixes #3733 -------------------------------------------------------------------------------- d3407eeabb | DracoOmega | 2024-05-14 16:46:07 -0230 Allow evoking the Staff of Olgreb when held in the off-hand (ragingrage) -------------------------------------------------------------------------------- df85cb4a80 | DracoOmega | 2024-05-14 16:43:02 -0230 Fix MP+/- properties on artifact talismans not updating MP on removal unequip_artefact_effect requires the talisman to actually not be in the active talisman swap before calling it, otherwise calc_mp() will still see the talisman in question and not calculate mp properly. Fixes #3810 -------------------------------------------------------------------------------- f15d36bda6 | DracoOmega | 2024-05-14 16:11:19 -0230 Don't make Blorkula split into bats to avoid going up the stairs After being pacified (whether by Beogh or Ely). Fixes #3815 -------------------------------------------------------------------------------- b1f4dc6409 | DracoOmega | 2024-05-14 16:11:19 -0230 *Actually* fix a crash with reflected Flashing Balestra 3f0eabb45ed531f516199376e383c2a5aa0d3e97 was still checking the wrong agent. -------------------------------------------------------------------------------- bb83fb5040 | David Lawrence Ramsey | 2024-05-14 00:15:13 -0500 Remove unneeded space. -------------------------------------------------------------------------------- dbf92fe7da | DracoOmega | 2024-05-14 01:43:58 -0230 Replace RevMP gizmo property with RevMPSaver RevMP's effect was widely considered undertuned, but I'd like *some* effect based on Rev that supports a blaster playstyle, so this is a second attempt. RevMPSaver gives a flat cost reduction to the player's spells based on how revved they are (-1/2/3 MP per rev tier). This effect cannot reduce a spell below 1 cost. This has some related dynamics to the old effect, but notably encourages the player to unload spells *after* melee, which is usually the inverse of what you'd like to do when blasting. If the power of the effect is strong enough, I think that could be a distinctive quirk. Wind up a bit to rapid-fire mid-level conjurations with a hefty discount, or to squeeze the most value out of the last few MP you have in a prolonged battle. Let's see how this iteration feels. -------------------------------------------------------------------------------- a4d4a8453a | DracoOmega | 2024-05-14 00:22:12 -0230 Experiment with making bands a little harder to separate Monsters in bands that have a natural leader try to stay within a moderate distance of this leader while wandering about, so that if the leader is chasing after the player, the rest of the band tends to follow (whether they've yet noticed the player themselves or not). But no such protections between band followers and each other exist, which sometimes results in it being straightforward to pick off the members of a band individually without alerting most of them - often without much deliberate effort, if they're already awake. In past, there have been some issues with the functionality of bands that rely on each other for synergy, so I'm curious to try making them a little bit stickier. This commit makes it so that when a band leader would pick a new wander target, if one of their followers is out of sight and seeking a target, they will wander in the direction of that band member instead of randomly. And since band followers already vaguely follow the leader, the band as a whole will tend to move in that direction. There is still a bit of lag time here. The leader still finishes moving wherever they were wandering first, and gets no special awareness of the player (or whatever else their follower was chasing). But it increases the *tendancy* for the rest of a band to follow on a slight delay from the player engaging any part of it. I'm not certain if this change will be impactful enough to be clear to players, or that it will be a mechanical improvement if it is, but things of this nature are hard to know without playtesting, so let's playtest! (This commit also independently fixes a bug introduced by 672eff3212572a203b58ffd4f1e2474d8a40fcfc which made band leader unable to push past their own followers) -------------------------------------------------------------------------------- 92b31c1b4c | DracoOmega | 2024-05-14 00:07:06 -0230 Remove some seemingly unneeded companion code You can't get orc uniques as companions anymore, after all. -------------------------------------------------------------------------------- bcb4e34c79 | DracoOmega | 2024-05-14 00:03:01 -0230 Fix a crash-prone way of getting more than 3 apostles at once If you dismissed an apostle who was in a disconnected branch (eg: a portal vault or the Abyss) that the player was not currently in, it would delete their apostle data, but *wouldn't* properly remove them from the interlevel recall list. Officially, they weren't your apostle anymore, but you could still recall them. And if you did, from there on out, whenever they died, the game would crash (as it attempted to update their apostle status to dead, when they no longer had stored apostle data at all). This should fix that problem. -------------------------------------------------------------------------------- 066ad49fd8 | DracoOmega | 2024-05-13 17:02:06 -0230 Give Beogh recruit/dismiss abilities at 0* instead of 3* This is to avoid the unfortunate situation of a player winning an apostle challenge, only to realize they've fallen below 3* and can't actually recruit said apostle. Since these abilities already do not announce to the player that you have them while they're unusable (ie: because you have no one to dismiss or recruit), it should be safe for Beogh worshippers to simply always have them. Apostles still don't show up unless you're at 3*. -------------------------------------------------------------------------------- 2d6ab54fa9 | DracoOmega | 2024-05-13 17:02:06 -0230 Make living spells count as 'conjured' -------------------------------------------------------------------------------- 28453e2830 | DracoOmega | 2024-05-13 17:02:06 -0230 Prevent enemies from summoning in Okawaru's Arena Functionally a minor buff, but also flavorfully appropriate: monsters brought to the arena by Okawaru's Duel ability can no longer summon allies and are forced to fight one-on-one, whether they want to or not. This (ideally) blocks abjurable summons, while still allowing marshlights, battlespheres, etc. - just as Oka works for the player. Though given how many different ad hoc ways Crawl has of creating or summoning monsters, I'm not completely confident there aren't false positives/negatives here. But they can be stamped out over time. -------------------------------------------------------------------------------- ea327e7d78 | DracoOmega | 2024-05-13 17:02:06 -0230 Buff Arachne Perhaps unsurprising in retrospect, but exiling Arachne from Spider resulted in placing her deeper than before, and she just doesn't seem to have been able to keep up. This commit gives her some more AC, a little more HD, raises the cast rate of venom bolt and poison arrow moderately, and also replaces her Ensnare spell with 'Greater Ensnare', which additionally places webs on a random number of tiles adjacent to the target point, whether it misses you or not. The idea is to essentially just make her 'more' of what she already is. (These other webs go away in a handful of turns, so you can't use her to make a huge mess of a level and trap other things afterward) -------------------------------------------------------------------------------- a0239f6ce8 | DracoOmega | 2024-05-13 17:02:06 -0230 Allow placing traps via temporary terrain changes So that things like webs can also be added transiently. (This doesn't work properly for golubria portals, since the ammo property of that 'trap' functions as its duration, resulting in it immediately closing. But it seems to work otherwise) -------------------------------------------------------------------------------- 93184b181e | David Lawrence Ramsey | 2024-05-13 12:44:49 -0500 Actually display equipped scarf of invis (oops). -------------------------------------------------------------------------------- 5d753f05ca | David Lawrence Ramsey | 2024-05-13 12:26:34 -0500 Give Coglins invisibility in Fedhas' Mad Dash. Instead of a non-draining amulet of invisibility, which they can't wear, give them a non-draining scarf of invisibility instead. (Adapt code from meatsprint to accomplish this.) The item tile is a recolour of item/armour/scarf1.png, using the palette of item/amulet/artefact/urand_amulet_invisibility.png, and the worn tile is a recolour of player/cloak/scarf_magenta.png. Closes #3773. -------------------------------------------------------------------------------- 6203b1e6a4 | DracoOmega | 2024-05-13 11:44:30 -0230 Mention glowing orange brains' brilliance aura in description (namsan) An oversight when I was adding it. -------------------------------------------------------------------------------- bc14699165 | DracoOmega | 2024-05-13 11:44:22 -0230 Don't crash when monsters aim hellfire mortar near level boundaries -------------------------------------------------------------------------------- 7caecd69e6 | DracoOmega | 2024-05-12 04:25:55 -0230 Fix a crash with monsters aiming Hellfire Mortar near the level border The heuristic to decide where to aim it would try aiming at out of bounds squares, causing an assert in beam code. -------------------------------------------------------------------------------- 5152ae1ce3 | DracoOmega | 2024-05-12 03:13:58 -0230 Prevent a crash from casting Hellfire Mortar on level boundary (acrobat) -------------------------------------------------------------------------------- 8b4cc811b7 | DracoOmega | 2024-05-12 02:10:03 -0230 Don't crash on forcibly displacing the player from a wall (acrobat) This was plausible to achieve by casting Hellfire Mortar several times in a row, progressively deeper into a wall, so that the path from the first cast had closed up by the time the second was closing up. -------------------------------------------------------------------------------- 44bfc332e5 | David Lawrence Ramsey | 2024-05-11 19:43:24 -0500 Add another chaos name to artefacts. -------------------------------------------------------------------------------- e769ff8643 | regret-index | 2024-05-11 21:30:34 -0230 Actually make monster yellow drac bite damage weaker than green stingers Whoops. -------------------------------------------------------------------------------- 87abc831c1 | DracoOmega | 2024-05-11 20:55:19 -0230 Buff Draconian Stormcallers (and white draconians in general) a little White draconians as a base type have been at the bottom of the pecking order for some time, with a resistable breath type whose damage was lower and had no secondary effects. Also, the HD hack used to make their breath damage lower than ice dragons of the same HD wasn't reflect in xv, causing the game to say they did 3d28 damage when they only did 3d18 (a pretty massive difference!) This commit raises their breath damage to 3d22 and makes xv display it properly. Stormcallers additionally pick up the same trick that Qazlal player worshippers did this patch - being safe from their own Upheaval. They will also be slightly more willing to hurt their allies with it (since summoning even a single wind drake was enough to fully preventing casting it against even an xl 27 player). This should mostly only matter in corridor situations, so still only a modest change. Finally, raise their Upheaval cast rate - it's the spell they're most likely to be unable to cast, so they can get a higher liklihood to use in situations where they can. Their kit is still a bit anti-synergistic with itself, but it's flavourful so this may be a completely adequate improvement. -------------------------------------------------------------------------------- 7bd66db0f0 | regret-index | 2024-05-11 20:54:59 -0230 Give monster yellow draconians the players' acid bite aux This adds a bit more consistency to how green draconians have a poison sting aux on both players and monsters. More pressingly, it also gives draconian annihilators a bit more differentiation from deep elf annihilators beyond a trading of high Will for a little more HP and some AC, through letting them have marginally more melee damage and applying a bit more corrosion than prior, as well as between draconian annihilators and the other conjurations-focused classes in the same avenue. (Yellow base draconians are already third in kill statistics, though they're not particularly high compared to red or green base draconians, while black and purple base draconians are noticeably higher. The rough same positioning in the middle of the pack also applies to annihilators. As such, this shouldn't be too dramatic an overall Zot buff.) The damage is slightly lower than the green draconian sting aux, since corrosion is harder to deal with than poison. -------------------------------------------------------------------------------- 6a5d6975f0 | Nicholas Feinberg | 2024-05-11 07:39:47 -0700 Give serpent form rDrown (acrobat) Since they can swim, and for consistency with Mf etc. -------------------------------------------------------------------------------- 12f0f65bdd | Nicholas Feinberg | 2024-05-11 07:39:47 -0700 Remove unused function in header -------------------------------------------------------------------------------- 2afa0c46cb | David Lawrence Ramsey | 2024-05-11 09:15:38 -0500 Fix outdated Dvorak keybind (christakahashi). Closes #3491. -------------------------------------------------------------------------------- df15be1b29 | David Lawrence Ramsey | 2024-05-11 08:38:17 -0500 Make the chaos spawn temple transparent. -------------------------------------------------------------------------------- 12fa8b1472 | DracoOmega | 2024-05-10 21:33:29 -0230 Add a proper targeter for Slouch, display damage per monster Instead of just hilighting all of LoS when aiming the ability, it will now actually show which monsters will be affected by Slouch (ie: indicating that it cannot affect sleeping or stationary monsters) as well as indicate how much damage an individual monster is expected to take, based on its speed. (This should help give players a better understanding of how much speed affects the damage Slouch actually does) Also make the ability's damage description more explicit that this is damage against normal-speed monsters. Unlike spell damage, this is never listed in a format where we only have a few characters to work with, so we're free to be a little more verbose. -------------------------------------------------------------------------------- 8bf067fb8e | NormalPerson7 | 2024-05-10 21:31:15 -0230 Add damage to ability descriptions For the following abilities: - all breath weapons - storm form: blinkbolt - demonspawn: hurl damnation - orb of Dispater: evoke damnation - Beogh: smiting - Cheibriados: slouch (damage against a normal-speed monster) - Ignis: foxfire swarm - Jiyva: oozemancy - Qazlal: upheaval, disaster area - Ru: power leap, apocalypse - Uskayaw: stomp, grand finale - Yredelemnul: hurl torchlight - the Shining One: cleansing flame Makhleb's minor destruction and major destruction are too random to describe in a simple formula in any meaningful way, except potentially we could make it state the average damage in the future. The same applies to Nemelex' cards. In many cases, abstract the power and damage formulae for these abilities to ensure the output damage is the same as listed. This often involves listing the rounded-down damage formula, where abilities use div_rand_round on skill/XL. There are many more abilities that it would be nice to quantify in their descriptions based on the player's current skill but don't fit neatly into the damage category. It would also be nice to list ability noise, and damage at max skill, but since abilities often don't have a clearly defined power-cap and noise is often dealt with elsewhere, this is challenging. Nonetheless, this will hopefully be useful in allowing players to see how their skill/XL affects damage output. Players should remember that there are usually no actual breakpoints and that the damage listed has usually been rounded down. -------------------------------------------------------------------------------- cb1f725376 | DracoOmega | 2024-05-10 19:17:02 -0230 Reroll misery clouds from Condenser Vane Instead of simply producing no cloud on that spot at all (and then printing a god message explaining why you got scammed). -------------------------------------------------------------------------------- 0981f75f4d | DracoOmega | 2024-05-10 19:17:02 -0230 Suppress bad clouds from Xom's cloud trail while worshipping good gods It was possible to get a cloud trail from Xom wrath, while worshipping a good god, and get a cloud type hated by your god, resulting in potentially a huge loss of piety. Now inappropriate cloud types will be suppressed by your current god and turned into salt instead. All good gods suppress miasma and misery, and Zin additionally blocks chaos and mutagenic clouds. -------------------------------------------------------------------------------- cadf65b764 | DracoOmega | 2024-05-10 19:17:02 -0230 Make Blorkula un-zombifyiable (since he's a vampire now) As hilarious as "Blorkula the Orcula the orc zombie" is. -------------------------------------------------------------------------------- d489c1ee53 | DracoOmega | 2024-05-10 19:17:02 -0230 Don't perform a deathbed conversion on an already-converted orc I'm not sure that this deal with #3808 entirely, since I wasn't able to reproduce the unlinked items part, but in the process of testing, I noticed that an orc could surrender multiple times if you 'killed' them again after they'd already converted. This shouldn't happen, regardless, and *maybe* could be related? -------------------------------------------------------------------------------- 034902570a | DracoOmega | 2024-05-10 19:17:02 -0230 Improve sticky flame messaging while rF- Now it says that it 'burns you terribly' if you have rF-, like other sources of fire damage. Fixes #3789 -------------------------------------------------------------------------------- 3f0eabb45e | DracoOmega | 2024-05-10 19:17:02 -0230 Don't crash on a Flashing Balestra that kills its own caster (ge0FF) eg: as caused by Ru or presumably amulets of Reflection as well. -------------------------------------------------------------------------------- f13bc15527 | DracoOmega | 2024-05-10 19:17:01 -0230 Make Magnavolt beams non-bouncy In most circumstances, this doesn't matter, since the beams are always aimed at a monster and stop at that monster. But if one of the magnetised targets ends up on the other side of a granite statue, you can still see them, but the beam cannot properly reach them, and will rebound off the statue without a warning. Rather than deal with all the targeter issues of properly displaying and prompting the player for these situations (since that would only make the spell feel cludgier), let's just make the beams stop if they can't reach their target. Fixes #3809 -------------------------------------------------------------------------------- f9b02fec0a | David Lawrence Ramsey | 2024-05-10 15:32:10 -0500 Unbrace -------------------------------------------------------------------------------- 271a355215 | David Lawrence Ramsey | 2024-05-10 15:20:41 -0500 Refactor handling of bardings (#3788). Rename player::wear_barding() to player::can_wear_barding(), and make it account for form changes. Also, remove _cant_wear_barding_reason(), and fold its old logic into can_wear_armour(). With this done, bardings can now be properly shown as unavailable when the player could normally wear them, but is in a form that prevents wearing them. -------------------------------------------------------------------------------- 34ef5f125e | gammafunk | 2024-05-10 12:16:58 -0500 feat: Improve lua monster speed descriptions Speed descriptions were made more detailed in e72b690d, but lua was still using the old adjective system. This commit moves the description logic directly into `monster_info` so that it's use for both lua and in-game descriptions. -------------------------------------------------------------------------------- 4ba1219d08 | David Lawrence Ramsey | 2024-05-10 09:53:36 -0500 Fix inaccurate Lear's hauberk armataur message. They can't wear it, but it's not blocked by their tails as with nagas; it's blocked by their (four) feet. -------------------------------------------------------------------------------- 2fe6b246ae | David Lawrence Ramsey | 2024-05-10 09:07:52 -0500 Shuffle and reweight some goblin sharper lines. Bias them somewhat in favour of card deck lines; and less so for deck of punishment lines, dropped card messages, and misplaced card messages. -------------------------------------------------------------------------------- 6b3bedf760 | David Lawrence Ramsey | 2024-05-10 07:38:13 -0500 Reorganise priestly Makhleb worshippers a bit. Put Asterion at the end of the list, since he's a unique, and simplify the nearby comment. -------------------------------------------------------------------------------- 1dda8f8d83 | regret-index | 2024-05-10 03:52:16 -0230 Mildly bump up obsidian bat difficulty Cross-referencing objstat's average bat count versus the Orcish Mines death statistics since they're added, they're rather middle-of-the-pack in terms of lethality, despite being rare spawns mostly unique to the branch with a rare gimmick. New monsters don't have to be hyper lethal to justify their continued existence, but it helps a branch with low variety to have a given rare spawn be any much noticeable, so they can do with a little bit more teeth. Obsidian bats get a summon cap of 4 rather than 3, and slightly better damage and defenses all around. They also move from speed 25 to speed 30; there's next to no slow earth monsters any more, so a stone bat being slower than other bats doesn't really fit anyway. -------------------------------------------------------------------------------- c27ebab66b | mainiacjoe | 2024-05-10 03:52:16 -0230 Add a hat* shop (#3646) "This hats-only shop places two of see invisible, willpower, and intelligence hats, a good_item hat, a randart hat, and either a single unrand hat or a second randart hat. Uses hat tiles that are rarely encountered elsewhere. Since it only places good items, have it show up fairly deep." [Committer's notes: Cleaned up a bit of logic code checking. Since the nostalgia has overflowed so far that the dwarf came back entirely, name the shop after the granny his dialogue mentions as making his hat instead. Also, remove the shop from most Lair branches- Wiglaf didn't show up in water branches and we don't put shops in Spider in general. Snake is fine, though. Vault weight is lower due to showing off previously rather rare tiles and containing all these randarts and unrands, too. In exchange for such increased rarity, it now also gets a coinflip chance to contain a book solely containing Wiglaf's new signature spell. This might be a little too silly, it might be fine. We'll see how this lasts the years. Closes #3646.] -------------------------------------------------------------------------------- c2f12fc6cd | regret-index | 2024-05-10 03:52:16 -0230 Make the orc priest apostles a little more fancy (#3628) To differentiate orc priest apotles more from just being recoloured orc wizards holding the orc priest tablet, give them a bit of shiny trim like high priests have, but with silvery-metal colours and skipping the collar to reduce the chance of it being confused with said high priests (who have gold trim and trim on the collar). Ideally in the future we could get fancier and slightly varying tiles on this front, but this should help for now. Closes #3628. -------------------------------------------------------------------------------- a9bbc2f417 | David Lawrence Ramsey | 2024-05-10 00:14:28 -0500 Make hell knights properly worship Makhleb. They're priests, but weren't getting the proper god in the priest section of _place_monster_set_god(). -------------------------------------------------------------------------------- 58216f8073 | DracoOmega | 2024-05-09 23:11:27 -0230 Fix Hellfire Mortar incorrectly saying no targets were in range (Tavran) It was falsely interpreting "Will not be harmed by lava being created underneath it" with "Will not be harmed by this spell." -------------------------------------------------------------------------------- dfafe4981a | DracoOmega | 2024-05-09 22:45:08 -0230 Fix missing break statements in spell usability logic (RelicWraith) Due to an oversight that was then repeatedly several times in a row, a number spells were checking the usability of both themselves *and* every spell implemented after that. I'm impressed this didn't come up sooner, but I guess a lot of these spells are unlikely to be used at the same time by the same character. -------------------------------------------------------------------------------- c2fb2e3241 | Nicholas Feinberg | 2024-05-09 11:40:30 -0700 Tweak some spellbooks Make the Tri-Codex thematic again. -------------------------------------------------------------------------------- 635abf799e | David Lawrence Ramsey | 2024-05-09 07:20:31 -0500 Fix wording in formicid no-shafting message. -------------------------------------------------------------------------------- 81c516503d | Nicholas Feinberg | 2024-05-08 18:31:16 -0700 Pluralize Djinn correctly The initial uppercase threw off our pluralise function. -------------------------------------------------------------------------------- f737d811cb | Nicholas Feinberg | 2024-05-08 18:28:19 -0700 Partially dedent -------------------------------------------------------------------------------- 0c6998e1a6 | Nicholas Feinberg | 2024-05-08 18:18:39 -0700 Partially fix a Xal'krixis line Fix one of two. -------------------------------------------------------------------------------- 5559f47ff0 | DracoOmega | 2024-05-08 21:23:08 -0230 Add a comment to clarify that a function is for UI purposes only -------------------------------------------------------------------------------- b5dd1e8a01 | DracoOmega | 2024-05-08 21:23:08 -0230 Reorder invalid target messages for Bind Soul So that it will complain about something being an ally before it complains about them being a summon. -------------------------------------------------------------------------------- 598e6e71c1 | RypoFalem | 2024-05-08 21:23:07 -0230 fix: Bind Soul targeter revealing the true Mara Yredelemnul's Bind Soul ability checks if the monster was summoned and in the case of Mara Summon, this allowed the targeter to show which Mara was not an illusion. Ditto for rashaka's phantom mirror spell. Fix this by ignoring if the monster is summoned for interface purposes when the monster has the phantom mirror enchant (currently the targeter and the displayed potential hp of the bound soul). Also blacklist player illusions from this effect since this new corner case, as far as I know, is the only monster with the phantom mirror effect that is a trivially deducible summon. Is there a better way to do this? [Committer's note: slightly edited a comment for clarity] -------------------------------------------------------------------------------- 5393115b2d | RypoFalem | 2024-05-08 21:23:07 -0230 fix: blink revealing invisible monsters (Ge0ff) The targeter excluded tiles with invisible monsters. Make it so the targeter only excludes the tile if the player knows there's a monster there. -------------------------------------------------------------------------------- 44e7262d61 | NormalPerson7 | 2024-05-08 21:22:51 -0230 Improve the A screen for forms For the longest time (likely forever), forms' innate resistances have not been displayed on the A screen with the rest of the form properties, except for poison immunity and torment resistance (which are weirdly specific exceptions). This commit changes that. Resistances will only be displayed where the player doesn't have a (non-suppressed) mutation superseding them. Add the blinkbolt and siphon essence abilities, clarify shadow form's spellcasting penalty and resists, add descriptions of bad forms' offensive and defensive stats, clarify wisp form's "highly resistant" fakemut and add insubstantial, add serpent form's cold-bloodedness, split statue form's slowness and melee bonus, display blade hands' body armour AC penalty, align bat/pig form fast with the mutation. Also, tone down the wording on alive Vp's regen ("accelerated" sounds faster than "unusually fast" to me, even though the effect is 1/4 of "unusually fast"). Add a new `badmuts` field to form-data.h, so that all of the red- coloured "bad" fakemuts can be displayed on A together, and to remove hacky and inconsistent tags in form-data.h. Reclassify some existing fakemuts as bad (e.g. tree stationary, statue slow). Fix bugs with amphibiousness not displaying in permanent forms and poison immunity displaying as an innate fakemut instead of a form fakemut for some forms, which were caused by the addition of permanent forms in 0.31. Fix fungus form having rN+++ even though plants and wandering mushrooms no longer have this. -------------------------------------------------------------------------------- 31df86b944 | NormalPerson7 | 2024-05-08 21:22:33 -0230 Add Permafrost Eruption as a monster spell for servitors/ghosts Modelled off the code for Plasma Beam, as Permafrost Eruption is similar (lvl 6, two blasts, automatic targeting). I have set the damage to be about 70% of that of monster Plasma Beam, accounting for the fact Permafrost Eruption doesn't miss, and noting that a similar ratio exists for the player spells. We can always tweak this later. Servitors will cast this spell, with priority set just below Plasma Beam and just above Fireball (I figure it should be a bit stronger than monster fireball, but the close targeting restriction will make it slightly more awkward for servitors to have than Plasma Beam). Player ghosts will also have it; perhaps at some point a unique will get it too. [Committer's note: fixed a minor oversight in the tracer using a player instead of monster zap, and nudged monster permafrost damage up a small amount] -------------------------------------------------------------------------------- 2c080400b3 | caryoscelus | 2024-05-08 21:21:18 -0230 Fix formicids able to shaft while in non-mutaion-preserving forms Previously, if formicid character was in a form that disables mutations, ability menu would remove both Dig and Shaft self, but the latter was still possible by using ability quiver. Now this workaround is removed. fixes #3776 -------------------------------------------------------------------------------- 2164d10d88 | DracoOmega | 2024-05-08 18:11:29 -0230 Tiny formatting change to recent xv improvements List damage for quivered throwing items AFTER normal attacks instead of before. (It seemed better to have 'attacks which are always there' come predictably first to me). Also insert a line break above the attacks table for a slight improvement in visual clarity. -------------------------------------------------------------------------------- 080bef29c6 | NormalPerson7 | 2024-05-08 16:59:46 -0230 Show monster staff damage in x-v; let them use staves of conjuration Magical staff damage works differently to weapon brands, and it was previously extremely obscure how much bonus damage a monster could deal with its magical staff. I imagine complaints about this were limited by the fact that only Arachne, Fannar, Josephina, and Jorgrun have high chances to actually come with a magical staff. Add the max bonus damage from a magical staff to the x-v screen, where the brand information is provided for weapons. I have attempted to provide a suitable descriptor for the type of damage in each case, though "earth" and "conj" I admit are quite weak. Unlike all the other magic skills used by magical staves, monsters were not previously allocated any conjurations skill, so they would never get any bonus damage from staves of conjuration. I imagine this is due to staves of conjuration only gaining a melee effect in 695e311. Give them conjurations skill equal to the other elemental schools. -------------------------------------------------------------------------------- ce9c8287b8 | NormalPerson7 | 2024-05-08 16:59:46 -0230 Remove separate quiver line in x-v Missiles are now shown in the Throw line of the attack table, and for special darts and throwing nets, they are also described in the unusual item description. Thus, the line "It is quivering javelins." or similar is now redundant. -------------------------------------------------------------------------------- 9a59075d7c | NormalPerson7 | 2024-05-08 16:59:46 -0230 Completely fold monster throwing/ranged into the x-v attack table When a monster wields a ranged weapon, the x-v attack table previously implied the monster could hit you with that weapon. Now explicitly show this as "shooting" the weapon, and include archer bonus damage in the Max Damage column of the table. Also special-case Nessos so that his extra venom brand is displayed in the Bonus column. When a monster quivers a throwing weapon, add an extra line to the top of the attack table describing the monster's throwing attack, which takes into account brand effects, slaying and archer bonus damage. Silver will display its extra damage against the player in their current mutated state. This permits the removal of the extra text for the archer flag and Nessos, which was always very easy to miss anyway. Example: yaktaur captain, +0 arbalest, silver javelins Immediately before this commit: Attack Max Damage Hit: +0 arbalest 45 It can deal up to 18 extra damage when attacking with ranged weaponry. Now: Attacks Max Damage Throw: silver javelins 57 + 19 (silver) Shoot: +0 arbalest 63 -------------------------------------------------------------------------------- c2b490d30a | NormalPerson7 | 2024-05-08 16:59:46 -0230 Include slaying equipment in monster damage on x-v The real calculation (attack::calc_damage) is able to access monster::scan_artefacts, but for some reason the x-v descriptions use a monster_info object instead, which isn't able to access this method. Thus this requires a new function to duplicate monster::scan_artefacts for monster_info. -------------------------------------------------------------------------------- d582849698 | NormalPerson7 | 2024-05-08 16:59:46 -0230 Improve x-v for AF_PURE_FIRE, AF_DRAIN; fix damage being off-by-one AF_PURE_FIRE was previously very unclear about the fact that the Max Damage number is actually all fire damage and that there is no bonus fire damage. Fix this by removing the "bonus" column from AF_PURE_FIRE and listing the damage in the Max Damage column as fire. AF_DRAIN previously did not list its max damage, even though it did extra damage. [Sidenote: draining effects are weirdly inconsistent: for monsters, AF_DRAIN deals up to damage/2 half the time, draining weapons do this all the time, whereas for players, draining weapons do 2-4 + damage/2 but only half the time.] Most importantly, the formula for melee damage dealt by monsters is damage = 1 + random2(monster attack damage) + random2(weapon base damage) + enchantment/slaying roll when monsters have a weapon, which has a max of max = monster attack damage + weapon base damage + ench/slay - 1 but the -1 was not being reflected in x-v. Fix this. Future commits will incorporate slaying into x-v damage numbers, and improve the display of ranged and throwing weapon damage on x-v by folding it into the attack table. -------------------------------------------------------------------------------- 983892f291 | NormalPerson7 | 2024-05-08 16:59:45 -0230 Add monster weapons and brand damage to x-v In 3dd9dd1, monster attacks were put into a table after many descriptions got too long. However, in the process we lost most monster weapon brands from being shown on x-v at all. The result was that the "max damage" number shown on x-v was often a lie, and there were only two ways to check monster weapon brands: (a) reread the message from when a monster enters LOS for the first time (but note, this currently doesn't display when entering a new floor sometimes due to a bug), or (b) use x to examine the monster, but this only works when in LOS. Let's take advantage of the new table setup in two ways: firstly, rather than "(w/weapon)" being shown for every monster weapon attack, list a monster's weapon's terse description in the Attacks column after "Hit", and secondly, add the max damage from the monster's weapon brand to the Max Damage column. To make this all fit on the 80-character wide description UI, make the column widths adjust themselves to the width of the text in the columns. Where this still isn't good enough, truncate the weapon description, as this is the least important part of the table. Example: Norris, wielding a +2 demon trident of draining. Previously: Attack Max Damage Bonus Hit 48 Cause confusion Now: Attack Max Damage Bonus Hit: +2 demon trident (drain) 48 + 24 (drain) Cause confusion -------------------------------------------------------------------------------- a94dba6d8c | DracoOmega | 2024-05-08 16:33:12 -0230 Properly attribute blame to Blorkula for their bats -------------------------------------------------------------------------------- af1361ef87 | DracoOmega | 2024-05-08 16:33:00 -0230 Remove status effects from Blorkula when they turn into bats While some things like haste could arguably make sense, it feels rather silly to have Blorkula split while petrifying and then reassemble themselves 20 turns later while still petrifying. -------------------------------------------------------------------------------- c66c6fa605 | DracoOmega | 2024-05-08 16:30:58 -0230 Fix a Hellfire Mortar crash It is possible that the target of the second bolt of magma in a turn will be dead by the time it comes to fire on it (probably because it was also in line of the first bolt, even if not its primary target). Instead of assuming each target we picked is alive, double-check and then skip to the next candidate, if the original is dead and one exists. That way the mortar won't sometimes appear to mysteriously only fire once, even when a viable second shot clearly exists. -------------------------------------------------------------------------------- d4bb4810a1 | David Lawrence Ramsey | 2024-05-08 11:24:59 -0500 Adjust Donald Vehumet message. Now that the Hellfire Mortar spell exists. -------------------------------------------------------------------------------- d1626824a6 | David Lawrence Ramsey | 2024-05-07 18:33:09 -0500 Fix spelling. -------------------------------------------------------------------------------- b87f078905 | David Lawrence Ramsey | 2024-05-07 18:24:59 -0500 Fix old comment references to Blork. -------------------------------------------------------------------------------- 4931952e80 | David Lawrence Ramsey | 2024-05-07 18:24:06 -0500 Fix old speech references to Blork. -------------------------------------------------------------------------------- ce087b800c | David Lawrence Ramsey | 2024-05-07 18:18:19 -0500 Remove leftover Blorkula aliases. He's undead now, and can't be polymorphed, so he doesn't need them anymore. -------------------------------------------------------------------------------- df7bd898e0 | David Lawrence Ramsey | 2024-05-07 18:10:51 -0500 Fix punctuation. -------------------------------------------------------------------------------- 66631293e3 | David Lawrence Ramsey | 2024-05-07 18:10:25 -0500 Fix spelling. -------------------------------------------------------------------------------- 169130f397 | DracoOmega | 2024-05-07 20:20:27 -0230 Give polterguardians an actual melee attack Believe it or not, it wasn't intentional that they didn't have one. It should still be fairly tame, but there's few monsters in Crawl that can't hit you at all from melee. -------------------------------------------------------------------------------- 6fc613a006 | DracoOmega | 2024-05-07 20:20:27 -0230 Give glowing orange brains an *actual* aura of brilliance Using the new easy aura framework, brains provide the empowered spells buff to nearby allies so long as they are alive. Unlike Prayer of Brilliance, this affects any monster that is antimagic-vulnerable (ie: it also works on demons and other natural spellcasters, like eyes). This gives them an interesting support function and also makes their summoning feel a little more different than other Shadow Creatures users. Additionally, they get the 'cautious' flag. Despite a synergistic spellset that sounds scary in theory, brains often would spend most of their turns simply walking up to let the player punch them (and they don't even have a melee attack!). This makes the combination of summons/disruption/fear a little more likely that the player has to consider how to answer. -------------------------------------------------------------------------------- 7553c99a0f | DracoOmega | 2024-05-07 20:20:27 -0230 Tweak Cloak of the Thief While noise suppression is a powerful effect, many players felt uncomfortable using this item now that it had an even greater slaying penalty than the old version. But it occurred to me that Quiet is already less useful on the sorts of characters most affected by -slay, so let's try making it give a moderate MP reduction instead (since Quiet is strongest on casters). -------------------------------------------------------------------------------- 408b9259fb | DracoOmega | 2024-05-07 20:20:26 -0230 Fix Marrowcudas having 1 will An oversight from being initially copied from skeleton's stat block. 10 will is still deliberately very low, but 1 felt silly. -------------------------------------------------------------------------------- 03a3b7408b | DracoOmega | 2024-05-07 20:20:26 -0230 Remind Xak'krixis to dress themselves (Mostly by accident, they weren't given a robe or any other body armour. I don't expect changing this has much practical effect.) -------------------------------------------------------------------------------- eae4683228 | DracoOmega | 2024-05-07 20:20:26 -0230 Replace Deep Elf Elementalist Freezing Cloud with Hoarfrost Cannonade Freezing cloud wasn't a very functional spell on these enemies. Because of the unpredictable splash of monster cloud spells, the elementalist would often refuse to cast it at all (even in an open room with no one else around!) for fear of hitting themselves. And then when they did, it was often more dangerous to the elementalist (or other elves) than it was to the player. Let's try replacing it with a different ice spell that has neither of these problems. I am letting monsters 'cheat' and create the cannons centered around their foe, rather than themselves (both so that they can do something with it when there's a pileup of other elves in the way, and so it's less trivial for the player to just stay out of range of them). -------------------------------------------------------------------------------- 033698f6b5 | DracoOmega | 2024-05-07 20:20:26 -0230 Make Hoarfrost Cannonade monster-castable To keep monster from wasting their cannon charge-up, they will only recast the spell if no existing cannon of theirs is in sight of their foe. (Getting the cannons to disappear on the death of their creator involved some fairly ugly hacks, since the main method of doing this explicitly only works on things which are abjurable. In the future, it would be nice to unify the various non-abjurable things that go away on creator death (ie: tentacles, battlespheres, vines, spectral weapons, and now this) instead of each one being handled essentially in its own one-off way. This commit modifies monster::is_summoned to retrieve the summon type of a creature regardless of whether they're abjurable or not (since many non-abjurable things set this!). It was unclear to me why it would only do this for abjurable things. Since the return value of the method is unaffected, I don't THINK this changes the semantics of anything currently using it. -------------------------------------------------------------------------------- 95e6ca381b | DracoOmega | 2024-05-07 20:20:26 -0230 Wiglaf has returned for his hat (and brought a very big gun) Along with the return of playable mountain dwarves, it seemed like a good joke to bring back an iconic mountain dwarf unique at the same time, just so long as there was something interesting for Wiglaf to *do* and I think I may have found that. Wiglaf can now cast Hellfire Mortar, a thematically appropriate (and hopefully fun) spell. They've lapsed a little in their worship of Okawaru, losing Haste to keep them from overlapping with modern Donald too much (but still know Might). They always spawn with a good randart hat and since, well, everyone knows Joseph *took* that hat, they alternate with him as a unique pair. A tiny bit of their dialogue was restored from the old days, but after trimming out the cliche drunkenness and vague racism, the vast majority of it is new. I did my best to manage scottish eye dialect in a similar style; not sure if I have gone overboard or not. Implementation note: it's impossible in a conventional way for a monster to have a hat and a shield at the same time, even using the 'usual' hack used for Nikola's gloves. So I have shoved Wiglaf's hat into his jewelry slot, which I dislike rather a lot. But I'm reasonably sure that it works properly. -------------------------------------------------------------------------------- 8d931bda07 | DracoOmega | 2024-05-07 20:20:26 -0230 Implement monster-castable Hellfire Mortar (and fix some more bugs) This uses a 'probably smart enough' heuristic for determining where to launch the thing (since it can't simply shoot it directly at its target). In testing, it seemed to do a pretty decent job of it. Also fixed: -Cast messages for the morter firing at things sometimes being wrong -Being able to turn the level boundary into lava with it (This was less disasterous than you'd expect, since the morter still wouldn't enter it, but it could give you extra turns of it firing in place while it tried and failed) -Not actually generating the giant noise that the spell implied was happening -------------------------------------------------------------------------------- a69805936c | DracoOmega | 2024-05-07 20:20:26 -0230 Don't trap monsters in walls via Hellfire Morter (ge0ff) To my surprise, while terrain changes expiring were happy to place the player in a wall, it simply doesn't revert at all if it would put a monster in a wall (and thus would remain lava forever). Instead, use the same approach to try to push the monster out of the new wall with increasing levels of force that was done by 706e7c35db215fc7c8d9ae1040d2b281f451c2de (now generalized to use the same code) -------------------------------------------------------------------------------- 10a096165b | DracoOmega | 2024-05-07 20:20:25 -0230 Properly ascribe blame for deaths due to exploding monsters This was broken since 3dd439832fe0f5fe295caad1a2fe3e479a757cda which caused all ikiller information for deaths caused by exploders (ie: ball lightning or fulminant prisms) to be lost. This isn't conceptually trivial to fix, as now the monster responsible for the explosion will already be cleaned up by the time the explosion happens (and the entire blame chain was stored inside that monster). The fix I've settled on is to maintain a very transient cache for copies of monsters that are about to explode. If a scorefile_entry tries to look up a monster by mid and fails, it will look at this cache instead so that it can find the dead monster's info as it was when the final_effect was first scheduled. (This cache is cleared as soon as fineffs are done processing, so there shouldn't be any need to worry about its state.) It's possible there is some other class of fineff that could benefit from using it, for similar reasons, but this wasn't immediately obvious to me. However, this should once again let us see whose fault these deaths are. (Fun fact: I'd thought that Xak'krixis was wildly underperforming, but apparently a full 90% of their kills weren't being attributed to them. Poor Lom also lost out on ~30% or so of their kills since the original commit). -------------------------------------------------------------------------------- 7e7c522bf1 | DracoOmega | 2024-05-07 20:20:25 -0230 Actually attribute banishment kills to their source In practice, this doesn't actually change very much that I can see (unlike what the deleted comment implies, you don't appear to double-dip on xp even with a non-anonymous source.) but does allow a few monster-specific death effects to check if the player was the one doing the banishing. -------------------------------------------------------------------------------- 76af017031 | DracoOmega | 2024-05-07 20:20:25 -0230 Blork the Orc -> Blorkula the Orcula As part of the Beogh overhaul, it seems like a good idea to demonstrate that some orcs other than just the player have non-orcish heritage, and this was one of the funnier options. Blorkula also gets a new gimmick to go with being a vampire: when he would otherwise die, he instead splits into multiple (randomly colored!) vampire bats. The player has a modest length of time to kill these bats before they pull themselves back together into a healthy Blorkula once more. (There is a lengthly cooldown so that he cannot do it again immediately, but will regain that ability if the player is forced to flee). He also gains a modest vampire bite aux and adds Sting, Sandblast, and Shock to his spell repertoir (specifically in keeping with the recent greater emphasis on his 'obsessed with different colors' theming). This definitely makes Blork more dangerous than before, but he is currently the statistically least dangerous unique of his depth range, so there is probably a fair bit of headroom to buff him without concern. I have still nudged him down a floor, out of caution. We'll see if this works out appropriately enough. (I also edited a handful of dialogue lines, both to mention the Beogh conversion history and to cut out the specific implication that his suspenders are somehow magically empowering him - he's got enough other theming going on now.) -------------------------------------------------------------------------------- 7ff33ff42c | DracoOmega | 2024-05-07 20:20:24 -0230 Add methods to follower class to simplify storing in a prop It's easy to store both monsters and items in props, but because of how Crawl handles monster inventories, very tricky to store a monster that is *carrying* items in a prop. Follower wraps some of this process, but cannot be stored directly. This should help a little. -------------------------------------------------------------------------------- bb4d5d823d | David Lawrence Ramsey | 2024-05-07 13:19:36 -0500 Add bird name to artefacts. -------------------------------------------------------------------------------- 60eeae62d1 | gammafunk | 2024-05-07 11:05:29 -0500 feat: Buff evocable invisibility Items like the scarf of invisibility and +Inv in general have been seen by many players as not competitive with other items/properties for a while now. Invis on demand is very strong and I believe still underrated for combat situations by even experienced players. However +Inv requires high evocations investment just to receive a passable fail rate has a significant drain cost on top. We do want +Inv to require evocations investment, and drain is still the best option to limit spamming the ability without care, but better balance can be had. This commit reduces the fail rate's dependency on evocations by 1/3, the same fail rate as +Blink, and reduces the drain cost by 1/3. Hence with 4/8/12 evocations skill, we get 14%/6%/1% fail rates. Complaints about the drain cost are less prominent than complaints about the ability fail rate, but hopefully cumulatively these buffs make players consider using +Inv a bit more. -------------------------------------------------------------------------------- 4fd57f6e19 | David Lawrence Ramsey | 2024-05-04 21:17:34 -0500 Use @the_monster@ instead of the @monster@. -------------------------------------------------------------------------------- d771f2e3db | David Lawrence Ramsey | 2024-05-04 21:01:03 -0500 Add missing comments to goblin sharper dialogue. In order to indicate all deck types. -------------------------------------------------------------------------------- d2cf461c18 | Aliscans | 2024-05-04 17:20:23 -0500 Fix a message for items giving magic regeneration. Before, the game referred to "your injured body" if you tried to wear an amulet of magic regeneration when your health and magic were both below their maxima. The message for that item no longer mentions your physical injuries. -------------------------------------------------------------------------------- b508db45f8 | David Lawrence Ramsey | 2024-05-04 17:07:51 -0500 Port over fix for god speech substitution syntax. Originally from e6c31236d680a93faaff0604426160384db98a5a. -------------------------------------------------------------------------------- 39e60451f5 | Nicholas Feinberg | 2024-05-04 15:03:36 -0700 Revert "Identify un-ID'd randbooks when read" (Aliscans) Obsoleted by events. This reverts commit c751ee2058a0c833a17201e2928c0dc67b7c4c61. -------------------------------------------------------------------------------- c4a1ec1d0d | DracoOmega | 2024-05-04 19:26:44 -0230 Fix Repel Missiles expiring off of monsters (ge0ff) The repel missiles status was recently made to decay with time (as part of the aura rework and polterguardians). I had assumed as the time that the permanent repel missile status used by Deep Elf Archers and co was already set to INFINITE_DURATION, but it was not, and now unintentionally expired with time. -------------------------------------------------------------------------------- 5b11573b90 | DracoOmega | 2024-05-04 19:26:44 -0230 Fix a possible crash when casting Hellfire Mortar I hadn't noticed this was before the general null check (but it has to be above the normal BEAM_DIGGING check too, since it only ignores SOME monsters) -------------------------------------------------------------------------------- 94f45d32bb | Nicholas Feinberg | 2024-05-04 13:25:16 -0700 Remove Haste Plants (Ge0ff) Again. -------------------------------------------------------------------------------- 029dca9f2a | gammafunk | 2024-05-04 09:30:25 -0500 feat: Add monster door usage info to clua The `can_use_doors()` method indicates whether the given monster can ever use doors. -------------------------------------------------------------------------------- 04caa866ee | David Lawrence Ramsey | 2024-05-03 20:24:18 -0500 Fix comment typo. -------------------------------------------------------------------------------- e7eec5b58b | David Lawrence Ramsey | 2024-05-03 18:44:46 -0500 Fix some Rimeblight messaging for named monsters. So we no longer get e.g. "Shards of ice erupt from the Erolcha's body!" -------------------------------------------------------------------------------- a27d9813d7 | David Lawrence Ramsey | 2024-05-03 18:33:23 -0500 Fix wording and punctuation. -------------------------------------------------------------------------------- a89ee85f61 | David Lawrence Ramsey | 2024-05-03 18:26:06 -0500 Use @reflexive@ more in monster spells/speech. -------------------------------------------------------------------------------- b4e814ae46 | DracoOmega | 2024-05-03 20:45:30 -0230 Fix some typos (Namsam) The most delayed typo fix ever, sorry. -------------------------------------------------------------------------------- f843a72a4b | DracoOmega | 2024-05-03 20:45:30 -0230 Fix Rimeblight and Bestow Arms icons not displaying in webtiles -------------------------------------------------------------------------------- 799ce95f6c | DracoOmega | 2024-05-03 20:45:30 -0230 Tweak Rimeblight a little more heavily Increased the infection chance from rimeblight explosion from 1/2 to 2/3. Monsters that die to rimeblight now also have the same chance of spreading the disease to adjacent creatures (without accompanying damage) to avoid the awkward situation of you otherwise wanting to keep weak things alive long enough for them to become contagious (without adding death explosions that risk making it feel too adjacent to inner flame). You can no longer aim the spell through some of your allies (this was always an oversight). More significantly: explosions and disease spread no longer happen out of line of sight. Previously, the most powerful use of this spell was to unleash it on a group and then get the heck away so that they would slow die to each other while the player was safely away. While we do allow some high level spells to have this capability, it feels like there's a lot more risk baked into, eg: Discord, to counterbalance this. I'm a bit uncomfortable with this being the primary use-case for Rimeblight, and want it to feel sufficiently attractive to use while standing around for a fight. (The internal ice damage still occurs while out of sight, in the same way that poison still works out of sight) I also increase explosion damage somewhat (though note that the increased rate of spread is fairly significant). We'll see how this updated version feels to use. -------------------------------------------------------------------------------- a603194e1b | DracoOmega | 2024-05-03 20:45:30 -0230 Lightly tweak Fulsome Fusillade Make the first volley not cost an additional 2 mp beyond the casting cost (this was always unintentional), end the effect immediately the first time the caster lacks the mp to sustain it (instead of remaining 'on standby' for a while while their mp regenerates) and nudge up its damage a tiny bit. -------------------------------------------------------------------------------- d6975a0968 | DracoOmega | 2024-05-03 20:45:30 -0230 Tweak Curse of Agony description for clarity Some people found it ambiguous whether you needed to hit the monster twice to make it trigger once. Hopefully this makes it more obvious that you get two separate triggers per cast. -------------------------------------------------------------------------------- e8f873248b | DracoOmega | 2024-05-03 20:45:30 -0230 Remove an unused bolt member Since it stopped being necessary to warn the player about whether a beam could destroy a tree. -------------------------------------------------------------------------------- 706e7c35db | DracoOmega | 2024-05-03 20:45:30 -0230 Improve behavior if player ends up in a wall due to terrain changes Instead of instantly randomly teleporting the player, try to simply shove them out of the way of the wall first (and, failing that, try to move them somewhere in los range first). There were probably other situations this could previously happen, but it's easier to do deliberately now because of Hellfire Mortar. Now the player should almost always be gracefully pushed backwards instead of being able to trigger an instant teleport this way. -------------------------------------------------------------------------------- f64a43db20 | DracoOmega | 2024-05-03 20:45:30 -0230 Hellfire Mortar (level 7 Fire/Earth spell) A replacement for seismic cannonade from the other direction. This spell creates a line of temporary lava in a chosen direction (even through walls in that direction) and spawns a mortar that moves along that line of lava, firing autonomously at nearby targets while it does so. The mortar fires bolts of magma at up to 2 different random enemy targets each turn, then moves 1 tile further along the path that was carved out for it. When it reaches the end of this path (or a monster blocks its attempt to move), it will disappear. Given that it acts entirely autonomously over a short duration, I have decided that it is closer to a foxfire or battlesphere than it is to a lightning spire in terms of whether Okawaru forbids it or Vehumet supports it. I could see arguments in the other direction, though. Also: enough years have passed since Hellfire was renamed Damnation that it is safe to use for something else again, right? (And this time, it really *is* doing fire damage...) -------------------------------------------------------------------------------- 7561cb4b74 | DracoOmega | 2024-05-03 20:45:30 -0230 Fix a couple missing message recolorings And remove code that was no longer called. -------------------------------------------------------------------------------- 66f656e766 | DracoOmega | 2024-05-03 20:45:30 -0230 Seismic Cannonade -> Hoarfrost Cannonade (lv 5 Ice/Alchemy) Seismic Cannonade was generally poorly received. There was some lack of clarity about needing to charge 1 cannon versus all cannons, perception that its damage was inadequate because so much of it was back-loaded, and I personally felt like the possibility of 'missing' your shockwave attack due to the cannons timing out unless you cast it immediately upon reaching full charge was unfortunate. I don't think the idea was unsalvageable (and simply raising damage and charge rate might have done a lot for it), but I've decided instead to shift element and try using this to address another gap in Crawl's spell library instead. (High level earth will get another new spell shortly instead). Until the recent Permafrost Eruption, there was literally only a single offensive Ice spell between Frozen Ramparts and Ozocubu's Refrigeration. That did a bit to help Ice's midgame being so incredible centered around Freezing Cloud, but an additional option at 5 should help midgame diversity. Hoarfrost Cannonade summons 2 hoarfrost cannons which shoot long-range shards that inflict the Frozen status on enemies. It inherits a greatly simplified form of charge-up mechanic compared to Seismic Cannonade: the cannons start at full health, but each shot the cannon fires consumes a chunk of this health. If it survives to fire a 5th and final shard, that shard will explode for greater 3x3 AoE damage. No manual recast or tracking needed, but the player is still incentivized to protect the cannons to let them get their biggest hit off. (The explosion does no damage to friendlies since its automatic nature would otherwise make it likely to either whiff or hurt you). (Also: more for flavor reasons than anything else, when the cannons fade away, they briefly leave a small puddle of water behind.) This generally fits the tone of Ice doing 'damage over time', while still being very different than Freezing Cloud. Let's see how this one goes over. -------------------------------------------------------------------------------- f3e26c52f0 | DracoOmega | 2024-05-03 20:45:30 -0230 Increase the effectiveness of the Frozen status Frozen was applied as a side-effect of Flash Freeze and Creeping Frost, but didn't have very much impact. It lasted 2-4 turns and increased move delay by 3 aut, meaning that even if you moved every one of those turns you were penalized, you'd lose less than 1 turn on average. In most situations, I think it barely affected how the player should conduct themselves. If a debuff is going to exist, I think it should be easier to notice that it did something, so let's try ramping it up slightly. Frozen now lasts 3-5 turns instead, and increases move delay by 50% (identical to being slowed). This is fairly conservative, but it's a nice round number with existing precedent. Frosthearts are already fairly scary as-is, so I've nudged their HD down by 1. This may not turn out to be necessary. As for monsters, Frozen was even more sad. Mostly this didn't matter, as circumstances where it was applied to monsters was few (and Upheaval is likely to simply kill them rather than have you worry about how slow they move now). But the combination of 'Almost always lasts 2 turns' and 'Increases move delay by 4 aut' meant that it was nearly mathematically impossible for a normal-speed enemy to visibly lose even a single turn from it. (It being a flat +4 to move cost also had the strange effect where enemies with fast movement but normal overall speed suffered a greater penalty than enemies with equivalently high speed for all actions.) Since debuffs like this tend to need a *larger* impact to notice on monsters than on players, let's try making it double their move delay instead (and last slightly longer). This will be relevant for the very next commit. -------------------------------------------------------------------------------- a0a6642542 | DracoOmega | 2024-05-03 20:45:30 -0230 Let Flash Freeze damage targets that already have Frozen status It's a somewhat odd and very specific exception (that does not apply to any other effect that applies Frozen, either) that Flash Freeze cannot deal any damage to a player/monster that already has frozen. Rime Drakes' breath cooldown already made them unlikely to be able to attack the player any more often than this and marginal buffs to other users seem low impact. Admittedly, this makes it possible that a player facing *multiple* rime drakes at once can get breathed on a lot more often, but it was honestly kind of weird that they couldn't. -------------------------------------------------------------------------------- d495c7ad2a | mumra | 2024-05-02 23:00:25 +0100 Break system packages (fix MacOS build) To fix an error running new version of pip3 in virtualised environments. > You may restore the old behavior of pip by passing > the '--break-system-packages' flag to pip, or by adding > 'break-system-packages = true' to your pip.conf file. The latter > will permanently disable this error. > If you disable this error, we STRONGLY recommend that you additionally > pass the '--user' flag to pip, or set 'user = true' in your pip.conf > file. Failure to do this can result in a broken Homebrew installation. https://peps.python.org/pep-0668/ -------------------------------------------------------------------------------- 1bd1766845 | David Lawrence Ramsey | 2024-05-02 16:20:33 -0500 Reorder a few goblin sharper lines. So that the deck-related lines are last. -------------------------------------------------------------------------------- 293f3812c8 | David Lawrence Ramsey | 2024-05-02 16:19:54 -0500 Reorganise goblin sharper's card lines. They're properly divided into sections by deck now. -------------------------------------------------------------------------------- 9e7e224b41 | David Lawrence Ramsey | 2024-05-02 16:07:01 -0500 Add deck of punishment lines for goblin sharper. -------------------------------------------------------------------------------- 8129f212cf | David Lawrence Ramsey | 2024-05-02 13:25:12 -0500 Move Nem's oddities cards into their own entry. Also, make them more likely to show up than the other misplaced cards. -------------------------------------------------------------------------------- 348a825d6c | David Lawrence Ramsey | 2024-05-02 13:02:34 -0500 Remove low weight from misplaced card message. The goblins sharper has enough dialogue now that it won't come up often anyway. -------------------------------------------------------------------------------- eb237df2fa | David Lawrence Ramsey | 2024-05-02 12:50:23 -0500 Add other oddities cards to goblin sharper lines. -------------------------------------------------------------------------------- e50fcabe14 | David Lawrence Ramsey | 2024-05-02 11:34:48 -0500 Fix spelling. -------------------------------------------------------------------------------- 0624dd83d0 | David Lawrence Ramsey | 2024-05-02 11:25:54 -0500 Adjust a goblin sharper line. Orbs of destruction don't always blow up their targets. -------------------------------------------------------------------------------- 55e95659df | David Lawrence Ramsey | 2024-05-02 08:37:09 -0500 Add goblin sharper lines for renaining Nem cards. -------------------------------------------------------------------------------- e5262815a4 | David Lawrence Ramsey | 2024-05-01 20:51:20 -0500 Fix spelling. -------------------------------------------------------------------------------- a127011c1b | David Lawrence Ramsey | 2024-04-30 09:53:05 -0500 Add another adjective to artefacts. (Impassible is not the same as impassable, but the former is still a word in its own right.) -------------------------------------------------------------------------------- 490276c8bd | David Lawrence Ramsey | 2024-04-30 09:43:56 -0500 Fix typo. -------------------------------------------------------------------------------- a794c8f787 | David Lawrence Ramsey | 2024-04-30 01:29:35 -0500 Fix spelling. -------------------------------------------------------------------------------- 53ce97cea7 | David Lawrence Ramsey | 2024-04-30 01:29:19 -0500 Fix typo. -------------------------------------------------------------------------------- caa3975920 | regret-index | 2024-04-30 01:54:02 -0230 Put proper opacity masks in a new overflow altar vault Monsters behind glass in vaults tagged as transparent need "opaque" KMASKs to tell the builder those spaces aren't actually breaking connectivity (since the monsters can't be freed without freeing up connectivity). -------------------------------------------------------------------------------- 08be3ee2a1 | David Lawrence Ramsey | 2024-04-29 07:51:18 -0500 Make the temple's chaos spawn generate awake. So that its messages consistently show up. -------------------------------------------------------------------------------- 98c967edbf | brandon s allbery kf8nh | 2024-04-29 07:35:50 -0500 add mon-aura.cc to Android project …hopefully -------------------------------------------------------------------------------- f039ace532 | David Lawrence Ramsey | 2024-04-29 07:35:23 -0500 Add Zin vs. Nemelex temple overflow vault. To help integrate Nemelex vault-wise as a chaotic god, since there are Zin/Xom vaults and Zin/Makhleb vaults. This has (cosmetic) pink crystal walls, a talking Zin angel, and a talking goblin sharper worshipping Nemelex (only dialogue, no abilities). Note that the latter's dialogue provides minor spoilers as to what some cards do. -------------------------------------------------------------------------------- 7194ef5473 | David Lawrence Ramsey | 2024-04-27 16:34:26 -0500 Add fish name to artefacts. -------------------------------------------------------------------------------- 232a111982 | DracoOmega | 2024-04-27 19:00:44 -0230 Fix a rare Gozag crash When an enemy is killed in a way that causes their corpse to explode (eg: mindburst or iood) while worshipping Gozag, multiple piles of gold are scattered around the general area. The amount of gold in each pile is determined by randomly rounding 'total gold' / 'number of piles'. For medium-sized creatures specifically, if the player rolled the lowest possible amount of gold and the highest possible amount of chunks, it was possible for this to round down to 0 gold in a pile. Which was already specifically guarded against! Piles of 0 gold will not be placed by _explode_corpse. ...but _explode_corpse operates using a reference to the 'original' corpse and while place_monster_corpse attempts to destroy the corpse item after an explosion, destroy_item() specifically doesn't do anything to an item with a quantity of 0, so the original corpse (now gold) would remain with a quantity of 0. Mostly this was invisible, but upon leaving the current floor, attempting to save the present floor would trigger an assert for the 0-gold pile being invalid, causing this crash. Now just make sure that none of the piles ever has less than 0 gold in it. -------------------------------------------------------------------------------- f613fa27ca | DracoOmega | 2024-04-26 21:57:17 -0230 Fix a crash with casting Metabolic Englaciation against the player Only player ghosts can do this presently, I believe? -------------------------------------------------------------------------------- 15cee8bff2 | regret-index | 2024-04-26 20:35:11 -0230 Vault review, mostly for new monster / revisions * Abominations earlier than post-Lair have been tweaked down slightly, due to large abominations being capable of rolling demonic crawler levels of regeneration and small abominations being harder to escape from. Aside from a few vaults, this noticeably reduces the highest rolls of small abominations in gauntlets and slightly lowers large abominations in Gauntlets overall, while reducing their count a bit in the Abyssal Lair end. A few other uses of abominations are mildly tweaked otherwise. * Undying armouries get another few uses in extended. One or two now place in most of Cerebov's vaults, finally emphasizing the steel part of their Fire and Steel title beyond iron shots and red devil tridents by using the armoury weapon granting gimmick on balrugs. (Since Cerebov's already plenty scary, these sparing placements are decently far away from Cerebov themself when possible.) They also get a use in earth zigs (which helps them further differentiate from Dis floors by arming gargoyles and giants), plus a grated ziggurat pillar. * Spider rune vaults at the outliers of kill rates have been slightly tweaked up or down accordingly, and the _arachne_lair vault previously at an acceptable middle-of-the-pack position has been nudged upwards in jorogumo count to the moving out Arachne from Spider. * Ossuary killrate top and bottom ends have been also nudged correspondingly towards the center, and two of the current weakest ones (silent_tomb and city_of_the_dead) both get the fresh new marrowcuda option. -------------------------------------------------------------------------------- 23695124c3 | David Lawrence Ramsey | 2024-04-26 15:11:27 -0500 Add another pasta type to unrands. Also remove unneeded blank lines. -------------------------------------------------------------------------------- eaffa7765d | DracoOmega | 2024-04-26 17:35:39 -0230 Don't let AF_SWARM trigger from attacking firewood (riverfiend) As much as a swarm of angry fish ghosts savaging a lone plant is hilarious to imagine, it's a little much to subject the player to in many circumstances. -------------------------------------------------------------------------------- e4ad002853 | DracoOmega | 2024-04-26 16:43:43 -0230 Don't Bestow Arms to monsters wielding unrandarts regret-index plans to use them on Cerebov's level and it would be deeply silly to replace Cerebov's trademark sword with something else. But even in general, unrandarts are noteworthy enough not to overwrite with this effect. -------------------------------------------------------------------------------- 9cce12141b | David Lawrence Ramsey | 2024-04-26 14:02:01 -0500 Fix capitalisation. -------------------------------------------------------------------------------- 0e4aabf6a3 | David Lawrence Ramsey | 2024-04-26 14:01:28 -0500 Fix spelling. -------------------------------------------------------------------------------- 52f7614869 | DracoOmega | 2024-04-26 16:11:43 -0230 Make Cigotuvi's Monster's constriction less absurd This may have always been bizarrely high, but was a lot less visible before the recent-ish constriction changes that are more explicit about the damage it does - which is evidently a whopping 25-50 unavoidable damage *per turn*. Mutant beasts (which this is) use the same number as damage for all of their aux attacks, but the scale of damage done by a constriction attack really isn't on the same scale, so let's divide it a bit. (10-20 is still a decent bit) -------------------------------------------------------------------------------- 9de2d02d68 | David Lawrence Ramsey | 2024-04-26 08:20:58 -0500 Fix punctuation. -------------------------------------------------------------------------------- 55a6d9f8c3 | David Lawrence Ramsey | 2024-04-26 08:20:43 -0500 Fix typos. -------------------------------------------------------------------------------- b024fe692e | DracoOmega | 2024-04-26 02:58:12 -0230 Fix tag upgrade build -------------------------------------------------------------------------------- cb48baab6a | DracoOmega | 2024-04-26 02:47:58 -0230 Fix accidentally using a removed ranged brand for Bestow Arms Oddly enough, this actually visually worked convincingly enough in testing that I didn't even notice >.> -------------------------------------------------------------------------------- 44a4d61e07 | DracoOmega | 2024-04-26 02:15:39 -0230 Fold Lorocyprocas into Hell Beasts and rename/tweak (regret-index) As per the previous commit, this removes loros and gives their antimagic attack to hell beasts, which are additionally renamed to 'sin beast' (it was always a little weird that something which commonly spawns in Pan but NOT in Hell was named 'hell beast') They have the same base damage as before, with antimagic on their bite attack. Their HD was raised from 7->12 (as this directly affects their antimagic strength) which is still a bit lower than loros, but they're much faster. Out of some concern that Geryon might be a little too oppressive for characters that aren't meaning to tackle the rest of Hell (since horn troves are fun and should be encouraged!), I reduced the summon cap on sin beasts from 8->5, and reduced their duration and his cast rate a little bit. A pure buff to evoking the Horn of Geryon itself also seems unlikely to be too good? We'll see how much any of that feels like a problem. -------------------------------------------------------------------------------- 5e5f0453cd | regret-index | 2024-04-26 02:15:38 -0230 Remove lorocyprocas from vaults and level generation Perma-invisible enemies need to be more threatening to work properly, and there's a surplus of tier-2 demons that have needed a little more power and interest for the indefinite lengths of Pan. This is in advance of their antimagic and palette both being merged into hell beasts, which will be elaborated upon in a later commit. Most uses looking for generic demons slightly re-weigh their demons depending on how many demons they're spawning, with larger counts getting a little bias away from tormentors and hellions in their tier but Pan, Abyss, and ghost vaults with large numbers of monsters rather late not bothering for such. (Pan and Abyss floor generation itself mostly leans on tier 2s in general, including future hell beasts.) Vaults looking for antimagic or invisibility themes have been adjusted to either use hell beasts (as they'll get antimagic later) or different adjascent themes entirely for the latter. -------------------------------------------------------------------------------- 27c0888e48 | DracoOmega | 2024-04-26 02:15:38 -0230 Exile Arachne from Spider, replace with a new formicid unique Since the introduction of jorogumos to Spider, Arachne's main gimmick has felt a little crowded out. They're perfectly good monsters, but she's more or less just a larger one that blinks, and it feels like she'd be more noteworthy if she was simply somewhere else, so let's move her. Arachne now comes with 2-3 orb spiders and can spawn in Vaults:1-4, Elf, and Depths:1 *only in games where Spider was not generated*. You either get joros or her, but not both. (Orb spider backup in open terrain also tends to make her ensnare gimmick more sharply threatening, which is sort of neat) Replacing her in Spider is a long-awaited formicid unique. Xak'krixis is an alchemist on expedition from an isolated formicid kingdom, studying the fauna of Spider. They cast venom bolt, ignite poison, and an improved version of fulminant prism which places two at once *and* has no friendly fire. A straight adaptation of the player spell wouldn't play very well, but multiple 'safe' bombs can make it less trivial for the player to simply ignore, while also not endangering the many bands in Spider. (The noise of them is even a danger of its own down there). Xak comes with a venom-branded two-hander and a shield (why have a formicid if they aren't going to use a shield with a two-hander, right?) and can also dig while moving - but *not* while wandering (to avoid some of the old boring beetle problem of loudly digging out a level whenever they'd gotten woken up). Mostly this means they'll only do it while actively pursuing the player, but also while running away (and possibly in some other situations). -------------------------------------------------------------------------------- c072c2fc51 | DracoOmega | 2024-04-26 02:15:38 -0230 Remove a couple unused function definitions -------------------------------------------------------------------------------- 9a1d0e620c | DracoOmega | 2024-04-26 02:15:37 -0230 Add Undying Armouries, a Vaults out-of-depth monster (regret-index) These replace tentacled monstrosities from the Vaults spawn list entirely, reducing the number of different zones they appear in, while offering a new sort of threat that is a strong thematic fit with Vaults itself. Undying Armouries are a vortex of weapons, animated by a poltergeist formed from the souls of numerous smiths and weaponmasters. They have decent melee and two unique spells: Flashing Balestra is a mini iron shot, usable only from range, that spawns a short-lived dancing weapon near its target - as one of the souls in the maelstrom leaps out to duel with you. Bestow Arms temporarily grants copies of a random summoned weapon to 5-7 nearby allies. These tend to be top-tier items, with good brands and plusses, with a slight bias towards polearms, but also including launchers! This is a unique vector of enemy buff that still ties into existing game systems (and giving an entire band, say, speed longbows or vampiric glaives ought to be felt!) The implementation of this was tricky, and while I think I have caught and fixed most situations where this could devour their real weapon permanently, I'll be keeping my eye on it for other weirdness. -------------------------------------------------------------------------------- 5f1a5ef9f1 | DracoOmega | 2024-04-26 02:15:37 -0230 Replace Arcanist Force Lance with Searing Ray Since it was given a monster implementation, I thought this could be a fun spell to fight against sometimes. Force lance is used widely (and something else in Vaults uses them now, too!), and this feels like a natural fit, so let's try it. -------------------------------------------------------------------------------- 7b5b3b7c9c | DracoOmega | 2024-04-26 02:15:37 -0230 Slightly tweak early 5s Ufetubi were moved a bit deeper after they gained flanking, but have continued to be pretty harmless. Give them the tiniest damage buff and move them shallower again. Nudge shadow imps a bit shallower by the same amount. -------------------------------------------------------------------------------- 8286d04e41 | DracoOmega | 2024-04-26 02:15:37 -0230 Make xv less misleading about enemies with a regeneration buff This never got updated when Regeneration was buffed. (It's still SLIGHTLY misleading, due to fuzzed monster hp and non-random rounding, but should be a lot less so) -------------------------------------------------------------------------------- bf5259ec58 | DracoOmega | 2024-04-26 02:15:36 -0230 Make abomination randomization more interesting and obvious (regret-index) Abominations' randomized stats were a sort of hidden detail that has increasingly not mattered (especially since their speed was made flat). But the concept of them being randomized amalamations of who-knows-what is solid flavor (and more interesting than them being vanilla melee monsters), so let's try to hilight their randomization in a more obvious way. Abominations now start with a single random buff out of: might, haste, or regeneration. This makes it very obvious to the player how a particular abomination is different from any other, while still keeping them fairly simple. Their AC/EV has been set to the average of their old values and their damage reduced slightly (haste/might versions will still hit harder than the old abominations did, but not by quite so much). I also took away no_regen from them while I was at it; not sure there's any good reason they still have it. Some early value uses of abominations will possibly need adjustment. -------------------------------------------------------------------------------- 3c4af0e93a | DracoOmega | 2024-04-26 02:15:36 -0230 Don't let !cancellation attempt to dispel aura effects It could technically remove torpor snail slow, but then it would immediately be reapplied, which is more or less doing nothing. To avoid this being unclear to players, don't let it be drunk to remove effects that will immediately be reapplied. -------------------------------------------------------------------------------- 6ba1bb067c | DracoOmega | 2024-04-26 02:15:36 -0230 Make Ophans Mark the player as long as they remain in LoS (regret-index) I'm not exactly certain what monster balance for many holies is even supposed to be at this point in the game, but ophans currently don't do very much that effectively threatens the player, and this perhaps might (as well as being somewhat interesting and thematically appropriate). -------------------------------------------------------------------------------- 0aa0afcdd8 | DracoOmega | 2024-04-26 02:15:35 -0230 Add marrowcudas to pre-Lair D These were intended as low-level Yred fodder (who is still using necrophages for early Black Torch summons, despite those not even spawning anywhere anymore) as well as an earlygame introduction to a mechanic used on a much latergame monster, though *that* monster isn't implemented yet and it's possible its design will end up changing before it is. Nevertheless, this is a tiny bit of additional variety, another monster that could be used as a boss in a Sewer or Ossuary, and provides an earlygame summoner (of which there are very few which aren't uniques) and very strongly hilights the 'kill the summoner first' approach. They are a fast, relatively low-damage, flying skeletal enemy with AF_SWARM, which summons an additional copy of *itself* whenever it deals damage to a target. (And then those copies can summon other copies, and so forth, up to a cap of 8). It can block off retreat in corridors and quickly create overwhelming numbers if ignored, but dies fairly easily when focused directly. They spawn (relatively rarely) at a slightly shallower depth than Wights, as well as sometimes in the early water table (instead of 100% electric eels all the time.) I'm still uncertain if their placement is too close to wights and would be better at some other depth, with other stats. I'll reassess this after some playtesting. -------------------------------------------------------------------------------- 9bf84028a4 | DracoOmega | 2024-04-26 02:15:35 -0230 Don't make stationary monsters immune to Slowing There's no particularly obvious reason why being unable to move should make one immune to their ACTIONS being slowed. This doesn't affect terribly many things, since most stationary enemies are already will-immune and/or have rC+, but does let chaos brand slow work on statues and metabolic englaciation hit oklobs, among a couple other things. -------------------------------------------------------------------------------- 096cba56ea | DracoOmega | 2024-04-26 02:15:34 -0230 Add Polterguardians These are support allies, intended for Vaults, which give passive repel missiles to all nearby allies (and also cast force lance so that they're not utterly useless on their own). They have a modest chance to appear in Vault Warden or Preserver bands, and can sometimes spawn with 1-2 random single enemies (much like Rakshasa can). I'm not 100% happy with their solo spellset, outside of the aura effect, but while metal splinters is the most thematic attack spell for them to have, it also does the least against charactes who are already the least likely to care about the repel missile effect, which seems undesireable. -------------------------------------------------------------------------------- d62b0c61f9 | DracoOmega | 2024-04-26 02:15:34 -0230 Don't let tracers think Might Other benefits monsters without attacks The buff beam wouldn't actually *apply* Might, but monsters would still think that they could, resulting in them casting a spell with no visible effect. -------------------------------------------------------------------------------- b277726453 | DracoOmega | 2024-04-26 02:15:34 -0230 Make Aura of Brilliance no longer an aura In theory, this spell was supposed to continuously grant brilliance to allies near the caster, aura-style. In practice, it was kind of broken. The code looks like it was *attempting* to renew the brilliance duration each turn, but did not actually do so (reapplying full duration only after it completely wore off of someone). Also, each application of brilliance lasted approximately equally long (give or take randomization) as the entire aura itself. So it was very common for the 'aura' to run out before the first application of a buff did, and never extend its duration at all. And then sometimes, it would last *just* long enough for the buff to wear out and reapply it, effectively doubling the duration. To make matters more confusing, the aura would immediately turn off if ever a single turn passed without a buffable ally being in LoS of the caster. (And there was no icon indicating an aura was even active...) It would be possible to make it function more like an aura, but I'm not sure there's a great mechanical benefit to doing it in this case. So instead, just make it a one-time AoE buff (with about 75% longer duration than it has at present) and remove the other supporting code. -------------------------------------------------------------------------------- 183d00d4ec | DracoOmega | 2024-04-26 02:15:34 -0230 Refactor / unify how monster passive enchantment auras work Currently this combines torpor snail slow aura and martyred shade injury bond aura into a single new system (which will make it very simple to add similar effects with less duplicated code). Functional changes: -Torpor snails now (deliberately) work through grates/statues. At least one vault already assumed that they did, and it doesn't feel like there's a good thematic or mechanical reason for them not to -Martyed shade's injury bond now wears off if they spend more than a couple turns out of LoS of what they're protecting (previously, LoS only mattered to apply, and it would otherwise never wear off). -Shades now apply injury bond each turn without needing a visible foe nearby. (The old behavior could sometimes lead to confusing situations where they wouldn't bond an ally for no obvious reason) It is *possible* there are some minor changes with timings of when effects are applied or removed, but I think those should be the main effects. -------------------------------------------------------------------------------- fa1cc04b1d | David Lawrence Ramsey | 2024-04-23 19:21:40 -0500 Fix punctuation. -------------------------------------------------------------------------------- 15e7c0074e | David Lawrence Ramsey | 2024-04-23 14:25:24 -0500 Fix the build? -------------------------------------------------------------------------------- cfd66e3ff3 | David Lawrence Ramsey | 2024-04-23 13:52:50 -0500 Make class-specific orc names work with apostles. Orc apostles now have their own name keys based on class. So priestly apostles can now be named Judas, just as friendly orc priests used to be. Accordingly, add names for warrior and wizard apostles. -------------------------------------------------------------------------------- b3226c233f | David Lawrence Ramsey | 2024-04-22 16:21:49 -0500 Make god protection work with cleaving/reaching. So that you can no longer attack Fedhas and Jiyva allies via those methods. -------------------------------------------------------------------------------- b4a59205af | David Lawrence Ramsey | 2024-04-21 18:10:10 -0500 Fix Hurl Torchlight description. It damages holy beings, not unholy beings. -------------------------------------------------------------------------------- abb26cbae4 | David Lawrence Ramsey | 2024-04-21 14:53:08 -0500 Fix spelling. -------------------------------------------------------------------------------- 5bea24bcb7 | Nicholas Feinberg | 2024-04-21 12:48:42 -0700 Don't allow rain to create deep water anywhere Pretty silly and almost impossible to trigger in practice. I like silly, but there's no sense keeping code for something no one will ever see. -------------------------------------------------------------------------------- a3b3661b09 | Nicholas Feinberg | 2024-04-21 12:39:00 -0700 Allow rain to create deep water in sprint Now that it's temporary. Reverts 57db23c628d709e5e6e635634631c1f7cdf624bc. -------------------------------------------------------------------------------- 7117bd966e | Nicholas Feinberg | 2024-04-21 10:35:06 -0700 Fix a silly use of mon_is_object -------------------------------------------------------------------------------- 1f0809d323 | David Lawrence Ramsey | 2024-04-21 12:18:39 -0500 Fix now-inaccurate comment. Since Lugonu hasn't had Bend Space for awhile. -------------------------------------------------------------------------------- d272cc43a0 | David Lawrence Ramsey | 2024-04-21 12:17:21 -0500 Fix corpse naming of the mad acolyte of Lugonu. So that it leaves a "human corpse", instead of a "human corpse of mad acolyte of Lugonu". -------------------------------------------------------------------------------- d927fbf5ee | David Lawrence Ramsey | 2024-04-21 09:25:37 -0500 Add another colour for Blork's dialogue. -------------------------------------------------------------------------------- d922fe92ef | David Lawrence Ramsey | 2024-04-21 08:14:46 -0500 Properly apostrophise rimeblight message. -------------------------------------------------------------------------------- a09f62fbf4 | DracoOmega | 2024-04-21 01:44:16 -0230 Fix missing Recall Apostle description (due to typo) -------------------------------------------------------------------------------- 35e66b3ebd | David Lawrence Ramsey | 2024-04-20 19:38:06 -0500 Move old box of beasts tile to UNUSED. -------------------------------------------------------------------------------- b8cfe57ea9 | DracoOmega | 2024-04-20 18:04:12 -0230 New tiles for gravitambourine / box of beasts by meckryl -------------------------------------------------------------------------------- e909cc9b66 | NormalPerson7 | 2024-04-20 11:11:53 -0500 Fix a few things about wanderer - Troll, oni and spriggan wanderers now actually get armour when they roll armour skill (acid dragon scales for good quality, otherwise an aux slot) as originally intended. They'll also get armour skill if they start with acid dragon scales. - Ghoul wanderers can now get potions of attraction like every other species - Formicid wanderers can now start with a quarterstaff or a ranged weapon and a shield - Starting wands of warping now get 2-4 charges like iceblast/roots instead of getting 15 Also, to incentivise using starting unarmed combat skill when wanderers get it, make wanderers that start with unarmed skill not get the default club/dagger if they weren't assigned another weapon. -------------------------------------------------------------------------------- 1b2d3e27e7 | Kyle Rawlins | 2024-04-20 12:10:51 -0400 fix some lua docstrings (FBV) (Sadly, I still don't have the ability to actually rebuild the docs) -------------------------------------------------------------------------------- 384da2ce10 | David Lawrence Ramsey | 2024-04-20 00:42:06 -0500 Fix typo. -------------------------------------------------------------------------------- f09306aaf3 | advil | 2024-04-19 20:11:23 -0400 fix: typo -------------------------------------------------------------------------------- 345e16ba17 | advil | 2024-04-19 20:10:04 -0400 fix: comment an obscure number (hellmonk) -------------------------------------------------------------------------------- b208e08d4e | David Lawrence Ramsey | 2024-04-19 17:57:27 -0500 Mark the faith mutation as good instead of bad. Since it gives no penalties, and is exclusive to mummies anyway. -------------------------------------------------------------------------------- ee455d87c4 | David Lawrence Ramsey | 2024-04-19 17:50:40 -0500 Fix spelling. -------------------------------------------------------------------------------- 7161d331b1 | David Lawrence Ramsey | 2024-04-19 09:28:38 -0500 Add Rimeblight to Kiku gift list (NormalPerson7). -------------------------------------------------------------------------------- 85d4e5bfdb | David Lawrence Ramsey | 2024-04-17 18:57:12 -0500 Add a time name to artefacts. -------------------------------------------------------------------------------- 881aff7752 | David Lawrence Ramsey | 2024-04-17 18:48:09 -0500 Set killer properly for Ely wrath heals (oops). -------------------------------------------------------------------------------- 4cb0429790 | David Lawrence Ramsey | 2024-04-17 18:42:09 -0500 Alert stabbed monsters Ely wrath heals (#3759). Instead of letting them possibly stay unaware. Closes #3759. -------------------------------------------------------------------------------- c73bb6fe4b | DracoOmega | 2024-04-17 20:39:36 -0230 Let Gavotte ignore -move when moving the player again Tragically, I forgot that you could simply cast Momentum Strike to reliably cause the status to yourself. Letting formicids or !lig work differently is one thing, but I think that too easily gives Gavotte modality of 'Do you want to move yourself or not?' which I don't want to introduce to the spell. (On reflection, the monster equivalent of -move didn't stop them from being flung around anyway.) -------------------------------------------------------------------------------- b20137aa24 | DracoOmega | 2024-04-17 20:11:32 -0230 Don't double-miscast when miscasting Seismic Shockwave (NormalPerson7) This was a consequence of how the second spell was embedded inside the cast code of the first. Instead, directly switch which spell is being cast inside your_spells, depending on the cannon's mode. This feels a little ugly, but is at least clear in what it's doing and seems to solve the original problem without creating new ones. -------------------------------------------------------------------------------- 80a8511205 | DracoOmega | 2024-04-17 20:11:32 -0230 Make -move and stasis block the self-move portion of Gavotte You already can't move stationary enemies this way, so it feels like it should work the same way for players. But unlike many transloctions that move the player, you're clearly affecting the *general area* and not specifically yourself, so it seems intuitive that you can still hurl enemies around even if you remain in the same place. This does mean that formicids can do things with it that other species cannot, but it's not clear to me that the advantage of 'can toss enemies out of your LoS sometimes' outweighs the downside of 'can't ever use it to rapidly reposition yourself', and formicids aren't exactly a concerningly powerful species at present. We'll see if that holds up in practice. (Deliberately miscasting translocation spells to get this property on other species seems almost certainly worse to attempt than doing something else with your time, and if someone wants to use !lig to take advantage of this, then they can be my guest) -------------------------------------------------------------------------------- 95e3b1b552 | DracoOmega | 2024-04-17 20:11:32 -0230 Don't poof summons when you Gavotte without hurting them (Drazool) -------------------------------------------------------------------------------- 61e5eb5241 | David Lawrence Ramsey | 2024-04-17 16:48:02 -0500 Adjust Donald's Yred dialogue. Add one new line, and adjust another one to account for spectral things. -------------------------------------------------------------------------------- b2c533c2cc | David Lawrence Ramsey | 2024-04-17 16:38:02 -0500 Fix spelling. Ensure "cerulean" is spelled consistently, betwen the imp and the Blork colour, and resort accordingly. -------------------------------------------------------------------------------- 1450d63957 | DracoOmega | 2024-04-17 17:42:28 -0230 Don't let allies reduce damage enemies take from Ozocubu's Refrigeration It always felt both a flavor mismatch *and* unfortunate mechanics that simulaca (which are immune to Refrigeration) still had anti-synergy with it by reducing the damage enemies would take from it. Rather than specifically exclude icy monsters from this calculation (and invite confusion/debate about what is sufficiently un-warm), only give the huddle bonus from monsters *allied* with the target taking damage. So massed enemies take the same reduced damage as now, but your summons will no longer deign to give them a friendly cuddle for warmth. This effectively buffs both spells a little, but Refridgeration doesn't seem so strong these days that it can't handle that, and it feels like a cute and intuitive synergy. -------------------------------------------------------------------------------- 23bc409a18 | DracoOmega | 2024-04-17 17:42:28 -0230 Tweak Fulsome Fusillade animation Explosions will generally come out faster now. Hopefully will still be adequately readable. Also properly respect the no-animation setting. -------------------------------------------------------------------------------- 222fab4e45 | DracoOmega | 2024-04-17 17:42:28 -0230 Fix Fusillade maintaince cost not working properly for djinn (ragingrage) The status light would be dimmed (like they could not afford to pay) at all times, but it didn't actually cost them any hp to maintain at all. -------------------------------------------------------------------------------- 999f1deb04 | DracoOmega | 2024-04-17 17:42:28 -0230 Fix Fusillade usability tracer caring about line-of-fire (ragingrage) The spell itself did not, but you had to force-cast it if anything was in the way. -------------------------------------------------------------------------------- 9044fd6bb8 | DracoOmega | 2024-04-17 17:42:28 -0230 Don't let the player cast Seismic Cannonade while worshipping Okawaru Even if you lose out on such wonderful messages like "The seismic cannon feels only hate for you! x3" -------------------------------------------------------------------------------- d60f5e5fc7 | Nicholas Feinberg | 2024-04-17 09:05:20 -0700 Fix rimeblight double-kills (Ge0ff) Stop killing dead monsters! Hopefully. (Untested.) -------------------------------------------------------------------------------- 3814254bd7 | David Lawrence Ramsey | 2024-04-16 16:36:48 -0500 Add two nouns and one modifier to gizmos. -------------------------------------------------------------------------------- f62624241c | mumra | 2024-04-16 21:22:36 +0100 Fix more rare caps issues in speech Snorg, Thermic Dynamos, Norris, and cornered monsters. -------------------------------------------------------------------------------- 284280803b | DracoOmega | 2024-04-16 16:26:32 -0230 Improve seismic cannon shot damage at higher spellpower a little Earlier versions of this spell did too much upfront damage, and while I was repeatedly dialing this back, I left it so that spellpower did very little to actually improve them. This should raise their damage at higher power, but not affect it very much at lower power. (Damage may still warrant adjustment in *general*, but I'll wait on more playtesting feedback for that) -------------------------------------------------------------------------------- 1362d298d4 | DracoOmega | 2024-04-16 16:26:32 -0230 Don't turn seismic cannons hostile when you hit them (ge0ff) They're mindless objects it seems like they should obey the same rules as spellforged servitor here. (This had the additional negative effect that the other cannons could charge themselves up by firing at the now-hostile cannon...) -------------------------------------------------------------------------------- 0afd68cec4 | David Lawrence Ramsey | 2024-04-16 12:33:11 -0500 Fix typo. -------------------------------------------------------------------------------- 871480c51d | David Lawrence Ramsey | 2024-04-16 10:21:03 -0500 Fix capitalisation in monster message (Ge0ff). -------------------------------------------------------------------------------- d68e888341 | David Lawrence Ramsey | 2024-04-16 09:43:03 -0500 Count foul stench as a retaliatory DS mutation. So the player can't get it along with spiny or foul shadow. -------------------------------------------------------------------------------- 508020473e | David Lawrence Ramsey | 2024-04-16 00:17:45 -0500 Add abandoned chaos spawn temple overflow vault. This features altars to all three chaotic gods (now that Nemelex is considered chaotic), a walled-off chaos spawn (cf. the walled-off angel in a Zin overflow vault), a damaged chaos weapon for flavour, and chaotic decor such as (cosmetic) orange crystal walls. -------------------------------------------------------------------------------- 002fc65269 | DracoOmega | 2024-04-15 23:16:14 -0230 Don't let Fusillade hit targets through glass (mumra) Oops. -------------------------------------------------------------------------------- fd48ac3f16 | David Lawrence Ramsey | 2024-04-15 20:31:21 -0500 Make Dissolution/tormentor rare speech be rare. -------------------------------------------------------------------------------- 82205d557d | mumra | 2024-04-15 20:30:22 -0500 Make Killer Klown rare speech actually rare -------------------------------------------------------------------------------- 6b026da01a | David Lawrence Ramsey | 2024-04-15 17:59:22 -0500 Fix spellbook name typo. -------------------------------------------------------------------------------- a1d19d5947 | David Lawrence Ramsey | 2024-04-15 17:52:14 -0500 Fix missorted Blork colour entry. -------------------------------------------------------------------------------- 1366db7308 | David Lawrence Ramsey | 2024-04-15 17:41:39 -0500 Fix typos, wording, and spelling. -------------------------------------------------------------------------------- b27d4a036e | DracoOmega | 2024-04-15 19:52:02 -0230 Shuffle new spells into spellbooks, add 3 new books in the process -------------------------------------------------------------------------------- 4722b9ceb0 | DracoOmega | 2024-04-15 19:52:02 -0230 Some tweaks to auto-aiming to make Magnavolt work sanely with autofight This repurposes the still-implemented but currently unused prefer_farthest member of direction_chooser and adds spflag::prefer_farthest to let spells use this (currently just Magnavolt). It also fixes some bugs I discovered with its implementation in the process, like how it choose the 'farthest' target by starting with the default closest target and then cycling backwards once so that it would 'wrap around' to the farthest. Which didn't actually work properly in many cases where the default target *wasn't* the closest to start with. Additionally, this adds a preferred_aim member to targeter (which normally defaults to returning valid_aim) for situations where it is clear that a certain valid target would not be what the player would *actually* want to aim at in the vast majority of cases. Default target selection is now done in two passes - looking for a preferred_aim first, and then picking a valid_aim second if no preferred_aim is found. This isn't intended to use any complex heuristics to guide the player, but for simple situations where 'closest valid target' doesn't actually represent good default behaviour. There may be other spells for which it makes sense to use this, but for now it's also just used by Magnavolt (otherwise, ranged autofight uses the spell so badly that you essentially could only ever manually cast it) For the record: the deep guts of direction_chooser are scary and deeply unpleasant to work with. I am not 100% confident that what I have done here won't have some undesired side-effect, though in basic testing other things seem to still work properly. Fingers crossed. (I also wasn't thilled to add a member to targeter for just one spell here, but wasn't sure of a cleaner way to accomplish the goal with what I was working with.) -------------------------------------------------------------------------------- a627dd3ad3 | DracoOmega | 2024-04-15 19:50:45 -0230 Magnavolt (level 7 Air/Earth spell) An attempt to fill out more cross-over spells, since I think those can present interesting skilling decisions, as well as continuing to add more options for high-level casters in general. Magnavolt is a smite-targeted spell that coats a target with a thin layer of magnetised metal and then fires a bolt of electricity at every visible enemy that is magnetised in this way. (Meaning that the first time you cast it, it will fire one bolt, but repeatedly casting it will fire 2, 3, 4, and so forth). The magnetised status is short-lived, reduces the target's EV to 0, and also causes them to leave behind an electroferric vortex for a brief while after death (which is stationary, but perma-magnetised, so that it can continue to serve as an anchor for the spell if the initial target immediately dies, which helps to keep the ramp-up more predictable in situations where the caster is actually successfully killing things). By blending the two opposing schools together, this spell offers Air more controllable (and less unsafe) long-range damage at this level range, while giving earth better AoE (in exchange for it being more resistable) with a simple unique twist. Ideally this tempts some people to pivot in ways that previously weren't as rewarding, while offering a new simple damage option for high level mages. -------------------------------------------------------------------------------- 242962994e | DracoOmega | 2024-04-15 19:50:45 -0230 Seismic Cannonade (level 7 Alchemy/Earth) Another attempt to fill in some high-level alchemy options of a very different style than Fulsome Fusillade, this spell consturcts 3 seismic cannons near the caster which are stationary turrets that fire medium-range projectiles each turn and have a built in 'super' they can charge up for. The cannons are initially created with 1/2 of their max hp, but heal a small amount with each shot they fire (as they dig up and incorporate more material from the earth into their frames). Once they reach full hp, the caster can recast the spell to unleash a seismic shockwave that does significant area damage to a targeted location and also destroys the remaining cannons in the process. This is intended to lean into alchemy's thematics of 'creation' (as Fusillade leaned into 'chemical reactions'), while providing a high-level ally spell that feels distinct from, say, a Spellforged Servitor using bombard or crystal spear (which Earth could already access at this level with a splash of a secondary school). By contrast, cannonade is noisier, less flexible with positioning, and requires some defending, but can switch between wide-scale AoE and single-target damage on the fly. (It was also an attempt to make another 'modal' ally spell after the positive response to revamped Call Canine Familiar). As usual, all of the various numbers involved in this are still provisional and may need adjusting. (Also: the cannon tile is very sad; I apologise.) -------------------------------------------------------------------------------- 7e3501342c | DracoOmega | 2024-04-15 19:50:45 -0230 Rimeblight: New Level 7 Ice/Necromancy spell A beam-targeted irresistable enchantment that inflicts Rimeblight upon a living/holy/demonic creature. The creature will take AC-ignoring cold damage over several turns as ice devours them from the inside out, and also periodically explode in a flurry of ice shards that damages nearby hostiles (but not the player or their allies!) and can spread the disease to succeptible creatures it hits. Creatures with rimeblight on them that drop below 20% hp (ie: the 'almost dead' threshold) will instantly die and be replaced with a short-lived pillar of rime. (Purely decorative, but the flavor is too good to pass up here, in my opinion) Beyond the neat flavour and unusual spreading mechanics, this provides a high level offensive necromancy option that isn't ally-based (and also a little more variety in high-level ice magic in general). -------------------------------------------------------------------------------- 697f7be91b | DracoOmega | 2024-04-15 19:50:45 -0230 Fulsome Fusillade: level 8 Conjurations/Alchemy An attempt at giving alchemy a high-level blasty spell that feels sufficiently distinct from those which already exist, while also feeling appropriate to the thematic spirit of the school. Fulsome Fusillade gives the player a status which causes beakers of random reagents to rain on nearby targets for each of the next 5 turns, causing 3x3 explosion of either fire, cold, electricity, or poison arrow aimed on top of 3 random enemies. But importantly, if any of those explosions *overlap*, the area of overlap is instead hit by a volatile alchemical reaction that deals a larger amount of non-elemental damage and has a chance to apply a random debuff. In effect, one can consider it somewhere between Polar Vortex and Ignition; it does mp-efficient damage over time but benefits greatly from targets being adjacent to each other. It can work in corridors and hit enemies from a far range, but becomes far less useful against either single targets OR a very large number of targets - being ideal against a single clustered group that will focus the random hits into a small area. Many aspects of this spell are still tentative and subject to further adjustment as playtesting happens. -------------------------------------------------------------------------------- 8c197d95f1 | David Lawrence Ramsey | 2024-04-15 16:10:05 -0500 Add one more colour for Blork's dialogue. Technically, "sorcerer's violet" is another name for the periwinkle flower, and not the name of a colour, but I'm using it as the latter, at PleasingFungus' suggestion. -------------------------------------------------------------------------------- f7567baaaa | David Lawrence Ramsey | 2024-04-15 15:56:25 -0500 Add more misc colours for Blork dialogue. -------------------------------------------------------------------------------- 40ac7a0f4d | David Lawrence Ramsey | 2024-04-14 13:37:02 -0500 Clarify foul flame brand description. Like holy wrath, it has to get through armour to do extra damage. -------------------------------------------------------------------------------- d7206a2022 | David Lawrence Ramsey | 2024-04-14 11:44:53 -0500 Fix wording. -------------------------------------------------------------------------------- ade3313668 | David Lawrence Ramsey | 2024-04-14 09:50:15 -0500 Remove remnants of stationary boulders. Since 03d5c24, decorative piles of debris are used for decoration instead of stationary boulders, so boulders should no longer block travel or count as firewood. This reverts commit aa138b54abb418331c72e2e0836ebba38158137b. This partially reverts d9500d9d985ea3c7500565b73bca617f04e8edfb. -------------------------------------------------------------------------------- 6cb2a80f7e | David Lawrence Ramsey | 2024-04-14 08:50:38 -0500 Allow wanderers with shapeshifting skill. These start with either a beast or a flux talisman. Note that, unlike shapeshifters, they don't start in shapeshifted form. They won't have the skill for flux talismans, and starting in beast form only for beast talismans seems odd, given that their other equipment could include things melded under beast form. (Assume the difference is because they didn't go to Official Shapeshifter School.) -------------------------------------------------------------------------------- 5a1759da3d | NormalPerson7 | 2024-04-14 08:50:23 -0500 Fix wanderer evoker starts from allowing duplicate evokers Previously, if your wanderer rolled a misc evoker, you could still get the same misc evoker generate in your game. Since they're meant to essentially be unrands, fix this. [Sidenote: misc evokers are generally pretty unbalanced for starting equipment. The lightning rod in particular is insanely strong, with 4 charges of (2+)d15 unavoidable lightning damage. Some rebalancing may be desirable in future.] -------------------------------------------------------------------------------- a8fa3634e4 | David Lawrence Ramsey | 2024-04-13 22:31:19 -0500 Fix wording. -------------------------------------------------------------------------------- 546787307d | Nicholas Feinberg | 2024-04-13 11:26:30 -0700 Fix: destroy the power of imagination (CuriousUB) Avoid taking the square root of a negative number when calculating GDR. The results could be dangerously complex. -------------------------------------------------------------------------------- 5a2cda0630 | David Lawrence Ramsey | 2024-04-12 11:48:31 -0500 Add blank line. -------------------------------------------------------------------------------- 3b45f6b399 | David Lawrence Ramsey | 2024-04-12 11:48:10 -0500 Add another Xom esteem entry to artefacts. -------------------------------------------------------------------------------- 5c35ed9eb8 | David Lawrence Ramsey | 2024-04-12 09:21:25 -0500 Add another unlikely hybrid to artefacts. -------------------------------------------------------------------------------- 1cae6b7ea0 | David Lawrence Ramsey | 2024-04-12 00:10:08 -0500 Fix spelling. -------------------------------------------------------------------------------- 1d8594ba9b | David Lawrence Ramsey | 2024-04-11 22:11:21 -0500 Fix spacing. -------------------------------------------------------------------------------- b82d5c5c13 | David Lawrence Ramsey | 2024-04-11 22:11:01 -0500 Add more modern mythical animals to artefacts. -------------------------------------------------------------------------------- 8b09de87e5 | David Lawrence Ramsey | 2024-04-11 21:59:01 -0500 Fix typo. -------------------------------------------------------------------------------- f9495cfbe1 | Nicholas Feinberg | 2024-04-11 18:24:04 -0700 Add meckryl to the CREDITS Note that they have assented to use DCSS's CC0 license for their art. (That is, for the tile in the preceding commit, Yred's Recall icon.) -------------------------------------------------------------------------------- f54f9d2431 | Nicholas Feinberg | 2024-04-11 18:16:44 -0700 New Yred Recall tile (meckryl) A truly gripping portrayal... -------------------------------------------------------------------------------- a7055e1045 | Nicholas Feinberg | 2024-04-11 18:16:44 -0700 Don't let broodmothers abjure (hellmonk) Copy-paste error. Possible that 'summon spiders not abjuring' should be a property of the monster, not of the spell? Probably we'd want a hypothetical intelligent summon spider caster to abjure? -------------------------------------------------------------------------------- 04a7ad8e02 | DracoOmega | 2024-04-11 01:44:34 -0230 Fix various bad interactions between Gavotte and allies (RBrandon) Gavotte would count as attacking an ally (for penance purposes) even if that ally didn't actually hit anything. Moreover, there was no proper warning for casting Gavotte in ways that WOULD result in hurting allies. (And lastly, the message ordering for penance via Gavotte was mildly bad, with the player feeling guilty before anything actually hit anything else.) These should hopefully now all be fixed. -------------------------------------------------------------------------------- eafeab658c | David Lawrence Ramsey | 2024-04-10 19:28:01 -0500 Give unrand amulet of invisibility its own tile. It now uses a palette-adjusted version of the amulet of Cekugob tile, instead of the actual amulet of Cekugob tile. -------------------------------------------------------------------------------- cc1024d444 | David Lawrence Ramsey | 2024-04-10 17:08:00 -0500 Fix misspelled amulet type in tiles. -------------------------------------------------------------------------------- 0f22ef8d61 | David Lawrence Ramsey | 2024-04-09 10:49:03 -0500 Remove unneeded blank line. -------------------------------------------------------------------------------- ff2ca24bee | David Lawrence Ramsey | 2024-04-09 10:48:44 -0500 Revert "Musical instruments shouldn't work silenced" This reverts commit 7506e133619c5ed742734399c36a65b1e3989442. -------------------------------------------------------------------------------- 093061d48c | David Lawrence Ramsey | 2024-04-09 09:37:41 -0500 Remove unneeded space. -------------------------------------------------------------------------------- 7506e13361 | mumra | 2024-04-09 09:37:17 -0500 Musical instruments shouldn't work silenced While it could possibly be argued that it has some translocational way to make noise even in a silence field, it seems more logical that a silenced musical instrument should actually stop functioning. -------------------------------------------------------------------------------- 9e1d0c6be1 | mumra | 2024-04-09 09:37:17 -0500 Instruments shouldn't jingle when silenced Also removed a couple of errant references to Gravitas. -------------------------------------------------------------------------------- 739538afd8 | David Lawrence Ramsey | 2024-04-06 21:35:00 -0500 Fix comment. -------------------------------------------------------------------------------- 30c33ebcab | David Lawrence Ramsey | 2024-04-06 21:34:04 -0500 Add a gizmo adjective and noun. -------------------------------------------------------------------------------- 4a80058b82 | Medrano83 | 2024-04-06 20:45:19 -0500 Fix the description of walls with unseen changes (take two) Temporary terrain changes produced by the summon forest spell can affect dungeon features outside of the player's LOS. Those features lose the flavour when described or if the dungeon view is reloaded. The description is also wrong for the summoned trees after the spell finished. The first version of the patch had to be reverted because it crashed on some vaults with loot on top of custom floor. -------------------------------------------------------------------------------- d49a5c60f5 | Nicholas Feinberg | 2024-04-06 16:22:20 -0700 Fix a confusing message (Silurio) -------------------------------------------------------------------------------- c671339a80 | David Lawrence Ramsey | 2024-04-05 17:09:37 -0500 Fix info leak w/unID'd shop artefacts (#3756). In antique shops, artefact weapons and armour wouldn't be identified, but would still hint at their enchantments through their descriptions if you were a Mountain Dwarf. Fix this by describing such artefacts just as "ancient artefacts" if you don't know their enchantments. Closes #3756. -------------------------------------------------------------------------------- 8e5f33bbaa | Kyle Rawlins | 2024-04-05 16:46:38 -0400 fix: sanitize sanity check -------------------------------------------------------------------------------- 8f8f606f09 | Kyle Rawlins | 2024-04-05 16:44:39 -0400 fix: further tweaks to webtiles lazy image loading In testing, the first attempt didn't look very good on a live server, because the image load was very visible. This commit changes the approach to randomly select and ensure loading for an image every time a logged-in player enters the lobby. Like the prior attempt, it forces loading by removing the lazy attribute; as the comment notes, I'm not sure the standards require a browser to react to this, but they do seem to in practice. -------------------------------------------------------------------------------- ab96632d6e | David Lawrence Ramsey | 2024-04-05 14:02:07 -0500 Fix foul flame colour in monster info bot. It was changed from yellow to lightmagenta in one place, but not the other. -------------------------------------------------------------------------------- 2ec9e35ba7 | David Lawrence Ramsey | 2024-04-05 13:44:59 -0500 Fix underline. -------------------------------------------------------------------------------- d9e1bd76a7 | David Lawrence Ramsey | 2024-04-05 09:54:16 -0500 Adjust a comment. -------------------------------------------------------------------------------- 36d3288a94 | Monkooky | 2024-04-05 09:53:43 -0500 Remove unused areaprops -------------------------------------------------------------------------------- b4fc452618 | Kyle Rawlins | 2024-04-05 09:10:11 -0400 fix: lazy load webtiles title images (mumra, ge0ff) Over time we've accumulated more and more of these, and since they are loaded from html, this has built up initial webtiles load time. There's really no need to frontload them, the way they are used. This commit uses a relatively modern but nowadays widely available lazy loading attribute to defer loading. In order to actually sequence the image load of a non-cached image before the tilesheets, I did need to manually remove the attribute still. Tested on firefox/chrome mac. -------------------------------------------------------------------------------- 99e313a671 | Kyle Rawlins | 2024-04-05 09:10:10 -0400 fix: disable requirejs timeout altogether (mumra, ge0ff) The default value for this timeout is 7s. Since tilesheets are sequenced before js modules in client loading (because they are loading from html), on a slow connection this timeout can be hit for non-cached tilesheets. I didn't find a reasonable version-independent way to defer tilesheet loading without a lot of refactoring, so instead, just disable the requirejs timeout. It would be possible to set this to a large value, but from the user's perspective, since we already have a loading screen, there's no real difference. It's just a matter of whether the errors show up in the developer console or not, but the hang-on-load behavior is the same either way. I also couldn't see any value in making a user-facing timeout error on the load screen. So, this commit takes by far the simplest approach and just disables the timeout. For reference, in 3G throttling I was seeing 40-70s load times, and in 4G throttling this can go up to 30. I'm not sure we are trying to accommodate 3G, but 4G might be reflective of bad connections we would want to try to accommodate. -------------------------------------------------------------------------------- 30fb1b0edc | DracoOmega | 2024-04-04 22:34:18 -0230 Don't let Coglins equip jewellery when polymorphed (ragingrage) -------------------------------------------------------------------------------- eb5ba95c15 | Kyle Rawlins | 2024-04-04 08:32:47 -0400 build: fix macos ci This commit attempts to make the macos CI workaround robust for all scenarios I have seen, and clearly document how it works. -------------------------------------------------------------------------------- 7811c86cf0 | DracoOmega | 2024-04-03 18:55:00 -0230 Don't let bound or constricted monsters follow the player through stairs The constriction interaction was even more weirdly buggy, as they could remain constricted on the other side of the stairs, even if the constrictor themselves was left behind on the previous floor. (Note: things the player is physically constricting will still follow you, as the very act of taking the stairs first releases them) -------------------------------------------------------------------------------- 90b412cebd | DracoOmega | 2024-04-03 18:55:00 -0230 Prompt the player before Piledriving into an ally (Monkooky) You already couldn't use a friendly as the main target, but it was possible to slam an enemy *into* a friendly without warning. Now the player is warned properly. -------------------------------------------------------------------------------- 686ce31a6c | DracoOmega | 2024-04-03 18:55:00 -0230 Make Gell's Gravitambourine a little noisier (ge0ff) Given that it's intrinsically music-based, possible this feels a little better than it being marked as 'quiet' if you examine it? (The exact amount of noise here is basically arbitrary) -------------------------------------------------------------------------------- c89641f149 | NormalPerson7 | 2024-04-03 23:53:14 +0300 Don't show MPRegen line on % screen for djinn -------------------------------------------------------------------------------- e5cd51f897 | wheals | 2024-04-03 23:51:52 +0300 Fix red draconians in dragon form having two breath abilities (#3750) Fixes #3750 -------------------------------------------------------------------------------- f85d74f360 | David Lawrence Ramsey | 2024-04-02 20:00:54 -0500 Ban Zin's artefacts from having the chaos brand. -------------------------------------------------------------------------------- 40b700cd64 | David Lawrence Ramsey | 2024-04-02 19:41:42 -0500 Limit Ignis' artefact weapons to flaming brand. -------------------------------------------------------------------------------- c41d80381e | David Lawrence Ramsey | 2024-04-02 15:50:36 -0500 Rename gui/spells/poison to gui/spells/alchemy. -------------------------------------------------------------------------------- 59293ed448 | Nicholas Feinberg | 2024-04-02 13:47:36 -0700 Fix: catch a few more strays (Ge0ff) -------------------------------------------------------------------------------- 7cf571d63e | David Lawrence Ramsey | 2024-04-02 15:04:32 -0500 Add misc colours as an option for Blork dialogue. These are taken from the colour list used for the scrolls of random effects before they were removed in 00efbec, but with the rainbow colours removed; black, white, and grey removed; and alizarin crimson, saffron, and vermilion added. -------------------------------------------------------------------------------- 8ce7b1ec60 | Nicholas Feinberg | 2024-04-02 12:51:14 -0700 Fix: bring stray lajatangs back to the fold (Ge0ff) Remove stray pixels. -------------------------------------------------------------------------------- 7c90f283a1 | yrdzrfxndfvh | 2024-04-02 12:44:28 -0500 add cardinal to rand_wpn -------------------------------------------------------------------------------- 41c5271027 | DracoOmega | 2024-04-01 18:07:37 -0230 Make Teleport Other try to teleport the affected monster out of LoS I don't expect this raises the spell's power overly much, but avoids the unfortunate scenario of spending all your MP to overcome a monster's will only to have it land 2 spaces to your left and not improve your situation at all. Now it is at least guaranteed to land out of LoS (though nothing is stopping it from being immediately around the corner and walking back in, of course) -------------------------------------------------------------------------------- 90097df4a3 | DracoOmega | 2024-04-01 18:07:37 -0230 Nudge Thunderhulk Blink Ranged cast rate down slightly In partial compensation for it being less likely to move them closer now instead. They're already quite dangerous, and being inside of their effective range is important counterplay. -------------------------------------------------------------------------------- 3c7185120d | DracoOmega | 2024-04-01 18:07:37 -0230 Replace a couple uses of Blink Away with Blink Ranged Blink Away will happily move the monster out of sight of their target (which is usually the player) while Blink Ranged attempts to create distance while still being able to see the target. It seems better behaviour in the majority of cases if enemies don't leave the range at which they can threaten the player altogether. I left Blink Away alone for summoners (who often benefit actively from leaving their summons to hit you, even if they can't see you themselves) and boulder beetles (because they can be so dangerous early on and them sometimes disappearing is a more of a mercy to the player than a nuissance) -------------------------------------------------------------------------------- 00f42548a0 | DracoOmega | 2024-04-01 18:07:37 -0230 Prevent the player from self-targeting ranged weapons There was virtually no reasonable use-case for doing so (and it even required stepping through multiple different confirmation prompts!). Dispersal darts were approximately the only case where this could bring the player any benefit but: a) That's kind of dumb b) You were very likely to miss anyway, so it would almost never be *actually* good to try to blink this way, anyway. -------------------------------------------------------------------------------- 55d883d9c5 | DracoOmega | 2024-04-01 18:07:37 -0230 Make Dispersal Darts better at blinking things away from the thrower Technically they already tried to prefer blinking things away, but were so bad at it that I'm not sure anyone even noticed. (They simply picked TWO random valid destinations and would move the victim to the further of these two). This repurposes some existing blink_ranged code and in the process improves some jankiness with it to prevent this making the *worst* case for dispersal darts worse (even as the average case improves). Now the code will ignore possible destinations that are closer than where the blinker already is. (Yes, it was very possible for a monster to cast Blink Away and actually blink towards instead...) This is effectively a minor buff to monsters with Blink Away (and also Disjunction), but those spots were always downweighted so I don't think it's a significant balance change, so much as polishing off odd behaviour. Mostly, this is intended to buff Warper earlygame a small bit by making one of their trademark consumables better at its job. -------------------------------------------------------------------------------- 66197389d5 | DracoOmega | 2024-04-01 18:07:37 -0230 Don't let prefer_ranged enemies rarely swap to melee weapons in melee Enemies with the PREFER_RANGED flag have a 10% chance not to shoot on any given turn where they have line of fire, and if they rolled this chance while adjacent to their target, were likely to try to melee attack them instead, which looked very silly (Master Archers don't even generate with melee weapons, so they'd just try to punch you!) -------------------------------------------------------------------------------- 6f7e3dd176 | DracoOmega | 2024-04-01 18:07:37 -0230 Don't apply Gell's Gavotte to the other side of glass -------------------------------------------------------------------------------- a0139969d6 | DracoOmega | 2024-04-01 18:07:37 -0230 Try harder not to give ghosts Gell's Gravitas -------------------------------------------------------------------------------- 4be4bdcb63 | DracoOmega | 2024-04-01 18:07:37 -0230 Remove Piledriver -move, rescale damage, lower to level 3 Initial balancing of this spell was far too conservative. Players were wary of using it because of the -move after cast and the damage payoff was generally not good enough to make it enticing. I could adjust those things, but -move isn't very popular in general, so let's see if the unique aiming restrictions keep it from being too powerful even without any cooldown or downside attached. I have rescaled the damage-by-distance formula so that close range piledrivers are less effective than before (though max range ones can be somewhat *more* effective than before, depending on power) and lowered it to level 3. The hope is that this better addresses some of Warper's weak earlygame and entices more translocations investment. It may also benefit from being further away from the more flexible Vhi's. We'll see how this version fares. -------------------------------------------------------------------------------- 730d1222b3 | David Lawrence Ramsey | 2024-04-01 13:06:03 -0500 Add another flower name to artefacts. -------------------------------------------------------------------------------- cfddb08e57 | David Lawrence Ramsey | 2024-03-30 20:07:42 -0500 Fix reference to Margery in Maggie's speech. -------------------------------------------------------------------------------- 23b751d0ae | SentientSupper | 2024-03-30 16:42:58 -0500 Refactored randart staves tile fix (Ge0ff) -------------------------------------------------------------------------------- d694a166fc | SentientSupper | 2024-03-30 16:42:58 -0500 Fix an issue with randart staves in local tiles When an item that has a randomized appearance (potions, staves) on the floor is rendered, the item's main tile is actually the "brand". The randomized tile gets added on later by calling add_main_tile which calls tileidx_known_base_item on the main tile when. This is a hack, but it lets you see the brands of identified items on the ground. However with randart staves, the main tile gets put in the special tile slot instead. Normally this won't cause any issues, but the local tiles inventory renders items as if they were on the ground. It calls add_main_tile on the special slot which then renders the randomized staff appearance on top of the randart staff tile. Fixed by not doing this for special tile slots. -------------------------------------------------------------------------------- 3df4fa4a82 | David Lawrence Ramsey | 2024-03-30 16:27:07 -0500 Fix typo. -------------------------------------------------------------------------------- 59262bdc9b | Nicholas Feinberg | 2024-03-29 13:45:54 -0700 Cut Permafrost Eruption damage by 20% The initial numbers for this spell were intended to err on the side of 'too powerful'. And they were! Now that playtesting confirms the spell is strong, let's pull back on its damage a bit. The goal is for it to still be strong, just a bit less so. -------------------------------------------------------------------------------- e202e49faa | David Lawrence Ramsey | 2024-03-29 00:12:13 -0500 Rename obsolete tile refs to Poisonous Vapours. It was renamed Mercury Vapours awhile ago. Also add a placeholder tile for Mercury Vapours: a palette-shifted version of the Poisonous Cloud tile instead of a straight copy of it. -------------------------------------------------------------------------------- 877066f4b4 | David Lawrence Ramsey | 2024-03-28 16:15:19 -0500 Add foul flame to _chaos_beam_flavour(). To match the chaos_types flavour list in attack::random_chaos_brand(). -------------------------------------------------------------------------------- f73ac73325 | DracoOmega | 2024-03-28 16:24:06 -0230 Remove Gell's Gravitas from players/monsters It was fun enough to let players who had it from old versions play around with infinite tambourines for a bit, but if it's causing actual crashes from ghosts which still possess the spell, I really ought to just remove it. Fun fact: while old Gravitas was technically implemented as a monster spell, due to a non-functional tracer, monsters would never actually think it would damage anything, and thus never cast it (even though casting it could have worked). This may have always been broken, for all I know. -------------------------------------------------------------------------------- 153ae1a8d6 | DracoOmega | 2024-03-28 01:05:11 -0230 Don't crash on gavotting a dead monster The pushing order is sorted so that this shouldn't happen from Gavotte itself, but some scenarios (such as lost souls sacrificing themselves to save something else that was just pushed into a wall) can result in monsters dying prematurely, resulting in a crash. This fixes #3739 -------------------------------------------------------------------------------- 107c3107db | SentientSupper | 2024-03-27 23:22:41 -0230 Fix pressing f twice to aim quivered Dr breath Previously pressing f with a quivered breath would not let you start aiming your breath until you pressed it again. -------------------------------------------------------------------------------- 0cd9e5b168 | Wizard Ike | 2024-03-27 22:59:06 -0230 Fix jinxbite doing extra attacks -------------------------------------------------------------------------------- b5af3dc018 | yrdzrfxndfvh | 2024-03-27 20:25:49 -0500 add Charlatan's Orb to shop of orbs -------------------------------------------------------------------------------- c35c0dd17b | DracoOmega | 2024-03-27 21:38:50 -0230 Rename a couple things for improved clarity Also don't display 'it is liquified' when moving the cursor over tiles of mud, only Leda's proper. -------------------------------------------------------------------------------- 1478e51eec | Monkooky | 2024-03-27 21:38:50 -0230 Fix grey drac breath display Removes a from the display that was appearing as-is. Also, don't display leda's text for mud and make mud show liquiefied description. [Committer's note: squashed and edited typoes] -------------------------------------------------------------------------------- a0577c09bc | Monkooky | 2024-03-27 21:38:49 -0230 Simplify liquefaction Leda's Liquefaction would set a 'liquid' flag for all tiles in range; then for non-water empty tiles would set the mechanically relevant 'liquid_actual' flag. The only read of either flag is through the 'liquefied' function, which would disregard water tiles and non-empty tiles. Line 694 would never return true, a line 688 would pre-empt it and return false. -------------------------------------------------------------------------------- 165e151e72 | wheals | 2024-03-28 00:29:54 +0200 fix: crash on loading a coglin with ring of flight (#3728) Fixes #3728 -------------------------------------------------------------------------------- e9ae430426 | David Lawrence Ramsey | 2024-03-27 11:33:36 -0500 Allow memorising Piledriver v/no targets (#3737). -------------------------------------------------------------------------------- b0a091d592 | David Lawrence Ramsey | 2024-03-27 00:16:01 -0500 Fix spelling. -------------------------------------------------------------------------------- 2009358679 | David Lawrence Ramsey | 2024-03-27 00:02:06 -0500 Fix wording. -------------------------------------------------------------------------------- 58459ad016 | David Lawrence Ramsey | 2024-03-26 23:42:36 -0500 Fix indentation. -------------------------------------------------------------------------------- 05aacc5516 | DracoOmega | 2024-03-27 00:57:51 -0230 Fix typo (ragingrage) -------------------------------------------------------------------------------- adc223dc64 | David Lawrence Ramsey | 2024-03-26 22:18:46 -0500 Fix spelling. -------------------------------------------------------------------------------- 4c6cd3ffef | David Lawrence Ramsey | 2024-03-26 22:17:12 -0500 Tweak wording. Referring to both "the caster" and "you" as the same entity in the same sentence is awkward. -------------------------------------------------------------------------------- e0dfd15e89 | DracoOmega | 2024-03-27 00:13:16 -0230 Shuffle new spells into books (And swap out Warper Manifold Assault for Piledriver) -------------------------------------------------------------------------------- b106c4ab2c | DracoOmega | 2024-03-27 00:13:16 -0230 Make Piledriver display damage in a more maintainable way -------------------------------------------------------------------------------- 24355c9986 | DracoOmega | 2024-03-27 00:13:15 -0230 Improve IMB collision damage description The previous method was too long to fit into the main spell list and would get cut off in the middle. Instead, just show the main damage there and show a more verbose description (including collision damage) in the full spell description. -------------------------------------------------------------------------------- e52afbec85 | DracoOmega | 2024-03-27 00:13:15 -0230 Gell's Gravitas -> Gell's Gavitambourine Gell's Gravitas has been in an awkward place for many years. It's conceptually cute, but generally agreed to be one of the weakest spells in the game, and there are implementation issues with making how it works transparent to players (eg: beam paths often mean that monsters the player expects to get pulled do not, and even if they do, they may move immediately afterward, making it *appear* as though they did not). I tried rewriting it in various ways, but it always felt like it was stepping on the toes of another spell in the same school that did that things better. IMB and Dispersal are both much better at getting things away from the player, Piledriver is (hopefully!) a more direct and intuitive way to slam monsters into walls for value, and Gavotte can do that at a larger scale. However, by turning it into an evocable effect, we may be able to lean into the 'gather monsters into one place' facet more effectively than one could from a repeatable effect, as well as improving direct damage without concerns that it's in the wrong school for that. Hence, the tambourine! (Because I also cannot resist a silly portmanteau) The tambourine is smite-targeted in a large radius (that scales with evo) and tries to pull every monster in that radius into as small an area as possible, then holds non-friendly ones in place there for several turns, as well as dealing some immediate (non-collision-based) damage to them. It currently alternates with phial of floods as a 'control' evoker, though once the pool of evokers expands just a little bit more (which I'm still hoping to do in 0.32), I'd like to remove these '1 of 2' pools from evokers and just pull 5 at random from the entire list. I think it's better for run variety and I don't see the need to guarantee an even distribution of evoker roles (or even power) from run to run in the same way that it makes sense for wands (since those are a bread-and-butter early toolset). (I also realize we've never had proper names in evokers before, but at this point they're *basically* unrands - coloring and all - so it's probably fine, right?) The tile is... very placeholdery, but I tried my best. >.> -------------------------------------------------------------------------------- 90288d38ae | DracoOmega | 2024-03-27 00:13:15 -0230 Gell's Gavotte (new level 6 Translocations spell) A different take on gravity manipulation, intended to provide a fun and novel tool between level 4 and the new climb to level 7 Manifold Assault. This spell lets the caster temporarily reorient gravity in a cardinal direction of their choices, moving *everything* that isn't tied down 4 tiles in that direction, potentially falling into walls and each other. 'Everything' includes the caster, so it can be used for repositioning in some situations, but keep in mind that enemies will usually follow in lockstep with you unless you cast it from a position where they will bump into walls instead of being able to follow you. Enemies only take collision damage if they move at least one space from this effect (so no bashing things against the sides of a 1-tile hallway) and there is a several cooldown after casting it to prevent using it repeatedly to leap across long distances. Nevertheless, it's a tool that is multipurpose - repositioning yourself, doing damage, lining up enemies together for other spells. And one that does so via unique mechanisms that will hopefully be fun to play with. (The targeter helpfully hilights which monsters will take collision damage when the spell is aimed in a given direction, rather than asking the player to count distances themselves) -------------------------------------------------------------------------------- d8d983544c | DracoOmega | 2024-03-27 00:13:15 -0230 Move Manifold Assault to level 7, attempt to buff accordingly Manifold Assault is a fun and popular spell, and having spells that interact directly with weapon combat is good, but the combination of how well it scales in lategame and how little investment is needed for many characters to pick it up by that point is somewhat flattening - it's an easy and powerful tool for a lot of characters to splash and there's little reason for those characters ever not to (especially since spellpower mattered very little for it, in practice) This commit makes Manifold Assault a lot more of a commitment to get online, but ideally leaves the spell still feeling powerful and rewarding when one does so. Compared to its previous incarnation, it now hits twice as many targets per cast (and scales to hit even more at >100 power), and can never miss. If this leaves it insuficiently exciting at its new level, additional buffs will be considered. (I have retained the 'unarmed attacks hit 1/2 as many things' for now, though I'm not sure whether or not that's necessary at level 7?). (Autumn Katana still only hits 4 things at once with its proc, though those hits will now never miss) -------------------------------------------------------------------------------- 8d86919e2e | DracoOmega | 2024-03-27 00:13:15 -0230 Maxwell's Portable Piledriver (new level 4 Translocations) Intended as a replacement for Manifold Assault as a lower level combat oriented translocations spell (that scales less well, but needs less combat skill to function). It automatically grabs an enemy in melee range, and propels both it and the caster in that direction until hitting another monster or a wall (or reaching max range). It does damage via collision only, but that damage is increased based on how far you've travelled. Targeting is automatic, and it will pick the enemy who has the longest unobstructed path to another enemy or wall (to prevent it being far too commonly unusable with multiple adjacent enemies, where most available targets are unproductive). The caster gets -move after using it, proportional to the distance travelled, and it cannot be recast while you have -move. This is to make it primarily useful for offensive purposes and short-term repositioning without being a good way to run away from things (it should always be a net reduction in long-distance movement speed). I realize this is similar to Vhi's in several ways, but rather than being redundant with it, I think they actively complement each other. Piledriver can target only enemies which Vhi's cannot, moves enemies when Vhi's only moves the player, and they combo well together - being able to Vhi's into an enemy to then piledrive it into a wall, or using Vhi's to escape after doing so (since it bypasses -move) -------------------------------------------------------------------------------- e6577ed3b2 | DracoOmega | 2024-03-27 00:12:53 -0230 Refactor a couple spell animations A number of spells that flashd an individual tile as part of their animation (eg: scorch) were using mostly-duplicated code to do so. This pulls that out into a separate function so that it's easier to reuse. (There are a couple other places that could *maybe* make use of this, too, but these were the most simple and obvious) -------------------------------------------------------------------------------- 583ece5c49 | DracoOmega | 2024-03-27 00:12:53 -0230 Slightly refactor ENCH_BOUND handling Fathomless shackles bind is directly marked instead of assuming that all non-sigil binding is from Shackles. (So that -move can be used in other context without side-effects) -------------------------------------------------------------------------------- 9d3c0f8a62 | SentientSupper | 2024-03-27 00:12:52 -0230 Describe spellpower effects on IMB and Gell's -------------------------------------------------------------------------------- 4c2c1c8b4a | SentientSupper | 2024-03-27 00:12:52 -0230 Describe collision damage for spells This includes gravitas and IMB. -------------------------------------------------------------------------------- bbb8fdbe59 | Monkooky | 2024-03-26 09:35:26 -0700 remove some meat meat_and_reaction needed a quantifier preceeding it, unlike fruit_and_reaction. This was confusing and caused repeated errors, so we're changing it. Also sneaking in a haggisification of death yak sausage -------------------------------------------------------------------------------- 4648e6c457 | David Lawrence Ramsey | 2024-03-25 19:57:53 -0500 Fix spelling. -------------------------------------------------------------------------------- 1216c0e361 | David Lawrence Ramsey | 2024-03-25 19:56:40 -0500 Fix typo. -------------------------------------------------------------------------------- 4d5e64a94f | Monkooky | 2024-03-25 22:01:34 -0230 Make forms adjust hunger (#3720) [Adds support for form-specific food messages, and messages for some forms. Makes messages fall back to species-based eating for forms that lack specific messages. Also, a minor fix to spriggan fruit sampling, and a new message for draconians.] [Committer's notes: Squashed the commits together. Added a shared template position for shared lines (carnivore, shortness, inediate), for more cleanliness and further additions in the future, redid spacing, and alphabetized both entries. Commented a little further, added a line for storm form, and adjusted blade form's meat eating message a little further. Merges #3720.] -------------------------------------------------------------------------------- f1ef24bf73 | Monkooky | 2024-03-25 22:01:34 -0230 Update orp_of_zott (#3729) Use the Charlatan's orb instead of a random randart orb, as it fits the joke of the vault better. [Committer's notes: Squashed commits together, fixed a missing FTILE assignment, scattered items a bit further away from the stair / "orb" placements, and cleaned out some unused glyph lines while I'm here. Merges #3729.] -------------------------------------------------------------------------------- 8d3e27d251 | David Lawrence Ramsey | 2024-03-25 16:25:24 -0500 Make Ctrl-\ wizard command work on local tiles. And add explanatory comment about the non-letter control sequences that work on console. -------------------------------------------------------------------------------- 410066aba4 | David Lawrence Ramsey | 2024-03-25 08:04:39 -0500 Remove Jiyva's conversion penance check. Since there's no way to get penance under Jiyva anymore. -------------------------------------------------------------------------------- 5ca9e1acf1 | David Lawrence Ramsey | 2024-03-25 07:58:52 -0500 Don't let Jiyva convert shapeshifters. Since they aren't guaranteed to stay in jelly form. Closes #3730. -------------------------------------------------------------------------------- eaf45d8e21 | SentientSupper | 2024-03-24 21:29:40 -0700 Describe mindburst and pain damage In monster spell description. [Committer's note: refactored.] Closes #3709. -------------------------------------------------------------------------------- 4b62edca99 | Nicholas Feinberg | 2024-03-24 21:21:26 -0700 Fix: remove fired missiles From the docs. (Since ranged weapons no longer use ammo.) -------------------------------------------------------------------------------- 0a3110eadd | Nicholas Feinberg | 2024-03-24 21:20:31 -0700 Update drop_disables_autopickup docs -------------------------------------------------------------------------------- ac1af34cca | SentientSupper | 2024-03-24 21:19:35 -0700 Improve drop_disables_autopickup behavior Don't disable autopickup when dropping missiles because missiles with different brands share the same base type. -------------------------------------------------------------------------------- 984978c3b2 | SentientSupper | 2024-03-24 21:18:36 -0700 Add zot.cc to vcxproj -------------------------------------------------------------------------------- 65f7d67da1 | NormalPerson7 | 2024-03-24 21:17:47 -0700 Show coglins' offhand weapon in the WebTiles interface Add a second weapon line for coglins to the WebTiles interface, just below the normal weapon line and above the quiver, which is hidden in all cases where you don't have an offhand weapon equipped. This works differently from console/offline tiles, but I personally think this is how those formats should work too. (Currently, they have both weapons listed on the same line, which gives each weapon awfully little space for its properties, or in the case of artefacts, even just the name can be too long.) -------------------------------------------------------------------------------- aba3a3cf60 | RypoFalem | 2024-03-24 20:42:31 -0700 fix: Solve the Mara Hall problem (DracoOmega named this the "Mara Hall problem" and I love that so I'm using it here.) Before this commit, when Mara summoned two illusions of himself, he would have a 1/2 chance of swapping positions with each illusion consecutively. This led to a spoilery outcome where you had better odds of attacking the real Mara if you attacked one of the Maras at the new positions as demonstrated below: Call Mara's original position 'a', the position of the first illusion 'b', and the position of the second illusion 'c'. 1st action 2nd action Result position swap(1/2) swap(1/2) c(1/4) dont(1/2) swap(1/2) c(1/4) swap(1/2) dont(1/2) b(1/4) dont(1/2) dont(1/2) a(1/4) You can see here that the probabilities of the true Mara being at position a and b are both 1/4 while the sum of the probabilities of Mara being at position c are 1/2. I don't know of any way position c and b can be distinguished, but you can usually distinguish position a because that's where Mara starts. Knowing this, you know that you have equal or greater odds of attacking the true Mara if you switch from attacking the Mara at the original position to one of the ones at the new positions. Like with the Monty Hall problem, you should always switch! This commit keeps the 1/2 swap chance for the first illusion but uses 1/3 chance for the next potential swap. (and 1/4, 1/5, 1/6, etc for subsequent swaps but Mara only makes two clones so that never happens in practice) This evens out the odds as demonstrated by the new table: 1st action 2nd action Result position swap(1/2) swap(1/3) c(1/6) dont(1/2) swap(1/3) c(1/6) swap(1/2) dont(2/3) b(1/3) dont(1/2) dont(2/3) a(1/3) Now the two c's sum to 1/3 and all three positions have an equal chance of containing the true Mara! [Committer's note: refactored.] Closes #3722. -------------------------------------------------------------------------------- 29eef4237d | David Lawrence Ramsey | 2024-03-24 22:12:33 -0500 Add placeholder tile: equipped Charlatan's Orb. It's player/hand2/orb2.png with the palette adjusted to better resemble item/armour/artefact/urand_charlatan.png. -------------------------------------------------------------------------------- 4cabd7605a | Edgar A. Bering IV | 2024-03-24 17:27:28 -0700 move putrid mouths to lightred in console Having spectral things and putrid mouths on the same glyph caused a variety of legibility problems. Lightred W is free currently and has a rough alignment with the tile, so let's go with that. -------------------------------------------------------------------------------- 0e82a1035d | regret-index | 2024-03-24 18:47:53 -0230 Add sticky flame to Hints Mode (PleasingFungus) While moving around or moving into water is already mentioned in the earliest user's description, the status's descriptions, and all of the player and monster spells' descriptions, we clearly haven't emphasized it enough for many people to have noticed the change. While it'd be quite intrusive to mention it whenever one's lit on fire (since it'd bleed across multiple console lines), people in hints mode are already getting a large amount explanation attached to various matters, and bombardier beetles are quite early, so, it's probably a good idea to make sure at least those newcomers get told about this very directly. -------------------------------------------------------------------------------- 6c632cbfbc | regret-index | 2024-03-24 18:30:23 -0230 A few more monster-based skill titles (yrdzrfxndfvh), some tidying With some minor adjustments, this takes some of the titles that weren't weaker monsters, overly jokey in tone, or weird implications of changing physiologies on non-Draconians, from #3712. * 27 Fighting Humans of Makhleb - the Hell Knight * 27 Unarmed Octopodes - the Crusher * 27 Armour Trolls - the Iron Troll * 27 Shields Spriggans - the Defender * 27 Fire Magic Gargoyles - the Molten * 27 Invocations Draconians of TSO / Ely / Zin - the Pearl Dragon These should be relatively straightforwardly understandable each. "Crusher" is a little silly still as a reference to a removed monster, but it's probably fine in the same way all the Felid unarmed titles shift away from the regular unarmed titles also. (While I'm here, I also sorted skills.cc's list of special titles to follow the in-game display order of skills and the historical / enum order of when species were added, rather than the orders of whenever people added these.) -------------------------------------------------------------------------------- 74a9d55e41 | regret-index | 2024-03-24 17:23:13 -0230 Mildly brighten up the obsidian bat tile Various people have complained the tile doesn't contrast enough against the relatively dark floors of the Orcish Mines. While obsidian bats are kind of inherently a dark material with a near-black other use of it currently present, a little bit of lightening this up should help without losing much of the flavour. -------------------------------------------------------------------------------- d708a3a1bf | David Lawrence Ramsey | 2024-03-24 14:12:44 -0500 Add Charlatan's Orb status description. -------------------------------------------------------------------------------- 456b196249 | David Lawrence Ramsey | 2024-03-24 14:12:44 -0500 Add inscription for Charlatan's Evocations boost. And order the descriptions of the orb's capabilities properly. -------------------------------------------------------------------------------- f510db4c87 | David Lawrence Ramsey | 2024-03-24 14:12:44 -0500 Make the Charlatan's Orb actually glow. -------------------------------------------------------------------------------- 240068c231 | Monkooky | 2024-03-24 14:12:44 -0500 Add unrand Charlatan's Orb Adds a new unrand which boosts evocations, but delays teleports and reduces stealth in the same way as the Orb of Zot. This unrand serves two purposes besides thematic appeal; firstly it provides a preview of the less obvious effects of the Orb status, and secondly provides an equipment based means of boosting evocables. [Committer's notes: Fixed punctuation and formatting, and did checkwhite.] -------------------------------------------------------------------------------- b728d0252e | David Lawrence Ramsey | 2024-03-22 22:57:31 -0500 Fix capitalisation. -------------------------------------------------------------------------------- 74ea0c1b11 | David Lawrence Ramsey | 2024-03-22 22:38:21 -0500 Fix comment typo. -------------------------------------------------------------------------------- 4c8b870234 | David Lawrence Ramsey | 2024-03-22 19:16:16 -0500 Remove obsolete reference in Orb status. The Orb of Zot hasn't interfered with Passage of Golubria since 1899a4c4. -------------------------------------------------------------------------------- 315f82d515 | David Lawrence Ramsey | 2024-03-22 06:32:58 -0500 Fix punctuation. -------------------------------------------------------------------------------- 0968bab981 | Kyle Rawlins | 2024-03-21 12:57:48 -0400 fix: further webtiles startup sequencing issues In particular, webtiles.pid has to be written after shed_privileges. I'm fairly confused because I thought I'd duplicated the order exactly with this part, but I guess not. -------------------------------------------------------------------------------- 41daaf438a | Kyle Rawlins | 2024-03-21 12:40:57 -0400 fix: missing `self.` -------------------------------------------------------------------------------- c80f89d3a0 | Kyle Rawlins | 2024-03-21 12:37:09 -0400 fix: server startup sequencing issues The previous code was accidentally deleting pidfile before the startup step.... -------------------------------------------------------------------------------- 06071df075 | Kyle Rawlins | 2024-03-21 12:37:09 -0400 Revert "fix: move `shed_privileges` later in webtiles setup" The cert problem I was worried about isn't fixed by this, and moreover, shedding privileges so late on a new install results in a bunch of files owned by root that shouldn't be. This reverts commit b001dabdc76911c4204983db9db46ef477979ecf. -------------------------------------------------------------------------------- 7a0cf5b9ff | Kyle Rawlins | 2024-03-21 12:37:09 -0400 fix: improve logging message -------------------------------------------------------------------------------- 68839bf7ff | David Lawrence Ramsey | 2024-03-21 11:14:47 -0500 Reword Ash cursed item desc. Cursed items normally can't be enchanted, since they become artefacts, but now we have Mountain Dwarves, who can enchant artefacts. -------------------------------------------------------------------------------- 8da92d5247 | David Lawrence Ramsey | 2024-03-21 09:16:09 -0500 Remove now-unused now_is_morning() function. -------------------------------------------------------------------------------- 23d0647428 | David Lawrence Ramsey | 2024-03-21 08:56:28 -0500 Remove now-unneeded #include (yrdzrfxndfvh). skills.cc only needed misc.h for now_is_morning(), which was only used for some Meteoran titles, and now Meteorans are gone. Note that now_is_morning() is currently unused by anything. -------------------------------------------------------------------------------- 524b7c7fd8 | Kyle Rawlins | 2024-03-21 09:24:50 -0400 fix: quiet a dgl-build-specific warning -------------------------------------------------------------------------------- 766f10fcc8 | SentientSupper | 2024-03-21 08:18:37 -0500 Clear dimensional bullseye when apostle yields Include ENCH_BULLSEYE_TARGET in timeout_enchantments. -------------------------------------------------------------------------------- 4d9a32fa43 | SentientSupper | 2024-03-21 08:08:40 -0500 Make allies avoid pressure plate traps Consider pressure plates to be bad for the player because they spawn / uncage monsters that attack the player so that allies avoid stepping on them. -------------------------------------------------------------------------------- 303fdf7e8e | David Lawrence Ramsey | 2024-03-21 07:55:35 -0500 Adjust Blork the orc description/dialogue. His rainbow-coloured suspenders were a magical cast-off from a wizard, and they transferred power to him beyond that of an ordinary orc. But they also made him a little mad, and colour-obsessed. -------------------------------------------------------------------------------- b0e0dd98ef | David Lawrence Ramsey | 2024-03-21 07:53:24 -0500 Remove Jiyva's no-hurting-jellies conduct. -------------------------------------------------------------------------------- 93c155cd69 | David Lawrence Ramsey | 2024-03-21 07:53:24 -0500 Remove Fedhas' no-hurting-friends conduct. Since they protect plants from harm, and the only friends you have under Fedhas, that they care about, are plants. -------------------------------------------------------------------------------- a5f95a5a20 | David Lawrence Ramsey | 2024-03-21 07:53:24 -0500 Make god protection work even with manual swings. This affects Fedhas worshippers with plants, Hep worshippers with ancestors, and Jiyva worshippers with slimes. -------------------------------------------------------------------------------- 95e1662365 | David Lawrence Ramsey | 2024-03-20 19:44:27 -0500 Fix punctuation. -------------------------------------------------------------------------------- fa783ce77f | David Lawrence Ramsey | 2024-03-20 14:11:40 -0500 Fix monster info bot compilation (Ge0ff) -------------------------------------------------------------------------------- ee37984d8d | David Lawrence Ramsey | 2024-03-20 12:13:11 -0500 Remove prototype of nonexistent function. -------------------------------------------------------------------------------- 5c25360fe0 | David Lawrence Ramsey | 2024-03-20 11:51:25 -0500 Fix spacing. -------------------------------------------------------------------------------- 7cbadc2d6b | David Lawrence Ramsey | 2024-03-20 11:45:53 -0500 Fix reversed resists/damage message order. For cloak of flames, passive freeze, and foul flame melee attacks. -------------------------------------------------------------------------------- b59af49cd9 | David Lawrence Ramsey | 2024-03-20 11:41:03 -0500 Constify variable. -------------------------------------------------------------------------------- f47b1a0506 | Kyle Rawlins | 2024-03-20 09:39:50 -0400 docs: fix an obsolete comment in config.py (To be honest, I'm not entirely sure if this parameter would *ever* have an effect on webtiles, from reading tornado code.) -------------------------------------------------------------------------------- 3d70bf0cf2 | David Lawrence Ramsey | 2024-03-20 07:33:52 -0500 Print apostle damage numbers properly (Ge0ff) When they're bad, print them before resetting them to zero. -------------------------------------------------------------------------------- fc315c9ecd | wheals | 2024-03-19 22:46:22 +0200 fix: the build -------------------------------------------------------------------------------- 60f1b215fc | wheals | 2024-03-19 22:43:35 +0200 Try to really fix apostle damage tracking (Ge0ff) I still have no idea how this slipped past the code that was supposed to be fixing it up, but once it did the tag minor version check is worthless. -------------------------------------------------------------------------------- c76ea14763 | Kyle Rawlins | 2024-03-19 15:53:42 -0400 fix: don't ignore `max_lobby_idle_time` setting The accidental comparison caused this value to get set to 1, so lobby timeouts were just always using `connection_timeout`. -------------------------------------------------------------------------------- 9ed4220b88 | Kyle Rawlins | 2024-03-19 15:29:06 -0400 feat: webtiles-internal https redirect option This option lets you e.g. redirect http://server:8080 to https://server:8443. There's various external ways of doing this, but it's convenient when running webtiles on custom ports to simply be able to set the redirect in webtiles options. Note: after spending a bunch of time on this, I've concluded it's essentially completely impossible within tornado to redirect a http to https connection on the same port (or vice versa). It's a bit unfortunate, as this would help with a bunch of scenarios that browsers auto-manage when using 80/443, but it is what it is. See https://github.com/tornadoweb/tornado/issues/523 for more info. Also, tornado just hangs when you send a https connection to a http port, apparently before the Application code gets access; I have no idea why this is. But probably official servers will soon no longer use http ports at all, so maybe not a worry. -------------------------------------------------------------------------------- 50abb8ab99 | Kyle Rawlins | 2024-03-19 14:44:33 -0400 fix: missing tuple wrapper Also, slightly tweak default config -------------------------------------------------------------------------------- 3ef9c6c661 | David Lawrence Ramsey | 2024-03-19 11:12:09 -0500 Fix punctuation. -------------------------------------------------------------------------------- 234660e9f1 | David Lawrence Ramsey | 2024-03-19 11:11:19 -0500 Fix wording. -------------------------------------------------------------------------------- 5d9b134aa6 | David Lawrence Ramsey | 2024-03-19 09:58:22 -0500 Make effect/iron_shot_7.png 32x32. Since it's supposed to be a horizontal flip of iron_shot_1.png. -------------------------------------------------------------------------------- 829d17d61b | Kyle Rawlins | 2024-03-19 10:32:09 -0400 feat: webtiles cli support for an ssl port This is primarily to facilitate --live-debug tests. By its nature, I haven't been able to test this commit locally beyond ensuring that it doesn't break normal startup. -------------------------------------------------------------------------------- b001dabdc7 | Kyle Rawlins | 2024-03-19 10:16:20 -0400 fix: move `shed_privileges` later in webtiles setup SSL cert keys may be conventionally stored in a way that needs privileges to access by default; don't force server admins to tweak permissions on this file when copying into chroot. -------------------------------------------------------------------------------- d9b930ba1b | Kyle Rawlins | 2024-03-19 10:14:53 -0400 fix: missing comma -------------------------------------------------------------------------------- dd6cb82677 | Aliscans | 2024-03-19 08:43:42 -0500 Change the spelling of some words to Australian English. Change a few places where a word used a spelling which is not spelt correctly according to https://www.australian-dictionary.com.au/wordcheck/. 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 doc/develop, or any of the contrib stuff. This changes: channeling -> channelling dueling -> duelling offense -> offence defense -> defence skillfull/skillfully -> skilful/skilfully willful -> wilful -------------------------------------------------------------------------------- 362cfcae2a | Edgar A. Bering IV | 2024-03-18 21:53:14 -0700 docs: clarify the prohibition against wishes (Alkali Man) This sentence in the manual aims to explain why acquirement does not offer wishes, but the wording is confusing for people not coming to crawl from nethack. Re-write it to make it in the positive framing about the randomization of acquirement instead. -------------------------------------------------------------------------------- a6a9c15173 | orjb1 | 2024-03-18 23:54:01 -0230 Add guarded unrand Arga vault (#3702) [Committer's note: Recoloured the metal in tiles, didn't do much else. Quicksilvers are a good fit together with Arga (fast, non-elemental, Will+ on the axe and scales both), so a straightforward vault's plenty fine. Closes #3702.] -------------------------------------------------------------------------------- ec90db9d9c | regret-index | 2024-03-18 23:54:01 -0230 Throw together a placeholder Permafrost Explosion tile. Mixes together the original RLTiles icon for Shatter, roctavian's icons for Bolt of Cold and Ozocubu's Refridgeration, and ontoclasm's icon for Hailstorm. Should at least emphasize it's an earth spell alongside ice. -------------------------------------------------------------------------------- 03d5c24375 | regret-index | 2024-03-18 23:54:01 -0230 Decorative boulders -> decorative piles of debris There's been some consternation around the use of unmoving decorative boulders in d9500d9. They list a speed if they actually moved (the speed of BBB's use of the boulder) but don't move in and of themselves, and they also show up in the monster list (because for some reason this isn't innate to firewood). Outside of lingering implementation issues, they're awkwardly not quite as difficult to destroy as bushes but still require manual effort compared to the withering away of plants. They also collected a fairly large amount of confusion and paranoia about them being made to roll in some trap function or another, and while I'd like all of Crawl's unique vault traps to rely on pressure plates eventually (c.f. e446cd8), players will always have some confusion attached to such a re-use. As such, I am replacing most of their uses with an entirely different decorative feature altogether, to fulfill and further extend some of the same spirit of earthen decor beyond different wall and statue tiles or yet more and more piles of large rocks items and stone items around. Piles of debris are meant to fulfill a immotile non-living rubble and ruin position, akin to the expanded uses of pillars of salt. They behaves mostly like plants (in that they will die several turns after being first hit), with some minor tweaks. They have 40% of plant HP but light omniresistance and non-zero AC, which makes it somewhat more plausible for them to be destroyed advance of such collapsing if one can work around those defenses. They count as amphibious, so they can be placed in deep water in vaults for e.g. Shoals and Swamp. Finally, they also collapse into dust (sidestepping the inquiries about it dropping stones or large rocks), which also means a brief cloud of sparse dust when it's destroyed akin to chaos spawn and simulacra. Hopefully, adding what is essentially another type of rare firewood that more specifically implies wrecked ruins rather than overgrown ones shouldn't raise the same issues re-using spell boulders did. Their name and description are ironically enough somewhat up in the air: I'm somewhat dissatisfied with both, and other devs may find-replace a better name as long as the intent of "half-broken stonework" survives. The tiles use a mix of the RLTiles earth magic spell icons (Sandblast, Passwall, LRD, Shatter) and PleasingFungus's original placeholder tile for rockslimes. Possibly some recolours would be reasonable for making them fit into Slime or Desolation too, though I'm a little cautious about spreading firewood a little too far in the broader scope of things. -------------------------------------------------------------------------------- 9ccf1647ab | regret-index | 2024-03-18 23:54:01 -0230 New Mines enemy: obsidian bat Obsidian bats in both name and form are meant to further emphasize the cave parts of the Orcish Mines, as well as emphasis the varied demonic threat attached to both orc high priests and orc sorcerers. Aside from these fits, they're also meant to punish how it's regularly easy (and slow) to flee across the Orc:$ level away from the endvault unless a summoner rolls the faster demons, a sorcerer rolls on paralysis, or the player's actually weak enough to care much about (even post-buff) wargs post-Lair. They're non-living faceless bats with rF++ that have a derivative of the broodmother special- a AF_HELL_HUNT that summons either hell hounds or hell rats on hit 66% of the time, capped at 3 out at once. They're quite a ways weaker than broodmothers otherwise- in stats and damage somewhere between unseen horrors and wargs, or possibly a blink frog band with heavy resists if the player has no EV. Still, by being batty, they regularly step away from the player to let their summons get in the way, a distinguishing feature for a summoner that will probably also rather vex players. Their defenses are probably their most notable feature- with passable AC and EV on top of resists- but by the time one enters Orc a god or floor drops should allow even alchemists to have some other option when facing them. These spawn alone by themselves, taking a small chunk out of wargs as we currently can't adjust due to CCF and ogres as people see plenty of much earlier than Orc. (Possibly we should consider lowering Orc's monster count the same way Lair does to handle the two new Orc enemies being a little stronger than the average normal spawn.) A couple of thematically appropriate demonic and lava orc vaults and ends place them, one of the Volcano sets uses them on rare occasion, and they take yet another (much smaller) slice out of Abyss abominations. Since we've got a lot of demons already, I'd prefer these to stay relatively early and fire-centered rather than used freely in most other vaults otherwise- anything that escaped out of Hell from which pours out Hell itself should be a little special. Their tile is by Sastreii. -------------------------------------------------------------------------------- a2165e0cdb | regret-index | 2024-03-18 23:54:00 -0230 Recentish tile / decor adjustments * Porkolator: A border fix plus hex sparkles so it's not just A Pig. * Fathomless Shackles: Chain tweaks to emphasize their size in contrast to the smaller chains of Bind Soul. * Canine Familiar: A quick recolour to use the inugami's palette. * Coglin Gizmos: Chroma adjustments to help move the purple-pink-red options away from one another. * Scintillating statues: Animate them far less often, and tweak a placement, since they're evidently very distracting as entirely decorative features. -------------------------------------------------------------------------------- 281c7690d9 | regret-index | 2024-03-18 23:54:00 -0230 Another small vault batch Really should clean out more of my drafts files at some later point. * Two Abyss entries, with thematically appropriate and Depths appropriate spawns, meant to vary up Abyss entries since mostly don't have enemies attached to them compared to the Pan and Hells entries. * A decorative Snake vault, trying to help reach the higher Snake decor count needed to make them always appear on Snake:$ to help vary up those floors more tangibly. * A couple more removed vault layouts revamped for other uses. A volcano layout used for a game-wide fire and earth vault, a dwarf vault used for another misc_elf_vault, and a Zotdef layout used for a Zot stairs vault. Would be nice to convert another two layouts of Zotdef into stair vaults with the same monster set set-up, eventually. -------------------------------------------------------------------------------- 33df2375a9 | Kyle Rawlins | 2024-03-18 18:04:48 -0400 fix: various issues with webtiles idle timers Since sometime around 2a3aa404fa2d, the play idle timer has been broken. The issue is essentially race conditions in checking whether a game has actually started/stopped, where the idle timer was reset during game startup but before it had fully started. This commit should make both timers work in a way that is more robust to this issue. The other problem is that 2a3aa404fa2d seems to have assumed that the connection life check was only happening during play, which was incorrect. This lets it work in the lobby, while spectating, and during play again. The overall implementation is still somewhat painful, because no time is really tracked in the lobby; possibly it should be. I also changed the semantics of `max_lobby_idle_time` to match `max_idle_time` a little better. -------------------------------------------------------------------------------- 4004213054 | Kyle Rawlins | 2024-03-18 14:58:34 -0400 fix: remove debug code -------------------------------------------------------------------------------- ce6887170d | Kyle Rawlins | 2024-03-18 14:48:17 -0400 refactor: modernize/fix webtiles signal handling The Tornado 6.4 release notes say: "`IOLoop.add_callback_from_signal` is suspected to have been broken since Tornado 5.0 and will be removed in version 7.0. Use `asyncio.loop.add_signal_handler` instead." This commit is a direct reaction to that; we've certainly had some pretty flaky shutdown behavior with the existing approaches. To update the signal handlers with this suggestion, a bunch of other changes were necessary: * Move all callback setup into an async function, start the ioloop with an asyncio call. This is Tornado's current recommended approach, so really this is a long-needed modernization. * separate socket binding (non-async) from tornado server startup (async) * it's no longer safe to directly call IOLoop.current().stop(); the means of triggering shutdown is therefore converted to (i) an Event that waits for sockets to close (fixing some other issues with the previous approach), and then (ii) code that cancels remaining tasks if this takes too long. * a bunch of old back-compat is removed. This patch is relatively conservative, but does definitely assume asyncio. This patch is still really far from any sort of asyncio conversion; nothing except the main server start function is async. -------------------------------------------------------------------------------- 1b414cbff7 | Kyle Rawlins | 2024-03-18 14:01:07 -0400 refactor: update stale lock code This modernizes this code a little bit for python 3, and also checks for the existence of the process first before prompting the user about "stale processes". When a server is force-shudown via kill -9, lockfiles aren't cleared, and the previous version wouldn't actually check if the pid was real until the 10s prompt had elapsed. -------------------------------------------------------------------------------- 0f6f1dd4b9 | SentientSupper | 2024-03-17 21:25:21 -0700 Fix cursed item background not being red In local tiles. Should be fine for ISFLAG_CURSED to be included in get_item_known_info now that the only source of curses is ash. Closes #3683 -------------------------------------------------------------------------------- b0416c464d | SentientSupper | 2024-03-17 21:18:08 -0700 Display chance for wand of warping to blink When targeting. -------------------------------------------------------------------------------- 00dc8146b4 | David Lawrence Ramsey | 2024-03-17 20:26:36 -0500 Fix spelling. -------------------------------------------------------------------------------- fba4d74c8c | Nicholas Feinberg | 2024-03-17 15:38:37 -0700 Update CREDITS for bjo* Per request: https://github.com/crawl/crawl/pull/3688#issuecomment-2002327035. -------------------------------------------------------------------------------- 77bb6d37f3 | SentientSupper | 2024-03-17 15:36:58 -0700 Show undead players as immune to polymorph -------------------------------------------------------------------------------- 5810ea11cc | SentientSupper | 2024-03-17 15:36:58 -0700 Show player as immune to charming with clarity -------------------------------------------------------------------------------- 903ea0f9b0 | Aliscans | 2024-03-17 15:36:02 -0700 Correct how the display_char option handles gems and gold. DCHAR_ITEM_GOLD and DCHAR_ITEM_GEM were in a different order in dchar_names[] (used by the "display_char" option) to the one in dungeon_char_type, meaning that the option had unexpected effects. Fix this, and add item_gem to the docs for this option. -------------------------------------------------------------------------------- 2cddf732a9 | DracoOmega | 2024-03-17 20:04:31 -0230 Fix a crash with ending constriction after level transit If the constricted actor no longer existed, it would try to dereference a null pointer. There's already checks deeper down to prevent the mid of an nonexistant actor from doing things. -------------------------------------------------------------------------------- 6b6a0ea73c | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Refactor Upheaval/Disaster Area's target skips. Both will now properly skip over all targets they're harmless to. (Before this, aiming Upheaval directly at a target it shouldn't damage would damage it regardless, whether yourself or an elemental force.) -------------------------------------------------------------------------------- 1cb27b7edc | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Disable prompt when self-aiming Upheaval. Since it's supposed to be harmless to you. -------------------------------------------------------------------------------- 8d7d3c4e6d | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Constify variable. -------------------------------------------------------------------------------- c677e9a310 | David Lawrence Ramsey | 2024-03-17 15:05:24 -0500 Readd the Disaster Area radius limitation. So it doesn't always blast everything in LOS. -------------------------------------------------------------------------------- e6bea51fa9 | Monkooky | 2024-03-17 15:05:24 -0500 Remove Upheaval friendly fire Makes Upheaval (and consequently Disaster area) do no damage to Elemental Forces. Other allies are still affected, for thematic and consistency reasons. -------------------------------------------------------------------------------- 6ff4911247 | Kyle Rawlins | 2024-03-17 12:35:50 -0400 fix: remove 3.12 from ci webserver testing Unfortunately, pinned versions fro 3.8 are broken in 3.12 because of package deprecation. I don't think our current version management for these tests is a very good approach, but I don't have a fix right now. So, temporarily disable 3.12 altogether. These tests currently don't do much so it shouldn't be a big deal. -------------------------------------------------------------------------------- 14b72cc9fe | Kyle Rawlins | 2024-03-17 12:33:09 -0400 fix: further update webtiles tests It seems that these tests weren't updated when webtiles code was refactored into a subdirectory. It sort of doesn't matter, because essentially all of our source code is excluded in tox.ini anyways. (What is the point of having these tests when everything is excluded? I have wondered this myself.) -------------------------------------------------------------------------------- 424f3ba4f7 | Kyle Rawlins | 2024-03-17 11:52:09 -0400 fix: update requirements files for webserver tests This is for py38, we'll see if it works for other CI targets. -------------------------------------------------------------------------------- bdd6c9c6ed | Kyle Rawlins | 2024-03-17 11:39:15 -0400 fix: convert CI macos pyyaml dep to homebrew I have some reservations about this, but once any python stuff at all is installed via homebrew, it becomes hard to go back. -------------------------------------------------------------------------------- 66263ccf9e | Kyle Rawlins | 2024-03-17 11:34:22 -0400 fix: update some CI python versions Python 3.6 no longer works here. I believe we've gotten all servers past eol python versions at this point, so it's safe to only test current versions. Also, I (conservatively) updated the python 3.7 installs for catch2 tests to 3.8. This could probably go further? -------------------------------------------------------------------------------- 93cc127212 | Kyle Rawlins | 2024-03-17 11:21:16 -0400 fix: possibly unbreak macos CI pip3 call This will probably fix this immediate call, but it's unclear to me whether the fixed version will install pyyaml in the right place. -------------------------------------------------------------------------------- f73a246b04 | Kyle Rawlins | 2024-03-17 10:48:11 -0400 fix: reorder some CI steps Homebrew and system installed python have an unfortunate interaction from time to time. Most recent github statement on this: https://github.com/actions/runner-images/issues/9471#issuecomment-1984202712 We already had a workaround in place from c6129fcb3f40, but it is not working for the current round of the bug. I think reordering should be the fix. Previously this CI issue must have triggered later in our build process (currently unclear to me how; maybe the brew calls in the prior step only recently triggered a dependency upgrade; right now the culprit is libpng). This commit should ensure it is always triggered before any brew calls. -------------------------------------------------------------------------------- a50f3326c4 | Kyle Rawlins | 2024-03-17 10:21:08 -0400 fix: convert some string `+`s to `make_stringf` Crawl string templating is all over the place, but imo using + for templating is the worst of the available options. -------------------------------------------------------------------------------- c8563f6773 | Nicholas Feinberg | 2024-03-16 22:24:38 -0700 Fix multiple spell list lettering (SentientSupper) Spell lists with three or more sections (e.g. natural + magical + wand spells) would be lettered incorrectly, as would various other cases. Fix this by simplifying lettering. -------------------------------------------------------------------------------- 1ee7915d7e | SentientSupper | 2024-03-16 19:53:22 -0700 Display PE center targets with more opacity Display permafrost center targets with more opacity. This includes a nonstandard use of AFF_YES but I don't think any players would complain. -------------------------------------------------------------------------------- 66358920a5 | bjiorn | 2024-03-16 19:52:23 -0700 Fix max HP value in description of your ancestor Previously the value was not up-to-date after gaining a level until your ancestor died and respawned. -------------------------------------------------------------------------------- 54de21ab35 | Nicholas Feinberg | 2024-03-16 19:49:42 -0700 Don't crash on \ Broken in 95338c156ce86d7b4b3cb89f98aa10beac2d877e etc. -------------------------------------------------------------------------------- a9a889f0c6 | Nicholas Feinberg | 2024-03-16 19:37:57 -0700 Remove buggy handling for un-ID'd wands This logic would hide *all* spells for monsters with un-ID'd wands. Players should no longer ever see monsters with un-ID'd wands, so add an assert instead. -------------------------------------------------------------------------------- fbd0129fbb | Nicholas Feinberg | 2024-03-16 19:37:01 -0700 Fix momentarily un-ID'd monster wands (SentientSupper) We had old monster info cached for a turn, meaning that you could see ijyb come into view with 'a wand of flame', xv them immediately, and see them holding 'a forked gold wand' instead. -------------------------------------------------------------------------------- c23bbe546e | Nicholas Feinberg | 2024-03-16 19:14:02 -0700 Wand description refactoring Following 0bf9c4c012e350145fa2752b77bbbcd8f03b9586. -------------------------------------------------------------------------------- 79873398bf | Nicholas Feinberg | 2024-03-16 19:02:23 -0700 Further revise wand spell descriptions There's no good way to explain why players are affected differently by some spells than monsters are, but we can try to be a little less blunt than 0bf9c4c012e350145fa2752b77bbbcd8f03b9586. Also, fix Fastroot's name. It's a pun! -------------------------------------------------------------------------------- 95338c156c | Nicholas Feinberg | 2024-03-16 18:57:41 -0700 Fix randart stave names (various) Partially reverts 55136d7. Closes #3685. -------------------------------------------------------------------------------- 1a05c61809 | wheals | 2024-03-16 22:53:23 +0200 Fix a crash after banishing a challenging apostle (Memoria, Ge0ff) -------------------------------------------------------------------------------- 63684f6103 | wheals | 2024-03-16 22:38:54 +0200 Update Beogh vengeance accounting when cloning (#3588). Fixes #3588. -------------------------------------------------------------------------------- 65a1bb7473 | David Lawrence Ramsey | 2024-03-16 12:55:44 -0500 Fix comment typo. -------------------------------------------------------------------------------- ad064519fa | NormalPerson7 | 2024-03-16 09:34:59 -0500 Add SH preview and standardise AC/EV/SH previews in descriptions Previously, the AC change shown in item descriptions included temporary effects such as Qazlal's AC+3 status or Ignis' fiery armour, but the EV change did not include temporary changes. This commit changes the AC preview to match that of EV in not including temporary effects, and adds an SH preview, which also does not include temporary effects. I figure that this is the most consistent strategy, but if it is too confusing, we can always go the other way. The most important thing is that it is consistent between AC/EV/SH. Additionally, with AC/EV/SH now allowed to take fractional values, all items that affect AC/EV/SH will show the change in their descriptions, except for non-artefact rings of protection/evasion and amulets of reflection. E.g. shields of protection will now also show the AC change, for completeness, and artefact rings of protection/ evasion and amulets of reflection will show their messages (because strength and dex changes can affect flat bonuses on these items). I have merged the old method of computing the AC change into the more recent approach of fake-equipping the item, to simplify some code. -------------------------------------------------------------------------------- 0bf9c4c012 | SentientSupper | 2024-03-16 09:19:38 -0500 Show wand spells in monster description Add placeholder tile for bolt of light and some new descriptions. Tweak some wand spell descriptions. Charming and bolt of light will now mention their effects on the player. Roots no longer mention an increase in damage over time since that was removed in the constriction rework. Add placeholder warp space tile from dolorous, based on an edited UNUSED/gui/lugonu_bend_space.png with the palette of item/wand/i-disruption.png. [Committer's note: Squashed, and consolidated and edited commit message.] -------------------------------------------------------------------------------- 1953ddba12 | SentientSupper | 2024-03-16 08:00:32 -0500 Don't leak magic if antimagic rolls 0 duration Antimagic frequently rolls a duration of 0 on hits but will still print the "magic leaks into the air" message which doesn't seem right to me. -------------------------------------------------------------------------------- a344392067 | Wizard Ike | 2024-03-15 22:31:33 -0700 Fix summoned protean progenitors' spawns Make their spawns summoned too. [Committer's note: fixed comments and refactored slightly.] Closes #3599. Closes #3622. -------------------------------------------------------------------------------- 9e65270477 | SentientSupper | 2024-03-15 22:10:56 -0700 Add option to remove dropped items from autopickup Adds a new option: drop_disables_autopickup which removes all dropped items from autopickup automatically. A QoL thing that allows you to drop items (especially from local tiles inventory panel) without needing additional keypresses to enter the autopickup menu and disable autopickup manually. Defaults to off. -------------------------------------------------------------------------------- f7ae706393 | David Lawrence Ramsey | 2024-03-16 00:01:11 -0500 Fix comment typo. -------------------------------------------------------------------------------- bc5cafa0a1 | SentientSupper | 2024-03-15 21:57:59 -0700 New tile for slug shots Based on the iron shot tile but with less outline, and colors taken from enchanted boomerangs. Feels weird for the hand cannon description to say it shoots metal slugs while the actual tiles look like sling stones. Closes #3641. -------------------------------------------------------------------------------- 49a1623ff6 | SentientSupper | 2024-03-15 21:52:08 -0700 Revert "Reduce the rarity of rings of slaying" This reverts commit a5b73f788d0da6e87d89aed2e0f0753b06fca47e. -------------------------------------------------------------------------------- 0bc3202ee7 | SentientSupper | 2024-03-15 21:52:08 -0700 Reduce the rarity of rings of slaying They're roughly 3x as rare as other rings for some reason and I don't think they're good enough to be receiving such special treatment. -------------------------------------------------------------------------------- 05749c3a33 | SentientSupper | 2024-03-15 21:52:08 -0700 Lower the price of slaying rings Rings of slaying are more than twice as expensive than other variable strength rings despite being arguably not that much better. Tone down its price to match other rings so it isn't often more expensive than good randart rings that generate in stores. -------------------------------------------------------------------------------- d24e9608d4 | SentientSupper | 2024-03-15 21:48:49 -0700 Buff Norris cast rates Even after his previous buffs, Norris's killratio remains below 1%. In an actual game, he shows up at a time when you're already steamrolling most enemies, and then gets steamrolled. Raise his draining gaze frequency dramatically so it can actually outdrain your mp regen and also increase primal wave's cast frequency slightly. -------------------------------------------------------------------------------- 55bdc6a8b1 | SentientSupper | 2024-03-15 21:45:53 -0700 Don't leak invisible monster location with PE Fixes #3661 -------------------------------------------------------------------------------- c18e4ce02a | Nicholas Feinberg | 2024-03-15 21:44:30 -0700 Fix bound krakens (Talandazar) Let them fly freely, not flop foolishly. Closes #3461. Closes #3674. -------------------------------------------------------------------------------- 7cc139b6fe | SentientSupper | 2024-03-15 21:23:30 -0700 Fix makh major destruction firing acid globs Fixes an issue introduced by 926e5b6 Closes #3678 -------------------------------------------------------------------------------- 4b9ed32530 | David Lawrence Ramsey | 2024-03-15 19:49:14 -0500 Fix typo. -------------------------------------------------------------------------------- 1d96ad090f | Nicholas Feinberg | 2024-03-15 15:34:52 -0700 Fix a shocking typo (Monkooky) -------------------------------------------------------------------------------- 4c840350cb | Nicholas Feinberg | 2024-03-15 15:33:15 -0700 Make the Elemental Staff check AC too For consistency with other staves. -------------------------------------------------------------------------------- d9da9a62e7 | Nicholas Feinberg | 2024-03-15 15:27:14 -0700 Make staff damage closer to other elemental damage Most elemental damage checks AC - see 9e354a60c687 for a fuller explanation of why, and why it's good to be consistent. Make elemental staff damage do the same. Staves of fire, cold, death, and poison all now check AC normally, and all do +25% damage from their old values. Staves of air check half AC (like other electric damage). Staves of conjurations and earth already checked AC and are unchanged. This is not intended to be a nerf or a buff to staff damage, just an attempt to make AC's effects more intuitive. Numbers are subject to change. -------------------------------------------------------------------------------- 84b946f976 | Nicholas Feinberg | 2024-03-15 15:16:41 -0700 Refactor staff damage -------------------------------------------------------------------------------- 55136d7841 | Nicholas Feinberg | 2024-03-15 13:43:28 -0700 Begin data-ifying staves -------------------------------------------------------------------------------- ee0ae1bddf | SentientSupper | 2024-03-15 12:42:56 -0500 Don't let krakens into toxic bogs Closes #3456 -------------------------------------------------------------------------------- 7df3b1584c | SentientSupper | 2024-03-15 11:38:26 -0500 Don't evolve while undead Closes #3535 [Committer's note: Dropped player::can_safely_mutate()'s temp parameter's being explicitly set to true, since it defaults to true anyway.] -------------------------------------------------------------------------------- b3796b0532 | SentientSupper | 2024-03-15 07:47:55 -0500 Remove a random useless semicolon -------------------------------------------------------------------------------- 515539a894 | David Lawrence Ramsey | 2024-03-15 01:33:18 -0500 Add placeholder tile: Yred's lighting the torch. This is an edited and palette-tweaked version of UNUSED/gui/conjure_flame.png. -------------------------------------------------------------------------------- 016ad743e0 | Nicholas Feinberg | 2024-03-14 17:20:15 -0700 Don't crash on fog (rypofalem) -------------------------------------------------------------------------------- 77e4170d28 | David Lawrence Ramsey | 2024-03-14 17:47:03 -0500 Rename a god conduct to be more accurate. -------------------------------------------------------------------------------- 6768db42a9 | David Lawrence Ramsey | 2024-03-14 17:37:00 -0500 Remove unused "Desecrate Orcish Remains" conduct. -------------------------------------------------------------------------------- 9ec0c110ad | Nicholas Feinberg | 2024-03-14 11:41:02 -0700 Somewhat refactor god_protects Add a reference-based implementation for common use cases. -------------------------------------------------------------------------------- 8cd13bf097 | SentientSupper | 2024-03-14 11:18:32 -0700 Make Jiyva protect jellies from harm Jiyva's mpregen and mp/wild magic/int mutations support casters well, but the random jelly spawns are especially annoying for casters. You can't firestorm when a jelly decides to hug your target. You can't shatter if there are jellies on the floor because there's a chance you damage a jelly behind a rock wall and incur penance. You can't even immolate at any time because a jelly could spawn and throw itself into the flames. This is no fun and I'm changing that. Jiyva now protects slimes from harm similarly to Fedhas with the difference that you can't fire through slimes and they'll absorb projectiles if you try to do so. Jiyva also prevents immolation scrolls from affecting jellies because using jellies as bombs is not cool (at least from Jiyva's perspective). Additionally, all god protection will protect from torment. Previously this wouldn't have had an effect because plants and ancestors already resist torment. Based on 75f1ca80bcda43d3fbc33714f3299d0209dd9cc1 with changes. [Committer's note: Did some refactoring and fixed some small issues. We should remove J's no-hurting-jellies conduct next.] Closes #3653. -------------------------------------------------------------------------------- 0fd22b6b0a | Nicholas Feinberg | 2024-03-14 09:24:07 -0700 Remove an unused variable (SentientSupper) Obsoleted in 3d1ca0d2d81d10d4c5f25e9f2ea6d83abcc60257. -------------------------------------------------------------------------------- 60f233581c | David Lawrence Ramsey | 2024-03-13 23:46:13 -0500 Make foul shadow mut give a stealth bonus. Like all other sources of umbra. -------------------------------------------------------------------------------- 0ab5258196 | elliptic | 2024-03-13 19:59:14 -0400 Remove steel elves (ge0ff) -------------------------------------------------------------------------------- 0a1840c5b1 | David Lawrence Ramsey | 2024-03-13 18:06:08 -0500 Restore separate umbra radii for Yred and Dith. -------------------------------------------------------------------------------- c29ba85809 | David Lawrence Ramsey | 2024-03-13 17:37:53 -0500 Add better placeholder tiles for foul shadow mut. These are derived from a combination of the foul stench 1 mutation tile and the inner flame spell tile, with a few minor adjustments and the palettes tweaked. -------------------------------------------------------------------------------- 6677626c59 | elliptic | 2024-03-13 14:50:05 -0400 Fix display of monster chance of hitting a player with positive SH -------------------------------------------------------------------------------- 9bfe03fe0b | elliptic | 2024-03-13 11:27:07 -0400 Decrease precision in display of AC/EV changes on gear swaps From two decimal places to one decimal place, since nobody actually needs that much precision. Currently the difference is computed with two decimal places before being truncated, which means that it will say things like "AC would increase by 2.2 (7.9 -> 10.2)" - I think this is better than the alternative of making the displayed increase fluctuate between 2.2 and 2.3 as you equip/unequip unrelated armour. -------------------------------------------------------------------------------- 1ee5eff69a | elliptic | 2024-03-12 23:55:33 -0400 Smooth out draconian AC growth (rypofalem) Previously draconians gained 1 AC on every third level while nagas gained 1/3 AC every level (relevant in combination with armour skill etc), even though they had identical messages etc. It's unclear to me that this was ever really intentional (could just be careless parenthesation), but it mostly didn't matter prior to 5fa0bccb since draconians had very few available sources of non-integer AC without Armour skill (mainly Ozocubu's Armour). But now that it matters, let's be consistent. (Gargoyles also have fractional AC gain already.) This is effectively a 0.33 AC buff on average, but 5fa0bccb was a small EV nerf to players who previously trained to dodging breakpoints, so this seems okay. -------------------------------------------------------------------------------- fc9fac7961 | SentientSupper | 2024-03-12 19:55:09 -0500 Unbug throwing nets Once upon a time there lived two bugs in a cottage. The first bug caused a third throwing net that nets a target that's been netted and then netted again with a second net to get stuck on the target without increasing the net duration but remain stuck after the target breaks free, leaving behind a net that catches nobody but yet cannot be picked up. The second bug caused netting a target that's standing on top of a net to merge the nets together, breaking both nets once the target breaks free. Now the cottage is on fire and both bugs are dead. Throwing nets that hit a netted target will not net the target and nets that successfully net a target will not merge with any nets on the floor. -------------------------------------------------------------------------------- 5386afd49c | SentientSupper | 2024-03-12 19:31:27 -0500 Make abyss exit spawning interrupt travel At least in local tiles, an abyss exit spawning does not interrupt autoexplore so you could press o and immediately find yourself 50 steps away from an exit that just spawned even with a force more for the message. This commit makes it that having an abyss exit or downstairs spawn interrupts autoexplore. -------------------------------------------------------------------------------- 5fa0bccb63 | elliptic | 2024-03-12 17:46:24 -0400 Remove AC, EV, SH breakpoints Previously raising Armour, Dodging, or Shields skill purely for the defensive benefits (as opposed to decreasing penalties of armour/shields) did nothing except at discrete points where it suddenly gave you one extra point of AC (or EV etc). With most skills we try to avoid this sort of breakpoint so that players gain less benefit from micromanaging skill levels. Although AC, EV, SH were all already computed to high precision, an internal value of 8.37 AC was rounded to 8 AC before being used for anything. This commit changes that - now a value of 8.37 AC means that 8 AC will be used 63% of the time and 9 AC will be used 37% of the time. This type of random rounding is already used to smooth out the effects of skills in various other points, including the effect of weapon skill on weapon delay. The precise internal value of 8.37 AC is currently only visible to the player when examining an equipment item and seeing how swapping it in will change their AC. Previously the game might have said "Your AC would decrease by 1 (8 -> 7)" whereas now it might say "Your AC would decrease by 0.61 (8.37 -> 7.76)". The display of player AC/EV/SH everywhere else is rounded down to an integer, similar to how weapon delay is displayed rounded down to a multiple of 0.1. I think there's a decent argument that both weapon delay and AC/EV/SH (after this commit) should be displayed with one extra digit of precision "normally", but that can be a separate discussion. A note on balance: in general I expect this to only have very minor effects. Previously AC was rounded down to an integer, EV was rounded up, and SH was rounded to the nearest integer. This means that for a "random" character not paying attention to the breakpoints, on average this commit will increase their AC by 0.5 and decrease their EV by 0.5, while leaving SH unchanged. For a player paying close attention to both AC and EV breakpoints, this commit will decrease their EV by 1 when they are at both breakpoints, but help their AC and EV relative to that when they are training between breakpoints. If there are any concerns about this being a (minor) player nerf I'd suggest increasing EV by 0.25 or something like that. -------------------------------------------------------------------------------- 7accb7eaf3 | gammafunk | 2024-03-12 14:15:22 -0500 fix: Remove an ORIENT line from a vault (dolorous) The vault wander_guarded_unrand_ratskin is in mini_monsters.des yet has a float orient. It's perfectly fine as a minivault, since it's small and has no weird issues with vault connectors, so remove that orient. -------------------------------------------------------------------------------- 5251a91aee | David Lawrence Ramsey | 2024-03-12 11:53:59 -0500 Put S.o.t.D.K. back in a Crypt vault. This reverts commit 783e625e56036b44a4caa56aa6156ba30ca523d2. -------------------------------------------------------------------------------- 6270fc1253 | David Lawrence Ramsey | 2024-03-12 11:53:59 -0500 Revive grunt's old S.o.t.D.K. vault, adjusted. It's renamed from grant_unrand_guarded_doom_knight to grant_guarded_unrand_doom_knight, to match the naming of all the other guarded unrand vaults in variable/mini_monsters.des. This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8. -------------------------------------------------------------------------------- f5658d774c | SentientSupper | 2024-03-12 11:53:59 -0500 checkwhite -------------------------------------------------------------------------------- 957ebe1dbe | SentientSupper | 2024-03-12 11:53:59 -0500 Update doom knight melee effect message To account for the player being the victim. -------------------------------------------------------------------------------- 3634fed8bd | SentientSupper | 2024-03-12 11:53:59 -0500 Rework and bring back sword of the doom knight Replace pain brand with the doom brand which causes it to inflict up to 10% of its victim's maximum health on hit. This does the opposite of the sword of power, dealing more damage the tougher the foe you face and avoids making you train necromancy for bonus damage when the weapon has -cast. Give it ^Drain to discourage swapping it in and out to use spells because of -cast or only when you face a tough enemy like a unique panlord. Also make it evil because doom sounds evil and it was used by a yred worshipper. [Committer's notes: This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8.] -------------------------------------------------------------------------------- 0418803318 | David Lawrence Ramsey | 2024-03-12 11:11:31 -0500 Add placeholder tile: wielded Scythe of Curses. So that the item in question no longer erroneously uses the tile for the wielded Finisher when it's not Finisher (although the tile is a palette-tweaked and minorly adjusted version of the wielded Finisher tile). -------------------------------------------------------------------------------- 316d9043ac | David Lawrence Ramsey | 2024-03-12 10:50:58 -0500 Don't redundantly flag some unrands as evil. The Sceptre of Torment has the pain brand, the Sword of Zonguldrok has the reaping brand, and the obsidian axe has the draining brand. These three unrands are already evil by virtue of their brands, so they don't need to be flagged as evil. -------------------------------------------------------------------------------- 804251a7fb | SentientSupper | 2024-03-12 09:54:38 -0500 Add punctuation to collisions, remove from misses It's unclear to me why misses call attack_strength_punctuation when the damage is always 0, so always use a period instead. Make punctuation marks in collision messages vary with amount of damage dealt. This is averaged for collisions between creatures. Collisions can sometimes deal surprising amounts of damage and this better conveys that!! -------------------------------------------------------------------------------- c880bc24ad | David Lawrence Ramsey | 2024-03-12 08:41:40 -0500 Add "Brilliance" to a Crypt vault. Since it's now tied to Yredelemnul lore-wise. -------------------------------------------------------------------------------- 93135e86f0 | David Lawrence Ramsey | 2024-03-11 23:41:12 -0500 Rename a vault. wheals_unrand_guarded_autumn_katana is now wheals_guarded_unrand_autumn_katana, to match the naming of all the other guarded unrand vaults in variable/mini_monsters.des. -------------------------------------------------------------------------------- 7bd404cb94 | Nicholas Feinberg | 2024-03-11 18:10:16 -0700 Nerf Cigotuvi's Embrace (elliptic) Since skeletons no longer rot, don't encourage hoarding them for Embrace AC. I'm skeptical that anyone would do this, but let's just be safe. -------------------------------------------------------------------------------- e26c5dbc97 | David Lawrence Ramsey | 2024-03-11 14:49:28 -0500 Fix comment typo. -------------------------------------------------------------------------------- 73ff4a9562 | Nicholas Feinberg | 2024-03-11 12:42:08 -0700 Add two new books To get us closer to the desired three-spells-per-book average, add a Book of Movement and Book of Wicked Creation to depopulate some of the more densely-packed books. -------------------------------------------------------------------------------- 75126f55eb | Nicholas Feinberg | 2024-03-11 12:11:47 -0700 New spell: Permafrost Eruption (L6 Ice/Earth) It seems like it'd be fun to have an ice/earth spell. This one plays with a targeting idea I've wanted to use for a while, an explosion that automatically targets the largest clump of enemies onscreen. (It'll never target anything adjacent to the player, which is a weakness.) The spell does one physical hit to the whichever enemy is in the centre of the blast, and another cold (AC-ignoring!) hit to that enemy and everything adjacent to it. It's intended to encourage players to go into an unusual school pairing by compensating for their school's weaknesses: Ice's difficulty dealing with single targets, and Earth's issues with enemies that have both EV and AC. Damage numbers are first drafts, and Servitor support plus a proper tile are TODOs. -------------------------------------------------------------------------------- 49d7e34f9b | Nicholas Feinberg | 2024-03-11 12:10:45 -0700 Add more files to the Xcode project This is dubious and might break things. Apologies if so. -------------------------------------------------------------------------------- c4f3efa9c8 | David Lawrence Ramsey | 2024-03-11 13:49:00 -0500 Improve fallback brand handling for "Brilliance". It's supposed to have a unique brand, and fallback brand handling is supposed to be done in the unrand definition. It's now replaced with a randart eveningstar of pain if it's already been generated. Accordingly, remove its fallback brand handling from minmay_guarded_unrand_brilliance. -------------------------------------------------------------------------------- 7bcfc0ab29 | David Lawrence Ramsey | 2024-03-11 13:23:13 -0500 Fix spelling. -------------------------------------------------------------------------------- 100c63a273 | David Lawrence Ramsey | 2024-03-11 12:58:49 -0500 Fix build (why did this compile?) (WizardIke). -------------------------------------------------------------------------------- cb3c702784 | patrick | 2024-03-11 10:33:27 -0400 Fix an error I made in the shops definition syntax I made a recent update without fully testing all the possibilities. I apologize to all those who have been harmed by my negligence. -------------------------------------------------------------------------------- dc239d62e1 | David Lawrence Ramsey | 2024-03-10 17:06:06 -0500 Fix song/spoken word citations. They use quotes, not underlines like book citations. -------------------------------------------------------------------------------- a07e523f8f | Implojin | 2024-03-10 16:57:02 -0500 Add a brand inscription to the dragonskin cloak (ragingrage) -------------------------------------------------------------------------------- 3729bd50f8 | David Lawrence Ramsey | 2024-03-09 21:27:35 -0600 Add a quote for the sacrificial altar of Ru. -------------------------------------------------------------------------------- ff75c0dad8 | David Lawrence Ramsey | 2024-03-09 16:18:21 -0600 Mark monsters w/foul flame melee attacks as evil. -------------------------------------------------------------------------------- 53a61d21a5 | David Lawrence Ramsey | 2024-03-09 15:53:58 -0600 Fix capitalisation. -------------------------------------------------------------------------------- 46848ad166 | David Lawrence Ramsey | 2024-03-09 15:24:09 -0600 Reformat a few lines of mutation data. -------------------------------------------------------------------------------- 09a337154d | Implojin | 2024-03-09 10:27:56 -0600 Fix rollpage mutation descriptions These were missed in 0ebe13f60c. -------------------------------------------------------------------------------- 66fdcfdd25 | SentientSupper | 2024-03-09 08:09:09 -0600 Let armataurs with bardings and talons kick foes Closes #3636 -------------------------------------------------------------------------------- 0ebe13f60c | SentientSupper | 2024-03-09 08:07:37 -0600 Change short desc of rollpage mutation Having two mutations MUT_ROLL AND MUT_ROLLPAGE share the same short_desc means you can only interact with one of them in wizmode. -------------------------------------------------------------------------------- e8a88695a4 | gammafunk | 2024-03-09 00:25:17 -0600 fix: WebTiles Health and MP spacing (particleface) The changes in 8f7e8e6e inadvertantly removed the whitespace that comes after the "HP:" and "MP:" stat labels in the HUD. This was a result of incorrectly joining the span tags for these labels to the logical lines of the span tags containing the numeric values portion of the display for these stats. This commit adds the new logical lines where necessary. It also removes some newlines added in 8f7e8e6e that were inserted within the `` tag elements to allow for use of newlines without making new logical lines. It's not that hard to work a few overly long lines, and having a newline inserted after e.g. `` looks extremely dubious. -------------------------------------------------------------------------------- 3d30ec2550 | Nicholas Feinberg | 2024-03-08 19:28:08 -0800 Add banana bread (hellmonk) -------------------------------------------------------------------------------- f59354a618 | David Lawrence Ramsey | 2024-03-08 19:00:11 -0600 Fix spelling. -------------------------------------------------------------------------------- add1f40288 | David Lawrence Ramsey | 2024-03-08 18:46:01 -0600 Adjust Book of the Earth description. Since mountain dwarves are back, but hill dwarves are not. -------------------------------------------------------------------------------- a018e7e89e | Nicholas Feinberg | 2024-03-08 16:10:52 -0800 Remove protean progenitor sInv Not at all clear to me why they had it, and not conducive to player intuitions about which monsters do and don't see invisible. -------------------------------------------------------------------------------- c4e8710386 | David Lawrence Ramsey | 2024-03-08 17:00:38 -0600 Adjust "Brilliance" description a bit. To make it clearer that its old wielders are the ones being repulsed, not its shadow. -------------------------------------------------------------------------------- 97ce250973 | David Lawrence Ramsey | 2024-03-08 13:26:27 -0600 Add a quote for the tower shield of Ignorance. -------------------------------------------------------------------------------- 2e395d4530 | David Lawrence Ramsey | 2024-03-08 11:07:38 -0600 Colour foul flame melee attacks properly. Since they're now a super-umbra instead of an evil halo. -------------------------------------------------------------------------------- 9eff4c5b6e | patrick | 2024-03-08 11:27:27 -0500 Expand the inventory of the One-of-a-Kind Rings shop We here at the One-of-a-Kind Rings corporate offices would like to thank you all for your continued support of our franchise. We strive every day to provide dungeon-goers with the finest of unique rings, and with the recent advances in artefact-specification technology, we're pleased to present an all-new addition to our inventories. One-of-a-Kind Rings franchises will now generate one guaranteed randart ring with a property that's usually unavailable on randarts. These properties are: Repel Missiles, Clarity, rMut, SH+5, HP+X, and MP+X (where X for HP and MP can vary from +10 to +15; for MP, this is higher than the usual fixed value of MP+9). Once again, thank you for your continued patronage. -------------------------------------------------------------------------------- cc61e46a16 | patrick | 2024-03-08 11:01:26 -0500 Make an extremely important update to the shop def documentation No doubt that thousands, perhaps millions, of lives will be saved from this. No need to thank me. -------------------------------------------------------------------------------- 3542139ebd | David Lawrence Ramsey | 2024-03-07 23:11:23 -0600 Fix comment typo. -------------------------------------------------------------------------------- 01338f72df | Alex Jurkiewicz | 2024-03-07 21:04:18 -0800 Ignore non-.yaml files in games.d/ Use case: I disable forks by renaming them to `bcrawl.yaml.disabled`. -------------------------------------------------------------------------------- 3af422c12e | Quinten Konyn | 2024-03-07 21:02:33 -0800 Check for flight item removal safety on swap When removing an item, `_safe_to_remove_or_wear` checked for the safety of removing the item if it provided flight and the player was above lava or deep water. However when swapping two items, `remove` is false and the removal of the old item is implicit. The function to check the safety of flight removal `safe_to_remove` is not called in this case. This commit adds a flight removal safety check in the branch of `_safe_to_remove_or_wear` that has determined that we're swapping out an old item, echoing the check that was already happening for non-swap removal. I added comments to both `safe_to_remove` checks, because it is not immediately clear that only flight removal safety is checked by that funciton. `_safe_to_remove_or_wear` has a comment stating that it checks for stat zero and does not mention flight, so I wanted to make sure the code doing something other than what that comment says was clearly signalled. Resolves #3502. -------------------------------------------------------------------------------- ee4d739957 | David Lawrence Ramsey | 2024-03-07 21:13:22 -0600 Add a few more ancestor names. -------------------------------------------------------------------------------- 5f7579bffe | David Lawrence Ramsey | 2024-03-07 19:47:23 -0600 Adjust foul flame melee attack description. Since it does extra damage to everything, mostly to holies and good god worshippers, but that needs to be conveyed in limited space. -------------------------------------------------------------------------------- 8f7e8e6ef7 | Alex Jurkiewicz | 2024-03-07 17:42:26 -0800 fix: Update game.html tags There were a number of `
` and `` tags that were self-closed (eg `
`). Trailing slashes in opening tags are ignored by HTML parsers and by convention only used for "void" tags (those that don't support closing tags). This led to HTML parsers in some cases misparsing the document, where eg `
` would be interpreted as `
` instead of the intended `
`. Read more: https://developer.mozilla.org/en-US/docs/Glossary/Void_element#self-closing_tags Convert all `
` and `` to standards compliance. Also, make the following (mostly cosmetic) changes with Prettier: * Consistent 2-space indentation * Add a trailing slash to all `` tags * Don't use HTML comments to keep sequential ``s on the same line * Clean up inline style strings * Consistent JS quoting Closes #3497. -------------------------------------------------------------------------------- 31c6501bf3 | yrdzrfxndfvh | 2024-03-07 17:38:46 -0800 Remove redundant 'unblindable' flags Obsoleted by b856850. Closes #3587. -------------------------------------------------------------------------------- d0e5102f28 | elliptic | 2024-03-07 18:07:47 -0500 Remove a magic breakpoint in book acquirement A character with no magic skills has a 0% chance of getting a spellbook instead of a manual from acquirement. Previously the chance of getting a spellbook increased up to 40% as the proportion of a character's skills that were magic increased up to 25%, and then suddenly the chance jumped all the way to 100%. This commit removes the breakpoint, so magic-oriented characters who previously had a 100% chance of getting a spellbook will now get a mix of spellbooks and manuals. -------------------------------------------------------------------------------- 007c2181c8 | elliptic | 2024-03-07 18:07:47 -0500 Tweak weighting in talisman acquirement Most talismans aren't randarts and thus are useless if they are duplicates, so increase the weight scaling factor for not-already-seen talismans. Also, if you have the skill for a talisman of a given tier, that probably means you already have at least one talisman of that tier and are most interested in a talisman of tier one higher, not a second talisman of the same tier (and a talisman of lower tier is even less likely to be interesting). -------------------------------------------------------------------------------- d6aa9b3b29 | elliptic | 2024-03-07 18:07:47 -0500 Tweak acquirement option frequencies Previously staff acquirement stopped happening once the player found all staff types (even though it can still produce artefact staves). This meant that other acquirement types became more common once all staff types had been found, meaning that acquiring a useless staff instead of gold could be a good idea just to improve quality of future acquirements. Also, the just-implemented talisman acquirement had a higher chance of being offered to players with more Shapeshifting skill, which meant that once a player found all the talismans they wanted raising Shapeshifting skill actually made their acquirement scrolls worse. Replace these conditions with flat probabilities - put staff and talisman in the pool of possible acq options (from which 3 non-gold options are selected) only 2/3 and 1/3 of the time respectively. -------------------------------------------------------------------------------- 91cf321817 | Nicholas Feinberg | 2024-03-07 14:58:17 -0800 Refactor Gozag shop acq And ban book shops for Djinni - mostly, though not entirely, useless. -------------------------------------------------------------------------------- 7ecb952e3c | Chuck Sellick | 2024-03-07 14:58:17 -0800 Gozag shouldn't offer jewellery shops to Coglin Jewellery shops have a 10% chance per item of generating a talisman, but it's highly unlikely you'd buy one for that reason when general stores can include them anyway. Closes #3633. -------------------------------------------------------------------------------- e89081bf26 | David Lawrence Ramsey | 2024-03-07 10:37:29 -0600 Add talisman acquirement. Modeled after staff acquirement, in that it's accessible via the scroll, but only commonly so with enough shapeshifting skill. It's biased in favour of talismans you haven't seen, and more biased in favour of shapeshifting skill. However, no talismans are entirely ruled out; it's still possible, although rare, to acquire a talisman with no shapeshifting skill. Accordingly, start keeping track of what talismans we've seen, as is already done with misc items. Xom can also give talismans as gifts now, chosen entirely randomly. -------------------------------------------------------------------------------- a006e7742e | Nicholas Feinberg | 2024-03-06 22:13:24 -0800 Use more references -------------------------------------------------------------------------------- 40f72ca6f8 | Nicholas Feinberg | 2024-03-06 22:11:02 -0800 Improve valid_blink_destination's type signature -------------------------------------------------------------------------------- 1a6acf87a6 | Nicholas Feinberg | 2024-03-06 22:06:27 -0800 Fix: leaky hop targeter (acrobat) Don't reveal unseen invisible monsters with the frog hop targeter. -------------------------------------------------------------------------------- c5db3fc80f | elliptic | 2024-03-06 21:52:37 -0500 Make the delay display in @ round down instead of up (pisaster) To match the delay display when you examine a weapon. I don't have a preference for round up vs round down, but we should be consistent. -------------------------------------------------------------------------------- 2954f76710 | David Lawrence Ramsey | 2024-03-06 20:44:50 -0600 No jewellery acquirement if useless, redux. _find_acquirement_subtype() now accounts for the no-jewellery mutation, and won't generate jewellery with it. -------------------------------------------------------------------------------- 83232ee236 | David Lawrence Ramsey | 2024-03-06 17:21:53 -0600 Fix crash while generating wizmode acquirement stats. Skip over the gizmo and ring preview slots, since we can't acquire for them. -------------------------------------------------------------------------------- d7a9830edf | David Lawrence Ramsey | 2024-03-06 17:07:36 -0600 Fix possible wizmode floating point exceptions. If you run wizard mode acquirement or randart property stats for fewer than 10 iterations, don't display the calculation of the completed percentage, because the formula for it will divide by zero. -------------------------------------------------------------------------------- 4925a30cd0 | David Lawrence Ramsey | 2024-03-06 16:25:52 -0600 Revert "Destroy unchosen misc items in acquirement." Since the logic would only be used for scroll acquirement, which isn't done for misc items. This reverts commit 817ac4a56f2a2e6c12e8715ccea3086e342bd4d4. -------------------------------------------------------------------------------- 817ac4a56f | David Lawrence Ramsey | 2024-03-06 15:41:59 -0600 Destroy unchosen misc items in acquirement. Since we can acquire them, just not via scrolls. -------------------------------------------------------------------------------- 923888f401 | David Lawrence Ramsey | 2024-03-06 15:34:00 -0600 Fix enum spelling. TAG_MINOR_COGLIN_NO_JEWELRY -> TAG_MINOR_COGLIN_NO_JEWELLERY. -------------------------------------------------------------------------------- 53793998da | David Lawrence Ramsey | 2024-03-06 11:50:16 -0600 No jewellery acquirement if we can't wear any. Specifically, leave it out of the acquirement classes, as is done for weapons if you can't wield any, and armour if you can't wear any. -------------------------------------------------------------------------------- 41e9ccace9 | David Lawrence Ramsey | 2024-03-06 11:06:30 -0600 Fix message spacing. -------------------------------------------------------------------------------- 619fc34308 | Nicholas Feinberg | 2024-03-06 08:22:49 -0800 Fix hand cannon description (Qwer) -------------------------------------------------------------------------------- 46d191b0ed | elliptic | 2024-03-06 00:46:34 -0500 Fix coglins not getting full Ashenzari piety -------------------------------------------------------------------------------- 87aaac5c70 | David Lawrence Ramsey | 2024-03-05 16:50:52 -0600 Adjust orcbow description. Since hill orcs are no longer a thing, but the exodus of orcs into the dungeon is. -------------------------------------------------------------------------------- cf8ae8bc37 | Nicholas Feinberg | 2024-03-05 13:07:42 -0800 Ignore more Xcode stuff -------------------------------------------------------------------------------- 41a94f2f57 | Nicholas Feinberg | 2024-03-05 13:07:42 -0800 Turn hand cannons into slug throwers People feel like cannons should shoot bullets. Very well! -------------------------------------------------------------------------------- 9e401d1733 | wheals | 2024-03-05 22:11:10 +0200 Fix prompt when attacking monsters with proper names (#3626) -------------------------------------------------------------------------------- d15513231b | wheals | 2024-03-05 22:11:10 +0200 vault: Fix a silver statue (#3598) Fixes #3598 -------------------------------------------------------------------------------- 02cdc058b7 | Nicholas Feinberg | 2024-03-05 10:49:35 -0800 Fix: don't quiver 'invent gizmo' -------------------------------------------------------------------------------- c93699c114 | wheals | 2024-03-05 17:47:05 +0200 Coglins: fix the autumn katana giving free attacks with the other weapon (#3603) Fixes #3603 No Fun Allowed -------------------------------------------------------------------------------- 070d9c1bce | wheals | 2024-03-05 17:31:05 +0200 Coglins: only rev up once per cast of Manifold assault -------------------------------------------------------------------------------- fbf9df647f | wheals | 2024-03-05 17:05:33 +0200 Show all skills if the only trainable ones would be hidden (#3501) Fixes #3501 -------------------------------------------------------------------------------- 862064635e | wheals | 2024-03-05 16:44:26 +0200 Treat reflected phials of floods correctly (#3600) If the player fired them, make a full-sized splash and do waterlogging. Fixes #3600 -------------------------------------------------------------------------------- 0454c09109 | wheals | 2024-03-05 16:08:32 +0200 Print a message when trying to autoexplore while confused (#3553) Fixes #3553 -------------------------------------------------------------------------------- 8c5b87dc23 | wheals | 2024-03-05 15:32:03 +0200 docs: Update options guide for dump_order (#3495) Oudated since 9c56bcba7, though the option to use Lua has existed, apparently undocumented, since version 0.1.4. -------------------------------------------------------------------------------- aed7c0c624 | wheals | 2024-03-05 14:43:32 +0200 fix: don't sometimes choose invalid random combos (#3546) This could most easily be reproduced by choosing Shapeshifter and a random species. If the coinflip led to the species being resolved first, then it could choose Mummy or Ghoul, since it hadn't copied Shapeshifter from ng_choice into ng. Fixes #3546 -------------------------------------------------------------------------------- 9348d4545b | David Lawrence Ramsey | 2024-03-05 00:59:31 -0600 Clarify foul flame weapon brand description. Good god worshippers can't use foul flame-branded weapons, just as holy beings can't. -------------------------------------------------------------------------------- 36a8ca9f72 | David Lawrence Ramsey | 2024-03-05 00:45:08 -0600 Add red vine stalker player base tiles. Since Maurice is a red vine stalker. These are just palette-tweaked versions of the green ones, which are now renamed to indicate their colour. -------------------------------------------------------------------------------- d166fa89d2 | David Lawrence Ramsey | 2024-03-04 18:25:55 -0600 Deathbed conversion clears vengeance (#3576). For ordinary orcs, as is done for defeated orc apostles (except that sneak attacks also work on ordinary orcs). Note that this is the only type of conversion that works on orcs marked for vengeance now. Add conversion types for vengeance and follower vengeance, and a few vengeance speech lines. -------------------------------------------------------------------------------- 40f424ee2b | wheals | 2024-03-04 12:16:57 +0200 Credit Wizard Ike -------------------------------------------------------------------------------- 1c984fe9d1 | Nicholas Feinberg | 2024-03-03 21:11:28 -0800 Revert "fix double portal messages (descent) (real)" Broke many more important things, like 'slime walls opening' and 'portals not being unlimited use'. We will do a real fix for this one day. Reverts b8176ab9f12de3214a609a7000c4832df59a3880. -------------------------------------------------------------------------------- 8a157a660c | elliptic | 2024-03-03 23:59:15 -0500 Don't let players trigger spiders_nest_spider_trap as many times as they want 831329d5 placed a second copy of the same basket of spiders trap in this vault, which ended up meaning that when you stepped on one of the two traps, the other trap would become unremovable and you could just repeatedly trigger it to kill as many (experience and piety-giving) redbacks as you wanted. This commit makes it so that only one of the traps actually places; there are presumably ways to make the vault work with multiple copies but this seemed like the easiest fix for now. -------------------------------------------------------------------------------- 1f4d3039f5 | David Lawrence Ramsey | 2024-03-03 18:08:39 -0600 Fix breath fire desc (NormalPerson7) (#3621). Closes #3621. -------------------------------------------------------------------------------- 145b2e8c49 | Nicholas Feinberg | 2024-03-03 15:54:41 -0800 Fix off-hand wielding non-weapons (Memoria) Hopefully! -------------------------------------------------------------------------------- fe4e56b67c | David Lawrence Ramsey | 2024-03-03 17:21:05 -0600 Fix an incorrect key for orc follower speech. -------------------------------------------------------------------------------- 64ea0e4219 | David Lawrence Ramsey | 2024-03-02 23:24:12 -0600 Revert "Adjustments for Spellforged form" This reverts commit 82787085d03d1af1fc06f7f07c22e844af5fe98f. -------------------------------------------------------------------------------- e499677281 | David Lawrence Ramsey | 2024-03-02 23:23:44 -0600 Revert "Add Spellforged Talisman" This reverts commit 11ff892dbcd30c8fda559df780a7a5bea4325432. -------------------------------------------------------------------------------- e1e0f865ad | David Lawrence Ramsey | 2024-03-02 23:14:20 -0600 Add a few ancestor names. -------------------------------------------------------------------------------- c4c496a4b8 | Monkooky | 2024-03-02 20:33:11 -0600 remove base UC from Spellforged Form Somewhat pointless addition to the design -------------------------------------------------------------------------------- 9b0da3812b | Monkooky | 2024-03-02 20:33:11 -0600 Adjust Spellforged Infuse, AC Should feel a little better to use for high int casters. Infuse might be too strong now. -------------------------------------------------------------------------------- cc6265022e | Monkooky | 2024-03-02 20:33:11 -0600 Tweak Spellforged Form Make the description more informative, and raise the AC granted (without raising the cap) This likely still needs tweaks. -------------------------------------------------------------------------------- 82787085d0 | Monkooky | 2024-03-02 20:33:11 -0600 Adjustments for Spellforged form Make intelligence changes properly update AC display Make spellforged form not benefit from int for spell fail rates Make spellforged form account for int drain -------------------------------------------------------------------------------- 11ff892dbc | Monkooky | 2024-03-02 20:33:11 -0600 Add Spellforged Talisman Adds a new T2 talisman with +1 AC/2 intelligence over 10 -8 EV, scaling down to 0 at max skill Innate infusion, with normal power at minimum skill and quintuple power at max skill Still needs description work, AC updates without reforming -------------------------------------------------------------------------------- ba8f9cf90e | David Lawrence Ramsey | 2024-03-02 09:52:10 -0600 Prevent disarming orc apostles (#3604). Since we already can't take their weapons via Tukima's. This also avoids a crash on the ^ menu, caused by assuming all orc apostles have weapons and trying to calculate the damage from those weapons. Closes #3604. -------------------------------------------------------------------------------- 2ff3c994f6 | David Lawrence Ramsey | 2024-03-02 09:16:47 -0600 Assert on getting a name from an unnamed weapon. It's clearer than a straight crash. -------------------------------------------------------------------------------- 8e3e136d6a | David Lawrence Ramsey | 2024-03-02 08:39:16 -0600 Don't call is_artefact() twice naming weapons. -------------------------------------------------------------------------------- 69a5a376f1 | DracoOmega | 2024-03-02 03:57:42 -0330 Properly label gizmos on the " screen They did actually show up there, but the slot was labelled 'Unknown'. -------------------------------------------------------------------------------- c481c6522b | David Lawrence Ramsey | 2024-03-02 01:23:02 -0600 Add clarifying comment. -------------------------------------------------------------------------------- f897c97020 | DracoOmega | 2024-03-02 03:47:08 -0330 Don't crash on various things related to the ring preview slot At the very least, from viewing the " screen, but probably others as well. -------------------------------------------------------------------------------- 85ff8e36a1 | David Lawrence Ramsey | 2024-03-02 01:06:29 -0600 Don't call name_weapon() on artefacts. -------------------------------------------------------------------------------- 97116cfa04 | David Lawrence Ramsey | 2024-03-02 00:48:03 -0600 Use maybe_name_weapon() when changing species. In the new silent mode. This also deduplicates code. -------------------------------------------------------------------------------- 684d82af33 | David Lawrence Ramsey | 2024-03-02 00:47:58 -0600 Allow disabling maybe_name_weapon() messages. So we can use it to silently name a weapon. -------------------------------------------------------------------------------- a1b646022c | David Lawrence Ramsey | 2024-03-02 00:47:12 -0600 Refactor weapon naming a bit. Getting the name of a weapon is now in its own function, get_weapon_name(), and is less entangled with maybe_name_weapon() and say_farewell_to_weapon(). -------------------------------------------------------------------------------- 2d1f746d5d | David Lawrence Ramsey | 2024-03-01 23:39:14 -0600 Don't erroneously skip over slots w/artefacts. And remove unused variable. This code needs to be deduplicated from that of maybe_name_weapon(). -------------------------------------------------------------------------------- 896cc9457e | David Lawrence Ramsey | 2024-03-01 23:32:58 -0600 Don't name artefacts when changing to coglin. -------------------------------------------------------------------------------- b28a26c98d | David Lawrence Ramsey | 2024-03-01 21:37:01 -0600 Name wielded weapons when changing to coglin. Via the wizmode "change species" command. This avoids a crash when trying to unwield an unnamed weapon, which can happen if you changed species from non-coglin to coglin while wielding a non-offhand weapon. Accordingly, move the WEAPON_NAME_KEY definition from items.cc to items.h, so we can use it in change_species_to(). -------------------------------------------------------------------------------- d5c3ca020d | David Lawrence Ramsey | 2024-03-01 18:39:30 -0600 Make '!' and '?' work in wizard menus (Aliscans). Do this by overriding skip_process_command(), as is done in a few other places. Closes #3610. -------------------------------------------------------------------------------- ef4fe23122 | elliptic | 2024-03-01 16:29:23 -0500 Tweak recommended backgrounds on Co -------------------------------------------------------------------------------- 21d2723c0b | DracoOmega | 2024-03-01 17:22:42 -0330 Minor additional mmov-related cleanup I'd really like to be able to just use a 'new_pos' value in _monster_move instead of constantly going 'mons->pos() + delta' but a couple places at the end specifically reset delta and even vaguely rely on it being reset to function as they do (such as the chance for a confused monster to additionally hit itself after attacking another monster >.>) A couple of them seem probably like they can be handled another way, but as that is a functional change (however minor), I am not doing that here. -------------------------------------------------------------------------------- aa1d24be35 | Monkooky | 2024-03-01 17:22:42 -0330 refactor handle_monster_move handle_monster_move uses a global variable 'mmov' which is manipulated by several functions. This obfuscates how mmov is set, and makes it difficult to be confident about the current state of mmov at any given time. This refactor makes several functions return a new value for 'mmov' instead of directly manipulating it, and renames such functions to better document their function. Other functions are directly passed a reference to mmov with minimal change to functionality. -------------------------------------------------------------------------------- 64bcc3171f | DracoOmega | 2024-03-01 16:21:05 -0330 Improve EV preview for more item types Item descriptions will now list EV changes caused by shield penalties and stat changes on any type of equipment (ie: artefact weapons, jewellery) -Shields will list EV changes from equipping them even if you have a 2-handed weapon equipped. (Looking the weapon itself will show the change from removing it). This feels better than automatically folding in removing such a weapon into the shield's description. -Rings will always list their stats as if you had room to equip one more ring (and not say 'switch' in their description) since it's impossible to guess where the player would want to put it Internally, ring previews are handled by making an additional internal equipment slot that is used only for these previews (so that it can list them unaffected by however many rings the player has on at the time). EV change will only be listed at all for weapons/jewellery that modify this (since the vast majority will not). I considered not showing it on aux armour by default as well, but there was some concern that this might be more confusing than leaving it there all the time? -------------------------------------------------------------------------------- 05d3356bbf | DracoOmega | 2024-03-01 16:21:05 -0330 Allow querying equip/unequip verbs for given items -------------------------------------------------------------------------------- fff94016a1 | SentientSupper | 2024-03-01 16:21:05 -0330 Newline ac and ev preview in armor description It's easier on the eyes. -------------------------------------------------------------------------------- a5ee4a594e | regret-index | 2024-03-01 16:01:46 -0330 Prevent Coglins from getting jewellery-focused troves (Flugkiller) After the species' restriction of rings in 54e5184 and amulets in ae3e191, there is no rewards for said species to be found in the troves that solely place jewellery, so those troves can be restricted for Coglins. Strictly speaking, nicolae_trove_octotrove places non-jewellery equipment alongside the amulets and rings. However, shields are also extremely discouraged for Coglins, which leaves the trove a source of three hats. It thus has also thus been restricted. -------------------------------------------------------------------------------- b37f33011e | David Lawrence Ramsey | 2024-03-01 09:31:39 -0600 Make mad acolytes of Lugonu worship Lugonu. -------------------------------------------------------------------------------- 918cac0f7e | David Lawrence Ramsey | 2024-03-01 08:42:17 -0600 Fix wizmode item creation crash (#3595). If prompt_menu = false in your rc file. Closes #3595. -------------------------------------------------------------------------------- 706899e69d | DracoOmega | 2024-03-01 00:16:40 -0330 Don't crash when autodazzler triggers while you're invisible (And lacking see invis) The code here somewhat reasonably seems to assume that if there's an agent with a non-player ktype that they're a monster. But I currently can't seem to have the dazzler tracer both count friendlies properly *and* not prompt the player without using the player as its source and using a non-player ktype. This feels wrong, and like the real solution lies elsewhere, but for now let's at least double-check that the agent is a monster instead of crashing. -------------------------------------------------------------------------------- afe9d2b23c | gammafunk | 2024-02-29 20:30:19 -0600 doc: The c_choose_coglin_gizmo hook -------------------------------------------------------------------------------- 9f707a9c88 | DracoOmega | 2024-02-29 22:12:47 -0330 Make ManaRev and ParryRev scale smoothly instead of on/off (elliptic) Per the discussed suggestion, ParryRev give 2/4/5 AC based on visible Rev status tier (with disarm happening only when fully Revved). ManaRev likewise gives 20/40/80 mp regen based on Rev tier (steeper scaling, but there's no additional capstone benefit here). It's plausible this is still on the weak side, but I'd like to see it in practice a little before I staple some additional MP to it. (I also refactored some code slightly so that the status light and these gizmo properties reference the same concept of tier) -------------------------------------------------------------------------------- 7b30705457 | DracoOmega | 2024-02-29 21:35:43 -0330 Fix RegenMP being listed twice on randart amulets of magic regen This was only a visual bug. It still only applied a single time. -------------------------------------------------------------------------------- 3e1049bc92 | David Lawrence Ramsey | 2024-02-29 15:43:35 -0600 Fix punctuation. -------------------------------------------------------------------------------- ec57dfcd37 | gammafunk | 2024-02-29 14:24:20 -0600 feat: Coglin gizmo acquirement support for clua Add the hook `c_choose_coglin_gizmo` for clua users to choose their coglin gizmo, also adding a new value to use with the clua `items.acquirement_items()` function to check the offered gizmos. -------------------------------------------------------------------------------- c871cf952d | gammafunk | 2024-02-29 14:24:20 -0600 refactor: Move some defines to a different header The define keys related to regular acquirement as well as oka weapon gifting were in religion-enum.h, when none of them are enums and only some of them are even related to relgion. Move these to acquire.h, adding a couple includes in some cc files and removing some includes of religion-enum.h in a couple other header files. Overall this should reduce header dependency, since one of the headers with a removed include is player.h -------------------------------------------------------------------------------- 667c705b62 | David Lawrence Ramsey | 2024-02-29 11:59:53 -0600 Display msg for MD and max-ench artefacts (#3605). Closes #3605. -------------------------------------------------------------------------------- dfd1246722 | Nicholas Feinberg | 2024-02-29 09:22:35 -0800 Tweak hunter starting slings (elliptic) Make the off-hand worse than the primary, as with hexslinger and melee starts. -------------------------------------------------------------------------------- 5dfea8ec95 | Nicholas Feinberg | 2024-02-29 09:17:53 -0800 Deduplicate a magic rev number -------------------------------------------------------------------------------- 403443e4af | Nicholas Feinberg | 2024-02-29 09:12:03 -0800 Start Coglins with dual weapons (elliptic) Remove a tiny bit of scrounging for daggers. Any start which has a one-handed melee weapon now gets a bonus +0 dagger. Hexslinger gets a bonus -2 sling, and hunter gets two +1 slings instead of the bow. -------------------------------------------------------------------------------- f2dc5a0a38 | DracoOmega | 2024-02-29 13:08:47 -0330 Prevent a crash when unequipping Faith after Coglin save upgrade It was calling god_speaks before the level was fully loaded, and for some ancient reason god_speaks uses a fake monster at the player's location, which was trying to perform unused string replacements involving the feature description of the tile the player was standing before the level they were on was fully loaded.... I think some more of this ought to be refactored in future, but this seems to fix the immediate crash for now. -------------------------------------------------------------------------------- 4f87150244 | Monkooky | 2024-02-29 09:27:20 -0600 make regen/regenMP gizmos attune previously, if tinkered up while not at full hp/mp, would never attune. -------------------------------------------------------------------------------- 0c985b5a6a | David Lawrence Ramsey | 2024-02-29 09:14:10 -0600 Deduplicate code in _handle_regen_item_equip(). By using the now non-static item regen-checking functions. Partially suggested by matta. -------------------------------------------------------------------------------- 1203c30ec8 | David Lawrence Ramsey | 2024-02-29 09:03:59 -0600 Move item regen-checking funcs to item-prop.cc. Since they can't be static anymore. -------------------------------------------------------------------------------- 9e019001af | David Lawrence Ramsey | 2024-02-29 08:53:26 -0600 Fix spelling of "no jewellery" mutation/ -------------------------------------------------------------------------------- 4c7f4391e0 | elliptic | 2024-02-29 09:29:08 -0500 Fix a crash on equip (Monkooky) -------------------------------------------------------------------------------- 3570a563aa | David Lawrence Ramsey | 2024-02-29 08:03:41 -0600 Add a few gizmo adjectives/nouns. -------------------------------------------------------------------------------- 233958a4c4 | DracoOmega | 2024-02-29 01:25:28 -0330 Improve % screen for Coglins Properly say that rings are both unavailable, and list their gizmo there as well. -------------------------------------------------------------------------------- 68838b59b6 | David Lawrence Ramsey | 2024-02-28 22:45:13 -0600 Fix spelling. -------------------------------------------------------------------------------- e087637393 | David Lawrence Ramsey | 2024-02-28 22:31:44 -0600 Fix punctuation. -------------------------------------------------------------------------------- dcaf52ac95 | David Lawrence Ramsey | 2024-02-28 22:31:40 -0600 Fix typo. -------------------------------------------------------------------------------- 62a8415c68 | DracoOmega | 2024-02-29 00:51:17 -0330 Continue to shuffle gizmo tile locations That just broke REGULAR builds instead... oops. -------------------------------------------------------------------------------- 5854fa997c | DracoOmega | 2024-02-29 00:37:46 -0330 Maybe fix tag upgrade builds I didn't even notice there was major version tagging inside of tile definition files.... -------------------------------------------------------------------------------- c347e58e9c | DracoOmega | 2024-02-29 00:31:44 -0330 Fix being able to use Invent Gizmo from xl 1 Not sure how that statement ended up getting deleted. -------------------------------------------------------------------------------- 49363698eb | DracoOmega | 2024-02-28 23:58:40 -0330 Change Cloak of the Thief's effect It seems widely agreed these days that Cloak of the Thief's fog effect is not only double-edged but perhaps actively bad. Sometimes it saves you, but many other times it reduces your ability to use ?blinking without actually benefitting you at all. Many experienced players think it may be worse than a plain cloak and that feels like a sad place for an unrand to be. So let's try something else entirely! Instead of any fog effect, Cloak of the Thief now provides noise suppression while wearing it (equivalent to, and not stacking with, the mutation). Since this is a very powerful effect, I have also reduced the enchantment to +0 (and increased the slaying penalty to -3). The hope is that this is more exciting than the cloak used to be without being unreasonable. (If I've overshot the numbers, they can always be changed) -------------------------------------------------------------------------------- 2a815d3ee2 | DracoOmega | 2024-02-28 23:58:40 -0330 New unrand: Gloves of the Gadgeteer Using the same (non-stacking) boost as Gadgeteer gizmos (ie: +30% faster evocable recharge and 30% chance not to consume a wand charge), they additionally boost wand power by 30%, but are fragile. Gloves that do something very different than other artifact gloves (and are hopefully fun and different about it without being unreasonable) -------------------------------------------------------------------------------- 1a98434088 | DracoOmega | 2024-02-28 23:58:39 -0330 Make Coglin off-hand weapons fall off when switching species Instead of being stuck there entirely until you switch back. -------------------------------------------------------------------------------- a046ce8265 | DracoOmega | 2024-02-28 23:58:39 -0330 Correct constriction status description (ge0ff) -------------------------------------------------------------------------------- 481bfe3726 | DracoOmega | 2024-02-28 23:58:39 -0330 Prevent allies from displacing you with Electrolunge (lici) Even if your allies were just trying to be helpful, randomly blinking the player if you got in their way had the chance of being needlessly endangering. So now allies won't cast it if they would steal the player's spot. (But also add a message if the player somehow gets displaced by the spell anyway, which is currently narrowly possible (ghosts) and may be more possible in the future.) -------------------------------------------------------------------------------- ae3e1911cf | DracoOmega | 2024-02-28 23:58:39 -0330 Coglin Gizmos! While the latest incarnation of the coglin downside (no rings, but rF+/rC+ at xl 13) may be at a reasonable power level, there's been much interest expressed in making this system a little more involved, randomized, and 'exciting'. So here is an attempt at this which tries to capture some very fun coglin flavour in the process: Coglins no longer gain fixed resists at xl 13, and in addition to being unable to wear rings, also cannot wear amulets. But in exchange, they get a one-time choice of 3 random 'gizmos' at xl 14 - randomized equipment designed to fill part of the role of the jewelry they replace. The intent is that these gizmos are still overall a net downside compared to normal jewelry slots (with the earlier power, flexibility, and lategame artifact possibilities those hold), but that they preserve some of the choice and excitement of finding new items and deciding between them - and not always knowing what you're going to end up using at the start of the game. A downside that *feels* like an upside. After all, being fun should be one of the foremost criteria for a new species, right? These gizmos are generated as follows: Each gizmo has exactly 1 'rare property' and 2 'common properties'. There are 6 total common properties (rF+, rC+, rPois+rCorr, rElec, Will+, Slay+3) and the player is gauranteed to see all 6 of them each game - just in randomized combinations. There are currently 7 different 'rare properties', of which the player will be offered a random 3 each game - so that you *can't* know in advance which you will be offered (nor rely on getting a specific one each game). Several of these draw from existing equipment properties and several are entirely new. I feel strongly that it helps the player fun-factor of the system a lot if some of what you get from gizmos doesn't just feel like "Jewelry, but less of it" but rather contains some *new* choices instead of old ones (even if they're overall less powerful). The list of current rare properties is: 1) Regen + RegenMP 2) Repel Missiles + Clarity 3) Rampage + Acrobat 4) Gadgeteer: 30% faster evocable recharge rate and 30% chance not to consume a wand charge on firing 5) ManaRev: RegenMP++ but *only* while fully Revved 6) ParryRev: AC+5 while fully Revved, along with a small chance to disarm an enemy upon hitting them. (This does not do any damage, unlike Captain's Cutlass's extremely significant damage, to be clear) 7) AutoDazzle Small chance to fire a non-damaging beam of blinding light at an enemy whose attacks you dodge - even at range. The idea is that different modifiers should appeal to different sorts of characters, and also that several of them actively lean into the main gimmick of coglins by synergizing directly with Rev and attacking. Obviously the balance of all of these is provisional, but I think given player response to various previous downsides, it's important to try and sell the *fun* of this foremost. Numbers can be adjusted down as-needed afterward. I hope people enjoy them! (Credit to regret-index for the tilework, and multiple other devs for design discussion and suggestions) -------------------------------------------------------------------------------- 4e4bab2fd2 | DracoOmega | 2024-02-28 23:46:10 -0330 Add ARTP_MANA_REGENERATION Functions the same as the amulet. Amulet of Vitality is now a plain amulet with 2 levels of ARTP_MANA_REGENERATION instead of being a RegenMP amulet that was special-cased to count twice. Amulets of regeneration and magic regeneration used entirely different methods to track whether the player was attuned to them or not, and this unifies them, as well as refactoring a whole lot of code related to this. (This also improves messaging a couple of cases, such as Amulet of Vitality implying it doesn't work for Djinn at all when you first wear it). I also reduced some needless scanning of inventory artifact props whenever the player's regen ticks while they are already at full hp/mp. There is one functional change here, which is that items which grant both hp and mp regeneration (currently ONLY the Amulet of Vitality) will no longer provide either until BOTH of the player's hp and mp are full simultaneously. This irks me a little, but it seems minor enough that all of the extra infrastructure required to avoid it (while still allowing more than a single source of RegenMP to ever function at once) seems unnecessary. -------------------------------------------------------------------------------- a5e47cdb36 | DracoOmega | 2024-02-28 23:46:09 -0330 Add ARTP_ACROBAT For future use in gizmos. -------------------------------------------------------------------------------- efe97123c3 | David Lawrence Ramsey | 2024-02-28 16:48:59 -0600 Put gnoll bouda desc in alphabetical order. -------------------------------------------------------------------------------- fdd2188cd4 | David Lawrence Ramsey | 2024-02-28 16:18:01 -0600 Fix inconsistent capitalisation of willpower. -------------------------------------------------------------------------------- aa138b54ab | Nicholas Feinberg | 2024-02-28 07:26:18 -0800 Fix travel boulder issues (jagoly) This is a hack! We should be using a different, stationary monster type for decoration. -------------------------------------------------------------------------------- 866d13106e | regret-index | 2024-02-28 01:07:42 -0330 Fix a cast message fallthrough (CarefulOdds) Accidentally broken with reorganization in c02482b. -------------------------------------------------------------------------------- 1309dff24d | DracoOmega | 2024-02-28 00:55:53 -0330 Fix misleading messages saying that a beam was 'repelled' without RMsl Still not sure this is correct, but it's *more* correct than it was before. -------------------------------------------------------------------------------- 991db66f5c | regret-index | 2024-02-28 00:49:45 -0330 Fix a few recent vaults, tweak a recent monster's description Two vaults screwing up the silver statue naming, one vault using the wrong name for poison gas, and a rewriting attempt to make thermic dynamos focus more on being an insubstantial vortex with energy cells attached rather than a physical engine that could be rapidly deconstructed. -------------------------------------------------------------------------------- fb31f2349e | Nicholas Feinberg | 2024-02-27 20:11:15 -0800 Fix offhand Wyrmbane again (jagoly, elliptic) Cont'd from a146dc8f6d50fe5756997a64e09b11ed8337dac3. -------------------------------------------------------------------------------- e1f55a61bf | David Lawrence Ramsey | 2024-02-27 17:42:49 -0600 Move halo/umbra gear handling to equip/unequip. So that a monster wielding an item from off the floor will be handled properly. The check is now done in monster::pickup() (which might as well be monster::pickup_and_equip()) and monster::unequip(). -------------------------------------------------------------------------------- 25767b42b7 | David Lawrence Ramsey | 2024-02-27 17:05:51 -0600 Properly handle monster halo/umbra from gear. If a monster's wielding an item changes its halo and/or umbra radius, invalidate the agrid so that the halo/umbra is drawn properly on monster placement instead of after monster movement turn afterward (so that e.g. if Frederick gets an orb of light, it'll work from the beginning). It's crude, but the functions that accomplish this on the player side are all completely player-specific. -------------------------------------------------------------------------------- a61f84b8bd | David Lawrence Ramsey | 2024-02-27 16:01:25 -0600 Fix comment typo. -------------------------------------------------------------------------------- 0d0dddbf9d | David Lawrence Ramsey | 2024-02-27 15:59:21 -0600 extract_manticore_spikes() -> extract_barbs(). Since barbs aren't exclusive to manticores. -------------------------------------------------------------------------------- 8156e94834 | Nicholas Feinberg | 2024-02-27 11:47:15 -0800 Fix: blaze trees 🥬 (CarefulOdds) Make blazeheart core explosions light trees on fire, as with other big explosions. This logic remains silly :) -------------------------------------------------------------------------------- b0876beb0e | Nicholas Feinberg | 2024-02-27 11:13:16 -0800 Fix double sling overshoots (ragingrage) When wielding two ranged weapons as a Coglin, if there's an ally past the target, make sure that both shots automatically stop at the target, not just the first shot. -------------------------------------------------------------------------------- b6d6f0d0ac | David Lawrence Ramsey | 2024-02-27 10:16:11 -0600 Remove message for maximum player barbs, as it never seems to come up due to player turns. -------------------------------------------------------------------------------- 953deb8648 | David Lawrence Ramsey | 2024-02-27 10:07:15 -0600 Ensure barb_player() can't go over max dur/pow. -------------------------------------------------------------------------------- 2fc6374f7a | David Lawrence Ramsey | 2024-02-27 10:05:07 -0600 Allow specifying barb power in barb_player(). -------------------------------------------------------------------------------- 240abd312f | David Lawrence Ramsey | 2024-02-27 10:00:06 -0600 Readd lost message for extra player barbing. -------------------------------------------------------------------------------- 7be0c910eb | David Lawrence Ramsey | 2024-02-27 09:41:08 -0600 Add sanity checks to barb_player(). Assert we're not in the arena, and handle invalid turn values. -------------------------------------------------------------------------------- 03785628c0 | David Lawrence Ramsey | 2024-02-27 09:36:40 -0600 Add message for maximum player barbs. -------------------------------------------------------------------------------- 60b85d4bcb | David Lawrence Ramsey | 2024-02-27 08:52:34 -0600 Actually use turns when initially barbing. -------------------------------------------------------------------------------- 0f40c14376 | David Lawrence Ramsey | 2024-02-27 08:49:27 -0600 Move player barbing into its own function. This deduplicates the code for manticore spikes, steelbarb worm spikes, and Wu Jian barbed spike wrath. There's now a message for when you get barbed while already being barbed; and the message for initially getting barbed drops the initial "the", so it can be reused. -------------------------------------------------------------------------------- 3863d584d4 | DracoOmega | 2024-02-27 03:47:14 -0330 Actually put that fix in a place where it'll work I may be slightly panicking -------------------------------------------------------------------------------- d25475ebd2 | DracoOmega | 2024-02-27 03:43:55 -0330 Fixup yellow dracs created with Caustic Breath For those unlucky enough to still have them in their saves. -------------------------------------------------------------------------------- 344ed53f66 | DracoOmega | 2024-02-27 03:00:33 -0330 Fix monster yellow draconians doing ludicrous breath damage (jagoly) For some reason, despite having the same exact damage as every other monster that spits acid at you, they still used the player spell internally and when it was recently changed, I didn't notice this fact. -------------------------------------------------------------------------------- 08f29ac1c3 | DracoOmega | 2024-02-27 00:18:06 -0330 Fix almost all explosions becoming Nullifying Breath (jagoly) >.> -------------------------------------------------------------------------------- f581d88c14 | Nicholas Feinberg | 2024-02-26 18:36:00 -0800 Make boulders unthreatening (regret-index) -------------------------------------------------------------------------------- f716714d7f | David Lawrence Ramsey | 2024-02-26 20:21:48 -0600 Typo fix. -------------------------------------------------------------------------------- 94ed278cf8 | DracoOmega | 2024-02-26 18:49:39 -0330 Cap Sticky Flame's duration on players much lower The cap of 100 turns was leftover from the older incarnation of sticky flame and not adjusted after 0.31's changes to it. 100 turns is really a silly high number, and not something one could realistically encounter in most scenarios, but now that it can do actual relevant damage, it seems needless to have it be able to stack so high. I've set the duration at 35 which works out to exactly 5 movements from the player and is approximately the average duration of being hit by it twice. -------------------------------------------------------------------------------- 9efa865df0 | DracoOmega | 2024-02-26 18:49:39 -0330 Cap max number of things pulled by Blink Allies Encircling This used to have a power-based cap on how many allies it could blink at once. Some of the code even remained to do this, but was rendered non-functional by fb65b577b5ec8cf810b0ab130fba421e077fe631 Something being accidentally broken in the past is certainly no reason to return to it, but while this is a great spell that creates great problems, the possibility of being *completely* surrounded by enemies the instant a guardian serpent comes into view can sometimes feel a bit excessive. I'm especially concerned that constriction changes may independently make this deadlier, so let's try reducing the numbers a little and see how this feels. (It now blinks 3-6 units around the player, rather than 'as many as will fit') -------------------------------------------------------------------------------- 926e5b6e4c | DracoOmega | 2024-02-26 18:49:39 -0330 Revamp Draconian breath weapons There's been some desire to revamp how draconian breath weapons work for a while now, so this is a serious attempt at doing so. The general idea is to make pressing the button less common (ie: avoid it being 'correct' to breathe at the start of every latergame fight, even when the breath does very little) while also making the breath effects flashier and more impactful when you do. All breath weapons can now store up to 3 charges, and are on an XP-based recharge system. (You get 2 charges immediately upon hitting level 7 and upgraded saves above xl 7 will be given 3). All breaths have been adjusted somewhat - with some being overhauled more significantly - both to be more distinctive from each other and to scale better throughout the length of the game. Red Draconians: Combustion Breath Borrowing functionality from old Explosive Bolt, Combusion Breath causes a fireball to strike every target in a line. It does less single target damage than most breaths, but can do significant AoE damage if you line up a good shot. (The user is immune to damage from these explosions). Green Draconians: Noxious Breath Very similar to their old breath, but the clouds last longer (especially at higher power) and it has a power-based chance to spawn additional clouds along the sides of the main beam as you rise in xl. Pale Draconians: Steam Breath Again, very similar to their old breath, but the initial hit now does relevant damage, and the density/duration of the steam clouds improves with xl. (Keep in mind, using it is now much less free than it used to be.) Yellow Draconians: Caustic Breath Fires a penetrating acid bolt that leaves acidic fog clouds on all unoccupied spaces it passes over. These are rarely seen clouds (which yellow draconians are conveniently immune to!). Early on, these can serve as obstructions to enemies, and later on a reliable damage source that few things are immune to. Black Draconians: Galvanic Breath Fires a projectile that does electricity damage to all targets connected to what it hits - think of it as firing an arcjolt at a single (possibly distant!) cluster of enemies. (This also refactors arcjolt code somewhat and improves its animation by no longer interrupting it wheneve the message log fills up) White Draconians: Glacial Breath Fires a penetrating beam of cold which does the highest individual damage of any draconian breath and also turns anything it kills into durable blocks of ice for a little while. Good as both a direct damage solution and also to create blockers in corridors or other chokepoints. Purple Draconians: Nullifying Breath Fires a non-penetrating projectile that expands into a radius-2 explosion. It dispels magical effects on targets hit (like before) and also inflicts significant amounts of antimagic - but its damage is quite poor compared to other damaging breaths. (The user is immune to their own breath.) Grey Draconians: Mud Breath Fires a non-pentrating ball of mud which has knockback and leaves puddles of temporary mud around its destination. (Similar to Primal Wave, but muddier). Grey draconians are now unaffected by mud. Having long been the only draconian distinguished by having no breath at all, it felt a bit sad to leave them out of the fun. Breath weapon charges available are indicated by a status light (as well as in the ability menu, but after playtesting I felt it better if one didn't feel the need to bring up the ability list repeatedly to check). As draconian breath no longer has a breath cooldown (the limited charges accomplishes more than enough to prevent it from being spammed, and being able to burst some of the damaging breaths from time to time is a good thing, imo) there should be no risk of getting it confused with the old 'Breath' status light (which is additionally renamed '-Breath') All sorts of numbers here may need nudging in one direction or another, (recharge speed especially needs playfeel testing in both early and lategame) but I think this is a decent set of useful distinct effects to start from. -------------------------------------------------------------------------------- 55cc24dd7e | DracoOmega | 2024-02-26 18:49:39 -0330 Very slightly adjust monster stats after constriction changes Lower naga warrior base damage (since it's likely the changes make them more dangerous), slightly weaken tmons constriction damage, restore starspawn tentacle's long-lost accuracy. -------------------------------------------------------------------------------- 93f03418a4 | DracoOmega | 2024-02-26 18:49:39 -0330 Allow previewing EV change for armour in item descriptions This is a much more complicated question than displaying AC changes was, since EV depends on a complicated formula that hinges not only on the change in ER between the two armour being compared, but also differences in str/dex from properties on the two items. Rather than try to duplicate the complex logic of _player_evasion() or parameterize every single aspect of it (which would be brittle and error-prone if any aspect of gear properties ever changed), I have opted to 'simulate' the correct answer by internally equipping the item just long enough to calculate player EV while wearing it. As this is done by directly manipulating equipment links, it should be invisible and have no side-effects rewarding wielding/unwielding. One complication is that Crawl's item system makes it literally impossible for the player to equip (even internally) an item that isn't in their inventory. And since inventory is capped at a fixed size and might be full (and the player might be examining an item for a slot which is currently empty!), there is no normal way to gaurantee we have anywhere to put this item, even temporarily. So I have 'cheated' by adding an extra slot to you.inv beyond MAXPACK (the normal cap). This should be invisible basically everywhere, and is not marshalled (since it's only temp working space). This still makes me slightly nervous, but I have looked through as much code that directly manipulates this array as I can without seeing a problem this will cause (other than one fixed by this commit itself), and I also see no other reasonable way to do this without overhauling item links entirely. Which, while theoretically nice, is wildly out of scope here. As this process is still somewhat sketchy, I've tried to document the gotchas quite explicitly, where they exist. But I think the QoL improvement to players is well worth the hack. -------------------------------------------------------------------------------- f30d4d0f88 | DracoOmega | 2024-02-26 18:49:38 -0330 Remove some never-used virutal methods We don't have any concept of armour penalties for monsters, we never did, and I doubt we ever will. And if that somehow changes, someone can always put them back in then. -------------------------------------------------------------------------------- e1c152a988 | DracoOmega | 2024-02-26 18:49:38 -0330 Reorganize how player EV is calculated, improve clarity and display Penalties and bonuses to player EV were split among several nested functions, often with no clear separation of why something was in one place and not another (ie: modifiers for vertigo, being constricted, and having Agility were all in different functions, despite all being temporary and flat) This sometimes had subtle (or not so subtle!) strange effects such as vertigo affecting the merfolk swiming bonus, but nets and constriction not doing so. In fact, nets/webs (which supposedly reduce EV to 1/2) could have a much greater or larger effect than this (a character that had sac'd EV to Ru twice could go from 10->0 EV when netted, while a high level character in Storm Form might only go from 49->43 EV, neither of which is very like 'half') Being paralysed could even RAISE player EV, if their normal EV was low enough! I have reorganized how bonuses are applied, mostly with an aim at improving clarity and consistency, while reducing weird effects such as the above. Now multipliers to the players EV (eg: nets/webs/petrifying/merfolk swim) happen after all 'permanent' modifiers to EV are accounted for (eg: equipment, mutations), but before all 'temporary' modifiers (eg: acrobat/agility/constriction) are tallied. Effects like paralysis or clumsy now cap the player's EV at a small amount, rather than setting it to that amount (so that it will never raise it). This also improves the logic for displaying EV on the UI, which will now display any temporary modifiers that lower EV in red and ones which raise it in blue. (Only a few penalties were previously indicated in red, and a bug meant that nets' effect on EV was never shown at all!) -------------------------------------------------------------------------------- 359da3ace0 | DracoOmega | 2024-02-26 18:49:38 -0330 Change how the Repel Missiles effect works This is both a simplification and a rebalancing. Current, repel missiles works by reducing the to-hit roll of a missile by a random amount from 0-100% of its current value (or 0-50% of its value if it's a penetrating beam). In effect, this acts a little like a multiplier of the defender's EV - it does almost nothing at low EV and its effectiveness directly rises with EV - but with different math. This has several arguably bad effects: -The buff has little effect on enemies with mediocre EV (and there's been a desire to make an rMsl aura enemy, who would currently accomplish little when supporting many types of enemy) -The effect of the buff is *enormously* counteracted by EV reductions like wand of roots (which used to grant something like a +2800% chance to hit versus The Enchantress, as an extreme example). If enemies have rMsl, I think you should *feel* it in the same way that you feel enemy rF when you're attacking with fire -Scarves of repulsion were close to useless on many characters, but a lot of players did not realize this and assumed they were still providing meaningful bonuses to characters with no EV. This new system should make that a lot clearer to explain, as well as make some itemization choices viable that previously were not. This changes rMsl to be a flat +EV versus missile attacks instead, and operates even if the target is incapacitated (the magic is still pushing arrows away, even if the caster is asleep!) The old behaviour of being only half as efffect against penetrating beams is removed also (SH already offers a means of attack avoidance that specifically is worse against penetrating beams). In enemy hands, it should have a stronger effect on most enemies, and be much less negated by constriction (though constriction still helps a bunch in most cases!). In player hands, this is a buff if the player is below ~18 EV and a nerf if the player is above that (which I think should make scarfs of repulsion more appealing to more characters and maybe make itemization decisions a little more diverse) Numbers can, of course, be adjusted (and the player/enemy bonus separated), but I think it's fair that rMsl feel impactful against the type of thing it resists in a similar way that a pip of resistance would be against its. -------------------------------------------------------------------------------- 1d82c4ac31 | DracoOmega | 2024-02-26 18:49:38 -0330 New blast wand: Wand of Warping Alternates with Iceblast and Roots. This implements one of the discussed proposals for an alternate AoE attack wand to make /roots a little less common. It does a similar fireball-sized blast and has a chance to blinks everything caught in the blast radius (including you!) It does slightly less damage than iceblast (though is irresistable), but while blinking enemies has strong utility potential, in practice the scattering of them can be as much of a drawback as it is an advantage. Sometimes you can use it to juggle something away from you, other times it will bring them closer or reduce your ability to hit multiple targets. Being able to deliberately hit yourself with it as a way to escape some situations (at the cost of damage/charges) also feels like a reasonable part of this package. Sometimes more unwieldy than other wands, sometimes more useful, and definitely distinct. The blinking chance starts at 50% and scales to 90% by ~15 evocations. Make /warping not 100% -------------------------------------------------------------------------------- 9adf0d1baa | DracoOmega | 2024-02-26 18:49:37 -0330 Simplify and rebalance many things about Constriction This commit significantly affects formulas for nearly every aspect of constriction, both for and against both players and monsters. It includes bugfixes, simplifications, and deliberate rebalancing. Notable changes: 1) Constriction damage no longer scales over time. This had already been unknowingly broken for monster-applied constriction for a long time, and now is removed for players as well. This simplifies some internals, as well as making duration increases for player effects like /roots not scale so non-linearly 2) Constriction escape chance for players has been radically simplified. The old formula was very hard to intuit odds from, but when I ran the math, the player was overwhelmingly favored to escape most things by the second attempt, and still most likely to escape on a first attempt. Tentacled monstrosities were the notable exception, who were something like 2.5 times as likely to hold onto you as the next-best constrictor. Player escape is now independent of the constrictor's HD and is a flat 40%, 75%, 100% chance depending on attempts. (Despite being overwhelming likely to escape most things by 2 attempts, there was still a long tail that made it theoretically possible to fail many times in a row, and I am not convinced this is worth preserving) Monster escape chance still scales with constriction power (eg: evo for /roots or spellpower for BVC) and now includes the monster's HD in this formula - intended so that /roots can be stronger earlier game than it currently is, while weakening the hold effect lategame without any investment. (This also fixes a bug where /root hold power was based on the player's xl....) 3) Blinking and related effects now ALWAYS escape constriction, rather than merely making a 'better' attempt at escape. (It was claimed that they previously counted as '2 escape attempts', but even this was not really correct - they were a single attempt that counted as if you'd already made one.) In practice, ?blinking was extremely likely to work against anything that wasn't a tmons, to the point that I think it felt unsatisfying that sometimes it did not. Since constriction will be more dangerous in various ways now, it feels fairer to allow this to be reliable. (It also simplifies the code somewhat.) Guaranteed escapes now get different messaging to hopefully make it clearer that they work this way. 4) Changed the EV penalty for constriction. Rather than a heavy size-based multiplier for monsters and an ignorable -3 EV for players, it applies a flat -10 EV to both. This should make that penalty actually matter for players and reduce some of the most lopsided uses of the EV reduction against enemies, while also simplifying. (Monsters being constricted and monsters held in webs/nets previously shared the same complex penalty. Now constriction applies before these, but can stack. Webs are simplified to ignore monster size now also) 5) Rebalanced damage/duration of most source of constriction in the game. Enemy melee constriction damage is now randomized (it didn't used to be) and somewhat higher. (Also displays on xv!). Grasping Roots has a higher minimum duration but a lower maximum (previously only the maximum scaled with power, resulting in duration ranges like 2-21 turns). Damage is decreased (in compensation with being harder to escape and penalizing EV more). If this results in defanging Shambling Mangroves, they can be adjusted. -While enemy BVC isn't used much yet, I am intending to leave it actively into being a short-duration, higher-damage effect while roots is a high-duration, lower-damage effect. Player melee constriction is no longer based directly on player str (25 str characters used to do 5x the damage of 5 str characters!), but purely a function of XL. Damage of all player sources increased somewhat, to compensate for no longer scaling over time. Wand of roots lasts longer and does more damage at low power. (the old non-linear damage scaling from duration left it pretty mediocre at low power) 6) Because I expect melee constriction against the player to feel stronger from most sources, I have reduced the chance to apply it on hit from 100% to 66%. This may or may not turn out to be necessary, but in general I favour more impactful effects applied less often than mild ones applied all the time. 7) Better messages to differentiate roots/bvc wearing off versus being escaped from. As this affects balance of many things across many parts of the game, some time to observe how it plays out will be needed, and I imagine other numerical tweaks will happen subsequently. But I hope this is a better baseline from which to work. -------------------------------------------------------------------------------- 4120381aae | David Lawrence Ramsey | 2024-02-26 15:11:21 -0600 Remove Beogh follower blessing from wizmode. Since Beogh no longer blesses followers. The only god that does that now is TSO. -------------------------------------------------------------------------------- 623d607eb2 | Medrano83 | 2024-02-26 14:04:10 -0600 Better numeric keypad support in Linux * Fixes #3174 * Fixes the insert, delete and clear keys * Fixes the control variations * Fixes some /+ and *+ combinations * Reduces duplicate code, unixcurses_get_vi_keys is not more -------------------------------------------------------------------------------- 327783ce0c | wheals | 2024-02-26 21:00:16 +0200 Fix Duvessa shaking her weapon @at_foe@ (#2985) Fixes #2985 -------------------------------------------------------------------------------- bf54915a1b | wheals | 2024-02-26 20:26:26 +0200 Properly render formatted strings in webtiles status tooltips (#3487) Fixes #3487 -------------------------------------------------------------------------------- b60d49af14 | David Lawrence Ramsey | 2024-02-26 11:50:50 -0600 Reenable creating talismans in wizard mode. By putting '%' back in as an item class option in wizard_create_spec_object(). -------------------------------------------------------------------------------- 8322af0e9e | David Lawrence Ramsey | 2024-02-26 11:19:31 -0600 Check innate monster umbra first, before gear. As it's done in player umbra. This also means we don't have to run max() on the innate umbra value, since monsters don't have a god-passive umbra to handle first as players do. -------------------------------------------------------------------------------- 0d5b953572 | David Lawrence Ramsey | 2024-02-26 11:06:00 -0600 Unbrace -------------------------------------------------------------------------------- 7272be175e | David Lawrence Ramsey | 2024-02-26 11:01:28 -0600 Handle monster halo/umbra dual-wielding. Check for halo/umbra sources in the alt weapon slot, and handle them properly. -------------------------------------------------------------------------------- 9fcb8cb90e | David Lawrence Ramsey | 2024-02-26 10:59:09 -0600 Handle monster h/u of radiuses other than 3. Use whichever radius is biggest, like the player versions. Currently no item-based halo or umbra has a radius bigger than 3, but the cases should work. -------------------------------------------------------------------------------- 854a88b85f | David Lawrence Ramsey | 2024-02-26 10:52:36 -0600 Handle monster umbras accurately, like halos. A monster with an innate umbra and wielding umbra-inducing gear will now properly have whichever umbra radius is bigger. No monsters currently have both at the same time, but the case should work. -------------------------------------------------------------------------------- 8f43bd2636 | David Lawrence Ramsey | 2024-02-26 10:52:36 -0600 Rename a variable in monster::halo_radius(). And move its initialisation down a bit. -------------------------------------------------------------------------------- 926718a23e | wheals | 2024-02-26 18:40:35 +0200 Checkwhite and fix tag upgrade. -------------------------------------------------------------------------------- 6800aa8109 | Wizard Ike | 2024-02-26 18:34:04 +0200 Remove an unnecessary check -------------------------------------------------------------------------------- bc85f96775 | Wizard Ike | 2024-02-26 18:34:04 +0200 Don't reactivate autopickup when shafting a friendly invisible monster -------------------------------------------------------------------------------- 1188cb50b8 | Wizard Ike | 2024-02-26 18:34:04 +0200 Reactivate autopickup when polymorphing an invisible monster makes it friendly -------------------------------------------------------------------------------- ce2fa97723 | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix autopickup not deactivating when charming wears off invisible monsters -------------------------------------------------------------------------------- f82703d296 | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix toggling of autopickup when polymorphing monsters -------------------------------------------------------------------------------- c630c63b3f | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix autopickup sometimes not reactivating when invisibility ends on a monster -------------------------------------------------------------------------------- 85cd9b6c44 | Wizard Ike | 2024-02-26 18:34:04 +0200 Fix autopickup not being reactivated when shafting monsters -------------------------------------------------------------------------------- aad2c9efd1 | Aliscans | 2024-02-26 18:11:57 +0200 Change debug_make_trap and debug_make_shop to use PromptMenu. This reduces the amount of typing and memory needed to use these, which seems like an improvement to me. Neither command has many valid options, which helps. -------------------------------------------------------------------------------- ce8dbf9607 | Aliscans | 2024-02-26 18:11:54 +0200 Use a PromptMenu for various selections in wizard mode. Various wizmode functions functions printed a menu in the message window, but didn't check if it would fit, and thereby hid some of the options. Make some use PromptMenu instead. This displays the menu in a separate popup if it's larger than the message window, so doesn't share this issue. -------------------------------------------------------------------------------- 70f7560b1c | elliptic | 2024-02-26 01:16:10 -0500 Fix Coglin delay-averaging rounding Previously if you dual-wielded a 0.6 delay weapon and a 0.7 delay weapon (for instance) all your attacks would be delay 0.6, instead of half being 0.6 and half being 0.7. -------------------------------------------------------------------------------- 2eb335deba | David Lawrence Ramsey | 2024-02-25 19:13:51 -0600 Add talisman references to Zin's Recite speech. Since using them will make Zin excommunicate you. -------------------------------------------------------------------------------- 694b92fbcc | David Lawrence Ramsey | 2024-02-25 18:41:41 -0600 Improve Wu Jian wrath wrtr barbs/slowness. For barbs, increase the duration of barbs rather than setting it, capping it at 12 turns, and set the barbs' power to a maximum of 6, depending on what it already was set to. These limits are modeled after those of manticore barbs. For slowness, use slow_player() to make the player slow for a certain duration, since that function will handle things properly if the player is already slowed. These changes handle the cases where the player already has barbs in them, and/or is already slowed, when Wu Jian wrath kicks in. -------------------------------------------------------------------------------- d9500d9d98 | regret-index | 2024-02-25 20:41:51 -0330 New decorations: (unmoving) boulders We should be very sparing on spreading almost any of various monsters used to make various spells work. Several of them are very weak as threats (fire vortices, ball lightnings), and several of them are essentially adding new monsters that have to go over rigorous design criteria entirely seperate of their functionality for a spell- for example, we're almost certainly not going to make dryads or cactus giants anything besides glassed monsters in a gimmick portal if every. That said, Brom's Barrelling Boulder makes an extremely physical object that, when made to not move as the default placement works, can reasonably fit in any number of vaults already placing stones, large rocks, crumbled columns, shafts, and so on looking for earthen decoration. The boulder has a different tile when it's not rolling, and uses "dbname:still_boulder" for a description when not moving. Do note that they should not be used for any meaningful walls, however, since we've already got normal plants covering most of that design space already. The placeholder tile is an extreme edit of canofworms's Brom's spell icon. By the way, new rule: no sokoban vaults. -------------------------------------------------------------------------------- 9ce6b883f8 | David Lawrence Ramsey | 2024-02-25 14:39:26 -0600 Rename obsolete tile references to /disint. It was renamed to WAND_MINDBURST ages ago in non-tiles code, even if its actual enum value hasn't changed. So rename it WAND_MINDBURST in tiles code as well, and rename item/wand/i-disintegration.png to item/wand/i-mindburst.png accordingly. -------------------------------------------------------------------------------- 64808676d3 | David Lawrence Ramsey | 2024-02-25 12:26:34 -0600 Make DS foul flame activate a bit more often. Instead of 10% chance at mut level 1, 25% chance at mut level 2, and 40% chance at mut level 3, make it 15% chance at mut level 1, 30% chance at mut level 2, and 45% chance at mut level 3. -------------------------------------------------------------------------------- ec4258ea6e | David Lawrence Ramsey | 2024-02-25 11:34:36 -0600 Add desc for Trog's Regen and Will++ combo. This is mostly so mouseovers of the status on webtiles will display both of its effects, instead of just the regen part. -------------------------------------------------------------------------------- a82d83fd34 | David Lawrence Ramsey | 2024-02-25 11:05:48 -0600 Make autotravel account for binding sigil immunity. -------------------------------------------------------------------------------- bc26b63f61 | David Lawrence Ramsey | 2024-02-25 08:26:31 -0600 Increase gold value of foul flame brand. Since it's artefact-only. It also shouldn't match holy wrath here, because it does more damage. -------------------------------------------------------------------------------- c36836c417 | David Lawrence Ramsey | 2024-02-25 07:20:38 -0600 Fix typo. -------------------------------------------------------------------------------- 46bb8dd638 | regret-index | 2024-02-25 04:43:45 -0330 New(?) monster: thermic dynamos, for Elf and vaults elsewhere These new monsters are meant to provide another notable nonliving monster to Elf beyond the dancing weapons, as well as pick up the fire and ice theme for former crystal bolts much more directly by being bejewelled mobile elemental turbines. They're meant to be a weaker glass cannon compared to crystal guardians- swapping their notable AC, rElec+++, and a bit of spellpower for passable evasion, fast movement speed, and two-individually weaker hits of AF_FIRE + AF_COLD. Arguably they're also a little reminscient of zephyrmancers, as low-AC bolt-bouncers in Elf: on that front, they're much harder to kill in exchange for a far easier resistance and respecting more of AC. In exchange for their overall weaker or comparable state they're a bit more common in Elf and various vaults than crystal guardians were in V, occasionally banding in duos, and also replace the latter's use in late D. To help clarify their particular mechanics and to distance further from the old crystal theme, Crystal Bolt spell's dual-element possibilities have also been split into two seperate spells of Rebounding Blaze and Rebounding Chill, which are slightly-rescaled copies of Bolt of Fire and Bolt of Cold aside from the wall bounce. I don't know if future uses might be found for these spells or these monsters, but they give a little more variety past Lair branches in conjunction with the change to V's crystal guardians. Their placeholder tile is a mix of DD's old Enter the Abyss tile and canofworms's old tile for the Staff of Battle (before that got orbified). The spell icon tiles, like Crystal Bolt before them, mix together roctavian's Bolt of Fire, Bolt of Ice, and stone wall tiles. -------------------------------------------------------------------------------- 88e274e576 | regret-index | 2024-02-25 04:31:54 -0330 C. guardians / echidnas: Crystal Bolt 🡲 Crystalizing Shot (PleasingFungus) While "notably-resistant melee enemy with a ranged attack" as an archetype for monsters has a variety of reasonable manifestations as this point, crystal guardians are a bit weird. The earthen theme they might brandish as a monster made entirely of crystal instead focuses elsewhere, over to the connection crystal walls have with bolts of cold and bolts of fire. That particular mechanic's prominence has been mildly reduced over time, since wands lost both and spells lost the former, and there's been a little reduction of it versus other forms of it even on monsters (no more deep elf conjurers, removed off of necromancers and ancient liches). While it lets them fire through some other earthen and icy monsters, it's a bit off compared to more direct earth themes of raw damage with a side bit of corrosion at most. Since Vitrify seems to have worked out relatively well as a dangerous hex to throw around, I'm making them fire off a short-range projectile shot that applies the status two thirds of the time it hits and deals any damage. Refined crystal monster making one as fragile as unrefined crystal has a certain cruel logic to it, and it's one last reasonable vector to toss the effect around for a while now by being much more threatening to the high-ac, low-ev characters than Fragile otherwise potentially threatens the reverse. It does do less damage on hit than the crystal bolts did, since while it can't bolt-bounce it's inherently multiplicative for other monsters too (like the mighting peacekeeper bands in V they show up in most games in, or the terror that Desolation tends to be). To orient them towards their focus on melee here, they also get a few tweaks towards slightly less HP and AC but slightly more melee damage. This also gives crystal echidnas the aforementioned Crystallizing Shot over Crystal Bolt. They're quite weak for extended and mostly meant to be generic elemental fodder for Dis, which isn't a terrible position, but as a monster designated only for such late positioning they could do with a mechanic of any much note when they're otherwise a faster, weaker version of a monster already seen in V. Said vitrification should be terrifying in Dis, which admittedly might warrant some adjustments on Dis a little later. The Crystal Bolt spell hasn't been removed, as a one-off use of bolt-bouncing on an element besides lightning is a reasonable mechanical niche another monster could use with some renaming. The new Crystallizing Shot spell tile uses both snw-0's LCS icon and Bloax's Corona icon. -------------------------------------------------------------------------------- d044c6f0f0 | David Lawrence Ramsey | 2024-02-25 00:54:35 -0600 Fix punctuation. -------------------------------------------------------------------------------- c2b5402982 | David Lawrence Ramsey | 2024-02-25 00:06:18 -0600 Fix spelling. -------------------------------------------------------------------------------- b91d5d9764 | David Lawrence Ramsey | 2024-02-24 21:22:05 -0600 Add more flower names to artefacts. -------------------------------------------------------------------------------- 255bbe2f98 | David Lawrence Ramsey | 2024-02-24 13:40:21 -0600 Adjust ETC_FOUL_FLAME's colours again. Its portion of glowing colours now consists of bright versions of both of its umbra colours, white and brightmagenta, instead of just the former. -------------------------------------------------------------------------------- df13d27894 | David Lawrence Ramsey | 2024-02-24 13:01:08 -0600 Add placeholder tiles for new "Brilliance". The new item tile is a palette-tweaked version of UNUSED/weapons/eveningstar7.png, and the new hand1 tile is a palette-tweaked version of player/hand1/eveningstar2.png. Also, rename the new hand1 tile from mace_of_brilliance.png to eveningstar_brilliance.png, since "Brilliance" has been an eveningstar for awhile, and move both the old item and hand1 tiles to UNUSED. -------------------------------------------------------------------------------- 38b2580584 | regret-index | 2024-02-24 01:45:43 -0330 Vault review without end See all the other vault review commit messages about header clean-up and balancing according to stats and slipping in a few more recent items where they're appropriate and what not. Also worth of note: * Throw around a few more of the new randart-specifying properties in some heavily themed vaults and wizlabs. * Add a few more vaults into the Elf:1 misc_elf_vault slot, and reduce the presence of the single one of them that places runed doors. * One new incomplete effort is to start specifying all Abyss non-rune non-exit vault items, as both higher in overall quality (since the kills-to-escape and rune detection changes have hurt actually bothering with vaults) but also of lower potential value, to discourage deliberately perusing earlier Abyss floors for items when they're not dangerous (such as before doing ziggurats or Hells). -------------------------------------------------------------------------------- 65538d4c26 | regret-index | 2024-02-24 01:45:43 -0330 Put scrub nettles in default auto-excludes (Ge0FF) Hostile burning bushes didn't get an auto-exclude, so I missed it for the, well, one main game vault use. Nettles should be passable rare earlygame monsters anyway as long as they're in tunnels to work with their range 4. Also, make autoexclusion radiuses for nettles and starflowers both correspond to the maximum range they can hit the player, rather than assuming they hit from full LoS. -------------------------------------------------------------------------------- ee0a85e2a4 | Nicholas Feinberg | 2024-02-23 20:16:12 -0800 Remove Pakellas From the OSEL set. -------------------------------------------------------------------------------- cef59e7467 | Nicholas Feinberg | 2024-02-23 20:14:16 -0800 Remove W*/P* Don't allow trying to wear or put on arbitrary objects. You can't! -------------------------------------------------------------------------------- 7a634219b2 | Nicholas Feinberg | 2024-02-23 20:10:01 -0800 Remove Beogh item gifts From the OSEL set. -------------------------------------------------------------------------------- 54e5184e7a | Nicholas Feinberg | 2024-02-23 20:08:33 -0800 Coglins: --Move, +-Rings & +Resist -Move was added to Coglins to add tactical variety, and to balance out their big upside (dual wielding) without making major and undesirable nerfs to skill aptitudes or HP. There were some upsides to -Move-on-action, and it might someday return in some other context, but ultimately very few people enjoyed it - even with considerable work put into UI improvements, it still broke flow. Instead, let's try doubling down on Coglins' 'no fast swap' gimmick and remove their ability to wear rings. (It'd interfere with their magic exo-arms, see.) I'm generally not particularly fond of equipment restrictions, since they reduce the fun of finding gear (one of the juciest parts of Crawl), but this is at least novel and has some other interesting interactions with the rest of the species. To partially compensate for this downside later on, Coglins now gain rF+ rC+ at XL 13. We might or might not eventually replace this with a choice between a few different 'upgrades'. Minor notes: - Coglins can still wear rings if they find the Macabre Finger Necklace. This is very silly and the UI isn't great, but unrands are allowed to be silly. - Possibly we should remove rings from the % screen rather than showing them as 'unavailable'. -------------------------------------------------------------------------------- a46d8fb2d5 | Nicholas Feinberg | 2024-02-23 18:03:47 -0800 Fix: marshall offhand doll parts (Namsan) aiiiiiiiii -------------------------------------------------------------------------------- 5d8ddb3428 | Nicholas Feinberg | 2024-02-23 17:52:26 -0800 Fix: no mon weap inscrips in combat (riverfiend) Matching the behavior for player weapons. "The goblin hits you with the +3 mace of Famine {flame, rC+ rF- Stlth++}" doesn't need the full inscription included every time, or any time. -------------------------------------------------------------------------------- c8eefc90e7 | David Lawrence Ramsey | 2024-02-23 16:42:52 -0600 Fix non-damaging barbs of Wu Jian wrath (#3507). The ATTR_BARBS_POW attribute wasn't set. -------------------------------------------------------------------------------- 5f989adc20 | David Lawrence Ramsey | 2024-02-23 15:04:09 -0600 Tweak punctuation. -------------------------------------------------------------------------------- a4b76d3f39 | David Lawrence Ramsey | 2024-02-23 14:50:01 -0600 Make slick slippers give binding sigil immunity. Also document this in their description. -------------------------------------------------------------------------------- 5664dac8fc | David Lawrence Ramsey | 2024-02-23 14:50:01 -0600 Move binding sigil immunity into a function. Accordingly, disable the warning for stepping onto binding sigils if you're immune. Also, change references to "your" sigil to "the" sigil, so that it's not player-specific, and change the message for when someone's immune to it to work for both players and monsters. -------------------------------------------------------------------------------- f15d296471 | Monkooky | 2024-02-23 13:26:13 -0600 Datify changed_physiology Add a changed physiology bool to form class and data. [Committer's note: Updated for current trunk, and did checkwhite.] -------------------------------------------------------------------------------- 0b0b42bae7 | David Lawrence Ramsey | 2024-02-23 12:09:55 -0600 No moving via trampling/dragging if bound. This comes into effect with Sigils of Binding and Yred's Fathomless Shackles. Closes #3547. -------------------------------------------------------------------------------- 3b8dbc4376 | gammafunk | 2024-02-23 11:46:51 -0600 fix: The artprops specifier for monster item specs This commit allows artprops to be used in any items specified as part of a monster's specification, including wizard mode and DES. I've checked through all other calls of `items()`, and it doesn't seem there's any other place missing these fixed properties being passed as an argument. -------------------------------------------------------------------------------- db0f5c71e3 | David Lawrence Ramsey | 2024-02-23 08:52:36 -0600 Tweak more punctuation. -------------------------------------------------------------------------------- 0c113e4b92 | David Lawrence Ramsey | 2024-02-23 06:33:45 -0600 Tweak punctuation. -------------------------------------------------------------------------------- 26e39782c6 | elliptic | 2024-02-23 03:42:34 -0500 Swap Coglin and Barachi in the species selection screen Even if -Move is replaced with something else, Coglin still seems likely to be more complicated. -------------------------------------------------------------------------------- 080537f31e | David Lawrence Ramsey | 2024-02-22 22:27:37 -0600 Fix wording. -------------------------------------------------------------------------------- f785c728e9 | David Lawrence Ramsey | 2024-02-22 22:21:44 -0600 Fix typos. -------------------------------------------------------------------------------- 3324ac0059 | gammafunk | 2024-02-22 22:14:37 -0600 fix: Exclude unrands from wizmode randart stats Unrands are in fact not randarts. Unrands might even be fixedarts, but no one really remembers what a fixedart is. -------------------------------------------------------------------------------- f641b5e0b5 | gammafunk | 2024-02-22 22:14:37 -0600 doc: Document the artprops item spec tag In the DES syntax guide, add a hopefully complete description of how to use it along with a few important notes. -------------------------------------------------------------------------------- e4683972fd | David Lawrence Ramsey | 2024-02-22 21:43:00 -0600 Fix messaging in Jinxbite sprite message. Louise should be bonked with "her" weapon, not "its" weapon. -------------------------------------------------------------------------------- 4bed94c0a3 | DracoOmega | 2024-02-23 00:05:59 -0330 Don't give apostle challenges while the player is under penance It's a strong feedbad when you can't even recruit the apostle after you win it (since you have no god abilities while penanced) This doesn't stop the unfortunate situation of it feeling bad if you somehow get penance *during* a challenge, but I can't simply send the challenge away the moment this happens or the player could deliberately attack their own apostles to end it at-will. -------------------------------------------------------------------------------- 3038c6faba | DracoOmega | 2024-02-23 00:02:17 -0330 Fix a possible crash I somehow keep forgetting it's possible for agent() to return null. -------------------------------------------------------------------------------- 36b1df8bed | DracoOmega | 2024-02-22 23:47:20 -0330 Fire final effects after _pre_monster_move Enchantments tick in this function (notably poison and sticky flame), which can result in monsters dying. Sometimes those deaths trigger a avoided_death_fineff (Beogh deathbed conversion, defeating apostles, bound souls being created). If that fineff is not processed before another monster acts, the dying monster will still be in an invalid state and can cause an assert if another monster tries to attack it. This is hard to trigger on purpose, but it still seems reasonable to fire final effects after each monster does its pre_move. -------------------------------------------------------------------------------- 4e6cf12409 | DracoOmega | 2024-02-22 23:47:15 -0330 Fix reflected projectiles causing the player penance if they hit an ally If the player fired a projectile at an enemy who reflected it back, and the it missed the player and struck an ally behind them, this would be misattributed to the player themselves (and cause penance for Beogh / good gods). Change the conduct check to look at whether the agent() is the player (which properly handles reflection blame) rather than the original killer_type. -------------------------------------------------------------------------------- af4921d101 | David Lawrence Ramsey | 2024-02-22 14:54:39 -0600 Add "Brilliance" quote. -------------------------------------------------------------------------------- 1f14e3f6c3 | elliptic | 2024-02-22 14:22:43 -0500 Don't place hand cannon clouds on top of the player Previously they were more likely (1/3 chance) to place on top of the player than on any surrounding square, since fair_adjacent_iterator always iterates through the center first. Clouds on top of the player are also probably less nice decoratively while being more obstructive functionally (e.g. they block catoblepas breath), so let's just only place them adjacent to the player. (This commit also removes a small chance of not getting any cloud even when there is still room adjacent to the player.) -------------------------------------------------------------------------------- e3e1ee326f | Nicholas Feinberg | 2024-02-22 11:05:43 -0800 Fix tab with off-hand reaching -------------------------------------------------------------------------------- 4efcb1c6c7 | patrick | 2024-02-22 11:40:26 -0600 Touch up the Clear Minds Boutique just a skosh Talismans can be randarts too, so let's let them join the fun. -------------------------------------------------------------------------------- 7902d401d8 | patrick | 2024-02-22 11:40:26 -0600 Add a shop using the new artprops feature (gammafunk) As requested, a vault that uses the new artprops feature. Surprising no one, it's a shop! The Clear Minds Boutique generates four randarts which are hardcoded to include Clarity as one of their properties. -------------------------------------------------------------------------------- 387adf243f | gammafunk | 2024-02-22 11:40:26 -0600 feat: Simplify formulas for artefact properties (elliptic) When making an item randart, there's a binomial(7, 0.3) distribution used to assign quality from a level of 1 to 7. This is currently done by taking a binomial with 7 trials and taking a max of this and 1. This commit simplifies this to just be a 1 + binomial(6, 0.21), which has a similar mean. Additionally this commit simplifies the distribution for the number of bad artefact properties added. The current implementation is a min of a binomial distribution and the max allowed bad properties, which is 2 minus the number of any fixed bad properties. This binomial has a number of trials randomized based on the quality level and random rounding, with a fixed `p` of 0.3. The new implementation removes the min and the dependence on quality in the binomial, making the number of trials simply be the max allowed bad properties. The `p` is reduced to 0.21 to keep the mean number of bad properties similar to as before. This distribution will lead to more randarts having only 1 bad property instead of 2 and will even out the numbers of bad properties across randarts by quality. It's not clear that the original relationship of bad props to quality was necessary and this new distribution is much easier to reason about. Here are stats for `any randart` from 10k iterations each both before and after this distribution change: Before: Max # of props = 6, mean = 2.87, median = 3 Max # of good props = 5, mean = 2.45, median = 2 Max # of bad props = 2, mean = 0.42, median = 0 Max (good - bad) props = 5, avg # = 2.03 After: Max # of props = 6, mean = 2.97, median = 3 Max # of good props = 6, mean = 2.54, median = 3 Max # of bad props = 2, mean = 0.44, median = 0 Max (good - bad) props = 6, avg # = 2.10 The means are quite similar for both types of props, so this change shouldn't have a large effect, but will make future reasoning about randart balance easier. -------------------------------------------------------------------------------- 84f73fd571 | gammafunk | 2024-02-22 11:40:26 -0600 feat: Rework wizmode artefact and randart stats This commit improves a number of aspects of the Ctrl-I wizmode command that generates statistics for acquirement and randarts. The randart stats subcommand now accepts an arbitrary item spec instead of prompting for an inventory item. This allows us to examine randart stats of arbitrary item classes that can create multiple types of items, as well as stats for randarts that use the newly implemented fixed properties. This subcommand now prompts for a number of iterations instead of always making ~27k. Despite doing a bit more work in item generation, it still runs quickly enough to generate statistics for 10k items in a few seconds on my machine. The item spec used forces randart, but for item specs that can generate non-randart items (e.g. `any` can generate consumables), such items are discarded and not used in the statistics. The subcommands now write to the distinct files "acquirement_stats.txt" and "randart_stats.txt" instead of using the same ".stats" file. Output file creation now happens only after all input is validated and output progress is simplified. For both subcommands, item creation happens at the unseen origin location (0,0), eliminating message spam. Finally, the subcommands are refactored to use central data accessors for artefact properties, egos, etc, instead of maintaining their own independent lists. -------------------------------------------------------------------------------- 1e417eb1c6 | gammafunk | 2024-02-22 11:40:26 -0600 feat: Specifying fixed properties for randarts This commit adds support to item_spec to specify an arbitrary set of artefact property values. The values are given in any item spec according to the following syntax: artprops:prop1:val1&prop2:val2 ... Matches against property names are case insensitive, and properties like rPois and ^Contam that are boolean can omit specifying the value. This syntax can be used in any item spec, including when defining items for vaults, giving items to monsters, etc. When making the item, the randart property randomization considers the fixed values in terms never overriding these values. Randart generation considers how many good/bad properties the fixed ones add to the item and proceeds with its usual randomization process, which means that it may add additional random properties. Some error checking is done on the given value ranges to prevent negative values on properties that are only ever positive and to only allow 0 or 1 on boolean values. -------------------------------------------------------------------------------- 08bcfe7efd | David Lawrence Ramsey | 2024-02-21 23:05:59 -0600 Fix "Brilliance" inscription: Halo -> Umbra. -------------------------------------------------------------------------------- 7d46fac7e4 | elliptic | 2024-02-21 22:07:31 -0500 Don't fail to wait off Coglin -Move due to haste randomization When hasted player_speed() returns either 6 or 7 randomly, so it was possible to have -Move duration set to 7 and then have a 6-aut wait action afterwards. This commit lowers the -Move duration by 1 to make room for such randomization. -------------------------------------------------------------------------------- e345137cd0 | DracoOmega | 2024-02-21 21:29:22 -0330 Fix giving the player exactly 1 XP for kills they were uninvolved with Lightly broken when I took out the 2x multiplier for player damage done, when the last of the ally xp penalty was removed. -------------------------------------------------------------------------------- 80b497e092 | David Lawrence Ramsey | 2024-02-21 18:56:14 -0600 Give players with foul shadow night vision. Since it's another source of umbra, and it's coming from them anyway. -------------------------------------------------------------------------------- 0bc28be9fb | David Lawrence Ramsey | 2024-02-21 17:43:23 -0600 Let ghost demons have umbras. Currently only used for Pan lords with foul flame, who all get radius-1 umbras. -------------------------------------------------------------------------------- d6b1d19087 | David Lawrence Ramsey | 2024-02-21 17:20:20 -0600 Consolidate halo/silence aura/umbra checks. -------------------------------------------------------------------------------- 448f42529f | David Lawrence Ramsey | 2024-02-21 14:08:57 -0600 Adjust parameters for setting monster gods. _place_monster_set_god() only uses mgen_data's monster class and place, so use those as parameters instead of the whole mgen_data struct. Also, make it take the monster before those two parameters. -------------------------------------------------------------------------------- 937e6280d3 | David Lawrence Ramsey | 2024-02-21 14:08:57 -0600 Simplify setting monster gods a bit. In _place_monster_set_god(), since priest monsters default to GOD_NAMELESS if everything else fails, return after setting priest monsters' god. That way, there isn't quite as long of an if/else chain. -------------------------------------------------------------------------------- efc72b7d41 | David Lawrence Ramsey | 2024-02-21 14:08:57 -0600 Make setting monsters' gods its own function. _place_monster_set_god() is split out of place_monster_aux(), but is otherwise unchanged. -------------------------------------------------------------------------------- 4368416496 | Nicholas Feinberg | 2024-02-21 11:54:36 -0800 Fix: allow Vhi's with -Move (Drazool) Since it's no longer Palentonga's Rolling Charge, it's a translocation effect now. As such, it bypasses -Move and is only blocked by -Tele, stasis, being a tree, etc. -------------------------------------------------------------------------------- 123bbc5fe1 | elliptic | 2024-02-21 11:34:14 -0500 Don't apply -Move on Coglin if there are no monsters left Try this out since this seems responsible for a fair proportion of the annoyances, e.g. players immediately wanting to manually move at the end of a fight. This commit also tries to wipe existing -Move that might still be remaining from a previous Coglin action if the action that concluded the fight was fast (e.g. a fast melee attack). (In principle maybe this part should be implemented somewhere else so that -Move is also removed if the action concluding the fight was a fast action that doesn't normally cause -Move (e.g. swapping a ring and having an ally kill the last enemy in that 0.5 time), but that seems super rare so this should be sufficient for testing the change.) Note that invisible monsters still count for this, so this does leak their existence - this seemed better than alternatives. -------------------------------------------------------------------------------- 28b100f618 | David Lawrence Ramsey | 2024-02-20 19:30:12 -0600 Move foul_flame_monster() into melee_attack. Since the other demonspawn mutations are handled there. Also, improve debug messages, set beam.thrower like cloak of flames and passive freeze, and add proper punctuation for greater damage. -------------------------------------------------------------------------------- 65e0ca0ff2 | Nicholas Feinberg | 2024-02-20 17:23:14 -0800 Fix: don't segfault on offhand unrands Set unrand_reacts to the slot corresponding to the hand we're actually wielding an unrand in, not always EQ_WEAPON. This also fixes artefact staves with world_reacts functions, if they existed, which they don't. -------------------------------------------------------------------------------- ba97123464 | Nicholas Feinberg | 2024-02-20 17:23:14 -0800 Refactor unrand_reacts We already set you.wield_change in every relevant world_reacts unrand func. -------------------------------------------------------------------------------- b849e8b480 | David Lawrence Ramsey | 2024-02-20 17:31:01 -0600 Add a few missing foul-flame-related bits. It can rarely show up in the chaos brand, so it should be displayed then. Also, like holy wrath, it needs to do damage to function, even if nothing is currently immune to it. -------------------------------------------------------------------------------- 34023cf50c | David Lawrence Ramsey | 2024-02-20 13:16:47 -0600 Add a TODO. Pan lords with foul flame touch would ideally have radius-1 umbra, but there's no easy way to implement that right now. -------------------------------------------------------------------------------- 42da790b35 | DracoOmega | 2024-02-20 14:21:10 -0330 Fix Vhi's destination checking being player-centric (Sergey) Even if a monster was casting Vhi's, it used only the player to determine whether a destination tile was safe. This meant that flying monsters would refuse to dash onto lava if the player was not flying, but also that land monsters would happily dash into lava if the player *was* flying (and then crash). Thank you for your sacrifice, Bogfrid. You will be remembered. -------------------------------------------------------------------------------- f8fd08910c | elliptic | 2024-02-20 12:38:27 -0500 Make autoexplore wait for -Move to end -------------------------------------------------------------------------------- ceb5a3b12e | Nicholas Feinberg | 2024-02-20 08:06:41 -0800 Fix: wands don't nerf legs (elliptic) -------------------------------------------------------------------------------- 59b7d7490c | Nicholas Feinberg | 2024-02-20 07:58:09 -0800 Fix offhand wielding unrands (dolorous) Closes #3571. -------------------------------------------------------------------------------- 2cd877353e | Nicholas Feinberg | 2024-02-20 07:46:05 -0800 Fix: Coglins get -Move for ranged/throwing -------------------------------------------------------------------------------- 3d4e8de404 | Nicholas Feinberg | 2024-02-20 07:45:04 -0800 Fix offhand-only attacks -------------------------------------------------------------------------------- 744942f433 | regret-index | 2024-02-20 03:06:04 -0330 Fix a door ficus (elliptic) -------------------------------------------------------------------------------- d27e1419c2 | regret-index | 2024-02-20 03:04:45 -0330 Even more non-player spell icon tiles + Yred ability icon tiles Still placeholdery, still stitching together from other old tiles, still better than pawprints for all the webtiles players (and maybe local tiles players eventually? Who knows?) Spell sources: * Aura of Brilliance: Sastreii's Recieve Forbidden Knowledge icon and Brilliance monster status icon. * Call of Chaos: CanOfWorms's Word of Chaos icon. * Call Tide: roctavian's old watery Shoals stairs. * Concentrate Venom: Sastreii's status icon plus Bloax's Corona icon. * Crystal Bolt: roctavian's Bolt of Fire + Bolt of Ice + stone wall tiles. * Drain Magic, Sap Magic: snw-0's icon for Pakellas's brief Sap Magic invocation + Sastreii's antimagic icon. * Dream Dust: CanOfWorm's dream sheep tile. * Druid's Call: snw-0's recall icon + Sastreii's bunyip and toad tiles. * Entropic Weave: Ultraviolent4's corrosion status icon + Pete Hurst's cobweb tiles. * Fire Summon: nlavsky's Major Servant icon, previously used for the Staff of Asmodeus's own summon ability. * Malign Offering: Sastreii's Dark Bargain icon, coloured like Kiku icons. * Regeneration: roctavian's Regeneration spell icon. * Sheza's Dance: Sastreii's Pain Branding icon, CanofWorms's Fugue of the Fallen icon, snw-0's dancing weapon status icon and summoning sigil, roctavian's glaive + morningstar tiles. * Summon Illusion: DD's old icon for Yred Injury mirror + snw-0's sigil. * Throw Ally: PleasingFungus's Lesser Beckoning icon + CanOfWorms's Jinxbite icon. * Throw Klown Pie: snw-0's jester pie tile and jester cap tile. * Weakening Gaze: The original rltiles See Invisible plus Sastreii's Weak status icon. Ability sources: * Hurl Torchlight: snw-0's Hurl Damnation + snw-0's Cleansing flame icons. * Fathomless Shackles: snw-0's Sanctuary + CanOfWorm's Break The Chains. This also comes with a few alterations to already present monster summon spells icons, to fit more in frames or with newer tiles than prior, and some reorganization and description adjustment alongside it. -------------------------------------------------------------------------------- 8d7c456967 | DracoOmega | 2024-02-20 02:39:06 -0330 Allow scrolling the god info panel up/down So that one can actually read a recruit's stats in an 80x24 console window, should someone wish to do so. For some reason, key events weren't being passed along to the default widget input handler here, which actually meant that the oldBeogh follower list (which could theoretically get even longer than this) did not scroll either. -------------------------------------------------------------------------------- 0ac29734fc | Nicholas Feinberg | 2024-02-19 21:56:04 -0800 Fix: don't rev when shooting air (elliptic) This check seems OK for now, though it's a bit bad against invisible foes. -------------------------------------------------------------------------------- 4da7c8d6d1 | Nicholas Feinberg | 2024-02-19 21:40:07 -0800 Fix: don't call offhand weapons 'worn' (elliptic') -------------------------------------------------------------------------------- dbcfc4233b | David Lawrence Ramsey | 2024-02-19 22:10:51 -0600 Adjust "Brilliance" description a bit. Foul flame is only mostly gone, so to say only its lesser version survived is not quite right. -------------------------------------------------------------------------------- f9bc0de034 | DracoOmega | 2024-02-19 23:51:09 -0330 Fix prompt for recruiting your first apostle using the wrong hotkey Because the code hadn't technically given the player access to the Recruit ability yet, the game wouldn't properly report on what hotkey it WOULD have, if the player had it. (Also fix a bug with it still printing the reminder if the player had apostles, but they were all dead or elsewhere) -------------------------------------------------------------------------------- ba67e77f49 | DracoOmega | 2024-02-19 23:31:57 -0330 Improve apostle UI - show brief stats in Dismiss ability / overview Remembering which of multiple dead apostles had which spells / items can be a little hard, and comparing a new recruit to multiple apostles (some of whom may also be dead) has a bit more UI friction than I wanted. So now you can see a simplified overview of your apostles' stats (plus those of an available recruit!) all at once in the religion screen (replacing the previous mostly-useless companion list, leftover from older days). Each Dismiss Apostle ability will also show the same stat place for the apostle you're dismissing. This block shows name, class, HP/AC/Damage, equipment, and spells. It's generally much less featureful than xv, but should still be a meaningful UI improvement. Additional polish may come in future, but I felt that this already provides enough QoL benefit that it's worth pushing. -------------------------------------------------------------------------------- 52729c3a44 | David Lawrence Ramsey | 2024-02-19 19:29:10 -0600 Adjust ETC_FOUL_FLAME to make it shadowy. It now consists of umbra colours (darkgrey and magenta), plus the occasional flicker of white to show that it's glowing. -------------------------------------------------------------------------------- 03ac3cc0af | David Lawrence Ramsey | 2024-02-19 17:00:31 -0600 Extinguish foul flame's last glow. Make the wielding messages for foul flame weapons mention blackness instead of radiance. -------------------------------------------------------------------------------- 0bcb2a7693 | DracoOmega | 2024-02-19 19:20:10 -0330 Don't offer Beogh conversion to Demigods (ragingrage) They couldn't actually *join*, but would still get peached to as if they could (and even get the Join Beogh ability, which didn't actually work). -------------------------------------------------------------------------------- c0d2f6eb97 | David Lawrence Ramsey | 2024-02-19 16:15:14 -0600 Rework foul flame damage to scale with XL. Simplify the damage function as well. The new formula is based on the spiny damage formula, and most likely still needs adjustment. -------------------------------------------------------------------------------- 2cdf64c09c | David Lawrence Ramsey | 2024-02-19 15:21:59 -0600 Reflavour foul flame as darkness, not light. The foul glow mutation is renamed to foul shadow, and its description has been adjusted. It loses its glow-related effects in favour of a consistent umbra with radius 1-3 (dependent on mutation level). It's also removed from Meteorans. At kate's suggestion, it also conflicts with spiny, since both give retaliation-based attacks. Its placeholder tiles are now the darkness tile in UNUSED/gui for level 3, and palette swaps of it for levels 1 and 2. "Brilliance" now has an umbra instead of a halo, like the ring of Shadows, and its description has been adjusted. The rewritten lore now describes foul flame as an overpowered umbra prototype. Its tiles need to be redone (item/weapon/artefact/urand_brilliance.png and player/hand1/artefact/mace_of_brilliance.png). Foul flame's actual damage in-game is unchanged. -------------------------------------------------------------------------------- a146dc8f6d | Nicholas Feinberg | 2024-02-19 13:01:28 -0800 Fix Maxwell's revving offhands (elliptic) Too good a bug to keep... -------------------------------------------------------------------------------- f177465bdf | DracoOmega | 2024-02-19 17:12:28 -0330 Don't crash when deathbed pacifying an orc standing on the stairs They would immediately leave the level when converted, and then by the time the revival fineff fired, they would already have stopped existing. -------------------------------------------------------------------------------- 52037ea7a9 | elliptic | 2024-02-19 14:14:59 -0500 Make autofight wait for -Move to end if it wants to move towards an enemy -------------------------------------------------------------------------------- 614e6b550b | Nicholas Feinberg | 2024-02-19 11:10:05 -0800 Fix the build? -------------------------------------------------------------------------------- 98a3e4f53e | Nicholas Feinberg | 2024-02-19 10:57:46 -0800 -Stiff, +-Move (elliptic, BountyHunterSAX) Coglins' Stiff mutation did provide interesting dynamics in combat, but could be very punishing of mispresses - one tab too many could cause a very painful double turn. Try a similar dynamic with -Move on attack/cast/throw, lasting for your turn + 1 normal action. This is pretty similar in terms of tactical implications, since moving at 2.0 speed is similar to waiting for 1.0 and then moving at 1.0. The upside is that this blocks dangerous moves; the downside is that it involves more obstruction from and messaging by the UI. Let's try it out. :) -------------------------------------------------------------------------------- b960cd1172 | DracoOmega | 2024-02-19 13:52:25 -0330 Don't interrupt rest when allies take poison ticks This was additionally confusing since there isn't even any message for them taking damage this way, so it's not clear what's interrupting the player. (And it happens a lot from incidental damage in places like Snake) And while it's sad to lose an ally that way, the player also usually can't do anything about this - if they're lethally poisoned, they're just going to die. (Standing in a poison cloud does direct damage and will still interrupt, so most ways to get *more* poisoned will still alert the player) -------------------------------------------------------------------------------- b00f77f2df | David Lawrence Ramsey | 2024-02-19 10:12:00 -0600 Move foul glow to tier 2 demonspawn mutations. It needs to show up more often for testing, and it's not as game-warping as tier 3 mutations. -------------------------------------------------------------------------------- ce5c0aab1b | David Lawrence Ramsey | 2024-02-18 23:19:22 -0600 Adjust a few Donald speech lines for new Beogh. -------------------------------------------------------------------------------- 45148b779a | Nicholas Feinberg | 2024-02-18 21:16:22 -0800 Shuffle Rev colours around (DracoOmega) -------------------------------------------------------------------------------- 2ba4f54afb | Nicholas Feinberg | 2024-02-18 20:15:39 -0800 Fix: ranged attack don't 'pierce through' orbs In terms of messaging. -------------------------------------------------------------------------------- c7c9bb8ef8 | Nicholas Feinberg | 2024-02-18 20:14:25 -0800 Fix: don't count CACT_BLOCK for orbs -------------------------------------------------------------------------------- 673a13063c | Nicholas Feinberg | 2024-02-18 20:14:23 -0800 Use a new helper -------------------------------------------------------------------------------- b64034399e | Nicholas Feinberg | 2024-02-18 20:10:39 -0800 Fix: orbs aren't (divine) shields Don't treat an orb as a shield for TSO messaging purposes. -------------------------------------------------------------------------------- 709d21d5af | David Lawrence Ramsey | 2024-02-18 20:11:52 -0600 Add a few Donald speech lines for new Yred. -------------------------------------------------------------------------------- dd288483a6 | Nicholas Feinberg | 2024-02-18 17:25:33 -0800 Fix antimagic being pro-magic offhandedly (Lightli) Apply the SPWPN_ANTIMAGIC max MP penalty to off-hand weapons. -------------------------------------------------------------------------------- 0a58b4a09e | David Lawrence Ramsey | 2024-02-18 19:03:54 -0600 Fix tag_upgrade build? -------------------------------------------------------------------------------- 4a20d55004 | regret-index | 2024-02-18 21:10:22 -0330 Quick vault review and decor adjustments Some layout and gimmick reconfiguring, some rewards and monster and feature choice tweaking, increased weight rather than decreased weight to a bunch of extra-large V vaults because they're already unlikely to spawn with the layout generator in the first place, and some continued emphasis of harmlessness in some of the newer decorations. -------------------------------------------------------------------------------- 831329d5cd | regret-index | 2024-02-18 21:10:21 -0330 New decorations: caches of fruit and meat These are meant to provide the flavour of fruit trees and groves, or people discreting stashing away meals within settlements and fortresses, without the attending manifold issues of the hunger clock. Many vaults on either front end up involving the constant presence of greenery or lakes and moats to emphasize the notions of housing; this can compliment and reduce the use of either without interrupting as plants and water do, with relatively straightforward decoration that shouldn't be confusable as much else. Both of these fruit and meat piles are akin to dry fountains, not statues- they don't block fire or movement, and solely sit on the ground. They can also walked on without any effects beyond a rare message about stopping to nibble at floor food. (Most of the fruit messages are trying to be cosmopolitan, while the meat messages this time around are specifically tailored to the various animals of the Dungeon for a little more world-building. There's also a variety of species-specific messages.) In console, these are green and brown % or ÷ glyphs, the same glyphs as skeletons, which should continue to help with not flooding the screen any more than those currently do. (This also comes with a couple vaults being scaled for further locations than they currently possess, since they felt workable for other contexts.) The current fruit cache tile was made by snw-0, while the meat cache tile components go as far back as the original rltiles project. They're a little placeholdery- they feel a bit too item-like for now, though players shouldn't take too long to get used to it. These, more than any other decorative feature, would benefit from more contributions over time- getting back sultanas, snozzcumbers, and pizza would be nice, and it would also help to drift away from tiles that specifically invoke old carryable items. I'd also be up for a cache of baked goods for a handful of vaults, which could easily have some pie pile tiles for Zot.... (TODO: .rc setting for allowing fully muting the new MSGCH_DECOR_FLAVOUR, or brightening it from a current default darkgray. If such controls get in, maybe we could consider rare messages for other stuff, like walking over fountains, beside animated statues, or on top of impending cloud vents?) -------------------------------------------------------------------------------- a70f5b33bd | Nicholas Feinberg | 2024-02-18 16:03:50 -0800 More Coglin novelty titles (ragingrage) -------------------------------------------------------------------------------- 363f0df772 | David Lawrence Ramsey | 2024-02-18 17:54:43 -0600 Remove unneeded quotes from YAML files. Some have them around species name, abbreviation, short name, adjective, and/or genus; and some don't. (Mountain Dwarf has them around some things and not others.) They're read properly either way, so the quotes aren't necessary. -------------------------------------------------------------------------------- 17d16cfdc5 | Nicholas Feinberg | 2024-02-18 15:05:00 -0800 Fix: don't crash on monster ranged Oops! -------------------------------------------------------------------------------- 951292165a | Nicholas Feinberg | 2024-02-18 14:58:13 -0800 Let coglin trees dual wield The intent was to block the exoskeleton muts (dual wield, slow wield, rev wield) for forms with no weapons, but to enable them for weapon-using forms. Treeform, inconveniently, melds 'physical' muts but also wields weapons. Let it dual-wield, since it feels very weird for coglins to otherwise want to wield a shield in their weapon-holding offhand, etc. Mecha-tree! -------------------------------------------------------------------------------- 7f4458d1ef | Nicholas Feinberg | 2024-02-18 14:52:33 -0800 Leave the shadows behind (elliptic) -------------------------------------------------------------------------------- 89e69b9ebe | Nicholas Feinberg | 2024-02-18 14:51:53 -0800 Fix crash on lig ending (dolorous) With an offhanded weapon. Resolves #3557. -------------------------------------------------------------------------------- 0012f907a2 | Nicholas Feinberg | 2024-02-18 14:38:48 -0800 Fix: don't wield items twice (SentientSupper) Don't allow using the local tiles UI to wield the same one-handed weapon in both hands simultaneously. Juggling is illegal and clowns should be executed. -------------------------------------------------------------------------------- 0561d8ba88 | Nicholas Feinberg | 2024-02-18 14:36:32 -0800 Loosen up stiff coglins (Sergey, SentientSupper) Count waiting as movement for Stiff purposes, to discourage jogging back and forth while waiting for enemies to round a corner. (One must infer the coglin is jogging in place within the tile.) -------------------------------------------------------------------------------- f146ca5fe1 | Nicholas Feinberg | 2024-02-18 14:26:36 -0800 Add a very serious title (hellmonk) -------------------------------------------------------------------------------- 02c5f9f64a | Nicholas Feinberg | 2024-02-18 14:25:29 -0800 Fix: don't crash when printing stats With offhand weapons. -------------------------------------------------------------------------------- a990712c8d | Nicholas Feinberg | 2024-02-18 14:24:55 -0800 Fix: don't lose offhand ofter untransform (SentientSupper) -------------------------------------------------------------------------------- 2a2ee83d2c | DracoOmega | 2024-02-18 18:31:14 -0330 Interrupt autorest and travel when allies take damage Because autorest interrupts on fewer things than resting manually does, it was possible not to be notified of an apostle sitting in a poison cloud and have it immediately die with one button press. This is obviously quite bad. Now interrupt when any visible ally takes damage, to avoid this. I am... more than a little worried that this will create needless interruptions in regular play and that this should be more conservative, but the situation it's aimed at fixing is very bad, and it's been argued that the downsides won't come up in practice. So let's see, and then maybe try to narrow down criteria later, if it turns out there's issues. -------------------------------------------------------------------------------- 7fda0f466e | DracoOmega | 2024-02-18 18:27:09 -0330 Buff wizard apostles somewhat I intentionally kept the weight of some spells I thought would be especially useful on allies low, but in practice wizards often seem to be comparing poorly to other apostles, so I think they can stand to be more common. (This may still be too conservative?) Also make cast frequency of attack spells a little higher, give a little more hp, and also give bonus evasion that scales with apostle power (since their armour never gets especially good). -------------------------------------------------------------------------------- bd18ae22b0 | DracoOmega | 2024-02-18 18:11:20 -0330 Improve reminder for how to recruit an apostle The game already told the player how to if they had no apostles, but perhaps since the reminder came *after* the force_more for the apostle being available to recruit, it was sometimes overlooked. Now included it in the original message, colored to be hilighted more. -------------------------------------------------------------------------------- fe756443ca | DracoOmega | 2024-02-18 16:55:40 -0330 Fix formicids being interrupted from taking stairs by dispersal traps (And anyone else with stasis, for that matter) Fixes #3567 -------------------------------------------------------------------------------- baf8858e17 | DracoOmega | 2024-02-18 14:42:06 -0330 Fix Scorch steam always being attributed to the player (SentientSupper) Could cause penance when cast by a hostile apostle against a friendly one, if the latter was standing over water. -------------------------------------------------------------------------------- 767cff9cbe | Kate | 2024-02-18 15:38:25 +0000 Fix delays not being interrupted by Rising Flame It was possible to, for example, activate Rising Flame, start climbing a staircase, then have the Rising Flame go off without interrupting the stair delay. Because Rising Flame then puts a shaft underneath the player's new location, they'd automatically jump back down the shaft as part of the continued stair delay. -------------------------------------------------------------------------------- c488ab431e | Kate | 2024-02-18 15:38:25 +0000 Tweak a message And adjust spacing. -------------------------------------------------------------------------------- 758c6da2ce | grumposus | 2024-02-18 15:37:53 +0000 Make rising flame valid to use on D1 with the Orb And cause it to win the game. Closes #3519. -------------------------------------------------------------------------------- 289a535e89 | David Lawrence Ramsey | 2024-02-18 01:04:41 -0600 Don't list Hill Orcs in the aptitudes menu. -------------------------------------------------------------------------------- cd93b57ba1 | David Lawrence Ramsey | 2024-02-17 19:40:41 -0600 Fix spelling. -------------------------------------------------------------------------------- 66ff23f1a4 | David Lawrence Ramsey | 2024-02-17 19:38:57 -0600 Handle joining/leaving good gods and foul flame. Joining them makes you holy, and thus unable to use it; leaving them for non-good gods makes you not holy, and thus able to use it. -------------------------------------------------------------------------------- d0048a8123 | Nicholas Feinberg | 2024-02-17 16:58:32 -0800 Increase Foxfire Swarm damage Moving it from 1d6 to 1d8 might make it a bit more competitive with Ignis's other active. Elliptic suggested reducing the max number of foxfires from 24 to 8 (ie going from radius 2 to 1), which *would* make it easier to balance, but would be a terrible loss to the spectacle of the effect. I'd rather hold off. -------------------------------------------------------------------------------- 3fb9450a1b | Nicholas Feinberg | 2024-02-17 16:44:49 -0800 Fix: goblins are not elves (dolorous) -------------------------------------------------------------------------------- cc96a6ac99 | Nicholas Feinberg | 2024-02-17 16:08:20 -0800 New species: Coglins Wielding weapons in each hand, Coglins are puny goblins that ride magic exoskeletons into battle. They're slow and inflexible in many ways. When they stop moving, their exoskeleton will be slow to move again. When they stop swinging, their exoskeleton's strikes will be weaker until they rev back up again. And when they switch weapons, it takes them some time to re-attune their exoskeleton's spirit. But once they get going - look out! More notes on mechanics: - Dual wielding: you can choose to wield a 1h weapon instead of a shield in your off-hand. (Unless you're wielding a 2h in your primary hand.) Whenever you strike with your primary weapon, your secondary will also attack. This doesn't trigger extra aux attacks. You can dual-wield 1h ranged weapons, but mixing and matching ranged and melee weapons doesn't work. Delay is the average of the two. The order of attacks is random. - Warmup strides: whenever you take a turn that's not movement, your next movement will take twice as long as normal. Other actions (attacks, spells, etc) remain normal speed. - Warmup strikes: your ranged and melee attacks are 33% weaker until you fully rev up, which takes about 4.0 dAut of attacking enemies. - Slow wielding: wielding, unwielding, or switching weapons (in both the primary and off-hand) takes 5 standard turns instead of 0.5. The idea is to play in a similar space to formicid's 2h+shield ability. Dual wielding is expected to *usually* be stronger than wielding a 2h or 1h+shield - and if it isn't, we can buff it until it is - but gear found will sometimes prompt one to use a shield or a 2h weapon, for a shorter or longer period. That sort of 'soft' change for gear evaluation (as opposed to a 'hard' lockout on item types ala spriggan/kobold/ogre/etc) seems fun and exciting. The various downsides are intended to complement this. Dual-wielding is a big strategic upside, so the downsides are tactical, hopefully making fights feel a bit different without being overly obtrusive. (And slow-wielding, in particular, is intended to avoid excessive weapon micromanagement.) There's also an implementation of an unused 'attractivitis' mutation in this commit. We may later turn this into a generic badmut, or cut it entirely. downside, either! More notes: - Weapon names are purely cosmetic, but Esmeralda's feelings will be hurt if you say so. - Apts and attributes are early drafts and especially subject to change. -------------------------------------------------------------------------------- ed53ad6fd3 | David Lawrence Ramsey | 2024-02-17 15:27:32 -0600 Officially deprecate Hill Orcs in YAML. -------------------------------------------------------------------------------- 2c85d38dee | David Lawrence Ramsey | 2024-02-17 15:27:32 -0600 Switch Lua mutation test from HO to DE (#3551). Since DE don't have any mutations, and HO are now deprecated. Suggested by wheals. Closes #3551. -------------------------------------------------------------------------------- f317980e7c | David Lawrence Ramsey | 2024-02-17 15:27:32 -0600 Properly #ifdef out one last Hill Orc reference. -------------------------------------------------------------------------------- b72868ee7c | David Lawrence Ramsey | 2024-02-17 08:31:08 -0600 Add more god-related names to artefacts. -------------------------------------------------------------------------------- c6a9d31ccb | elliptic | 2024-02-17 03:00:42 -0500 Remove an outdated note about boomerangs not returning (SentientSupper) -------------------------------------------------------------------------------- 4f4d228785 | David Lawrence Ramsey | 2024-02-16 20:59:48 -0600 Consistently rename deprecated species' YAML. All of them now start with "deprecated-". Hill Orcs are untouched for now. -------------------------------------------------------------------------------- 3b6c037139 | David Lawrence Ramsey | 2024-02-16 20:26:12 -0600 Move species' orc names to YAML. Humans are the only ones who don't get a specific orc name, and so default to "Orc". Demigods get "Buggy Orc", since they shouldn't be able to worship Beogh in the first place. All the obsolete species get orc names, too. (Deep Dwarf is Deep Dworc because Deep Orc is already used for Deep Elf.) Also update documentation. -------------------------------------------------------------------------------- c80224b05e | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Revive minmay's old "Brilliance" vault, adjusted. It's now guarded by profane servitors instead of angels/daevas; if "Brilliance" has already been generated, it'll now generate a randart eveningstar of draining, pain, or vampirism instead of holy wrath; and the item it generates no longer has the obsolete not_cursed property. This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8. -------------------------------------------------------------------------------- c85c4ccd42 | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Revive "Brilliance" with the foul flame brand. Change its brand from holy wrath to foul flame, change its colour from ETC_HOLY to ETC_FOUL_FLAME, drop its other qualities aside from its +1 enchantment, give it its old halo back, and rewrite its description to add some lore about its corruption and the origin of the foul flame brand. This partially reverts commit 20c470eb4851b751f159898c8d60758f7ae9a1b8. -------------------------------------------------------------------------------- 7dcfd5f6c4 | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Revive and rename an old elemental colour. Put the colours of ETC_SHINING back in, and rename it ETC_FOUL_FLAME. Its colours are bright enough to use for the foul flame brand. This partially reverts commit 4071159e5c0962697a6c6eb0299a3d1e46caf787. -------------------------------------------------------------------------------- 953bdd34fd | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame to chaos effects, rarely. Its unpredictability is fitting for chaos, and only a few monsters with demonic holiness currently have the chaos attack flavour. -------------------------------------------------------------------------------- 26e6efbaab | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame weapon attacks to Pan lords, rarely. -------------------------------------------------------------------------------- 2ccd7fcaca | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame melee attack weapon and flavour for monsters. Currently, the former's brand is banned from actual weapons; it's only for monster attacks that are treated as weapons. However, all the code needed to put it on weapons is in place. Also, update the monster bot to account for foul flame attacks and resistance. -------------------------------------------------------------------------------- 3bb25885a7 | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame melee attack for players. This is tied to the glowing mutation (you glow with foul flame). It triggers on attacks, similarly to the foul stench melee attack. Its functions are also modeled after those in emit_foul_stench(). -------------------------------------------------------------------------------- c1e5129a55 | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Add foul flame. It's basically inverse cleansing flame: undead/demons take less damage, and holies and good god worshippers take extra damage. -------------------------------------------------------------------------------- 9a4668d5da | David Lawrence Ramsey | 2024-02-16 19:05:06 -0600 Rework glowing mutation into foul glow mutation. Turn it into a 3-level mutation, move it to tier 3 demonspawn mutations, mark it as good, and change its messages and description accordingly. Meteorans still keep 1 level of it, even though its nature has changed. Also add placeholder tiles for it: palette swaps of the old Darkness spell tile from UNUSED/gui. -------------------------------------------------------------------------------- 5eddc7eabd | DracoOmega | 2024-02-16 19:40:26 -0330 Fix Animate Dead zombies remaining after floor change Also broken by 0a82c8690a01462b55615d2cbd8e7497dc3b9d6c but appeared to be working correctly because of the bug fixed by 213d36726f0033a8e4beb488114cccfd39a8a707 -------------------------------------------------------------------------------- 4f8ebfe289 | Andrew O'Neill | 2024-02-16 15:08:30 -0600 Finish removing CMD_TOGGLE_TRAVEL_SPEED This removes the CMD_TOGGLE_TRAVEL_SPEED from colemak keybindings and keybind help. -------------------------------------------------------------------------------- 4ea16c4597 | David Lawrence Ramsey | 2024-02-16 14:14:05 -0600 Fix punctuation. -------------------------------------------------------------------------------- b00bd655f3 | DracoOmega | 2024-02-16 16:29:32 -0330 Nerf Light the Black torch at low piety While I am fine with Yred being a god that offers a quicker early power spike than most gods, it felt a bit TOO much - especially if the player finds an early faded altar. Light the Torch now only provides allies upon reaching 1*, and the ally tables have been adjusted slightly so wights (and especially groups of wights) will be less common at very low piety/xl. A few other things have also been nudged here or there. -------------------------------------------------------------------------------- 652cfa06da | David Lawrence Ramsey | 2024-02-16 13:34:33 -0600 Tweak punctuation. -------------------------------------------------------------------------------- e323ee73c6 | David Lawrence Ramsey | 2024-02-16 13:31:32 -0600 Fix typo. -------------------------------------------------------------------------------- 90474121c3 | David Lawrence Ramsey | 2024-02-16 13:29:07 -0600 Update species_creation.md for child_name. -------------------------------------------------------------------------------- 42642787d0 | DracoOmega | 2024-02-16 14:55:05 -0330 Unbreak telling allies to guard an area This was broken by 0a82c8690a01462b55615d2cbd8e7497dc3b9d6c changing the LoS check for allies to return to you from 'Does this ally currently have LoS to the player' to 'Does this ally ever need LoS to the player to attack', resulting in all perma-allies attempting to return to the player every single turn - whether they could see you or not. I've also carved out an additional exception to not return to you if you told them to guard an area, since this is probably what the player wants in that case. Additionally, telling allies to follow you, or recalling them, should fully end their travel behaviour. (Previously - and unrelated to the linked commit - telling them to guard an area after you'd previously told them to guard a different area would often result in them trying to run back to the first one or something outright being stuck in place, since they would still be trying to use pathfinding info from the previous time they did pathfinding) I am 100% positive travel_path is still not being cleared in all situations that it should be, so it's possible that the minor change in _handle_monster_travelling will uncover some additional bugs, but the code currently seems to assume that the monster's target will be travel_path[0], if it's travelling, and thus if anything sets its target directly, it can cause it to perpetually freeze in place by assuming it's moving to its next waypoint when it's not actually moving anywhere at all. Probably better to find any other bugs as they come up rather than leave this one here. (Probably better to refactor a lot of monster movement / behaviour code, but HOO BOY is that a tall ask...) -------------------------------------------------------------------------------- eb24b2cc03 | David Lawrence Ramsey | 2024-02-16 11:37:55 -0600 Flag non-mundane starting items as such (#3548). So that they get the proper tiles for branded/enchanted items. Closes #3548. -------------------------------------------------------------------------------- 213d36726f | DracoOmega | 2024-02-16 05:03:32 -0330 Fix Animate Dead zombies being temporary (CarefulOdds) Accidentally broken by 0a82c8690a01462b55615d2cbd8e7497dc3b9d6c Sorry! -------------------------------------------------------------------------------- e6c31236d6 | David Lawrence Ramsey | 2024-02-16 00:57:03 -0600 Fix god speech substitution syntax (#3545). The speech databases use @this@ instead of . Closes #3545. -------------------------------------------------------------------------------- d8048dd28f | DracoOmega | 2024-02-15 20:47:36 -0330 Fix Electrolunge cast message -------------------------------------------------------------------------------- d58f893b0d | DracoOmega | 2024-02-15 19:55:40 -0330 Prevent using Tukima's on apostles (Darby) Even though apostles and their bands were MF_HARD_RESET (and thus don't drop items), it was still possible to animate their weapons and then kill them to gain a copy yourself. You could even do this repeatedly (if you were willing to upset Beogh) to a friendly apostle, who would return from abandoning you with a fresh copy of their weapon. I could theoretically just have made their gear count as summoned, but that still leaves the problem of using Tukima's *before* you recruit them and then leaving them forever without any weapon. It seems unfun to let players trap themselves like that, so let's just ban casting it on them. -------------------------------------------------------------------------------- bb23cca24c | DracoOmega | 2024-02-15 19:55:40 -0330 Don't allow binding souls of phantom reflections (Darby) -------------------------------------------------------------------------------- 295baea383 | DracoOmega | 2024-02-15 19:55:40 -0330 Don't transit monsters marked as followers Normally when entering a floor, followers (ie: things taking the stairs with you) are placed before transiting monsters (ie: things that fell down a shaft earlier or were banished). But Abyss generation could place transiting monsters (sometimes multiple times?) before the normal call to place followers. Followers are placed near the player, while transiting monsters are placed anywhere, so this could result in player allies seeming to disappear when you stepped through an Abyss portal. This also had the unfortunate side-effect of not updating the companion list properly, so let's try to prevent it. but transiting monsters placed randomly on the floor. -------------------------------------------------------------------------------- a2df31511f | DracoOmega | 2024-02-15 19:55:40 -0330 Fix bound souls being saved to the companion list as hostile This was seemingly always the case, but usually not noticable as each level transit would update the saved copy (with the real, friendly one). But in some cases where a soul didn't transit properly and was recalled, it would be recalled as hostile and remain hostile forever afterward - even after being repeatedly killed! (It was theoretically even possible to farm unlimited items off a bound soul this way, by recalling and killing it over and over again) -------------------------------------------------------------------------------- 9b00542b0a | DracoOmega | 2024-02-15 19:55:40 -0330 Fix dactions that could cause Ancestors/Bound Souls to incorrectly die Because entering a new floor causes all dactions from the entire game's history to fire (see 063869c3723e ), the dactions for losing your Hep ancestor (due to piety loss/excommunication) or bound soul (due to binding a new one) could happen repeatedly. This usually did nothing, but in the Abyss in particular could cause them to simply die - a minor nuissance for an ancestor, but a permanent mysterious loss for a bound soul. Now we try to be a bit more picky about whether we actually kill something with this daction: check that the player still doesn't qualify for an ancestor, or that the bound soul we're trying to remove isn't the player's current companion. -------------------------------------------------------------------------------- 4bb08483cd | DracoOmega | 2024-02-15 19:55:40 -0330 Make companion_is_elsewhere lie less Companion_is_elsewhere relied on a manually updated list of what floor each companion was supposed to be on. This was normally pretty reliable, but there were a few cases (the Abyss in particular) where the list could THINK they were there, but were not (eg: because the map was regenerated since the player was last there) Some results of this: -Being unable to recall followers that the game THOUGHT were on the floor with you, but were not -A particularly troublesome bug where old dactions to upgrade a Hep ancestor would incorrectly think the ancestor was on the current floor (since it wasn't 'elsewhere'!) and then try to change its weapon. Except, since it was referring to a monster that wasn't REALLY on the floor, trying to access its weapon would point to a random (probably undefined) item on the floor's item list instead. Tinkering with this could create various forms of buggy item to appear and crash the game. Now, since we know we can't 100% trust the cached list, whenever the list thinks a companion is on our current floor, we double-check that it actually is. And if it is not, set its location to an invalid floor (since it's currently effectively 'nowhere') This should fix both above bugs and possibly some others. -------------------------------------------------------------------------------- 51ccb66acf | DracoOmega | 2024-02-15 19:55:39 -0330 Fix apostles being returned to you in the middle of AoE (Darby) If a kill during the earlier part of an AoE attack generated enough piety to end Beogh penance, Beogh would return your apostles to you in the middle of that attack, which could then hit them and immediately re-penance you. Make this a fineff as well. -------------------------------------------------------------------------------- 7eccf60f97 | DracoOmega | 2024-02-15 19:55:39 -0330 Preserve Beogh vengeance markers through polymorph (Oneirical) -------------------------------------------------------------------------------- 9c5f7be1a3 | DracoOmega | 2024-02-15 19:55:39 -0330 Remove Passwall armour bonus if the spell is interrupt eg: by being trampled in the middle of it. This fixes #3543 -------------------------------------------------------------------------------- e39a69d6b2 | regret-index | 2024-02-15 19:44:18 -0330 Cut another necrophage use, mildly nerf them to nerf Yred Forgot to remove necrophages from ghoul bands when I cut them from vaults in e446cd8. Bog bodies take up their weight entirely, so minimum and maximum ghoul band size has been reduced in exchange. Very early Yred is quite strong due to the many benefits at 0* needed to make the new piety gain restrictions work. Since necrophages solely exist for the bottom of Yred's raised Black Torch summons now, they can be a little weaker in both damage and health to make the snowballing a little harder at the earliest XLs working with Yred. -------------------------------------------------------------------------------- 5942d1eb2b | regret-index | 2024-02-15 19:44:17 -0330 Adjust Zig set scaling a little more Emphasize spriggan druids in Lair floors a little less, scale Tomb / Pan / Fire floors a little harder, let the non-Tar hells at the higher ends emphasize a little more of the selected monsters, and screw with some experimental quadratic scaling for Air (titans) and Earth (hell sentinels and iron giants). Further steps still need to be taken, but this continues to be a very quick way to continue to adjust megazigging. -------------------------------------------------------------------------------- b3a183b876 | regret-index | 2024-02-15 19:44:17 -0330 New decorations: sacred lotuses The opposite of demonic plants in multiple ways, sacred lotuses are holy water-bound plants that don't wither away and have sturdiness even beyond bushes. They provide some additional decorative plants of a more notable nature than the old proliferation of trees and plants themselves, and are meant to only be used in very sparing pillars and sides rather than potential blockades like most other non-hostile plants are delegated to. They're used in vaults for Elyvilon (as symbols of longevity), Fedhas (as a revered plant), and the Wu Jian Council (as a symbol of elegance and grace). In particular, the first of those provides a little more fanciness for holy themed vaults, which focus heavily on wall and statue retiling due to the rather limited breadth one can use holies when compared to the wide variety of potential unholy themes. It can also provide a little bit of fanciness to the very watery, plant-filled branches of Swamp and Shoals. They use the old thorn lotus tile by snw-0. -------------------------------------------------------------------------------- 65e31ca853 | regret-index | 2024-02-15 19:44:17 -0330 Burning bush -> scrub nettle (monkooky) There's been some concerns with the increase of decorations that some non-decorative monsters shouldn't be confusable with decorative features. Burning bushes, those weird biblical jokes, fall directly under this concern. A regular bush can already be set on fire and use the same tile as the other enemy in question without suddenly picking up the ability to shoot 3d9+ Throw Flame. They're only used in one sprint, one vault's configuration for one branch, and by Fedhas's Overgrow ability, so modifying them into something a bit less confusable should address this without upsetting balance too much. The new scrub nettle is an Australian nettle, mildly enhanced in the way dart slugs and bombardier beetles are. It uses Sting over the burning bush Throw Flame, which gives them a partially irresistable attack that actually scales notably directly with one's Invocations skill (since orc apostles can get the spell for a while anyway). In exchange, the resistance is vastly more common, they're lower HD / HP to start with, and Sting only has a range of 4 instead of 7 (not that this is any more awkward as an ally than the wandering mushrooms the ability already grants). This probably doesn't upset Fedhas balance too much- Overgrow is very expensive and used for terrain-manipulation as much as it is for turret and mushroom support. We could look into invocations not granting such a high ratio of invo skill versus HD _every_ plant Fedhas uses, if needed. It might be useful in the right heavily-constrained portal, as a introductory baby immobile in a context of Sewers already occasionally having strange numbers of plants. If the name is somewhat questioned for not seeming threatening while the bulk of immotile plants aren't, it can use the far more direct name of "stinging nettle" instead. Their placeholder tile is a deeply silly mix of the original rltiles spiny worm, the first tile for porcupines by Malwyn, and an unused "poison pollen" plant tile from wad left in UNUSED for twelve years. (If these don't work out, it might be possible to set a different plant on fire instead of bushes, or maybe make a monster that's the base for a solitary snaplasher vine to reach out?) -------------------------------------------------------------------------------- 526f7d4993 | gammafunk | 2024-02-14 20:35:28 -0600 fix: Walls in a ghost vault (EnegeticOcto) For gammafunk_ghost_abyssal_escape, it recently got the preserve_wall tag added due to its use of rock in its internal layout. Unfortunately, when this tag is present, the Vaults layout seems to replace stone wall with rock wall at some point. Until we can figure out how to fix this, have this vault only use metal and crystal for its random walls. -------------------------------------------------------------------------------- 5e32175d1f | David Lawrence Ramsey | 2024-02-14 19:00:26 -0600 Fix duplicate comment. -------------------------------------------------------------------------------- 1d7162e751 | Nicholas Feinberg | 2024-02-14 12:18:29 -0800 Fix: felids can't wield artefact weapons Broken in 4224600aead45df7c84102127e7103837e200c84. -------------------------------------------------------------------------------- 91ca388d19 | Nicholas Feinberg | 2024-02-14 12:15:14 -0800 Fix dwarven adjectives (Lici) -------------------------------------------------------------------------------- cdbe0f7f08 | DracoOmega | 2024-02-14 15:11:03 -0330 Fix one overlooked thing from the previous commit It's not clear that the source pos ever really did anything here anyway, as a frenzied monster will immediately pick a different nearby target regardless. -------------------------------------------------------------------------------- cc65242e2a | DracoOmega | 2024-02-14 15:08:38 -0330 Slightly refactor chaos_affect_defender to fix a couple of bugs Chaos_affect_defender was a member of attack, and was used for chaos-branded weapons, but it was ALSO used for chaos clouds. And this meant that clouds had to construct a fake attack just to call it. This had the consequence that there always had to be an 'attacker'. Since clouds often have no agent, the game defaulted to having the 'attacker' be the actor standing in the cloud. This was capable of causing penance in the following way. A friendly monster steps into the cloud and gets confused by it. Since they are the 'attacker' for this chaos effect, they count as having been confused by a player-friendly source for purposes of blame tracking. (This is how the player gets credited for kills done by monsters they confused). But then when this confused monster triggers the cloud again, because the source of the chaos effect (ie: themselves) was confused 'by you', YOU are considered the source of the new debuff they recieve, which counts as you attacking them yourself, as far as the good gods and Beogh are concerned. I have pulled chaos_affects_defender out attacks entirely. Now it is chaos_affects_actor() and the source is optional. It should otherwise operate basically the same as it did prevously, aside from fixing an additional bug where web effects from a chaos weapon incorrectly re-applied the damage that attack did and produced weird messages. (Note: I wasn't sure what file to put this in, so it's ended up in clouds.cc. If someone feels strongly, they could put it somewhere else, I guess) -------------------------------------------------------------------------------- 94eecf844d | DracoOmega | 2024-02-14 13:15:26 -0330 Fix Yred giving the wrong number of torch charges (Darby) I am not sure how in the world I missed those elses. But also, it turns out I missed a function that would have let me write this in a less dumb way in the first place. Whoops. -------------------------------------------------------------------------------- bc685e0f5f | patrick | 2024-02-14 11:38:59 -0500 Fix up randbook.txt The comment says that the headers for multi-spell books need to have the spell schools in alphabetical order, which was broken when Alchemy was invented. No doubt this ruined untold numbers of games. -------------------------------------------------------------------------------- fed3edf829 | Nicholas Feinberg | 2024-02-13 22:01:15 -0800 Fix an || -------------------------------------------------------------------------------- cc768c7156 | Nicholas Feinberg | 2024-02-13 21:53:56 -0800 Fix Mountain Dwarf titles (particleface) -------------------------------------------------------------------------------- 028c0f8d43 | David Lawrence Ramsey | 2024-02-13 23:01:57 -0600 Checkwhite -------------------------------------------------------------------------------- 8574905f7e | DracoOmega | 2024-02-14 01:23:09 -0330 Don't let friendly monsters use manifold assault on targets you can't see -------------------------------------------------------------------------------- 6c3d6ff0d8 | DracoOmega | 2024-02-14 01:23:09 -0330 Don't mark your own apostles for vengeance (Oneirical) Even if they *did* kill your other apostles in a momentary act of blind frenzy >.> -------------------------------------------------------------------------------- fa6ab80fcc | DracoOmega | 2024-02-14 01:23:09 -0330 Clear apostle list on game start To keep from bringing apostles from a past game into a future one. This fixes #3534 and #3533 -------------------------------------------------------------------------------- 409ee8c19d | DracoOmega | 2024-02-14 01:23:09 -0330 Reroll apostle names to avoid the player ever having two identical names Make sure that any apostle challenge does not share a name with any of the apostles the player already has, to avoid the confusing situation of having two of them named the same thing. Also remove some unneeded (or outright incorrect) code from give_monster_proper_name -------------------------------------------------------------------------------- fced3f9c7c | regret-index | 2024-02-13 22:55:30 -0330 New formless jellyfish tile (CanOfWorms) A quite pretty new tile, really. (The state of formless jellyfish themselves seems to be roughly fine after quite a few buffs since their original implementation, but they still are a very strange fit for V as a branch. Possibly they could be trimmed from such and emphasized a little more in Shoals and Slime as they mechanically and thematically fit, much more than somewhere also very close to Depths's and Crypt's vampire knights, after V gets more monsters in the future?) -------------------------------------------------------------------------------- e446cd8fad | regret-index | 2024-02-13 22:44:01 -0330 Vault review again again Header cleaning, set variety increasing, early decoration overuse reducing, later decoration use increasing, slight twitches of end balance, so on, and so forth. Of note: * Permanent bazaars no longer spawn- all bazaars are now timed. The chance for bazaars and bazaars alone confused people who haven't seen lots of them (as it's a low overall chance) into thinking they'd be portals one can revisit past the first trip. With the multitude of customized shop vaults also providing a lot more interest to shops these days, there's not too much pressure on bazaars * Necrophages have been trimmed out of vaults. Ever since rot and drain become intertwined, they don't really have any mechanical distinction beyond being an even earlier form of wight. A variety of other low-level undead fill their slots, depending on the vaults in question. I'm not removing them outright quite yet due to early Yred's xl scaling rather relying on them being present: it'd be good long-term to have a replacement for multiple early undead with their own distinguishing mechanics. Weeping skulls and giving misery protection the way we do for revenants and spectral flames might be of some use, but I'm wary of those appearing too often as is. (Maybe we could use some fixed skeleton types instead?...) * david_glass_crypt always places dread liches now, so one can't use a variety of smiting means to safely wear down any lich combinations that otherwise can't attack through the grates. It also finally places pressure plates under the tiles that will free the liches, so there's far less spoilers attached to the vault. * A few appropriately-air-themed Zot vaults that don't contain all of the downstairs or all of the upstairs now place storm talismans, regularly over the lightning rods that'd be found earlier by that point. We're already handing out level 9 spells in Zot vault rewards anyway, and it's not exactly solving Zot:5 compared to playing well enough there. -------------------------------------------------------------------------------- b47861556a | regret-index | 2024-02-13 22:44:00 -0330 Make exactly one type of fountain not count as a watery feature (elliptic) With the multitude of different decoration types added and upcoming, there is a need for more consistency between them, and regular fountains were tracked as water for a variety of mechanics while sparkling fountains did not. Fire projectiles could make steam, sufficiently strong cold projectiles could make freezing clouds, and while no vaults nor level gen itself use it nor should use it these days, technically electric eels or entire krakens could fit in a fountain. The clouds are narrow mechanical interactions (since fountains themselves aren't that common) that don't need to serve as player traps, while eels work better in actual bodies of water and krakens shouldn't fit in fountains anyway. (There's also putting out sticky flame, and the loss of that is a little sad, but also the walk to a fountain would potentially put it out before even getting to the fountain anyway. This also cuts some Waterstrike and Shoals tide interactions, but Shoals doesn't exactly need fountains to provide water there.) Fountains now consistantly just count as floor for all intents and purposes. This also removes feat_is_watery(), since it is entirely redundant with feat_is_water(). (I might consider flavour messages for walking over them in the future with an rc setting to potentially mute such, in the same vein as another planned feature, but it should probably be tested on those first.) -------------------------------------------------------------------------------- bfd232f637 | DracoOmega | 2024-02-13 22:18:27 -0330 Fix apostles still getting player Vhi's instead of monster Vhi's Seems to have gotten messed up in the rebase to master. -------------------------------------------------------------------------------- 33d090a6ea | David Lawrence Ramsey | 2024-02-13 17:37:04 -0600 Fix spelling. -------------------------------------------------------------------------------- d28b14363d | DracoOmega | 2024-02-13 19:40:15 -0330 Charge artefact text to account for Mountain Dwarf ability (ge0ff) Now it can also be a little more specific about not working on unrands, too. -------------------------------------------------------------------------------- 817a28345e | DracoOmega | 2024-02-13 19:39:06 -0330 Fix hostiles beyond able to follow the player through portals (various) This was broken by 71bd2ada001b which was only intended to let you take FRIENDLIES with you, rather than losing the old enemy avoidance behaviour. (It's possible this was responsible for a bug that caused multiple monsters to follow the player into the arena after using Okawaru's Duel ability, but I've not been able to reproduce that myself.) -------------------------------------------------------------------------------- 751ec8d2e7 | David Lawrence Ramsey | 2024-02-13 14:22:11 -0600 Tweak punctuation. -------------------------------------------------------------------------------- fdec872538 | elliptic | 2024-02-13 12:13:10 -0500 Fix reversed logic for octopode offhand punches It gave offhand punch with shield to all non-octopodes instead. -------------------------------------------------------------------------------- 598725c5f2 | DracoOmega | 2024-02-12 18:28:39 -0330 Don't fire god conducts for allies banishing enemies -------------------------------------------------------------------------------- 0af507d5f7 | DracoOmega | 2024-02-12 17:51:53 -0330 Actually fix that on UNmarshall instead of marshall That's what I get for rushing... -------------------------------------------------------------------------------- c1aaa98db6 | DracoOmega | 2024-02-12 17:41:42 -0330 Fix a crash with rescaling damage_friendly Now that damage_friendly is no longer DOUBLE the friendly damage done to a monster, and assert could be tripped if a save file with a damaged monster was upgraded and that monster was killed. -------------------------------------------------------------------------------- 3a0b63c28c | David Lawrence Ramsey | 2024-02-12 13:16:50 -0600 Fix wording. -------------------------------------------------------------------------------- 710106c67f | DracoOmega | 2024-02-12 13:31:48 -0330 Checkwhite Of course, the original branch was fine and I never thought to run it for the one new file upon rebase >.> -------------------------------------------------------------------------------- 900342706a | DracoOmega | 2024-02-12 13:00:38 -0330 Fix typoes (Oneirical) -------------------------------------------------------------------------------- 7083e1d292 | DracoOmega | 2024-02-12 13:00:38 -0330 Fix Beogh conversion HP thresholds (Oneirical) -------------------------------------------------------------------------------- 4c96c8b02c | DracoOmega | 2024-02-12 13:00:38 -0330 Give Recall Apostles at *1 instead of *3, adjust keybinds The player cannot *get* apostles until 3*, but it felt awkward for smiting to sometimes remove the ability of the player to call existing apostles between levels. Now the player gets it at 1* (but the ability will be hidden if they have not recruited any yet) Also adjust internal ordering so the default keybind for recall and smite aren't so weird. -------------------------------------------------------------------------------- d26a540e39 | DracoOmega | 2024-02-12 13:00:37 -0330 Adjust Mennas's description To account for new Orcish flavor -------------------------------------------------------------------------------- f263e331dc | DracoOmega | 2024-02-12 13:00:37 -0330 Cosmetic orcification Beogh worshippers now get a fake-mutation at 3* to indicate their orcish physical features growing in. This has custom messages to try and account for different species physiology. (I didn't make this a real mutation since I think it should ignore most things that would affect that and then it would need different message overrides for different species, etc.) This mutation remains if the player stops worshipping Beogh, but if they then worship Zin, Zin will cleanse it from them! -------------------------------------------------------------------------------- 28f58e91f7 | DracoOmega | 2024-02-12 13:00:37 -0330 Unbreak orcish follower speech, adjust some lines The code was still only giving special 'orcish' lines for followers and Beogh worshippers if you were a Hill Orc, so a huge number of speech lines could never be seen. Beogh worshippers will now always qualify as 'related' and I have edited a handful of speech lines for things that now feel out of theme (or otherwise imply that random orcs follow you, as opposed to leave you along). I also reduced the huge negative weight to allies orcs speaking, since there are now far, far fewer of them. This is far from a comprehensive dialogue pass, but should still improve things. -------------------------------------------------------------------------------- 8bc2e63c94 | DracoOmega | 2024-02-12 13:00:37 -0330 Remove a leftover from ally kills giving 1/2 XP Monsters internally track damage done to them in two categories: damage that will give the player XP, and damage that won't (ie: walking through natural clouds or being caught in the blast of another non-confused enemy). Because player allies used to give 1/2 XP, the 'XP-granting damage' value multiplied all player damage by two (since it was 'twice as good as ally damage') and did math with this basis. I have simplified this to just use a standard 1-to-1 ratio in all cases. (This incidentally fixes a bug where allies that banished enemies would grant no XP for the banishment at all) -------------------------------------------------------------------------------- a99f5f2d08 | DracoOmega | 2024-02-12 13:00:37 -0330 Fix Beogh conversion not being offered after abandoning your god Due to how the level caches whether there is a possible conversion offer on the floor upon first seeing an individual priest, if you weren't an atheist then, they will never offer it until you leave the floor and come back. (Also raise the HP threshold required for conversion to be offered to 2/3 instead of 1/2) -------------------------------------------------------------------------------- 977514b4d7 | David Lawrence Ramsey | 2024-02-12 13:00:37 -0330 Adjust descriptions of gnolls and ogres. Since orcs aren't really a species anymore, they can't be relatives, but can still be friends. -------------------------------------------------------------------------------- 4d81122c55 | David Lawrence Ramsey | 2024-02-12 13:00:37 -0330 Update the Torch status for unlit and lit states. -------------------------------------------------------------------------------- 13f15799a3 | DracoOmega | 2024-02-12 13:00:37 -0330 Properly warn Beogh players when attacking while confused near apostles This seems to have gotten broken when I made apostles themselves not get angry when attacked (since them ever being hostile messed a number of things up), but this made the warning logic no longer care that BEOGH would still get upset. Now it checks whether the monster can be angered *inside* bad_attack, which seems a more logical place for it to be anyway? -------------------------------------------------------------------------------- 90196dfee5 | DracoOmega | 2024-02-12 13:00:37 -0330 Note in the log when the player recruits an apostle -------------------------------------------------------------------------------- 5325a588fe | DracoOmega | 2024-02-12 13:00:37 -0330 Fix binding The Royal Jelly's soul not opening the vault Since Bind Soul actually *prevents* the monster's death internally (despite what the flavor looks like...), a bunch of death triggers don't happen and this was the most noteworthy one. Now binding a soul will immediately fire some death triggers. I'm... not 100% happy with this; I can't help but wonder if other death-related things should also be being process when binding a soul, but I've also not seen other specific complaints (and there's awkwardness with having the original simply die, since the bound soul needs to inherit their equipment...) -------------------------------------------------------------------------------- f359be642f | DracoOmega | 2024-02-12 13:00:36 -0330 Add ability icons for dismiss/recruit apostle (and repurpose one for BfB) The dismiss apostle icon even changes its appearance based on whether the apostle is currently alive or dead! -------------------------------------------------------------------------------- b88b685d91 | DracoOmega | 2024-02-12 13:00:36 -0330 Fix low power warriors accidentally getting throwing weapons -------------------------------------------------------------------------------- 58a3cf78d1 | DracoOmega | 2024-02-12 13:00:36 -0330 Rewrite backend handling of the player's apostles and their state The original version of this used a whole lot of different props (and even assembled some prop keys via a prefix and the monster's mid) and was generally a little unwieldy (even if it did work). I have converted this over to using a small data structure specifically for tracking apostle state. This generally simplifies code and will probably provide future benefits. It also allows me to track a 'vengeance contribution' for each individual apostle the player has, which I am using to adjust the revival formula yet again to fix a few weird cases (eg: dismissed apostles would still contribute a vengeance bonus upon vegeance completion, and the way piety needed was capped could cause 3 deaths to be cheaper than 2). **THIS WILL BREAK SAVES WORSHIPPING BEOGH PRIOR TO THIS POINT** Or rather, players with Beogh exprimental saves that upgrade to this version will probably lose the ability to revive apostles they have, and other things may go wrong. But this way, things on the backend should be better by the time we merge with trunk. I have tested most of the interactions affected by this change, but have no confidence I have squashed 100% of the bugs. It was tricky to set up in the first place, so we'll have to see if people find more of them.... -------------------------------------------------------------------------------- 0768ad7e14 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Adjust Yred nonliving death msg. Since the black torch is now explicitly powered by souls, not bodies. -------------------------------------------------------------------------------- 62e296f0d0 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix spelling. -------------------------------------------------------------------------------- 2336e41e9f | DracoOmega | 2024-02-12 13:00:36 -0330 Leave allies behind when taking transporters without room to place them The current behaviour when taking a transporter is that the game tries to place all monsters coming with you near the player, and then if there is not enough room for them, to place them anywhere else in the level. In some rare situations this has awkward effects: for instance, if there isn't room to place followers after a Gauntlet transporter, those followers can be placed in inaccessible bubbles of the Gauntlet instead. This is especially bad for Beogh worshippers, as it can lead to their apostles immediately dying in ways you will never be able to avenge. Instead, if there is no room to place a friendly follower near you, simply leave them behind. Note: a similar thing happens when travelling across stairs, and while it also makes sense not to have elevator vaults teleport allies across a floor, I don't think it is safe to do so in this case; we cannot choose to leave a creature behind at its original location because that floor is already unloaded - they would simply cease to exist entirely. -------------------------------------------------------------------------------- d0523255b2 | DracoOmega | 2024-02-12 13:00:36 -0330 Fix a typo (Oneirical) -------------------------------------------------------------------------------- 20b91082ab | DracoOmega | 2024-02-12 13:00:36 -0330 Try to prevent wizard apostles from shoving warrior apostles out of melee Since wizard apostles often have higher HD than warriors (for spell damage purposes), they will happily shove warriors out of the way to get in melee of enemies instead. This feels fairly bad and hurts their utility. Instead, try to make warriors take frontline priority over all other apostle types. -------------------------------------------------------------------------------- 1a7d3d2297 | DracoOmega | 2024-02-12 13:00:36 -0330 Fix a few Yred Light the Torch interactions You can now use the torch on more than a single Pan floor per game and cannot light the torch in Abyss at all. -------------------------------------------------------------------------------- ee83b44df3 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix wording. -------------------------------------------------------------------------------- a9ae0c87c7 | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix typo. -------------------------------------------------------------------------------- a0f32581da | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix capitalisation. -------------------------------------------------------------------------------- c1e9edfe0b | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Add missing Torch status description. -------------------------------------------------------------------------------- 9b2ac7c21b | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix wording. -------------------------------------------------------------------------------- 97a3dcafad | David Lawrence Ramsey | 2024-02-12 13:00:36 -0330 Fix typo. -------------------------------------------------------------------------------- 63503779cc | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Checkwhite -------------------------------------------------------------------------------- 238c146a84 | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Re-add lost typo fix. -------------------------------------------------------------------------------- 7dfd7e7624 | DracoOmega | 2024-02-12 13:00:35 -0330 Print a reminder when you kill things with Yred without a lit torch So long as your torch *could* still be lit on that floor, but was not. A couple people said this might help with sometimes forgetting to do so, and hopefully make it clearer to new players how the god works currently. -------------------------------------------------------------------------------- 4ed34f77cf | DracoOmega | 2024-02-12 13:00:35 -0330 Prevent shafting when Yred's torch is lit In practice, I think this wasn't *really* a balance concern, but enough people seemed to find that it felt bad that I don't think it's important to preserve either. -------------------------------------------------------------------------------- 131f71961a | DracoOmega | 2024-02-12 13:00:35 -0330 Remove Yred piety bonus for mostly-cleared floors This bonus was extremely small in practice (only +~1.5 extra piety for clearing 91% instead of 66%) but multiple players assumed it was larger and warped some of their play decisions around it. This isn't a desired effect, so I'm simply removing the bonus entirely (but leaving the flavor messages) If this somehow proves on overly meaningful nerf to Yred's overall piety gain, we can tweak it up in another way. -------------------------------------------------------------------------------- 9c8e3d14eb | DracoOmega | 2024-02-12 13:00:35 -0330 Replace Hill Orcs with Mountain Dwarves Now that Beogh allows worship from any species, it's been broadly agreed to replace Hill Orcs with some sort of dwarf. I'm not married to the specific name (and other people seem to care more about this), but we can go with this at least for now. Mountain Dwarves are intended to fill a similar role to the Hill Orc species they are replacing - strong heavy-armor fighters who are noticably better at casting than their Minotaur cousins (even if still middling at it in several regards). I want to lean a little harder into them being especially suited for heavy-armour casting. As such, they innately get 1/2 ER from their armour for purposes of spellcasting (but not for EV). They retain HO's noteworthy +3 invo, while also offering the first Fire Apt above +1 in the game (which old Mountain Dwarves also shared, for what it's worth). There have been numerous suggestions for an additional simple gimmicks, but I'm interested in trying out this one: unlike any other species, their cultural history as artisans for the gods lets them use enchant weapon/armour scrolls to improve randarts. They cannot improve them above the level that a mundane item of the same type could be improved, and cannot affect unrandarts at all (which are conveniently a different color these days, for clarity!). I am hoping that this gives them uniquely interesting decisions over which items to wear in a way that is different from other species without being too obtrusive about it. Capping things to normal item plusses means they still can't make items stronger than randart high-rolls already could, though it obviously increases their consistency at finding such. -------------------------------------------------------------------------------- 8b4507520a | DracoOmega | 2024-02-12 13:00:35 -0330 Tweak apostles again -Give them missing See Invis. -Improve wizards' chance for a ring (and limit it to ring types that will actually do something helpful for them). -Make better heavy armor types a bit less rare. -Adjust warrior spell lists, moving the level range of Might upward and making several other spells more common and/or available earlier. -------------------------------------------------------------------------------- 4ae1c6de6b | DracoOmega | 2024-02-12 13:00:35 -0330 Remove Touch of Beogh's effect on spell HD I've been slightly concerned this contributes to some overly dangerous early encounters, but also there's currently no good way to indicate HOW enhanced the spell damage of early wizards is. Maybe this nerfs them too much later in the game, but who knows? (Touch of Beogh retains the improved cast rate part of Brilliance) -------------------------------------------------------------------------------- 4addfe49e4 | DracoOmega | 2024-02-12 13:00:35 -0330 Let orc apostles walk on water Or something close enough to it, anyway. They basically count as amphibious in all ways, aside from being drawn on top of water, not resisting drowning, and having different xv lines. The code for this feels slightly hacky, but is minimal and localized, so probably fine. Swamp and Shouls have continued to be awkward enough for Beogh worshippers that I think it's mechanically important to do this (and the flavor fits!) -------------------------------------------------------------------------------- 8f7c6c806a | DracoOmega | 2024-02-12 13:00:35 -0330 Tweak Beogh resurrection piety mechanics a little The old system had a few weird issues in certain cases. Each apostle death added to the 'total piety needed' to trigger a resurrection, while clearing vengeance divided this 'total piety needed' by 4. But this meant that: -Clearing vengeance 3 separate times for three separate deaths gave a considerably larger benefit than having all 3 of your apostles dying at once and avenging them together -If you dismissed a dead apostle to recruit a new one and THAT died, you'd continue carrying forward the cost of the initial one who was dead. In some cases where avenging was not possible, this could defer resurrection indefinitely. -If an apostle died with no enemies around (possibly due to posion from something already dead), you would NEVER get the vengeance bonus and it would take far longer to revive them. Now, instead of dividing total piety needed, fulfilling vengeance counts as getting a large lump sum of progress, and this progress is proportional to how many apostles have been avenged. It should not matter if they die individually or all at once. Also, if a death does not have any targets to mark for vengeance, you will gain the piety you WOULD have gotten from avenging them immediately. Total piety needed for resurrection is capped (at a bit less than 3 times the cost of reviving a single apostle), so that continuously having new recruits die won't be needlessly punishing. Also, I have removed the scaling of apostle revival cost by apostle power. This had been intended to make early revivals quicker, and considered expected piety gain in lategame to be faster anyway, but anectodally, lategame apostles still die very quickly, so that may not have been necessary. Will continue to keep my eye on it. -------------------------------------------------------------------------------- 4aeb71bd7c | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Fix punctuation. -------------------------------------------------------------------------------- c5226419f1 | David Lawrence Ramsey | 2024-02-12 13:00:35 -0330 Fix wording. -------------------------------------------------------------------------------- 62afc2ab20 | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Fix more typos. -------------------------------------------------------------------------------- d9b01eff48 | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Add a few more Beogh apostle challenges. -------------------------------------------------------------------------------- bede89242a | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Move Beogh apostle challenges to the database. -------------------------------------------------------------------------------- 8341cf9762 | David Lawrence Ramsey | 2024-02-12 13:00:34 -0330 Fix typos. -------------------------------------------------------------------------------- bf95a28546 | DracoOmega | 2024-02-12 13:00:34 -0330 Fix Yred wrath summons being friendly instead of hostile -------------------------------------------------------------------------------- 61f58e8097 | brandon s allbery kf8nh | 2024-02-12 13:00:34 -0330 fix android, xcode and visual studio projects (#3517) not that the latter two likely to work afterward -------------------------------------------------------------------------------- 8281743e1d | DracoOmega | 2024-02-12 13:00:34 -0330 Fix a ~3 turn buffer before the Bind Soul debuff wears off Ending immediately when LoS was broken sometimes led to unexpectedly losing your ritual without the player even realizing that a move would put them out of sight of their target. Now give them a very short grace period before ending the Bind Soul effect. I really, really hate this code. Surely there is a better way to reduce the duration of an enchantment by a specific amount than this? I didn't want to deconstify an argument in a giant function that otherwise respects this, though.... -------------------------------------------------------------------------------- f2bdd56232 | DracoOmega | 2024-02-12 13:00:34 -0330 Don't crash on saving game after abandoning Beogh with apostles The dump was trying to get the name of the 'Dismiss Apostle' abilities so that it could show actions counts in the dump and with all apostles now erased from their internal slots, was crashing. Also: make logs count the 3 Dismiss Apostle abilities as the same ability, for action count purposes. This code is kinda ugly.... -------------------------------------------------------------------------------- 41bdf576c2 | DracoOmega | 2024-02-12 13:00:34 -0330 Don't forbid recalling allies out of the Abyss Since actually being banished internally 'kills' a follower, they shouldn't be on the companion list anyway. So all this code is currently doing (I think) is causing companions you take into the Abyss *with* you to be lost there forever. Seems unnecessary and unfun. -------------------------------------------------------------------------------- 1cc89617d9 | DracoOmega | 2024-02-12 13:00:34 -0330 (Hopefully) fix some crashes when reviving apostles that died in portals The game was complaining that an Ice Cave's exit didn't generate, which may have been because it was already used to leave from (and closed). At any rate, since the player should normally never be able to go back to the same floor of any disconnected branch again, it should be fine not to attempt to do cleanup on them... right? -------------------------------------------------------------------------------- 162f1d354f | DracoOmega | 2024-02-12 13:00:34 -0330 Fix Blood for Blood orcs disappearing on save load (Oneirical) The old interlevel recall code was cleaning them up automatically (because they were a 'divine companion' that wasn't listed as having their location be the current floor - because of course they're not real companions at all). -------------------------------------------------------------------------------- 9402a6c0be | DracoOmega | 2024-02-12 13:00:34 -0330 Fix a crash with handling ally_attacked interrupts from dead sources -------------------------------------------------------------------------------- 7d8823f397 | DracoOmega | 2024-02-12 13:00:34 -0330 Fix another arena crash -------------------------------------------------------------------------------- 5b61e976ea | DracoOmega | 2024-02-12 13:00:34 -0330 Don't give apostle challenges on the orb run (Oneirical) Oops. -------------------------------------------------------------------------------- 6e0f2b54f2 | DracoOmega | 2024-02-12 13:00:34 -0330 Fix another typo -------------------------------------------------------------------------------- 424b3b579c | DracoOmega | 2024-02-12 13:00:33 -0330 Adjust Touch of Beogh and apostle power scaling (especially early) Nudge HP of apostles down a small bit at low power, increase it a bit at high power. Change how power capping works so that getting challenges unusually early (monks in particular) does not result in them being unfairly dangerous. Change Touch of Beogh's effect on HP. Instead of a flat +50%, it now gives a bonus that scales with apostle power (capping at the old +50% by 66 pow) This is intended foremost to make early challenges less potentially unfair to weaker or unlucky characters, with just a tiny bit of boosting of lategame allies. -------------------------------------------------------------------------------- d43e904abf | DracoOmega | 2024-02-12 13:00:33 -0330 Fix Infestation angering friendly apostles It seems fine to just make friendlies immune to it, rather than just relying on them not being worth any XP. -------------------------------------------------------------------------------- 3e841c5839 | DracoOmega | 2024-02-12 13:00:33 -0330 Fix some missing Beogh/Yred descriptions -------------------------------------------------------------------------------- 58d3cb9162 | DracoOmega | 2024-02-12 13:00:33 -0330 End Blood for Blood on felid death I am very strongly side-eyeing that 'TODO' immediately below the code added here and thinking I ought to get on with implementing that in 0.32 because this feels like it's getting ridiculous. -------------------------------------------------------------------------------- 2a095079e4 | DracoOmega | 2024-02-12 13:00:33 -0330 Actually properly lose memory of all apostles on abanoning Beogh Currently, if you abandoned and rejoined, the game would let you have the same apostles back again. -------------------------------------------------------------------------------- 5d7853fcdf | DracoOmega | 2024-02-12 13:00:33 -0330 Don't crash on dismissing apostles lost in the Abyss (Oneirical) And probably those in some other places, too! -------------------------------------------------------------------------------- f21637b8b4 | DracoOmega | 2024-02-12 13:00:33 -0330 Make Hurl Torchlight not damage the player, increase range 4->5 The player was already immune if they were undead or non-living, but while I'd hoped in general that not being able to use it at point-blank range would make positioning for it more interesting, in practice I'm not sure this is happening (or that many zombie pileups allow *any* positioning that could do something useful without hitting the player). So for now, let's try it just being harmless to you. -------------------------------------------------------------------------------- 134b4720af | DracoOmega | 2024-02-12 13:00:33 -0330 Interrupt travel when player allies are attacked from out of sight Currently, while visible animations and messages happen when allies are shot from out of player LoS, these do not interrupt travel. This can be somewhat unpleasant for zombies and is deeply bad for apostles (whose deaths is a major event). Now the player should be interrupted by default when an ally is attacked by something the player cannot see. This uses the ME_WHACK behaviour_event() reaction, which should cover a great deal of offensive things used against them, but possibly not everything. I am a little concerned at this making it harder to use travel to flee a battle where your zombies are holding the line, but the positive QoL from this change is obvious. We'll see if any of this ends up being a problem. -------------------------------------------------------------------------------- 8fd3fe7888 | DracoOmega | 2024-02-12 13:00:33 -0330 Don't randomize bound soul HP in the targeter -------------------------------------------------------------------------------- 3c422697ae | DracoOmega | 2024-02-12 13:00:33 -0330 Don't turn friendly orc apostles hostile, even if you hit them Hitting them would trigger penance, which is supposed to just temporarily remove all allies, but the first ally hit could still turn hostile and NOT be removed (which caused multiple different subsequent buggy behaviours). Now they are unable to be made hostile, period. (You still shouldn't hit them) -------------------------------------------------------------------------------- 6c3fea370f | DracoOmega | 2024-02-12 13:00:33 -0330 Make dismissing divine allies on penance a fineffect If you read ?immo around orcish allies and something hit one, you would be blamed for the resulting flame cloud and given penance *in the middle of an attack*, resulting in deleting the attacked monster before the attack was done, ultimately resulting in a crash. I suspect this is the same cause as some TSO I've seen periodically, so I am moving all divine ally dismissal into a fineffect. This technically results in the player being able to get more penance at a time (by hitting multiple summons at once before they disappear), but a solution to that might be somewhat complex and I'm not sure it's necessary. I also removed some old code to protect against a crash that should no longer be necessary. -------------------------------------------------------------------------------- c998edd0f3 | DracoOmega | 2024-02-12 13:00:33 -0330 Don't issue divine challenges while taking the stairs Beogh could send an apostle at you WHILE you were leaving a level, and then get mad at you when you completed doing so (even though the player literally can't stop themselves at that point) -------------------------------------------------------------------------------- 2de81325c6 | David Lawrence Ramsey | 2024-02-12 13:00:33 -0330 Adjust Recite for Yred flavour changes. Yred is fallen now; and Lugonu, being outside both the pantheon and the dungeon, is beyond fallen. -------------------------------------------------------------------------------- 726641d81b | regret-index | 2024-02-12 13:00:32 -0330 Add some apostle names All of them are references to mythical or historical defeated converts of kings, warriors, retainers, or wild men, alluding a little to the new defeat and recruit system attached to orcish apostles. Possibly a little more could be done with this, possibly we'll just get other sorts of references snuck in eventually. Also, remove Harm as an apostle name, since it collides weirdly with the actual brand we've had for a long while now. -------------------------------------------------------------------------------- 659aec8226 | regret-index | 2024-02-12 13:00:32 -0330 Add and edit a few apostle spell tiles / descriptions / lines Sticks to Snakes was missing a description and didn't imply the double snake summon, which it now does. Several summon spells also get tiles: Sticks to Snakes gets roctavian's old tile for such, Divine Armament's tile uses the standard circle and snw-0's Tukima's Dance tile, and Summon Vermin uses eyes from Sastreii's goliath frog and roctavian's jumping spider on top of a modified version of roctavian's Summon Small Mammals. -------------------------------------------------------------------------------- cdd5ff0c81 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix some Beogh status tracking being buggy when a felid dies (Oneirical) -------------------------------------------------------------------------------- 9c5a3828f8 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix new status icons not displaying in webtiles -------------------------------------------------------------------------------- 7b7eff50b8 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix some typoes (Oneirical) -------------------------------------------------------------------------------- edb14d6f02 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix crashy Beogh wrath In a crisis of personality, Beogh would still be added to the list of gods that can punish you while worshipping them, but then remember they were not supposed to do that sort of thing anymore. Then the game would become unhappy. -------------------------------------------------------------------------------- 4bc29743d5 | DracoOmega | 2024-02-12 13:00:32 -0330 Be more consistant about announcing Beogh conversion offers The old code clearly intended the player be guaranteed to have a priest speak to them (and print a message about how to convert) the first time they were eligable. But since this was in behaviour_event() it wasn't actually guaranteed that the priest would do this on any turn. In particular, it seemed very unlikely on turns they cast spells (though they would sometimes not bother for many turns in a row for unclear other reasons). I have pulled this outside of monster behavior code entirely. When the player qualifies for the first time, they will reliably be informed at the start of their turn. (Priests still have the old 1/10th chance to mention conversion at any other eligable time) -------------------------------------------------------------------------------- d9a27e9d63 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix misformatted status description (Oneirical) -------------------------------------------------------------------------------- 5303d90686 | DracoOmega | 2024-02-12 13:00:32 -0330 End Fathomless Shackles when you die as a felid (Oneirical) -------------------------------------------------------------------------------- 16b257c626 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix friendly orc apostle descriptions being broken -------------------------------------------------------------------------------- ec13966b38 | DracoOmega | 2024-02-12 13:00:32 -0330 Make it more explicit how you recruit apostles When an apostle becomes available to recruit, if the player has none already, the game will print an explicit reminder about the ability you need to use to recruit them. Also added a default force_more when recruitment is available, as well as letting defeated apostles linger slightly longer. -------------------------------------------------------------------------------- 0494e2ba4b | DracoOmega | 2024-02-12 13:00:32 -0330 Remove an overlooked debug message -------------------------------------------------------------------------------- eae03d5cd5 | DracoOmega | 2024-02-12 13:00:32 -0330 Fix a logic check for Light the Black Torch being inverted Fixes being able to light the torch an unlimited number of times per floor... -------------------------------------------------------------------------------- f6bdb7c248 | DracoOmega | 2024-02-12 13:00:31 -0330 Fix Beogh species name changes not being visible in webtiles -------------------------------------------------------------------------------- 24b0147655 | DracoOmega | 2024-02-12 13:00:31 -0330 Fix tag upgrade build Overlooked these earlier. -------------------------------------------------------------------------------- 7faa43753b | DracoOmega | 2024-02-12 13:00:31 -0330 Prevent using Sculpt Simulacrum on friendly/neutral units (Darby) I considered making it prompt you and then aggro them, but this seems simplest. -------------------------------------------------------------------------------- 18fcfa04ef | DracoOmega | 2024-02-12 13:00:31 -0330 Revamp Yredelemnul Since their last revamp, Yredelemnul has felt in a mechanically troubled spot. Passive reaping can be useful, but using zombies as piety/ability payment suffers from several problems: -The player has essentially no god powers on a new floor -The opportunity cost of losing long-term allies for a short-term effect is frequently not equitable (this is especially true with Dark Bargain) -Piety is based on total HD of nearby zombies, while ability costs are based strictly on NUMBER of zombies, and the zombies to sacrifice are picked randomly, so it is often impossible for the player to even ballpark how many uses of Drain Life they have available before running out of piety -Your zombies can die out of LoS while travelling, depriving the player of god powers if they don't micromanage them -Frequently, by the time the player is in a bad situation, they no longer have the bodies left to perform any divine intervention at all All in all, it's been widely agreed that the practical problems outweigh the benefits of this system, so let's try something else entirely - specifically aimed at addressing key weaknesses of current Yred (bad on new floors, no panic button in bad situations) while adding a little more flavor. Yredelemnul is now specifically themed as a fallen 'good' god who was exile from their number and holds a grudge against them. (They always were the only evil god who actively disliked using holy weapons, and profane servitors are clearly dark mirrors of angels, so let's lean into this a little more). They specifically want their worshippers to be able to scour floors clean of life without retreat, and give a power set to encourage this. ----------------------- Post-Revamp ability set ----------------------- The player now gets an umbra upon worship, which grows with piety. Passive reaping works only upon monsters that *die inside an umbra* (it is fine if zombies kill them, but the player must be nearby). The should encourage a little more active participation in battle than spell-based necromancers often do. Formula for reaping chance has been changed a little. Base reaping chance starts out lower than before, but rises with piety. Your odds of reaping an individual zombie are inversely proportional to how many HD of them you currently control - if you have none, you will ALWAYS reap a kill. The idea is to smooth out low-rolls when a Yred-worshipper has few allies, while curtailing snowballing a little harder (especially at low piety) ------------------------------------- New 0* ability: Light the Black Torch ------------------------------------- Raises Yred's symbol aloft and begins your conquest of the current floor in their name. Immediately provides the player with multiple temporary undead servants (based on player's xl and capped by a function of their piety). This is usable only ONCE PER FLOOR, ever. Moreover, the player *only* gains Yred piety while the torch is lit and it will be extinguished as soon as you leave the floor by any means. Yred will provide a message evaluating the player's performance when they first leave a floor, as well as some bonus piety if they have killed a majority of enemies on it before doing so. This is intended to help Yred's weakest period - the start of floors when you have no zombies - while giving the player some control over when they want to start a floor 'for real' (ie: maybe they got shafted and just want to flee, maybe there were no monsters anywhere near the stairs and immediate summons would be wasted, etc.). In addition, it provides a flavorful conduct that meshes well with how zombies already want to work. ------------------------------- New 2* ability: Hurl Torchlight ------------------------------- At 2* or above, whenever the player Lights the Black Torch, they will gain a small number of charges of Hurl Torchlight that last for the rest of that floor - 2 charges at 2* piety, rising to 5 by 5*. This is a fireball-style projectile that deal appreciable non-elemental damage to living/holy/demonic creatures (ie: the same types Yred can reap) and empowers your undead minions caught in its blast - giving them short-duration Might and a little instant energy. This gives even more immediate level-starting power, while continuing the theme of 'Use your per-floor resources well' and plays interestingly with your zombie army. As Yred prizes unique souls, killing a unique will grant an additional charge of Torchlight. ------------------------------- Tweak Bind Soul as a 4* ability ------------------------------- Bind Soul was always the most unique and iconic Yred ability and this preserves the core of it (perhaps making it even more useful) while changing some fiddly parts of it. Rather than applying a limited-duration status to an enemy you are trying to bind (and thus making it rarely unpredictably fail if you missed too often, which felt bad), the soul-ripe status has unlimited duration, but breaks as soon as you lose LoS on the enemy you are binding. In exchange (and to preserve some of the risk/reward feel of the ability), you immediately lose 1/3 of your current HP to begin the binding process (but get it back if you succeed). This combination should make it feel dangerous to bind the most powerful souls, but leave the player feeling they have more agency in ensuring they do. Bound souls now have fast regeneration (a QoL fix for resting with them out of combat), and their HP is based on a function on the original monster's HP and the player's invocations skill rather than strictly 'HD x 10' which had some unintuitive effects. (Bind Soul has a better targeter that will now also inform the player of how durable their new friend will be if they take it!) ----------------------------------- New 5* ability: Fathomless Shackles ----------------------------------- Aimed to offer Yred a powerful panic button that still works even if their army has fallen apart, Fathomless Shackles is like a twisted mirror of Sanctuary. It creates a zone on the ground which slowly shrinks over time. So long as the player remains inside the zone, all enemies that share it with them will be bound in place and unable to move and will also take constant negative energy damage which heals the player for a portion of the damage dealt (capped to prevent huge crowds from being overly strong without also making reasonable numbers of targets offer too little healing). Isolated souls (ie: enemies not adjacent to any ally) take 50% more damage. Like Sanctuary, another cannot be created while the current one remains (even if it's become too tiny to be useful). ------------------------------------ Ideally, these changes make Yred more powerful, but also more fun to play. -------------------------------------------------------------------------------- 71bd2ada00 | DracoOmega | 2024-02-12 13:00:31 -0330 Allow followers to enter/be recall into portal vaults The original veto for this appears to long predate interlevel recall and I can't help but wonder if it was an attempt to prevent followers being lost forever inside portals. In any case, that time has long passed and I see no good reason to forbid a player from using apostles or bound souls in portal levels. -------------------------------------------------------------------------------- 848e6196cd | DracoOmega | 2024-02-12 13:00:31 -0330 Make Beogh/Yred recall instant again With the number of permanent allies of Beogh capped at 3, incremental recall felt rather silly. Sometimes it got all 3 of them in one turn and sometimes it took 2 (with additional messages about starting/stopping recall). This feels unnecessary. Yred still can have a larger number of zombies at once, but given that they are bound to a single floor and the mass armies that originally prompted incremental recall are a thing of the past, I think we can safely trim this code out and simplify. -------------------------------------------------------------------------------- 3f351f0dc0 | DracoOmega | 2024-02-12 13:00:31 -0330 Comprehensively overhaul Beogh Beogh has been in a somewhat troubled place for a long time. Micromanaging an army can be a tedious, fiddly process in Crawl, and yet a Beogh player is punished for not doing so by losing large chunks of their god's supposed benefit - followers getting caught on monsters out of sight of you and dying, being shot and pulled away when you're auto-travelling, or just in general behaving in ways not conducive to them living. The reward for babysitting them is also lackluster; while orcs can be powerful for a while, they fall off hard later in the game where even warlords cannot be expected to live long against serious threats. But even if that were not the case, and your allies remained extremely powerful lategame, it's arguably not good design to offer the player a god that 'plays itself' by letting you grow an army that can handle dangerous things with limited player intervention. In addition, while Beogh being restricted to Hill Orcs was a flavor-first gimmick, it was also one that limited the potential richness of the god; not everyone wants to play a hill orc, and much of the richness of Crawl is the combinatorics that come from being able to pair arbitrary gods/species/backgrounds together. And so all of that is going to change. This commit combines years of feedback, suggestions, and design discussions to create a completely new Beogh experience - one that should hopefully stick to the spirit and fantasy of what Beogh offered, while being more mechanically interesting, less tedious to play, and offering more clearly strong upsides. Major changes: --------------------------------------------------------- Open Beogh worship up to all species, reflavor Beogh/orcs --------------------------------------------------------- Beogh has received some significant rewriting to accompany this change. Rather than simply being an intolerant god of a violent people, Beogh is now explicitly a god of pariahs and the dispossessed. Orcs are not a singular species which Beogh allow to worship them, but rather *anyone who worships Beogh may rightly call themselves an orc*. The shared physical appearance seen in the orcs of the dungeon is a result of Beogh's power touching upon them over a long period of time; some of those orcs may have once been humans, elves, or even octopodes. Still outside the normal pantheon (and disliked by the Good gods), players of all species can convert to Beogh via any orc priest if they are at low health *and not already worshipping another god* (this is partially to keep the Beogh status light from constantly blinking at every player in the game forever now). In fact, a player may now access the 'Convert to Beogh' ability while confused, and doing so will provide minor healing and confusion removal. Fall to your knees and the Shepherd will protect you as one of their flock. A significant amount of descriptive text involving Beogh has been rewritten. ---------------------------------------------------- Remove nearly all existing orcish follower mechanics ---------------------------------------------------- Beogh worshippers no longer have normal orcish monsters join them. All Beogh blessings (ie: improving follower weapons, bestowing additional followers, and random healing after kills) are removed. Monsters can no longer level up. Manually gifting weapons/armour to followers is removed. The Resurrection ability is removed. Hostile orcs instead have a piety-based chance to turn good neutral, become pacified, and leave the level instead. (To preserve some of the flavor of the old system without it leading to a large army for the player) --------------------------------------------------------- Replace orcish army mechanics with a new 'Apostle' system --------------------------------------------------------- At *** piety and above, Beogh worshippers will be sent divine challenges from Beogh. These apostles are essentially randomized uniques, generated using a system that can scale their power over the entire course of the game. When you defeat these apostles in battle, you can recruit them to join you. The player may have up to 3 apostles following them at once, and may freely dismiss any of them to recruit a new one if they so wish. Apostles that die do not do so permanently, but will be automatically revived by Beogh once the player proves themselves worthy. To differentiate this repeated ally revival as much as possible from Hep ancestors, apostles do not come back over TIME, but rather based on piety gained with an additional twist: Beogh wants you to avenge their deaths. When an apostle dies, all hostiles in sight of it at the time are marked for vengeance. Killing all of the marked targets will greatly speed up the dead apostle's return (currently it cuts the total piety needed to 1/4). Thus, while it is still possible to revive an apostle killed by something you cannot afford to fight, the player is *greatly* incentivized to find a way to do so. The aim is that this system encourages the player to try and defend their allies, but does not permanently punish them for failing to do so - as well as presenting interesting difficulties when the player is forced to manage on the back foot from time to time. (Marked monsters currently also set their patrol points to the body of the apostle they were marked for, to help the player find them again. This may be a *little* weird, but I think it's worth it to avoid the fiddliness of repeatedly autoexploring a level looking for them, and I doubt it's meaningfully exploitable since it requires letting an apostle die, which is a non-trivial loss in power) Internally, the death of an apostle sets a prop for 'piety needed to revive'. If a second apostle dies before the first comes back, the total piety needed is increased. All apostles will always revive together - partially for the greater impact of gaining several refreshed allies mid-battle, and partially to reduce cycles of 'lone apostle coming back, only to immediately die because you can't defend them without other allies around to help'. As this is based on piety gain, Faith does help. Generated apostles are divided into 3 archetypes: warrior, wizard, and priest, and are generated with an internal 'power' parameter (scaling from 0-100) that controls both their stats and what items/spells they have access to. -Warriors have the most HP and melee damage and get the heaviest armour/weapons. They can know Battlecry and sometimes know a single other spell drawn from a list of self-buffs and melee-friendly skills like harpoon shot or Vhi's. -Priests have medium hp/melee power, always know smite, as well as at least one other spell drawn from a list of summoning/support spells (with a couple specialized damage ones) -Wizards have low melee power, but draw from a wide list of conjurations and hexes, as well as some self-buff and utility spells (eg: haste, blink, battlesphere) Since apostles do not grow with the player, and have fixed stats and gear, the idea is that the player upgrades their power over time by getting NEW apostles who are stronger than their old ones. Ideally, different player archetypes may favor some apostle types over others, and specific high-roll apostles will be noteworthy and keep their value even after the player finds other stronger ones. Choosing who to keep should be interesting, and hoping for a particularly good apostle exciting. But you have to defeat them first! ------------------ Apostle Challenges ------------------ An apostle challenge will be issued shortly after the player first hits 3* piety, and then every so often afterwards (based on total piety gained, and slowly down in rate somewhat based on how many challenges the player has already fought). They way they work is this: Beogh announces the challenge when it is issued. Then a randomly generated apostle (scaled based on the number of challenge previous fought, capped by your XL) will be placed somewhere a short distance outside of the player's sight (but with a valid path to the player's location). The apostle and their band (if they have one) can track the player as if the player was Marked. Leaving the floor during a challenge will place the player under a modest penance. (Beogh has been changed to not cause wrath effects on a follower during penance, but this will still deprive them of their apostles until penance is lifted.) Hostile apostles have a buff during challenges, 'Touch of Beogh', which multiplies their HP and acts similarly to a (weak) Might and Brilliance (but stacks with them). The idea was to enable apostles who were simultaneously strong enough to threaten the player when hostile, but not too strong for the player to have as allies (when they will no longer have this buff). Smite is also specifically forbidden from targeting enemy apostles (Beogh wants you to prove your own mortal abilities to them!), though their band is fair game. (I think this is suitably flavorful, but the biggest motivation is that otherwise Smite would be too easy a way to simply delete any scary apostle if you wanted to, and that feels inappropriate) The timing of challenges is not fixed. During god_reacts(), if the player has earned enough piety to qualify for a new challenge, the game checks whether circumstances are suitable. Challenges will not be issued if: -The player is on a rune floor, in a portal vault, or in Zot -The player is below 50% HP or tension is sufficiently high -Several attempts to find a valid space to place the apostle fail The first two are to reduce TOO unkind to the player (apostle challenges can be scary and they will often already have their hands full here). The third is to avoid the expense of exhaustively checking connectivity whenever this happens; if we can't easily find a spot, chances are the player will be in a better location in the near future anyway. ------------------------------------------------------- Passive ability: heals friendly apostles by doing damage -------------------------------------------------------- Both to encourage the player to step into the fray rather than letting allies handle things on their own AND to give the player better agency in keeping their apostles from dying when things go bad, dealing damage has a chance to heal friendly apostles based on the damage done. This uses similar rules to Uskayaw for determining what damage 'counts' (ie: ignoring summons, poison, etc.), but rather than any complicated threat formula simply caps the total contribution of any damage instance by the smaller of 'the remaining hp of the monster damage' and '1/2 of that monster's max hp'. This should minimize any value the player could get from carrying around rats or leaving a high hp monster almost dead and simply reward wading into a fight and hurting things a whole lot. At the end of each player turn (to minimize message spam), there is a 40% chance to take 40% of your total damage contribution that turn (if this is more than 5) and split it evenly among all damaged apostles. This is fairly substantial healing, but apostles are still vulnerable to being overwhelmed and in general encouraging the player to push forward in dicey situations instead of immediately bailing (or feeling completely doomed to save your friends) feels good. ------------------------------------------- Add a new capstone ability: Blood for Blood ------------------------------------------- To replicate some of the old feeling of leading a massive orcish army (but with less tedium and micromanagement) as well as providing the player with a powerful button when they're on the back foot (and perhaps have no apostles alive at all), I have added a dramatic new active ability at 5*. Blood for Blood costs a massive amount of piety, but summons a large number of elite orcs around the player immediately, as well as giving them a status that continuously spawns additional orcs just outside of the player's LoS and has them stream in from all directions over time. The rate of new orc spawns is inversely proportional to how many orcs remain alive (ie: you get more of them, the fewer are otherwise still alive). The Blood for Blood status lasts a long time, but rapidly decays if there are no hostile monsters in sight. This ability can definitely be enough to turn a battle completely around, BUT there is a heavy caveat to using it: you have to be standing over the corpse of a dead apostle. So not only does it require you to have lost an ally in this battle, but you need to be able to reposition to stand on them (and remember: monsters involved in an apostle slaying will patrol around their corpse afterwards, so you can't simply leave and wait for them to go away). To help with UI concerns, tiles with valid corpses are highlighted in a way that makes them clear even if other monsters are standing on them. Fight your way to your fallen kin and swear bloody vengeance in their name! ---------------------- Assorted minor changes ---------------------- -Smiting costs slightly less piety -Adjusted various descriptions ------------------- THINGS NOT YET DONE ------------------- -There's a bunch more dialogue and descriptions that need changing -The flavor-only mutations (and associated messages) of slowly turning into an orc do not exist yet. -Probably further balance adjustments! -Try to avoid giving you apostles with the same name as one you already have -Make the dismissal UI a bit clearer about which apostles are alive or dead -Replace playable Hill Orcs with a different species -Make Beogh wrath summon random apostles to fight the play -Possibly refactor storage/handling of apostles # Conflicts: # crawl-ref/source/mon-data.h # crawl-ref/source/mon-flags.h -------------------------------------------------------------------------------- 1008970e6a | DracoOmega | 2024-02-12 13:00:30 -0330 Add M_CAUTIOUS to make (selective) spellcasters less likely to approach This is intended foremost for orc apostle wizards, but I think there are a few other places where it may be appropriate (such as glowing orange brains, whose spellset is especially hurt by waltzing up to the player without even a melee attack) The way it works is that if an M_CAUTIOUS monster doesn't opt to cast a spell that turn (or use a wand, reaching attacking, etc.) but had a valid spell it COULD have cast, and is not already in melee range of something, it has a 2/3 chance to wait in place instead of moving forward. It's sort of like having a cantrip that it won't ever use in place of attacking. I am hoping this will make wizard apostles a bit better at not flinging themselves into the jaws of death. -------------------------------------------------------------------------------- de802753b3 | DracoOmega | 2024-02-12 13:00:30 -0330 Add Divine Armament, another spell to help round out apostle summons Drawing upon Beogh's long history of directly granting weapons to their followers, this spell summons a single dancing weapon. The dancing weapon an individual apostle can summon will be identical between uses of this spell can will be either an axe or a polearm (both of which I think are the more interesting options for the player to have access to) At low power, it summons either a plain war axe or trident. At medium power, it summons either a battleaxe or glaive of electrocution. And at max power, it summons either an executioner's axe or bardiche of speed. Dancing weapon power also increases between these, so that the actual power of the summon shows larger differences between tiers (and the bottom tier is suitable to offer to the player fairly early) Even weak dancing weapons could be dangerous early enemies for many players, but I think Beogh worshippers' access to smite makes them uniquely capable of dealing with these, and it will help to give priest apostles more variety. -------------------------------------------------------------------------------- 9b8e009703 | DracoOmega | 2024-02-12 13:00:30 -0330 Remove dancing weapon power's effect on weapon speed The formula that controls a dancing weapon's speed (based on power) was broken in gfb02dadd07 and meant that 100 power dancing weapons were normal speed, while ANY value lower than 100 was 1/2 that speed. Since the last Tukima's Dance revamp, the remaining places that used variable power dancing weapons were Beogh wrath (which mostly doesn't exist) and a Nemelex card. Reaching 100 power with the card was pretty attainable, but it was strange that until that point, your summon would both move and attack at half speed. I have removed the effect of power on speed entirely. Even if it did scale linearly, like the other stats do, 50% power meaning 50% damage *AND* 50% speed would be a quadratic effect on power scaling, which I don't think is desireable. -------------------------------------------------------------------------------- 0a50e047fe | DracoOmega | 2024-02-12 13:00:30 -0330 Fix multiple issues with Nergalle's spectral orc summon, revamp her flavor There was a bunch of jankiness with Nergall's summon spectral orcs, at least some of it dating back from when it wasn't otherwise possible to make spectrals of non-base-genus types (ie: only spectral orcs, not spectral orc knights). The way the code originally 'cheated' to make them look like they were higher-level orcs still causes large visible titles over the spectrals in local tiles, often overlapping with each other in unreadable ways. At the same time, the tiles were unable to display the randomized equipment the spectrals were given. The spell also didn't properly respect its own summon cap (and was wildly inconsistent about how much power it could generate at a time - '1 plain orc' and '3 orc warlords' were technically both possibilities!) The spell now always summons 3 orcs at once (its cap). It can no longer summon plain orcs. I have added custom tiles for spectral orc warriors, knight, and warlords to be used only by this spell (so that their equipment is shown). I have also made the orcs specifically spawn with unbranded polearms and unbranded armour, so that there is no need for the player to examine them each time they appear. Higher-level orcs have better base item types, but there is otherwise no randomization. At the same time, I heavily revamped Nergalle's flavor from a 'cruel and ugly sorceress' to a 'chronicler of orcish history'. Her description and all of her speech lines have been rewritten from scratch (to also better line up with the flavor of the Beogh revamp). 'Summon Spectral Orcs' is also renamed to 'Vanquished Vanguard', with the description hilighting the polearms the spectrals are given. Nergalle herself can no longer get warlords from this spell, but the spell has HD-based power scaling so that Beogh apostles at higher levels will still be able to. -------------------------------------------------------------------------------- 3bdcaaee6d | DracoOmega | 2024-02-12 13:00:29 -0330 Move monnames.txt into the monspeak database So that Nergalle can babble about randomly named orcs. -------------------------------------------------------------------------------- e2892a3d53 | DracoOmega | 2024-02-12 13:00:25 -0330 Don't let allies repeatedly cast blink/battlesphere with nothing around It was mildly amusing when a Yred bound soul might do this, but it should be a lot more regular ocurrance for allies to have these spells with Beogh now. And an ally blinking away from you right as you autotravel to another level, so that they miss travelling through the stairs with you, is more than a little awkward. -------------------------------------------------------------------------------- 6316ba047a | DracoOmega | 2024-02-12 13:00:22 -0330 Fix and simplify telling monsters to retreat, add an icon to display it Ordering friendly monsters to retreat had been partially broken for some time by the addition of more and more things (such as zombies) to the list of 'can't attack out of the player's los' - which caused them to immediately bounce back to the player as soon as they left your sight. Even worse, this made it look like they were no longer retreating, even though they still were internally and would thus ignore all hostiles. That part was fixed by 74bf07aea25d19011249c416dfe458c39cdb4042, but old code that kept allies from retreating too far ahead of the player still felt awkward in practice. I have removed the distance-based rubber-banding entirely (possibly this was a protection from when many allies would still attack out of los?) and increased the distance retreating allies will move by default. Retreating allies will now also follow the player across stairs. Finally, I have added an icon to indicate when allies are in a retreating state, which should make their behavior clearer to players. Hopefully, these improvements, combined with the change to the 'stop attacking' order, will make it easier for the player to keep their allies safe when they choose to. -------------------------------------------------------------------------------- 376ae90d61 | DracoOmega | 2024-02-12 13:00:22 -0330 Improve ally 'Stop Attacking'/'Follow Me' orders Telling your allies to stop attacking did nominally cause them to stop attacking, but was a little wonky. First of all, while it made them cancel their current targets, if something attacked them (a common occurrence in situations you'd ever need to tell them to stop attacking in the first place), they would still immediately switch back to attacking that things. Secondly, it would disable ally behavior of automatically picking targets indefinitely. If, at any point, you told your summons to 'follow you' and later ran into an enemy, they would not engage without you attacking first or directly commanding them. Not only was this invisible behavior, but there was no mechanism to cancel it (without setting the pet target some other way, such as attacking something yourself). Now, issuing a 'follow' or 'stop attack' order to allies will also prevent them from responding to attacks, but end automatically once the player has spent 50 consecutive aut outside of LoS of hostiles. This number was picked somewhat arbitrarily, but the idea was to buffer against the order ending immediately if a hostile briefly leaves sight, but still be very likely to have worn off by the time the player reaches something that could be considered 'the next encounter'. Together, this should hopefully make the order more fluidly useful for its ostensible purpose. -------------------------------------------------------------------------------- 0a82c8690a | DracoOmega | 2024-02-12 13:00:20 -0330 Refactor/rename summon_can_attack() This function (used to prevent player summons and other allies from attacking outside the player's line of sight) has gotten a laundry list of specifiers attached to it over time, as more and more things are added to it (and more oversights are corrected). The name is also somewhat misleading, since many of those things are not summons! With the Beogh revamp removing one of the last cases of a perma-friendly player ally being able to attack outside of los, I have simplified the check greatly: now it looks entirely at whether the monster is permanently friendly, with no other qualifiers. This means that charmed/bribed monsters can still fight out of sight (since their 'true' attitude is not friendly) but essentially of the existing cases in _mons_attacks_outside_los should be subsumed more cleanly. I've also renamed these functions, to be more clear with what they're doing now: monster_needs_los() and monster_los_is_valid(). I also removed a couple special-cases that don't seem necessary (spectral weapons are already banned from manual attacks elsewhere, for instance) Fun fact: due to the exact specifiers in _mons_attacks_outside_los, charmed death knights and profane servitors would previously refuse to attack out of los because they worshipped Yred.... -------------------------------------------------------------------------------- 22358aa1f4 | DracoOmega | 2024-02-12 13:00:19 -0330 Fix minor bugs with set_nearest_monster_foe and refactor slightly The iterator for letting monsters pick other monsters as foes, for some reason, used LOS_DEFAULT_RANGE, regardless of the player's current vision range. This meant, for instance, that a monster at the extreme end of a barachi's sight couldn't engage another monster from that distance. The more concerning scenario - monsters still looking 7 tiles away for targets if you're a kobold - turned out not to matter for another reason: global los is cached using the player's LoS range, so calls to monster::can_see() would still fail for overly far monsters - they would just be called against targets that they would NEVER be able to see. With that in mind, I have removed a redundent los check in _mons_check_foe, corrected this bug, and renamed an argument for clarity. -------------------------------------------------------------------------------- 0c26625034 | DracoOmega | 2024-02-12 13:00:17 -0330 Adjust Shock/Sting damage for monsters These spells don't really exist outside of ghosts (that also don't really exist) and low-level apostles, but their damage was really very bad even compared to other low-level monster spells like throw flame/frost. This raises them both fairly appreciably, but also removes a bizarrely high accuracy value for monster Sting. -------------------------------------------------------------------------------- bf7ee06084 | DracoOmega | 2024-02-12 13:00:17 -0330 Tweak monster Sandblast Make it take 1.5x as long to cast, as the player spell does. But also raise its base damage significantly. (For some reason, it was identical to Throw Frost/Flame, despite checking AC 3 times. Now it is significantly more than that.) -------------------------------------------------------------------------------- 15188589b1 | DracoOmega | 2024-02-12 13:00:14 -0330 Adjust monster regeneration enchantment and add Regenerate Other ENCH_REGENERATION was only used as part of monster Trog's Hand (which was itself used only by spriggan berserkers). Since it merely did the equivalent of setting the M_FAST_REGEN flag, this made berserkers heal exactly 1 hp per turn, instead of the ~0.48 they would have healed without it. It did last a long time, but that is frankly a pathetic amount of healing. ENCH_REGENERATION has now been co-opted for another simple monster spell. It now applies regeneration on TOP of whatever natural regen a monster has (instead of replacing it) and heals 5% of the monster's max health + 3 each turn. This should let it scale a little to the target's own toughness and be something the player can actually feel. Regenerate Other is a simple use of this (intended for priest apostles at the moment) that simply applies this buff to a random injured ally in sight. Since this also significantly buffs Trog's Hand, I have cut its duration to less than half. (But I'm not convinced it is even that interesting or relevant on spriggan berserkers, who are already nearly magic-immune in the first place, and can't even use it if they go berserk first, which they often will. Considering cutting it from them and maybe finding a new home for it in future.) -------------------------------------------------------------------------------- 02d7de5f7b | DracoOmega | 2024-02-12 13:00:01 -0330 Re-add Sticks to Snakes (as a priestly apostle spell) Good appropriate flavor and helps increase priestly variety. Summons 2 of either water moccasins, black mambas, or anacondas, based non-randomly on spellpower (so it will be consistent for each apostle). -------------------------------------------------------------------------------- fcd2887363 | DracoOmega | 2024-02-12 13:00:01 -0330 Fix ghosts/illusions not being able to see all player spells after amnesia Reading ?amnesia reduces you.spell_no by 1, but simply zeroes out the spell slot that was forgotten, without moving spells in higher slots back down. With how player spells are iterated by ghosts, this effectively meant that for each amnesia a player read, their top-most spell slot would become invisible until a new spell was learned. If a player forgot multiple spells to learn a single more expensive one (as is often the case), several of those older spells would remain hidden. Ghosts already skip over SPELL_NO_SPELL so let's just iterate the whole array. -------------------------------------------------------------------------------- 3bc30c4099 | DracoOmega | 2024-02-12 13:00:01 -0330 Let monsters cast BVC I'm not entirely happy about the number of places this duplicates code with grasping roots rather than directly sharing it. That might be a place for future refactoring. -------------------------------------------------------------------------------- 0b06cff994 | DracoOmega | 2024-02-12 13:00:00 -0330 Let monsters cast Lesser Beckoning This is actually liable to be a lot stronger in monster hands than player ones, as a non-damaging harpoon shot you can't avoid. Maybe could replace Blink Other in Roxanne's set? Either way, it's now available for Mara to torment poor unfortunate Warpers with. -------------------------------------------------------------------------------- 03f2d2ab7a | DracoOmega | 2024-02-12 13:00:00 -0330 Let monsters cast Manifold Assault (and refactor a few things) Beyond letting monsters use the spell in general, it refactors Autumn Katana's code so that it isn't mostly-copying manifold assault code in a separate way. Additionally, this refactors the special handling that both of these (and Wu Jian martial attacks) used for calculating weapon delay, so that it now relies only player_speed() and not you.time_taken. Commits dating back many years now suggest that it always should have worked this way, and I have not seen any bad results in testing all of these things with some rigor. Frankly, I'm of the opinon that you.time_taken should NEVER have any meaning in the middle of any player action, and only after the player's turn is complete.) -------------------------------------------------------------------------------- 4d0ad107bb | DracoOmega | 2024-02-12 13:00:00 -0330 Implement monster Kiss of Death And give it a better message than "The negative energy hits you." -------------------------------------------------------------------------------- 6d05f22e25 | DracoOmega | 2024-02-12 12:59:58 -0330 Split monster Vhi's into Vhi's Electrolunge Functionally very similar to player Vhi's except that it doesn't care about the distance travelled for its damage, and simply applies a flat (HD-based) amount of electric damage if the initial attack hits (rather than being a multiplier on the weapon damage). It has a different name in large part to give it a different description when examined. xv properly shows the added damage. (I also gave it +1 range compared to player Vhi's) -------------------------------------------------------------------------------- 6658dcf839 | DracoOmega | 2024-02-12 12:32:25 -0330 Heavily refactor Vhi's Electric Charge and let monsters use it This removes the special-casing involved with targeting Vhi's and runs it through a standard spell targeter instead. Also makes the spell less player-centric so that monsters can use it. I think there's room for this to see play outside of just ghosts/illusions as well. Should simultaneously fix a crash caused when a monster displaced by Vhi's triggers a dispersal trap that puts a different monster back in the charger's way. (Now it tries repeatedly to free space until space actually remains free). I think it's arguable that monsters should get a bigger damage bonus from this than players do. I may do that later. -------------------------------------------------------------------------------- 5a133617b6 | DracoOmega | 2024-02-12 12:32:25 -0330 Searing Ray monster implementation Just for ghosts/illusions for the moment, but I think this one has real potential on some other monsters (I have arcanists in mind in particular). The dynamics of a channel that can be interrupted by the player moving (either out of range or to block the beam with other monsters) feel like a good one. With this in mind, the monster version also lasts longer at higher power than the player themselves can reach. If someone dislikes this, there's always the possibility of a foxfire/marshlight split with a fancier name for the arcanist version. -------------------------------------------------------------------------------- 7f64abb3f7 | DracoOmega | 2024-02-12 12:32:25 -0330 Implement monster foxfire (for illusions and ghosts) Marshlight already used basically identical code to foxfire under the hood (just with a key for cosmetic changes to it). To make this spell less strong at the same HD, monsters cast it with half power compared to marshlight, but it otherwise works the same way. (Of course, this still scales up much more than the player spell at high HD, but that's just how monster spells work in general) -------------------------------------------------------------------------------- 815546e591 | DracoOmega | 2024-02-12 12:32:25 -0330 Let monsters cast Scorch No direct users for it for the moment, though this enables it for player ghosts and illusions. -------------------------------------------------------------------------------- a626bee456 | DracoOmega | 2024-02-12 12:28:27 -0330 Fix blazeheart cores being able to be knocked back (Oneirical) In practice, this virtually never occurred, since the core is scheduled to act immediately after the player's next turn and enemies will rarely get any action between that and it exploding, but such a rare interaction shouldn't cause an explosion to happen at a different location than the player would expect. -------------------------------------------------------------------------------- c5dd13f2a7 | DracoOmega | 2024-02-12 03:12:17 -0330 Fix a crash when !lig wears off while having a non-base default form And probably any other hostile polymorph. This was broken by 6027059026f005a40a6 (Using transform() directly will not exit a forced form, so we should make sure to manually do so first. I don't believe return_to_default_form() is called anywhere where we wouldn't want that) -------------------------------------------------------------------------------- 4625e66871 | regret-index | 2024-02-11 19:24:55 -0330 Decorate Pan a little further * Give a 33% chance to use one of the rune-themed Pan decorative vaults by nicolae in the corresponding unrand lord levels. Despite there being only four to five each for each of them, the bulk of such are all decently randomized in connectivity and pillars, while most of the rune levels outside of the rune vaults are already somewhat forgettable as their random monster sets focus more on theme than threat. (This would be a good place to get more vaults in the same style, which would allow increasing the overall odds.) * Add four more small vaults to the overall decorative vault pool, pushing it to about 14 non-specific vaults and 17 direct references. * Give an additional 20% chance to use one of the general decor vaults throughout the regular Pan floors. It's not the highest quantity for a technically infinite number of levels, so the chance isn't set that high, but the vaults available are both reasonably variable and they'll be frequently unseen due to the rapid rate most people dive Pan anyway. * Use the current flat chances of small blood fountain vaults to add an additional chance for decor corresponding directly to the current Ds enemy gods worshipped- demonic trees for Lugonu, WALL_UNDEAD bone rock for Kikubaaqudgha, and scintillating statues for Makhleb. -------------------------------------------------------------------------------- 6027059026 | wheals | 2024-02-11 20:12:10 +0200 Fix location effects when transforming (#3274) In addition to the flying and diving messages mentioned in the issue that were never printed, the all-important "Floosh!" got skipped when swimming players left a flying form. -------------------------------------------------------------------------------- aa9fc57931 | wheals | 2024-02-11 20:12:10 +0200 Combine swimming and water-safety for forms Since they are now the same. -------------------------------------------------------------------------------- f394fe61d4 | wheals | 2024-02-11 20:12:10 +0200 Let statues swim (#3081) They were already half-swimming, in that Merfolk and Octopode statues got their stealth bonuses while underwater. -------------------------------------------------------------------------------- 3737fec271 | wheals | 2024-02-11 20:12:10 +0200 Start shapeshifters with active talisman (#3494) -------------------------------------------------------------------------------- e5b9942ccf | Nicholas Feinberg | 2024-02-11 08:56:57 -0800 Parenthesize (wheals) -------------------------------------------------------------------------------- 93939002d8 | SentientSupper | 2024-02-11 08:56:14 -0800 Bugfix corrosion display for weapons in webtiles It was displaying 4 times the corrosion for weapons -------------------------------------------------------------------------------- ad12e124b7 | Nicholas Feinberg | 2024-02-11 08:55:51 -0800 Add SentientSupper to the CREDITS -------------------------------------------------------------------------------- 159c032296 | regret-index | 2024-02-11 03:27:26 -0330 Fix tag upgrade for submerging removal -------------------------------------------------------------------------------- 6f326f69ea | CipHuK | 2024-02-10 22:21:09 -0800 Stop asking for dragon armour toll from draconian As draconians do not use dragon armour, it is not a big deal for them to pay such small price to enter trove -------------------------------------------------------------------------------- 028e34cad9 | Nicholas Feinberg | 2024-02-10 22:06:10 -0800 Give krakens rArcjolt (hellmonk) Reduce the damage that krakens (and other tentacle-creating monsters) take from multiple hits to their tentacles in the same attack. -------------------------------------------------------------------------------- 465344b4ef | Nicholas Feinberg | 2024-02-10 21:48:40 -0800 Clean up remaining submerge code Resolves #3504. -------------------------------------------------------------------------------- dfa216537b | Monkooky | 2024-02-10 21:48:37 -0800 Remove (tentacle) submerge Submerge as a mechanic introduces very unique special cases that must be guarded against throughout the code. The untargettability it grants requires a special check in several targetters, and the ability to temporarily coexist with monsters makes removing the enchantment very complicated. Right now the only monsters that can submerge are tentacle segments, for whom the ability is fairly uninteresting. Preserving submerge for tentacle segments is decidedly not worth the technical debt it incurs. This does not touch the tile drawing code; it may still be possible to see 'submerged' tentacles if a tentacle somehow gets disconnected. There may be vestigial code for drawing other submerged entities. -------------------------------------------------------------------------------- 7d2b172a6e | SentientSupper | 2024-02-10 21:19:13 -0800 Change how rCorr interacts with corrosion stacks on the player Protecting yourself against corrosion feels bad because of how inconsistent it is. Each stack of corrosion on the players reduces AC and slay by 1. Quadrupled most sources of corrosion to compensate. Having corrosion resistance will halve the number of stacks applied to the player instead of a coinflip chance to prevent the status entirely. -------------------------------------------------------------------------------- dd6c86a88c | Zhang Kai | 2024-02-10 21:13:23 -0800 Update godspeak.txt -------------------------------------------------------------------------------- 1c9add51e8 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update montitle.txt -------------------------------------------------------------------------------- 0617a3dc7d | Zhang Kai | 2024-02-10 21:13:23 -0800 Fix clouds.txt -------------------------------------------------------------------------------- 88f2fc3365 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update status.txt -------------------------------------------------------------------------------- 6c123904f3 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update spells.txt -------------------------------------------------------------------------------- 5640b269d8 | Zhang Kai | 2024-02-10 21:13:23 -0800 Fix ability.txt -------------------------------------------------------------------------------- 8acc429591 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update monsters.txt -------------------------------------------------------------------------------- 2c310156bd | Zhang Kai | 2024-02-10 21:13:23 -0800 Update skills.txt -------------------------------------------------------------------------------- 4c714f3379 | Zhang Kai | 2024-02-10 21:13:23 -0800 Update features.txt -------------------------------------------------------------------------------- 601a84782f | Zhang Kai | 2024-02-10 21:13:23 -0800 Update gods.txt -------------------------------------------------------------------------------- f76145dc59 | Nicholas Feinberg | 2024-02-10 21:10:03 -0800 Make offhand punches UC only (various) Most people seemed to assume they already were, so there's a strong intuitiveness argument, and they are vanishingly rarely relevant with weapons. This also solves certain elf-related problems. -------------------------------------------------------------------------------- accdc7a51e | Nicholas Feinberg | 2024-02-10 21:04:58 -0800 Revert "Revert "Temporarily evert "Simplify off-hand attacks""" This reverts commit 95b6ac8b5ca23ae5db383e8efd33fbd561136ce6. -------------------------------------------------------------------------------- 5e8725010d | Nicholas Feinberg | 2024-02-10 18:35:13 -0800 Fix spectral outgoing damage Spectral weapons were doubling the player's damage, not increasing it by 1.7x. ;_; -------------------------------------------------------------------------------- 35ecbacc28 | elliptic | 2024-02-10 21:06:35 -0500 Don't cheat the player out of a shop in st_orc_town -------------------------------------------------------------------------------- 54dcad9685 | patrick | 2024-02-10 20:58:19 -0500 Add a bunch more options to randbook.txt I added a bunch of alchemy terminology to go with the new spell school. Then I entered a thesaurus fugue and added a bunch of synonyms, especially for the spell school adjectives. I also added a bunch of other titles. Enjoy! -------------------------------------------------------------------------------- 4224600aea | Nicholas Feinberg | 2024-02-10 17:02:06 -0800 Let evil players wield good weapons Blocking undead and demonic players from wielding weapons of holy wrath was very fiddly - lots of annoying corner case code around entering and leaving Death Form. Achieve the same flavour with less annoyance by just disabling the brand while players are dead, rather than blocking wielding entirely. -------------------------------------------------------------------------------- 04fe69798e | Kyle Rawlins | 2024-02-10 17:05:11 -0500 fix: add some gem asserts These solve nothing for me, unfortunately. But they would make crashes for an out of bounds access here (which is possible by providing NUM_GEM_TYPES to these functions) less cryptic. -------------------------------------------------------------------------------- 39ddab2b6a | regret-index | 2024-02-10 18:32:05 -0330 More non-player spells tiles + juggernaut skeleton placeholder The latter is meant to help quickly distinguish them from the other giant skeletons in Depths, pairing together snw-0's juggernaut helmet with roctavian's large humanoid skeleton. It looks... very silly- the helmet's on _really_ tight- but it's rather important for necromancer bands and Crypt and Gloorx's level, so it will do for now. The spell icons continue to be a little placeholdery in terms of stitching together and editing currently extant tiles, but it should continue to help to have anything distinguishing besides pawprints. Sources: * Confusion Gaze: snw-0's Mass Confusion and the original rltile project's See Invisible spell. * Ensnare: Pete Hurst's cobweb tiles. * Eruption: snw-0's Upheaval. * Forceful Invitation: white_noise's exit stairs from Lair branches. * Injury Bond: Bloax's Corona tile + Sastreii's Injury Bond status icon. * Plane Rend: white_noise's exit stairs from Elf, V, Slime, and Crypt. * Stunning Burst: ontoclasm's Paralysis icon + roctavian's Lightning Bolt. * Slug Dart: snw-0's dart slug + roctavian's Stone Arrow projectile effect. * Virulence: CanOfWorms's resistance and vulnerability mutation tiles. * Warning Cry: The original rltiles project's Projected Noise. * Woodweal: Sastreii's regular trees + ontoclasm's heal wounds. Also, Ghostly Sacrifice uses the Ghostly Fireball tile, since we're still using Iceblast's tile for Seracfall, and monster Blinkbolt now uses the Player blinkbolt tile. -------------------------------------------------------------------------------- a5a6d979e4 | Nicholas Feinberg | 2024-02-10 13:25:20 -0800 Simplify some local tiles mouse UI There's no longer any reason to wield non-weapons other than goofing, and the mouse UI doesn't actually let you do so, so remove support for ctrl-clicking to unwield scrolls, potions, etc. Also, don't bother checking to see if weapons are throwable or evocable etc. They haven't been for a while. :) -------------------------------------------------------------------------------- 1929dd4202 | Nicholas Feinberg | 2024-02-10 13:25:20 -0800 Further wield/unwield weapon refactors -------------------------------------------------------------------------------- e57e94b799 | Nicholas Feinberg | 2024-02-10 13:25:20 -0800 Remove the adjust_time_taken param Mostly unused and kind of clunky. (The alternative is clunky too, mind you.) -------------------------------------------------------------------------------- c02482bde3 | regret-index | 2024-02-10 02:25:01 -0330 More adjustments for some recently-changed late uniques * Norris's killratio is doing quite poorly since his return, in some part due to trying to avoid the same Paralysis that was seen as redundant in his original removal but also not successfully getting AF_SLEEP due to potential multiplier one-shot spikiness. He went from a resistable Drain Magic to an irresistable but proportional mp drain in d00db9e cutting out Brain Feed for Brain Bite, and that's another distinguishing aspect we can keep working with when he's already intersecting a little with other water themed monsters as is, so I'm pushing his antimagic component even further by replacing Brain Bite for Draining Gaze's extremely dramatic 0-30 mp range. More focusing on destructive magic is definitely less time spent on peace and contemplation of death, and it emphasizes a threat distinct from most late uniques. (This also comes with a somewhat silly tile for Draining Gaze and new messages + some resorting within monspell.txt.) * Frederick is missing the fighter tag, despite having been buffed to deal more melee damage than several other uniques in the same range with conjurations also (Norris, Jory, Sojobo). He's been doing decently after the 0.31 release and the tweaks of b247575 / b730325 / 1baa85e, so I'm nudging his damage down slightly (50 -> 44) in exchange for a little consistency with surrounding uniques in getting an accuracy improvement. * Boris can use equipment while regular liches can't, for whatever reason, and always spawns with a robe. As a little more of an incentive to actually kill him rather than park him on a floor, and to give more distinction between attempts beyond the orb run or the luck of other spawns, I'm giving him a randart robe every time he spawns, guaranteed to be at least +2. He spawns quite late, so it's rare for people to want to switch over to a robe if they didn't have a decent extremely light body armour already, but it lets e.g. casters refight Boris repeatedly to find Archmagi (and then possibly die to orbs and misery). -------------------------------------------------------------------------------- 14f8b2e1af | David Lawrence Ramsey | 2024-02-09 11:34:01 -0600 Add another fruit name to artefacts. -------------------------------------------------------------------------------- c02fa2a002 | regret-index | 2024-02-09 04:11:30 -0330 New decoration: mystic cages In the footsteps of conduits and on a different track than the divine and demonic statues prior, these are meant to start providing inobtrusive decorative features reflecting a relatively more regular life inside of the dungeon beyond mostly empty rooms filled with enemies milling about. Mystic cages are metal statue redefinitions as kennels and enclosures for many pets: the hounds of gnolls and orcs, the menageries of vampires, the experiments of various wizards, the hypothetically tamed beasts within Vaults, and so on and so forth. With how often there's a mix of given intelligences in randomized generic floor spawn sets, it's easy to miss a vault deliberately pairing given monsters together if noise makes them wander or split- these can help straightforwardly imply such with minimal effort. The mystic cage tiles are a mild edit of the tile for Maxwell's Etheric Cage, made by CanOfWorms, removed back in 0.25. -------------------------------------------------------------------------------- f7c527a163 | regret-index | 2024-02-09 00:45:15 -0330 Part one of megazig buffing - scale them faster The first ziggurat in each game is in a good place. Even three-rune characters can dip into the first few floors for reasonable rewards compared to Depths itself, while extended characters can try their luck even without L8/L9 conjuration spells for reasonably further. Megazigging, unsurprisingly, has been strangely affected by spells, gods, and items over the years since 62fe6c3. While megazig design shouldn't take any priority over the rest of Crawl, it's clear that most floors fall to Gozag, Ignition, orbs of mayhem, Powered by Death or Djinn HP, talismans of death, and the occasional fallback of autopenetrating javelins to the point of a certain tedium. Only Silence, Sap Magic, and the occasional hundred Seraphs manage to roll much of any chance to kill the player. While I wanted to provide some variety with minimal effort or codebase burden for a niche group of zig delvers, it is clear that most of the raw numbers of megazigs don't really threaten without luck considering the 100 or 200 zigs results the top delvers have. They can play older versions if they want to grind raw numbers, but for future versions, I'd like to even out this difficulty across floors some more and make the practice somewhat more of an accomplishment overall by making zigs past the first all fairly more lethal. The first step of several planned steps for megazig buffing is to ramp up the current scaling. Zig completion's effects on monster choices is tripled in most cases and doubled on monster placing in floors. Floors won't always max out before hitting double-digits (due to increasing HD inherent to those monster choices), but around Zig 9 they usually can, and this also emphasizes the danger of several other sets before one can completely max out elemental skills or reliably have all of the unrands to work with. The floors with silent spectres, pan lords, or ghosts all don't scale those monsters quite as fast as the others, though. (Also, slip in some buffs to a few loose floors. Of particular note: quicksilver elementals for dispelling haste are now emphasized monsters in Dis and Vestibule sets, draconian stormcallers and scorchers are emphasized in draconian sets to rain down Upheaval + damnation, and Pan floors now scale to emphasize just tier-1s and demonspawn.) -------------------------------------------------------------------------------- 2d33c3cfaf | Nicholas Feinberg | 2024-02-08 10:48:16 -0800 Fix Gastronok's corpse (FPSBOSSFIGHT) Broken in 5b44be1ddb685f4f29a3c56d8fed4afaf7c9e86f. -------------------------------------------------------------------------------- 9dbbe29261 | regret-index | 2024-02-07 22:55:20 -0330 Tweak and add some monster dialogue Assume cats are very small, that mummies can't smell, and that we've got something less meta to weep about. It's going to take a long time to get kill lines for most generic monsters, but nicolae- and DracoOmega have some good ones for killer klowns. -------------------------------------------------------------------------------- 3e06421dc0 | regret-index | 2024-02-07 22:25:54 -0330 Fix webtiles tile animations Broke in aef1140 adding more animating tiles, properly handled now. -------------------------------------------------------------------------------- ad68cc1cce | regret-index | 2024-02-07 22:23:56 -0330 First fresh vault review for 0.32 The usual scaling sets much more versus depth, reducing long tails of absurd rolls for monsters, cleaning up headers to fit a more consistent house style, so on and so forth. One particular point that'll fit into these recurring vault reviews from hereon is that with more decorative features added and to be added, early crystal appearances and granite statue counts will be regularly reduced to compensate- there's far too many uses of such in early D for them to stand out as decorative any more or for it to stand out in dangerous vaults past the earlygame, which can do with some trimming down in exchange for some of these fancier options. A few other things of note: * Some hells ambushes have been nerfed a little, with added cover and slightly lower monster counts. While extended can and should be quite cruel to players, there's a big difference between even the recent branch buffs and immediately ambushing a player with adjacent paralysis and damnation or making melee characters wade through 5+ curse skulls in an open layout, considering the * evilmike_ambush is now nerfed in a variety of branches, by using hand-picked spawns usually from the given branch it spawns in. The sheer hostility of the vault was less of a concern when far more of the later branches had far more harmless spawns in them, but this was heavily aggravated by the revision to hell's sets and the introduction of things like Blink Allies Encircling and berserkable tmons. Most of the branch placements still have sheer volume and a few notable threats at such high quantities, anyway. * Air zigs now use wind drakes and ironbound thunderhulks, to add a little more variety. -------------------------------------------------------------------------------- 77eb882913 | regret-index | 2024-02-07 02:15:44 -0330 Reflavour Ijyb into an artificer While we don't need to represent every single last past and future player option available, one background lacking much for monster representation already has a perfect fit for it. Ijyb is distinguished by always having an early high-tier wand since 1a4ba80, much like Artificer's wand of iceblast. While a hypothetically more deliberate artificer unique would want for more items to use, a unique with an early strong one can avoid handing out too much loot at once and also avoid the heavy burden of making non-wand evokers work for monsters. Ijyb also has a variety of old lines like "Me kill you!" and "Die!", deeply generic lines that can be easily replaced with repurposed, long-unused lines written up for Pakellas. Ijyb's new title is the Inquisitive. Her description and dialogue now emphasizes her experimental homemade wand (thus also explaining how she has one so early in D) as well as using her foes as new test subjects. She still keeps her usual manner of speech despite the new vocabulary, which should help give her somewhat distinct dialogue overall, too. None of Ijyb's stats are themselves are changed, since she's already plenty dangerous. Maybe she should always have a club and not a coinflip chance for a dagger, like Artificers start with? -------------------------------------------------------------------------------- b47733332d | elliptic | 2024-02-06 21:36:13 -0500 Don't look at movement delay when computing Vhi's Electric Charge delay Spriggans, nagas, and Chei characters don't take an unusual amount of time for any other translocations. Vhi's is more controlled than Blink or Passage (and Passage does usually involve some walking to actually use), but it is still restricted enough in use that I don't see a problem with letting it be a fast way for nagas or Chei characters to reposition in certain situations. If necessary, it seems much easier to justify Chei hating this spell than to justify this spell looking at movement delay. There were also some weird interactions previously with Vhi's being slower to cast for humans in shallow water and faster with swiftness active, etc. -------------------------------------------------------------------------------- 9fbf7fb75a | regret-index | 2024-02-06 19:25:10 -0330 More non-player spell tiles A lot of kinda placeholdery re-uses of old tiles or old styles, but almost anything is usually better than the current generic icon. Sources: * Awaken Forest: Sastreii's regular tree tiles plus snw-0's berserk icon. * Berserk Other: DD's old Evoke Berserk tile. * Corrupting Pulse: Denzi's original tile for wretched stars. * Legendary Destruction: Roctavian's Fireball tile, snw-0's recolouring of that for Iceblast, and aidanholm's recolouring for Ghostly Fireball. * Mindburst: Ontoclasm's disint / mindburst wand icon, plus snw-0's old Brain Feed icon. * Roll: Sastreii's rolling boulder beetle tile. * Summon [many things]: The old rltiles summon icon on top of: roctavian's redbacks (Summon Spider), roctavian's edit of coolio's emperor scorpions (Summon Emperor Scorpions), roctavian's Executioners (Gloorx's spell), roctavian's edit of ontoclasm's hell sentinel tile (Dispater's spell), roctavian's tzitzimimeh (Ereshkigal's spell). * (Also, some replacements of tile choices for Summon Drakes (using snw-0's recolour of roctavian's death drake), Summon undead (snw-0's jiangshi tile), and the four standard Summon Elemental spells (using ontoclasm's tiles for each). * Cleansing Flame, Corrupt: The current invocation ability tiles for them, both by snw-0. * Debugging Ray: snw-0's cancellation tile over DracoOmega's bombardier beetle edit of Bloax's goliath beetles. This also slightly tweaks the Cleansing Flame description to not mention invocations skill when a monster has the spell. -------------------------------------------------------------------------------- 6e397d8a7c | David Lawrence Ramsey | 2024-02-06 15:24:25 -0600 Add missing "Dog" status description. -------------------------------------------------------------------------------- 4b40a1289b | Nicholas Feinberg | 2024-02-06 13:02:11 -0800 Tweak bsig desc (CarefulOdds, regret-index) -------------------------------------------------------------------------------- 8a9189f6be | Rytis Petronis | 2024-02-06 10:09:26 -0600 fix acc display of throwing slaying bonus (#3343) this will div_rand_round beast form slaying for accuracy displaying otherwise [Committer's note: Squashed, and shortened initial commit message. Closes #3343.] -------------------------------------------------------------------------------- cc018136db | regret-index | 2024-02-06 12:34:44 -0330 Fix placeholder BB boulder tile (SentientSupper) 5b44be1 accidentally used the base boulder beetle tile instead of the rolling one. We still could use an actual distinct tile for this in the style of its spell icon (something more geometric), but for now, this both makes it properly spherical and also now animates it. -------------------------------------------------------------------------------- 1704d4baff | regret-index | 2024-02-06 12:34:44 -0330 Unbrace -------------------------------------------------------------------------------- fac0567ad4 | wheals | 2024-02-06 14:28:14 +0200 Fix a crash when the player gets mighted by chaos brand -------------------------------------------------------------------------------- 2e8054a333 | regret-index | 2024-02-06 00:58:27 -0330 Make Xom give more chaos brand, adjust chaos brand Xom amusement Hasting and mighting hostile monsters with chaos now sometimes lightly amuses Xom to allow more managing Xom mood by using the now more usable chaos brand. Since that brand is more usable by players and less lethal from monsters, we can share it a little more often in Xom's actions. Xom now overrides any non-holy weapon brand of monster weapons when chaos branding weapons, rather than only touching unbranded weapons. Chaos shouldn't be so quite limited, and it makes it more likely to find more usable chaos weapons. (Still not handing out chaos missiles though, since that clogs up inventories and chaos nets act deeply strangely. They've been slightly cleaned up for the sake of Chuck, though they still need unifying with chaos weapons and BEAM_CHAOS eventually.) Also, Beogh's slated to not involve giving equipment gifts to orcs in a future rework, so orcs don't need to have it be invisibly randomly blocked. -------------------------------------------------------------------------------- 3087d83e6e | regret-index | 2024-02-06 00:58:27 -0330 Buff Maurice Will (ragingrage), nerf Erica Erica leapt up from a ~4.4% killratio to a ~9.4% killratio after b730325 over the course of the 0.31 tournament, which was a lot more than the desire to push her to the pre-octofying recent killratio of ~5.7%. She gets a minor Will nerf (as octopodes don't have any particular Will advantage over other species) and most (but not all) of her melee and EV increases reverted. Contrariwise, while Maurice is doing a lot better for the antimagic bite in sheer damage terms, he's still doing merely okay for a pre-Lair unique at 3.1% killratio. Vine Stalker gets boosted Will compared to baseline species, so he can get a minor Will buff. (Also, fiddle around a bit more with Maurice speech lines on the new flavour front.) -------------------------------------------------------------------------------- 32696db3d1 | regret-index | 2024-02-06 00:58:27 -0330 Lower the contrast on bedeviled crystal tiles (PleasingFungus) The fancy graphics on top of a wall tile is already plenty without needing to quite catch the eye so much for being just a retiled / redescribed wall, I suppose. The more colourful originals will sit in the git history anyway for others' potential use, and the desaturating also sells corruption in its own fashion. -------------------------------------------------------------------------------- af751e2436 | DracoOmega | 2024-02-05 22:30:09 -0330 Fix players being naked and refactor The addition of a mirrored weapon tile category caused a bunch of code that calculates what order to draw player paperdoll parts to work incorrectly. And trying to fix it uncovered FOUR DIFFERENT PLACES that were duplicating a handmade list and logic for determining this order. I have consolidated these into a single function, and also attempted to reduce some other duplicated logic in the process. (I think a little more couple be shaved off, but it was less clear whether some of the other differences were important or not) -------------------------------------------------------------------------------- 1a93b60f7d | DracoOmega | 2024-02-05 19:05:08 -0330 Revert "Revert "Enter the mirror dimension"" with a fix This reverts commit 35313b3b0401f36c7d3da60decceb00c3a9668e6. An uninitialized variable seems to have been the cause of build problems. -------------------------------------------------------------------------------- 70af1cc7e0 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update spells.txt -------------------------------------------------------------------------------- cfad4d882d | Zhang Kai | 2024-02-05 14:10:13 -0800 Update mutations.txt -------------------------------------------------------------------------------- cbc441926e | Zhang Kai | 2024-02-05 14:10:13 -0800 Update mutations.txt -------------------------------------------------------------------------------- 288a8eea13 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update wpnnoise.txt -------------------------------------------------------------------------------- 9fa2045b72 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update wpnnoise.txt -------------------------------------------------------------------------------- 9bb898f744 | Zhang Kai | 2024-02-05 14:10:13 -0800 Create wpnnoise.txt -------------------------------------------------------------------------------- b18a041c26 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update shout.txt -------------------------------------------------------------------------------- ab21dbf0b5 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update monspell.txt -------------------------------------------------------------------------------- 47820993c2 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update unrand.txt -------------------------------------------------------------------------------- b395becbbf | Zhang Kai | 2024-02-05 14:10:13 -0800 Update tutorial.txt -------------------------------------------------------------------------------- 24aeb8fce1 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update status.txt -------------------------------------------------------------------------------- 9394785459 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update spells.txt -------------------------------------------------------------------------------- db81703f1b | Zhang Kai | 2024-02-05 14:10:13 -0800 Update species.txt -------------------------------------------------------------------------------- 78019320dc | Zhang Kai | 2024-02-05 14:10:13 -0800 Update skills.txt -------------------------------------------------------------------------------- 7189f9785e | Zhang Kai | 2024-02-05 14:10:13 -0800 Update mutations.txt -------------------------------------------------------------------------------- 2699e95f02 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update monsters.txt -------------------------------------------------------------------------------- d3b20e54b6 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update items.txt -------------------------------------------------------------------------------- ed181fcaab | Zhang Kai | 2024-02-05 14:10:13 -0800 Update gods.txt -------------------------------------------------------------------------------- 5344a817ef | Zhang Kai | 2024-02-05 14:10:13 -0800 Update features.txt -------------------------------------------------------------------------------- 18cdba413a | Zhang Kai | 2024-02-05 14:10:13 -0800 Update clouds.txt -------------------------------------------------------------------------------- 21a18ad617 | Zhang Kai | 2024-02-05 14:10:13 -0800 Update branches.txt -------------------------------------------------------------------------------- 18257a444a | Zhang Kai | 2024-02-05 14:10:13 -0800 Update backgrounds.txt -------------------------------------------------------------------------------- 301c3d356d | Zhang Kai | 2024-02-05 14:10:13 -0800 Update ability.txt -------------------------------------------------------------------------------- c7ef563f12 | advil | 2024-02-05 15:53:11 -0500 fix: improve some rltiles error messages -------------------------------------------------------------------------------- 35313b3b04 | Nicholas Feinberg | 2024-02-05 12:51:22 -0800 Revert "Enter the mirror dimension" This reverts commit 42a248e5ca1fbb01cd6a4bc39afc052bf682d3cf. This reverts commit 8649878a938f6e263d233149ee192d4ca934b401. -------------------------------------------------------------------------------- 8fd5419284 | elliptic | 2024-02-05 15:38:00 -0500 Rename maybe_random_div to maybe_random2_div So that I stop being confused by it. -------------------------------------------------------------------------------- a335ffa919 | advil | 2024-02-05 12:46:42 -0500 refactor: generalize some feature description code 2c8f65ca5f32ac introduced some code to try to allow redefined features to be conditioned on layouts, for the sake of Dis statues. This code made various assumptions like: there is always a layout, a level always has vaults, and a layout is always at position 0 of the level vault vector. bc18a39e1d331e tried to fix some of these assumptions, but didn't really handle the case where a level has no vaults at all (can be true in the abyss), which leads to an empty level vault vector. (Accessing position 0 of such a vector may fail to crash under various compiler and runtime circumstances...) This commit refactors to (i) reuse previously existing, slightly more robust code to find the vault at a position, and (ii) adds a function to try to more robustly find a layout if one exists. It's unclear to me whether the position 0 assumption was or wasn't safe if there is a layout (it wasn't guaranteed, but may have been true in practice), but this code doesn't make it. As far as I can tell this works with the dis statue case. -------------------------------------------------------------------------------- 42a248e5ca | Nicholas Feinberg | 2024-02-05 07:52:04 -0800 Fix an unsigned comparison (Monkooky) -------------------------------------------------------------------------------- 8db1b9f803 | Nicholas Feinberg | 2024-02-04 22:38:04 -0800 Rework attack delay Rather than special casing many places where we *don't* want to change time after a melee attack, make melee attacks run time only when it *does* change. -------------------------------------------------------------------------------- 672eff3212 | Nicholas Feinberg | 2024-02-04 18:01:30 -0800 Refactor more band leader code -------------------------------------------------------------------------------- c8c0bed1ba | DracoOmega | 2024-02-04 17:55:10 -0800 Refactor testing of band follower/leader relationships A bunch of multi-line checks to props were being repeated in several places, which are now more nicely wrapped up in a couple simple monster methods. Also splits the MF_BAND_MEMBER flag (which was effectively only used to make band members talk 1/10th as often...) into MF_BAND_FOLLOWER and MF_BAND_LEADER in preparation of some future behavioral tweaks to make it less easy to pull followers away without their bands noticing. -------------------------------------------------------------------------------- fd3f6d62af | DracoOmega | 2024-02-04 17:53:40 -0800 Make ability_name return string instead of const char* I want to do some dynamic name construction inside that function, and it's a lot more straightforward that way. -------------------------------------------------------------------------------- 63ff0dcbff | DracoOmega | 2024-02-04 17:53:09 -0800 Fix minor wizmode bug with xp calculation It still thought pacified monsters were worth 1/2 xp. -------------------------------------------------------------------------------- 8649878a93 | Nicholas Feinberg | 2024-02-04 17:49:42 -0800 Enter the mirror dimension Instead of hardcoding a hand-made set of flipped weapon tiles, generated flipped versions of every single doll weapon tile and use *those* for dual-wielding monsters. (Ettins, blademasters, 2hos, etc.) Arguably, we should use this tech for Frances? I'm not sure exactly how, though. Preparation for steel elves. -------------------------------------------------------------------------------- 5f43475211 | regret-index | 2024-02-04 20:05:32 -0330 Hide the "report this" metal statue description on banishment Since it can't inherit the vault or layout's description or tile when being moved to the Abyss. This also might also help with abyss_walk test crashes? -------------------------------------------------------------------------------- 722a80f8b5 | regret-index | 2024-02-04 19:59:27 -0330 Don't let Throw Ally throw tentacles (Lici) If an iron giant throws the tentacle tip, it will cause a disconnecting sever. If it throws the tentacle segments, an unattached tentacle segment will sit on the floor for one turn before disappearing the next. Either way, this is definitely undesired behaviour we can avoid in the slim cases of Zot trap eldritch tentacles or charm / scrolls of summoning plus Malign Gateway in Dis and a tiny number of vaults. -------------------------------------------------------------------------------- 668cce9384 | regret-index | 2024-02-04 19:59:27 -0330 Fancify Zot and Pan a little more This adds some experimental new bismuth-styled crystal tiles for Zot, with a custom rainbow palette and a faint square impression from ontoclasm's old labyrinth tiles- meant to reflect the varied elements and chaotic nature of Zot. This also makes a bunch of trees and plants in Zot always place as petrified, demonic, or withered- a lot of Zot monsters mention being quite ancient (liches, moths of wrath) or primordial (orbs of fire) or both (proteans), so leaning a bit more into being a realm sealed extremely long ago feels rather appropriate compared to getting rather normal greenery clashing with most of Zot's default palette, also. Zot should be dramatic! (Also, threw some conduits in pan_disco_hall and fixed a missing floor colouring there.) -------------------------------------------------------------------------------- 95bf75a7d5 | Nicholas Feinberg | 2024-02-04 15:24:54 -0800 Unbrace -------------------------------------------------------------------------------- bc18a39e1d | Nicholas Feinberg | 2024-02-04 15:24:43 -0800 Don't crash in the abyss_walk test (DracoOmega) Like the Abyss itself, this code unsettles me. -------------------------------------------------------------------------------- 5b1be31b7c | elliptic | 2024-02-04 16:20:38 -0500 Make groups of monsters handle diagonal chokepoints more consistently Sometimes a monster that can attack the player will instead walk to the side to let a friend move forward and help. For example, when fighting a pack of yaks near the corner of a corridor : ##### : #.YYY : #@### : #.### the lead yak has a 50% chance of moving west into the corner instead of attacking the player. This behavior didn't work right in one particular type of situation: : ###YY : ###YY : ..Y## : .@.## : ...## It used to be that the lead yak would never move south or west in such a situation, even though in the similar situation with an extra wall : ###YY : ###YY : ..Y## : .@### : ...## it would have the expected 50% chance of moving west. (There was a similar issue as well with the player moved one square north in the preceding two diagrams.) This commit tries to fix this, so you will no longer be safe fighting one yak at a time in the second diagram above. Other behavior is hopefully unchanged. Note that in the situation : ###YY : ###YY : .@Y## : .#.## : ...## the yak will still never move south - this is because currently monsters will only change their move by a 45 degree turn, not a 90 degree turn as would be needed here. The goal of this commit isn't to make groups of monsters as smart as possible, but just to fix a single weirdness/bug with the old behavior. -------------------------------------------------------------------------------- 29182dc2f9 | regret-index | 2024-02-04 17:40:32 -0330 Ghost / illusion Starburst -> Bolt of Fire This follows the same spirit as Necrotise -> Pain, Confusing Touch -> Confuse, Curse of Agony -> Agony, Dragon's Call -> Summon Dragon, and so on, of being very close in sharing the same core mechanic (penetrating fire beam here) while being awkward for monsters to get directly (they'd shred all of their allies, aligning in the 8 directions is awkward for mobile monsters). Helps continue to maintain Illusion Card and Mara Illusions, plus continues to help player ghosts not fall too hard behind from the present day. Also, slightly resort the translated spell list in ascending spell-level order, since this list is starting to get kinda long. -------------------------------------------------------------------------------- d980ff3818 | regret-index | 2024-02-04 17:40:32 -0330 Add a Ghoul title In the spirit of ccc5534 and e618eea and so on, it feels suiting to have the current strongest of the corporeal undead anthrophage monsters be reflected in the player titles too. Nicely dramatic for anybody who wants to max out a -2 apt, anyway. -------------------------------------------------------------------------------- 0d27ed53bc | Nikolai Lavsky | 2024-02-04 23:59:56 +0300 task: remove the 0.31 trunk tournament reminder This reverts commit e66fa4eb29bf7b720200d5fbfce887e1803ce131. -------------------------------------------------------------------------------- 4c9cb3f8dd | yrdzrfxndfvh | 2024-02-04 14:40:18 -0600 Add "Royal Mummy" title -------------------------------------------------------------------------------- 5b44be1ddb | Nicholas Feinberg | 2024-02-04 12:34:40 -0800 Move monsters into YAML For hopefully better readability and editability, without having to cross-reference obscure fields. -------------------------------------------------------------------------------- 0f96f66c9d | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Add C, J, R, and U death messages (Oneirical, #3452) Jiyva's messages only make sense if the player left a corpse, so they're adjusted for that. -------------------------------------------------------------------------------- 6d6becde81 | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Add Hepliaklqana and Ignis death messages. -------------------------------------------------------------------------------- 59d7447d90 | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Make all gods use death messages if available. This restructures _god_death_message(), and renames it _god_death_messages(), since it can now display multiple messages. The Xom message, the Gozag gold message, the Okawaru duel message, the Beogh heretic priest message (extended to account for if you ever worshipped Beogh, and calling you an apostate instead if you abandoned him), and the Nemelex death message (now only shown if you left a corpse) are displayed after any death messages from the database. -------------------------------------------------------------------------------- 10d5f734ec | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Add database key handling to god death msgs. The default death message for any god will be "@God_name@ death". Anything specific to leaving a corpse, having undead holiness, or having nonliving holiness is specified by the appended keys "corpse", "undead", and "nonliving". Add a few god speech aliases to account for this. -------------------------------------------------------------------------------- 8b38da208c | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Put holiness god death msgs in the database. -------------------------------------------------------------------------------- ef299f28a6 | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Save monster holiness for undead/nonliving. Don't check it multiple times, since it affects several god death messages. -------------------------------------------------------------------------------- 76c4a70de9 | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Move simpler god death messages to the database. Currently only Fedhas. -------------------------------------------------------------------------------- 855f1f9822 | David Lawrence Ramsey | 2024-02-04 14:33:06 -0600 Save whether the dead player left a corpse. Don't check it multiple times, since it affects several god death messages. -------------------------------------------------------------------------------- 6a9e7a72c1 | David Lawrence Ramsey | 2024-02-04 14:17:07 -0600 Add Nemelex to Recite's list of chaotic gods. -------------------------------------------------------------------------------- 3be09a196a | regret-index | 2024-02-04 16:44:56 -0330 Adjust V calls for Forceful Invite, Plane Rend Since aa1e17a, ironbound thunderhulks have ended up twice as high in the kill statistics as any other monsters worldbinders summon, despite being slightly below the average summon choice in weight- they got buffed not much later in 59a505c, and are currently one of the most effective killers in the branch of V itself. Worldbinders now summon ironbound frosthearts instead, which may have autohit attacks but also hurt for less damage while respecting more AC and being much easier to resist. Still should be interesting to reposition and restrategize around. As a different home for thunderhulk summoning, Ds corrupter Plane Rend loses vault sentinels- who aren't very likely to hex even the lowest Will species at xl 27 as Pan expects, with only 19% against having a single peice of Will gear- and swaps in those thunderhulks instead, which can at least blast Pan explorers somewhat reasonably instead. -------------------------------------------------------------------------------- aee7bb2a12 | Nicholas Feinberg | 2024-02-04 12:03:50 -0800 Checkwhite -------------------------------------------------------------------------------- 3ce9459eb3 | Nicholas Feinberg | 2024-02-04 12:03:31 -0800 Hide removed items in ?/i (elliptic) -------------------------------------------------------------------------------- 7569c349a0 | Nicholas Feinberg | 2024-02-04 12:03:19 -0800 Fix automagic while caught (noisytoot) Yuck :( -------------------------------------------------------------------------------- 7d43067348 | Nicholas Feinberg | 2024-02-04 12:02:59 -0800 Make skeletons eternal It seems weird that skeletons rot away in the presumably finite time that the player spends within the dungeon, and it's cool to leave more of a trace of your presence when retracing your tracks. Since skeletons are purely decorative now, let's leave em around. Some argument for removing the ridiculous and complex corpse decay system entirely, but I don't have the heart. -------------------------------------------------------------------------------- 95b6ac8b5c | Nicholas Feinberg | 2024-02-04 12:02:49 -0800 Revert "Temporarily evert "Simplify off-hand attacks"" This reverts commit cbf77bbcfcd59d85fcee38741aa2897316b9d79d. -------------------------------------------------------------------------------- 1854ded1b6 | elliptic | 2024-02-04 15:01:57 -0500 Deep Elf: Air Magic apt 0 -> +1 (SentientSupper) This is a relic of the days when High Elf existed and this served to help differentiate between them. -------------------------------------------------------------------------------- aef1140ae2 | regret-index | 2024-02-04 16:31:19 -0330 New decorations: magic conduits, bedeviled crystal These are both highly variable pieces, meant to reflect spell schools and demonic planes, to serve as magical varieties of decoration beyond the usual emphasis of clouds or longer lengths of plain crystal walls. The former are all further metal statue types of miscellaneous magic collecting devices, with a slightly different orb, different palette, and names each for all the spell schools. (Translocations is grouped together with Summoning, as we have few workable translocations themes for vaults.) These conduits help a couple of magical portals and branches beyond the recent occasional presence of bookcases- Ice Caves, Volcanoes, Wizlabs, Snake, Elf, Crypt, and Zot. They also provide some more workable flavour for the spell-gifting gods who don't give spellbooks, Kiku and Vehumet, plus a small number of particularly magic-focused vaults deeper on- across Vaults and Depths. The latter is a different tile and description for crystal walls, and serve as links to the various demonic planes of regular games and extended for a multitude demonic vaults without all of them leaning too hard on demonic vegetation or lava (as clashes with quite a few other themes). They don't actually spawn inside Hell / Pan / Abyss themselves, but there's a large number of demonic vaults across D, Depths, Zot, and so on that can reasonably fit a little window into Cocytus or Pan or the Abyss. The conduits are a mix of snw-0's first spell icon for Battlesphere, the rltiles original iron golem, and a variety of subtle overlays using ontoclasm's item type icons. The bedeviled crystal combines quite a few parts- roctavian's old lugonu altar, snw-0's grey crystal recolouring, jpeg's original strange machine for Tukima's wizlab, and depending on the crystal: dd's lava, snw-0's recolouring of roctavian's floor_frozen, Denzi's cobalt_stone + wall_bars + floor_demonic, roctavian and due's edits of Denzi's iron walls, and the original rltiles work on floor_nerves. -------------------------------------------------------------------------------- f7c557ff5a | regret-index | 2024-02-04 16:27:14 -0330 New decoration duo: silver statues, scintillating statues We've got a small number of god / theme statues around already, like Gozag and TSO's golden saint statues. This could be extended further for both flavour and visual variety purposes, and so these two follow suit. The former are metal statue of order, law, security, and stasis. These are obviously used in vaults for Zin, but also employed in the Vaults, a place full of metal, disciplined guards, and rather monotonous features and terrain beyond sparing glass or bookcases. (Yes, there's undead in the branch, but these statues aren't direct links to Zin, and guards in different areas can have different faiths. Think of the Crypt as being actively sealed away inside the branch.) The latter are rainbow stone statues, representative of chaos and chance. There's enough Xom and Nemelex vaults for them to fill out a respectable number, alongside some klown-centric vaults in Zot and a rare flashiness component for Gauntlet exteriors. Worth of note is that this comes with a couple of highly chaotic Xom and Lugonu vaults being made consistently traversible and instead emphasizing these fancy animated statues, removing the need to fill them with no_tele_into spaces and letting them serve as properly transparent rather than vetoing at random. The former combines the sparkles of roctavian's Zin altar, Denzi's silver star without that altar's hand in front of it, and the pedestal of ontoclasm's old silver statues before those were turned into obsidian statues. The latter uses ontoclasm's statue plinths alongside CanOfWorms's pieces from Xom's chessboard. (If we make more evokers in the future, they probably should shift further yet from what the either of those did, anyway.) (This also removes the no_random vault tag, used literally nowhere besides wizlab_cigotuvi's doors, because it didn't work for any non-door purposes and the support for it also made animations themselves not consistently work. This also does a fair bit of header clean-up and updating for some of the enemy using vaults, chaotic or not.) -------------------------------------------------------------------------------- 2c8f65ca5f | regret-index | 2024-02-04 16:27:14 -0330 Make and use a hidden metal statue feature We've got a pair of explicitly metallic statue types in vaults that don't actually deconstruct into metal: iron statues in Dis, and golden statues in both TSO and Gozag vaults. Further updates will add another two statues that are also clearly not made of rock. Metal walls behave noticeably differently from rock walls- alongside the relatively unimportant matters of LRD messages / damage and Shatter difficulty, most relevantly they're also not diggable. Statues ostenibly made of metal can pick up these properties, especially when reserved for rarer theme vaults; it also heavily reduces the subvault hacking needed to set two different statues with two different descriptions within the same vault. The tile flips upside-down snw-0's DNGN_STATUE_TRIANGLE tile and recolours it with ontoclasm's impish iron statue tile, though both the base feature and the tile both shouldn't be seen by default- the regular metal statues themselves __are not to be used by vaults__, and instead as bases for specific vault flavoured statues. This also mildly edits raw_feature_description in directn.cc to accomodate letting layout code use set_feature_name, so the iron statues in Dis's layout_subdivisions have the same iron statue name and description as all of the vaults in the branch do. This probably shouldn't be too much of a concern regarding preserving given vault flavour versus given layouts, since we're not otherwise usually changing feature names for entire layouts too often. -------------------------------------------------------------------------------- cb1c6d8acb | regret-index | 2024-02-04 16:27:14 -0330 Juggle around console statue and fountain glyphs The more decorative statue types we add to the game and the more vault-exclusive custom statues still linger around, the more awkward it is that monster statues share a glyph with decorative feature types. They don't really trick people between the monster list and autoexclusions, anyway, though their flavour as an actual monster is already flavour enough. This moves monster statues in console from 8 to I- immotile non-plants. This should help those still sticking to ASCII deal with future decorative statue type additions by splitting them up so 8 stays as an entirely decorative glyph. Also, in unicode, this moves decorative statues, from 8 to ß- the eszett still looks like an 8, but either unicode mode tends to avoid using alphanumeric characters for anything that isn't a monster. Somewhat seperately, in ASCII fountains share a glyph with runes and misc evocables, which is completely absurd. I'm moving it to -, since there are plans for other dungeon installations that don't block movement or projectiles and that can reasonably share the same glyph. It's hopefully not too confusable with _, which frequently have changing colours, anyway. -------------------------------------------------------------------------------- fab9c5ac03 | regret-index | 2024-02-04 16:27:14 -0330 Make Nemelex Xobeh count as chaotic (but not evil) If Makhleb is a chaotic god for offering random blasts plus providing summons of neqoxecs and cacodemons, then surely Nemelex also counts as chaotic- much bigger and wilder potentially-unpredictable blasts, mass enemy polymorph, and outright providing Pandemonium lords as well as those same malmutating demons as summons. Nemelex doesn't count as evil here, though, following the demonic chaos precedent of Xom. This currently just angers Zin when abandoning them for Nemelex. It does make another upcoming decorative feature have a little more use, though. -------------------------------------------------------------------------------- 56a75c70eb | Nicholas Feinberg | 2024-02-04 11:31:13 -0800 Pass weapon into ranged attacks Constify more things, and don't assume that the weapon being used to fire is the same weapon that the attacker is holding in their primary hand. Preparation for steel elves. -------------------------------------------------------------------------------- c5f5bd7300 | Nicholas Feinberg | 2024-02-04 11:28:18 -0800 Fix missing blowgun tile for unrand -------------------------------------------------------------------------------- e84ba5949b | Nicholas Feinberg | 2024-02-04 11:26:52 -0800 Remove unused function -------------------------------------------------------------------------------- 79f8f80802 | Nicholas Feinberg | 2024-02-04 11:20:21 -0800 Remove support for antique wielded tiles Not a lot of folks wielding rods or darts lately, for some reason. -------------------------------------------------------------------------------- 58955fab79 | advil | 2024-02-04 11:03:18 -0500 docs: tweak WSL webtiles docs For WSL 2, there are apparently some IP address complications. This commit attempts to address them... -------------------------------------------------------------------------------- 058985b245 | DracoOmega | 2024-02-03 02:42:53 -0330 Fix dactions not being processed after level peek (Darby) Each level stores an index into the global list of scheduled dactions that reflects 'the last daction that was done on this level'. The idea being that whenever you reenter a level where you've already been, it will use this index to process only the 'new' dactions that have been added since you were there last. The problem is that (for some reason), the dactions_done wasn't actually being marshalled properly, but the game was assuming that it was impossible to save a floor without all dactions being caught up. And this is distinctly NOT the case in at least one situation (and maybe more): level excursions! Essentially, making a level excursion to any floor would cause any dactions scheduled (but not yet processed on that floor) to never happen there. An easy way to demonstrate this is by pulling Kirke to another floor, away from her hogs, and killing her there. Then peeking back at the old level. If you did this, and then returned for real, the hogs left behind would never transform back, since the excursion had made the game save that floor's dactions_done as 'total number of dactions that exist'. This potentially affects countless things, in a wide variety of stuations. Even doing things with the shopping list triggers level excursions, which would have invalidated daction state on the floor with the shop, I'm pretty sure. This fix is a very simple one, and seems to work (and feels like what this code always should have been). But it's possible I'm overlooking something, of course, and it can't be as simple as it seems. Fingers crossed? -------------------------------------------------------------------------------- a30500b4d3 | regret-index | 2024-01-26 02:45:38 -0330 Catch a missing Depths gem (GnomeSayin) evilmike_zot_entry_gauntlet doesn't use the same standardized function of zot_entry_setup like the other zot entry vaults do because it uses a different monster set than the others. As such, it was missed in 866d48a, which was mostly checking the presence of that function being called. I edited Zot gem placement in 2f004bd, but I missed out on this one also because I was just editing the use of that function. (I also didn't catch it in afdcd2b adjusting a lot of gem placement, because it wasn't one of the rune branch uses as I was worried about at the time). Sorry, everybody who missed out on the gem this way. I'll fit another review of smoky and midnight gems into the next big vault review for the early start of 0.32. -------------------------------------------------------------------------------- ec2d92a32c | Implojin | 2024-01-24 18:41:06 -0600 fix: Apply attack delay to WJC rampage kills (Undo) 7bd419a0e5 introduced a bug where if the player killed their rampage target during WJC postmoves, that move would take zero delay and fail to end the turn. Using this bug, the player could equip seven-league and a high damage weapon like the lochaber axe or dark maul, and bounce around the screen making zero delay WJC attack moves. move_player_action implicitly assumes that either an attack or a movement will be attempted if it's being called: In this case, after 7bd419a0e5, its movement attempt was being blocked, and there was no target monster left to attack, so it eventually just returned without applying time_taken or ending the turn. This commit hopefully fixes the bug, by applying attack delay and ending the turn if our rampage target dies during WJC postmoves. -------------------------------------------------------------------------------- 2adb59ae06 | gammafunk | 2024-01-23 19:15:46 -0600 fix: Serpent of Hell placement in Dis (Sar) The subvault dis_grunt of iron_city_of_dis had bad substitutions that could sometimes replace the glyph used for the SoH with some other definition. I've reworked the substitutions to (1) always place the SoH if Dis is its target branch, (2) randomize placement between the two locations for the SoH the map uses, and (3) retain the slight randomization of the spawn location in the rune chamber regardless of whether SoH places on this map. (cherry picked from commit 3a7656b989bb67f3439edfef999a82b942910c4d) -------------------------------------------------------------------------------- 5c88369fb2 | Nicholas Feinberg | 2024-01-23 08:53:58 -0800 Remove a duplicate description (regret-index) -------------------------------------------------------------------------------- b04dd89b9b | Nicholas Feinberg | 2024-01-22 21:01:54 -0800 Don't crash on bad mut names (regret-index) -------------------------------------------------------------------------------- abbd88f42e | Nicholas Feinberg | 2024-01-22 20:59:20 -0800 Fix two misnamed mutations (regret-index) -------------------------------------------------------------------------------- 6a59d0303a | Nicholas Feinberg | 2024-01-22 20:58:17 -0800 Fix ?/u showing potion of (regret-index) potion of mutation is not a mutation named potion of. -------------------------------------------------------------------------------- d9ff480968 | DracoOmega | 2024-01-21 00:01:23 -0330 Don't let spectral weapons get free hits every now and again Actual triggered attacks by spectral weapons were handled by spectral_weapon_fineff, but it was still possible for the spectral weapon monster to randomly path into the player (or, presumably, something else). And since all it takes in Crawl logic to initiate an attack is 'trying to move into something we're not aligned with'), this would cause an attack. Potentially multiple attacks in a row, in fact. Since we never really want fight_melee to happen for spectral weapons, this specifically blocks that. (We could just reduce their speed to 0, but the sight of them dancing back and forth feels a minor shame to lose, I think) -------------------------------------------------------------------------------- 36ad0d86fd | DracoOmega | 2024-01-20 23:59:25 -0330 Fix a very strange crash involving Vehumet wrath and quivering plasma beam If Vehumet wrath triggered while the player had plasma beam quivered, the game would reliably crash. The exact cause of this is a bit complicated and also complete nonsense. -God wrath creates an 'avatar' monster to serve as the origin of hostile spell effects against the player. This avatar uses MONS_PLAYER_SHADOW (for some reason...), which is invisibly placed at the player's own position -The force_more that happens when god wrath triggers causes the UI to refresh, which causes a recalculation of whether the quivered spell has any visible targets (so that it can be dimmed if it does not) -Calculating visible targets for beam-based spells involves firing a tracer at every single tile in LoS (including the player's own position!) until it finds one that hits anything hostile to the player. -Plasma beam's tracer IN PARTICULAR fires a second beam at each spot, immediately after the first, without resetting the tracer's state (to account for monsters that may be immune to electricity but not fire) -Because of some weirdness that I do not like, beam::agent() specifically checks if there is a MONS_PLAYER_SHADOW at the player's position, and then if the beam's source_id is MID_PLAYER, it returns the player shadow instead (this is somehow needed to make player shadows not copy the brand on player launchers for mimic ranged attacks...) -Seperately, code that makes player allies stop beam attacks short if they would hit the player checks specifically that the agent() is a monster and that the beam is friendly. And then, when it would otherwise hit the player, 'rewinds' the beam one tile and stops it 'right before'. All together, what causes the crash is: -Plasma beam tracer tries aiming at the player -Plasma beam's agent is hijacked by the Vehumet wrath avatar, since one currently exists -The beam's agent is now a monster (Vehumet), but the beam itself IS STILL FRIENDLY (because it's a player tracer), so it tries to regress the ray one tile to avoid hitting the player. -And because it's plasma beam, it repeats this a second time without resetting the beam and tries to regress a second time and then the math becomes very unhappy A bunch of shadow mimic stuff is kind of a mess, but for now just verify that the MONS_PLAYER_SHADOW standing beneath the player is actually their shadow and not the shadow of a vengeful god who has decided to add some variety to their day and assault the player's patience instead. -------------------------------------------------------------------------------- 74fbe469d6 | gammafunk | 2024-01-20 00:01:55 -0600 feat: A spell icon for Martyr's Knell (Sastreii) (cherry picked from commit 5a2aebc5c2ff56217ad0f224068f0e939ed537ac) -------------------------------------------------------------------------------- 978bd804de | elliptic | 2024-01-19 17:34:00 -0500 Fix found gems shattering not being hidden by default (without more_gem_info) It still leaves a note and milestone regardless of the more_gem_info option, but the note is hidden unless the option is turned on. -------------------------------------------------------------------------------- e66fa4eb29 | Nikolai Lavsky | 2024-01-20 00:12:24 +0300 task: 0.31 trunk tournament reminder -------------------------------------------------------------------------------- efbe487952 | gammafunk | 2024-01-18 21:39:18 -0600 task: Update the debian changelog for 0.31.0 (cherry picked from commit 5180dd6056c141b7ef092b4df485498114467054) -------------------------------------------------------------------------------- 9740d1a105 | gammafunk | 2024-01-18 21:38:47 -0600 feat: New small abomination tiles from Sastreii Tweaks to the blue one to make it look less like an abyssal tree, color tweaks to the other one, and a new variant added. (cherry picked from commit 2b8753d7e0eaf7b277a50fd64ef26e6b134fe243) -------------------------------------------------------------------------------- 8eac1daf1a | regret-index | 2024-01-18 19:16:20 -0330 unbrace -------------------------------------------------------------------------------- d77652238b | regret-index | 2024-01-18 18:47:54 -0330 Deal with some teleport islands Possibly water_maze_lemuel doesn't need the scrolls of teleportation after it gets a hatch, but it does also make early unspoiled enlightenment into the spiral guaranteed to be worthwhile, so I guess it's fine. -------------------------------------------------------------------------------- fa3d79c85d | regret-index | 2024-01-18 18:44:16 -0330 Don't make firewood slow down ally travelspeed (CarefulOdds) Something about demonic plant caution and brainless zombies goes here. -------------------------------------------------------------------------------- 86f1af28a2 | Kyle Rawlins | 2024-01-18 09:36:41 -0500 docs: md fix for webserver changelog From using this changelog format on other projects, I've learned that there's variation in whether a list is supported without a blank line following a previous paragraph (github rendering supports this, but many automated tools do not). This moves the changelog to the stricter format. -------------------------------------------------------------------------------- eba56dac1e | Kyle Rawlins | 2024-01-18 09:32:04 -0500 docs: update webtiles server changelog -------------------------------------------------------------------------------- 7c03013a13 | Kyle Rawlins | 2024-01-18 09:30:14 -0500 feat: error when python is past eol This is intended to provide some feedback to server admins. For now this error is toothless, but it won't be forever. (The version will need manual updating, unfortunately.) -------------------------------------------------------------------------------- 6ae6769602 | gammafunk | 2024-01-17 11:49:30 -0600 doc: Some changelog tweaks (nicolae) (cherry picked from commit c680215f6857a8aaf79f7ad4b0617d79fa5d988e) -------------------------------------------------------------------------------- daabb59e76 | Nikolai Lavsky | 2024-01-17 11:26:47 +0300 docs: fix default value for `more_gem_info` This option defaults to false, see 407de8339. -------------------------------------------------------------------------------- e526923d97 | regret-index | 2024-01-17 03:29:22 -0330 Add Abyss runelights to default monster_item_view_features settings They're very important to not miss, and monsters are placed on top of them in multiple different Abyss rune vaults. -------------------------------------------------------------------------------- 28bc0835a1 | regret-index | 2024-01-16 19:26:03 -0330 Catch lost Lair gems, adjust a Spider gem baedc58 did fix placing too many runes in the Arachne spider end (since I missed the corner placements in afdcd2b), but also easily places the gem quite far away from the rune. With some thorough clean-up of the vault header, I've also reconfigured the vault slightly to have a proper arrangement of gems placements close to rune placements. Also, the spreee of edits in 866d48a accidentally made wormcave fail to place the gem on occasion, if the double-small-Lair-end workings chose it as the second (but not the first) of those double-Lair-ends. Additionally, if Crawl fails to place two smaller Lair ends as it rarely does, then it wouldn't place the Lair gem at all. Both of these have been fixed, the latter by placing it in the first Lair end the game places just in case it doesn't succeed in placing the second. -------------------------------------------------------------------------------- 89e19f1974 | Sean Dewar | 2024-01-15 10:26:04 +0200 Add missing description for Okawaru's "Receive {Weapon,Armour}" ability -------------------------------------------------------------------------------- b74e046682 | 910rd | 2024-01-14 23:44:13 -0330 Add spell icon for Martyr's Knell -------------------------------------------------------------------------------- dc043339e7 | DracoOmega | 2024-01-14 23:25:51 -0330 Try to clarify Martyr's Knell's summon cap The summon cap of 1 applies only to the shade itself, and NOT to any flayed ghosts that might later be created. I feel this is mechanically necessary for the spell to not feel bad (since renewing your defensive benefit - or even recasting the spell by accident - would instantly wipe out most of what your flayed ghost could have accomplished). But multiple players expressed that they felt mislead by the spell description still saying "You can sustain at most one creature summoned by this spell." so I have decided to make the description more explicit (with a rather ugly special-case >.>) -------------------------------------------------------------------------------- 542084ee55 | DracoOmega | 2024-01-14 23:22:34 -0330 Tweak Sculpt Simulacrum's numbers Reaction to this spell has been a bit mixed, with many believing that the situational nature of the delay isn't worth the payoff. There's been discussion of revamping a few aspects of the spell, but since we're in feature freeze, I am going to just make modest numerical changes. Originally the ice blocks were deliberately fragile, since I thought that might give them interesting situational considerations, but it feels like the delay alone provides that. I have now made them quite durable instead, so that it's less likely your attempt to create summons will be distrupted by damage - and in fact they may sometimes offer a defensive benefit. I've also increased the summon duration from 2 to 3. It explicitly did not want the summons to be so long-lived that the typical use-case was to create them from the tail end of one battle so that you could bring them into the next one. That is how necromany operates and I wanted this to be as different-feeling as possible in that regard. But 3 is still pretty common for regular summons, so hopefully fine. We'll see how this incarnation feels across the length of 0.31 -------------------------------------------------------------------------------- d26e512322 | DracoOmega | 2024-01-14 22:43:05 -0330 Display damage modified by Might/Weak/Idealise in monster descriptions Showing both base and current values, to make it unambiguous to the player that Might isn't additionally added on TOP of this. -------------------------------------------------------------------------------- baedc5810e | Implojin | 2024-01-14 10:07:35 -0600 fix: Don't place 5 runes in a spider vault Looks like this was an oversight in afdcd2bc08. -------------------------------------------------------------------------------- 7fc57aa741 | Aliscans | 2024-01-13 21:14:13 +0200 Improve how search handles artefacts. Instead of returning artefacts where the name & prefixes match, or where the artefact description matches, return artefacts (from inventory, floor or shops) which match with all three things combined. -------------------------------------------------------------------------------- abc238812c | Rytis Petronis | 2024-01-13 21:13:26 +0200 removes ability to start repeat sequence with armour equip commands The repeat command doesn't allow other multi-turn commands such as wield weapon or wear jewelry, so this makes the behaviour unified. -------------------------------------------------------------------------------- dfb5f862aa | wheals | 2024-01-13 21:08:10 +0200 Refactor -------------------------------------------------------------------------------- 18b7feefb4 | wheals | 2024-01-13 21:05:01 +0200 Show real file name for rc errors (#2536). -------------------------------------------------------------------------------- 414e8e9f11 | DracoOmega | 2024-01-13 13:38:16 -0330 Fix a possible crash with casting Sticky Flame at very low power If spellpower was less than 10, it was possible for the div_rand_round to result in random_range(1, 0) which asserts. Having less than 10 power when casting a level 4 spell is pretty implausible in most circumstances, but apparently doing it in Shadow Form can help... -------------------------------------------------------------------------------- e934b4519a | Nicholas Feinberg | 2024-01-12 22:24:44 -0800 Fix a teyepo (cool 3) -------------------------------------------------------------------------------- aaba7af156 | Nicholas Feinberg | 2024-01-12 22:07:39 -0800 Cut some less-notable changes (gammafunk) -------------------------------------------------------------------------------- bffa963729 | Nicholas Feinberg | 2024-01-12 21:49:40 -0800 Continue unmaking Meteorans (various) -------------------------------------------------------------------------------- 72778bb224 | DracoOmega | 2024-01-13 00:12:21 -0330 Don't lie about Yred bound soul hp It is perhaps surprising to some people that bound soul hp doesn't care about the hp of the original monster, but (like all dervied undead) is purely a multiplier of the original's HD. 8d68a812144 misleadingly made bound souls' description state the original's hp, (which was much less than their actual hp for many souls, while being also much MORE than various lategame unique souls). Yred is slated for significant changes in 0.32, and more transparency for how much hp a bound soul will have is part of that. But in the meantime, xv should at least reflect the current state more accurately. -------------------------------------------------------------------------------- b1ac2c5b25 | DracoOmega | 2024-01-13 00:06:07 -0330 Fix a few errors in the changelog -------------------------------------------------------------------------------- 0d8cb65f81 | Nicholas Feinberg | 2024-01-12 17:34:15 -0800 Hide all traces of the time machine (Cilian) Shh! -------------------------------------------------------------------------------- 23ea822b79 | Nicholas Feinberg | 2024-01-12 17:21:59 -0800 Finalish changelog update -------------------------------------------------------------------------------- a7cece931a | Kyle Rawlins | 2024-01-12 09:35:48 -0600 docs: update changelog for 0.30.1 Historically we actually count the fixes, but this is a bit annoying to do and doesn't really provide much useful info to anyone. Comitter's Note: Cherry-picked from 713bb673 and added 0.30.1 to the debian changelog as well. -------------------------------------------------------------------------------- dde2bdd852 | Implojin | 2024-01-12 02:11:00 -0600 fix: Don't default autopickup useless evokers 29cbedb7bc enabled default autopickup for elemental evokers, but wasn't checking whether they were useless or forbidden; under gods with ally restrictions or forbidden conducts like Oka/Ru/Zin, this was picking up evokers that couldn't be used. This commit lets default evoker autopickup respect useless and forbidden items. -------------------------------------------------------------------------------- 952d896825 | Nicholas Feinberg | 2024-01-11 23:10:20 -0800 Partial changelog update -------------------------------------------------------------------------------- 5cb510d322 | regret-index | 2024-01-11 18:26:26 -0330 New Fugue and Blazeheart spell icons (CanOfWorms) Both of them are good work, as usual. Re-alphabetized a little of summoning and necromancy in dc-spells, while I was adding new spells there. A lot of these tiles listings need some heavy reorganizing, honestly. Wereblood's icon is now used for monster Battlecry, as something rather important to notice on a rather wide variety of different monsters, and as something which reasonably fits as a shouting face. -------------------------------------------------------------------------------- 1a3bd5dcfb | Aliscans | 2024-01-11 21:17:50 +0200 Fix InvMenu::load_inv_items(). Repair the function which lost secondary hotkeys in the previous change. -------------------------------------------------------------------------------- c8d6b64c82 | Aliscans | 2024-01-11 21:17:50 +0200 Make "!" in the identify scroll menu identify the first unknown potion. Print (e.g.) "select first with '!'" in the menu to warn the player. -------------------------------------------------------------------------------- 4e6510e29d | Aliscans | 2024-01-11 21:17:50 +0200 Tell the player about MF_SECONDARY_SCROLL in menus. If MF_SECONDARY_SCROLL is set, state in any menu "subtitles" that object class keys (such as ? or /) move to an item in its section. This was not previously communicated. Add MF_SECONDARY_SCROLL to equip/unequip and identify menus. -------------------------------------------------------------------------------- 688b343257 | DracoOmega | 2024-01-11 10:32:59 -0330 Fix pacified good neutrals not acting like they were pacified This is currently done to nearby orcs when you first accept a Beogh conversion. I assume it was intended that they actually become pacified or the could wouldn't have called mons_pacify(), but in practice this didn't actually work, since for some reason monsters needed to have BOTH the pacified flag AND be true neutral. -------------------------------------------------------------------------------- d28174fed3 | DracoOmega | 2024-01-11 10:32:47 -0330 Fix a slew of frightening issues with pacified monster pathing Pacified monsters were intended to path directly to the nearest level exit and then leave the level. Sometimes they did this! And some other times, deeply broken things happened. Where do I even begin... First of all, there was a small chance each turn for a pacified monster to give up on whatever exit it was moving towards (1-in-40 for human intelligence monsters and 1-in-120 otherwise). The comments implied that this was intended to help 'stuck' monsters look for a different staircase instead, but the code never let them ACTUALLY look for a different one. Instead, it would cause them to just start wandering vaguely in the general vacinity of the nearest exit instead (possibly more than LoS range away from it). Maybe they would randomly step on it at some point! But probably not. (Also, if they were far enough from the exit at this point and mindless, they would likely just wander around where they already were) Also, if they rolled the random chance to stop moving towards an exit, that exit would also become unusable to all subsequently pacified things (until either ALL exits on a floor got marked that way, or the code hit a 1-in-20 chance when trying to find an exit for a pacified monster to regenerate the cache from scratch). So they could give up, and then also cause future monsters to ignore nearby stairs, too. Also, for some reason, the code considered teleport traps as valid 'exits' from the level, but it was only possible to trigger them 'leaving' by stepping on one if they were also wearing -tele items (since otherwise they would teleport before the 'leave level' check happened. If they landed nearby, they would keep on walking into the trap over and over again, trying desperately to accomplish something useful. If they DID have a -tele item, on the other hand, stepping onto the trap would cause them to cease to exist without even a message. And most terrifyingly of all: the code used a cache of level exits on a floor to avoid having to search for all of them each time a monster was pacified. BUT THIS CACHE WAS NOT DISCARDED IF YOU LEFT THE FLOOR. This meant that pacified monsters would try to path towards where exits were ON A PREVIOUS FLOOR, and not the current one. And if they actually reached the coordinates of one of those, they would simply vanish without a message. As near as I can tell, this has likely been broken in this way for a very, very long time. Anyway! The code is different now. The cache is properly regenerated on each new floor, monsters actually attempt to do a pathfinding check when looking for an exit (to avoid the very real original problem of just being stuck staring at an exit across water until they rolled the slim chance to started wandering in place instead). They will even look for another exit if the one they are moving towards becomes inaccessible during their journey (detected somewhat crudely by 'has passed a turn without a valid step forward', which isn't perfect, but is a hell of a lot improved). If there are somehow NO exits they can path towards at all, they will properly give up on trying and just wander around. The odds of being in a completely disconnected spot (ie: on the other side of deep water) and then this changing later (eg: by something teleporting them) feels slim enough not to worry about it. Also, teleport traps no longer count as valid exits. (Shafts and Gateways to the Infinite Horrors of the Abyss still do, because they're funny) -------------------------------------------------------------------------------- cbf77bbcfc | Nicholas Feinberg | 2024-01-10 10:26:49 -0800 Temporarily evert "Simplify off-hand attacks" I forgot we're in feature freeze. Will merge this in 0.32. This reverts commit ba2c541246222192d693b6520cb875a9e2dbfda5. -------------------------------------------------------------------------------- ba2c541246 | Nicholas Feinberg | 2024-01-10 10:25:25 -0800 Simplify off-hand attacks Off-hand attacks' trigger chance scaled on UC and on XL, unlike all other aux attacks, which scaled only on XL (if anything). This felt inconsistent (a punch scales on UC but a kick doesn't?), and was confusing for players who misunderstood the UC skill descriptions and thought off-hand punches were more than a consolation prize for being shieldless. Change their trigger to scale purely based on XL instead. (Damage still scales based on UC, for now, but perhaps should also be XL based.) It'd be great to add a description for these somewhere - no idea where it'd live. Ideally there'd be both a manual section and somewhere in-game where you could learn more about your current off-hand damage and chance. -------------------------------------------------------------------------------- 54f21dcd01 | Implojin | 2024-01-10 10:35:21 -0600 Remove some obsolete autopickup lua This code was added in a35564097f (2015) to prevent autopicking multiple elemental evokers, which have generated only once per game since 5db6f66fbb. -------------------------------------------------------------------------------- 29cbedb7bc | Implojin | 2024-01-10 09:18:53 -0600 Autopickup elemental evokers by default Excluding the horn of Geryon, because it doesn't currently exist on the \ menu, and we want players to be able to manually disable these if desired. Possibly the horn should be enabled in both places, since it is treated internally as an xp evoker, but I'm not touching that here. -------------------------------------------------------------------------------- beaec30b81 | DracoOmega | 2024-01-09 19:26:10 -0330 Let monsters cast ensnare on other monsters (Oneirical) I overlooked this when scanning for other 'low damage beams with side-effects' since there isn't actually a corresponding zap type in the list. -------------------------------------------------------------------------------- a12eea24be | DracoOmega | 2024-01-09 19:05:56 -0330 Avoid a rare crash with eleionoma/witch wand creation (PleasingFungus) The exact cause is still a bit obscure, but it seems like if they drop a wand that is your last unID'd wand, and that wand was also on your shopping list, it can cause a level excursion that wipes out the still-dying monster's data before their death is finished processing. I'm still not satisfied with this, as it's unclear why it only triggers for the LAST wand (and not 100% of the time, even then), but this still seems to greatly improve the situation. -------------------------------------------------------------------------------- e65d87d18d | Nicholas Feinberg | 2024-01-09 09:33:25 -0800 Make ribbon worms catch their breath (Monkooky) Reduce serial ensnare spam. They need some time to grow new guts, even with that M_FAST_REGEN! -------------------------------------------------------------------------------- d52d5dbe6e | Nicholas Feinberg | 2024-01-09 09:32:25 -0800 Give a gem an unswirly (Ge0ff) -------------------------------------------------------------------------------- 4aaf141004 | DracoOmega | 2024-01-08 15:22:25 -0330 Forbid -cast and spell school enhancers on the same randart -------------------------------------------------------------------------------- 890cdf5628 | Nicholas Feinberg | 2024-01-07 22:53:33 -0800 Don't label Lom Lobon a minor threat (cool2) ?/m monsters are MTHRT_UNDEF. -------------------------------------------------------------------------------- 9787180647 | Nicholas Feinberg | 2024-01-07 17:30:47 -0800 Autoquiver throwables on pickup again (advil) Broken in b92c8fe61fd27051bdea34e1b4cbf590aca69b95. Resolves #3344. -------------------------------------------------------------------------------- 8663dec9be | Nicholas Feinberg | 2024-01-07 16:31:30 -0800 Fix dgn_farthest_from (ihatemudryk) The old code did not work - it was a broken implementation of a breadth-first search. Incidentally, it would also crash if it was passed a beacon with just one adjacent tile, or two beacons with no adjacent tiles. (But that was mostly unrelated.) Resolves #3460. -------------------------------------------------------------------------------- 7d6f0aea37 | Nicholas Feinberg | 2024-01-07 15:40:33 -0800 Fix fleeing orb spiders' bloodlust (ZillyBean) Firing positions are not relevant when fleeing. Resolves #2992. -------------------------------------------------------------------------------- 996d7381b2 | Nicholas Feinberg | 2024-01-07 15:22:30 -0800 Adjust tentacle description (acrobat) Sigh. Resolves #3458. -------------------------------------------------------------------------------- 60c5cc7444 | Nicholas Feinberg | 2024-01-07 14:49:33 -0800 Fix Bai losing her blood too soon (acrobat) Only drop talismans (and jewellery, etc) after she dies, not just when she transforms into a dragon. Resolves #3455. -------------------------------------------------------------------------------- 6e05a210f3 | regret-index | 2024-01-07 15:31:02 -0330 Catch a different missing silver rune (Darby) -------------------------------------------------------------------------------- 2b2087bae8 | regret-index | 2024-01-07 15:18:57 -0330 Catch a missing silver rune (CarefulOdds, Darby) Might be a good idea for objstat to also track runes just in case anybody does another big overhaul of all the V:$ quadrant subvaults or anything else extremely long. Also, I feel obliged to say it's kind of dumb how long we've kept the tradition of "O" being the rune glyph / branch entrance glyph since it was not longer hardcoded to dynamically turn into the right entrance / rune so very very long ago and it's so easy to read it as a 0. -------------------------------------------------------------------------------- bec6b6ccbf | Nicholas Feinberg | 2024-01-06 22:40:01 -0800 Fix: don't crash in \ (lowenheim) How did no one else report this?! Resolves #3404. -------------------------------------------------------------------------------- 1c3f895ad5 | Nicholas Feinberg | 2024-01-06 22:29:55 -0800 Limit GDR application (DracoOmega) We have never used GDR on triple or proportional AC types, and I doubt we ever will. Rip out the code. Resolves #3426. -------------------------------------------------------------------------------- a0385a40c4 | Nicholas Feinberg | 2024-01-06 22:24:53 -0800 Fix bound monsters being swappable (acrobat) Resolves #3454. -------------------------------------------------------------------------------- 17a54de940 | Nicholas Feinberg | 2024-01-06 22:07:25 -0800 Refactor Sigil of Binding -------------------------------------------------------------------------------- 1b3c7e429d | Nicholas Feinberg | 2024-01-06 22:00:39 -0800 Fix sturdy frame description (acrobat) Resolves #3457. -------------------------------------------------------------------------------- 94871bc2e8 | regret-index | 2024-01-07 02:06:14 -0330 Fix an occasional connectivity bug -------------------------------------------------------------------------------- e7908ec95f | Nikolai Lavsky | 2024-01-07 00:40:01 +0300 fix: don't gain extra lives after losing gems Due to a missing `break` in 7c67ea8c8, every time the power of Zot shattered a gem, a note about gaining an extra life was added to the morgue. -------------------------------------------------------------------------------- 300232130d | regret-index | 2024-01-06 17:23:54 -0330 Adjust a few small monster bits The withered plant description adjusting their age versus the branch they spawn in wasn't working properly, which this fixes. Also, this reorganizes some of monspeak.txt into proper alphabetizing, and friendly laughing skulls via Yred now still speak on occasion. -------------------------------------------------------------------------------- 3d35757396 | regret-index | 2024-01-06 17:23:28 -0330 Nudge up kobold blastminer ranged damage (Monkooky) While these are meant to be anti-melee monster experiments, the current low damage of blastminer arbalests (less than orc warriors with arbalests) makes it entirely plausible for sufficient AC characters to kill them via poison darts rather than closing in and risking getting bombarded. This is an unideal state for a monster as deep as Orc and involves some kiting, so they're getting a slight nudge up of ranged damage (but not Bombard damage) to try and discourage such tactics. Bombard is still a much bigger focus of threat for the monster, anyway. -------------------------------------------------------------------------------- e0997bbf37 | regret-index | 2024-01-06 17:09:49 -0330 Placeholder: rename + retile hard mode ice cave entries This distinguishes easy and hard ice caves explicitly in game by making the latter's entry feature be "glacial archways" to "a glacial chasm". This also adds a new, higher-detail tile by Sastreii. Currently, this is only a vault-defined feature name using a fragile hack for the current branch-based difficulty split (as of fc7f089). In the next version, we would like to make easy and hard mode portals (ice caves or other future settings) lead to entirely different branches that happen to share the same maps (e.g. said "Glacial Chasm"), rather than having the current opaque hard cut-off. Adding new branches is beyond the scope of currently being in feature freeze, however, so this is a somewhat incomplete adjustment for now. It should still be an improvement, in that it explains to newer players that there's any signifncat difficulty split at all. -------------------------------------------------------------------------------- e08a94be7c | DracoOmega | 2024-01-06 09:11:17 -0330 Fix some more possibly-uninitialized variables -------------------------------------------------------------------------------- ea8d852952 | DracoOmega | 2024-01-06 08:49:07 -0330 Avoid a divide-by-0 -------------------------------------------------------------------------------- 515db51633 | DracoOmega | 2024-01-05 19:06:46 -0330 Remove a long-unused zap type -------------------------------------------------------------------------------- 5eddcf2448 | DracoOmega | 2024-01-05 19:06:46 -0330 Fix monsters refusing to use pyre arrow / meph breath on other monsters This is a very hacky stop-gap fix because I don't want to do the deeper code refactoring that would be involved in a better fix after feature freeze. But the gist is that monsters would refuse to use these against other monsters because the tracer says that they would inflict 0 damage (even though the primary reason to use them is for their post-hit effect) Currently, because AC is rolled during monster-vs-monster tracer checks, low damage attacks can randomly be ruled irrelevant, even when their side-effects would be very relevant. In practice, many of these do enough damage that this is unlikely to occur (ie: quicksilver bolt, bolt of devastation, and klown pies all do 3d20), but this may also be an issue with some zaps with sufficiently low impact damage. In future, it would be good to unify all 'apply a non-damaging effect from a non-enchantment beam' into a single place that can check if a target is eligable and then apply it, instead of the scattershot approach of checking things in multiple different places (and sometimes via string comparison!) This could even include the great mess that is monster cloud code! But for now, this appears to fix the most immediate problem, and hoppefully shouldn't cause any new ones. -------------------------------------------------------------------------------- 8f5e8aebd6 | regret-index | 2024-01-05 01:30:13 -0330 Emphasize only intelligent monsters activate net traps Whether or not this is a weird behaviour we entirely want to keep, we might as well clarify the current specific behaviours of net traps (always player-centric, only human-intelligence monsters activte it) in their description. I'm of two minds to keep this- it's extremely idiosyncratic and unexpected compared to other traps, but removing it would make two ossuaries and Zot:5 and Tomb all toss even more nets indefinitely at players. Might be worth considering a limited activation count and some context of only monsters activating it, in 0.32. -------------------------------------------------------------------------------- b20b95014f | regret-index | 2024-01-05 01:30:13 -0330 Catch some missing V:$ gems (DracoOmega) Figured out with the power of objstat looking for gems and some long, meticulous hunting. Also slightly adjusted some other gem positions and left a comment on not accidentally leaving behind too many 'k' glyphs for the gem subvault to properly find. -------------------------------------------------------------------------------- df1f1dc8e9 | Implojin | 2024-01-04 22:12:43 -0600 Move Barachim in the manual (Darby) Ba are intermediate at character select, but were listed in the manual under advanced. -------------------------------------------------------------------------------- e50629dacd | DracoOmega | 2024-01-04 23:21:48 -0330 Teach objstat about gems So that we can run tests to verify that it will place all of them 100% of the time. -------------------------------------------------------------------------------- 3c05fc5d25 | regret-index | 2024-01-04 22:12:50 -0330 Catch some missing Elf:$ gems (Flugkiller) I don't really know why two of these later vaults were giving out better rewards and counts than the others, nor why two of the earliest vaults don't use the same standardized loot distribution and guardians vaults both before and after them use. Should review and standardize these item amounts more in the future. -------------------------------------------------------------------------------- a8702eb40a | regret-index | 2024-01-04 21:17:27 -0330 Barachi and Oni dummy monster tiles (Sastreii) We've accumulated so many nice tiles for player-species dummy monsters it'd be nice to have more than one pan lord vault and a few entry vaults use them. Even if they need to be kept out of actual monsters for players to fight, and we've got a preponderance of early vaults showing off monsters behind glass, maybe some idea will come up some day. (Maybe some more bazaar customers off in the far distance of layouts that aren't nearly so cave-like?...) -------------------------------------------------------------------------------- afdcd2bc08 | regret-index | 2024-01-04 20:29:26 -0330 Indefinite widespread vault review Of note: * Barachi, gnolls, armataurs, djinn, and oni are now all in the various species zoo arrival vaults and the one pan vault. * Crypt:$ gets a 33% chance to place a talisman of death, replacing the old evokers pile that struggles with the evoker count limitations these days. Death form is extremely expensive, skill points wise, and there's not much left of a regular 3-rune game for such a drop to be too useful, but it can be another enticing reason to visit Crypt and might make more characters actually try out extended beyond those already ready for it. * Some shard shrikes were trimmed out of a variety of vaults. We have a couple more reasonable ice enemies at this point compared to when they were added, and there's been too much leakage of hells as is. * wizlab_doroklohe gives a single charge of digging and a single scroll of revelation at the start, now, to forewarn its exact contents. It also has messages directly pointing at the walls for the countdown. * Gems have been taken off the exact same space as the runes in the branches with both, so they can sparkle on their own seperately of the runes and so apportation UI / casts don't work awkwardly against them. This will need more testing to make sure I didn't misplace any V gems... -------------------------------------------------------------------------------- e90ac80ac4 | yrdzrfxndfvh | 2024-01-04 20:29:06 -0330 buff ice ziggurats (#3401) [Committer's notes: Simulacra in ziggurat previously called directly from HD versus the ziggurat's abs/depth, which would end up getting stuck later on shrikes and two of the giants. The specified list for simulacra is a good idea, but it is too much of a malevolent meme for zig dippers to possible instantly explode against a 20-headed hydra simulacrum. Used a different specific list instead. Also, wendigo do in fact overlap too much with Cocytus. Rather than pull further from Cocytus, use ice monsters that don't- ironbound frosthearts, and walking frostbound tomes. Both are probably still fine for Ziggurat dippers, and one of the layouts places the start of the floor by a wall. Closes #3401.] -------------------------------------------------------------------------------- 41d5ff3e7b | DracoOmega | 2024-01-04 19:12:16 -0330 Fix Peanut Brittle pies not actually vitrifying monsters Also fix a trivial inconsistency in durations. Fixes #3399 -------------------------------------------------------------------------------- 55fdcbfc7f | DracoOmega | 2024-01-04 18:47:45 -0330 Fix alchemy miscast text in spell descriptions (Picklenugget1) It should say that they can poison you, but inflict 'alchemy damage' >.> Fixes #3451 -------------------------------------------------------------------------------- a2fd7aa73c | DracoOmega | 2024-01-04 18:23:54 -0330 Prompt the player before stepping onto a binding sigil I don't like the code duplication in this function. Probably could use some refactoring at some point. -------------------------------------------------------------------------------- 4e53e8b332 | DracoOmega | 2024-01-04 18:22:45 -0330 Fix Gozag/Yred worshippingers being unable to cast Sculpt Simulacrum It doesn't use corpses anymore, so there should be no conflict. -------------------------------------------------------------------------------- 532432118c | DracoOmega | 2024-01-04 18:22:16 -0330 Fix orb spiders being able to move a little while asleep No code specifically keeps sleeping monsters from moving. It's just that their target (ie: 'where I'd like to move') is set to themselves. M_MAINTAIN_RANGE monsters try to move towards firing_pos instead and this was not set, so when put to sleep they would still move to their next intended destination before stopping. This fixes #2972 -------------------------------------------------------------------------------- a3383bade6 | regret-index | 2024-01-03 21:01:23 -0330 Add some of nicolae-'s Crypt & Orc vaults from PRs #3325 & #3326 nicolae- has been very preoccupied during 0.31's development period, and wasn't able to finish updating either pull request in response to feedback. He's assented to me fitting in vaults from these two pull requests that would require minimal to no editing for 0.31, and I have done here. Hopefully, in the fullness of time, he'll be free enough to update and finish the rest of those pull requests' contents. -------------------------------------------------------------------------------- 1bbaa075f8 | regret-index | 2024-01-03 19:43:03 -0330 Mildly reorganize orc.des and crypt.des Mostly some quick headers and splitting decorative vaults from monster vaults. We're not very close to the minimum branch-unique decor count for either branch (somewhat arbitrarily: 20 for one floor, 27 for two, and 54 for four), but there's decorative vaults inbound for both of these, and it'd make future assessment for such be much faster. -------------------------------------------------------------------------------- 5526595cd0 | regret-index | 2024-01-03 18:58:42 -0330 Remove a testing weight for D:15 Whoops. Sorry. -------------------------------------------------------------------------------- 39cc6bdce3 | yrdzrfxndfvh | 2024-01-03 18:07:04 -0330 a couple more ziggurat pillar changes (#3402) [Committer's notes: Even if we were to allow nameless horrors outside of miscasts, they're very redundant and boring when there's already a very long list of summoners also available. Animated armour is also very boring as a hostile monster due to its glacial movespeed, and trying to solve this by giving it more HP is extremely undesirable as one-off behaviour. The other stuff is good. Alongside from leaving out those singled-out components, I did a little bit of reformatting, clean-up, and sprucing up. Closes #3402.] -------------------------------------------------------------------------------- 1b1bae75ae | regret-index | 2024-01-03 17:29:05 -0330 Deal with rude bazaar customers plus other vault monster attitude weirdness Okawaru worshippers and those that sacrificed love both now get messages about the good_neutral bazaar customers leaving as soon as the player arrives, rather than having to fight them all as hostile monsters. For those who have neither excuse yet killed completely friendly people for the experience and piety, there's actually been a long-standing bug. Friendly, neutral, and good_neutral monsters placed via vault monspec, as opposed to any other means or source, would still give rewards for killing them. Monsters placed this way are now marked as not giving rewards, so now nobody gets xp or piety for attacking the bazaar customers, Elyvilon altar quokkas, or the Zot hot tub draconians. Ease up on the murder sprees. -------------------------------------------------------------------------------- 7be0f4f3a5 | Implojin | 2024-01-03 10:49:13 -0600 Improve Serpent's Lash rampage behavior (sdynet) After 961fd35ebc, making a rampage attack across a one-tile gap while serpent's lash was active (e.g.: @.o) wouldn't consume serpent's lash. Instead, the player would make a rampage move, followed by an attack, using attack delay. The new behavior was surprising to players: Prior to 961fd35ebc, the same setup consumed a serpent's lash charge, moving with 0 delay. Here we allow rampage moves ending in an attack to trigger serpent's lash, which should bring the behavior more in line with player expectations. This could be simplified while better respecting WJC encapsulation by calling the full WJC post moves here, but that would trigger whirlwind twice for these one-tile move attacks, which might be a bit much re: balance. -------------------------------------------------------------------------------- 93c622d222 | yrdzrfxndfvh | 2024-01-03 01:43:13 -0330 add a vault for each hell branch (#3425) [Commiter's notes: No draconian shifters in Gehenna, sorry. They're too off-theme and clash with the vault's own desire to have monsters call down damnation. Alongside some general clean-up, I also specified statue tiles in the Gehenna vault, lowered the monster spam with randomization in the Cocytus vault and gave it pharaoh ants over necromancers so soul-binding is far more likely to happen, tossed out the plain lich who can't IOOD or bolt of cold through the Tartarus spectral snake pile, and buffed the Dis orange crystal count to be less trivial after luring the motile monsters out. Closes #3425.] -------------------------------------------------------------------------------- 8ca8a6932e | regret-index | 2024-01-03 01:43:13 -0330 Lower protean progenitor Will (Prakerore) They had Will 180 to match titans as a nearby giant, but the other high tier giants added well after those (juggernauts, iron giants, tainted leviathans) all only have Will 120. It should be reasonable to make proteans fit the same notion- even 27 Evocations doesn't make charm or para wands get better than 12% success rate, and more dedicated hexing already has big other concerns in Zot (like orbs of fire and electric golems). Plus, reading a scroll of vulnerability in Zot comes with lich-shaped trade-offs for now, and may come with additional problems in the future. -------------------------------------------------------------------------------- 8e2b85f8ed | Edgar A. Bering IV | 2024-01-02 20:08:37 -0800 fix: dont place a god altar with polyominoes This was meant to be `b` not `B` -------------------------------------------------------------------------------- 7e4722a024 | Implojin | 2024-01-02 19:30:36 -0600 Fixup a rampage assert ba8647c523 moved this assert before the rampage move it was intended to guard against. -------------------------------------------------------------------------------- ba8647c523 | DracoOmega | 2024-01-02 21:27:29 -0330 Move an assert somewhere it can actually theoretically trigger -------------------------------------------------------------------------------- e1511139a1 | regret-index | 2024-01-02 21:06:35 -0330 Experiment: give bazaars non-hostile monster customers While it's good for variety's sake and flavour's sake to have portals that don't contain any monsters, bazaars could do with a little more fanciness than their current very old style and roster for decorations. It'd take a fair bit of effort to add more decorations to each individual bazaar map, since there's over forty of them, but there is one relatively unique and cute option available with relatively minimal effort: Other customers! They're att:good_neutral, which means they won't attack players, won't follow them out of the portal, and won't provide xp or piety if the players are jerks. The choices here are all quite weak for Bazaar depth, so it's unlikely carting hostile monsters into the bazaar would be even slightly worthwhile; those choices are also monsters representing both branches and other player species, kind of. It should also give the place a little more liveliness compared to other empty places like Temple and troves, suiting for its explicitly busy state. For now, there's 1-3 customers per bazaars, with a 1 in 27 chance for 4-6 customers. TODO: Idle bazaar customer dialogue. -------------------------------------------------------------------------------- e0190472d0 | regret-index | 2024-01-02 21:01:25 -0330 Trim a bit off of Aizul's deeper depths (Ge0FF) Following the spirit of 005a376, Aizul's got good dangerous appearances in the Lair branches and a pre / post Lair branches Elf, but falls off later on as player XLs go up and innate Willpower can stave off her Sleep casts. With around a ~0.3% or worse killratio in Vaults, Depths, and Crypt, and with plenty of other late uniques around to provide variety, she can slither away from all but the first two floors of Vaults and be better off. -------------------------------------------------------------------------------- 4ceaed913a | regret-index | 2024-01-02 21:01:25 -0330 Tweak Pan Lords a little more, yet again * Summon Vermin gets swamp worms and goliath frogs over redbacks so it's tangibly different from Summon Spiders + hell rats. It'd be nice to have some unique actually cast this spell in the future- we've managed to mostly de-emphasize summoning uniques in the newer designs these days... * Pan lord random brands add AF_DRAG to the list, because dragging somebody away from a staircase during the orb run is good, and because they already got trample in f39bf5d. * Pan lords now get Plasma Beam, Vitrify, move the no-longer-piercing Metal Splinters (81a9d5b) from AOE spell rolls to bolt and projectile conjurations spell rolls, lose a duplicate Bolt of Devastation chance, and lose Iron Shot for Bombard because they've already got both LCS and Metal Splinters. * A variety of Pan lord AOE spells (and some ghost spells like CBL, Malign Gateway, and Plasma Beam) now result in them giving more experience, since most spells of their spells already did such. Commit messages in e.g. f6a566e is correct in that the specifics of this list are rather weird, but this should properly show the danger and reward the xp for both ghosts and Pan lords as seems to be its main coherent focus. I also tried to sort the spell sets in a few lists a little better: (hexes -> summoning -> buffs -> conjurations (fire -> ice -> earth -> air -> necro -> alchemy) -> the rest). -------------------------------------------------------------------------------- f47e9a2960 | DracoOmega | 2024-01-02 20:34:59 -0330 Fix blastmote knockback (and maybe other things??) not clearing water hold If the player was knocked back by a blastmote explosion, it would not end a water elemental engulf that was currently in progress, even if it knocked you away from them. Curiously, this wasn't true if the water elemental was the one knocked back instead. I am going to go on record here and say there are FAR TOO MANY similarly named functions for moving players and monsters around, which check some different subset of different properties (and sometimes call each other, but sometimes don't). It's not at all clear to me which you are even SUPPOSED to call in different situations (is it clear to anyone?) and given the breadth and complexity of different checks performed for movement, I think it would be nice to do some heavy refactoring of this. ...some day. -------------------------------------------------------------------------------- 72ca9f7c6f | DracoOmega | 2024-01-02 20:34:59 -0330 Fix a terrible interaction between Noxious Bog and quicksilver Casting Eringya's Noxious Bog simultaneously created bog tiles around the player and gave a status that made the player immune to these, *but those two things were not otherwise linked*. This meant that if the player lost the status (due to drinking !cancellion or being hit by quicksilver), the bog would remain, but they would lose their immunity to it - often swiftly dying in the process. Since the bog is supposed to be radiating from the player's magical effect in the first place, instead immediately remove the bog if the player loses the status prematurely. -------------------------------------------------------------------------------- e2c2431d72 | DracoOmega | 2024-01-02 20:34:59 -0330 Give Protean Progenitors (and flesh) rPois, give flesh fast regen (r-i) In the theme of many giants representing a different elemental school of magic, consider progenitors the 'alchemy giant' and give it the appropriate resist (this also makes them safer from green drac clouds) Also, aspiring flesh were always intended to regenerate at the same speed as their protegenitors. -------------------------------------------------------------------------------- 9d92c49a05 | DracoOmega | 2024-01-02 20:34:59 -0330 Very slightly reduce the odds of chaos polymorph (regret-index) -------------------------------------------------------------------------------- 508479e61e | DracoOmega | 2024-01-02 20:34:59 -0330 Fix a minor bug with mons_has_attacks() Only treat AT_WEAP_ONLY as an attack if the monster actually has a weapon. (xv even hides that the monster has an attack at all if it isn't wielding one) -------------------------------------------------------------------------------- 4bb3443018 | DracoOmega | 2024-01-02 20:34:59 -0330 Block Chaos weapons from using Might/Weak on monsters with no attacks Mostly using similar logic to what BEAM_MIGHT itself uses. (Which is why it can stack Weak but not Might, even if that otherwise feels quite arbitrary. Not likely to matter in practice, though.) -------------------------------------------------------------------------------- 4d2d64e67e | DracoOmega | 2024-01-02 20:34:59 -0330 Describe goliath frog acid damage in xv It's a little unfortunate that this is still slightly lying, since that's only how much damage *players* can take from it and not other monsters, but probably that is better than showing nothing at all. -------------------------------------------------------------------------------- 5715333c33 | David Lawrence Ramsey | 2024-01-02 15:53:59 -0600 Add Yred death message for nonliving players. Djinn and Gargoyles can't be zombies or join the undead harvest. Message suggested by regret-index. -------------------------------------------------------------------------------- bdd0a2a65a | regret-index | 2024-01-02 18:18:19 -0330 Caster tile updates by Sastreii Some magical effects in the left hands of some monsters sort of clashed with the possibility of listing effect icons in that specific corner- notably including haste, lost soul ghostliness, or icebound souls. These new tiles should reduce those concerns for casters of each: arcanists, necromancers, deep elf death mages, and ancient liches have all been adjusted. -------------------------------------------------------------------------------- 6f9dbf35b3 | regret-index | 2024-01-02 18:08:02 -0330 No more deriving undead from the already undead Currently, the vast bulk of undead can't be used to make derived undead. The exceptions are highly idiosyncratic, and are mostly later additions of flavour-wise corrupted monsters that happen to leave corpses. There's long-established precedent for even corporeal, corpse-leaving dead to not rise yet again with the necrophage / body body / ghoul glyph, and it makes a lot more sense for all undead to not get a third chance at shambling around from both flavour and mechanical perspectives. I am thus preventing vampire mosquitoes, ghost crabs, death scrabs, and tainted leviathans from being possible zombie fodder. This does once more make Tomb that little bit harder, since death scarabs actually make for quite strong undead minions (losing battiness, keeping a high speed, and available in constant swarms). I do feel a little conscientious about such, but Tomb should be addressed on very different grounds than through this very weird, inconsistent, and unexpected behaviour. -------------------------------------------------------------------------------- 98767d6fda | regret-index | 2024-01-02 17:54:56 -0330 Adjust species -> class recommendations re: Alchemy In-game background recommendations are generally looking for positive apts. They were untouched in the Transmutations + Poison merger into Alchemy. Gargoyles went from 0 Poison to -2 Alchemy, which makes most of the starter spells difficult enough that they probably shouldn't be recommended it. Felids always had -1 in Poison and still, but they lost their fast movement for kiting purposes and we don't recommend every caster background for Felids. Tengu also lost their fast movement and had their -2 Transmutations plus 0 Poison averaged to -1 Alchemy, which also leaves that species + background a bit worse off. All three are no longer recommending Alchemist after first choosing the species. In return, I'm tentatively adding Vampire to the list of those recommended Alchemists. They went from +1 Transmutations plus -1 Poison to +1 Alchemy, which makes for a decent enough start- note that Vampire is already recommended Ice Elementalist and Earth Elementalist, both with +0 apts in the corresponding elements. They have -3 Conjurations and -2 Fire, but +0 Air should allow reasonable Mephitic Cloud casting, and they can still easily throw around Olgreb's Toxic Radiance. Whenever they find it, they'll also be good casters of Alistair's, Eringya's, and especially Yara's given spells. -------------------------------------------------------------------------------- fc7f089eb7 | regret-index | 2024-01-02 17:08:14 -0330 Very slightly trim Ice Cave and Ossuary ranges Prior to the introduction of Depths, the Ice Cave difficulty split in D was a coinflip on a random midpoint floor of D (D:14 or 15) and always set to hard when deeper than that. The coinflip was removed in b4d244a, but 183a740 reintroduced the notion by making D:14-15 contain hard ice caves. This was done due to the bottom of D being not very far away from having to explore the Lair branches themselves, where those are always set to hard. Over time, there's been confusion about which of those floors contains hard ice caves- the D:13-14 threshold neither uses the very last floor of D, nor does it stop at the thresholds use for placing Orc or Vaults. It especially doesn't help that at the current juncture, in-game nothing is actually explained about harder ice caves outside of noticing what particular monsters one faces- it mostly matches to specific branch ranges, but falters on this exact point. While there's been discussion about using different names for features and the sidebar for distinguishing this difficulty split ("ice grottos"?), there's also been some discussion about how ice caves strangely stretch out one element for a long chunk of the game itself, to the point of using specific ugly thing colours, draconians, and monsters mostly unique to V or Cocytus. It doesn't help that there's not any time gap between most of when one can encounter easier versus hard ice caves, either. While I actually have some interest in stretching out the easy versus hard portal concept further in the future, most of it would feature much wider divides than D:13 versus D:14, anyway. With all of this considered, I'm cutting out the D:14 and D:15 ice cave spawns entirely- it should introduce a tiny bit of a gap, reduce the pressure ice caves have for spawning so often, and removing the confusion for 0.31 which floors of D can contain which ice caves difficulties. Also. Ossuaries are in a very awkward part of the game in some ways- a D:4 character and a D:8 character can be very far apart just in terms of finding chain / plate, a non-starter weapon, or being able to reliably cast a L3 or L4 spell instead of L2. While it's good to feature them early as a portal to shake up the most-often-seen early game, and since they got so such a recent rebalancing and set updates, later ossuaries still rarely feature any much for threats. In lieu of adding idiosyncratic difficulty scaling to the lot of them, I'm instead trimming the very last floor of ossuaries for now- it makes their range the same amount of floors as Sewers, and the deathrate for D:8 ossuaries over the past three versions is a paltry ~0.5% anyway. This comes with very slightly more chance to see Ossuaries on D:6 and D:7, to somewhat make up for the lowered overall Ossuary count. -------------------------------------------------------------------------------- 005a376ed2 | regret-index | 2024-01-02 06:16:14 -0330 Trim off a bit of Kirke and Josephine's depths Both of them have current killratios very weak in Lair branches, and they both spawn much earlier currently in Lair itself. Josephine doesn't really need the first floor of any of the Lair branches, where wraiths will completely fall off- it's probably a remnant of when she got the standard variable necromancer bands and before she was moved to also spawn in Lair. Meanwhile, it's thematic to have Kirke in Shoals, but she doesn't need to keep spawning past the first floors of any of the Lair branches when she already has D and Lair as placements themselves. -------------------------------------------------------------------------------- 5ff9445e89 | regret-index | 2024-01-02 02:42:28 -0330 Alter more branch vault fanciness * Stone walls in Zot by default now match the wall colours of the Zot floor they're on. There's interest in getting much fancier tiles for Zot stone eventually, but this should help it a little for now. * The new stone walls and floors in Depths have been adjusted in miniscule, slightly more varying amounts. -------------------------------------------------------------------------------- e431911d44 | regret-index | 2024-01-02 02:04:09 -0330 Once more, yet more, widespread vault review Header house style consistifying, redundant line cleaning, so on and so forth. Of note: * Depths entrances are now the other main category of vault that place any of the new Depths stone floor tiling and columns. * Nerfed volcano_village's rare chance to place three or more hell hogs. * Burial acolytes are more consistently tagged patrolling (to try to stay with their zombies) and aren't placed on D:4 anymore. * There's been some concerns that Brain Bite is a pretty complicated mechanic to be mostly showcasing so early as Sewers with little other chance to read or see it. To offer other chances for newer players to parse the mechanic with less pressure, there's now a rare chance each in two Xom overflow altars and a Trog overflow altar to see them in early D, but nowhere else of note. * The old orb chamber minivaults, which are currently acceptably very dangerous in terms of just filling the old orb guardian positions with random floor spawns, now consistently have different floor tiles and colours as a bit of warning in advance they're very dangerous. Some fraction of them had magenta stone glass, but not all of them, so it might as well be consistent between the each of them. * spin_cycle gets another update to keep Lair branch out-of-depths (spriggan berserkers, salamander tyrants) out of the D:15 spawn and refocus it back to intelligent bands as was the explicit point of the long depths-scaling band-making function. * Spider ends no longer use a generic grey brick wall tile for stone, since Spider got branch-unique tiles in 5baa6b7 and we might as well actually use those in their main branch use. (This also means no WALL_SANDSTONE in the tomb end, since most other uses of that are for rock walls and not stone anyway.) * nicolae_gadget_shop now has 4 items, not 8. The current rotating sets for evocables make it very awkward to take most of the entire dungeon's miscellaneous evokers inventory in one possibly very early shop. * Louise in Depths Abyss entrances has been replaced with double occultists, rather than moving her far too late than she should be. Should work on a quick batch of variety for that neglected set, maybe. * _crystal_crosses_colossus is now less symmetric (with one open "arm"), has an updated monster set for all the newer monsters since its conception, and is also a rare option to spawn on D:15. * wizlab_cigotuvi offers slightly less potions of mutation, no longer offers beast talismans, and makes the lower tier talismans randarts. * door_vault and its variation's opaque runed door outside is now transparent (and runed). This doesn't effect the actual inside disconnected doors, which are still opaque and not revealing the contents. Shouting isn't strong enough to reveal the insides, though any louder source will, but this was already somewhat lost after scrolls of revelation were added anyway. A lot of the newer playerbase has been trained to only care about the now very common clear runed doors, while there's only about two vault sets and one regular one using opaque runed doors at this current juncture (and the former two are now losing it). It's still plenty of a mystery and a joke, if not more so, to see a box of one big runed doors containing only regular doors at first glance. * Bog mummies have a placeholder tile of the old bog body tile by Bloax rather than mixing mummies with spells and mummies without them distinguished in tiles solely by a floating title / sidebar difference. -------------------------------------------------------------------------------- 618ab1f346 | Nicholas Feinberg | 2024-01-01 14:15:28 -0800 Restore ribbon worm regen (Lici) Still too easy to cruelly pelt them with stones from max range elsewise. -------------------------------------------------------------------------------- de110550cb | David Lawrence Ramsey | 2024-01-01 13:34:16 -0600 Fix spacing. -------------------------------------------------------------------------------- 487c6999dc | DracoOmega | 2024-01-01 14:10:31 -0330 Remove a left-over reference to Ghost Moths healing from draining gaze (They stopped doing this against players a little while ago, but still could heal from draining other monsters) -------------------------------------------------------------------------------- eeface34f9 | DracoOmega | 2024-01-01 14:10:31 -0330 Very, very slightly boost the base HD of mana vipers -------------------------------------------------------------------------------- 7a8a475ec2 | DracoOmega | 2024-01-01 14:10:01 -0330 Have AF_ANTIMAGIC apply 50% more stacks to monsters with none The antimagic formula is kind of lopsided, in that short durations of the effect also have dramatically reduced effectiveness even for the brief while it lasts. It's been suggested that the formula itself could use some revisions, but I'm reluctant to touch something that upset the balance of player antimagic weapons so close to freeze. This commit is MOSTLY aimed at boosting Summon Mana Viper for players - it doesn't affect the player behind hit by them, or antimagic weapons at all. But ideally it makes it a bit easier for the viper to apply enough antimagic to actually do something without also boosting its damage. (Mana vipers themselves are slated for a possible rework in 0.32, but this can act as a stopgap until then) -------------------------------------------------------------------------------- 0319aaedb4 | DracoOmega | 2024-01-01 13:57:35 -0330 Greatly increase Laughing Skull spawn rates in late-D and Crypt For some reason, they were essentially the least common monsters in the normal spawn list for both places (and vanishingly unlikely in D). If we're going to add a shiny new monster, let's let people actually encounter them! (Band placement means that the Crypt ones will be a lot nastier than D, if anyone is curious from the numbers) -------------------------------------------------------------------------------- 1a631d31ac | DracoOmega | 2024-01-01 13:57:35 -0330 Update Passwall's description to include the new AC bonus And also rewrite a little, since I think the old description implies to new players that you get more movement control in the rock than you actually do. -------------------------------------------------------------------------------- 5a0b83f448 | gammafunk | 2024-01-01 01:01:23 -0600 fix: Handle bad plus values in item specs When making weapons or armour via an item spec, don't allow plus values that would crash (over 30 on armour worn by monsters) or cause item error messages (over 30 on weapons or armour). These plus checks should be unified and include items for which plus does nothing, but I'm not doing that now, since avoiding wizmode and monster crashes is the main goal. I've also made the monster armour assert checking the plus use <= 30 as its condition instead of < 30, since the former is used by debug_item_scan(). -------------------------------------------------------------------------------- 569d6c7dce | David Lawrence Ramsey | 2023-12-31 20:09:23 -0600 Move Agony spell quote to Curse of Agony. And make Agony use it too, since it's the monster version of the same spell. -------------------------------------------------------------------------------- 0302df589c | David Lawrence Ramsey | 2023-12-31 19:01:18 -0600 Fix erroneous comment. Inugami phantom mirror duplicates don't give a penalty if they die, but they're not the same as inugami clones. -------------------------------------------------------------------------------- 69dc257577 | Nicholas Feinberg | 2023-12-31 14:37:02 -0800 DELETEME -------------------------------------------------------------------------------- ad166cc88d | Nicholas Feinberg | 2023-12-31 14:33:39 -0800 Describe monster explosion damage (regret-index) -------------------------------------------------------------------------------- f4f160f642 | DracoOmega | 2023-12-31 16:22:46 -0330 Fix a crash (hopefully) -------------------------------------------------------------------------------- 8c38f09004 | David Lawrence Ramsey | 2023-12-31 13:29:44 -0600 Give EEs Conjurations instead of Alchemy (#3444). Since Passwall (now level 3) no longer uses the latter, and Stone Arrow (level 3) uses the former. -------------------------------------------------------------------------------- cc20369e73 | DracoOmega | 2023-12-31 15:53:52 -0330 Fix Vehumet not supporting Sticky Flame (Oneirical) After I moved it out of conjurations, I forgot to give it the destructive flag. -------------------------------------------------------------------------------- e6ad0bb64a | Nikolai Lavsky | 2023-12-31 22:04:40 +0300 feat: darken non-present monster resists on webtiles As a followup to 0c084823, this commit adds support for colour tags in descriptions. -------------------------------------------------------------------------------- cae8a03998 | DracoOmega | 2023-12-31 15:30:13 -0330 Adjust some monster tracer behavior to be friendlier to the player Previously, while monster tracers factored in the resists of other monsters when calculating friend/foe hit values, they would never do this for players. This meant that allied monsters wouldn't realize that bolts of draining/venom were harmless to undead players and refuse to ever fire them through the player (although this is a behavior we constantly see them do with other monsters). Since it should be entirely helpful to let allies do this, allied monsters now consult harmless_to_player() when determining whether to worry about hitting you. Additionally, allied monsters with penetrating beams of any kind that are NOT harmless to you, will stop their shot immediately before it would hit you - passing through as many monsters as possible up to that point. This sort of behavior was attempted in 72347fce6 and then reverted in 98e7288b7fd because it stopped all allied piercing beams at their first target regardless of whether this mattered. This commit attempts to be a little more specific and only stop them when it DOES matter. (Short-circuiting beam tracing like this feels just slightly sketchy to me, but in preliminary testing, it appears to work fine) -------------------------------------------------------------------------------- 330b8c2b23 | regret-index | 2023-12-31 03:44:38 -0330 Reduce charmed / bribed allies' reckless disregard for collateral damage There's some old, odd code that reduces the foe_ratio value for monsters casting spells- basically, how worthwhile it is to hit allies versus hit foes, by evaluating them against each other with collective HDs and XLs- if the caster has an only temporary attitude change. This was originally meant as flavour and balance for both Summon Greater Demon (where successful summons were hostile but temporarily charmed) and Control Undead (which was never permanent)- if they already will become hostile eventually, then they could hypothetically be fine with "accidentally" hitting the player. Since we have neither of these any more, it is instead a strangely opaque component of wands of charming and Gozag bribes that those affected will ever-so-helpfully hit almost any number of players and allies as collateral damage. This is unideal behaviour for being completely unexpected as a downside to either, so this special-casing has been cut. TODO: There's some interest in further reducing the capacity for allies of the player to hit the player- see 98ec557 and 98e7288. This would need a significant undertaking to rewrite the current use of foe_ratio due to it being set constantly elsewhere and also being used for hostiles versus the player as well as allies alongside the player. Removing it entirely without a lot more supporting code makes either monsters be willing to hit as many others as possible if this also hits the player, or it'd be possible to stand by a rat at all times to prevent any spells being cast. Either way, it's still quite fundamental for how fire giants, de sorcerers / high priests, and dr scorchers don't fireball themselves. Probably this could all do with some preliminary work, but not so close to 0.31's release. -------------------------------------------------------------------------------- 7bd419a0e5 | Nicholas Feinberg | 2023-12-30 10:59:48 -0800 Don't lungepage recklessly (Hal) If you rampage toward a monster and then kill it with lunge, don't continue by moving into its tile. Even if we prevented moving into deep water or lava, this could still result in the player moving into traps, dangerous clouds, or exclusions, all of which seem like potentially nasty surprises. Let's settle on a destination tile when we start the move and then stick to it. -------------------------------------------------------------------------------- 0d58f7cc60 | Nicholas Feinberg | 2023-12-30 09:11:49 -0800 Fix weird name bugs (Cilian) If you enter an invalid name ('/') then hit * to randomize your name, clear the "that's a silly name!" text and state. Don't allow hitting * to randomize name while being prompted about overriding an existing save. Feels nonsensical and surprising - answer the question first! -------------------------------------------------------------------------------- fc755a3201 | David Lawrence Ramsey | 2023-12-30 09:20:39 -0600 Add extra zombie quote (yrdzrfxndfvh). Closes #3403. -------------------------------------------------------------------------------- 274590c540 | David Lawrence Ramsey | 2023-12-30 09:20:33 -0600 Add dreamshard necklace quote (yrdzrfxndfvh). -------------------------------------------------------------------------------- 4574a07c27 | David Lawrence Ramsey | 2023-12-30 08:50:00 -0600 Fix a few quotes. Tweak the bracketed part of one Order of the Stick quote, properly mark one Calvin and Hobbes quote as spoken by Calvin, and make both the Calvin and Hobbes quotes use the same style. -------------------------------------------------------------------------------- b1e071b2f0 | David Lawrence Ramsey | 2023-12-30 08:50:00 -0600 Add Brain Bite spell quote. -------------------------------------------------------------------------------- 91cac6e7f7 | David Lawrence Ramsey | 2023-12-30 08:04:35 -0600 Update docs for humans' new +0 Exp mod. -------------------------------------------------------------------------------- 43313d8a59 | DracoOmega | 2023-12-29 23:47:04 -0330 More heavily nerf Blazeheart Golem The golem seems to be pretty popular! It also seems to be too strong. Since the exploding part of it is the most mechanically flashy, I've aimed most of this nerf at its melee attack. It loses AF_FIRE entirely. It gains a bit of base attack damage in exchange, but this should still be a significant reduction in damage. Its attack now also removes 1/3 of its hp on impact, instead of 1/4, meaning it will fall apart more often and also need to be recast more often for the same damage output. I've also reduced its AC a little (though I'm not really sure much this matters in either direction) Let's see how it feels after this. -------------------------------------------------------------------------------- 0899f109bd | DracoOmega | 2023-12-29 23:47:04 -0330 Mildly nerf Call Canine Familiar Primarily by increasing its death timer from 6-11 turns to 13-21. Without the draining involved, this was likely overly generous. If the player feels 'stranded' without it sometimes, they is probably an acceptable problem for letting the dog die. Also reduce its AC by 1, and its attack by ~1 at higher power. -------------------------------------------------------------------------------- 8d97d346d7 | DracoOmega | 2023-12-29 23:47:04 -0330 Reduce duration of Bolt of Devastation's Will/2 against players (acrobat) It mirrored the duration of Strip Resistance, but being much easier to apply, it could possibly stand to be shorter. -------------------------------------------------------------------------------- af9025df8f | DracoOmega | 2023-12-29 23:47:04 -0330 Buff Staff of Earth melee damage Staff of earth's gimmick was that its melee checked triple AC, but had higher base numbers than other enhancer staves. In practice, this mostly meant that in all practical situations, it was the weakest staff - and often significantly worse than the other AC-checking staff, conjurations. It used to require ~20 earth / 15 evo just to tie with a staff of conj against AC 5 enemies, when the vast majority of lategame enemies had significantly higher than that. Conjurations was the 'generalist' staff - rarely the *best* staff against an enemy, but always far from the worst. The enemies earth was best against barely existed - or were too low threat to matter. Enemy AC tends to just be too uniformly high in later parts of the game. So instead, let's replace the 'resist' it checks with 'is the target flying'. This draws on analogy with Shatter, while being much simpler: flying targets take 1/3 damage, but its base damage is higher than conjurations (though moderately reduced from its value before this commit). This means it will be better than conj against all enemies which do not fly, and substantially worse against any that do - much like staff of fire is much better than conj against all enemies without rF and much worse against those that have it. -------------------------------------------------------------------------------- 1724605f31 | DracoOmega | 2023-12-29 23:47:03 -0330 Buff Naga Ritualists A generally underperforming monster, with a flashy spell that had extremely low numbers. Old ritualist OTR did 1d4 impact damage + 2d3 poison per turn to the player, for a couple of turns. This is now raised to ~1d6 + 2d7 poison per turn (and may last marginally longer). Virulence also got a slightly higher power multiplier. -------------------------------------------------------------------------------- d120b57d70 | DracoOmega | 2023-12-29 23:47:03 -0330 Buff/refactor Concentrate Venom / curare and beam poison application Concentrate Venom had a bunch of strange wrinkles to it. It straight-up replaced the poison application of poison spit and AF_POISON attacks with curare code, which *itself* had a few odd wrinkles. Some examples: -Monsters with any rPos were immune to curare, so enemies with concentrated venom were flatly nerfed against them (as they would normally have had a 1-in-3 chance of applying poison) -Monsters could sometimes inflict more poison with their attacks by default than curare could, so concentrate venom could make them apply LESS poison -Curare had a 1 in 3 chance to apply to a player with rPois, but the poison from it applied through a codepath that checked that 1 in 3 again, even though the direct poison damage did not. Meaning 1 in 3 hits of curare wouldn't actually poison the player at all, even while otherwise affecting them. -Concentrated poison spit wouldn't print a 'You resist.' message even when you DID resist all its effects (and when a non-concentrated version of the same attack would print a message) -Curare had a 'levels' argument and additional code around this, despite the fact that in all cases, levels was 2. (This is a remnant from when you could needlestab - something removed in 2018) Beyond all its weirdnesses, concentrate venom also didn't feel very impactful. So this commit includes some buffs as well as cleanup. A spell/attack affected by concentrate venom now applies the full poison it would have originally dealt IN ADDITION to the curare effect. AF_POISON attacks (which normally trigger 1 in 3 times) now trigger 1 in 2 times with the buff active. And the buff itself has a longer duration. Curare code is cleaned up a little, there's no longer the weird double-reduced change of applying only the poison to an rPois player, and I also changed the message for monsters being hit by curare to more closely match the message against players (instead of '[monster] convulses' which was oddly close to holy wrath.) Additionally, I increased the amount of poison-over-time that BEAM_POISON applies to the player. I don't expect this to have too dramatic an effect (a player can always drink !curing if rolls are bad), and should have the biggest effect in Snake, which could probably use a gentle buff. -------------------------------------------------------------------------------- 81a9d5bdf2 | Nicholas Feinberg | 2023-12-29 17:04:30 -0800 Turn off splinters' piercing There's no obvious reason that they pierced (their description and theme didn't read as obviously piercing in the way that a Bolt of Fire does), and there's no mechanical need for them to, either. (The piercing effect on metal splinters dates back to pre-Stone Soup!) -------------------------------------------------------------------------------- 1b70e30f2a | Nicholas Feinberg | 2023-12-29 15:52:39 -0800 Add a TODO -------------------------------------------------------------------------------- 0fffd28697 | Nicholas Feinberg | 2023-12-29 15:49:55 -0800 Fix the build..? (geekosaur) -------------------------------------------------------------------------------- 7df4bd0979 | Nicholas Feinberg | 2023-12-29 15:45:56 -0800 Fix: don't fuzz pals' tracers if invis (acrobat) Just as the player can see their invisible allies, let your allies know where you are, even when you're invisible. Resolves #2892. -------------------------------------------------------------------------------- 28235c32bf | Nicholas Feinberg | 2023-12-29 15:31:29 -0800 Add Manifold Assault animation (Jeremy) -------------------------------------------------------------------------------- 961fd35ebc | Nicholas Feinberg | 2023-12-29 11:37:07 -0800 Enable WJC + rampage Not really sure why this was disabled. Reverts 3b7de120b3c. -------------------------------------------------------------------------------- 2966ba1ece | Nicholas Feinberg | 2023-12-29 11:18:17 -0800 Refactor kpath (gammafunk) Try to make the logic clearer. -------------------------------------------------------------------------------- 88dc79e8f5 | Nicholas Feinberg | 2023-12-29 11:08:09 -0800 Remove who (geekosaur) -------------------------------------------------------------------------------- bad02465ae | Nicholas Feinberg | 2023-12-29 11:00:39 -0800 Cut volcano_overflow When one creates bold and innovative gimmicks, sometimes they work out. This was not one of those times. -------------------------------------------------------------------------------- 47440f1d08 | Nicholas Feinberg | 2023-12-29 10:58:59 -0800 Make collision death messages less awkward Arguably! -------------------------------------------------------------------------------- 395ea6166f | Nicholas Feinberg | 2023-12-29 10:53:38 -0800 Fix: know kows -------------------------------------------------------------------------------- 86c3eabce0 | Nicholas Feinberg | 2023-12-29 10:48:25 -0800 Double naga poison spit dice (regret-index) Instead of doing nothing, sometimes do something. -------------------------------------------------------------------------------- b9fef29221 | Nicholas Feinberg | 2023-12-29 10:48:25 -0800 Re-reduce ribbon worm XP Match old worm XP. Meant to include this in the original ribbon worm commit but forgot to amend. -------------------------------------------------------------------------------- a2f466ef2e | DracoOmega | 2023-12-29 14:23:49 -0330 Fix new ghostly icon on Webtiles (Ge0ff) -------------------------------------------------------------------------------- cbffd4cd76 | DracoOmega | 2023-12-29 13:59:05 -0330 Repurpose unused simulacrum status icon for lost soul revives Due to a bug, this icon was never used for simulacrum anyway, so I have recolored it to repurpose as an icon indicating things that have been revived by a lost soul (and thus are now undead, cannot be revived again, etc.) since it already looked so appropriate for that. -------------------------------------------------------------------------------- bdf0704f8b | gammafunk | 2023-12-29 09:51:31 -0600 fix: Trove logic for checking skills (CarefulOdds, CipHuk, WizardIke) The function trove.spell_skills had typos in skill names dating back to 2010, and these functions are use in veto checks for troves that give specialized equipment. I haven't investigated how this code wasn't giving these errors all this time, but this commit fixes the skill names. Additionally I've added the Ranged Weapons skill to the weapon skill check, since the relevant weapon troves are happy to give out ranged weapons. I've also reindented the lua and slightly refactored. Fixes #3430. Closes #3434. -------------------------------------------------------------------------------- a9fbd17ea5 | regret-index | 2023-12-29 06:09:02 -0330 Add Sastreii's new Depths tiles A branch-specific version of stone for all of Depths, to which I added a quick plainer variant to reduce a bit of noise when a lot of stone walls are visible at once, as well as new ground floor tiles and dramatic columns for statue-replacements, now employed in most of the ever-iconic Depths encompass vaults. The floor tiles and columns hould be reasonable for other vaults, old and updated or new, to specify or leave out as their theme fits. It should be used sparingly for particularly dangerous and large vaults, though. Also, to try to help with branch appearance differentiation, don't use these tiles or columns outside of the context of Depths itself. (Maybe sometimes the Depths entrance in D would be fine?) (This also came with a little bit of vault clean-up. Should do some more for the sake of gems and vault header standardization eventually...) -------------------------------------------------------------------------------- e0622b2318 | Nicholas Feinberg | 2023-12-28 23:05:04 -0800 Expel worms' innards Worms have long been a troubled monster. As a slow melee monster, they tended to do approximately nothing to any but the most arrogant and foolish players. Careful players would simply kill them from range with rocks or whatever else comes to mind. (See eg 8f025e602fb57e for an attempt to partially address this.) Retheme them to ribbon worms (real life creature) and make them ensnare the player. Reduce their damage and remove their fast regen as compensation. I'm very unsure whether this will do anything, but it seems worth a shot. -------------------------------------------------------------------------------- b37faac87e | Nicholas Feinberg | 2023-12-28 22:35:45 -0800 Maybe fix a crash -------------------------------------------------------------------------------- 3db28f3c96 | Nicholas Feinberg | 2023-12-28 22:11:24 -0800 Update the mailmap for dolorous -------------------------------------------------------------------------------- 79c7dd0eeb | David Lawrence Ramsey | 2023-12-28 23:38:59 -0600 Add more colours of Oni player base tiles. Since oni also come in yellow, green, and black. -------------------------------------------------------------------------------- 358e972e7c | David Lawrence Ramsey | 2023-12-28 23:26:23 -0600 Allow polymorphing monsters into uglies. All the other ghost demon types are unsuitable for polymorphing (unique, undead, nonliving, flagged with M_NO_POLY_TO). Pan lords are technically not unique, but they might as well be. -------------------------------------------------------------------------------- 63d5b5648c | David Lawrence Ramsey | 2023-12-28 23:26:00 -0600 Allow cloning of uglies and dancing weapons. Ghost demon monsters can now be cloned. As for the others, named monsters still aren't clonable, which rules out Pandemonium lords, player ghosts, and player illusions; conjured monsters still aren't clonable, which rules out spectral weapons; and inugami are explicitly not clonable because you don't get the usual penalty if the inugami clone dies. -------------------------------------------------------------------------------- b6db4fbaf3 | gammafunk | 2023-12-28 23:05:38 -0600 fix: The ikiller field for aspiring flesh These attribute their ikiller to the protean progenitor that spawned them, but the ikiller field should have prefixes like "spawned from" etc stripped so just the indirect monster name remains. This prefix didn't match any existing pattern of the ones we already stripped from ikiller, so I'm adding a new pattern stripping rule. -------------------------------------------------------------------------------- 96aa2eae3f | David Lawrence Ramsey | 2023-12-28 22:28:53 -0600 Consistently capitalise Human in species descs. "Humanoid" is left unchanged. -------------------------------------------------------------------------------- 39c5316367 | David Lawrence Ramsey | 2023-12-28 22:28:21 -0600 Fix changelog typo. -------------------------------------------------------------------------------- ec74395fc0 | David Lawrence Ramsey | 2023-12-28 22:28:21 -0600 Consistently spell the plural of simulacrum. -------------------------------------------------------------------------------- e8925a3f95 | David Lawrence Ramsey | 2023-12-28 22:28:21 -0600 Fix typo in new Sculpt Simulacrum description. -------------------------------------------------------------------------------- f9f310993c | David Lawrence Ramsey | 2023-12-28 22:15:49 -0600 Tweak description of At MP-regen (Implojin). -------------------------------------------------------------------------------- 95e4157dad | David Lawrence Ramsey | 2023-12-28 22:15:49 -0600 Mention Armataur rolling MP-regen in the manual. -------------------------------------------------------------------------------- be66496138 | DracoOmega | 2023-12-28 23:14:49 -0330 Unbrace Will I ever remember to do this before I push things? I'm guessing: no -------------------------------------------------------------------------------- 6cad3da956 | DracoOmega | 2023-12-28 23:11:19 -0330 Actually tag Sculpt Simulacrum as unholy (Darby) -------------------------------------------------------------------------------- d0b3b2ae9f | DracoOmega | 2023-12-28 23:11:19 -0330 Fix blazeheart golem being ironically unable to follow slow players (Darby) Due to some timing weirdness, blazeheart golems could keep up with normal speed players, but were entirely unable to do so for slow ones. (This is essentially because moving sufficiently slow would cause multiple turns to pass by the time the golem got another action, at which point it would go "Oh! The player isn't adjacent to me and hasn't been for several turns! I should turn off." This check is now from the golem's time perspective instead, and is approximately "If the player was next to me at either the start or end of my turn, I remain active." and it only turns off after both checks are consecutively false. (This probably also plays slightly nicer with its slow attack?) -------------------------------------------------------------------------------- 8901a676bb | DracoOmega | 2023-12-28 23:11:19 -0330 Timeout binding sigils that leave the player's sight This isn't intended so much as a nerf as it is to prevent a complained-about situation of an unseen monster stumbling onto a sigil you left behind and then showing up for the first time with swiftness on it. -------------------------------------------------------------------------------- 2dea6e066b | DracoOmega | 2023-12-28 23:11:19 -0330 Don't crash on placing boulders outside of casting Brom's There's been some desire expressed to use stationary ones as decorative features in vaults. And at any rate, it probably shouldn't crash the game if you place one in wizmode by accident. -------------------------------------------------------------------------------- 867c55e3b0 | DracoOmega | 2023-12-28 23:11:19 -0330 Don't drunken brawl if your weapon would place you under penance (Darby) -------------------------------------------------------------------------------- 9c3b9a8043 | regret-index | 2023-12-28 22:13:16 -0330 Seriously update docs/develop/spells.txt This is an immensely old document, referring to many removed schools and removed spells, mostly unchanged from seven years ago in f9017aa. Maybe it's mostly unused, but it's still sitting around in the source. I'm giving it a pretty quick first draft update. Almost anything is better than still referring to Charms or demon-summoning or the time when like 66% of Earth spells were Transmutations. At some point, maybe one of the devs who originally worked on positional magic can update this further with more precise philosophy, but it's at least a document actually attached to Crawl compared to version-specific Github pages. -------------------------------------------------------------------------------- 324eae3c28 | Nicholas Feinberg | 2023-12-28 16:14:20 -0800 Tighten various gem timers The intent is that gems should be reachable by average players, but shouldn't be routinely encountered during 'normal' (full clear, non rushing...) play. Let's poke at some gems that have seemed a bit too easy to pick up thus far. -------------------------------------------------------------------------------- 74ab47f370 | Nicholas Feinberg | 2023-12-28 16:09:53 -0800 Cut accursed CMD_TOGGLE_TRAVEL_SPEED Mindless busywork. Begone! -------------------------------------------------------------------------------- cda7ceedc9 | Nicholas Feinberg | 2023-12-28 16:09:52 -0800 Match ally speed outside combat (elliptic) As a UI convenience, make allies speed up to match the player's move speed if there are no enemies nearby. This is a common minor pain point for players (needing to hit ctrl-t to match travel speed), and there's no reason players should need to worry about it. This should hopefully be mostly transparent and unnoticeable for players. -------------------------------------------------------------------------------- 8a4046af8c | DracoOmega | 2023-12-28 18:14:28 -0330 Don't place players under penance for blazeheart golem's explosions (Darby) Similar logic to how guardian golem used to work - you still get xp for the explosions, but your god will not be bothered if an ally was careless enough to stay in the blast zone. -------------------------------------------------------------------------------- d7e1f54061 | DracoOmega | 2023-12-28 18:14:28 -0330 Make Sculpt Simulacrum less buggy when trying to sculpt krakens (Darby) Since kraken can only occupy tiles that blocks of ice cannot, it would look like you were making a simulacrum like normal, and then it would disappear in a puff of smoke when it came time to 'hatch'. Now instead, if the simulacrum that is being created cannot occupy the ice block's tile, it tries to pick a random nearby one instead. Kraken simulacra are far too much fun to simply forbid people make! -------------------------------------------------------------------------------- 0872b9eb7f | DracoOmega | 2023-12-28 18:14:28 -0330 Don't turn friendly blocks of ice hostile when hit (CarefulOdds) The simulacrum that came out of it would still be friendly, but a block of ice should not appear especially troubled by anything you do it. -------------------------------------------------------------------------------- 48da474f17 | DracoOmega | 2023-12-28 18:14:28 -0330 Don't let Sculpt Simulacrum produce simulacra of tentacles (Darby) More confusingly, the kraken tentacle simulacra would also be using the kraken simulacrum tile instead of their own?? -------------------------------------------------------------------------------- d74043ad92 | DracoOmega | 2023-12-28 18:14:28 -0330 Don't create a flayed ghost when killing your own martyr (Darby) Hitting them would normally cause them to instantly disappear, like most summons, but if you did enough damage to kill them in a single attack, you'd still get a flayed ghost out of the deal. -------------------------------------------------------------------------------- e2d6d42b48 | Implojin | 2023-12-28 15:24:21 -0600 fix: Remove At long tongue from the manual -------------------------------------------------------------------------------- 6dbd80e900 | Implojin | 2023-12-28 15:03:59 -0600 fix: rcfile autopickup option gem compat (Ge0ff) Previously, setting the `autopickup` rcfile option always resulted in gem autopickup being disabled, no matter what setting was used. The code in `read_custom_option` initially disables autopickup for all item types as it runs, and then re-enables pickup for each item type through `item_class_by_sym`. That function previously had no glyph mapped for OBJ_GEMS, so any time it tried to parse the autopickup option, gem autopick would be disabled. This commit fixes that by mapping unicode U'\x2666' (♦) to OBJ_GEMS here, to match the existing glyph for gems in viewchar.cc, which should allow e.g. `autopickup += ♦` to work as desired. -------------------------------------------------------------------------------- d420192249 | DracoOmega | 2023-12-28 03:29:04 -0330 Move LRD back below Stone Arrow for Servitors (acrobat) I have been sufficiently convinced that this might encourage certain characters to avoid learning LRD at all, which was not my intent. -------------------------------------------------------------------------------- 9e9b236d67 | DracoOmega | 2023-12-28 03:28:24 -0330 Various updates to the manual Concerning the Alchemy merge and Oni. -------------------------------------------------------------------------------- 53b6572822 | DracoOmega | 2023-12-28 01:58:21 -0330 Unbrace -------------------------------------------------------------------------------- 13c63e15e9 | DracoOmega | 2023-12-28 01:41:40 -0330 Make Spellforged Servitor a little less gameable, nerf mildly The fact that Spellforge Servitor could inherit a player spell that had a whopping ~50% fail rate meant that it was often correct to learn a spell that you could never viably cast. And since servitor spellpower is based on the power of the summon, rather than the spell it's casting, this barely mattered. Plasma Beam was the most common offender, since it doesn't even share a single school with Servitor. Now the player needs at least a 20% success rate in a spell for servitor to cast it. That's still a pretty high fail to use on a conjuration, but not outside the realm of someone trying it. This also nudges servitor's HD in player hands down just slightly. It should still be a very strong spell. (Also, I moved LRD above Stone Arrow in the spell priority list, since I think that normally the player would prefer it cast that AND it's higher level so it's probably not unintuitive that it might?) -------------------------------------------------------------------------------- ca6d514eab | DracoOmega | 2023-12-28 01:41:40 -0330 Fix several Battlesphere targeting bugs, refactor, tweak slightly Battlesphere triggering was originally split into two functions: aim_battlesphere(), called immediately before the trigger spell fires, and trigger_battlesphere(), called immediately afterward. This was so that it could save the position of the player's firing target, in case that target died to the triggering spell. Since the changes several years ago to make battlesphere fire at a RANDOM target instead, this split was needless code complexity - we can simply pick a target AFTER the spell fires. In fact, doing so fixes a bug that could frequently cause the battlesphere to appear not to trigger for no obvious reason: if the random target it picked before the player spellcast was itself killed by the player spellcast. This was actually very common with AoE spells or against only two visible targets (a 50% chance to skip its turn whenever you kill one!) Battlesphere would also silently fail if the random target it picked was in line of sight of the player, but NOT the battlesphere itself - another situation relatively common when corners were combined with the battlesphere's idle movement. Now it considers only the player's los when picking a random target. Finally, after a target was picked, if there was no safe line of fire to it from the battlesphere's current position, it would attempt to find another nearby spot and shoot from there. But the search radius was smaller than how much ground it could cover in a turn, so it would sometimes silently fail while appearing to have a valid firing angle. It is still possible to fail in this situation, if the battlesphere ends up more than a full turn away from ANY viable firing position (often because the player is body-blocking most of them), but it still meaningfully improved. Additionally, I have tweaked the target select to prefer shooting at the same target the battlesphere shot at last turn - so that it essentially 'locks on' to a given enemy - even if the player has no control over which. It felt far too common for the battlesphere to spread its shots around uselessly, doing insignificant damage to multiple targets - now it should be a little more dogged about taking SOMETHING down. -------------------------------------------------------------------------------- f45dec508d | regret-index | 2023-12-28 01:39:23 -0330 Adjust a few newer enemies stats and placement * Laughing skulls go from animal to human intelligence to match the other emotional and non-emotional skulls, get a second pip of fire resistance to emphasize them more as fiery and for potential future other uses, and place a little earlier in D (absdepth 16-24 -> D:14 to absdepth 22). They seem to be working fine, if not particularly intimidatingly, so their earlier placement should be fine also. Late D is a weird spot currently that could always do with a little more tangible variety. (D freezing wraith chance was reduced a little in exchange.) * Arcanists place another floor up. While they've been in flux for a while, with quite a few different spell schools, they're also more than fine enough earlier considering the earlier vaults haven't shown to be too much of a problem at any point. (D hydra chance was reduced a little bit in exchange). -------------------------------------------------------------------------------- 9677d6cc8b | regret-index | 2023-12-28 01:27:31 -0330 Gloorx's level: (crawlers ->) weavers -> flayed / skulls (Ge0ff) While I'd still like to find another home for the very sparsely used entropy weavers, and they're a lot less harmless than demonic crawlers were, I'll admit the former are pretty tangential to Gloorx Vloq's current mix of skeletons, ghosts, miasma, poison, and torment. I'm swapping them out for a mix of the first two, barring more obvious options (and while there's only one summoning demon besides ynoxinuls). Flayed ghosts and laughing skulls both aren't too prominent in the immediately-comparable Tomb or Tartarus, the former has more percentage-based damage, and the latter has unique mechanics we can play more around with. -------------------------------------------------------------------------------- 3d8c94b372 | regret-index | 2023-12-28 01:01:09 -0330 Reflavour vitrify pie (gammafunk) Clear pies are too far away from parseable types of pie. While this one is a little niche still, it should work on both allergies and synonym grounds. -------------------------------------------------------------------------------- 61f1b55d25 | regret-index | 2023-12-28 00:46:02 -0330 Sort Throw Ally into the right alphabetical spots It used to be Goblin Toss when Robin was added, and never got moved to the right spot in the file when it was broadened for Polyphemus and iron giants. -------------------------------------------------------------------------------- 18695baee4 | regret-index | 2023-12-28 00:46:02 -0330 Buff vault lightning spires Lightning spires are one of the very few spell-sourced monsters that work reasonably fine outside of that spell's context- a very straightforward lightning statue. This is somewhat marred by the fact the earliest one encounters them is Swamp or Elf, followed by them appearing in Vaults, Wizlabs, Abyss, and Zot, yet their default HD is... 3. 21 HP and a 3d6 non-loud lightning bolt. A pretty sad threat level (a more resistant electric eel with a little better defenses?) for that usage. I'm buffing these vault spawn lightning spires by making their base HD 10, the equivalent of a max power Summon Lightning Spire cast- this gives them 3d13 bolts and an average of 70 HP. (Their base hp has been adjusted so this shouldn't affect the spell itself.) This should give them have a lot more of a point, wherever they place. -------------------------------------------------------------------------------- 54790a2f53 | Nicholas Feinberg | 2023-12-27 18:13:43 -0800 Remove ENCH_PURSUIT Obsoleted after e438bbe35ce7f90b92d4 (August 2023). -------------------------------------------------------------------------------- 2f8d4710b4 | Nicholas Feinberg | 2023-12-27 14:53:45 -0800 Simplify tutorial equip advice To reduce the number of keys new players need to learn, suggest using (e)quip and une(c)quip, rather than (w)ield, (W)ear, (P)ut on, etc. -------------------------------------------------------------------------------- 98d077343f | Nicholas Feinberg | 2023-12-27 14:28:24 -0800 Fix missing mpreg description For armataur upgraded rollpage. -------------------------------------------------------------------------------- de279c822b | Nicholas Feinberg | 2023-12-27 12:55:30 -0800 Fix Mad Mage Mauler align (Ge0ff) -------------------------------------------------------------------------------- 382a9587f0 | Nicholas Feinberg | 2023-12-27 12:45:42 -0800 Fix unused var -------------------------------------------------------------------------------- 60647507ee | Nicholas Feinberg | 2023-12-27 11:27:47 -0800 Copy pass on new spell descriptions Try to compact down longer descriptions and focus on info that players need. Sorry, Sculpt Simulacrula. We need a flavor text area for spells so we can put all the fun stuff about assaying biology and alchemists arguing... -------------------------------------------------------------------------------- 34aac30a23 | Nicholas Feinberg | 2023-12-27 11:13:15 -0800 Localize a constant -------------------------------------------------------------------------------- 9d21c19d62 | David Lawrence Ramsey | 2023-12-27 10:24:56 -0800 Fix spell description typos. -------------------------------------------------------------------------------- 4c6a1022df | Nicholas Feinberg | 2023-12-27 08:47:55 -0800 Slightly buff siphon essence Now that it doesn't affect rTorm monsters, it can be a bit stronger to increase its attractiveness in 3-rune games. Bump healing by 1/3rd. Could also decrease the MP cost, but I feel like the current 20MP cost is very cool and splashy... holding off on that for now. -------------------------------------------------------------------------------- e7282f2625 | Nicholas Feinberg | 2023-12-27 08:36:19 -0800 Fix: ShSh manuals under Zin, cont'd See comment. This code is bad! -------------------------------------------------------------------------------- 86286aae65 | Nicholas Feinberg | 2023-12-27 08:25:24 -0800 Fix: fewer ShSh man acqs under Z (Lici) Treat shapeshifting skill as useless for Zin for acquirement purposes. Probably transmutations should always have been marked in this way. -------------------------------------------------------------------------------- 4a97266263 | Nicholas Feinberg | 2023-12-26 23:31:48 -0800 Refactor chain petrify -------------------------------------------------------------------------------- 87ca8d402b | DracoOmega | 2023-12-26 23:50:16 -0330 Don't give player ghosts/illusions Animate Dead (regret-index) They can't cast it anyway. -------------------------------------------------------------------------------- 59d654bfca | DracoOmega | 2023-12-26 23:37:44 -0330 Fix !cancellation contamination (The Unspeakable) (#3424) Missing parenthesis meant potion of cancellation was accidentally giving you contamination most of the time. -------------------------------------------------------------------------------- 5f6a03739c | RypoFalem | 2023-12-26 20:39:36 -0600 Fix !cancellation contamination (The Unspeakable) Missing parenthesis meant potion of cancellation was accidentally giving you contamination most of the time. -------------------------------------------------------------------------------- 3ad46bb88a | DracoOmega | 2023-12-26 21:10:26 -0330 Fix missing spell description Oops >.> -------------------------------------------------------------------------------- d63ae51a8c | DracoOmega | 2023-12-26 20:24:08 -0330 Silence warnings about removed attack types -------------------------------------------------------------------------------- 8388f8c9e3 | DracoOmega | 2023-12-26 20:23:55 -0330 Teach monster about Pyre Arrow damage -------------------------------------------------------------------------------- 8e5c54c242 | DracoOmega | 2023-12-26 20:09:50 -0330 Fix several MORE custom books -------------------------------------------------------------------------------- ac69e1350c | DracoOmega | 2023-12-26 19:53:37 -0330 Fix a missed Guardian Golem reference from custom randbooks -------------------------------------------------------------------------------- 542172135e | Nicholas Feinberg | 2023-12-26 14:34:59 -0800 Show Curse of Agony in webtiles -------------------------------------------------------------------------------- 5259d7e80d | DracoOmega | 2023-12-26 18:50:02 -0330 Buff Petrify a little Reduce range slightly, but make it chain to up to 2 adjacent/connected hostile targets at 2/3 enchantment power. Player Petrify has been in an awkward state for a little while. It was the capstone spell of the Earth Elementalist starting book for quite a while, but was common for EEs to never make use it. Unreliably locking an enemy down this way has questionable utility for a blaster playstyle with the damage reduction involved. And while it can do decent work specifically as a stabber setup spell, it's unclear that it performs *enough* better from classic Enchanter spells to justify it being much harder to access due to non-overlapping schools. Back when EE started with LRD, there was obvious direct synergy (with being able to use AC-piercing LRD on a key target or blow up groups in absence of walls), but that ship sailed a while ago now. The hope here is that this will make the spell more interesting/usable as disruption tool for non-stabbers as well, without making it significantly better for stabbing individual key threats. (While I'd only intended to modify the player spell (with a slight renaming) and leave monster petrification unchanged, PleasingFungus has argued that it's simpler if they both work the same way and that the relatively minimal buff to the enemy spell is harmless. It's... probably fine? Though I am sure some people will be caught off-guard by getting petrified despite standing behind an ally...) -------------------------------------------------------------------------------- 62420d5c14 | DracoOmega | 2023-12-26 18:50:02 -0330 Standardize Passwall range at 3, move to level 3, give AC while using The variable power-based range on Passwall was awkward in a few ways, and this should make it a little less complex and more intuitive. Also grant the player an AC bonus while transiting with the spell, to make it feel a little safer and more tempting to use as an early-game escape, when the margins of life and death are thinner. -------------------------------------------------------------------------------- e664984be9 | DracoOmega | 2023-12-26 18:50:01 -0330 Move Summon Ice Beast to level 3 This spell was hurt greatly by changing its cap from 3 to 1. Ice Elementalist still gets occasional use out of it since sometimes any body is better than no body, but it's regularly skipped over even in its starter book and just doesn't compete very well against multiple other summons of its level range. Perhaps at 3 it will be more appealing again. -------------------------------------------------------------------------------- 94f3faafae | DracoOmega | 2023-12-26 18:50:01 -0330 Fugue tweaks Prevent capstone pain damage from hitting firewood. Make the 2d5 capstone pain damage scale with spellpower, starting lower at 2d3 (up to 2d7 at 100 power), partially to compensate for how much easier it is to trigger the capstone at low skill via Kiku wretches. Perhaps this complication is unnecessary? (Or perhaps it would make more sense to trigger pain on only some subset of hits and make it hurt more when it does, for less message spam?) Add the ambient noise-making message from Fugue to default runrest ignore, so that it isn't so obnoxious to try and rest after a fight due to all the wailing. -------------------------------------------------------------------------------- 3fdea2571f | DracoOmega | 2023-12-26 18:50:01 -0330 Let Fugue of the Fallen work with Kiku wretches, tweak Kiku gifts After some discussion, it seemed there was wide agreement that it was fine if the deaths of wretches gave stacks for Fugue. Importantly, this lets there be a second spell that benefits from wretches between levels 2-5, so Kiku can guarantee something less sad than Necrotise. Reliably turning wretches into slaying is powerful, but the piety cost of calling wretches multiple times to do so should still be meaningful. Kiku now will always give one of Animate Death or Fugue of the Fallen in their first gift. Martyr's Knell is added to the second gift list, replacing Sculpt Simulacrum (since it is no longer necromancy). This has the potentially interesting consequence that there is a 50/50 chance of your early necromancy gifts pushing you in an ally vs. melee direction - and in fact, that Kiku can gift a spell several starts might want that *isn't* in the Necromancer starter kit. -------------------------------------------------------------------------------- 04e91338fe | DracoOmega | 2023-12-26 18:50:01 -0330 Agony -> Curse of Agony (for players) Agony has been widely considered an unimpressive spell in player hands for quite a while. In earlier parts of the game, its damage often compares unimpressively to Vampiric Draining against many enemies - somewhat sad when these are both starter spells and Agony is 2 levels higher. It can find a niche later in the game against some enemies, but ideally the capstone of any player background is something you are excited to get online. Ranged Agony was considered problematic in past, so let's try a different approach. Curse of Agony is a range 3 hex that inflicts a brief curse on the affected enemy. The next two times that enemy is struck in melee by the caster, they will lose half their current health - AFTER the damage from the melee attack applies (so somewhat less than 50%, in practice). The small bit of range lets the player try to overcome an enemy's Will *before* they're in range of Vampiric Draining or melee, but still requires them to engage directly instead of using zombies to trigger the agony effect. Its power multiplier is cut in half compared to Agony, which should make it somewhat less useful as the game goes on, but ideally more useful in earlier parts of the game than Agony itself was. This is also a chance to make some monster spells less confusing. Old 'Agony Range' is now just Agony again, while Fenstrider Witches get Agonizing Touch. There is no functional change, but I think it should be a little more obvious to new players that Fenstriders can only do this in melee range - especially now there there is no player analogue to this. Curse of Agony is replaced with Agony on player ghosts / illusions, so they have something to cast in that slot. -------------------------------------------------------------------------------- ac907ffc89 | DracoOmega | 2023-12-26 18:50:00 -0330 Simulacrum -> Sculpt Simulacrum (6 Ice/Alchemy) Current simulacrum is by no means a bad spell in isolation, but it has the misfortune of being packed in among multiple other necromancy ally creation options that are either easier to cast, more powerful, or arguably both. But simulacra are cool, so let's try opening things up by moving it out of the necromancy school entirely, where it may face less competition in its role. To differentiate it further from corpse-based necromantic means of generating allies, the spell is redesigned. It is now a range 1 touch spell that creates 2-3 blocks of ice nearby, which will transform into simulcra of the touched target after 3-5 turns (plus an extra 1-3 turns for each subsequent block of ce). This can be cast repeatedly on the same enemy, with no limit on the number of ice blocks which can exist at once, but there is a cap of 5 active simulacra and a new one awakening will expire your oldest. These simulacra are also shorter-lived than the previous version of this spell. This creates a dynamic where you often want to deliberately get in threat range of more dangerous enemies, but still have to wait for a payoff, which should hopefully feel a little different from other ally spells. It is worth noting that the player also cannot swap through ice blocks, so this can create dynamic terrain problems - and creating many in a row may fence you in with whatever monster you considered dangerous enough to want to copy. It is worth noting that there are a lot of balance knobs to tweak here - durability of ice blocks, number created at once, delay before summoning things out of them, etc. The original concept of the spell even inflicted freezing damage with the initial touch (and generated fewer simulacra overall), but it was suggested that it might be better to focus on just one aspect here. So let's try it out! (Also, since there was poor visual clarity between blocks of ice and simulacra in tiles, I tried to differentiate the block of ice tile's color from simulacra as much as I could while still looking like ice, as well as limit it to only a single shape, for a consistent silhouette. I think this helps at least a tiny bit?) -------------------------------------------------------------------------------- 8101ae7cb4 | DracoOmega | 2023-12-26 18:50:00 -0330 Add Martyr's Knell (level 4 Summon/Necromancy) The *other* half of Guardian Golem. Shielding allies via injury bond is a decent concept, but ironically, pure summoner builds have less use for this than necromancers. Summons are more easily replaceable, often fewer in number, and if we look at the starter book in particular, there are few targets worth protecting - spammals and imp are too low level to matter, inugami already offers a mechanism to protect it, and lightning spire is often out of enemy range. Zombie armies on the other hand.... Martyr's Knell summons a Martyed Shade, which is a fast-regenerating, but non-attacking ghost that offers passive injury bond, just like guardian golem used to. But if it dies before expiring, the pain of re-experiencing its own death will transform it into a flayed ghost (and instantly flay a couple random hostile targets). A flayed ghost can be powerful, but since its damage is so transient (and it is not especially durable), either positionally defending it or quickly killing its targets is important if you want it to matter. The hope is there are a number of ways to use this spell. It can defend an undead horde and engage more safely from behind it by dying quickly, or it can be used with limited other summons (or even on its own, with deliberate positioning) as an offensive tool that requires the player to ensure it doesn't die early. Spellpower affects both shade and flayed ghost hp. The latter helps make the flaying stick around a little better. The former may not be *strictly* upside, but it seems reasonable to make it just a little harder to get your more powerful ghosts (and it makes it better at tanking, of course). There is also a working enemy implementation of this spell, and I think there is definite design room for an enemy unique using it. (And, of course, there's always Mara). -------------------------------------------------------------------------------- 7aaa3406e0 | DracoOmega | 2023-12-26 18:50:00 -0330 Guardian Golem -> Blazeheart Golem (lv 4 Summon/Fire) Guardian Golem has had an identity crisis for a while. Nominally about protecting your other summons, its most effective usage was actually as a bomb - with injury bond more commonly serving as a means to help it blow up reliably than to actually protect anything. It also did wildly high damage for a level 3 spell - a whopping 3d20 at 0 power, plus additional flame clouds. But the thing is - the bomb playstyle was actually kind of fun! There were positional considerations with getting the bomb to blow up on a timely basis and not also engulfing yourself in it and it felt like it had obvious use-cases that weren't shared with other spells. Having summoning spells that feel distinct and have distinct uses is good, and so I aim to retain that here, while splitting out the ally-shielding part of the spell and (hopefully) making its damage more reasonable for its level. Summon Blazeheart Golem is a level 4 Summoning/Fire spell. The new golem has a melee attack (and a pretty good one, at that!) but a unique property where the flame inside it can only be sustained if the summoner stays close to it. Outside of a small grace period to make it more fluid to use when the both of you are moving, the golem will go completely dormant so long as the summoner is non-adjacent to it. The golem's attack is slow, has AF_FIRE, but also damages the golem for 25% of its max hp whenever it lands a blow. When the golem dies, so long as it is not dormant, it leaves its volatile core behind. This core will explode in a 3x3 fire explosion (with clouds) after the next player action. The timing is handled so that the player should ALWAYS get a chance for exactly one action between seeing the core appear and it exploding, no matter how fast or slow you are. A dormant golem causes no explosion at all. The idea here is that you can still use this golem as a tool to cause loud fiery explosions, involving unique positional play. The summoner has to be willing to step into the fray with the golem, and then plan to get out again. You cannot throw it at problems from a safe distance (but also are not randomly punished for engaging with it). In fact, the idea is that it should be competitive with Lightning Spire in the starter book, but for different situations/playstyles - Blazeheart Golem wants you to be in the fray with it, while Lighting Spire supports a more evasive/mobile approach. All damage numbers are still provisional and will be tweaked based on feedback, but for reference the explosion currently does between 3d11 - 3d20 based on spellpower (compared to old golem's fixed 3d20). -------------------------------------------------------------------------------- 8735cdfb9f | DracoOmega | 2023-12-26 18:49:59 -0330 Fix some monster death effects not happening if they die with Inner Flame Most notably Protean Progenitors would not spawn Aspiring Flesh if they exploded on death (even though, message-wise, they're *always* exploding on death), but apparently Spriggan Druids would also not use their death buff and a few other things may have not been cleaned up properly if they died this way. -------------------------------------------------------------------------------- 645d2ae13f | regret-index | 2023-12-26 18:21:36 -0330 Spruce up each rune-guarding Pan lords' realm The bulk of particular enemy decisions for most of the four fixed Pan lords enemies were made ages ago, before we had nearly so many varied monsters for almost any branch in general. Since there's been such a massive influx of new monsters to work with compared to so far back in the past, it'd be reasonable to further add to the gimmickry the lords themselves already brandish, rather than focus on plain + common + weak flavour choices for Pan vaults like occultists, large abominations, or weaker skeletons. * Mnoleg's level uses very few very ugly things, abominations, or tentacled monstrosities for a lot more protean progenitors and shadow demons- the former for more interesting shapechanging, the latter to fit the summoning (and since Tartarus lost them). There's far too many of the former melee-only types before extended, and Mnoleg lacks much for noticeable spawns beyond eyes and cacodemons- these two will both help. (Note: Don't use proteans beyond Zot, Zigs, and Mnoleg's floor. Zot non-draconians get very limited to no non-Zig drift or bleed to keep them distinct and dramatic.) * Gloorx Vloq's level loses lorocyproca and demonic crawlers for reapers and entropy weavers, while upgrading the skeletons hard. While this loses a bit of spectral flavour and demon presence, demonic crawlers have no real threat in Pan and there's some interest in removing lorocyprocas for more interesting tier-2 designs in the future. Meanwhile, entropy weavers still can corrode even extended characters, and reapers have a new effect plus aren't much prominent in Tartarus anymore. (This is a bit of placeholder future-proofing: if a new summoning tier-2 does end up existing, then shadow demons could fit here better over some other spawns, like shadow wraith and soul eater explicit placements, and those demons can replace Mnoleg's shadow demons.) * Lom Lobon's level loses arcanists and occultists, as they're pretty mundane mortal scholars of magic for extended. Instead, to represent more interesting mystics across the Dungeon, there's now small amounts of one conjurer from each of the Lair roulette branches- nagaraja, merfolk aquamancers, fenstrider witches, and jorogumo. They readily match up with the green deaths or blizzard demons already present, and while mostly not too extra dangerous at Pan depth they're more interesting to see than the prior options. * Cerebov, the most infamous and intimidating lord of Pandemonium, loses orange demons and crimson imps for pretty rainbow fluttering insects. They're definitely not the newly revised, rarely used elsewhere, very fire-focused sun moths. * Each of the unrand lords vaults places an increasing clump of demonspawn related to the lord in question for each rune you have on you when entering. Mnoleg gets corrupters (summoning), Gloorx Vloq gets black suns (necromancy), Lom Lobon gets blood saints (conjurations), and Cerebov gets warmongers (big equipment). There's not any extra in the given levels beyond those initial counts, though, so they shouldn't make the levels blend together too hard with the rest of Pan. * Also, the non-holy guaranteed demonic rune vaults and Mnoleg's realm both contain some potions of mutation now, to compensate for when the old potion of cure / beneficial mutation shuffling removed the (very delayed, unreliable, heavily guarded) potions of cure mutation in the holy pan level. Those holies should be revised to be less boring, at some point, but for now, it should make those vaults feel more worthwhile. This also updates arenasprint and the chasing-across-Pan / orb run spawns of the lords for those four new sets, a few new tile choices to reduce the use of generic D floor and wall tiles, deals with teleport islands in Lom's realm, and tweaks a varied number of vaults to even out some higher and lower vault lethality ends. Maybe eventually Pan will be varied enough to be made yet shorter and extended could be made shorter in general?... -------------------------------------------------------------------------------- 8468ca10c8 | Kate | 2023-12-26 21:47:53 +0000 Australianise some spelling -------------------------------------------------------------------------------- 7f6f75e24c | Nicholas Feinberg | 2023-12-26 10:58:29 -0800 Don't associate hand cannons with alchemy Players were confused and thought they had something to do with the new spell school. -------------------------------------------------------------------------------- 903e00c026 | Nicholas Feinberg | 2023-12-25 23:24:19 -0800 Revert "Fix default shop ordering" (gammafunk) Just broke more things. This reverts commit d22453358fbc46b1444d6a61a651476891020241. -------------------------------------------------------------------------------- 2add1c7226 | regret-index | 2023-12-25 22:14:43 -0330 unbrace -------------------------------------------------------------------------------- 7819447e5a | regret-index | 2023-12-25 22:09:50 -0330 Once more, buff Mnoleg Mnoleg's still doing somewhat poorly compared to the other pan lords, and it's a nostalgic past-time at this point to regularly tweak and buff them. Unlike many other times, this won't involve too many big or complicated identity and spell changes, but instead some number tweaks. * Since Lom gets to cast their spells obscenely often, it should be fair for Mnoleg to get the same. They now cast Malign Gateway, Summon Horrible Things, and Summon Eyeballs all about x1.5 as often as before, so they're more consistent about tossing out everything before they die. * Their AF_MUTATE attack brand has been removed, and the titled in-game Demon Lord of Chaos just actually hits the player with AF_CHAOS. There's still cacodemons plenty across the floor as is, the eyes already show a focus on a rain of debuffs, and the tentacle's already adding chaos brand to the fight. Mnoleg also drops one of their four(!) melee attacks, redistributing most of the damage across the other attacks (now made the more chaotic AT_RANDOM) so the AF_BLINK hit is more likely to deal the damage needed to let Mnoleg actually blink. * Mnoleg's hp is rather low compared to half other lords- of the other lords near their average hp, two of three of them have Major Healing (Lom and Eresh), and the third is killing fine on sheer high numbers and speed (Gloorx). As such, they get another average 73 HP, vaguely approaching Asmodeus and Dispater's rough ~450 HP range, and a little better defenses made a little more uneven. -------------------------------------------------------------------------------- c82a368367 | Nicholas Feinberg | 2023-12-25 16:38:22 -0800 Oops -------------------------------------------------------------------------------- 55a4951847 | Nicholas Feinberg | 2023-12-25 16:37:43 -0800 Credit aedyr -------------------------------------------------------------------------------- fb072f231e | Monkooky | 2023-12-25 16:33:34 -0800 Tweak Upheaval radius logic Properly show the inner circle as guaranteed once you get a chance of hitting things in the outer ring. This is still slightly wrong if you have literally 0 invo skill, but I don't care. Closes #3334. -------------------------------------------------------------------------------- 2086043a82 | aedyr | 2023-12-25 16:21:59 -0800 Reformat background_creation as Markdown Closes #3349. -------------------------------------------------------------------------------- fdc2f8288e | Nicholas Feinberg | 2023-12-25 16:13:07 -0800 Tweak some Frederick triumphs -------------------------------------------------------------------------------- cdbc00b6e1 | Rosstin Murphy | 2023-12-25 16:07:20 -0800 Add Frederick triumph lines Closes #3395. -------------------------------------------------------------------------------- 6be9deba8d | Nicholas Feinberg | 2023-12-25 16:04:46 -0800 Refactor enchant code Closes #3361. -------------------------------------------------------------------------------- 8b49caffdb | Aliscans | 2023-12-25 16:04:46 -0800 Enhance max enchant messages Change what happens when weaponry or armour in enchanted to its maximum. 1. Print "while" rather than "moment" in the message, to give the player a hint that something unusual has happened. 2. If caused by a scroll, cancel repeated actions. The next scroll can't enchant this item again, but the same keypresses could enchant something else. Also, print the message at the end of enchant_armour(). This matches enchant_weapon(), and means that any lua function which is triggered by the message sees the item in its final state. -------------------------------------------------------------------------------- 6c1934c42b | Monkooky | 2023-12-25 15:09:29 -0800 Make Lightning Rods use half AC Makes lightning rod check against half AC rather than proportional AC. This change follows in a push to make lightning damage always ignore half AC, and also removes an inappropriate usage of proportional AC. This is a buff, but it's unclear to me to what degree, as lightning rod damage code is fairly opaque. -------------------------------------------------------------------------------- 8ab06856ec | mgdelmonte | 2023-12-25 14:57:21 -0800 Add lua function view.get_map This is significantly more efficient than querying each cell from lua. It also provides more and better data, but never more than is visible to a normal player. See function comments for a complete description. [Committer's note: did some minor refactoring.] Closes #2675. -------------------------------------------------------------------------------- 7b7c7d10e1 | mgdelmonte | 2023-12-25 14:48:20 -0800 Fix lua skill function bugs The lua skill functions were done variously, with some using str_to_skill_safe (which returns Fighting if there is a skill mismatch) and some using str_to_skill; and each was done longhand. This PR factors out the common code and uses str_to_skill, which is the only method that makes sense. The str_to_skill_safe gives totally false results if the wrong skill name is used. And as a related matter, this PR fixes the documentation, which referred to Ranged Combat as a skill, when it is actually called Ranged Weapons. -------------------------------------------------------------------------------- 7873091dee | Michael Del Monte | 2023-12-25 14:30:58 -0800 Fix bug in lua `target_weapon` Crawl currently lacks the ability to speculatively examine the to_hit value of a non-wielded weapon. The underlying melee_attack and ranged_attack objects appear to allow weapon selection, but for a player, they always use the currently wielded weapon. This commit removes the misleading `item` parameter and corrects the function description. Resolves #2694. -------------------------------------------------------------------------------- d22453358f | mgdelmonte | 2023-12-25 14:27:18 -0800 Fix default shop ordering Sorting by type, name, price is neat, but it breaks the lua integration because the sorted menu scrambles item letters, so the `items.shopping_list` has no relationship to any menu you can see in the game. That is, `items.letter_to_index` fails to work properly. This PR restores the original "stock" order as the default, which means that `items.letter_to_index` will work again. Closes #2987. -------------------------------------------------------------------------------- 8329074549 | mgdelmonte | 2023-12-25 14:22:54 -0800 Fix Lua bug in view.cell_see_cell Closes #3107. -------------------------------------------------------------------------------- 5034fedf43 | Monkooky | 2023-12-25 14:16:48 -0800 Make Ozo's Fridge ignore firewood for huddling Ozocubu's Refridgeration deals reduced damage to actors that are adjacent to another actor. This previously included firewood. If fridge is your primary damage source (by a sufficiently large margin), you are encouraged to shoot firewood with a sling then wait for it to die when it comes into LOS, so that monsters could not huddle against it. This is an extremely unfun play pattern. While this issue occurs to some degree with plant blocked missiles, it is not as severe in those cases, nor as easily fixable. In the case of missiles, retreating until an enemy enters line of fire is sufficient. In the case of Ozocubu's, you must retreat until the enemy is a full tile beyond the plant, which may be several turns where the enemy has LOF but can still huddle. [Committer's note: deduplicated.] Closes #3303. -------------------------------------------------------------------------------- a5f28545b9 | Nicholas Feinberg | 2023-12-25 13:22:12 -0800 Axe Cig rot fee Player sentiment seems pretty negative about Cigotuvi's Dreadful Rot at the moment. The current drain cost dates back to 08ca5ef3b563a5f1, when the spell was first added - it's a first draft. Let's cut it by a bit more than half and see if it feels better. -------------------------------------------------------------------------------- 2bdb5a6e49 | DracoOmega | 2023-12-25 13:36:34 -0330 Don't make rPois- creatures also immune to Mercury Vapours (Darby) It's so easy to assume that !res_poison() means 'doesn't resist poison', but of course it does not. -------------------------------------------------------------------------------- 2bb1a01664 | gammafunk | 2023-12-24 23:10:31 -0600 fix: Better placement of the Crypt gem (dilly) Due to how the shared Crypt loot randomization works, the ivory gem could end up in some obscure places on e.g. evilmike_haunted_forest, namely locked away with unsightly ghouls behind iron grates. This commit moves the gem off of one of the special loot piles that gets randomized to various possible locations in each map, and onto its own glyph. This glyph now appears in a central location at the "end" of every Crypt:3 end vault. On a couple maps the gem replaces a single gold pile, which is no great loss to the player, and on the rest no loot items are sacrificed. -------------------------------------------------------------------------------- 9f37b22e94 | elliptic | 2023-12-25 00:08:38 -0500 Make heavy rarer on long blades and randart melee weapons Heavy is more complicated and arguably more powerful than vorpal was, while also being a bit scary to use; it doesn't need to be quite as common. I pulled back on the weight for long blades in particular to partially match short blades (where heavy doesn't generate naturally on non-randarts) and increase brand weight diversity between weapon classes. For randarts, I left other weights unchanged, which means all other brands got (slightly) more common; this is probably a buff (more speed/spectral...) but my general impression is that still using a randart melee weapon in endgame isn't that common compared with a boring +9 non-artefact, so making their brand assortment a little more exciting seems fine. -------------------------------------------------------------------------------- d128f7319e | David Lawrence Ramsey | 2023-12-24 17:36:56 -0600 Call trog_wizard arcanist a wizard again (#3379). Closes #3379. -------------------------------------------------------------------------------- 80bb053e4c | David Lawrence Ramsey | 2023-12-24 17:34:50 -0600 Recycle dialogue for alchemist player ghosts. (#3417) Move the old Transmutations dialogue to Shapeshifting, and put the Poison Magic dialogue under Alchemy. -------------------------------------------------------------------------------- 2dc4e65319 | David Lawrence Ramsey | 2023-12-24 17:34:19 -0600 Fix warning if Beogh can't give an orc an orcbow. (#3386) -------------------------------------------------------------------------------- b614d7c52f | David Lawrence Ramsey | 2023-12-24 17:33:40 -0600 Change species' magic resistance to willpower. (#3397) This updates the species YAML files and associated documentation. "mr" is now "wl", to match the species aptitude header and footer. -------------------------------------------------------------------------------- 7c67ea8c80 | RypoFalem | 2023-12-24 22:57:36 +0000 Note when felids lose or gain lives This should make it much easier to keep track of how many lives you had at what point in the game. -------------------------------------------------------------------------------- 47f062a2e6 | Nicholas Feinberg | 2023-12-24 14:31:34 -0800 Fix constriction + bombard (CarefulOdds) Also water engulfing, though harder for this to apply for Bombard specifically. Also fixes Mule issues. -------------------------------------------------------------------------------- 8a68c6e047 | Kate | 2023-12-24 20:08:44 +0000 Use @possessive@ in some Boris speech lines -------------------------------------------------------------------------------- a3d031de95 | David Lawrence Ramsey | 2023-12-24 13:12:57 -0600 Change species' magic resistance to willpower. This updates the species YAML files and associated documentation. "mr" is now "wl", to match the species aptitude header and footer. -------------------------------------------------------------------------------- 2ccc7d8fe7 | Nicholas Feinberg | 2023-12-24 10:25:43 -0800 Oni are dummies (acrobat) -------------------------------------------------------------------------------- 6789619139 | Nicholas Feinberg | 2023-12-24 10:23:38 -0800 Add Sean Dewar to the CREDITS -------------------------------------------------------------------------------- 34bb7ddc15 | Nicholas Feinberg | 2023-12-24 10:23:05 -0800 Remove accidental defaults (Ge0ff) Oops! (!!) -------------------------------------------------------------------------------- ca53710c0c | David Lawrence Ramsey | 2023-12-24 08:17:55 -0600 Recycle dialogue for alchemist player ghosts. Move the old Transmutations dialogue to Shapeshifting, and put the Poison Magic dialogue under Alchemy. -------------------------------------------------------------------------------- 007bd0a1a9 | regret-index | 2023-12-24 06:32:43 -0330 Tweak a variety of monster stats, spells, and gear * Burial acolytes don't need quite so high Willpower for a D:4 portal. They're now at a much more appropriate Will 20. Their two conjuration effects are plenty nasty already, also, so they get a mild nudging down of melee damage. * Let meliai give more experience, so people with tile_show_threat_levels won't ignore them as much, and since they're easily quite nasty for low hp characters (as their nudging down in Spider in bd29554, f2a2391, and d12d1d2 can attest). Their rough kill numbers versus objstat ratio in D places them pretty close to skeletal warriors, who give a lot more even after this. * Give war gargoyles less HD and less casting rate for Metal Splinters as is weird for a gargoyle to be breathing anyway, but more AC, melee damage, and a chance for a branded weapon as is more suiting for a player species renowned for melee. Maces and flails brands are a little weird for this, but it's a nice random holy wrath chance. * Give Frederick a randart orb of light or energy- light for the demigod semi-divinity, energy for his conjurations. It serves as a tempting reward all of his recent huge buffs (b247575, b730325, 1baa85e), and continues to help distinguish him from other uniques. (This, of course, comes with some adjustment for his weapons to be all one-handed). * Call Lost Souls now has a hard summon cap of 3 again- death mages calling in a higher number at a time was evidently plenty enough of a buff to it- and works properly in wizlab_borgnjor's random effects again. * Let Pan lords cast the misery-cloud generating March of Sorrows, replacing their quite harmless Freezing Cloud cast. (Also, rename the ENCH_RING_OF_DRAINING to RING_OF_MISERY, and fix some database lines missing the s at the end of the spell name.) -------------------------------------------------------------------------------- 4b2ba238e7 | Nicholas Feinberg | 2023-12-23 21:48:54 -0800 Mark Wucad Mu useless to Djinn (Aliscans) Also, to Trog. Closes #3372. -------------------------------------------------------------------------------- 829106c53c | Nicholas Feinberg | 2023-12-23 21:43:35 -0800 Tweak job/species recs (OctopodesWeekly) Funnily enough, no new Op recs. Closes #3365. (See justification in that PR description.) -------------------------------------------------------------------------------- 7a62d739cf | Sean Dewar | 2023-12-23 21:32:44 -0800 Fix some duration descriptions Some duration descriptions were out-of-date or missing entirely (e.g: "No description available" when hovering over statuses on WebTiles). Here's my attempt at updating them! As I don't know Chinese, just remove the "Slay" status entry, as that one no longer applies (needs changes to accurately describe "Fugue"). [Committer's note: tweaked Fugue and Jinx descriptions.] Closes #3414. -------------------------------------------------------------------------------- 2e576bbbd6 | Sean Dewar | 2023-12-23 21:32:44 -0800 Fix Bullseye/PProj issues - Remove the old "PProj" status description, and replace it with an updated one for "Bullseye" (I don't know Chinese, so I just removed that one). - As Portal Projectile is now a monster-only spell, update its description to attempt to more accurately reflect its behaviour when casted by monsters. - Remove `action::affected_by_pproj()`, which is unused. - Remove `action::is_bullseye_active()` and its uses. This function incorrectly treats each shot as costing 1 MP, and implies that bullseye is unusable while confused; both cases are no longer true. Remove uses from `action::uses_mp()` overrides and from `fill_status_info()`. -------------------------------------------------------------------------------- f84c63c4fe | David Lawrence Ramsey | 2023-12-23 21:24:26 -0800 Add a line for player ghosts with Shapeshifting. -------------------------------------------------------------------------------- 3924f4b49e | David Lawrence Ramsey | 2023-12-23 21:21:25 -0800 Make initial monster vitrify messages end in "!". This matches the monster message for Killer Klowns' clear moon pies. -------------------------------------------------------------------------------- 44eaecdf4b | David Lawrence Ramsey | 2023-12-23 21:21:25 -0800 Properly message when you're vitrified more. When you're already vitrified, being hit with Vitrifying Gaze will say that your fragility will last longer. Do this for ordinary Vitrify as well. -------------------------------------------------------------------------------- 77d344c5cb | David Lawrence Ramsey | 2023-12-23 21:20:31 -0800 Don't list Meteorans in the aptitudes menu. -------------------------------------------------------------------------------- 8e30cb9bd4 | Nicholas Feinberg | 2023-12-23 21:18:47 -0800 Fix Xom's divine experiences (pooka109) Don't apply the goofy confusion/slowing from wrath when Xom's wrath does nothing. (Purely for thematic reasons - feels hard to be 'overwhelmed' by nothing.) Closes #3408. Closes #3409. -------------------------------------------------------------------------------- 3b179efc34 | David Lawrence Ramsey | 2023-12-23 21:14:36 -0800 Fix spelling in a few new spell descriptions. Closes #3406. -------------------------------------------------------------------------------- 385a91d2d2 | Nicholas Feinberg | 2023-12-23 21:11:04 -0800 Set burial acolytes' god (pooka109) Closes #3416. -------------------------------------------------------------------------------- 7102d64fe6 | regret-index | 2023-12-23 23:32:39 -0330 Make Boris make you sad Boris is a very sad unique. He's lost his dagger (acddeb6). He's been seperated from his cat (8eed16d) for ages. He's become nearly identical to plain liches aside from trading Haste for Iron Shot (6612197). He's lost a decently large chunk of his placement range, diluting his gimmick (f5560fb, 1b62a5d, 67d208b). He also just doesn't actually kill many people- while it's obviously awkward to assess the killrate statistics of somebody that comes back, his killrate over the past three versions is a very sad ~0.45%. It could bring one to tears, really. He's got an almost tangibly miserable lot, one could say. Boris now loses Invisibility for an upgraded version of the weeping skull misery cloud spell (c.f. d47e5fa) - a cloud line that lasts 8-12 turns that doesn't skip over the vulnerable, and which forms a mephitic-cloud style 1-radius burst of 2-5 turn clouds. (Most of the Invisibility weight wasn't entirely put into this new March of Sorrows, and was distributed into other conjurations.) This should be an interestingly nasty combination with his Orb of Destruction, as it will eat away at players trying to sidestep the orbs. It also cutely makes every single one of his spells conjurations, which I'm sure he'd prefer, and gives him a spell distinct from both liches and other uniques. Wear rN+. Boris also now places in Depths:1-2, Vaults:1, and Elf:$, so his resurrection mechanic has more chances to actually be seen. This might make him a bit absurd on the orb run, but he's only gotten 5 kills then in the last nearly three years since 3208aba, so it should be fine. (Also, some more Boris lines and text. Hooray for melodramatics.) -------------------------------------------------------------------------------- 36f0627844 | DracoOmega | 2023-12-23 15:54:37 -0330 Allow Manifold Assault to work with more unrandarts Now that we can test the safety of each attack before we make it, some more things can be allowed to work. Specifically: Devastator, Scepter of Torment, the Singing Sword, and the Mace of Variability. The Mace of Variability's Chains of Chaos look slightly weird when they trigger off non-adjacent targets, but still function alright. Arc Blade doesn't currently work at all when it hits a non-adjacent target (and produces potentially confusing messages) and Sword of Power's beam aim functions oddly, so they remain disabled for now. Theoretically this could be adapted to work in future. I have *some* concerns about effectively multiplying the trigger chance of screen-wide effects, but PF has argued in favor of fun and who am I to immediately say no? -------------------------------------------------------------------------------- e298f011d9 | DracoOmega | 2023-12-23 15:54:37 -0330 Don't drunken cleave targets that might cause penance with unrandarts More specifically, for each attack an oni could make while drinking, we check if said attack *would* prompt the player about endangering allies if they made it normally, and then veto any such attacks. No prompts, only attack things safely, enjoy your unrands. -------------------------------------------------------------------------------- 59f95bc4ea | DracoOmega | 2023-12-23 15:54:37 -0330 Allow checking if an unrandart wreapon would give an attack prompt Without actually showing one to the player. Intended so that we can test in advance whether an attack might be unsafe, before attempting it. -------------------------------------------------------------------------------- 589f70cbe3 | Kate | 2023-12-23 18:44:23 +0000 Fix wording in a speech line -------------------------------------------------------------------------------- c720559798 | DracoOmega | 2023-12-23 12:47:45 -0330 Don't require shift+z to cast Mercury Vapours at enemies still in the AoE It doesn't seem an uncommon situation that the player would want to cast early for the Weak, so let's not make them see an extra prompt. -------------------------------------------------------------------------------- 88e648cc9f | DracoOmega | 2023-12-23 12:47:45 -0330 Greatly increase bombardier beetle's xp Due to how the game automatically determines this, it was far lower than other monsters of comparable threat. (I wonder if it might even have caused the UI to suggest to players was trivial when it wasn't?) Still keeping a close eye on these little guys' lethality and may nudge them downward, depending on how it shakes out. -------------------------------------------------------------------------------- f52a5a9ab3 | regret-index | 2023-12-23 00:47:41 -0330 Adjust new skull noise While most full-bodied undead are still effected by silence, curse skulls and wraithly monsters use magical or natural abilities. With that rough precedence, it makes reasonable sense for both weeping skulls and laughing skulls to be immune to silence. New messages have also been added for both, alongside messages for ones blasting at allies from offscreen. (This also fixes the mon-spell.lua test failing, as apparently SPELL_NOISY is a tag for non-wizardly / priestly abilities. They should be noiser, anyway- I wonder a little about S_SCREAM and its piercing shrieks actually being louder than normal, considering the many years it seemed like that was the case as well as it making obvious sense. (It was just notable when Crypt was mostly zombies that they shouted at all.) It'd make demonic crawlers louder in a relatively quiet branch, though, so I'll defer to others' opinions on that front.) -------------------------------------------------------------------------------- 7de3fab2a5 | regret-index | 2023-12-22 22:35:00 -0330 Tweak & distribute new skulls & acolytes across portals & vaults Weeping skulls and burial acolytes are mostly put into the ossuaries with minimal gimmicks and kill rate. Several ossuaries trim down the D:1 zombie numbers and continue to pick up a small amount of fancier derived undead (spectral scorpion, bullfrog simulacrum, croc zombie). This also gets in some long-due nerfs for the wraith ossuaries and the bog mummy ossuary's pile of bee / wyvern zombies- both are gone now that ossuaries in general have less spiky gimmicks. (This comes with a large amount of reshaping and handling Ossuaries in general, to be honest. They have pretty awful disparaties in their kill ratios even with quick crocodile zombie adjustments- the bottom 4/20 Ossuaries had a collective weighted killratio of 5% and the top 4/20 had a collective killratio of 45%. Several also had some immensely troublesome gimmicks- _due_cavern's skull traps never worked but thousands of people autoexplored into wraiths, while _zaba_flooded was content to use wyvern zombies in the same portal mostly using D:1 zombies. There's been some heavy reworking of layouts from disproportionate killratio ends, including some heavy reshaping and gimmick distribution. There's now a ~44% chance to encounter either of the new monsters in an Ossuary, with functional layouts like the bog mummy, scorpion, and ambush ones leaving them out.) Weeping skulls and burial acolytes also show up in a few altar vaults for Yred and Kiku, respectively, and a few Crypt vaults. Weeping skulls also get a little Abyss integration, and could easily get more. (After testing in their intended ossuary locations, weeping skulls are a bit bulkier than their starting commit, while Malign Offering has been tweaked further downwards in starting power for burial acolytes. Laughing skulls also now show their possible maximum damage.) -------------------------------------------------------------------------------- 38fc4fe9c3 | regret-index | 2023-12-22 22:35:00 -0330 Nerf plain elf monster stats and xp We don't really use plain elves as anything besides player species zoo filler or plain shapeshifter monster dud rolls, but they do have their zombies appear in a bunch of ossuaries. They currently heavily resemble humans monsters except for having a bit more EV, health, and HD, but this for some reason hands out like x1.75 XP versus humans. Since all the x-v improvements recently and over the decades have helped make arbitrary zombies relatively straightforward to quickly parse, there's not too much problems with keeping said plain elf zombies in ossuaries. (Probably not good to add lots of player species that don't spawn in the Dungeon, but players should have some reasonable immediate recognition of an elf). They still probably shouldn't hand out so much XP there now that we have actual new threats for Ossuaries with their own XP reward attached. Elf enemies gain some EV, lose some AC / HP, and now only provide about as much XP as the base humans do. -------------------------------------------------------------------------------- dac2563cd0 | regret-index | 2023-12-22 22:34:59 -0330 New monster: burial acolytes, for Ossuaries / Crypt vaults / Kiku altars Another new monster meant to be Ossuary bosses. These jackal-masked priests of Kiku practicing out interring the dead and raising them after they've gone through the proper rites have several different spells to work with: * Malign Offering, the heal-others by-damaging-a-target beam DE high priests use, which can help heal up Ossuary zombies one otherwise kites or easily lures apart from one another. * A weak and rare 3d7 Dispel Undead not-range, to scare player undead in a way that can still be reasonably handled at range. (This comes with another rescaling of low HD Dispel Undead not-range, since it was very strong even at very low HD.) * A new spell, Funeral Dirge, which gives very brief sprinting and might buffs for several undead close to a foe. This is meant to further showcase early monster support spells (alongside boudas), and also lets them try to help make jackal zombies and gnoll zombies actually have any threat to them in the weaker ossuaries. While this is a fairly complex enemy to be introducing early, most Ossuaries have been quite simple barring notable out-of-depths (wraiths, wyvern / bee zombies) since they lost all of their non-alarm traps in 1e82c30. They can afford an actually noticeable monster or two between these, weeping skulls, spectres / simulacra, and croc zombies in the non-out-of-depth arrangements, especially when the earlier portal before it contains water mechanics and now its own far-from-D spawns too. Burial acolytes don't particularly fit in too many other branches, but as explicit Kiku priests, they also reasonably fit as Kiku overflow altar guards since most of those slowly lost their zombies. They also can help out the extreme number of Crypt vaults deciding that piles of derived undead each stuck in individual closets will ever actually threaten anybody not making a thunderous racket, since the buffing Dirge will let them be super-frail support even much later. Their tile is the old anubis guard tile by Grunt, moved back from the unused monster's possible-player-sprites folder. Probably people won't be too confused by seeing them in another Egyptian context again after seven or so years. -------------------------------------------------------------------------------- 22ebceef79 | regret-index | 2023-12-22 22:34:59 -0330 Monster revision: Flying skulls -> Laughing skulls Flying skulls are extremely harmless for their current placement, being mostly just monsters that shout for silent zombies to wake up to rather than anything of actual interest in-and-of-themselves otherwise. They're not very useful enemies to actually fight beyond very earlygame, yet used mostly in late undead vaults or Crypt, a notion we've tried to rather phase out these days compared to previously. The newly renamed laughing skulls (so named contrast against the new weeping skulls), have lost most of their resists beyond rF+ (many other undead lack for it, but several vaults kind of want a vague fiery undead theme available, and since they're now red to contrast agains old flying skull white / cyan). They also have an rN-checking mechanic, but are far more direct about it. They now cast 3d13 Bolt of Draining, and scale up the power of their bolt with each skull available in their LoS- 25% for each other laughing skull laughing with them, capped at 100%. While there's a few piercing-bolt band designs in Crawl already (hell hounds, raiju, kind of spark wasps, and hell knights), few of them are quite so slanted in both raw damage and health frailty as these are- with five total present, each hits as hard as shadow dragons, but they'll die very quickly when hit. This should make them have an interesting bias against melee fighters (after all the other repositioning and mp-draining effects added this version). Or they'll get zapped by wands. It's at least better off than before, and might make rN a bit more respectable a resistance. Since they now have a built-in scaling mechanic, they now replace shadow wraiths in the D out-of-depth pool appearing with only a single other skull (and not even that when pulled up solitary in vaults), and are reduced in number rather than cut out of many earlier vaults. They otherwise still appear in their bands in Crypt and Abyss, though the latter has been made to raise over time rather than lower. Several vaults have had their flying skull counts nerfed, while other vaults have swapped them in for weeping skulls. The new tile is by Sastreii. -------------------------------------------------------------------------------- eb2fc1291e | regret-index | 2023-12-22 22:34:59 -0330 New monster: weeping skulls, for Ossuaries / Abyss ( / Crypt vaults) Ossuaries are in a weird place relative to the rest of early D, though not nearly as plain as Sewers were prior to ac1dc8b and 5e5e084. Plain mummies and derived undead are both, strictly speaking, a unique monster and a much later monster type for the Ossuary default set. The problem is that without the interference of traps (heavily reduced over time) or very large numbers and no chokepoints, there's a lot of boring kiting and picking-apart the slow zombie hordes for a variety of different characters. The energy rework of attacks-of-opportunity help them a little bit, but not enough to make zombified versions of D:2 + human and elf zombies particularly plus slow mummies very interesting. There's a few ossuaries with unique gimmicks, like the wraith ones or the open layout ambushes or silence or scorpions or bog mummies, but overall, the rest are very, very plain. Weeping skulls are a new monster meant to be occasional Ossuary bosses as a noticeable spike of danger beyond the current sad state of normal mummies, alongside another future enemy type. Somewhat frail undead, they use the newly-altered clouds of excruciating misery by randomly and sparsely spawning them in random squares of a two-tile ring around themselves (but never directly on top of the player). They also have a variant of the cloud-line breath catoblepae and ushabti have, spawning brief misery clouds while skipping past those that would be vulnerable (non-Undead). These both make running from zombies and mummies both include a fair bit of deliberation over walking around clouds or taking small amounts of unavoidable damage to walk through them, which should add a fair bit of interest to many gimmickless and weaker ossuaries all being roughly the same. They also show up in the Abyss as natural spawns, once more taking off a little bit of the very large weight small abominations have early in the Abyss, and spawning with a second skull when any deeper than Abyss:1. Most enemies in the Abyss will be immune to the clouds, and they can sometimes slow the player retreating from far more dangerous enemies around, which is a cute use for weaker monsters there. Their tile is by Sastreii. -------------------------------------------------------------------------------- d47e5fa42b | regret-index | 2023-12-22 22:34:58 -0330 Buff?: Clouds of negative energy -> clouds of excruciating misery Clouds are weird. (Much of Crawl is weird.) Their damage is fixed per cloud type, which makes it difficult for clouds to be used against the player outside of a given rather narrow window of reasonable damage, since there's rather limited and possibly expensive ways to deal with large amounts of space becoming unavoidable. (Some effects, like poison, miasma, and spectral flame do sidestep this, at least). We've also got a pretty large amount of clouds at this point that are extremely narrow in their presence and use, for very disparate circumstances- a pile of different decorative opaque clouds and damage types mixed between Wizlabs, Desolation, Xom, condenser vane, and two or less monsters each for almost everything besides miasma. It'd be nice to try and make more dramatic effects when we have so many, so it'd be possible to compress such endless lengths over time. As part of this notion, I'm heavily revamping a cloud essentially exclusive to condenser vanes and Xom- clouds of negative energy. They're currently somewhat weird within the vane itself, positioned at the same tier as acid and thunder but much easier to resist than either for monsters and more awkward to idly walk through than acid for players. They're also not very interesting either way, another cloud doing another flat amount of damage like the other standard element clouds despite undead already having the unique non-standard miasma and spectral flames to work with. I'm revising these clouds away from dealing the standard cloud damage of 10-32 damage to players and 6-22 damage to enemies to instead deal with flat percents, in the style (but not practice) of torment. These newly renamed clouds of excruiating misery now deal 10% of the player's max HP (6.6% with rN+, 3.3% with rN++, none with rN+++) and 15% of monster max HP whenever they hit (most monsters have a lot less raw health than most players, so they on average take more damage from even numbers lowered for them and not players- likewise, such low-ish percentage damage has to be higher to monsters for it to work properly). This should make them scale reasonably to be a little dangerous if liveable fine early on and reasonably terrifying later on, thus making them usable for future monster re / designs. It should also help with rN+ being a very neglected resistance for most players on average, since later versions of these cloud should deal quite a bit of damage. Additional notes: * The tile has been somewhat changed with a hard light overlay of rltiles sourced wall_undead. We could really do with more cloud tile bases eventually. At least they're definitely obviously different colours than miasma or spectral flames in console? * Condenser vane is unchanged, since it'll take a bit of a while to tell just how good these clouds are in player hands- it's a worse roll earlier on (low monster health) and already an easily bad roll later on (lots more undead and unliving), but it can now really shred through giants and uniques. Monster cloud safety versus intelligence checks in _mons_avoids_cloud is a very per-case hacky mess- if there's any concerns about its strength, a proper check for this new cloud's non-standard damage should be added there just for starters. * The name of "excruciating misery" can be quibbled over in the future, but with such rapid damage against e.g. player trolls it felt like it needed some emphasis. It's also meant to both fit with and be a little distinguishable from Crawl's love of adjectives for Pain- Agony, Torment, Anguish. -------------------------------------------------------------------------------- 282adc679d | Implojin | 2023-12-22 16:48:07 -0600 Enable default gem autopickup In some brief local testing, this approach seemed to work to enable gem autopickup by default, while still allowing players to disable it through \. -------------------------------------------------------------------------------- 32b5b8ab40 | Nicholas Feinberg | 2023-12-22 14:10:56 -0800 Add always_show_gems Give players an opt-in way to always show gem timers, as with the Zot timer. If more_gem_info is also set, then this will also show the time until held gems shatter. Please don't turn this on. -------------------------------------------------------------------------------- 9dc51933c8 | Nicholas Feinberg | 2023-12-22 13:48:54 -0800 Fix: leaky boulders (particleface) Don't allow testing for invisible enemies for free with Brom's Barrel o' Boulders. -------------------------------------------------------------------------------- f40074dcd0 | Nicholas Feinberg | 2023-12-22 13:43:46 -0800 Add kittens For a Hep low-piety invo title. The naming here is a little iffy - 'feline kitten' feels silly. Should maybe special case that. Also a bit leery of 'tengu chick' but whatever, we can roll that back later. -------------------------------------------------------------------------------- 04589416ad | Nicholas Feinberg | 2023-12-22 13:27:09 -0800 Add stop_summoning_prompt on evokers (dilly) And fix dragons to not warn you when bog is active. -------------------------------------------------------------------------------- a1c90ae492 | Nicholas Feinberg | 2023-12-22 13:03:23 -0800 Randomize blastmote push order (acrobat) The order in which adjacent creatures are pushed back by blastmotes should be random, not a fixed memorizeable pattern. -------------------------------------------------------------------------------- 3537ca1da6 | Nicholas Feinberg | 2023-12-22 12:59:45 -0800 Blastmotes: explode on wait (elliptic, Implojin) Per discussion, it seemed simpler and more intuitive for blastmotes to explode when a creature (incl. the caster) ends their turn in the blastmotes, rather than only when they move in. The motes bump into you, etc. (They're still sleepy when you cast them, so you get a turn of leeway to bail.) We could cut the special logic to explode blastmotes on move from monster.cc and player.cc, but the results were less visually pleasing, so I left them in. We might want to add warnings for waiting in motes, but eh - it's a mistake you won't make too many times. :) -------------------------------------------------------------------------------- ade28b54fc | DracoOmega | 2023-12-22 13:34:22 -0330 Actually set weight of ARTP_ENHANCE_TMUT to 0 It was suppressed in game, but could still generate on items, causing the ocassional randart with only 1 visible property. -------------------------------------------------------------------------------- a19005be0f | DracoOmega | 2023-12-22 13:05:54 -0330 Fix missing Sticky Flame status descriptions in webtiles Higher intensity fire was failing to find the description. -------------------------------------------------------------------------------- 0f3f92e71e | DracoOmega | 2023-12-22 04:13:32 -0330 Fix broken build What a misleading error message. I have now learned that a variable can shadow a member function that it is storing the value of and the compiler will merely act like the function doesn't exist at all without implying the actual problem. I shake my fist at you, C++ -------------------------------------------------------------------------------- a852a4444a | Nicholas Feinberg | 2023-12-21 22:27:18 -0800 Don't crash when barbs kill monsters Broken in 019d70c61ac. -------------------------------------------------------------------------------- c98d92de7d | DracoOmega | 2023-12-21 22:12:41 -0330 Tweak Fugue of the Fallen description to improve clarity a little -------------------------------------------------------------------------------- 98b23dd7b7 | DracoOmega | 2023-12-21 21:21:09 -0330 Lint -------------------------------------------------------------------------------- 85b50b08cf | DracoOmega | 2023-12-21 21:05:45 -0330 Tweak Mercury Vapours in a couple of ways The range is greatly reduced (6->3), weakness formula is tweaked (generally lower chance at most levels, and especially at higher enemy HD), and it now won't inflict any poison on creatures with rPois. In turns out that the rules about whether sources can apply poison to rPos monster 1/3 of the time are very inconsistent, but there's a *mild* lean towards this being true of physical delivery sources (eg: venom brand) and BEAM_POISON (which the player largely has no access to) and false for several other spells - notably OTR in the same starter book. Since Sting already is notable for being part-physical, I think it's fine to make rPois enemies fully immune to the poisoning of this spell. But I do want to keep the weakness effect that operates on a different vector and have slightly tweaked the description to maybe make that clearer. Finally, I have allowed players to cast it on themselves, since this was requested multiple times (believe it or not). By the same rules as enemies, rPois will protect you from the poison application (but not weakness!) -------------------------------------------------------------------------------- c275714b29 | DracoOmega | 2023-12-21 21:05:44 -0330 Apply sticky flame reduction to trampling and dragging monsters This feels like a 'deliberate movement' on their part. This also does a little refactoring of how deliberate movement effects are applied and fixes a bug with no applying new location effects properly to either party involved in dragging. -------------------------------------------------------------------------------- 6d40cd707e | DracoOmega | 2023-12-21 21:05:44 -0330 Shuffle a few Vehumet wrath spells to their correct levels I worried that Vehumet casting new sticky flame on the player might be a bit too strong, but it turns out it could have already hit you with 3d20 energy bolt at xl 9, so maybe this wrath was already a general problem and no player should be testing Vehumet's patience at those levels. -------------------------------------------------------------------------------- 56cbf0ba3b | DracoOmega | 2023-12-21 21:05:44 -0330 Energy Bolt -> Bolt of Devastation, now applies Will/2 (regret-index) An extra effect for a plain spell, drawing on the name of its most frequent user. (Should also synergize with Cacodemons trying to hex a lategame player, as well as several Will checks in Slime). Previous BEAM_DEVASTATION (used only by orbs of destruction now) is renamed BEAM_DESTRUCTION. -------------------------------------------------------------------------------- 7abab0001e | DracoOmega | 2023-12-21 21:05:43 -0330 Refactor applying Will/2 to players and monsters This adds an Actor::strip_willpower() method that unifies applying this status to both types of actors, and generally simplifies the multiple places this is currently applied (AF_VULN, Strip Willpower hex, demonic touch aux, ?vulnerability). Old behavior for adding additional duration to someone who already had 1/2 Will was to not print an additional message, and this is preserved (though should it be?) I have also changed the message for reading a scroll of vulnerability. It always sounded uncomfortably similar to !magic (and even the wild magic card), and since MR was changed to Willpower maybe it should have some theming that feels a little more like it affects being's willpower instead? (Feel free to shuffle the adjective to something else, if there's opposition) -------------------------------------------------------------------------------- 5278e7341f | DracoOmega | 2023-12-21 21:05:42 -0330 Don't immediately affect the player by clouds from the Clouds card The new version of the Clouds card creates a ring of clouds around visible enemies, and will place the clouds beneath the player if the player is already adjacent to an enemy when they draw it. The intent was that, like hostile cloud placement by enemies, the player had a turn to react and step out of the cloud - it is extremely mean to randomly afflict the player with miasma without a warning, even as a card effect! This commit should replicate the original intended behavior by giving a 1 aut cloud immunity if the card places a cloud under the player. -------------------------------------------------------------------------------- 841635c0e0 | Kate | 2023-12-22 00:17:21 +0000 Mark the Arena branch as fully mapped Arena maps are designed to be small and fully within LOS upon entering, and that should stay the case, but the fully_map branch flag is still applicable as it reveals the occasional edge of the spectator area and prevents exploration healing without needing an extra special case (and also prevents exploration piety, in case Okawaru ever ends up caring about it!). -------------------------------------------------------------------------------- cd514f47d3 | DracoOmega | 2023-12-21 14:30:20 -0330 Silence a compiler warning about shadowed variables -------------------------------------------------------------------------------- 273af0913d | DracoOmega | 2023-12-21 14:30:20 -0330 Fix a test failure -------------------------------------------------------------------------------- 9953226333 | DracoOmega | 2023-12-21 14:30:20 -0330 Turn Oni drunken brawling into a real mutation So that it won't overflow the mutation screen and can be examined for a more specific description. -------------------------------------------------------------------------------- 7095806d71 | Nicholas Feinberg | 2023-12-21 09:40:47 -0800 Fix iron giant not having a quote Discussion of souls feels vaguely appropriate for a Hells enemy. -------------------------------------------------------------------------------- 40f9ea6007 | Kyle Rawlins | 2023-12-21 12:39:28 -0500 fix: correctly show email in change email ui on webtiles Luckily, this bug was entirely cosmetic; email was not actually set to null and it was even updated correctly. But it prevented both logging the new email, and showing the new email (or old email) to the player in the webtiles UI. This fix will require a webtiles server restart to activate. -------------------------------------------------------------------------------- b567cfdca4 | DracoOmega | 2023-12-21 02:41:38 -0330 Fix Earth Magic description still mentioning Transmutations (Oneirical) -------------------------------------------------------------------------------- 753d86d23d | DracoOmega | 2023-12-21 02:40:43 -0330 Fix Oni only getting several of their mutations at xl 2 (dillyguru) -------------------------------------------------------------------------------- 7fd7ca34b5 | DracoOmega | 2023-12-21 01:32:18 -0330 Fix tag upgrade builds for oni -------------------------------------------------------------------------------- e2edf0f575 | DracoOmega | 2023-12-21 01:32:18 -0330 Cut Pyre Arrow from Azrael Especially with the introduction of bombardier beetles, there's more than enough prominant sticky flame in the game now. His spell set will be fine without it. -------------------------------------------------------------------------------- 5616923710 | DracoOmega | 2023-12-21 01:32:18 -0330 Remove AF_STICKY_FLAME The only users left are searing wretches, and it doesn't seem too important on them (and they surely didn't need the megabuff the overall sticky flame changes caused them). Besides, I think wanting to move to cure a status works better when you aren't necessarily in melee range of something at the time, too. And it saves me making one more formula sane, too >.> (I removed searing wretches previously-irrelevant 3rd hit and folded some of its damage into their first.) -------------------------------------------------------------------------------- 948705f5d4 | DracoOmega | 2023-12-21 01:32:18 -0330 Revamp Sun Moths Sun Moths are... weird. Why are they holy (in a branch with multiple notable natural necromancy things, for that matter)? What is the halo supposed to accomplish? Why do they resist electricity? They've effectively just been irresistable bolt monsters with decorative sticky flame and while that isn't *nothing*, said bolt of energy is slated to get a will-lowering effect this version and that *also* doesn't do anything in Spider, so this seemed a good time to give them a shake-up. They now have a higher intensity pyre arrow and lose energy bolt and AF_STICKY_FLAME to pick up AF_SWOOP. They will light you on fire and intercept you when you attempt to shrug it off. They lose rElec, become rF++ instead of rF+, and become a little more fragile. I'm perhaps needlessly worried about how dangerous new sticky flame is since I don't have good data on that yet, but the *idea* is that these become one of the most notable sources of it in the game, since it's their primary means of threat (whereas it is secondary on most other enemies that have it). I have also rewritten their description. I am rather fond of it, tbh. -------------------------------------------------------------------------------- 0fc8318213 | DracoOmega | 2023-12-21 01:32:09 -0330 Add Bombardier Beetles to help tutorialize new sticky flame The changes to monster sticky flame make it substantially more dangerous than it used to be, and players used to the old status quo may not realize that moving will greatly reduce damage taken. I made sure to include this in pyre arrow's description, but why would a player who thinks they know how it works look at it again? (And it's too intrusive to tell the player every turn "Are you sure you want to stay still?") So I am adding a monster with pyre arrow to early D. It is intended to be scaled so that it isn't terribly likely to *kill* players, but may still naturally teach them how sticky flame works before they reach enemies who *can* kill them with it. It is a speed 6 creature, so it gives the player plenty of time to run away from it while on fire (or even incidentally discover that they can shake off sticky flame via movement when they charge *towards* it.) and is otherwise fairly harmless in melee. -------------------------------------------------------------------------------- 3627872b49 | elliptic | 2023-12-20 23:43:34 -0500 Add a break -------------------------------------------------------------------------------- 990ad9562c | elliptic | 2023-12-20 23:41:23 -0500 Don't display gem intactness info on the game end screen without Options.more_gem_info But still write it to the vmsg logfile field. -------------------------------------------------------------------------------- 81216b26b2 | gammafunk | 2023-12-20 21:05:34 -0600 fix: Don't used runed doors in a vault (Midn8) The vault jmf_multi_god_temple2 apparently got runed doors when it previously had secret ones and we removed secret doors. It places normal level spawns, so it shouldn't be runed at all. Not to mention hiding overflow altars behind runed doors is generally a bad idea. -------------------------------------------------------------------------------- 013ef95028 | Nicholas Feinberg | 2023-12-20 18:13:31 -0800 Always include full gem info in logfiles (elliptic) Oops! -------------------------------------------------------------------------------- 8c40ea976f | DracoOmega | 2023-12-20 19:21:22 -0330 Checkwhite Some day I will remember to do this before pushing instead of afterward. ... Maybe. -------------------------------------------------------------------------------- afeb8edd3b | DracoOmega | 2023-12-20 19:15:33 -0330 Change player Ogres into Oni, shorten Armataur tongues Ogres are considered a fairly weak player species, and have been arguably additionally troubled by the fact that most of the ogres the player ever encounters in the dungeon are dumb giant club brutes - leading new players to assume this is the core ogre playstyle, despite many veterans arguing that they make better mages than fighters, and that 1-hander + shield is the better choice for them. Simultaneously, there's been a desire to cut armataur's doubled potion gimmick. Their new regen-on-rampage is already very strong, and does a better job of emphasizing the species' core movement gimmick than long tongue does, and it is much easier to reasonably balance their power without TWO big sources of healing. (Inversely, despite their large hp pools, ogres can be paradoxically fragile and could definitely benefit from the additional potion healing.) So I am simplifying that mutation, moving it to ogre, and rethemeing them slightly to give the mechanic a stronger flavor fit. Player Ogres are now Oni. Leaning into the mythical backdrop of them being legendary drinkers and brawlers, oni gain doubled health and magic from any potion that restores these (ie: !curing, !heal wounds, !magic, and !ambrosia, and when they drink such a potion, they also make an immediate attack against all enemies surrounding them. Cleave with a giant spiked club, just so long as you have enough on hand to drink while you do it! Oni apts are mostly the same as Ogres, with the following changes: Maces -1 -> 0 Armour -2 -> -1 Shields 0 -> -1 Invocations 1 -> 2 People have clamored for ages for the most obvious wielder of giant spiked clubs in the game to not have a negative apt and that seems reasonable to me (the ancient +3 they had made this more of a no-brainer, but 0 probably leaves other weapons sufficiently appealing) Slightly better armor and slightly worse shields apt (along with drunken brawling) may also nudge them a bit more towards 2-handers without making them obviously correct. And +1 invocations due to their famous associations of working for the celestial bureaucracy (as torturers... >.>) They have also gained horns 1 (they already were too large to wear helmets, so this is a minor buff than a new restriction - also oni are usually depicted with horns). I toyed with the idea of giving them built-in shoutitits 1, with rewritten messages so that they kept bellowing challenges and taunts at random enemies. And while I think the flavor of this is *hilarious*, I worry that their buffs might not entirely compensate for this downside. Or maybe it would be fine along with some other minor tweak? Either way, this hopefully does a somewhat better job of selling the fantasy of the species one is playing as, while providing a unique gimmick to play with. (Enemy ogres are staying as ogres - it would defeat some of the purpose of this if they changed - but Erolcha specifically may be slated to become an oni instead) -------------------------------------------------------------------------------- 33de52bd5f | Nicholas Feinberg | 2023-12-20 12:13:41 -0800 Axe slime gem time (elliptic) Empirically seems a bit too easy at the moment. Reduce the clock from 1500 dAut to 1000. -------------------------------------------------------------------------------- 12b4d39fdb | Nicholas Feinberg | 2023-12-20 12:01:42 -0800 Don't heal poly'd mons (MysticSailboat) Polymorphed monsters getting a huge heal was added in 0c496e0be39 (0.4, 2008) without explanation. It doesn't seem intuitive or needed, and is actively counterproductive for Nemelex's Degeneration card in combination with other Destruction cards, so let's cut it. (It was also completely undocumented, as far as I can tell. Of course!) Shapeshifters get to keep healing on each shift, as before. Slimified monsters explicitly get a full heal, since that feels right to me ( ✨ vibes ✨ ). -------------------------------------------------------------------------------- 0d4b2e2ecf | Implojin | 2023-12-20 11:28:13 -0600 fix: Don't let blastmotes grant cloud immunity (Drazool) Previously, players casting blastmotes could stand on the tile where it was cast, gaining immunity to all types of clouds as long as they didn't move. This kind of elbereth-tech seems undesirable (especially so for a level 3 spell), so this commit allows other cloud types to overwrite blastmotes. -------------------------------------------------------------------------------- 06160a9761 | Implojin | 2023-12-20 11:01:54 -0600 Let searches for rPois match alchemy staves (particleface) Looks like an oversight with the staff rename. Thanks to particleface for reporting this! -------------------------------------------------------------------------------- 5021b54cb2 | DracoOmega | 2023-12-20 03:30:53 -0330 More fixups to Mercury Vapour Properly print a message when casting at a protected ally or empty space and don't warn the player about casting on allies that won't be affected anyway (including other allies that are poison immune) Also: don't display the weakness success chance in negative numbers if it's 'below' 0% -------------------------------------------------------------------------------- 783b6e986b | DracoOmega | 2023-12-20 02:59:29 -0330 Let Hep ancestors properly avoid Mercury Vapours And Fedhas plants too, I suppose :P -------------------------------------------------------------------------------- 078f9b89d1 | DracoOmega | 2023-12-20 02:43:25 -0330 Copy beam.hit_verb in bolt_parent_init It's not clear why this wasn't being done, and I don't see what harm would come from doing so. In fact, several pieces of code seem to have already expected that this happened, and specified hit_verbs that were never used. -------------------------------------------------------------------------------- 5fad861c52 | DracoOmega | 2023-12-20 02:43:16 -0330 Make Malign Offering into a zap So that its damage can be shown when examining monsters. -------------------------------------------------------------------------------- dfb52cbc09 | DracoOmega | 2023-12-19 22:09:08 -0330 Fix a Mercury Vapours crash I must have reordered some of this *after* testing it... -------------------------------------------------------------------------------- 23da92e3a2 | DracoOmega | 2023-12-19 21:14:57 -0330 Fix a couple custom randbook uses of Poisonous Vapours that missed renaming -------------------------------------------------------------------------------- cae00c0fb1 | DracoOmega | 2023-12-19 20:27:12 -0330 Shuffle spellbooks a bunch The book of Changes was incredibly sad (and nonsensically named) with just Sting and Irradiate, and attempting to touch this up caused a chain reaction (which hopefully still improves the status quo). Unrestrained Analects loses Ignition and gains Ozocubu's Refrigeration. Book of Battle returns, with Ozocubu's Armour, Manifold Assault, and Fugue of the Fallen. Book of Changes renamed to Book of Spontaneous Combustion, containing Inner Flame, Irradiate, and Ignition. Book of Alchemy renamed to the book of Transmutation (but contains the same spells as before). Book of Minor Magic lost Mephitic Cloud and gained Blink. Book of the Senses gained Mephitic Cloud. Book of Blood gained Call Imp (since apparently there was only one book that had a copy of it) Book of Cantrips gains Sting. Book of Death loses Fugue of the Fallen. Book of Misfortune loses Inner Flame to gain Jinxbite. Book of Danerous Friends loses Jinxbite. Ozocubu's Autobiography and the Inescapable Atlas were cut. The latter's description didn't really make any flavor sense with its spell set of Blink and Manifold Assault. It's a shame to lose two of the best book descriptions, so I adapted most of the former for Book of Battle. Trismegistus Codex loses the joke about all its spells having 3 schools, but the only other 3 school spell remaining is Mephitic Cloud which already shares another book with Freezing Cloud. Alas. -------------------------------------------------------------------------------- 952b61244d | DracoOmega | 2023-12-19 20:27:11 -0330 More minor Alchemy spell adjustments Change Fulminant Prism into Conjuration/Alchemy. (The Hexes part was always dubious flavor, but I'd wanted *something* non-elemental that wasn't conjurations itself.) Cut Dazzling Flash from Conjurer. It made a lot more sense when this was Dazzling Spray and did actual damage, and now that no other spell in the book needs hexes, it makes sense to remove it. Slightly sad for the book to have 4 spells instead of 5, but its power level should barely be affected. Slightly buff Sting impact damage at max power and increase its range by 1. Technically it's marginally harder to reach max power than before, but also while this remains the only spell that Alchemists can use against rPois enemies until Sticky Flame, it might to be just a tiny bit better. Also change Sting's description. -------------------------------------------------------------------------------- b5f9efb42b | DracoOmega | 2023-12-19 20:27:11 -0330 Poisonous Vapours -> Mercury Vapours Poisonous Vapours was in a somewhat awkward position, where at very low power, it would often inflict less total damage than sting for twice the mp - something a very early character often cannot afford, even with vapour's more generous targeting. It became much better with more mp and spellpower, but by that point you could often cast OTR which usually outclasses it. This attempts to give it secondary appeal, even while sandwiched between those two starter spells, and give a little bit more alchemy flavor. It is still a smite-targeted direct poison spell, but it additionally has an HD-based chance to inflict weakness on both the target and any adjacent to it - regardless of poison resistance. It is also slightly more generous with posion application if the target was not already poisoned, and a little less generous at reaching full stacks. I also reduced its range to 6. The current weakness success chance is: 100 - max(0, (victim_hd * 12 - pow * 2 - 10)) which aims to make it fairly reliable against early enemies, but drop off severely against later ones - even at max power. (Enemies not in the center of the spell have only 2/3rd the normal chance to be affected - I am not sure if this is a necessary complexity or not). -------------------------------------------------------------------------------- 019d70c61a | DracoOmega | 2023-12-19 20:27:10 -0330 Revamp Sticky Flame (the status and the spell!), give to Alchemists Sticky Flame, the player spell, has been widely considered to be a little sad for a while; the attack of opportunity changes hurt kiting with it a lot, and there are generally more appealing fire options at a similar level. And Sticky Flame, the status used *against* the player, has been even sadder for far, far longer. It doesn't scale with the enemy applying it and does such a trivial amount of damage that it can be completely ignored in virtually all situations. This commit aims to address both of these issues simultaneously and give Alchemist a new toy at the same time (as well as a better tool in their kit to deal with rPois enemies). Sticky Flame (the status) now does more damage per turn than it used to (*far more* against players) and has a generally longer duration, but is removed rapidly when the victim moves instead of performing other actions - essentially a sort of 'reverse barbs'. The per-turn damage of the player status also scales directly with enemy spellpower, so that both smoke demons and balrugs can threaten appropriately for their depth. The idea is that this status will do significant fire damage over time unless the player actively attempts to put it out - but not so much that it is always correct to drop what you're doing and do so. The status effect still does fixed damage per turn to monsters (though higher than before), but monsters *also* put the status out much faster when they move - meaning that when the player lights a monster on fire, they will now want to stand in place next to it rather than move away and waste most of their spell, which should hopefully bring interesting positional decisions, especially when combined with the rest of alchemist's starting kit. Sticky Flame has moved from Conjurations/Fire to Alchemy/Fire and added to Alchemist's starting spells. It should do meaningfully more (and more consistent) damage to targets, so long as you can actually remain near them. Also, the monster spell name 'Sticky Flame Ranged' was always a historical holdover and somewhat confusing considering the multiple ways in which it was different than Sticky Flame, so it is now further divorced from the player spell and renamed Pyre Arrow. It deal no impact damage at all (while the player spell still does, as a means of additional scaling, considering that the damage of sticky flame against monsters is fixed). Monster spell info displays the *per turn* damage taken from the sticky flame status this spell applies. (Alas, this is currently not true and also complicated for the player version when used by player ghosts...) I have also done a bunch of internal renaming and light refactoring. No longer do we have a DUR_LIQUID_FLAMES, but an ENCH_STICKY_FLAME, and then apply them both with a function called 'napalm', but instead use sticky_flame consistently. There are a LOT of numbers and formula changes in this commit, and I have done my best to make them vaguely reasonable, but I have no doubt that some will need playtesting adjustment - especially since this is a new dynamic being introduced both for and against players. -------------------------------------------------------------------------------- 614289c723 | DracoOmega | 2023-12-19 20:27:02 -0330 Wereblood -> Fugue of the Fallen (level 3 Necromancy) Wereblood has had somewhat weird thematics ever since Shapeshifting took over all of the 'transform self' effects from Transmutations. Necromancy, on the other hand, is a natural fit for a spell that is powered by killing things. This has the following mechanical changes over current Wereblood: -The healing effect is removed -Ally kills now boost the effect (but allies themselves do not benefit from it in any way) -Max stacks reduced to 7 instead of 9 -At maximum stacks, successful hits will inflict minor pain damage to all adjacent targets to the one you attacked. A little bonus for the tricky task of maxing it! -Moved to level 3 I haven't put this in the necromancy starter book. Wereblood was never great at low levels, since you usually can't sustain fights long enough to build it and struggle to kill already. I think there's no way a necromancy wants to use their mp on this instead of vampiric draining, and it's more interesting if the spell is intended for later use. Also: this gives players more incentive to splash necromancy on a hybrid that doesn't involve allies! To avoid the player needing to worry about whether any individual monster they kill has a 'soul' or whatever, the spell is themed as using fresh death to draw in the spirits of the long-dead that already linger everywhere in the dungeon (I mean, there's enough corpses in every inch of the dungeon that BVC works, right? :P) -------------------------------------------------------------------------------- 8f7eaaa2f0 | DracoOmega | 2023-12-19 20:26:54 -0330 Merge Poison Magic and Transmutations into a single school: Alchemy When forms were removed from Transmutations to create talismans/shapeshifting, the Transmutations school was left in a slightly awkward state. It still contained multiple strong and useful spells (eg: Irradiate and Yara's) but was a little thin on the whole, especially at lower levels, and lacked natural inroads. And Poison Magic has long had issues with being overly narrow in thematic scope compared to other schools, as well as lacking exciting lategame spells. This merger attempts to improve both issues at once and open up more interesting future design space by combining the two schools into one: Alchemy. This makes several higher level transmutations spells more natural to access, give the Venom Mage start (now Alchemist) more lategame things to look forward to, and potentially allows for the design of more varied means of doing damage than poison. All spells that were either Transmutations or Poison are now Alchemy, with the following notes: -Ignite Poison moved to level 4 since it's now 2 schools instead of 3. -Eringya's Noxious Bog was left at level 6, despite becoming single-school since it's already widely considered unappealing and this might help it. -Sting became Conjurations/Alchemy. -Wereblood is slated to be rethemed and moved to Necromancy, but isn't yet. Most species aptitudes for Transmutations and Poison Magic were already the same. Cases where that was not the case are listed below. -------------------------------- Transmutation/Poison -> Alchemy Demonspawn: -1/0 -> 0 Felid: 1/-1 -> -1 Formicid: 1/3 -> 3 Gargoyle: -2/0 -> -2 Ghoul: -1/0 -> -1 Hill Orc: -3/-1 -> -2 Merfolk: 3/1 -> 3 Minotaur -2/-3 -> -3 Naga: 0/3 -> 2 Octopode: 0/2 -> 1 Spriggan: 3/0 -> 1 Tengu: -2/0 -> -1 Vampire: 1/-1 -> 1 -------------------------------- This vaguely averages apts, with a slight bias for the original poison skill (and some personal subjective opinion here and there). Formicids and Merfolk both keep their +3 poison apt - the former because it can easily handle the buff, the latter because it's just too good to let merfolk make their own bogs to swim in. Felid apts are in line with their other offensive-focused magic skills, Gargoyles inflexible nature makes them less adept at inducing change in others, and Vampires have traditional thematics around transformation that makes a +1 feel appropriate to me. Ashenzari's Curse of Beguiling loses Conjurations, and the old Curse of Alchemy is renamed Curse of Sorcery (Conjurations + Alchemy). Alchemy miscasts inflict the poison status on the player. (I kind of prefer the idea of them inflicting corrosion instead, though no player Alchemy spell can yet do this, so I'm not sure how people would feel). Messages are provisional, but frankly the miscast system in general has issues with the fact that messages cannot check player properties (cf: ghouls getting messages about how they violently convulse in pain, then take 0 damage) and could use separate work. The Plutonium Sword is decoupled from transmutation miscasts (which no longer exist). I have also added back a vague approximation of the direct damage they used to inflict before the big miscast simplification of a couple years back. Save upgrading will grant players Alchemy skill equivalent to the sum of old Poison and Transmutation skills. Alchemy randbook words are a partial merger of old Poison and Transmutation book words, with heavy cutting, curating, and addition of things. (I tried to prune things directly associated with shapeshifting, as well as poison words that seemed too close to disease and putrescence in a 'gross' sense - instead trying to lean into a more academic vibe for such things. Also added a decent handful of specifically-alchemical references.) Still slightly awkward that it can use poison words for a book containing no spells that poison, but probably no worse than randbooks often are. (Gloorx can stay as a high-level alchemist. Hot new DCSS lore!) -------------------------------------------------------------------------------- bf3fed316f | Nicholas Feinberg | 2023-12-19 11:08:34 -0800 Tweak gem notes (Ge0ff) Include spare time. Also, remove spite for consistency. -------------------------------------------------------------------------------- a3cce3a448 | elliptic | 2023-12-18 22:06:53 -0500 Swap the order of gems and runes on the win screen. It makes sense to have runes be first and closer to the Orb since they are more important than gems. -------------------------------------------------------------------------------- 5f2baee751 | Nicholas Feinberg | 2023-12-18 16:12:21 -0800 Remove undocumented Chei/gem interaction Was surprising and probably not needed for Chei to slow gem timers. We can reconsider this later, of course, but if we do we should probably make Chei slow the rate at which gem_time_spent accumulates, so players aren't incentivized to consider swapping to Chei while almost out of gem time. -------------------------------------------------------------------------------- 7208ddb293 | Nicholas Feinberg | 2023-12-18 15:54:15 -0800 Align colons In monster stat blocks. Boy, what a bother! :) -------------------------------------------------------------------------------- a3531c41b4 | Nicholas Feinberg | 2023-12-18 15:13:07 -0800 Reduce slick slippers price by 30% Since its downsides aren't really factored in. This might be overkill. -------------------------------------------------------------------------------- dfd56e322c | Nicholas Feinberg | 2023-12-18 15:09:19 -0800 Tweak repulsion ego description The old one was unclear to some, helping contribute to the perennial repulsion-reflection mix-up. Maybe this will help? -------------------------------------------------------------------------------- b28be9a5f2 | Nicholas Feinberg | 2023-12-18 15:09:15 -0800 Fix the build -------------------------------------------------------------------------------- 27c7112c99 | Nicholas Feinberg | 2023-12-18 15:05:29 -0800 Ban double flying talismans (Flugkiller) -------------------------------------------------------------------------------- 7e11add784 | elliptic | 2023-12-18 13:04:13 -0500 Remove a comma -------------------------------------------------------------------------------- b6740aa4e6 | Nicholas Feinberg | 2023-12-17 21:43:32 -0800 Fix a sneaky inugami bug We didn't erase CANINE_FAMILIAR_MID when we changed levels, meaning that we might accidentally believe that some other random monster on the new level was our beloved dog. When we cast call canine familiar, we could end up buffing and healing a random, probably hostile monster, or just being unable to summon a new dog. Pretty good! This whole mid-based approach is very scary to me (it feels quite fragile), but it's what we're doing for spectral weapon, so maybe it's fine? I wonder about tagging the dog instead of the summoner, though. -------------------------------------------------------------------------------- 9785b71c3f | Nicholas Feinberg | 2023-12-17 21:42:24 -0800 Simplify some inugami code and fix a minor bug Mostly minor refactoring, but also fixes a bug in which, if something copied your inugami (phantom mirror, Mara, etc) and then the copy died, the game would think your inugami died (and would set a cooldown, prevent you from healing/buffing your dog, etc). This is important for all those times that you use phantom mirrors on your dog. -------------------------------------------------------------------------------- 0c0848231e | Nicholas Feinberg | 2023-12-17 16:51:43 -0800 Darken non-present monster resists -------------------------------------------------------------------------------- 0d254b9dff | Nicholas Feinberg | 2023-12-17 16:22:01 -0800 Continue removing gems from descent They don't really work properly, IMO. We can revisit this later. (They were already disabled in the UI.) -------------------------------------------------------------------------------- 8770774cb4 | Nicholas Feinberg | 2023-12-17 16:19:50 -0800 Fix hiding lost unvisited gems (CarefulOdds) The gem UI is supposed to hide unfound and broken gems by default, to avoid demoralizing players by telling them about things they can never get. However, if a player had run out of time for a gem but the gem's floor hadn't been visited yet, that gem wouldn't be hidden. Fix that. -------------------------------------------------------------------------------- 407de8339a | Nicholas Feinberg | 2023-12-17 16:13:50 -0800 Hide clock for held gems by default (elliptic) Just getting a gem is enough of an achievements. Some players find it stressful to be informed that their gems will shatter even after they get them. (Quite understandably!) Hide gem shattering behind a new, default-false rcfile option. This has no effect on score, it just makes 'gems shattering' into an even-more opt-in mechanic. -------------------------------------------------------------------------------- 1c27f8a97b | Nicholas Feinberg | 2023-12-17 15:40:19 -0800 Don't fear Zot Continue removing Meteoran. -------------------------------------------------------------------------------- 5190ab2d73 | Nicholas Feinberg | 2023-12-17 15:13:38 -0800 Add a price for artefact spell enhancers This code is bad! -------------------------------------------------------------------------------- 0cff9e4079 | Nicholas Feinberg | 2023-12-17 15:13:38 -0800 Wizmode: show item value in xv I forget if there's another way to do this. -------------------------------------------------------------------------------- 5386780bc2 | regret-index | 2023-12-17 19:12:56 -0330 Re-order alligator attacks As with trample, dragging needs to be the last attack in a monster's list of attacks, or it won't do further attacks after it moves. It's a little weird for them to tail-slap before biting, but I wasn't intending for alligators to lose quite so much melee damage against higher AC characters, so it has to work out this way unless a fair ways more material is rewritten. -------------------------------------------------------------------------------- 4d4119cd44 | regret-index | 2023-12-17 19:09:20 -0330 Buff protean progenitors in various differing ways The general reception of them seems to be that they're cool but a little weak for Zot. Progenitor wise, they get a bit more melee damage in base form and their band chance goes from 33% to 66%. Aspirant wise, the flesh has a bunch more health, slightly less maximum time before each polymorphs, HD 10 is guaranteed the third flesh now, and a fourth appears if poly code manages to pull out HD 8 or lower. If this still isn't enough, possibly we could fiddle around with the shapeshifting HD or the higher HD's spawning count, or we could make one of the flesh piles drop off at half health instead of waiting until they death. -------------------------------------------------------------------------------- cfba0412b6 | regret-index | 2023-12-17 18:33:24 -0330 Bump up Bai Suzhen's transformation threshhold a little. Her transformation gimmick is somewhat inherently stymied by Crawl's randomness sometimes going far past her hard 50% HP threshhold. It was originally set a little low because she had more of a gimmick in her first phase (rain clouds ring to help her getting fast amphibious movespeed in the second phase), but since she doesn't have said first form gimmick, it's plain enough that it doesn't need to stick around for as long. I'm nudging it to 66% health instead. -------------------------------------------------------------------------------- 8606b069a1 | regret-index | 2023-12-17 18:25:17 -0330 Double klown pie Vitrify (flugkiller) Klown polymorph was much longer than most other statuses from the pies or from polymorph in general, so its replacement could do with being longer. This also further differentiates it from the hex. Enjoy the gelatin. -------------------------------------------------------------------------------- 2f004bd33d | regret-index | 2023-12-17 18:19:20 -0330 Fix some absent gems and a crystalized boss. grunt_lair_end_beastmaster lost the titular troll when the earthy gem was added to that vault. Also, all the scaling vaults for Depths that can have a Zot entrance weren't touched (same with the D vaults that could have a Depths entrance), so they didn't place any gems properly. 866d48a was an admirable effort, nonetheless, but this should fix up more of its wake. Also did some cleaning up while I was looking through all of these. Of minor note was finding out grunt_runaround was set up for D:15 but never actually placed. I'm heavily nerfing the Depths entrance it set up, though. D:15 is not a place for a titan, two hell knight bands, and a shrike in the same room. Eventually, I'd like to adjust most of these vaults to place the gem not underneath the rune or other loot or on the Depths / Zot entrance, so that they can be admired on the floor as the sparkly gems that they are. Probably later, though. -------------------------------------------------------------------------------- dddd49282e | Nicholas Feinberg | 2023-12-17 12:45:43 -0800 Tweak some gem colours -------------------------------------------------------------------------------- b2fffa6d40 | Nicholas Feinberg | 2023-12-17 12:41:56 -0800 Increase Tomb gem time (Oneirical) The odd structure of Tomb makes it a bit harder to get through than most branches. -------------------------------------------------------------------------------- 03ee008336 | Nicholas Feinberg | 2023-12-17 12:17:26 -0800 Make malign offering less noisy (Hal) Don't print messages when you can't see any participants. -------------------------------------------------------------------------------- cef503e1cc | Nicholas Feinberg | 2023-12-17 12:14:39 -0800 Remove $ (regret-index) Typo in 866d48a76e53198ac7dee08fed80d99590233fe9, probably. -------------------------------------------------------------------------------- 2402ceb476 | Nicholas Feinberg | 2023-12-17 12:12:01 -0800 Remove orc gem As with other gems, the orc gem was intended to be an interesting challenge in itself and to also contribute to the difficulty of the 'all gems intact' challenge. However, Orc's layout meant that players would often reach the gem quite quickly, even in normal play - not an interesting challenge. Tightening the time limit would mean that Orc was a bit more inaccessible than intended. As it was, travel time to/from Elf and shopping could already create heavy pressure on the timer. Let's cut the glittering gem for now. This makes the 'all gems' challenge a bit easier, and encourages resting in Orc instead of in Elf:1, but that's liveable. (And similar to other cases re: resting in Temple, etc.) It could be interesting to instead make the Elf gem include the Orc branch in its timer, so it has a longer overall timer but ticks down while the player is in Orc as well as Elf. That has too high a UI and complexity burden to be justifiable, though, probably. Trivai: one now reaches 27 by adding 15 runes + 11 gems + 1 orb. -------------------------------------------------------------------------------- e6b85068f3 | elliptic | 2023-12-17 13:55:27 -0500 Don't let Kiku wrath drain all the player's MHP in a single turn (Oneirical) Still a substantial amount of drain with no rN (30%-50% of player MHP). -------------------------------------------------------------------------------- 1fbed5ca12 | regret-index | 2023-12-17 07:07:08 -0330 Juggle arcanist and occultist spells one last time, hopefully Arcanists don't have nearly enough damage spells to make use of their Vitrify hex, while Occultists are still kind of weird on theme and power. Occultists give Force Lance to Arcanists (who lose Blink) so the latter can still maintain distance while also being more likely to properly sequence the buff / hex -> hex / buff -> blast designs. Occultists get Poison Arrow in exchange because poison correlates somewhat with their names and also it does more direct damage for more circumstances so they're less sad in Depths. Still don't entirely know how I feel about either, but they're better off than ~6.5 banishers per Vaults trip were, I guess. -------------------------------------------------------------------------------- ad7a08865a | regret-index | 2023-12-17 07:04:56 -0330 Buff and shorten Vitrify, update UI around it, spread it a little more Vitrify seems to have been relatively well recieved for the prospect of having a new dangerous Hex beyond paralysis and banishment, but there's been relatively low fears of it due to the conservative rate it started out at. I'm buffing it from +30% damage to +50% to make it match the damage numbers of negative resistances and be dangerous enough it has to be worried about immediately. The gaze goes from increments of 6 to 10 turns to 4-8 turns, and the spell goes from 8-24 to a less harsh cap of 8 to 18. To correlate with this buff, the default messages settings now make players being vitrified get the same danger colours as constriction and corrosion in the message log. I'm also adding the exact damage increase it inflicts to the % screen, to correlate with the exact numbers currently displayed for harm. There was a fair bit of divided opinion in multiple places regarding percents like Harm currently uses versus multipliers instead, or if it should be be made additive instead of multiplicative with Harm. There's little agreement on the latter, but the biggest opinions were to display it like current Harm but seperately of the full indicator, a "+50% damage incoming" which kinda lies if one also has Harm active. I sort of prefer the multiplicative approach, parsing and expectations-wise, but if other devs feel strongly about rAll- being additive instead of multiplicative (or alternatively, if the display should multipliers or combine the damage incoming together or whatever), they may do as they wish; I cede the ground to them. Since the previous state of the effect worked out fine prior, it should also be reasonable to share it with more than just a few paralyzers: * Cacodemons lose the boring Slow and Confuse combo to cast Vitrify and a bit more Bolt of Energy. It sort of fits the matter / flesh shaping theme Dig and Malmutate already had, and lets them cast a flashier hex for greater demon summoning / Pan than spells present the whole game long. Maybe their Bolt of Energy could be looked at next for being so plain... * Klown pies swap out Polymorph in their effects list for Vitrify. There's been some consternation about melding the entirety of one's armour being far more lethal than most other possible effects around between AC and resists, and this makes one still reasonably frail while both keeping one's built-up-all-game-long defenses / resists and varying once more from the hex or the gaze by checking EV and LoF instead of Will or LoS. -------------------------------------------------------------------------------- 11c5b68f87 | regret-index | 2023-12-17 02:00:15 -0330 Small Xom overflow and Orc decor vault batch The Xom vaults were inspired by 6d556a0 and 292434c. Probably the 0.2% chance for Xom to present completely unusable randarts is fine, alongside the 2% chance for a pile of box of beasts mimics. The Orc decor vaults are all somewhat inspired by Orc ends in various fashions and are meant to help a little bit with making an Orc decor guarantee, alongside the additions from PR #3325 whenever that's done. -------------------------------------------------------------------------------- 9d81352419 | Implojin | 2023-12-16 17:36:35 -0600 Let Humans rest before exploring (PI-314, Patrick2011b) By giving Humans explore regen, f11e229afd introduced a bug where Hu wasn't properly resting to full before autoexploring. This commit fixes that by reverting 32f4ba3753, which is no longer needed now that Meteoran has been removed. -------------------------------------------------------------------------------- a6fa84c583 | regret-index | 2023-12-16 20:05:07 -0330 Fix a deep water gem (elliptic) Speedrunning is one thing, but we can't really expect most players to dive through deep water too. -------------------------------------------------------------------------------- b81609b7df | regret-index | 2023-12-16 19:56:43 -0330 Crunch down Saint Roka's band later on, restrict their later range Roka's range is extremely wide for a unique heavily dependent on earlier game spawns- Orc, Snake, Elf, Vaults, Depths, and Crypt. While it's cute and thematic that they're bringing even plain orcs as deep down as Depths and Crypt, those spawns are also extremely sad individual spawns and a very weird explicit sign of Roka being just around the corner. In the spirit of how orc warlords can spawn in Vaults with just a few orc knights, Saint Roka's band is now substantially stronger in Vaults, Depths, and Crypt- instead of 8 to 16 non-warlord orcs, wargs, or trolls, the band has been bound to just 5 to 8 of knights, sorcerers, and high / priests. Roka has also been excluded from Depths:3-4 and Crypt:3 in the process. Hopefully this should make them a little more interesting as a unique that scales based on their placement. -------------------------------------------------------------------------------- b2a365499e | regret-index | 2023-12-16 18:46:33 -0330 Juggle around the unused monster tiles folder some more Considering a fair number of the tiles will forever exist in the git history, rltiles/UNUSED is a weird batch in an untidy closet we're evidently never going to bother to fully clean out. There's tiles in here that are in active use at the current moment, older versions of currently present monsters (fine for former-humans, baffling for generic demons), and a variety of tiles that wouldn't really past muster for any even short-term use. Whatever gets here versus entirely removed basically boils down to random chance based on a dev bothering to keep given tiles or not. This brief tour cuts out dozens of redundant or mediocre tiles left lying around, alongside tiles currently in use one way or another. It also adds back a handful of tiles that look any decent, to help out with making future placeholders and to help out other works using the rltiles CC0 license. (It adds a bit to the repository, but crawl's tiles are so so tiny that it adds no real burden compared to e.g. adding whatever new splash screens we get.) Re-added tiles here include coolio's spirit and griffon, roctavian's death ooze / ravenous mimic / giant mite / ants, and Denzi's rock worm. Also, all the non-tall lord / Tiamat tiles are now consistently labeled as .small. If anybody really misses some of these tiles, maybe we could do with a subfolder for this that contains every tile we've replaced or removed, seperate of the main folder. -------------------------------------------------------------------------------- 5f6fb4f5a3 | regret-index | 2023-12-16 18:46:32 -0330 Add and trim a few Xom spells and cloud trails. New spells: Wereblood, Animate Armour, Battlesphere, Malign Gateway. Wereblood forces the player to make noise and thus is neat as a mixed blessing, Animate Armour gets to by-pass its innate castability versus armour weight issues to be more interesting as a random free god act, Battlesphere makes for a decent joke if not actually usable and compensates for the power of the two summons here, Malign Gateway has been missing since the miscast streamlining and is extremely appropriate between the chaos brand and unavoidable neutrality. (These all are exchanged for Canine Familiar, which can't use one of its most interesting aspects in the recast and thus will mostly make players unavoidably get drained and guilt.) New cloud trail clouds are salt and blastmotes, both at miniscule chances. The salt's purpose is obvious, while the blastmotes are manually set at 25 power (power with those is weird and modular) and definitely give a certain kind of danger and excitement very distinct from the spell by getting them without having to stop for laying each of them. -------------------------------------------------------------------------------- 9f703e4c1d | DracoOmega | 2023-12-16 18:07:29 -0330 Don't drain the caster when their inugami dies This was originally intended to incentivize keeping your familiar alive, but the recast cooldown probably does a sufficient job of that in the earlygame on its own. More importantly, this interacted extremely poorly with guardian golem, repeatedly punishing the player for ever daring to use them together. While I fully intend to do something with golem itself in the near future, this should help smooth over some bad gamefeel in the meantime. -------------------------------------------------------------------------------- 3cd9a69821 | elliptic | 2023-12-16 11:53:09 -0500 Fix the intact gem count Previously it was subtracting 1 for gems that shattered without ever being picked up. -------------------------------------------------------------------------------- 7a52a54ec8 | elliptic | 2023-12-16 10:30:55 -0500 Buff Jiyva MP regen to match the amulet (acrobat) This is the same size buff that amulets of MP regen got in 12fdbb3a, so now the HP/MP regen ratio under Jiyva is again the same as between the respective amulets (so at max piety Jiyva regen boosts are the same as a free amulet of Vitality). I'm somewhat wary of making too much MP regen available in general (there's a reason why MPRegen isn't a randart property and HPRegen is), but on a non-temple god like Jiyva it seems fine to go a little crazy. -------------------------------------------------------------------------------- c9949b0d25 | Nicholas Feinberg | 2023-12-16 07:30:43 -0800 Fix gem time warning force_mores Broekn by fedaa185804df896b16962672e4947481c4ad31f. -------------------------------------------------------------------------------- 048bac5d70 | Implojin | 2023-12-16 08:49:40 -0600 feat: Armataur rollpage MPRegen Several players have noted that after the max HP nerfs in b2354cd04e and 593ecc88b7, Armataur book starts seem to be in a pretty rough place, especially before XL 7. The intent of this commit is to help out earlygame Armataur caster backgrounds while maintaining the reduced HP from those earlier commits -- to do that, I've here added rollpage MPRegen, given at XL 1, at a regen rate relative to the current At HP regen numbers. This leaves Armataur's mutations in a more mechanically complex place than I'd like: Probably some further simplification is now appropriate here, but I'll leave that to a future commit. -------------------------------------------------------------------------------- fedaa18580 | Nicholas Feinberg | 2023-12-15 22:28:31 -0800 Various other gem fixes Tweak wording of warnings and add a screen flash on shatter. Don't claim there's a noise - there isn't and shouldn't be. -------------------------------------------------------------------------------- dc1e8866aa | Nicholas Feinberg | 2023-12-15 22:28:31 -0800 Fix more bonus gem warnings (elliptic) Don't warn on entering a branch when a gem is nearly shattered *unless* you actually have the gem. -------------------------------------------------------------------------------- aa4636e842 | elliptic | 2023-12-15 22:06:53 -0500 Give 10 times as much score for gems in winning games (still not very much). This makes each gem give 5-10% extra score in a typical 3-runer win, which seems fair enough. Also, this makes picking up a gem that is "on the way" very likely to be (slightly) score-positive even in speedruns. -------------------------------------------------------------------------------- 094a60cb62 | Nicholas Feinberg | 2023-12-15 18:09:26 -0800 Show gem turns in E Per zot clock. -------------------------------------------------------------------------------- 0072eaf8aa | Nicholas Feinberg | 2023-12-15 17:40:21 -0800 Support alternating elemental colours Looks much nicer for current uses (gem names, spell damage). -------------------------------------------------------------------------------- 521f287fb9 | Nicholas Feinberg | 2023-12-15 17:40:21 -0800 Unsort elemental colour text On further consideration, it looks nicer scrambled. Ideally what we'd want is to have the colours cycle in an orderly fashion, but that's a little fiddlier. -------------------------------------------------------------------------------- 31605cc404 | Nicholas Feinberg | 2023-12-15 17:40:21 -0800 Make glittering gems gold Looks nicer. Make the item glyph itself brown to avoid confusion with gold in ascii-only mode. -------------------------------------------------------------------------------- 4c614596a2 | regret-index | 2023-12-15 22:00:36 -0330 Protean progenitor and aspiring flesh tiles by Sastreii Delicious uranium ice cream. Farewell once more, antique abomination tiles. -------------------------------------------------------------------------------- b92a3409a4 | regret-index | 2023-12-15 22:00:36 -0330 A quick tuning down of Xom's banishment power (Lici) Xom's interest levels restrict the chance to banish the player, but currently, Xom's banishment power uses player xl as a stand in for monster banisher HD. While there's checks before xl 9 to have Xom usually rescue the player, this scaling works pretty poorly between what power we expect of players at given xls versus given monster HD- for example, deep elf sorcerers have only 14 HD to send the player down to Abyss:3, which is reasonable at the time one's doing Elf but not so much for an end-of-Lair character that happens to be xl 14. The current range looks like: xl | 1 | 2-6 | 7 | 8-12 | 13 | 14-18 | 19 | 20-24 | 25 | 26-27 ----------------------------------------------------------------------- min | A:1 | A:1 | A:2 | A:2 | A:3 | A:3 | A:4 | A:4 | A:5 | A:5 max | A:1 | A:2 | A:2 | A:3 | A:3 | A:4 | A:4 | A:5 | A:5 | A:6 While there's a fair bit more abyssal agency than many years prior, this is still quite agressive even for Xom, considering how much later it can ruin a character. I'm doing a quick formula adjustment to the player's xl in the equation to make this more reasonable for now. The resultant possible minimum and maximum depths now look like: xl | 1-11 | 12-15 | 16 | 17-20 | 21 | 22-25 | 26 | 27 ----------------------------------------------------------- min | A:1 | A:1 | A:2 | A:2 | A:3 | A:3 | A:4 | A:4 max | A:1 | A:2 | A:2 | A:3 | A:3 | A:4 | A:4 | A:5 Possibly we could make people in zigs or with 5+ runes visit Abyss:6, but people playing extended Xom probably would manually go to Abyss:7 themselves anyway. Should also look into Lugonu being less boring... -------------------------------------------------------------------------------- 3c0fa26f73 | regret-index | 2023-12-15 22:00:36 -0330 DE Death Mages: buff stats, make Call Lost Soul call more Deep elf death mages lost Twisted Resurrection in b39fecb since they couldn't collect nearly enough corpses to make meaningful abominations (and also abominations are very boring spawns anyway). They are thus rather specifically limited to one spell that makes them stand out- Call Lost Soul. However, summoning one soul at a time at a paltry 11/200 cast rate makes the potential revival function of this spell not particularly impressive- they tend to revive themselves but once to Bolt of Draining the player more, and otherwise rarely help prolong the lives of other present deep elves. Support monsters aren't inherently bad designs, but the other spells are statistically pretty mediocre at actually killing the player, worse off than every other deep elf in the branch. If this spell and this monster are to stick around, they needs to be far more flashy to justify the complexity burden. They get a little more HD, health, and double the Call Lost Soul cast rate. Their summon now also summons two lost souls at a time (rarely three), rather than one. This should help them stand out more as a deep elf that absolutely need to be killed first amongst several other deep elves or else risk nearly all of the other conjurers getting a second life's chance to blast players to bits. TODO: add a tiles indicator for thus-revived monsters being ghostly. Not sure how they haven't gotten one for so long. -------------------------------------------------------------------------------- 2b3bde5f41 | regret-index | 2023-12-15 22:00:35 -0330 Leda's Liquefaction experiment: Earth / Hexes to Earth / Tmut, + buff Leda's Liquefaction started as Earth / Transmutations in 0412296. It was changed to Hexes as part of the double-combo of ae9be96 and 06cfd5e moving it to Hexslinger so the Hexes-based ranged background could focus on and cast something they're particularly suited to use. 9e18931 moved it out of the starter book because a level 4 dual-school spell split a weapons background too many ways, and ever since then it's been left pretty wanting and unused. It's inherently a rather risky spell, as is anything that slows down the player's movement, and doesn't particularly fit most of Hexes' desire to run up and stab things nor is it necessarily likely to tempt ranged characters at its weird schools intersection point. It's gotten some buffs, but is still an unpopular fit. Changing it from level 4 Earth / Hexes to level 3 Earth / Transmutations covers a fair number of different bases. Hexes is extremely packed in its lower-level and mid-level spells with the recentish Hexslinger update, so it could afford to move a spell to another school. Transmutations as a school losing forms in 1880023 hasn't completely killed the school, since the unarmed focus rarely intersected too much with the power of Ignite Poison / Irradiate / Yara's, but it is definitely a school that could do with more unique effects on its own even if as a flavour grab-bag of non-Hexes buffs / debuffs / damage. Moving it to Transmutations also pushes it away from the school containing direct Slow spells, while it works on a very different vector anyway. Finally, I think Transmutations always made a lot more sense- there's no Willpower check or HD check involved, and it clearly is transforming the earth near the caster anyway. Leda's Liquefaction also gets a mild increase of base duration outside of power (10 -> 15) to help it out a little more, since Transmutations itself is rarely a school and skill to contribute spellpower with, and since it's already a risky spell without needing to be ineffectual when actually tried. In terms Placement-wise, not much has happened beyond moving it from the Book of the Hunter to the Book of Sloth. I'm in two minds about possibly moving it to spell level 3 if this still isn't enough... -------------------------------------------------------------------------------- 1baa85e0a2 | regret-index | 2023-12-15 22:00:35 -0330 Buff various old late game uniques stats, bands Xtahua's statistics are atrociously low for even a lategame unique. For a once-beloved dragon with three different gimmicks, they still lag heavily behind other uniques in their equivalent range. Some of this is that while their stats are higher than all normal dragons, they simply have much worse health than nearly any other uniques in their range- somehow, the extra big dragon has less health than a draconian (Bai Suzhen), a normal human (Margery), a lich (Boris), and even a tengu (Sojobo). To help them actually survive long enough to consistently use their 3d40 breath and para roars as a unique with a built-in weakness, they now have only slightly under Vv's health, and get some AC and melee buffs alongside this. (Possibly they could do with some sort of mechanical overhaul in general...) Bai Suzhen isn't doing nearly as poorly as Xtahua or anybody else in this commit, but still is somewhat lagging a little behind late uniques. Her transformation gimmick relies very heavily on her living particularly long for breath and clouds to do much, but it's very easy for the randomness of player damage to heavily overshoot the 50% health threshold she relies on. As such, she also gets a mild HP buff and breathes primal wave a little more often. Margery is very boring and also performing reasonably poorly. She's a fire giant with fancy equipment paired with a hell knight band, in the range where one will fight about 8 of either in the average game. Since her band is the notable part of her, I'm extending its fanciness a bit further. She gets one less max hell knights, but on the hell side of things, the band gets a hellephant or searing wretch to do even more fire damage, and on the priest or necromancer side (yes hell knights are priests), she gets a deep elf high priest or death mage to do more cool weird support stuff. Frederick can clearly afford getting more and more stat buffs until he doesn't take a month between kills. -------------------------------------------------------------------------------- 807b2c42aa | regret-index | 2023-12-15 22:00:35 -0330 Somewhat buff wargs Orc is a weird branch. One of its weird components is that a fair bit of Orc:$ can regularly involve repeatedly retreating over large amounts of open space for a long while to try and break up a dense endvault full of harmless and not-so-harmless enemies, simply and repeatedly normally walking away. While a few enemies in the branch can somewhat sucessfully interrupt this (faster demon summons, sorcerer paralysis) and it wouldn't be a bad idea to add more, wargs are hypothetically a monster meant to cover for this. They are directly orc-themed (by being taken straight from Tolkien), have rPois for whatever mild distinction it grants them, move faster than normal speed players... and they're still quite weak, for non-banding monsters in Orc. Grabbing statistics since 0.27, the only natural branch spawns they kill more frequently than are plain orcs, orc wizards, and blastminers (who are, of course, very new monsters). They're more notable for being Lair entry guards and Orc entry guards than the branch intended to mostly contain them, which is rather backwards. With Call Canine Familiar no longer being reliant on their statistics for the top end of the spell, we can afford to slightly emphasize up another non-Orc monster for the Mines to provide it a little more variety and counteract those slow, slow retreat tactics. Wargs get a bit more speed, AC, and now hit for more than plain yaks since they're usually fought past Lair. In exchange, a bunch of Lair and Orc entry vaults use only one warg at most, and otherwise use wolves in their stead. Some pre-Lair D vaults have also had wargs a bit weakened. They could probably do with an actual gimmick eventually (letting plain orcs ride them?), but this should help notice them in the right spot. Some future commit can just refer to this particular essay again. -------------------------------------------------------------------------------- 98b32277e7 | gammafunk | 2023-12-15 19:13:29 -0600 fix: Properly check some clua hook return values For the hooks for scrolls of identify/enchant weapon/brand weapon/enchant armour, only attempt to use the returned character if it's actually a letter. -------------------------------------------------------------------------------- 843723b269 | gammafunk | 2023-12-15 19:13:29 -0600 feat: An clua item field for enchantability This addes an is_enchantable boolean property to the clua item class, allowing callers to know whether they can enchant an item without performing complex calculations based on item information on their own. Items that don't have a known plus value return true for this property. -------------------------------------------------------------------------------- e217f1483f | Nicholas Feinberg | 2023-12-15 16:57:06 -0800 Uncomment an important line Oops! (!!) -------------------------------------------------------------------------------- 932532b177 | Nicholas Feinberg | 2023-12-15 16:55:18 -0800 Remove an antique comment Demonic runes can no longer stack, for a variety of reasons, so there's no need to clarify *why* they can stack even with different colours. -------------------------------------------------------------------------------- a1d457b083 | Nicholas Feinberg | 2023-12-15 16:53:57 -0800 Don't print control hints for monster The monster IRC bot, that is. -------------------------------------------------------------------------------- 567cc9bd90 | Nicholas Feinberg | 2023-12-15 16:44:50 -0800 Slightly tweak Vaults branch description Crawl has so, so many 'madmen'. Let's continue substituting more interesting and evocative words until we get down to a reasonable baseline level of madness. Really this could use a full rewrite, but this will do for now. -------------------------------------------------------------------------------- 19c8a159c1 | Nicholas Feinberg | 2023-12-15 16:43:57 -0800 Tweak prismatic gem description (regret-index) 🌈 -------------------------------------------------------------------------------- 67763e304b | Nicholas Feinberg | 2023-12-15 16:41:26 -0800 Rename obsidian -> midnight gem (hellmonk) We already have an obsidian rune, and that's in a different branch. -------------------------------------------------------------------------------- 5f21a37ad4 | advil | 2023-12-15 19:25:56 -0500 build: fix mutation test failures from mutated humans The `mut_species.lua` test, as part of its cleanup, relied on humans being mutation-free. This would break the following test (`mutation.lua`) which assumes that its character starts mutation-free, when the two are run in sequence. -------------------------------------------------------------------------------- aba747a4dc | Aliscans | 2023-12-15 19:21:27 -0500 Fix compiling with NOWIZARD. The wizard option is defined in NOWIZARD builds. Define an enum it relies on then. -------------------------------------------------------------------------------- 5bc90fcf8d | advil | 2023-12-15 18:57:45 -0500 fix: don't crash on gems in the known item menu -------------------------------------------------------------------------------- 18113328f3 | advil | 2023-12-15 18:44:23 -0500 build: possibly fix tag upgrade CI build -------------------------------------------------------------------------------- 57893ffec4 | Nicholas Feinberg | 2023-12-15 12:56:15 -0800 Fix gem crash (oops) -------------------------------------------------------------------------------- 7e0a1e9799 | Nicholas Feinberg | 2023-12-15 11:00:36 -0800 Remove Me(teoran) Following on from the last two commits, Gems now serve the purpose that Meteorans were intended to, and Humans have taken their healing. Meteorans can now fly on to another star. Farewell, sweet princexes! I have a new species to fill Meteoran's "slot" in-progress, but the current planned 0.31 release is too close for it to land yet. More on this in the next few months, with any luck. -------------------------------------------------------------------------------- f11e229afd | Nicholas Feinberg | 2023-12-15 11:00:36 -0800 Give Humans exploration healing (elliptic) Humans have long been thought of as rather bland. The intent is for them to be a vanilla 'baseline species', but that excites very few players in practice. Let's move them even closer to baseline by moving their XP apt down to the default, and give them Meteorans' exploration healing in exchange. Humans are natural explorers, after all! This might encourage some fun new playstyles. Numbers, as ever, subject to change. (elliptic thought we should double explore healing, but I want to try baseline healing first.) -------------------------------------------------------------------------------- 866d48a76e | Nicholas Feinberg | 2023-12-15 11:00:36 -0800 Add gems When I added Meteoran (1352289c90d, based on Hellmonk's ad05b8d819def), I wanted to give players a fun way to engage with time pressure. When I play, I really enjoy the feeling of exploring on less than full HP and making choices about which areas to explore. (Full clearing everything carefully can be fun, too, but variety is the spice of life!) I'd hoped to find a way to bring that playstyle to the wider playerbase, with time limits that are more defined and achievable than the harder and fuzzier goal of 'compete for a high score'. Some people, including myself, really liked Meteorans! But a large number of players, probably the majority, found them stressful and unfun. That isn't the end of the world - I'd much rather have a species which 20% of players love and 80% hate than one which 99% of players don't care about one way or another. But I'd also hope that we could do better. Gems are intended to be an alternate approach to the 'time pressure' playstyle. They're a new type of collectible item, appearing at the end of DOLESAPNMVCWUZ - basically, all the non-portal, non-temple branches of a 3-rune game. Each gem has an associated time limit, which ticks down while the player is in their associated branch. When that time runs out, regardless of whether the player has gotten the gem yet or not, Zot rudely smashes the gem into ten thousand pieces. The intention is to allow several different ways to interact with gems: - Ignore them, or not even realize they exist. This is intended to be the primary/default interaction. - Dive to grab gems, but not bother trying to keep Zot from smashing them. This is a 'lightweight' speedrunning playstyle, a bit like the Speed Demon I tournament banner. - Keep one or more gems intact by only exploring part of a branch, perhaps opting to 'go for it' when your character is feeling especially strong. - Try to grab all gems and retrieve them all intact. This is roughly equivalent to the old Meteoran playstyle. Gems have absolutely no mechanical use within the game. They offer a very minor score bonus (10k points each), as a bonus for new players who look at scores for unwon games, but shouldn't affect normal play or speedrunning in any way. Getting the Orb of Zot shuts the timer off. One could skip branches, get the orb, and then clear branches while holding the Orb to get gems with no time limit... but orbrunning is its own form of time pressure, and I'm skeptical this would be easier than playing 'normally'. :) Time limits are currently set on a per-branch basis. Lair, Vaults, and Depths have longer time limits than they did for Meteoran, to allow for large levels and travel time, while Slime and Zot are shorter. However, I would be startled if these time limits stuck - I personally suspect most of them are too tight for species which *aren't* as strong as Meteoran. We can experiment. The good gem tiles are by Sastreii, the bad ones are by me. :) Credit also to ellpitic for helping to set me down this path. -------------------------------------------------------------------------------- 0d9d05ade9 | Nikolai Lavsky | 2023-12-15 15:33:12 +0300 feat: make wizmode &H command heal a few more statuses -------------------------------------------------------------------------------- abc64e778c | regret-index | 2023-12-14 21:06:46 -0330 Volcano quick review More spiky outlier nerfing and weaker vault buffing. We also don't need to name exactly one layout's transparent stone as special glass. Alongside that: * Hell hogs and fire crabs in the beastial monster set are keeping about even killpace, even though the crab gets less company in most arrangements compared to the hog. They're now swapped in tiering. * Salamanders are the strongest Volcano killers by a lot due to mystic hasting, so they now get nerfed equipment in the same fashion hell knights are nerfed. (This mostly means no shortbows.) This won't be too much of an overall volcano nerf since so many of the weaker layouts were buffed, anyway. * There's now about a ~1.6% chance each for granite and dragon-blood talismans in the normal fire-res / aux armour / dragon scales slot per volcano, as thematic fits, for further light talisman distribution, and to further distinguish the rewards from ice caves. Never really going to be settled here until toenail golems actually get a gimmick, of course. -------------------------------------------------------------------------------- aa9e43cceb | DracoOmega | 2023-12-14 17:52:57 -0330 Fix a duplicated -Scroll light -------------------------------------------------------------------------------- 105cd16510 | DracoOmega | 2023-12-14 17:43:40 -0330 Don't refuse to break charm when attacking charmed things Apparently they still had ATT_HOSTILE under the hood and it was just supressed. Now just 'check_attitude' instead, which accounts for this (and other sources of false friendliness). Behavior code is a tangle sometimes... -------------------------------------------------------------------------------- c6352e7e69 | Kyle Rawlins | 2023-12-14 13:53:51 -0500 fix: don't crash on call canine familiar Repro instructions (Implojin): drink !invis, cast call canine familiar. Prior to this commit, the game would crash if an inugami `ghost` was accessed by side effects of `create_monster`, which was possible (e.g. if there was an invisible actor nearby, a behaviour_event was triggered immediately before the return to the casting code). Generally, ghost_demon code assumes that the ghost gets fully set up in `create_monster`. This commit initializes a ghost object there at least so that it won't crash (along with a bit of tweaking of the starting hp values), and then finishes initialization in the spell, where there is access to spellpower. I'm a bit concerned about spreading this out being somewhat brittle (I don't think any existing ghost demons do this so there may be violated assumptions), but it seems to work in some quick testing. -------------------------------------------------------------------------------- 4b27ddf301 | DracoOmega | 2023-12-14 13:30:42 -0330 Make recasting canine familiar also cleanse it of poison There were some complaints about needing to babysit your dog after battle, if it was poisoned, to prevent it from passively dying while you rested - exacerbated by how monster poison is non-deterministic and can sometimes last much longer than anticipated. Now, at least, you should only need to heal it once in most cases. I could see the argument that it should just have rPois instead, but even if wargs have it, I'm a *tiny* bit reluctant to give that out at old hound power - and it doesn't even fix the underlying issue completely, since there's still a *chance* that they get poisoned anyway. (I also considered just making it outright impossible for an inugami to die to poison ticks, but that might feel weird...) -------------------------------------------------------------------------------- 91106424db | DracoOmega | 2023-12-14 13:21:07 -0330 Don't claim 'Nothing appears to happen' when Chaos weakens a monster -------------------------------------------------------------------------------- 7b04074989 | DracoOmega | 2023-12-14 13:03:29 -0330 Fix broken inugami see invis They already had the M_SEE_INVIS flag and it was never intended that they lose it compared to existing dogs, but apparently if monsters have a ghost_demon struct, the game looks there and only there for whether they should be able to see invisible. ghost_demons are weird. -------------------------------------------------------------------------------- 25cd97262b | Implojin | 2023-12-14 05:29:20 -0600 Fix some x hover invis messaging (Lici) Lici reported an e(x)amine hover messaging bug: If a monster couldn't see the player, and the monster began petrifying, it would lose its "can't see you" x hover text. This was being caused by the MB_CANT_SEE_YOU flag (from 85c4641d08) being set based on find_stab_type. That function returns the highest priority stab it finds: several of them have higher priority than STAB_INVISIBLE, and if any of them applied, it would cause MB_CANT_SEE_YOU to remain unset, regardless of whether the monster could see the player. -------------------------------------------------------------------------------- f58a9bc654 | regret-index | 2023-12-14 04:38:18 -0330 Add alligators to zombie lists, display AF_DRAG in the monster list Alligators aren't the strongest zombies for extended, but they've still got a mechanically distinct thing to throw around since dragging always works if it does any damage. Might also help for restricting Crypt's derived undead list away from "literally _everything_ in the game", eventually, considering the weird stuff like orb guardian zombies that gets now. Since 5a15c83 highlighted reaching, constriction, and trample for the sake of determining which derived undead get a given attack flavour amongst other monsters sharing the same tile / glyph, it seems reasonable to add croc and alligator dragging to the list for the sake of ossuaries and the aforementioned earlier zombies. -------------------------------------------------------------------------------- a3aaffb735 | DracoOmega | 2023-12-14 04:36:29 -0330 Assign blame to protean progenitors for the monsters they create -------------------------------------------------------------------------------- 0136665373 | DracoOmega | 2023-12-14 03:28:33 -0330 Make inugami instant attack happen whether it has cleaving targets or not So that recasting the spell can still provide a little extra offense even in one-on-one situations. -------------------------------------------------------------------------------- 61f25df15f | DracoOmega | 2023-12-14 03:28:33 -0330 Fix a crash with Canine Familiar and attempt to future-proof The CANINE_FAMILIAR_MID prop was supposed to exist if and only if the familiar was alive, and be automatically removed whenever it ceased to be. Stairs, at least, seem to violate this, and while that individual problem could be fixed, it doesn't solve things for people currently trapped with a prop and no dog. Instead, have the function that determines whether your familiar is active actually look for the dog itself each time, and clean up the prop if it isn't there (which should fix currently broken games as well). -------------------------------------------------------------------------------- e37a338825 | David Lawrence Ramsey | 2023-12-13 23:41:39 -0600 Call trog_wizard arcanist a wizard again (#3379). -------------------------------------------------------------------------------- 50297eb6a4 | Implojin | 2023-12-13 22:06:14 -0600 feat: Menu colouring and search tags for evokers Elemental evokers are quasi-artefacts now, so it makes sense to give players a UI heads-up that they're special. This commit colours elemental evokers in menus as though they were unrands, adds a stash search alias for evokers on ctrl+f, and lets players easily redefine evoker menu colour in their rcfiles. This commit also exposes a clua check for whether an item is an xp evoker: `item.is_xp_evoker`. -------------------------------------------------------------------------------- 6819f34284 | regret-index | 2023-12-13 23:02:46 -0330 Fix a vault's Zot placement. -------------------------------------------------------------------------------- 548ab4fc23 | David Lawrence Ramsey | 2023-12-13 18:51:12 -0600 Fix warning if Beogh can't give an orc an orcbow. The message now says "orcbow" instead of "crossbow". -------------------------------------------------------------------------------- fd5aef93c1 | DracoOmega | 2023-12-13 21:13:37 -0330 Don't make all monster cleaving attacks cost no energy It was *removing* ENCH_INSTANT_CLEAVE after the attack, but not actually checking first to see if the monster even had it... I'm so, so sorry you poor people.... -------------------------------------------------------------------------------- a05e42328c | David Lawrence Ramsey | 2023-12-13 16:08:13 -0800 Fix references to magic resistance instead of willpower, part 3. The function hex_success_chance() names its first parameter wl, but the prototype for the function names it mr. Change the latter to wl. -------------------------------------------------------------------------------- bc79757a61 | David Lawrence Ramsey | 2023-12-13 16:08:13 -0800 Fix references to magic resistance instead of willpower, part 2. Rename the function _foe_mr_lower_goodness() to _foe_wl_lower_goodness(). -------------------------------------------------------------------------------- 29ed27f178 | David Lawrence Ramsey | 2023-12-13 16:08:13 -0800 Fix references to magic resistance instead of willpower, part 1. The monster enchantment enum is ENCH_LOWERED_WL, but the name given for it in enchant_names[] is "lowered_mr". Change it to "lowered_wl". -------------------------------------------------------------------------------- 3cdb644a07 | DracoOmega | 2023-12-13 19:50:47 -0330 Make some new monsters ineligable to generate as derived undead Either because they won't function meaningfully or outright cause a crash. -------------------------------------------------------------------------------- ce794a2c1e | regret-index | 2023-12-13 19:19:10 -0330 fix the build from a merge conflict -------------------------------------------------------------------------------- 5927ffeb39 | regret-index | 2023-12-13 19:13:55 -0330 Chaos: don't roll vampirism if the attacker's at full HP (elliptic) Another particularly obvious part of chaos seeming to do nothing with the recent repeated attempts to make it not roll useless effects. I'm not sure it's reasonable or plausible to make it always _show_ an effect, since elec and vamp both still have those brands' own respective 75% chance and 40% chance to not actually activate. (We could make some special case hacks, but that's quite a bit of ugly work.) Still should continue to buff the brand into actual higher tiers of interest. -------------------------------------------------------------------------------- ab4aac0091 | regret-index | 2023-12-13 19:13:55 -0330 New arcanist, occultist, and necromancer tiles by Sastreii Should help with not confusing the former two, who of course would be very insulted by the notion. -------------------------------------------------------------------------------- f7ac9a977b | regret-index | 2023-12-13 19:13:55 -0330 Buff Ghoul MP apt: -1 -> 0 (elliptic) If we're going in on ghouls having very specific apts to try to cast with as an alternative to unarmed on a species that can't shapeshift then I guess we're going all in. -------------------------------------------------------------------------------- ea7044e769 | regret-index | 2023-12-13 19:13:55 -0330 Cut dragging reapers from Demonic Guardian (monkooky) Reaching allies dragging enemies closer is mostly a downside for players, alas. Maybe in the future there will be something more interesting and stronger than lorocyprocas in the 2s tier for Demonic Guardian to use? -------------------------------------------------------------------------------- 2d1116f657 | regret-index | 2023-12-13 19:13:55 -0330 Adjust Dr stormcaller and shifter spells, Dr monk monster melee * While komodo dragons appearing in Summon Drakes helped it out a little before rime drakes and wind drakes were added to the list, their harmless nature in Zot is a bit conspicuous with the stormcallers' Qazlal flavour- they're neither cloud-focused nor elemental. As such, they're gone from the list, mostly going into the options that aren't swamp drakes. * Draconian shifters having both Blink Range and emergency Blink Away is very silly and distracting, considering they've already got three different distinct spells. The emergency Blink Away has been changed to an additional chance to cast more Blink Range, so they can still remain in ideal range for dispel breath / encircling. * While the point of Draconian Monk monsters in Zot is that they're not particularly flashy on any spell fronts or even weapons and instead just hit the player with pretty aggressive melee (and thus are notably the only nonbase draconian that can be berserked), they've lost a bit of their luster over time. Most of the other draconian classes have been reasonably focused down and cleaned up, with draconian knights being the most notable for getting to haste without dropping the ability to toss out lightning bolts and icicles. Giving the draconian monk monsters in Zot AF_FLANK helps round out that mechanic's otherwise rather early focused appearance, reasonably fits their martial-arts focus and theme, and is clearly not too much currently due to draconian shifters tossing off plenty of Blink Allies Encircling. They lose a tiny amount of health in exchange. -------------------------------------------------------------------------------- dfa497c050 | regret-index | 2023-12-13 19:13:51 -0330 New monster: protean progenitors, for Zot Zot hasn't gotten new monsters besides the addition of then-new ghost moths 13 years ago (8d1b968), or the swapping of fire and ice dragons for already present prior quicksilver dragons 7 years ago (0b18a7b). Most Zot work across Crawl's development has been more oriented on adding more and more stair vaults to Zot or fixing up the non-top-tier monsters otherwise present: tmons constrict / demonic berserk, curse toe summons, death cob attack brands, klown chaos, lich and draconian class spells. This is entirely reasonably behaviour that has relatively evened out Zot's threat level over time, but it has been a very restrained and compact set for a while. It wouldn't hurt to try out more. Especially stuff that can break up Zot's heavy reliance on relatively conventional, highly established, and spreading elsewhere draconians. Protean progenitors are transmutations giants for Zot. The origins of all the dungeon's countless shapeshifters, they first start off as relatively simple foes- unarmed Irradiate casters with fast regen but poor defenses and no resistances. When they die, however, they leave behind some last children in some last new form as they violently split into piles of 'aspiring flesh'- by default two at HD 12, with increasing chances of a third if it rarely rolls any lower HD. These non-attacking, non-moving piles will over the course of a few turns polymorph into hasted, mighted copies of whatever the giant originally tried to transform into, and never transform again. At HD 12 over the glowing shapeshifter HD 10 default, this gives double-buffed options of e.g. fire and ice dragons, unarmed ettins, tyrant leeches, alligators, jorogumo, and broodmothers. A chance to review much earlier branch spawns as a surprise in every giant provides a bit more variety of bands over Zot's many base and nonbase draconian packs, while also hewing closer to the weirder spectrum of Zot's many non-draconic non-elemental monsters. For now, they eat up a bit of the base draconian and non-base draconian bands weight, and spawn with a 33% chance to have a second one accompany them- a quick objstat roll says there should be about 4 of them throughout Zot and each of Zot's standard base draconians reduced from ~11 to ~10. The exact strength of these are inherently difficult to assess, so they'll probably need a fair bit of public testing to see how these work out- base form's base stats, spawn count, and band count are all easily changed. They've also only been added to a restrained number of vaults- ones that span the bulk of Zot's current monster set, or that invoke chaos and flesh. They might make for reasonable spawns on Mnoleg's level to lower their reliance on ugly things and eyes, but for now are otherwise only in chaos zig floors. If we get any other new big Zot monsters, it might be a good idea to look at slightly reducing the overall spawn count as is done for Lair. (Severely placeholder tiles are mostly made of currently unused decade-old rltiles for large abominations, small abominations, and glowing shapeshifters, with palettes from Sastreii's ice dragon and radroaches.) -------------------------------------------------------------------------------- f6b18e3e5b | DracoOmega | 2023-12-13 19:05:56 -0330 Awaken Forest tweaks Adjust the duration to be a little more consistent (higher minimum duration and a greater tendancy to be closer to the average). Also change the cast logic. Previously they would only cast Awaken Forest if at least one enemy was *already* adjacent to a tree. In practice, using it if the player is *near* a tree in Swamp is still likely to constraint future movement options in an interesting way, so now it checks if any enemy is 2 tiles away from a tree instead. I also raised the cast rate of it for druids somewhat - at least partially to make up for 'gambling' that a cast will hit the player in future and sometimes behind wrong. (Since they won't recast while it's active, this should waste minimal turns). -------------------------------------------------------------------------------- fa3c0d6efd | DracoOmega | 2023-12-13 19:05:55 -0330 Don't cancel Awaken Forest the moment you swing in a druid's direction More specifically, the game was calling mons_att_changed() whenever the player performed an offensive action at an enemy - even if that enemy was already hostile. This was often harmless (if unexpected), but it did result in two strange behaviors: -Attacking a druid (even if you missed!) would immediately end its Awaken Forest effect as though it had changed sides. -Attacking a tentacle (or tentacle head, like a tentacled starspawn) would cause all its tentacles to stop constricting anything they were constricting. This attempts to only call mons_att_changed() after attacks if that monster was not already hostile. (But behavior code is complex and I can imagine there being some other scenario this misses.) -------------------------------------------------------------------------------- 958caa0173 | DracoOmega | 2023-12-13 19:04:16 -0330 Revamp Call Canine Familiar The fact that CCF randomly rolled between different tiers of preexisting canine based on player spellpower had always created some awkwardnesses. The power jump between tiers could be dramatic, and when the summon duration was higher, could even encourage rerolling to get a better dog. This replaces the reliance on tiers of existing monsters by introducing a new (spell-exclusive) canine that can instead scale smoothly in damage, health, and AC based on player spellpower, without any breakpoints. No more rerolling: now you always get the dog that you deserve. But there's more! In an effort to have more 'interactive' summon spells that don't simply fall into the hole of 'also throw a dog at it' along with everything else you're summoning *and* emphasize the familiar bond more, the spell has the following additional behavior: -If your inugami dies, you are drained and cannot resummon it for a short while. -Recasting the spell while your inugami is still active, instead *heals* it and causes its next attack (within a few turns) to cleave and cost no energy. It should be individually a small bit stronger than the old dogs, and encourage more interacting with it, to make best use of the healing and cleaving, based on the situation. All numbers associated with this ought to be vaguely reasonable, but are still subject to change. -------------------------------------------------------------------------------- dc8495921b | DracoOmega | 2023-12-13 19:04:16 -0330 Don't lie so blatantly about pandemonium lord max hp While most pan lord stats were read from their ghost_demon struct, max hp was read purely from their mon-data entry which meant it was often blatantly incorrect. Non-spellcasting lords get a huge hp multiplier that meant xv's displayed average could be nearly 100 hp less than the true average - and we already show their spell set to the player, so this is entirely knowable, but very misleading to less familiar players. Since we already show entirely concrete numbers for almost everything else they do - including many things that *aren't* derivable from their other stats - just show their actual hp like we do for player ghosts. -------------------------------------------------------------------------------- 4ab8c38853 | Implojin | 2023-12-13 01:28:59 -0600 Fix some vital mutation messaging (cool 2) -------------------------------------------------------------------------------- 41278d8d1d | David Lawrence Ramsey | 2023-12-12 15:10:20 -0800 Remove spurious sticky flame reference in _ugly_thing_resists(). -------------------------------------------------------------------------------- 5e5e916f41 | Implojin | 2023-12-12 06:47:09 -0600 Simplify rampage healing (ragingrage, elliptic) Previously, Armataur's roll heal required its target monster to be at least "easy" threat to provide regen, as an attempt to limit the incentive to kite slow mons (like worms) around indefinitely for ongoing regen value. This threat check made roll heal less intuitive and harder to explain to players: Why didn't they gain regen from a particular rampage move? What precisely constitutes a trivial monster? (What was the rcfile setting to display threat, again?) We can simplify this by removing the threat check -- it's arguably not worth the complexity, given that kiting slow mons around can block off avenues of escape, and isn't entirely "free" to begin with. Perhaps someone will come up with a better way of limiting the slow mons kiting incentive here; I'd still like to disincentivize that but I don't think that making roll heal more complex for casual use by having a threat component is the right way to handle this. Feedback welcome! -------------------------------------------------------------------------------- e2c1a860ed | regret-index | 2023-12-12 02:25:13 -0330 Reduce excessive Gozag worship checks (PleasingFungus) When moving gold to the top of monster corpse stacks for Gozag worshippers, we can check if the player's worshipping Gozag at the start of that function, not for literally every tile on the floor while moving them up. -------------------------------------------------------------------------------- 77787f6025 | regret-index | 2023-12-12 02:21:45 -0330 Make AT_RANDOM more random, tweak cherub and pan lord verbs When 04f5058 added chaos weapons and first finished chaos spawn, they had a random attack verb ranging across the enums of AT_HIT to AT_BUTT (the predecessor of AT_GORE). A few years later on in 965a83c, refactoring accidentally made it go from going between the two to choosing just those two. Whoops. Since there's lots of weird attack flavours usually tied to actual effects (trample, constrict, reach sting, engulf), it probably should continue to handpick attack verbs, but the list could be wider. Pan lords are properly using a random range across an enum, but this lead to them falsely displaying trample and constrict messages when their effects got de-coupled from their flavours (e.g. e5ae1c3). I'm giving them the same random list as chaos spawn here, which is less elegant but also doesn't show incorrect messages for an entirely flavour selection. Also, if the four verbs for AT_CHERUB are supposed to correlate to the four heads biting / pecking / goring, then the human head just hitting is boring. It now headbutts instead. That's what a human head does, right. -------------------------------------------------------------------------------- a8fea8b373 | David Lawrence Ramsey | 2023-12-11 14:50:51 -0800 Add player ghost speech lines for Hepliaklqana, Uskayaw, and Wu Jian. -------------------------------------------------------------------------------- c87f13db18 | David Lawrence Ramsey | 2023-12-11 14:50:18 -0800 Remove a duplicate amulet type for artefacts. -------------------------------------------------------------------------------- bbe41ddc13 | David Lawrence Ramsey | 2023-12-11 14:50:18 -0800 Add a gemstone type and a ring type for artefacts. -------------------------------------------------------------------------------- 7cbfa2dbce | David Lawrence Ramsey | 2023-12-11 14:48:30 -0800 Add more fruit names to artefacts. -------------------------------------------------------------------------------- 6568d3517c | David Lawrence Ramsey | 2023-12-11 14:48:13 -0800 Add Dithmenos to the list of evil gods that Zin's Recite talks about. -------------------------------------------------------------------------------- 528c708208 | David Lawrence Ramsey | 2023-12-11 14:47:51 -0800 Add more Donald lines for Kikubaaqudgha. -------------------------------------------------------------------------------- 937bba79b8 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update passives.txt -------------------------------------------------------------------------------- ba30d56aa1 | Zhang Kai | 2023-12-11 14:47:24 -0800 Create shout.txt -------------------------------------------------------------------------------- 31f30a3bcb | Zhang Kai | 2023-12-11 14:47:24 -0800 Create miscname.txt -------------------------------------------------------------------------------- 809d50fed1 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update monspell.txt -------------------------------------------------------------------------------- 2f54df98a7 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update species.txt -------------------------------------------------------------------------------- 7ba04b7275 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update spells.txt -------------------------------------------------------------------------------- 5f35260eb8 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update items.txt -------------------------------------------------------------------------------- 2bb9357481 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update monsters.txt -------------------------------------------------------------------------------- 2dc6425d64 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update status.txt -------------------------------------------------------------------------------- eb346b3e67 | Zhang Kai | 2023-12-11 14:47:24 -0800 Update mutations.txt -------------------------------------------------------------------------------- f47eeb1b7f | CipHuK | 2023-12-11 14:47:06 -0800 Felid: update manual about Felids Felids aren't fast any more See 406407be8511ac9846d21bd4a51990ab4ce1dbb7 -------------------------------------------------------------------------------- 273cecb5ae | Nicholas Feinberg | 2023-12-11 14:44:42 -0800 .. -------------------------------------------------------------------------------- 13d87b7c24 | Nicholas Feinberg | 2023-12-11 14:44:27 -0800 More changelog fixes and tweaks (Monkooky) -------------------------------------------------------------------------------- d88bbb8b4d | Nicholas Feinberg | 2023-12-11 11:04:46 -0800 Tweak the ORB's grab message (regret-index) Flying skulls make "a hideous shriek", which isn't nearly as loud as the ORB. -------------------------------------------------------------------------------- 60294ff2a0 | Nicholas Feinberg | 2023-12-11 11:02:31 -0800 More changelog updates and fixes -------------------------------------------------------------------------------- 57eb4e83fd | regret-index | 2023-12-11 14:52:32 -0330 checkwhite ...possibly the most lines checkwhite has ever checkwhite'd. -------------------------------------------------------------------------------- 9b43b03d93 | regret-index | 2023-12-11 14:45:56 -0330 Two quote additions, some quotes.txt clean-up The new quotes are for abyssal stairs and the Petrify spell. The formatting for either source might be a bit off, since we're inconsistent about bothering with sections, years, or numbers for webcomics- if anybody feels strongly about this, they should also go update the Order of the Stick quotes alongside these two. * Potions of blood, sling bullets, and bolts all don't even have item descriptions, so they don't need quotes. Arrow quote now is used for Poison Arrow. (If we get new tiles and underlying code bothering to make hand cannons fire bullets, probably they could use the sling bullet code, but currently they fire bolts.) * Wizard quote has been given to arcanists and occultists. * Storm Form and Necromutation quotes have been put under the matching new talismans. -------------------------------------------------------------------------------- f006fbbd5c | regret-index | 2023-12-11 14:19:27 -0330 Sort quotes.txt by category On the outset of Crawl, quotes were sorted into a handful of different categories. All the way back in 2013, 45418d0 and f5e63f4 ended up tossing out the headers and sections into three alphabetical lists- entire monster glyphs, then everything besides non-unique monsters and items, then generic monsters and items. Since the second versus the third isn't a very obvious or clean split, the former list ended up gaining both non-unique monsters and items, while the latter list gained random spells and abilities. As a chance to review the current state of various quotes, and since I didn't want to add to the mess if I added any new ones, I've gone out and made a bunch of new lists. They now procede in the following order: * Dungeon features * Dungeon branches * Spells and abilities * Items * Unique monsters * Vault monsters * Generic entire monster glyphs * All other monsters Hopefully these don't get messed up over time either. (I didn't sort out the non-English quotes.txt files, mostly because their headers should also probably be in those languages.) -------------------------------------------------------------------------------- c5c9b8f871 | regret-index | 2023-12-10 20:01:40 -0330 Let monsters get Dispel Undead (non-Range) When Dispel Undead Range was created to split the melee and range versions between players and monsters, the former wasn't put into mons_spell_beam. This prevented monsters from getting it, which wouldn't normally be a problem since monsters are mostly given Dispel Undead Range by default. Player ghosts and player illusions, however, are supposed to get the player's version of it, and since that works, we might as well give them the shorter range version of it. The hit dice of this can get fairly obscene for ghosts, but since it's not a starter spell for necromancers and player ghosts were shoved into runed door vaults, it shouldn't be too concerning for Mu / Vp / Gh players to suddenly explode without at least some reasonable counter-measure assessment. Should be a good sight in negative energy zigs and continue to help fix up Illusion Card a little more, at least. -------------------------------------------------------------------------------- 4904f62167 | regret-index | 2023-12-10 19:55:39 -0330 Juggle around the t and l glyphs in console, sort some monster files The 't' glyph in console contains crocodilians, tetsudines, and crabs. There's not really any obvious grouping together of these- from a taxonomic standpoint they're very far apart, from a casual association standpoint either the crocodilians have no shells or the crabs look nothing like the other reptiles, and from a Crawl standpoint they group together three amphibious watery monster types very loosely considering only the crabs breathe clouds and only the turtles are slow on land. This could do with an update. * Alligators and crocodiles go on 'l' over 't' so the glyph can reluctantly fit together shelled animals. There's some taxonomic argument one could make about crabs joining other insects on 'B'ugs, but this at least has one casual grouping parseable and also doesn't leave the glyph stranded with all of two turtles. * Wyverns go into 'k' over 'l' for dra'k'es. As lindwurms were shoved into there alongside the drakes, it should sell an overall conceit of "fantastic lesser dragon" than a glyph that otherwise contains completely mundane repti'l'es and a strange lost shark. * Skysharks go into 'F' instead of 'l' so F can support flying fish alongside the current 'F'rogs. Even if this isn't much established yet (I do have plans...), there's no dedicated fish glyph since eels were moved to 'S'erpentine, and they're currently in 'l' just because wyverns were another flying 'l' than any other obvious fit. Seperately of all of this, mon-data.h gets extremely messy past the two alphabetical lists, so I've shoved some entries in there and mon-spell.h back and forth. Those shouldn't have any in-game effects, though. (dc-mon.txt is also quite messy, but at least that doesn't affect me looking at spare glyphs for new monsters.) (I'd be tempted to add a _monster_glyphs.txt for these revisions, but 7cdbcdd got rid of them all, so, go learn rc setting stuff if you protest.) -------------------------------------------------------------------------------- b7303255ee | regret-index | 2023-12-10 18:08:04 -0330 Buffs for several recently changed / revived monsters * Frederick hasn't gotten a kill in the near-week since his new spellset was added, despite that being intended as a buff as well as a code streamlining. He now gets back back his lost HD and gains even more melee damage plus servitor cast rate, since his heavy gear + conjurations + servitor gimmick clearly can be pushed much further from his poor statistics for many versions prior. * Erica's kill-to-being-killed ratio has dipped slightly (5.4% -> 4.4%) since her human to octopus surgery. While she had more kills from Venom Bolt than Force Lance previously, the lower overall hex rate and the varied species with rPois both probably mean she lost a bit of danger. She now gets a bit more EV and more melee damage to focus a bit on how earlygame octopode melee can be quite strong. * Crocodiles aren't seeming too impressive since their return. Since the Sewer water moccasins they were replacing had more health, crocs could also do with a bit more HP and EV so they last longer to show off their new gimmick more. * Another Brain Bite tweak now makes it drains a minimum of 1 MP, to cover for the super-early very low MP values Sewer-delvers being rounded down to 0 when brain worms are looking for a percentage to burn. -------------------------------------------------------------------------------- 9e8fd56bc8 | regret-index | 2023-12-10 17:43:27 -0330 Add a symbol uniting the unequip-based artefact properties There's been occasional reports that "drain" and "Drain" are confusingly close to one another, it'd be nice to point people towards Contam being on on unequip rather than on random damage, and there's now a Fragile status alongside a Fragile artefact property. Adding a random symbol here shared between the three of them should help a little bit with all three of these concerns. -------------------------------------------------------------------------------- bbf96558bc | regret-index | 2023-12-10 17:23:08 -0330 Shove in two more player -> monster spell equivalents for illusions/ghosts Necrotise translates to Pain, Confusing Touch to Confuse. Both are imperfect, but we've got a few examples of that already with Dragon's Call -> Summon Dragon and Swiftness -> Sprint, and they're reasonably close. Also, the current player to monster gap for starter background spells for Illusion Card and player ghosts is incredibly high, so a little less pressure would help a bit- this should get a little more attention in some eventuality, so both don't drift off nearly as much. -------------------------------------------------------------------------------- 2d6e4551af | regret-index | 2023-12-10 10:32:06 -0330 Make dream sheep headbutt, not bite (#2740) The Github issue in question seems to want to add a new AT_HEADBUTT, but we seem to have made AT_HEADBUTT for... ugly things having random verbs... for over a decade without using it directly anywhere else. It does seem to be very easy to find videos of sheep headbutting people and one another and other animals, while biting seems to only happen when they're overly feisty while being handfed. So. Closes #2740. -------------------------------------------------------------------------------- 9944ec47dd | Nicholas Feinberg | 2023-12-09 21:45:15 -0800 Don't dump runes' or books' origin Runes and books haven't lived in players inventory for a little while now, so no need to print their origin in morgues. -------------------------------------------------------------------------------- d94f34c16b | Nicholas Feinberg | 2023-12-09 21:01:49 -0800 Bring Aizul's quote into a new era This citation format might be wrong, sorry. -------------------------------------------------------------------------------- 60c0b14602 | gammafunk | 2023-12-09 21:25:39 -0600 feat: clua api support for inventory scrolls This commit adds the clua hooks c_choose_identify, c_choose_enchant_weapon, c_choose_brand_weapon, and c_choose_enchant_armour, which allows users to choose targets for the corresponding scrolls without a menu. These hooks all return an inventory letter to indicate the target. If the target item isn't valid for the scroll, the usual menu happens. Add documentation for these and also document the c_choose_okawaru_weapon and c_choose_okawaru_armour hooks. -------------------------------------------------------------------------------- d935f9fcdc | regret-index | 2023-12-09 14:09:40 -0330 More brief chaos fixes Mostly related to extremely short weakness. Yes, the five resistances check is important, or else the policy of not rolling useless effects on chaos (??) would be betrayed when hitting eldritch tentacles with chaos (why are those acid immune anyway). -------------------------------------------------------------------------------- f5c68a802a | Implojin | 2023-12-09 04:03:38 -0600 fix: Draw Dimensional Bullseye status icon in webtiles This wasn't being drawn in webtiles builds. If Sigil of Binding gets its own icon instead of TILEI_CONSTRICTED at some point, it will also need this change to draw that icon in webtiles. -------------------------------------------------------------------------------- f582fa60c8 | Implojin | 2023-12-09 03:38:46 -0600 Add a tiles icon for vitrified (Darby) Thanks to Darby for the icon! -------------------------------------------------------------------------------- ae6a2ecfb5 | regret-index | 2023-12-09 04:03:00 -0330 Rare effect quickfixes Actually use the proper function for making monsters frenzy, also make the vitrification text on monsters not be possessive for no reason. Maybe we should get an icon for the latter now that it's any playable accessible? -------------------------------------------------------------------------------- 196b491b36 | regret-index | 2023-12-09 02:50:20 -0330 Step one of far too many for revising Chaos brand Chaos brand is an absolute nightmare under the code, and also extremely awkward as an actual design in practice. Players give the monsters with it an extremely wide berth because of the banishment chance (which is actually just 0.15%) and the very long buffs / debuffs list also attached, except secretly the paralysis / slowing / petrifying effects were actually invisibly casting a hex with power equal to the damage dealt. This was actually pretty weak against the player's increasing AC and Willpower over the course of the game, outside of mister super early Yiuf. (Meanwhile, mushroom fist style AF_CONFUSE got a flat chance without a check, and also chaos clouds made absolutely zero will / damage check to apply any of the effects). In player hands, the weapon has a handful of miserable hits for most of the game without ranged or summons- hasting or berserking a monster is quite the betraying roll- and is also somewhat boring in the effects it can actually get, regularly being rather common effects in the rest of the game. While there's been dev interest in revising this all for next version, trying out more dramatic effects after they were culled out due to the miscast streamlining, I'm doing some quick revisions now that make it consistently somewhat dangerously yet while also reducing the most dangerous individual effects from player or monster hands. This should make it far less awkward to be desperately avoiding monster melee for a sub-4% chance of an actually notable effect. * Chaos debuffs via the weapon brand and attack flavour both consistently ignore defender willpower now, with another flag added to beams. With how several different effects (confusion most notably) and clouds both didn't care about this, it's best to err towards the more dramatic for something we've been very cautious about spreading. * As compensation for the above and to have less hyper-rare rapid-death results, distortion has been taken off the regular weapon brands check (clearing off banishment) and paralysis is capped at exactly 1 turn (like Stunning Burst). On the player end of things, turning monsters into shapeshifters has been cut (poly does the same thing scaling better throughout the game), while monster berserk has now been replaced with Frenzied (keeping haste + 50% damage, losing HP buff, becoming neutral) like datura and Discord, which makes it more interesting as an upside and downside simultaneously. * Added as new effects to entice wielders and terrify victims are weak, corrosion, halved will, vitrifying, sleep, and ensnaring webs. Blink has also been isolated and preserved off of distortion. Agility's out barring a dramatic revision to it as a boring flat +5 EV. * Through some adjustments to the varied lists and another beam, both seething chaos clouds and Chain of Chaos has been updated to match the current non-brand effects list again. Since we're not using most chaos monsters outside of the Abyss, there's not too much concern to mildly nerf a few of them- they'll be far more consistent in applying effects, anyway. Chaos spawn counts in a few earlier vaults have been lowered or tiered higher, too. It's probably worth keeping an eye on Chaos Knight starting weapons, but most people actually trying to win currently unwield those very fast, and this could do with a fair bit of testing first. Probably should keep an eye on Malign Gateway too. TODO: make a chaos.cc that can handle these behaviours so that Chain of Chaos doesn't desynch regularly, and so that clouds aren't faking a melee hit of the person inside hitting themselves for zero damage to enchant themselves with the chaos effects list. Also there's probably still more effects to screw around with, too, like Devastator-style explosions, random summons, brilliance, or cancellation. This is a relatively less disruptive update for now, mostly aimed at making these all behave far more parseably and more usably. -------------------------------------------------------------------------------- eb876a39b7 | elliptic | 2023-12-08 20:23:19 -0500 Fix Oka never gifting plain javelins (acrobat, Ge0ff) Unintentionally changed in 073b73dc. -------------------------------------------------------------------------------- cee99d1eea | Nicholas Feinberg | 2023-12-08 09:40:30 -0800 Give fleshy orifices teeth (Sastreii) Yum, yum, yum! Avoiding the obvious ref to the term rhyming with 'Hakuna Matata'. -------------------------------------------------------------------------------- 36d1ea7889 | Nicholas Feinberg | 2023-12-08 09:32:45 -0800 Bullseye status icon (Sastreii) -------------------------------------------------------------------------------- 593ecc88b7 | Implojin | 2023-12-07 21:53:13 -0600 Gently nerf Armataur HP gain Player response to rampage healing has been great! Lots of feedback like "I was in a bad situation, and then rolled to get some regen and I felt really smug about it." Good stuff. At has been slightly overtuned for a while now, though, and rampage healing seems to have made this issue worse. I'd like to tone down Armataur slightly before the upcoming 0.31 feature freeze / tournament. Hopefully these changes will result in At being a bit more balanced. We'll see how this goes! -------------------------------------------------------------------------------- f211197f41 | Nicholas Feinberg | 2023-12-07 16:40:45 -0800 Describe AF_ACID damage (dilly) -------------------------------------------------------------------------------- 800acc2fd1 | gammafunk | 2023-12-07 16:24:42 -0600 fix: checks for chaos flaming and freezing (hellmonk) A similar issue to that fixed in 831ba139. Use the correct checks for allowing these brands from chaos. The current checks looked for "fiery" and "icy" monsters respectively, which does cover a bunch of monsters immune to fire damage, but not all of them. Instead we check that the target is either the player (who can never be fully immune to flaming/freezing) or, for monsters, if it has less than 3 levels of the relevant resistance, otherwise it would be immune. -------------------------------------------------------------------------------- 831ba139f3 | gammafunk | 2023-12-07 15:28:59 -0600 fix: A check for chaos electrocution (TheMeInTeam) When the chaos brand chooses an effect, it's supposed to omit any brand results that would have no effect on the target. The electrocution chaos result was missing the necessary electricity resistance check and was getting selected only to have no effect, so add this check. -------------------------------------------------------------------------------- 24c7c7037b | Nicholas Feinberg | 2023-12-07 11:52:50 -0800 Add Serpent form tile (Sastreii) -------------------------------------------------------------------------------- 12f98b27bc | regret-index | 2023-12-07 03:51:19 -0330 checkwhite -------------------------------------------------------------------------------- 5e5e084c30 | regret-index | 2023-12-07 03:23:01 -0330 Bring back crocodiles with AF_DRAG as mostly Sewer & Ossuary exclusives Much like the return of brain worms, this is meant to help with Sewers having very little besides monsters slightly earlier or later than the D floors surrounding the game with, while showcasing a mechanic for new players to see much later on. With slightly reduced stats to compensate for their new AF_DRAG mechanic, they replace the water moccasins that alternate with Pargi that will be seen not too much later in D itself and fit into a few other gimmickless, chaotic sewers. Unlike the return of brain worms, they admittedly aren't super thematic monsters to fit much elsewhere without being somewhat redundant in some role or another (sewer-depth crocs aren't much interesting for Lair), so the secondary use of them is for another early D portal instead. Ossuaries technically are using zombies and mummies alongside a variety of weaker enemy types, but are also severely inconsistent in threat level by only having a single ossuary each use conceits such as live scorpions, undead centaurs / bees, spectrals, or flying skulls. Undead crocodiles fit the Egyptian theming attached to mummies and are also used in a handful of the noticeably weakest Ossuaries. (A very small number of other vaults have gotten them back or may access them, but only in sprints or early D. I poked at a few of the weaker ossuaries while I was here adding the monsters to them, but I ought to take a longer look at the high ends and low ends of both portals sooner or later.) -------------------------------------------------------------------------------- adca813884 | Nicholas Feinberg | 2023-12-06 17:45:32 -0800 Revert "Print monster names for unseen shouts" Pushed accidentally. This reverts commit d8d442875f0fa2de3af95ba7ff780a7c650386eb. -------------------------------------------------------------------------------- 224063c1d0 | Nicholas Feinberg | 2023-12-06 17:44:53 -0800 Add S_SQUEAK (bloodnok) The set of monsters affected here is too funny to not borrow. -------------------------------------------------------------------------------- d8d442875f | Nicholas Feinberg | 2023-12-06 17:17:16 -0800 Print monster names for unseen shouts So players don't have to look up what on earth makes "a rustling", or what the difference between a skittering and a faint skittering is. Might give too much info for shout luring. Maybe should disable for some common shout types, eg shout, roar... -------------------------------------------------------------------------------- 41b13fce57 | Nicholas Feinberg | 2023-12-06 17:16:34 -0800 Lint -------------------------------------------------------------------------------- 4be0acca3a | regret-index | 2023-12-06 21:27:17 -0330 Tell the monster bots about AF_DRAG. Whoops. -------------------------------------------------------------------------------- 42354c1e67 | regret-index | 2023-12-06 21:21:01 -0330 Grant AF_DRAG to alligators and reapers, with stat nerfs Alligators have been pretty vanilla beyond having variable speed via sprinting, which was removed from them in ccde610 for being a weirdly inconsistent speed (and part of messily precise seperate action speeds) rather than any interesting innately. They've got a reasonable position as regular melee monsters since Swamp's twin monster revisions, but it wouldn't hurt to give them a mechanic of their own, and there's already plenty of interest in Swamp in screwing with movement (roots, briars, woodweal, sludge, harpoon) that AF_DRAG should fit the branch as well as their flavour perfectly fine. It might be a little close to the last in the list, but Force Lance and Primal Wave coexist with tramplers and Airstrike + Waterstrike exist in the other liquid branch- monster melee and conjurations have such different dynamics it's fine for them to have a little bit of overlap. Reapers are in a weird position currently. They've got a straightforward theme useful in a variety of different vaults by being big-damge reaching branded weapon wielders, but despite their high damage they're not particularly noticeable as threatening monsters within their supposed normal spawning position of Summon Greater Demon or Pan. They're in fact most noticeable for Ice Caves, which is a weird position for a tier-2 demon threat. Not all of them can be hellions or tormentors or balrugs, and it might be reasonable to shove them off into R glyph with efreeti and rakshasa instead, but they could do with a little more of a trick. Reapers pulling the player in so they can't escape death is pretty cool, also. Alligators get a minor hp nudge downwards to compensate for the buff. Reapers get less HP, less damage, give more XP, _and_ ice cave reapers get -4 enchantment on their scythes. They'll still be completely terrifying, since characters with low EV can't walk away from them at all, but at least they're definitely distinct and scary things even from SGD or in Pan. There should be room for some other following uses of this mechanic... -------------------------------------------------------------------------------- 24261f851f | regret-index | 2023-12-06 21:21:01 -0330 New attack flavour - AF_DRAG This acts as a reversed trample- when the attacker deals damage, they move backwards and the target moves forward into the space the attacker was just attacking from, as long as the monster moves back into an empty tile it can inhabit and drags you to somewhere you can inhabit. Unlike trample, it doesn't make any size checks, since most of what's intended to have this isn't as big as elephants or dragons- just imagine them hooking and dragging your feet / tail / smoke trail / whatever with them as they back up. Also unlike trample, it will work with reaching weapons; the attacker won't back up if you're a tile away, only if you're both adjascent. Like trample, this still respects the mountain boots unrand, and is inherited by the zombies of anything that attacks with it. This is a somewhat scarier brand than trample in that usually the player would rather be moved away from where they previously were rather than pulled towards unknown territory, so it'll be substantially less prevalent then trample's all elephants + all dragons + like three other eldritch / demons. (It doesn't work at all in corridors with enemies behind them, after all.) It otherwise shouldn't be particularly more jarring or weird than how trample already slowly repositions players, anyway, and is another simple way to continue to screw with player-monster positioning with less direct other analogues than other effects currently heavily used. (Note that none of these messages and names are set in stone.) -------------------------------------------------------------------------------- 46bab52692 | Nicholas Feinberg | 2023-12-06 14:46:52 -0800 Tweak flux talisman (acrobat) To make shapeshifters feel less like heavy armour melee characters, block use of body armour with Flux talismans. Give Flux +4 EV to compensate. -------------------------------------------------------------------------------- 54a413c38e | Nicholas Feinberg | 2023-12-06 10:13:48 -0800 Rename anaconda -> serpent form Match the name of the talisman and avoid direct parity comparisons with the monster (which doesn't exactly match, since the monster doesn't have rPois and the form now does). Would also be a good excuse if we wanted to make the form not cold-blooded. -------------------------------------------------------------------------------- 8949418266 | Nicholas Feinberg | 2023-12-06 10:06:59 -0800 Give serpent talisman rPoison It's inconsistent with monster anacondae, but still feels vaguely intuitive to players (snakes are rPois, right?) and is a modest buff for a somewhat underappreciated form. -------------------------------------------------------------------------------- 99969ba1bc | Nicholas Feinberg | 2023-12-05 19:02:34 -0800 Don't blame spriggan druids for their friends We usually describe the ikiller as a band leader or summoner - a creature with pretty direct responsibilty for its pal who just killed you. Including spriggan druid convoking is a stretch. Should ironbound convokers get blame, or guardian serpents, or any number of buffing monsters..? Basically, it makes the stats very hard to parse, which wasn't the intent. -------------------------------------------------------------------------------- 0e810151a1 | regret-index | 2023-12-05 23:32:13 -0330 unbrace -------------------------------------------------------------------------------- af5d62a200 | regret-index | 2023-12-05 23:16:47 -0330 Tomb card: use non-default wall tiles When using the Tomb card, in sufficiently messy terrain or with lower power leading to incomplete wall raising, it can be easy to forget which walls will be the ones that'll eventually go down unless one bothers to check over each surrounding wall. This ui quandry is due to it using the given branch's default rock tiles, so over in Tiles it can be made clearer just by using a distinct rock tile- I've chosen WALL_SANDSTONE for this, since it's what's used in wizlab_dorokhole. (Note to self: wall_sandstone is inconsistently used for rock or stone in different vaults, should fix that to the former.) -------------------------------------------------------------------------------- 1471edab23 | regret-index | 2023-12-05 22:26:41 -0330 Cloud card: bring back select other cloud types 3194668 removed the variable cloud types from the Cloud card because the damage options made it inappropriate for the deck it was in. While this is a reasonable direction for it to follow, retaining the cloud-ring aspect for harmless if opaque clouds mostly just makes it a very awkward version of scroll of fog, for being centered on enemies instead of the player. This re-adds different cloud types to the cloud card, but each tier uses different types of debuff clouds rather than the old set of clouds including poison, fire, ice, or acid clouds. * L0: mephitic fumes * L1: miasma * L2: calcifying dust. Also, in the same spirit of encaging enemies it previously had, it once more doesn't place directly on monster tiles (but now actually works for non-wall tiles like fountains and open doors like it should), and they also last less time than they used to. The later two clouds don't overlap with condenser vane, and while there's some spell overlap the cloud ring functionality making many monsters not move forward but getting debuffed when they do should be a reasonably distinct effect compared to the limitations of Cigotuvi's Dreadful Rot, the will-check of Petrify, and the cloud lines of Elements card catoblepas summons. (Possibly Nemelex should reward very slightly less cards if any more cards get revised at this point, but escape cards are already usually just stacked or triple-drawn from outside of pretty earlygame, and the sheer power of Tomb, Elixir, or higher-power Exile still look much better off than this.) -------------------------------------------------------------------------------- 6a32cc10e0 | Nicholas Feinberg | 2023-12-05 16:44:24 -0800 Fix E display for felid lives Broken in 51874910468ad3864b802425bf3022. -------------------------------------------------------------------------------- ec03705108 | Implojin | 2023-12-05 15:23:17 -0600 feat: Let randart orbs have spell enhancers (Lightli) This sounds like it could generate some fun orbs. Let's try it out! As part of enabling enhancer artps for orbs, this commit also increases enhancer generation weights for both randart staves and orbs: The previous weights were low enough that these ARTPs were vanishingly rare on orbs. Weights for enhancer artefact properties are now slightly lower than Harm: Still pretty rare, but significantly more common than they were. -------------------------------------------------------------------------------- 406407be85 | Nicholas Feinberg | 2023-12-05 13:14:54 -0800 Felids: increase HP, nix fast move (Lici) Felid low HP is interesting. It's a very good fit for felids both thematically and mechanically, in that it encourages engaging with the extra life system - getting randomly obliterated by an orc priest, centaur, etc, is compensated for by coming back to life afterward. Still, there can be too much of a good thing, and playing around the *extreme* fragility of felids can be tiring. Fast movement is thematically cool, and feels vaguely appropriate for cats (slippery little things!). However, the gameplay is not particularly good, especially with species like felids which are only *slightly* fast. Scooting five steps for every space cleared, shot taken, etc, is a high keypress to meaningful decision ratio. Let's try something a bit different. Bump up felid's HP apt (from -40% to -30%) and cut their fast move. Boost int and stat growths a bit to help caster felids (who used the fast move more), and tweak apts to avoid this being too big a boost to late-game shapeshifter felids (who had their speed mutations melded anyway). See also 51874910468ad3864b802425bf30220b4fa1e95e. -------------------------------------------------------------------------------- e66bdc89e9 | regret-index | 2023-12-05 16:33:56 -0330 Swarm card: more bee types The Foxfire to Swarm card swap is understandable in the number of different monsters that had been lost to the former card over time, making it harder and harder to parse the "big number of flying enemies" theme. Poor ravens, red wasps, bumblebees, insubstantial wisps, and vapours. However, 1d6 and 1d9 bees at higher power is also just really unimpressive and unexciting compared to the rest of Nemelex's summon cards, and there's three bee types already available for the card to rely on. Since another summons card was just nerfed, reaching out to those should be fine, and since they're all still groupable together as bees, it shouldn't be too much more complexity overhead. The 1d3 killer bees at the bottom end of the Swarm card isn't changed by this commit, but the second tier is now 1d4 bees plus a queen bee, and the third tier is now 1d5 bees plus a queen bee plus three meliai. They're all still quite frail summons, but it should be interesting to have queen bees as a support summon mixed in amongst the rest, and they'll still fall off against higher AC and AOE later on anyway. -------------------------------------------------------------------------------- 1a011fea95 | regret-index | 2023-12-05 16:13:06 -0330 Elements card: more summon swaps * Replace the fire vortex summon with a solitary fire bat. While they're technically weaker, the fire bats fit the beasts theme as opposed to a raw elements theme, and also they're not awkwardly perma-confused allies. * Replace the iron golem summon with a war gargoyle. Also weaker, but this is substantially less awkward than the number of times and ways one may want to swap around and speed up the obscenely strong, basically unkillable, and also slow melee-only ally. Also, more motile ranged emphasis in Nemelex's summoning cards helps distinguish the decks from the Summonings school as well as from other gods' summoning invocations. (It even introduces a nice curve of 2/4 -> 3/4 -> 4/4 ranged summons!) -------------------------------------------------------------------------------- 73d24e4865 | Nicholas Feinberg | 2023-12-05 10:04:26 -0800 Tweak docs for species intrinsics -------------------------------------------------------------------------------- b247575874 | regret-index | 2023-12-04 22:47:31 -0330 Frederick buffs and spell revisions Frederick's current killratio, even for a lategame unique, is currently very sad- over the past 16 months of recent versions it's a paltry 0.27%. Spellforged Servitor is a cool gimmick, but with various player magic overhauls it's meant a fair bit of special-casing for spells the player can no longer cast, and the other conjurations are all relatively common spells from a multitude of other lategame enemies currently available. An update can help deal with all of these matters at once. Frederick now loses Iron Bolt, Bolt of Cold, and Force Lance for the new spells of Plasma Beam and Bombard, while keeping Spellforged Servitor which can cast those both. We seem to be fine with these spells on player ghosts, anyway, and it can introduce interesting complicated ally targetting tactics as another distinct gimmick alongside the Servitor amplifying this. Since Plasma Beam does extremely high damage in monster hands, he gets a bit of an HD nerf. (It's more resistable than his prior spellset, at least.) Since Bombard is knocking him away from melee more (and since phials of floods / scrolls of silence neuter him a lot more than other uniques), he gets a bit more health and a bit of a damage buff. Hopefully he should catch up to all the surrounding power creep here for another 8 years. (In converted saves his servitor won't do anything, but also, a single unique having 1/4 spells not work is probably not worth the compat tag. TODO: adjust another unique to use ice magic to compensate for this contributing to uniques fire bias?...) -------------------------------------------------------------------------------- 2d9f522bd3 | regret-index | 2023-12-04 22:47:31 -0330 Make red very ugly things not lose AF_FIRE for AF_STICKY_FLAME AF_STICKY_FLAME made sense as an upgrade mostly when there was still item destruction; when we lost item destruction in 0.15, sticky flame's non-scaling damage made it pretty harmless beyond pretty early parts of the game. Sticky flame could do with a new mechanical purpose, but until it gets it, it is probably for the better that something so prominent in 3-rune winning games as 19 seperate spawns isn't noticeable weaker than its default form if it rolls the wrong element. -------------------------------------------------------------------------------- 48e20ad691 | Nicholas Feinberg | 2023-12-04 18:12:57 -0800 Tweak blastminer description again (Darby, r-i) Clarify why the cannon is a kobold exclusive. -------------------------------------------------------------------------------- 339af1cd1d | Nicholas Feinberg | 2023-12-04 17:58:48 -0800 Simplify Dimensional Bullseye Remove the MP cost, per a comment from DO. It probably wants more buffs than this, but a simplification is a nice start. -------------------------------------------------------------------------------- ff0e985136 | Nicholas Feinberg | 2023-12-04 17:56:36 -0800 Disable descent in stable It's not ready yet! Brain Bite (minor damage + mp drain, no int drain) Brain Feed is an extremely weird monster spell in most games. With so little stat drain around by default in a three-rune game, individual hits against a stat approach 0 extremely rarely unless a player has next to none, which is influenced heavily by character start combo and very little by normal character growth. The relatively minor hit of intelligence also does very little for its use on higher Int characters aside from slightly worsening spell success rates, which works weirdly against the flavour of various brain-eating monsters not actually caring about the quality of brain so much as just killing those with incidentally little of it. It's kind of difficult to tell what this spell should do. It'd be entirely possible to make it drain a lot more intelligence or percentage-based + flat intelligence to make actually effect more characters, but while strategic damage of a restorable sort would be more mechanical diversity, screwing with spell success chances and non-tangible damage rolls aren't mechanics we've kept to the present day (c.f. skilldrain, old sap magic). So, I'm sidestepping the original effect of the spell entirely, while focusing still on its theme. Brain Feed is now revised into Brain Bite, a mildly-experimental mix of half a Smite plus a percentile version of Draining Gaze- 4-8 irresistable direct damage doubled if you have no mp, then draining 20% of one's max mp (rounded down). (This now also works on monsters, dealing damage checking on antimagic and then applying antimagic.) The percentage part lets it scale across the game (compared to Draining Gaze rapidly heavily draining most player mp), and irresistable but restrained damage sources are currently pretty reserved designs (Smiting, Damnation, usually Torment) that could be iterated further upon. (It'd be good to think over what the point of statdrain even is outside of Hell, Tomb, and klown pies. Possibly a variant of flaying but only for stats would be interesting, possibly making an even shorter para but with brief stat-zero would be an interesting revision of current para. This is kind of out of this particular commit's scope, though- getting to stat zero via Brain Feed didn't really happen for a very large number of character combinations, so concerns over that are minimal.) Tile update uses the old mimic teeth tile by coolio, modified by jpeg, on top of the current Brain Feed icon by snw-0. -------------------------------------------------------------------------------- 9ad1905e61 | regret-index | 2023-11-30 19:45:19 -0330 Adjust K blastminer stats / placement a little more. Nerf their HD so Bombard hurts less and have them cast it a little less, lower their HP to demonologist levels, and have their bands coinflip for going solo rather than always appearing in a band. Also, lower their placement in some of the Orc ends that use them. In exchange for said nerfs, we can up their individual spawning weight a little more, and toss them into a few more appearances (post-Lair kobold vaults, late kobold special rooms, archer zig floors, and so on). I'm wary of upping their spawn rate too high for sheer testing purposes, as Orc still could do with more non-orcish additions, blastminers aren't intended to be the sole non-Orc notable threat, and I'd rather not actually flatly increase the threat level of ever-awkwardly-positioned Orc as is. Still, it's reasonable to mildly nudge them up for now. (As to whether people will internalize getting into the cannon's range makes a given blastminer as dangerous as an orc sorcerer rather than just being another weak kobold... well, we can let that take its course.) -------------------------------------------------------------------------------- 11243cb979 | regret-index | 2023-11-30 19:45:19 -0330 Make the V "preserve_walls" tag actually preserve rock Kind of looks like it wasn't actually following through from looking for the tag to actually doing anything with it since its concept in e7d2410, I think? -------------------------------------------------------------------------------- 7fa767f3fe | Implojin | 2023-11-30 15:30:37 -0600 Let stash searches for mapping match revelation This commit adds a {magic mapping} stash search tag to revelation scrolls, purely for UI convenience. Searches like "map", "mappi", etc., will now return any revelation scrolls that may exist in your game. -------------------------------------------------------------------------------- 6898e6545c | Nicholas Feinberg | 2023-11-29 13:59:18 -0800 Even out demonspawn starting attributes The extra point of int is an antique oddity leftover from aa62dae1b9dd. Demonspawn are generalists; no reason to shift them very slightly toward casting. -------------------------------------------------------------------------------- a03ddba797 | Nicholas Feinberg | 2023-11-29 10:11:18 -0800 Remove explore healing from Arena Folks have noted for a while that Meteoran gets a huge burst of explore healing from entering Okawaru's Arena. This is kind of cute, but it's not really exploring, and it's not in keeping with the intention of explore healing. Since Arena is quite strong enough as is, let's cut this. (Don't think this will violate player intuition.) -------------------------------------------------------------------------------- 246cf0196b | Nicholas Feinberg | 2023-11-28 20:52:24 -0800 Display drown damage -------------------------------------------------------------------------------- e6ea8fd53f | Nicholas Feinberg | 2023-11-28 20:50:24 -0800 Fix the monster build (gammafunk) -------------------------------------------------------------------------------- e172a6e21a | Implojin | 2023-11-28 17:30:50 -0600 fix: refactor some unusual items monster messaging 750b6846b9 introduced a bug that could cause monster bands to come into view with messages like "A gnoll is ." if one of the mons in the band was carrying an unusual item that was neither branded nor artefact, like a throwing net. Here I've refactored and unified the relevant code to be able to handle messaging for arbitrary unusual items, but `get_monster_equipment_desc` is still pretty fragile, and has had many similar messaging bugs over the years (e.g. 7046ed1b37, f44d0c5ad2, 1e14066ec4). Fingers crossed that this doesn't break anything else. -------------------------------------------------------------------------------- adecf4124d | Nicholas Feinberg | 2023-11-27 22:43:20 -0800 Refactor slimify This logic is ridiculous and should probably be rethought, but this is at least easier to read. -------------------------------------------------------------------------------- d61ee18ceb | Nicholas Feinberg | 2023-11-27 22:38:15 -0800 Refactor polymorph Continuing from 6ee961360c27e626047 (2020), make all poly code use a more consistent, simpler to understand set-based logic. This includes Xom, Nemelex, chaos, etc. Also removes RANDOM_TOUGHER_MONSTER, unused since the removal of polymoths in b5aec581b1ad18 (2013). -------------------------------------------------------------------------------- 283494c966 | Nicholas Feinberg | 2023-11-27 21:43:45 -0800 Add controversial Rakshasa tile (Sastreii) The depiction of rakshasas as tigers seems to be an antique D&Dism. To be mythologically accurate, we should move away from it; or, if we want to keep this sweet art, we should retheme rakshasas as eg 'felid illusionists' or 'devil-cats' or similar. Anyway, this is newer and more dynamic than the previous cat-like Rakshasa tile, so let's use it :) -------------------------------------------------------------------------------- c13cea2ef3 | regret-index | 2023-11-27 21:29:46 -0330 New dragon-octopode tile, more dragon tile updates (Sastreii) Yet more good work. -------------------------------------------------------------------------------- b20eab6ec2 | regret-index | 2023-11-27 21:03:30 -0330 Fix arcanists just saying "Occultist", give occultists their tongues back (Undo) Accidental fallthrough dealt with. Actually rarely directly mentioning the rivalry in their dialogue is cute, though, so I added a rare new line for either. -------------------------------------------------------------------------------- b0f5842387 | regret-index | 2023-11-27 20:16:50 -0330 Non-placeholder kobold blastminer tile (Sastreii) Obviously a lot better than prior frankenstein'd tiles, and much cooler looking, but there's some awkwardness in reading rare hand cannons on the right hand. Still looks good for arbalests and fine enough for bows. Maybe it could swap cannon hands by giving said cannon wheels instead of hoisting it on an arm? This is good enough for now, anyway. -------------------------------------------------------------------------------- 3a14828bb5 | regret-index | 2023-11-27 20:16:50 -0330 Throw kobold blastminers + more ogre mages into a few Orc vaults / ends New monster with reasonably different functionality for the branch, new placements. Mostly fit into more cave-like ends (that they dug open), and vaults that would fit some ranged monsters or more general variety. Also, since ogre mage bands are very rarely used anywhere anymore (dropped from both V and Depths, so mostly just a post-Orc D spawn), they can be pushed a little bit more than the exactly one Orc end to give Orc a little bit more scariness. (Also also, fitting in a little per-end balance nudging and head reformatting, while I'm here.) -------------------------------------------------------------------------------- 6ba0ef72ef | regret-index | 2023-11-27 20:16:49 -0330 New Mines enemy: kobold bombardiers Part of how Orc got its levels cut in half was the lack of variety inherent to an orc-centric branch, with a variety of orcs already sitting on most of the possible roles orcs could play, and with the obvious other cavedwellers mostly overlapping with the rest of the game. This is part of an experimental batch of new enemies meant to fleshen out the identity of the Orcish Mines on the latter part rather than the former, which should also grant it a fair bit more enemy variety to actually vary up its ends with beyond the standard four strongest orc types and rare per-end uses of ogre / centaur / giant guests, all already available elsewhere in D and V. Kobold bombardiers are uniquely both ranged monsters and conjurers, benefitting from the distance of the former and the burst damage of the latter. They use the player species' +3 ranged weapons apt with an orcbow, arbalest, or very rarely a hand cannon, and exaggerate this further by also operating a monster-only cannon with which they slowcast Bombard. The latter deals quite fairly more damage and lets them back away from those approaching, but is more limited in range compared to their weaker arbalests, which should provide an interesting tension without needing too much further complication. (Possibly monster Bombard might warrant an 100% self-knockback rate rather than a 50% self-knockback rate, to be any noticeable compared to Iron Shot, but I don't know if that'd be a bit too much of a buff to ghosts using it). They naturally spawn in duos, and probably could fit in a slim number of D vaults already focused on kobolds. A couple of less conventional Orc end vaults (like the one currently reliant on centaurs, the serial vault towns and mushroom circles, and the encompass vault) will get these in the future. For now, they replace the completely harmless gnolls in the branch alongside a little bit of the orc warrior bands and cyclops weight, skimming off of monsters one sees plenty of in D. They're more dangerous than any of those, but they're probably not more dangerous than higher-tier orcs, so it should be fine. (Extremely placeholder tiles frankensteined between roctavian's old big kobold tile, needle trap tiles, and one of the granite statue tiles. TODO: decide on the best name between kobold demolitionist (maybe too close to demonologist?), kobold blastminer (extremely on the nose but maybe the best reading?), and the bombardier name used here (less rather direct and not a portmanteau?)) -------------------------------------------------------------------------------- 5585b42bd2 | regret-index | 2023-11-27 20:16:49 -0330 Make monster Bombard knockback the caster 100% of the time Currently the only users of it are player ghosts, and player ghosts being optional weird threats with dramatic spells mostly assigned to them is their current entire point, so them getting Bombard as opposed to Iron Shot should be more noticeable. It also makes any future monsters (as is slated in a future commit) casting Bombard be more parseable and consistent at using that as a gimmick mechanic compared to the normal Iron Shot. (It's not symmetric with player Bombard still being a coinflip to move, but monsters have lots of ways their spells are stronger than players anyway, and nobody's complaining about monster summons working out of monster LoS currently.) -------------------------------------------------------------------------------- b392501acf | Nicholas Feinberg | 2023-11-27 12:13:55 -0800 Add a message for AF_CONFUSE (CarefulOdds) -------------------------------------------------------------------------------- 4fe0c3d864 | regret-index | 2023-11-27 04:18:01 -0330 Make living jellies immune to nets, note this + their rConstrict in x-v Making jellies immune to nets is consistent with their immunity to constriction, and matches with how insubstantials are immune to both. It's a nerf to throwing nets, but we just buffed nets mildly by being able to hit SIZE_GIANT monsters in 7dc041b anyway. Aside from making fused slime creatures a bit scarier to run from, this is most noticeable for removing one of the many TRJ strategies. There's possibly a little concerning increase in threat in Slime between that, some of the newer slime end layouts, and the new prevalence of glass eyes and their non-golden / creature company. Might be worth looking into with slightly reduced floor spawns or something, but it's probably fine for now. This also adds a note to x-v that jellies are amorphous and immune to ensnarement (both nets and constriction), as is noted for insubstantial monsters. It'd be nice if this amorphousness note also was useful for Shatter's effectiveness, but Shatter checks the general Jiyva creatures and I don't think eyes should get immunity to either of the ensnaring effects? Probably. (XXX: jelly simulacra being too solid to avoid nets / constriction is fine from a flavour perspective, but does that justify jelly zombies also being vulnerable to the same stuff?) -------------------------------------------------------------------------------- 7d1fb776a8 | Nicholas Feinberg | 2023-11-26 14:21:34 -0800 Maybe fix Dispater dropping his orb (cool2) -------------------------------------------------------------------------------- 3c0c803687 | Nicholas Feinberg | 2023-11-26 14:18:07 -0800 Maybe fix item AC changes in morgues Shouldn't waste time talking about the effect of equipping/de-equipping your armour in your morgue. It's too late! -------------------------------------------------------------------------------- 2febe9be03 | Nicholas Feinberg | 2023-11-26 14:02:11 -0800 Let Boris switch away from Morg Since he never actually used it, and, also, it was removed. -------------------------------------------------------------------------------- 23a41d6f7c | Nicholas Feinberg | 2023-11-26 14:00:18 -0800 Add more Grinder lines Try to add a little variety for player deaths to Grinder (frequent). Pay no attention to the inconsistency. -------------------------------------------------------------------------------- 9f3f65008f | Nicholas Feinberg | 2023-11-26 13:52:11 -0800 Remove wizardry hard cap Benefits from wizardry capped out at six rings of wizardry, or one wiz ring plus Veh's bonus. This was almost totally irrelevant, since benefits from more than one wiz ring were almost imperceptible anyway. Remove the cap. -------------------------------------------------------------------------------- f8cb93b20b | regret-index | 2023-11-26 18:05:40 -0330 Size up smoke demons (PleasingFungus) I don't know how many other weird sizes are going to be found out from the new size indicator list and honestly I don't know how long most sizes (or at least more than three) will even last, but since this was asked for directly, I'll make this random demon with a non-small tile not small on dev request. -------------------------------------------------------------------------------- 54a1e13892 | regret-index | 2023-11-26 17:58:42 -0330 Shrink ufetubi. Make them SIZE_SMALL, not SIZE_NORMAL. They're defined by swarming whether by themselves or from ynoxinuls, and most other tier-5 lesser demons are smaller than default (aside from lemures, who are at least former souls). This probably means very little, but size is more visible with the examination streamlining, so. -------------------------------------------------------------------------------- 4d48fc061a | regret-index | 2023-11-26 17:52:17 -0330 Some more of the indefinite vault review Some adjustments to Zot stair vaults, some buffs to serial_magic_research since it's been severely power crept plus some restraining its spawning floors in Depths, some teleport closet handling from serial_baiyou, giving more of a cue for the antique champions in wizlab_zonguldrok in console, more abyss rune tweaks, and some other stuff. A slim few things of note: * Digging directly adjascent to the abyssal rune has been made harder in a few vaults using such (though digging can still randomly help.) * Reduced the weaker enemy count in infiniplex_zot_generator, in exchange for more of the enemies that do matter at that depth. lemuel_fire_house and lemuel_acid_trip may create some precedent for large numbers of harmless enemies in Zot (and they're definitely using much weaker ones), but they're both in much smaller maps and dump them out alongside the nonbase draconians more reliably. * lemuel_draconian_sentries mostly just eats digging charges as a stairs vault, since there's little push towards trying to run past them instead of just pulling each out individually. Experimenting her with changing it into an ambush vault instead, so one can't avoid being heavily blasted by multiple draconians unless they dive down a hatch. * pan_frozen_over is very far under the other guaranteed demonic rune vaults in kill statistics, so clearly it'll be safe to replace the juggernaut simulacra with walking frostbound tomes, right? It overlaps even less with Cocytus, at any rate. -------------------------------------------------------------------------------- 0b22e4e0f1 | Nicholas Feinberg | 2023-11-25 20:57:26 -0800 Tweak butterfly stats Remove their will (ridiculous that they had any) and put their EV back up a bit. I dropped it to make scrolls of butterflies better against ranged enemies, but now that ?butterflies summons way more and does knockback, this should be less necessary - and intuitively, butterflies *should* have very high EV! -------------------------------------------------------------------------------- 6eca2949b2 | Nicholas Feinberg | 2023-11-25 20:56:51 -0800 Fix: don't make Dith hate boulders Don't trigger shadow shard after casting Brom's Barrel o' Boulders. It's sadly counterproductive. -------------------------------------------------------------------------------- 202bf7ea07 | Kyle Rawlins | 2023-11-25 16:04:13 -0500 fix: guard against a webtiles failure mode I'm not exactly sure how this is reachable, but it apparently is. Possibly now via a startup error of some kind, following aead2f62b19a4b? -------------------------------------------------------------------------------- aead2f62b1 | Kyle Rawlins | 2023-11-25 14:15:28 -0500 fix: better handle webtiles ttyrec write errors If a ttyrec write on game start triggered an OSError (e.g. on a full disk), the process object wouldn't get started, but also wouldn't get fully cleaned up due to a bug, resulting in spurious processes in the lobby. This fixes this bug, so now the process should get cleaned up (and the user gets an error message). This commit also tweaks the handling of OSError on ttyrec writes for a started game. Previously they just led to an unhandled exception from the callback, now they log a better error; unclear if something else should happen. -------------------------------------------------------------------------------- 7e9613595b | regret-index | 2023-11-25 03:16:41 -0330 Erica: from human to octopode Erica, while a functional threat, is also a pretty weird mix inherited from old mixed monsters quite a while ago. Few pre-Lair uniques have five different spells- could you actually name them all off the top of your head? She's also got some very boring kill-you dialogue, which could do with almost anything else to compliment it. Changering her from a human to an octopode can focus on IRL octopus camouflage and venomousness aspects, making her venom bolt + invis less generic, and gets in another player species representative with minimal complexity burden. It also replaces her robe with a random ring as a secondary reward for defeating her, and helps her weird melee / conjurations split some more with a little constriction (which also gets to be witnessed and experienced for new players before the Snake entry with something besides harmless ball pythons). This commit also cuts Confuse and Force Lance out of her spell set- the former due to the adjacent prominent of monsters with invisibility and confusion, and the latter due to its clash with constriction. (It'd be reasonable to have another early-game unique with Force Lance instead, but that's out of this change's scope). The cast rate from both is directly put into her Slow and Venom Bolt casts. Placeholder tile uses Bloax's old octopode crusher tile paired with roctavian's prior Erica tile palette and flaming sword. -------------------------------------------------------------------------------- 69a08244f0 | regret-index | 2023-11-25 03:16:37 -0330 Maurice: from human to vine stalker Maurice has lost most of his distinctly weird gimmick at this point. He uses his own wand now to discourage players from dropping wands instead, he can't drink your potions and read your scrolls any more, and he can't even sprint. He clearly could use something new to cover for this. Changing him from a human to a vine stalker lets him threaten with antimagic bites, a vector of threat not particularly prominent until Lair branches, and thus gives him something new to do. It also improves his melee a fair bit, so that he's not noticeably weaker than, say, the vampires one could encounter in near equal depths, and alongside the customary vine stalker regen helps him actually just outright kill his foes. This even also swaps out another plain human to instead represent one of the many weird player species Crawl so prominently presents, one that reflects his thieving background in being a magical body-snatching parasite. While this is a notable buff to his melee and durability, he's still not much stronger than, say, the functional Amaemon, so I'm also nudging his depth a little shallower- D:7-12 instead of D:8-13. Possibly he could also lose AF_STEAL entirely with this change, but I'll leave that for others to decide. Placeholder tile is frankensteined from Sastreii's unused jack-o-lantern tile mixed with roctavian's thorn hunter vines + palette and the current Maurice tile's palette (also by roctavian). -------------------------------------------------------------------------------- 5939ac1fb6 | Edgar A. Bering IV | 2023-11-22 09:03:26 -0800 fix: condition troll hide on species (Lici, Ge0ff) No more green hides from Earth Mages and Shamans -------------------------------------------------------------------------------- b2354cd04e | Monkooky | 2023-11-22 01:06:33 -0600 feat: Armataur rework: Rampage healing Players and devs alike have expressed that Armataurs felt like they needed something more, so here it is! This commit is a minor rework of At. The new feature here is rampage healing: At XL 7, Armataurs now gain a stacking regen buff when they roll towards enemies. This regen buff is loosely based off of Powered by Death, but instead of triggering on kills, it triggers when you roll. Rampage healing only triggers when rolling towards threatening mons, as an attempt to limit the long-term incentive to kite slow mons around. This is an imperfect solution and I don't like how this can be opaque to players; expect further simplifications in future. Awkward Tongue is gone. Poof. Buh bye. It was awkward. At's rugged brown scales 3 are replaced with tough skin 3: No more 7% MHP, but you keep the 3 AC. There are many different directions rampage healing could go from here, but let's try it out this way for a bit? Co-authored-by: Implojin -------------------------------------------------------------------------------- 35875b34c7 | regret-index | 2023-11-21 18:26:58 -0330 Give player Ghouls +4 Intelligence Ghouls as one of the three undead player species are otherwise extremely one-note compared to the more prominent gimmicks of contrasting vampires and mummies (whether or not those gimmicks work in practice), due to their mix of apts and stats. They've got a few decent casting apts but atrocious intelligence and dexterity apts, and they've got +1 Unarmed + Claws 1 with -1 in all weapons otherwise, so they almost all end up pointed towards unarmed melee builds in practice. Buffing their base Int to not be so low makes it not nearly so terrible to consider their +1 Ice and Earth apts (or their +0 Necro and Poison apts) as an alternative. They still don't get random int boosts from levelling and their Dex has been left still extremely low, so they're still somewhat flavourfully pointed towards unarmed ravaging, but player ghouls now also get at least the chance to consider other options while they still exist (and not just get merged into Vampire or whatever). -------------------------------------------------------------------------------- 7710a678fc | Nicholas Feinberg | 2023-11-21 13:42:41 -0800 Damn the Serpent of Hell (gammafunk) rDamn is normally only on monsters which cast damnation. The SoH's rDamn was leftover from before 06872b5b195 (2015), when it had a Hellfire breath. -------------------------------------------------------------------------------- 88a7baa7fa | Nicholas Feinberg | 2023-11-21 13:42:41 -0800 Show non-regenerating mons (CarefulOdds) -------------------------------------------------------------------------------- b0162a2734 | regret-index | 2023-11-21 17:03:14 -0330 Crunch down and tweak more Zig set populations Since a variety of branch populations were more fleshed out over time, less and less of the sets need to emphasize broad yet specific monsters in them over time. Also of note: * Vaults sets properly use V out-of-depths as I intended to use and accidentally left out ages and ages back. Makes them notably more dangerous on average, but mostly only for those not megazigging, and that's fine since the full V ood set is already one of the most varied of available branches anyway. * Crypt sets focus less on the heaviest hard-hitting undead, since Tar and Dis picked those up, and instead more on revenants, since they've got Dispel Undead to go threaten megaziggers with. * Fire is scarier because we've got enough monsters in that element we can avoid overlapping with all those normal-endgame dragons and giants. * Lair branch Roulette is more crunched down so it can place more ghost moths. * The new Vestibule set is now rarer and somewhat nerfed to weigh the random spawns higher than the handpicked ones. It's still pretty dangerous just by being another silent spectre set, of course, but it doesn't need to be quite so prominent while zigs are trying to be varied instead of just twenty-seven floors of silent spectres + orbs of fire + tzitzis. This buffs the scaling for the non-Tar hells, while they're also being more focused down, as a little recompense. -------------------------------------------------------------------------------- 277233ada9 | Nicholas Feinberg | 2023-11-21 12:04:26 -0800 Adjust minor monster descriptions (Flugkiller) Only show regen rate for fast-regen monsters (Flugkiller) and move sInv back into the 'text description zone' to make room for holiness. -------------------------------------------------------------------------------- b799ba9de5 | Implojin | 2023-11-21 13:15:19 -0600 Fix an AK pocket abyss save upgrade crash Abyssal Knight games that were saved while in the starting pocket abyss, and subsequently upgraded past e63b5e0675, ended up having no level id on the stack when trying to exit the abyss. This commit should allow any affected saves to return to D:1. -------------------------------------------------------------------------------- 2bbac1624d | Nicholas Feinberg | 2023-11-21 09:59:55 -0800 Describe panlord/ghost brands again (Lici) Got lost in 3dd9dd10254512485882. -------------------------------------------------------------------------------- 83d41fd8b6 | Nicholas Feinberg | 2023-11-19 16:58:41 -0800 Tweak glass eyes' description 57150269e139b239e5 made glass eyes LRD-able, based on an early WIP description of glass eyes that described them as being literally glass. In the meanwhile, the final version of 492612b1e5dc9033738 changed glass eyes to only be glass-y. This was inconsistent. The mechanical implications of the decision are limited, and player intuition probably does want 'glass eyes' to be literally glass. Adjust the description to match, and cut out a sentence that duplicates the 'spells' section. -------------------------------------------------------------------------------- b85d59ca80 | Nicholas Feinberg | 2023-11-19 16:51:47 -0800 Fix: maybe avoid a boulder crash (geekosaur) Try to only make boulders push things which are alive. -------------------------------------------------------------------------------- 70f3316b05 | Zhang Kai | 2023-11-19 09:18:47 -0800 Create godname.txt -------------------------------------------------------------------------------- b2e1c032c2 | Zhang Kai | 2023-11-19 09:18:47 -0800 Fix montitle.txt -------------------------------------------------------------------------------- 0e25566502 | Zhang Kai | 2023-11-19 09:18:47 -0800 Fix gods.txt -------------------------------------------------------------------------------- 0976ef0c61 | Zhang Kai | 2023-11-19 09:18:47 -0800 Fix cards.txt -------------------------------------------------------------------------------- 86b3dce6e7 | Zhang Kai | 2023-11-19 09:18:47 -0800 Create monspell.txt -------------------------------------------------------------------------------- 1ba604ef71 | Zhang Kai | 2023-11-19 09:18:47 -0800 Fix godspeak.txt -------------------------------------------------------------------------------- d157652452 | Zhang Kai | 2023-11-19 09:18:47 -0800 Update features.txt -------------------------------------------------------------------------------- a6869d85f1 | Zhang Kai | 2023-11-19 09:18:47 -0800 Update unrand.txt -------------------------------------------------------------------------------- 64512e9d5b | Zhang Kai | 2023-11-19 09:18:47 -0800 Update spells.txt -------------------------------------------------------------------------------- 71cec17ea4 | Zhang Kai | 2023-11-19 09:18:47 -0800 Update items.txt -------------------------------------------------------------------------------- 2e2ac5b567 | Zhang Kai | 2023-11-19 09:18:47 -0800 Update monsters.txt -------------------------------------------------------------------------------- cbe862445d | Zhang Kai | 2023-11-19 09:18:47 -0800 Update status.txt -------------------------------------------------------------------------------- 13f20ad9b5 | Zhang Kai | 2023-11-19 09:18:47 -0800 Update mutations.txt -------------------------------------------------------------------------------- f23a8c9ba6 | Zhang Kai | 2023-11-19 09:18:47 -0800 Fix ability.txt -------------------------------------------------------------------------------- 4d60c6eab0 | Nicholas Feinberg | 2023-11-19 09:09:39 -0800 Remove sleeptime supershields (cool 2, Ge0ff) -------------------------------------------------------------------------------- a9834b393d | Nicholas Feinberg | 2023-11-18 17:41:00 -0800 EVIL HACK: Don't pre-ID randbooks I regret every writing code. (And 658a57c81a4/85e71fe22c973af) in particular. Fixes #3345. (Hopefully.) -------------------------------------------------------------------------------- 1e7a56e4ca | Nicholas Feinberg | 2023-11-18 15:58:15 -0800 Tweak Spellforged Servitor spells Cut Sticky Flame (quite depressing in melee), add Irradiate. -------------------------------------------------------------------------------- 97aaa3725a | Nicholas Feinberg | 2023-11-18 15:42:54 -0800 Remove size's effect on shields (again) Continuing from 6e8f0f562f661212d597, remove the effect of monster size on SH. (For simplicity and sanity.) This is a small nerf to spriggan monsters, which get -4 SH now (if they had bucklers before). Spriggan riders, for example, go from 24 SH to 20. We can comp 'em some HD or EV or something if needed. -------------------------------------------------------------------------------- f7a513a3ec | Nicholas Feinberg | 2023-11-18 15:32:26 -0800 Display monster equip/ench resists It was previously a rude secret that, eg, Fannar had rF- from his ring of ice and that Parghit had GDA resists. This also messed with targeters. Well, now that all monster equipment is ID'd, this is easy to fix. So let's fix it! -------------------------------------------------------------------------------- 7238fd0580 | Nicholas Feinberg | 2023-11-18 15:05:43 -0800 Display monster SH Also, round monster stat pips up. Don't claim monsters with 4 AC have 'none'. -------------------------------------------------------------------------------- add1f9aa00 | Nicholas Feinberg | 2023-11-18 14:28:04 -0800 Rephrase singular attacks (Namsan) You know, why not. -------------------------------------------------------------------------------- 31867e143a | Nicholas Feinberg | 2023-11-17 23:15:33 -0800 Compact more monster info Plop threat, regen rate, size, intelligence, and sInv into another line in the 'stat block'. This isn't as important as speed or attack, so arguably it should be below them, but it looks nice all together. -------------------------------------------------------------------------------- d25c09d0c2 | regret-index | 2023-11-18 02:50:04 -0330 Big themed scaling vaults batch across D, Depths, Swamp, V, Zot. About twelve, mostly focusing on gods or locale echoes, generally spanning D:8-14 or D:12-14 and Vaults / Vaults, some also fitting into Swamp or Zot. Most of them are relatively safer than what god-themed vaults can already do for D:13- or what generic floor spawn vaults can get from few controls on out-of-depths, so it should be fine. Most of these, barring the Makhleb, Nemelex, and Zot + Pan arrangements, are experiments and practice in stretching out how far natural branch spawns might go to provide anything resembling a coherent theme: a pseudo-swamp, a Halloween mansion, some sinful smouldering keep, an undead garden, some shadows of Dith, and so on. Some of the most extreme scaling monster listing headers might warrant revisiting by throwing such into lua functions and then trying out other layouts under the same idea and a uniq_ tag, but it's important to first see if these game-spanning vaults have everything down right first. D's enemy set hasn't gotten removals in ages and both D and Depths support a lot of guest themes, so such lists probably shouldn't go out of date any time soon, either. -------------------------------------------------------------------------------- 536417deff | yrdzrfxndfvh | 2023-11-18 02:50:04 -0330 new Ziggurat pillars (#3348) [Committer's notes: No to the ballistomycetes; while it's a nice concept to vary Zig floors by occasionally helping the player out directly, ballistos are pretty exclusive to Fedhas at this juncture and they're far too harmless for zigdelvers otherwise to much justify. Also, adjust the two monsterful ones' depths to a more standard point of double digits zig floors. Closes #3348.] -------------------------------------------------------------------------------- 3cc34cc19e | regret-index | 2023-11-18 02:50:04 -0330 Fix up the new cutlass ship vault (#3002) Removes the lair branch ancient champions (spoilery aggression) and lair branch or deeper large counts of wights / wraiths / eels (completely harmless) for spawns more reasonable for each of the branches. Also, compress the rest of the header to house style standards, and fix up some teleport island and placement issues regarding the vault's water. Alongside the prior merged commit, closes #3002. -------------------------------------------------------------------------------- 30827cb387 | kippig | 2023-11-18 02:50:04 -0330 Add ghostly pirate ship vault. -------------------------------------------------------------------------------- 809df13f7d | regret-index | 2023-11-18 02:50:04 -0330 Update the shared lists in mon-spell.h Don't mention klowns in the list without pies, mention formless jellyfish for now in MST_BLINK_CLOSE, and rename + move down the howler monkey and ghost moth spell lists to their corresponding glyphs, since those don't share entries anymore with demonic crawlers or eyes of draining. -------------------------------------------------------------------------------- 6fe15c62fe | Nicholas Feinberg | 2023-11-17 21:55:40 -0800 Let spectral weapons regenerate Don't see any reason to ban it. Dancing weapons and animated armour both can regen. Doubt it'll matter. -------------------------------------------------------------------------------- e8c24b2130 | Nicholas Feinberg | 2023-11-17 21:46:01 -0800 Fix: free foeless foes from the bat zone (autarch) If a batty enemy ends up with no foe (perhaps because of Ru), don't leave them stuck in BEH_BATTY indefinitely. -------------------------------------------------------------------------------- 8808d95e9a | Nicholas Feinberg | 2023-11-17 19:55:14 -0800 Don't crash when examining kraken zombies (r-i) Or anything else with negative stats (!). -------------------------------------------------------------------------------- fb7600b534 | Nicholas Feinberg | 2023-11-16 21:58:10 -0800 Unbrace -------------------------------------------------------------------------------- 91e83f5f74 | Nicholas Feinberg | 2023-11-16 21:56:39 -0800 Make test spawners flammable Remove rStickyFlame, which was almost entirely useless. It was mostly applied to insubstantial monsters/forms, which... are already immune to sticky flame, by virtue of being insubstantial. The main effect here is that red very ugly things can now be sticky flamed. But they have rF++, so who cares! -------------------------------------------------------------------------------- 2e47921a08 | Nicholas Feinberg | 2023-11-16 21:47:50 -0800 Remove rVortex (hellmonk) It did nothing. The only thing that had it was twisters, which already have immunity from Polar Vortex by virtue of having 'cast' one themselves. -------------------------------------------------------------------------------- f85fca5ced | Nicholas Feinberg | 2023-11-16 16:32:08 -0800 Move monster attacks up Out of the random garbage zone, up to the exciting fun zone. Spells should go above them. -------------------------------------------------------------------------------- 0ab6d62aba | Nicholas Feinberg | 2023-11-16 16:04:12 -0800 Experiment: simplify shields Previously, shields degraded in effectiveness with each attack they blocked. This helped differentiate SH from EV, but was quite subtle - many players had no idea. To make the mechanics clearer and simpler, replace this effect with a limit on the number of blocks shields can make each turn. Bucklers get two blocks a turn, kites three, towers four, and players with SH but no shield (eg from "reflect or bone mut) get just one. This should hopefully make the different shield types feel a little more distinct, as well. The numbers here are extremely rough and need testing; I wouldn't be surprised if the max blocks all dropped by 1 (except for shieldless), for example. Some other things that might be good follow-ups: - Print a message whenever someone *would* have blocked an attack, but was out of blocks. (Would this be too spammy?) - Make bone plates give an extra max block (perhaps instead of some of the SH?). -------------------------------------------------------------------------------- 66a32c7c6b | Nicholas Feinberg | 2023-11-16 15:19:35 -0800 Simplify abominations The random speed gimmick was not very exciting; most players didn't know it existed, and knowing that the majority of large abominations were slower than normal speed would not improve anyone's game experience. Make small/large abominations a constant 12 and 10 speed, respectively. We can add new gimmicks to them at some point if we get good ideas, but this change shouldn't really have any effects on the status quo. -------------------------------------------------------------------------------- 0361d129ea | Nicholas Feinberg | 2023-11-16 15:15:53 -0800 Display AF_DROWN damage 'Max' is a bit misleading for these values, since the average is higher than half the max, but what can you do. -------------------------------------------------------------------------------- 441186997c | Nicholas Feinberg | 2023-11-16 15:03:36 -0800 Don't claim statues can outpace nagas Nagas are slow, but not that slow. -------------------------------------------------------------------------------- 3dd9dd1025 | Nicholas Feinberg | 2023-11-16 14:51:41 -0800 Tableify monster attacks As we've added more info about monster attacks, their descriptions have gotten increasingly unreadable. One example: They can claw for up to 40 damage; kick (for up to 23 damage) to blink self if any damage is dealt; tentacle-slap (for up to 35 damage) to cause mutations if any damage is dealt; and gore for up to 30 damage (about 58% to hit you). Address this by plopping attack descriptions into a table. This lets us remove the redundancy of "if any damage is dealt" for most cases, and should hopefully be easier to read and sort through generally. One downside is that mons weapon brands are no longer shown at all, which could be pretty misleading. I ran out of space to fit them, but maybe they could be shown somewhere? -------------------------------------------------------------------------------- f29f09145b | Nicholas Feinberg | 2023-11-16 12:04:30 -0800 Move TRJ stats out of attack descriptions TRJ jellies aren't an attack! -------------------------------------------------------------------------------- 7cb12e4e53 | Nicholas Feinberg | 2023-11-16 11:19:25 -0800 Show common monster resists en-bloc Putting together a stat block. -------------------------------------------------------------------------------- 0064d2672a | Nicholas Feinberg | 2023-11-16 10:40:18 -0800 Caveat abomination speed (Lici) Rip. -------------------------------------------------------------------------------- fa0b634519 | Nicholas Feinberg | 2023-11-16 10:29:16 -0800 Caveat sixfirhy/jiangshi speed (Monkooky) Since they're very weird! -------------------------------------------------------------------------------- e72b690d9f | Nicholas Feinberg | 2023-11-16 10:10:09 -0800 Rework monster speed descriptions Speed is one of the most important traits a monster had, but we buried it in a sea of trivia and described it quite vaguely. The old speed adjectives used to work OK, but once we started adding monsters with extremely fast or slow actions (e.g. juggernauts, animated armour), they were quite inadequate. Instead, show: - A speed percentage (eg 150% for 15 speed monsters, 80% for 8-speed mons). This percentage is unaffected by haste, slow, etc - it's just base speed. Higher numbers are better. Hopefully this is intuitive. - More percentages for special action types ("swim: 166%", "attack: 33%"). These percentages are pre-multiplied by base speed (so a juggernaut with 33% attack speed takes about 3.0 dAut per attack), and higher is still better. Hopefully this is intuitive. - An estimate of whether the monster is normally faster or slower than the player, without taking into account buffs/debuffs or terrain for either the player or the monster. There might be some int rounding errors here. -------------------------------------------------------------------------------- 2d28e49fa5 | Nicholas Feinberg | 2023-11-16 09:21:11 -0800 Simplify snapping turtles Previously, they had a slow 'base' speed and a reduced attack delay, exactly cancelling each other out. This was silly. Return their attack delay to normal (slowing their attack by 25%) and increase their attack damage to very roughly compensate. This also means they now work the same way as alligator snapping turtles. Numbers are rough; possibly the damage increase should be higher. If they feel weak after this, we can turn numbers up a little more. -------------------------------------------------------------------------------- 54f1719f28 | Nicholas Feinberg | 2023-11-16 09:17:04 -0800 Remove support for customizing some energy types We had no* monsters with custom action speeds for item use, item pickup (!), or 'special' actions, and I'm skeptical that we'd need to. Remove support for customizing these speeds. *snapping turtles don't count. -------------------------------------------------------------------------------- ee8ca3e5de | Nicholas Feinberg | 2023-11-16 09:03:03 -0800 Remove ACTION_ENERGY Unused since d1872aa6dd455cb2 (2014). -------------------------------------------------------------------------------- 5322dac6a2 | Nicholas Feinberg | 2023-11-15 18:02:04 -0800 Collapse basic monster stats onto one row Part one of a process of hopefully making monster vital info a bit easier to digest at a glance. -------------------------------------------------------------------------------- 454b1f1e0a | Implojin | 2023-11-12 18:12:39 -0600 Add a new Meteoran title (inflori) -------------------------------------------------------------------------------- 5b978dac0e | Nicholas Feinberg | 2023-11-11 13:49:05 -0800 Add an Ooze status description (hypergardens) -------------------------------------------------------------------------------- 858d187a59 | Nicholas Feinberg | 2023-11-11 13:47:29 -0800 Tweak death talisman names To avoid "the talisman of death of Plog", rename artefacts to "death talisman". -------------------------------------------------------------------------------- 77c946d0b9 | gammafunk | 2023-11-11 11:48:42 -0600 fix: Use the correct floor tiles in a vault (PleasingFungus) For lemuel_minitomb, use the appropriate sandstone floor tile under traps. -------------------------------------------------------------------------------- fbdfbacc72 | regret-index | 2023-11-09 20:04:27 -0330 Quick adjustments for several other zig sets Cut the no-longer-used hell knights and demons from Gehenna, Cocytus, and Tartarus zig sets, shove a little more varied threat not emphasized in other sets into Fire floors, and trim down the Swamp set since most of the weaker enemies are gone plus we have Tartarus and Tomb sets now for miasma spam anyway. -------------------------------------------------------------------------------- 5fc2386627 | yrdzrfxndfvh | 2023-11-09 19:40:25 -0330 new ziggurat floor type: vestibule (#3117) similar to the lair roulette, but with hell branch monsters instead [Committer's notes: Don't name it Hell Roulette, since all four hell branches are in each game at this current juncture. Lair roulette refers to a specific selection without Slime and all. Cut out the incomplete selected Vestibule set + derived undead for mostly place:Hell spawns, since it's not meaningfully much different and avoids desynching with only minor hell knight / necromancer additions otherwise. Instead, focus on placing specific monsters from each Hell with zig completion count, to match with the Lair roulette set and so there's another silent spectre floor. Also, futz with the math a fair bit. Closes #3117.] -------------------------------------------------------------------------------- 9676161fe1 | yrdzrfxndfvh | 2023-11-09 18:07:33 -0330 change holy ziggurat floors to include more monsters (#3118) adds sun moths, holy swine & seraphs to holy zig floors holy swine have a decreasing chance to spawn at lower depths & seraphs have an initially very low spawn rate which increases with depth and zigs completed [Committer's note: No holy swine. Plenty of non-branch Zig sets leave out the weakest enemies in their themes, and the current slim vaults using holy swine have at least some gesture of demonic magic, Xom, or Kirke having done something malevolent, while a ziggurat doesn't. Sun moths get half weight; they are technically holy, but they don't really fit much with the other holies, they're pretty harmless for zigs, and also their design needs shifts beyond "conjurer in the non-conjurations branch" and "rarely tell new players ghost moths exist". Pearl dragons no longer try to spawn more often than daevas, since their breath went from 3d36 to 3d18. Seraphs are restricted from the first half of ziggurat floors until one does sufficiently many ziggurats, so that unholy players aren't any further discouraged from single-digit first zig floors in regular 15 rune games. Thanks, c0fddb9. Still will probably ruin a bunch of megaziggers to be surrounded by fire-immune cleansing flame users, but I'm sure they'll adapt. Closes #3118.] -------------------------------------------------------------------------------- 8e65716e6e | yrdzrfxndfvh | 2023-11-08 16:19:40 -0330 orb shop vault (#3141) a rare, sealed off shop vault with (when applicable) orb-like enemies guarding it that appears in the mid-to-late game hopefully this will encourage people to use orbs over shields for once [Committer's note: Appreciated concept. Added a set for Vaults placement. Removed the Spider placement, as we have no other Spider shops currently and only one non-unique monster in the whole branch can even wield orbs. To still get out an orb spider appearance, use such in a new D:13- placement instead. Said D:13-15 placement is also the only one with a runed door, as the middle range of branches don't really warrant it compared to other minivaults- instead, it just gets thicker walls to prevent much spillage. The Depths and Zot placements are nerfed rather than relying on a runed door, though- higher hd shapeshifters are pretty extreme gimmicks out of Abyss / Zot and only very loosely linked to the magical orb theme, and ancient / dread liches are rather heavy to put in a limited-reward Zot vault that also has an orb of fire in it. Not sure how much people will get crystal (ball), fireball, and damnation sphere themes alongside direct orbs, but whatever. Closes #3141.] -------------------------------------------------------------------------------- 770356a28f | regret-index | 2023-11-07 19:18:57 -0330 A quick sweep over wizlab.des Of note: * There's been some voiced interests in keeping more of the extended monsters more exclusive to extended, for both making extended more exciting and special in using such plus keeping some very awkward monsters in their specified context. It'll take a while to assess the each of those, but for now, a quick swap out of the ds warmonger / black sun in wizlab_demon for a hellephant / dread lich should work. * Crunch down the Cigotuvi's deformed header list with some lua, with some different descriptors. Drop the monstrosity's reaching stinger (which would prevent it from approaching to trample and constrict) for a second trampling attack. Give the wizlab the unrand named after the same wizard, for more player temptation. * While monsters not drinking potions gives Eringya's some actual rewards, it could do with a bit more to correspond to both the master archer spam and the actual spells named after Eringya. ENB is now guaranteed, with a big stack of either lignification (bouqet) or poison scrolls (bog), and the random spectral weapons now use Asterion's spectral weapons (broad axe or demon weapons) alongside the quarterstaff or lajatang. * According to their kill statistics: mildly nerf Borg's and Eringya's, mildly buff Hellbinder's and Cigotuvi's, continue to buff Golubria's. -------------------------------------------------------------------------------- d5ff2fe127 | regret-index | 2023-11-07 19:18:57 -0330 Finish fixing up wizlab_zonguldrok (#732) Crunch down on the untidy header, reduce spectral and ghost presence to reduce overlap with wizlab_borg and to mostly fit theme + focus on them appearing via Haunt, put more martial-focused theme loot in the rewards, make graves being replaced by monsters raise some dust and smoke to emphasize the shift more than a sudden swap, visually mark the antique-awakening tiles to be less spoilery, simplify the random monster list instead of trying to be an exact 1-to-1 of possible gravestone spawns, open up some chokepoints on the inside, slightly lower the grave count after these spawn buffs. Alongside the prior commits, closes #732. -------------------------------------------------------------------------------- f599b16ab9 | regret-index | 2023-11-07 19:18:56 -0330 Antique lich -> Antique champion (also no longer just a rename!) Zonguldrok's Wizlab sure features a conjurer boss for something named after a sword. To help it with more mechanical distinction, to help the wizlab not be so far behind in kill statistics, and to actually match the flavour, the antique lich as a jokey rename is instead replaced with another vault-exclusive actual monster in the same fashion as most wizlabs use, one that can actually wield the titular weapon in its own hands. Aside from having a lot more HD, somewhat more HP and EV, plus a little more melee damage than ancient champions, antique champions live up to their name by having a spell currently unused elsewhere that ancients lost in 2016 (Haunt) and an upgrade to another lost in 2021 (Bolt of Draining -> Ghostly Fireball). They retain Haste and also cast Might for even more face smashing, and they spawn in a pair (rather than the current solo ancient lich or the PR's additional plain lich company) to stand out from the singular vault monsters in other Wizlabs. (Why do almost all namesakes presume they're describing individuals and not groups, anyway?) (If the name being confusable is somewhat bad now that it's actually more dangerous, then just renaming these some more is entirely reasonable. Some sort of battlelich style name theming would probably work.) -------------------------------------------------------------------------------- 94548685de | NormalPerson7 | 2023-11-07 19:18:56 -0330 Buff Zonguldrok's Shrine [Committer's note: Zonguldrok's wizlab is indeed underperforming; the gimmick's actual used contents don't match up to the player or dungeon power creep. This squashes a fairly large number of commits together: adding two extra liches to the antique lich fight, bumping the derived undead to midgame and endgame giants / trolls / dragons instead of ogres or plain trolls, and throwing in a lot of random Crypt spawns in place of prior lategame wights and vampires. It's a reasonable effort, but I've got my own rather different work to add on ontop of it, so unlike prior vault pull requests, I'm going to leave my edit out of this and instead put them in following commits.] -------------------------------------------------------------------------------- 9a2f3ffc92 | Nicholas Feinberg | 2023-11-06 21:29:33 -0800 Fix some felid blade paws issues Blade paw tiles don't work well for most of the alt felid tiles, so disable em. -------------------------------------------------------------------------------- 3b49de5836 | Nikolai Lavsky | 2023-11-06 13:13:12 +0300 fix: colour artefact talismans white (SentientSupper) Their names weren't white due to a missing colouring prefix. -------------------------------------------------------------------------------- 04711c9635 | regret-index | 2023-11-05 19:04:13 -0330 Editing pass + extra fleshing-out vaults for serial_library (#2903) Mostly adding to the decorative vault count, to try to get a sufficient variety count for something innately as pressured as another serial vault relying solely on walls / doors / floors rather than any features or monsters. If there was more threat vaults, it'd be reasonable to guarantee one or two rather than rolling up to all four, but whatever. Edits on the prior material: * Clean up a ton of repeat lines by throwing them into a standardized lua function and default-depth line. Also, move author name from the tag to the vaults. * Trim out one of the most generic decoration vaults, the decor tag from several other relatively generic vaults, and downweigh the appearance of these outside of the library vault. Some caution should be exercised to prevent spreading out a decorative tile from being too common, and a bunch of the tiniest ones here are quite plain outside of a full serial vault level theme. * Tried to make several of these pieces less boxy. * Updated the few enemy vaults in multiple ways: use a specific enemy set for D:4-7 instead of spawning out-of-depths much more dangerous than the later themed caster spawns, update for the wizard split, and nerf some of the branch placements (a box with 2-10 Elf:3 elves, walking tomes, or nagaraja and tyrants is a bit much at the top end). * Expanded the branch placement from D / Depths / Snake / Elf to also include Vaults (as individual rooms, not the serial vault) and Crypt. Both of those branches could also use some added variety. Closes #2903. -------------------------------------------------------------------------------- b08921ce47 | hellmonk | 2023-11-05 18:58:34 -0330 feat: Another library vault -------------------------------------------------------------------------------- c0b921035c | hellmonk | 2023-11-05 18:58:34 -0330 feat: Serial library vaults Add a new serial vault type that places a large number of vaults that use the wall_studio tile set. Most vaults are small and relatively simple, but a few large vaults that place thematic monsters and/or book loot are included. The vaults can place in D, Snake, Elf, and Depths at 0.5% chance. -------------------------------------------------------------------------------- 676ae46b74 | hellmonk | 2023-11-05 18:58:34 -0330 feat: Small library arrival vault -------------------------------------------------------------------------------- c0ee4c512b | hellmonk | 2023-11-05 18:58:34 -0330 feat: Two library overflows -------------------------------------------------------------------------------- 60c323e8ed | hellmonk | 2023-11-05 18:58:34 -0330 feat: Library ghost vault -------------------------------------------------------------------------------- aa2abb9e42 | Nicholas Feinberg | 2023-11-05 08:06:05 -0800 Fix some monspeak keys (rypofalem) -------------------------------------------------------------------------------- 08d55dae12 | Implojin | 2023-11-03 15:25:50 -0500 Fix spelling (Ge0ff) -------------------------------------------------------------------------------- 3233f18187 | Implojin | 2023-11-03 10:06:07 -0500 fix: Antique shop talisman ID (particleface, Ge0ff) Talismans purchased from antique shops were previously not having their id flags set, causing them to be valid targets for ?identify. More broadly, item identification flag handling continues to be a mess, and some further refactoring is probably in order here, but this commit fixes the immediate bug, at least. -------------------------------------------------------------------------------- 5e6e4ef867 | Nicholas Feinberg | 2023-11-02 21:10:23 -0700 Fix another Trog pain bug (Implojin) No idea what I was thinking with 9c3d1c461af. -------------------------------------------------------------------------------- 1d0c90dd83 | Nicholas Feinberg | 2023-11-02 21:02:09 -0700 Fix pain ego with Trog (Implojin) Don't block monsters from using pain ego if the player worships Trog (broken in 9c3d1c461af). Do block monsters which worship Trog from using pain ego. Goodbug. -------------------------------------------------------------------------------- bfb7dba898 | Implojin | 2023-11-02 17:05:59 -0500 fix: Don't randomize UC damage description (confidence interval) Previously, the displayed UC base damage with @ was being randomly rounded whenever the player pressed the key. -------------------------------------------------------------------------------- 7b6862f502 | Nicholas Feinberg | 2023-11-01 22:19:43 -0700 Swap evilness of "Macabre and "Vitality The amulet of Vitality was made evil so that we'd have more evil unrands. This has persistently confused players, since the theme doesn't scream 'evil' (even with the lovely new lore!). Try moving the evil onto the macabre finger necklace instead, which *does* seem rather unwholesome. -------------------------------------------------------------------------------- 1816016f30 | regret-index | 2023-11-01 19:31:57 -0230 Fit some more vaults from Depths / late D into Vaults, more .des clean-up The ironic thing about the Vaults layout set all the way back in 0.12 is that the variety of large theme vaults themselves were somewhat lost in exchange for the small vault focus instead. With a relatively coherent and specific monster set at this point, it doesn't take too much to fit more into such requirements. A few late D vaults are now also scaled to fit in V, while a couple of unexciting Depths vaults with flavour and enemy choices more suiting for V have been moved to V instead. (The old TSO-talks-to-you-directly angel vaults in particular might be somewhat screwed up by ironbound convokers, but that sure also applies to the contents of ghost vaults, so for most character it's probably fine; if one isn't unholy, then martial-master deep elves and cacodemons are already far more vexing to have suddenly drop in anyway. It also very slightly adds to the overlap of Depths and Vaults here, but angels and daevas aren't individually much threatening by Depths, so a somewhat earlier placement should help them out.) (Also, while I'm here, continue to adjust a bunch more headers in terms of house style, proper organization placement, and rotating for line-saving.) -------------------------------------------------------------------------------- eadf994542 | regret-index | 2023-10-30 18:22:34 -0230 Quick swamp.des adjustments Mostly house style imposing + some particularly weird enemy set adjusting. Most worthy of note: * Put a single @ in each of the super-common deep water pools, so they finally stop randomly being completely closed off from the level. Closes #3171. Doesn't close 3055 due to the Orc example there. * Properly put the extra tag on most of the decor vaults and move some of them to the right section. Means even more decoration in the most decorated branch, but it's probably fine. * Replace the vampire knights in byrel_swamp_growth_death_and_undeath with ghouls. Yes, it's a Yred vault in a branch with paralysis monsters and undead. The vault's also a major outlier as the most lethal Swamp end by a noticeable margin (alongside the pentagram end) and armoured aristocratic knights are flavour-wise rather out of place for this wild bog compared to the ghouls currently directly in the branch spawn list (and also on the Yred spawn list, of course). Buffs for the distant weaker list to balance out this absurd positioning, when weighted, the two newest swamp ends having 36% of kills together and two of the earlier swamp ends having 7% together is impending. * (Speaking of which, until I'm done replacing it entirely, shove some will-o-the-wisps into the fiery swamp end and toss out the harmless steam dragons for a bunch more lindwurms.) -------------------------------------------------------------------------------- 988fe4f06c | yrdzrfxndfvh | 2023-10-30 16:22:10 -0230 Two small Swamp vaults (#3330) [Committer's notes: Put some hard caps on the body / husk count in the former vault, put deep water in some of the chokepoints, and put more equipment on the witch. Removed the latter vault from the Swamp ruins constant level placement, instead making it place a random other decorative vault from that batch. Decorated it a bit more, and also increased the earth loot variety in such, since half of all games don't actually have the tin of tremorstones to find and it's good to keep sneaking in more flavourful talisman vault rewards. Also renamed it to something even slightly parseable for an archeological dig, unless there's a sixth song named "mirage" with actually relevant lyrics I couldn't find. Closes #3330.] -------------------------------------------------------------------------------- f127b1a779 | regret-index | 2023-10-30 15:46:18 -0230 Show equipment on more monsters + adjust base DS monster tile * Fenstrider witches have been able to pick up weapons for a long while without actually showing it on the tile; since they're currently already wearing robes, might as well show gear if they find anything else. * Show weapon + shield on base demonspawn monsters and those vault-decoration-only armataur / meteoran monsters. The former matters for the one Orc end still, the latter doesn't but we're still doing it for most of the other species dummy monsters like formicids and octopodes and tengu. * Swap the plain demonspawn tile with the old monstrous demonspawn tile- the current one doesn't have claws or horns as the crunching down of the base types into one monster gave them, which leads to occasional underestimating of their melee in the current Orc end placement. -------------------------------------------------------------------------------- 1e143483b6 | Skrybe | 2023-10-29 17:12:50 -0230 Xom-themed vaults (#2616) [The first:] Inspired by the Xom worshiping daevas that can generate in the Abyss. Contains daevas that call on Xom to smite the player, dancing holy weapons, and chaos effects through apocalypse crabs and chaos weapons wielded by the angels and daevas. Some angels that bored Xom have been turned to holy swine. [The other:] Undead Xom worshipers have built a deep shrine (or maybe they just took over a temple to Yred/Kiku?). Some of the followers are wielding chaos weapons, a few dancing draining weapons are wielding themselves, and cacodemons will provide plenty of opportunity for hilarious mutations. The temple is led by mummified Xom priests in the back. [Committer's note: Cleaned up both headers heavily. Minorly nerfed the Abyss vault. Converted the Crypt end into a regular D + Depths vault and heavily lowered its derived undead / skeletal warrior spam, leaning more on regular D + Depths chaos + demons (and some MuCks), and with a touch of Xom's standard messy decor. Even when taking out the wide number of demons harmless by depth, I'm ruling out cacodemons and chaos brand being a noticeable part of the broad and notably focused Crypt end sets. D and Depths have chaotic / demonic monsters and undead themes plenty to cover for the union, and we could do a lot more with juxtaposition in bigger vault themes anyway.] -------------------------------------------------------------------------------- c230f8ef24 | Nicholas Feinberg | 2023-10-28 14:11:52 -0700 Ban a grate warden play (Midn8) Don't let vault wardens seal doors/stairs through grates. Too easy for it to lead to a soft-lock. -------------------------------------------------------------------------------- 643d43726f | Nicholas Feinberg | 2023-10-28 14:00:59 -0700 Unban felid claw muts (Lici) This restriction was, as far as I can tell, totally arbitrary and unneeded. It's been in there since felids were first added and I'm not sure anyone has really thought very hard about it since. Partially reverts d4ad7b454ee (2010). -------------------------------------------------------------------------------- 5d48084ff3 | advil | 2023-10-28 14:19:43 -0400 fix: levelgen freeze with zin + randart talisman `@god_name@` in a randart talisman name would trigger a check as to whether the randomly chosen god likes the artefact. There was an accidental dependency in this code path on you.religion specifically for god_despises_artefact, so the wrong god would be checked for this case, and in particular a zin character would cause levelgen to run in a tight loop while trying to generate a talisman. (Possibly the relevant code in `replace_name_parts` should have an escape clause of some kind?) -------------------------------------------------------------------------------- 2a3aa404fa | advil | 2023-10-28 11:19:57 -0400 feat: a webtiles lobby idle timer Over time a running webtiles server tends to accumulate lobby connections where a browser window is still open to the lobby after someone has saved; CAO runs at about 40-50 at any given time (a big proportion of the total sockets), and I tend to think the vast majority of these aren't real. This commit adds a basic idle timer running in the lobby that is configurable (and disableable) by the server admin. At the end of the timer, the connection is closed. Any action in the lobby restarts it, but there aren't many actions that can be taken. The default is enabled with a fairly long (3hr) timeout. TBD: does this break beem without further special casing? -------------------------------------------------------------------------------- 6ef4313e94 | advil | 2023-10-28 11:19:57 -0400 refactor: improve webtiles socket/process cleanup The target of this is a bit theoretical: there's some kind of leak-like behavior happening over time where sockets that correspond to closed connections don't get removed from the socket list, if `process` fails to be cleaned up. I can't really figure out why the latter is happening, but I can see it on CAO. This commit should ensure that non-running closed connections get handled correctly, via a single cleaner code path. It also logs the case where there's a stale instance of `self.process` on socket close. This bug was somewhat obscured by a logging bug, fixed in the previous commit. -------------------------------------------------------------------------------- f86a31d22a | advil | 2023-10-28 11:19:45 -0400 fix: don't report stopped webtiles processes as idle -------------------------------------------------------------------------------- 75a2e9a4b4 | Implojin | 2023-10-27 14:40:06 -0500 fix: Victory nearby monster checks Prior to this commit, Victory's nearby monster checks occurred after using consumables. This unintentionally allowed reading ?blink and ?fog without resetting Victory's bonuses, if the character's line of sight became empty afterward. Victory now checks for nearby mons before using consumables; reading ?blink with hostiles in LOS should now reset Victory's stats. -------------------------------------------------------------------------------- d09d022031 | regret-index | 2023-10-27 16:05:43 -0230 Clean-up, revise, buff wizlab_golubria This messy slice of Abyss has the worst direct kill rate of its peers, and also is pretty boring compared to an Abyss trip after teleporters became far more standard fair to see throughout the rest of the Dungeon. This also needs some more revisions thrown its way. * Spatial vortices, blink frogs, and dispersal + distortion mages are now replaced and downplayed correspondingly for some Spider enemies instead. Plays off of themes of both ghost moths as interdimensional and also Spider:$'s spider silk aux armour for Shrouds of Golubria; gives an identity to contrast with"micro-Abyss"; removes the annoyance of vortex handling. * Enemy set cuts out early Abyss spawns due to being irrelevant for Wizlab depth, shifts a fair number of middle-tier enemies into earlier tiers, and has some commented closer to parseable weights for its enemy list. * The center chamber no longer places the teleporter-in spot in nearly so easily away from the eldritch tentacle, adds another eldritch tentacle to the random spawning to try and make more spots open to tentacles, and adds two of the higher tier enemies to the spot to add more variable variety than just an obsidian statue and its tentacles. * Randomization finally commented. Still immense. * Outer circle made slightly less open so there's less autoexplore time wasted trying to explore all of the open space outside the relevant chambers. -------------------------------------------------------------------------------- 306229cb8d | regret-index | 2023-10-27 14:48:04 -0230 Brief vault review of some slice of mini_monsters.des and float.des Header cleaning, vaguely shoving things towards one house style, fair ways more appropriate depth scaling for vaults with broad ranges, some proper branch fitting. A couple of severe kill statistic deviations also targetted. Will do more of this review in the future. Notes: * Some orc minivaults have been moved from Depths to Vaults, since Vaults still has orcs as regular spawns and Depths doesn't. The endless toil to divide those two continues. * nicolae_hydra_factorization places the 27 one-headed hydras in its sequence as dead skeletons, not as monsters. Since one-headed hydras die instantly when beheaded, the first section otherwise hands out about as much XP as Lair:$ with little threat, which is far from ideal. * hangedman_aerie_drop hasn't properly distributed its enemies before the runed door is opened since 826ad36 made traps not worked behind glass. As a salvaging of the vault, it focuses on an unavoidable dispersal trap- still awkward, but at least it still has any functional gimmick now. * There's a long list of enemies that shouldn't bleed out of their branches even if it's otherwise hypothetically thematic, and doom hounds without Grunn near the top of that list, so they were dropped from a vault. Some proper review will target a lot of these things eventually- other stuff will probably include iron golems and creeping infernos. * I would have gone after more vaults with D:2 scorpions or D:5 unseen horrors, but that list is several dozen vaults long. Maybe there should be more caps on D out-of-depth placement for the extremely early material, maybe I should just hit only one of those ranges a little. * There's a lot of ORIENT: float vaults that are pretty small and empty. I'm not exactly sure why quite a few of said vaults aren't minivaults, except to make Depths:2 and 3 to roll not getting a notable vault. This deserves more deliberate and length review in the future (and / or debate over if those floors should roll guaranteed minivaults instead), but for now, I'm trimming a handful of them out from Depths. -------------------------------------------------------------------------------- 24f9ace8b5 | advil | 2023-10-26 08:39:53 -0400 fix: add a bounds check in webtiles menu code Resolves mantis bug 12718 -------------------------------------------------------------------------------- 7f5505f354 | MainiacJoe | 2023-10-26 04:13:36 -0230 Two Swamp entries (#3240) [Committer's note: Thickened walls in the former vault to reduce the chance noise makes them wander out of the vault, and removed bunyips while mildly downgrading some of the threat in case they wake up anyway. Reduced spriggan druid count and removed dryads + teleport closets from the latter vault. (Monsters that don't exist outside of spells are not currently accepted vault contents. We had cut out druids from Lair many years ago, but they're relatively weak in Swamp these days?...) Also, cleaned up both headers. Closes #3240.] -------------------------------------------------------------------------------- e1948c8a92 | hellmonk | 2023-10-26 02:57:53 -0230 feat:Talisman vault (#3211) Small vault that places a talisman and corresponding monsters/scenery. [Committer's note: Limited the sets per branch in terms of threat level and branch theme, so there's no autoexploring into a Lair dancing weapon or a Mines air elemental + raiju band. Cleaned up the header, added more of a border, a door, and the patrolling tag so they wander away a lot less from the vault theming, since most of these are pretty out-of-depth. Made threat monsters not sit on top of the talisman so one doesn't miss the reason to bother with the vault. Give each of them a small chance of being a randart. Closes #3211.] -------------------------------------------------------------------------------- 8a8ce12e04 | Kyle Rawlins | 2023-10-25 17:39:51 -0400 fix: various issues with webtiles use item mode cycle Toggling modes in this menu in webtiles was incredibly buggy, because menu info was not fully updated (headers could become hoverable, tiles stuck around, etc). This commit fixes every issue that I was able to find. -------------------------------------------------------------------------------- 7ea235fadd | Nicholas Feinberg | 2023-10-25 07:39:12 -0700 Tone down talisman prices (Lici) These values were a bit too high. -------------------------------------------------------------------------------- a325b2283a | Nicholas Feinberg | 2023-10-23 08:15:58 -0700 Fix the build..? -------------------------------------------------------------------------------- 9b7d53a0bd | Nicholas Feinberg | 2023-10-23 08:11:05 -0700 Fix a randart talisman gen bug -------------------------------------------------------------------------------- b7fda78df9 | Nicholas Feinberg | 2023-10-23 07:51:04 -0700 Add prices for randart talismans & staves -------------------------------------------------------------------------------- 0fca184906 | gammafunk | 2023-10-21 23:19:03 -0500 feat: Add evokable item damage to clua This added an evoke_damage string field giving the damage dice display seen when examining the item in the UI. This works for wands and XP evokers that deal direct damage. -------------------------------------------------------------------------------- a24f6d603d | gammafunk | 2023-10-21 23:19:03 -0500 feat: Add damage and noise to evoker descriptions For the XP evokers that do direct damage and have casting or effect noises, namely the Tin of Tremorstones, Phial of Floods, and Lightning Rod, show the current damage die and noise values in the item descriptions, like we already do for wands. The Lightning Rod damage situation is a bit complicated due to arc length decreasing the damage, but we mention this now in the main description text. -------------------------------------------------------------------------------- 4004991382 | Nicholas Feinberg | 2023-10-21 20:40:29 -0700 Add randart talismans This has been planned from the start of talismans. Should add some occasional spice to talismans - more excitement when you find a strong one, tough decisions when you find an earlier form with good randart props or a later one with bad props, etc. -------------------------------------------------------------------------------- f2c640e547 | Nicholas Feinberg | 2023-10-21 20:40:29 -0700 Save active talisman For later. -------------------------------------------------------------------------------- 43d22bd090 | MainiacJoe | 2023-10-21 21:23:55 -0230 A Shoals entry and an Orc decorative vault (#3230) * Four pools, three merfolk or a tougher monster, one per pool. * A kraken in a very tiny pool in an oval room. [Committer's notes: Heavy header clean-up. The first of these has been altered for far less plants to let autoexplore actually find the Shoals entry, and swaps out a blind autoexploring into a sea snake in Lair for a manticore instead. The plants might hypothetically provide some warning, but if other monsters roar right beside the walls the vault monsters are likely to tear right through the plants. The second of these was a kraken Shoals entrance, blocked off by plants. There's something to be said for how kraken don't really feel much intimidating any more these days, but there's too much that's awkward with the use of such in Lair: it's not actually super plausible for a Lair character to deal enough damage at full range to get the free XP, but it's both tempting and very tedious to try, plus one can actually just get mangled doing it. For want of another obvious use for it, the vault's name vaguely points it at putting it in some mines instead, as one of a million glass vaults; they didn't kill it and neither should you. Could use another vault PR to go guarantee Orc:1 decor, maybe?... Closes #3230.] -------------------------------------------------------------------------------- cb8bc90ed4 | Nicholas Feinberg | 2023-10-21 14:48:15 -0700 Describe forms in the A-menu Yet more prep for randart forms. -------------------------------------------------------------------------------- 7b14ca2962 | Implojin | 2023-10-21 15:53:36 -0500 fix: Save compat for vitrifying gaze In saved games that upgraded across 492612b1e5, floating eyes silently kept their paralysis gaze after becoming glass eyes, and lost the need to charge to activate the effect, giving those bugged glass eyes the ability to spam paralyse. This commit hopefully fixes any remaining affected saves, by upgrading those mons to gain vitrifying gaze. -------------------------------------------------------------------------------- eb88551f38 | Implojin | 2023-10-21 03:18:25 -0500 fix: webtiles EV colour while Fragile After cd2b144e7b this string became able to match both "fragile" and "agile" statuses, erroneously colouring EV lightblue in webtiles while fragile. -------------------------------------------------------------------------------- fa384e33e1 | gammafunk | 2023-10-21 01:09:01 -0500 feat: Evokable accuracy info for clua Add a target_evoke() method to the monster info table. Like the corresponding target_weapon(), target_spell(), et al. methods, target_evoke() gives the accuracy string seen in the UI when targeting the given monster with the given evokable. It expects an item obtained from the clua items library as an argument, and only returns a non-empty value for wands or the Phial of Floods. The other evokables either always hit or otherwise don't have a meaningful notion of accuracy. -------------------------------------------------------------------------------- fe29db990f | gammafunk | 2023-10-21 01:09:01 -0500 feat: Show the hit chance for the Phial of Floods The Phial didn't show its hit chance in the targeting UI due to the unique setup it has. Ideally it would use your_spells() for most of its setup, like wands and the Lightning Rod do. Other than using a custom range that differs from the default range of the Primal Wave spell, I'm not sure if there are reasons why it can't use your_spells(), so I'm just modifying the existing approach for now. -------------------------------------------------------------------------------- 24c8ebf480 | gammafunk | 2023-10-21 01:09:01 -0500 feat: Add weapon damage ratings to clua The new damage_rating() function in the item metatable gives both the rating as a number and the full damage rating string as return values. An input argument added to the crawl-side damage_rating() function allows us to get the first value. This might be doable in a cleaner way, but this approach was simplest given how the calculation is structured. -------------------------------------------------------------------------------- 57150269e1 | Nicholas Feinberg | 2023-10-20 23:00:07 -0700 Make glass shatter Unlike e.g. stone giants, glass eyes are being described as being made of glass. As such, they should be vulnerable to LRD and Shatter. -------------------------------------------------------------------------------- f5be29c462 | regret-index | 2023-10-20 17:10:36 -0230 Put Zot decorative vaults on 33% of Zot floors. Zot's supposed to be dramatically weird, both in its flavour and as the last branch in a normal game. This is somewhat addressed by its wacky spawn list having been buffed over time, but can't really be that easily conveyed otherwise in normal Crawl modes- notable terrain features only work for otherwise constantly-fleeing normal speed characters when they're constantly unavoidably present (c.f. water), and balance-wise we shouldn't make every floor throw around lengthy stair and ambush-vaults and force players and characters to frequently nearly full-clear Zot. So, an alternative sprucing up notion. This uses the freshly 54 Zot-only decoration-only vaults to place a fair ways more often than they'd normally would otherwise, like how D:14-15 and Depths frequently place their own decorative vaults. Most of them rely on weird level-intersecting negative space tricks or echoing all the rune vaults one finds those keys to Zot. It's not much, but it's more interesting than the current paradigm, anyway. If there's mild concern, luniq_ tags could be made uniq_ instead... (For speedrunners and divers, it's worth noting a fair number of these vaults roll a 1/4 or 1/5 chance for one stair, so there's not too much pressure to memorize the vaults for if they'll have stairs or not under such circumstances compared to anywhere else on the floor.) -------------------------------------------------------------------------------- 59900296c7 | regret-index | 2023-10-20 17:10:17 -0230 Update the older decorative Zot vaults. * Add the new luniq_zotdec_(large/negative_space/liquid) tags as corresponds to the each of them, so they work better with the new set using such. * Remove a teleport island, even if it's unlikely anyone gets stuck by Zot. * Add a quick tiny amount of variation to some previously static curves. * Interplay of stone, metal, and crystal walls is pretty overdone at this point in all the other decor vaults already, since Crawl is so restrained on decoration options outside of fancy tilework. As such, several of the vaults relying much on that get more negative space tricks instead. -------------------------------------------------------------------------------- 76384004bd | regret-index | 2023-10-20 17:10:13 -0230 Large batch of Zot decor vaults. Something like forty of them, joining the prior fourteen for a round 27 X 2. Several different focuses: negative space (by letting regular levelgen fill in or weirdly connect splits), st_stairs_# (as a minivault series seen throughout the game but also higher chance), rune vaults (since they're containing the keys to this realm in the first place), and some of the layouts available for Zot (like layout_onion/_interference). The rune vaults miniatures use a tiny amount of wall-facing coloured glass, since that's been established by a variety of other Zot vaults by this point. Most have only a small chance for a stair. There's some self-explanatory luniq_ tags preventing floors from becoming too consumed by all this: * luniq_zotdec_rune * luniq_zotdec_liquid * luniq_zotdec_large * luniq_zotdec_negative_space If the rune vault gimmick turns out to be a bit too much (so many rune branches involve liquids, after all), then they should be set to scale versus depth: Lair roulette for Z:1-2, V / Abyss / Slime for Z:2-3, and extended for Z:3-4. There's not nearly as much liquid focus in the non-rune-vault-mock-up other decor vaults. Intended for a follow-up commit that standardizes additional decorative vault placement for Zot, like how the bottom of D and Depths both work. Still usable even if that doesn't happen, of course. -------------------------------------------------------------------------------- d0bd89e52a | regret-index | 2023-10-20 17:02:44 -0230 Further adjust arcanist vs occultist spell sets, power, placement Arcanists being hasted paralyzing Lightning Bolt spammers was a bit much for the prior pre-Lair out-of-depth / late D regular spawn, but Freezing Cloud is next to harmless because it won't even fire on itself like the ones with the old spellsets do, but still easily die to it anyway with the right layout. Meanwhile, occultists spawning in Depths is still mostly harmless beyond the necessary state of diluting other spawns, due to their relatively low spellpower by that point; overall, the Fireball + Banish spellset has significant issues with being much more successful at banishing the player (to a harmless Abyss:2) than actually directly threatening to kill them. Yet some more shuffling around is somewhat warranted. The new spellsets are: * Arcanist: Bolt of Cold, Vitrify, Haste, Blink * Occultist: Fireball, Banish, Invisibility, Force Lance The latter also gets more HD and slightly more health. To acknowledge their more consistent blasting threat (alongside the higher banish chance), they've been shoved down another regular level of D, and vaults placing both earlier interchangeably now place occultists slightly deeper- mostly post-Lair. Vaults not focused on high variety also more consistently place occultists over arcanists in Depths, as was clearly intended. Erolcha doesn't need this buff, so her spellset's finally been split off from occultists for now. Though, maybe she could swap Invis for Vitrify to sit between the two? Probably not. (...there's still kind of a big awkward component here where banishment from a weak monster isn't going to do much by Depths anyway, but the V placement is a lot more frequent than the Depths placement and the point was to reduce an increased rate in banishment. Not really sure there's an easy answer to this outside of much further revisions instead, with, like abyssal knights or a completely different spawn for Depths instead. At least with the HD bump, they'll be sending people to Abyss:3 instead of Abyss:2?) -------------------------------------------------------------------------------- 9b124e0958 | regret-index | 2023-10-20 16:51:10 -0230 Great orbs of eyes: Para -> Vitrify, Drain Magic -> Polymorph, +1 HD Great orbs of eyes are some of the stranger designs around, in being both a combination of many other eyes yet weaker than most of them for it between needing line of fire and not focusing on applying the one hex. In their earliest appearances as late D generic slightly-out-of-depth spawns they're only noticeable when one doesn't bother to swap in Willpower or is is doing incredibly badly by the time they see them, and are rather sad when they then appear a whiles later in V, Slime, and a bunch of Depths vaults. Since other eyes themselves have changed a fair bit, these amalgamates can also change to both match up a bit better and to be both more memorable. Another hitdice (12 -> 13) helps with them landing any hexes at all later on. Vitrify matches the floating eye change, while Polymorph somewhat matches shining eyes in comparison to Drain Magic no longer mirroring the removed eyes of draining. (It's admittedly less unique to take badforms away from being mostly a Psyche and Kirke special, but the former still has Chain of Chaos + chaos or disto brand, the latter still has Monstrous Meneagerie, and both spawn much earlier than these do.) The unaltered presence of Confusion and Mindblast somewhat help focus it on weakening the player one way or another before just blasting and meleeing compared to other eyes, so it gets to be noticeably weird and somewhat mean. (Only minimal vault adjustment; they're not in the normal D spawn range, and without a teleporter or runed door they don't spawn earlier than one Lair branch vault or Vaults, which have a lot worse.) -------------------------------------------------------------------------------- 492612b1e5 | regret-index | 2023-10-20 16:51:10 -0230 Floating eyes -> Glass eyes (elliptic) Floating eyes are pretty cool conceptually, by being one of the most exaggerated versions of a support monster, doing zero damage themselves but irresistably paralyzing for accompanying monsters to take advantage of. They're also pretty awkward in practice, being late and rare and frail enough to usually just zap nearly immediately with bolt / blast wands. Of course, if one either can't do such or doesn't notice them alongside other monsters, then they rather directly completely destroy specific character builds when alongside other monsters. This rather binary state deserves some adjustment, which comes alongside some new flavour to make sure people notice the difference. The new Fragile status (take 30% more damage) is plenty meaningful enough to help with any other company, but allows enough counterplay in comparison to Paralysis that the monster itself can be stronger. Turning these floating eyes to glass eyes ironically comes with slightly over twice the health (close to Depths spriggans) and non-zero EV. (They're not brittle for the sake of LRD currently, but people can argue over all of this flavour seperately of the mechanical work.) Also, their Vitrifying Gaze doesn't need to charge up like Paralyzing Gaze does: instead, they rack up the duration 6-10 turns each cast up to a cap of 50 turns. This means one has to dedicate a bit more effort towards them to actually prevent or reduce the effect and regularly may have to suffer through it, but one also can actually strategize around being much more effectively frail. At the very least, a very roughly similiar concept seems to work fine with flayed ghosts, so it should reasonably work out here too. For both testing purposes and variety purposes, they're set to appear a tiny bit more in Depths and substantially more often in Slime, the latter cutting a little into the relatively weak great orbs of eyes. (They're already always set to spawn with another non-banding enemy, so it shouldn't affect other normal spawns too much.) The Paralyzing Gaze monster spell also hasn't been cut here, in case any of this is reverted, though it'll need some work to be properly irresistable again (though maybe any future use shouldn't skip willpower anyway, considering the prior design problems). (Placeholder tile adjustment of the old tile for now.) -------------------------------------------------------------------------------- cd2b144e7b | regret-index | 2023-10-20 16:51:10 -0230 New monster hex - Vitrify (take 30% more damage!) Aside from the slow propagation of Barbs and Will/2, new statuses haven't really been spread around on monsters too often. There's a large pool of old monsters exchanging back and forth a variety of straightforward conjurations and hexes while newer monsters sit on weird one-offs that are risky to spread much further due to their given distinguishing complexity. Surely something new could help freshen up such a pool and allow another high-threat effect. This new Vitrify hex applying the Fragile debuff has the same effect as the downside of two stacks of Harm without the upside: if you take any damage, you'll take 30% more. This is obviously quite bad, but in comparison to paralysis, which this is meant to mildly lower the presence of, one still keeps EV and SH to avoid damage with. Also, instead of rolling 2-4 turns of monster behaviour to randomly fail to / ruin you with with little recourse, one has 10-25 turns to use any number of defensive consumables, spells, and actions to shield one's self with until it wears off. Currently, like Strip Willpower, monsters won't cast it again if you already have the debuff, so they can focus on hitting you instead. (There's been some wondering if lowering current + max HP would be more transparent about its exact effects in comparison to the innate fuzziness and spikes inherent to screwing with damage in a game with such complicated defense calculations; c.f. the time gap between 762e91d and 141e18f. I'm not much of a fan of this alternative; aside from stepping on the toes of the rather widespread flayed ghost, I'd argue that for many players the actual value of one's own max HP numbers is pretty fuzzy in how most people don't remember the exacts of vast network of incoming damage numbers anyway. Still, it's worth noting for future work if this state of Vitrify doesn't work out.) (Balancing numbers, word and phrasing choices, and uses of this, are all openly subject to change in the future. At the very least, it's been nine years since the Vitrification card was around and seven since Xom did the same effect, so it's unlikely for too much confusion on that front, and while Fragile is also an equipment modifier word, I'm sure most people would agree unequipping your self is lethal. This has also been implemented as a status for monsters, for charming or summoning purposes. It's rather boring to directly put much of in player hands, but it might be reasonable to toss into Xom's list or shuffle around some Nemelex cards to fit in over Degeneration's awkward placement in the destruction deck.) -------------------------------------------------------------------------------- 762e91d90a | regret-index | 2023-10-20 15:35:23 -0230 Fix Harm not dealing more damage to players & extra multiplying poison 141e18f has two seperate bugs. Using *= operators in ouch.cc's _apply_extra_harm, due to the order of operations, results in it rounding back down to the neutral 100%, as can be witnessed rather directly with Torment but presumably was otherwise attributed to defenses and damage roll fuzzing otherwise. Also, when poisoned, Harm seems to use the poison value rather than the given Harm stacks on the player / monster. This results in fun multiplicative issues from sufficiently higher hits of poison- redbacks can inflict 200 poison damage in one hit, for example. This fixes both. Time for more re-evaluations of Harm again... -------------------------------------------------------------------------------- daa99269f9 | Implojin | 2023-10-19 21:33:19 -0500 lint: unbrace -------------------------------------------------------------------------------- 9ea0feecda | Implojin | 2023-10-19 21:12:11 -0500 Remove some commented-out tentacle code Presumably some of this has been useful for debugging in the past, but most of it hasn't been touched in >9 years and there's no need for us to retain a bunch of dead code here. -------------------------------------------------------------------------------- 4ff0be5013 | Kate | 2023-10-20 01:21:31 +0100 Fix staff of air description As with the other elemental evoker staves, it ignores AC, so make sure this is documented in the item description. -------------------------------------------------------------------------------- e801674230 | Kate | 2023-10-20 01:21:26 +0100 Apply half AC to Static Discharge damage Instead of ignoring AC entirely, for consistency with other spells dealing BEAM_ELECTRICITY damage. Increase base damage slightly to compensate (although this may not be necessary, since most early monsters won't have enough AC for it to make a difference, and as an L2 spell it should fall off past the early game). -------------------------------------------------------------------------------- b096ee56cb | Kate | 2023-10-20 01:20:21 +0100 Simplify Static Discharge damage calculations For mysterious reasons, Static Discharge had 3 different damage calculations - one for hitting monsters, one for the hitting the player, and one for when the spell caused self-damage to the caster. However, the self- damage calculation was always overwritten by the player-specific calculation so only applied to monster self-damage. Simplify the spell to always use the same damage calculation, which is halved when hitting the caster. In practice this should be mostly indistinguishable - the player will now take noticeably more damage from hostile Static Discharge casters, but there aren't any of these outside of player ghosts. -------------------------------------------------------------------------------- 3617cccc65 | regret-index | 2023-10-19 21:33:52 -0230 Adjust decorative gimmicks for a pair of arrival vaults (#2493) shiori_arrival_elements seems to only generate a single cloud per billowing for three of the sections, currently. The fog_machine code for the vault hasn't been adjusted as far back as 58b486a's cleanup of the header, so it's presumably some accidental quirk of limiting fog_machine cloud spread when not visible or connected to the player. Since the dangerous clouds are all behind stone glass, it should be fine to let them billow a little harder with some higher other parameters and using still-functional spread_rate values. amcnicky_arrival_blooded_trapdoor was adjusted in 91da126 to actually place some blood, but does't guarantee any, so I opted for a little more guaranteed blood splatter. That commit also referred to the wrong github issue, since said issue accidentally listed a different issue number for another game, alas. Closes #2493. -------------------------------------------------------------------------------- f4fcaacff8 | MainiacJoe | 2023-10-19 19:28:55 -0230 Two Sewer entry vaults (#3236) These are maze entries with either 5-6 normal sewer entry monsters or a single iguana. [Committer's note: Cleaned up headers, put the iguana chance a little deeper- D:3 is a floor early for iguanas. Closes #3236.] -------------------------------------------------------------------------------- 6adbb78044 | RypoFalem | 2023-10-19 21:59:16 +0100 fix: implement a correction for imp-liments lich -> death form. Imps can compliment the player again. -------------------------------------------------------------------------------- 8b917bc6d4 | Nicholas Feinberg | 2023-10-19 13:11:36 -0700 Remove weapon enchantments RIP Freezing Brand, Warp Weapon, et al. (Just moving files around.) -------------------------------------------------------------------------------- 7b59d4eb97 | DracoOmega | 2023-10-18 18:34:05 -0230 Make monster low-hp casting stop ignoring fear (and other things) When a monster is at less than 1/3 hp, it has a flat 1 in 8 chance to cast a random spell it knows (in addition to its normal spellcasting chance). But this extra cast chance ignored monsters being afraid (ie: they would cast offensive magic just fine) and also range flags on spells (so spark wasps at low hp could use blinkbolt from melee range, which they are normally forbidden from doing). This commit enforces the same checks on low-hp casting that normal casting has. (Really, it would probably be good to fold all this code together a little more cleanly, but this should fix the most direct problem). -------------------------------------------------------------------------------- 84ea7605eb | Nicholas Feinberg | 2023-10-18 10:52:00 -0700 Mark !invis useless again when perma-backlit (CarefulOdds, elliptic) This was broken by 902d8d2af84. !invis is now marked useless in flux form. This is not really ideal (autopickup should really take it anyway) - someone should fix it. -------------------------------------------------------------------------------- 62d6f922e0 | Nicholas Feinberg | 2023-10-18 10:52:00 -0700 Tweak backlit mut desc (CarefulOdds) -------------------------------------------------------------------------------- 83f249bd18 | Nicholas Feinberg | 2023-10-18 10:52:00 -0700 Simplify repeated !invis use The invisibility spell is long gone, so we don't need to worry about repeat casts (if we ever did?). (This is pre-DCSS logic.) -------------------------------------------------------------------------------- 95c4c6a0d8 | Implojin | 2023-10-18 03:25:21 -0500 fix: Treat the Zot clock as noteworthy ..and stop this note from printing "Buggy note passed" in the log. -------------------------------------------------------------------------------- 8b6cb33e30 | Implojin | 2023-10-18 03:06:59 -0500 Clarify Meteoran Zot clock description (CarefulOdds) As the Zot clock no longer insta-kills, let's be more specific about its max HP reduction effect. -------------------------------------------------------------------------------- 0a390f2509 | Nicholas Feinberg | 2023-10-17 21:17:59 -0700 Fix dream grammar "DickyLongcocking saved by the dreamshard necklace!" is not very grammatical. -------------------------------------------------------------------------------- e39a22a033 | Kate | 2023-10-17 22:04:13 +0100 Fix display of Axe of Woe's damage rating On '@', just display the flavour message on its own, instead of "Your damage rating with the +∞ Axe of Woe is about your enemies will bleed and die for Makhleb." -------------------------------------------------------------------------------- affab04aa4 | Kate | 2023-10-17 21:56:54 +0100 Fix displayed damage rating for non-weapons On '@', just display a zero when wielding any non-weapon (instead of listing out all the strength and skill bonuses that don't apply), and don't count wand charges towards the enchantment portion of the damage rating if wielding a wand. Closes #3280. -------------------------------------------------------------------------------- 6e6a34aff2 | Monkooky | 2023-10-17 21:23:55 +0100 Lower Jinxbite Will/2 Duration Lowers the duration of the Will/2 status to more closely match Jinxbite; additionally remove spell power scaling for Will/2 to remove a minor training disincentive. This should rarely have serious balance implications, but be better for quality of life. [Committer's note - Refactored to avoid a crash, and added a cap to Jinxbite duration itself.] -------------------------------------------------------------------------------- d4ebf70e20 | Monkooky | 2023-10-17 21:23:55 +0100 Adjust handling of caps in you.increase_duration() Removes a behaviour where you.increase_duration() could lower durations when passed a duration with a cap while already over that cap. Relevant in a few rare cases (e.g. Klown pies applying a capped low-duration silence would reduce the duration of an existing silence spell). [Committer's note - rewrote commit message and separated out Jinxbite handling. Closes #3293.] -------------------------------------------------------------------------------- 28cbb04a8c | Nicholas Feinberg | 2023-10-16 17:11:03 -0700 Remember a dream Add a note type and a milestone for having your life saved by the dreamshard necklace. -------------------------------------------------------------------------------- 3060d423dc | Nicholas Feinberg | 2023-10-16 16:55:25 -0700 Unban Ozocubu's Armour + Statue Form (Lici) Not as needed now that Statue Form isn't int-based. -------------------------------------------------------------------------------- ebf5b86a2d | Kate | 2023-10-16 22:37:55 +0100 Remove weapons from some zombies in a bailey Zombies aren't supposed to be able to use items, and giving them polearms in this bailey results in the polearms not being visibly displayed in console. The main threat of the vault is the gargoyles and vampires, so no compensation has been given to the zombies (but they could perhaps instead be changed back to regular orcs, as well). -------------------------------------------------------------------------------- a885b83477 | Kyle Rawlins | 2023-10-16 17:08:50 -0400 feat: clo to force a full des cache reset This option ensures that the des cache is rebuilt from scratch, independent of whether the .des files have changed. It then uses this option in `make test`, so that local runs of `make test` exercise the entire set of des files (and match CI and webserver version update behavior for cases where des syntax changes). (For consistency, I probably should have named this `-resetdb`, but I don't like the name `-builddb` in the first place.) -------------------------------------------------------------------------------- 8387aacbc1 | Nicholas Feinberg | 2023-10-16 13:59:46 -0700 Give wizards their tongues back -------------------------------------------------------------------------------- 50735af31d | elliptic | 2023-10-16 16:06:42 -0400 Make Sif gifts less frequent at lower piety. Where Okawaru or Trog had 0 chance of gifting right after reaching 5* piety, Sif had about an 8% chance; this made it reasonably plausible to get a gift and then drop back below 5* during the piety timeout. This commit generally makes Sif gifts less frequent at piety less than 6* and more frequent at piety more than 6*. This does mean that the expected time to the first Sif gift is longer; if this feels undesirable, I would suggest moving gifts to start at 4* piety instead of 5*. I'm not sure whether this is a large enough change to make it reasonably easy for players to get to 6* Sif piety before getting every spell in the game, but if it does have that effect then I see it as a good thing. The main intent of the change though is to make it much less likely to drop a piety rank without using abilities. -------------------------------------------------------------------------------- 4c35d5ed2b | Nicholas Feinberg | 2023-10-16 07:27:56 -0700 Arcanists: lbolt -> fcloud (regret-index) To differentiate from other lightning bolt + force lance monsters, give arcanists freezing cloud instead. Fun synergy with paralysis and force lance. -------------------------------------------------------------------------------- eeba0b7a58 | Nicholas Feinberg | 2023-10-16 07:23:37 -0700 Give Occultists a hand (dinky) -------------------------------------------------------------------------------- 472e003958 | advil | 2023-10-16 09:48:11 -0400 build: fix some warnings -------------------------------------------------------------------------------- 32ab0262c4 | Kate | 2023-10-16 13:03:39 +0100 Fix the build Remove some stray wizards. -------------------------------------------------------------------------------- 02257934e3 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update monsters.txt Update and revise translation. -------------------------------------------------------------------------------- ebcc7e148e | Zhang Kai | 2023-10-15 23:28:06 -0700 Update monsters.txt Update and revise translation. -------------------------------------------------------------------------------- e0a2eff941 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update spells.txt -------------------------------------------------------------------------------- 26f404366d | Zhang Kai | 2023-10-15 23:28:06 -0700 Update items.txt -------------------------------------------------------------------------------- 6abf09ed30 | Zhang Kai | 2023-10-15 23:28:06 -0700 Create godspeak.txt -------------------------------------------------------------------------------- dc452ea274 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update features.txt -------------------------------------------------------------------------------- 77c0d2a828 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update unident.txt -------------------------------------------------------------------------------- baebb6b12a | Zhang Kai | 2023-10-15 23:28:06 -0700 Update unrand.txt -------------------------------------------------------------------------------- 70e9662eb1 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update species.txt -------------------------------------------------------------------------------- beab03f220 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update gods.txt -------------------------------------------------------------------------------- 907d27a6c6 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update spells.txt -------------------------------------------------------------------------------- 550896e986 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update backgrounds.txt -------------------------------------------------------------------------------- e30bc5b396 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update items.txt -------------------------------------------------------------------------------- be6526df08 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update montitle.txt -------------------------------------------------------------------------------- f21790cbe8 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update monsters.txt -------------------------------------------------------------------------------- 69cb52fc78 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update status.txt -------------------------------------------------------------------------------- 30f743f5ea | Zhang Kai | 2023-10-15 23:28:06 -0700 Update mutations.txt -------------------------------------------------------------------------------- 90a03a5dd1 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update tutorial.txt -------------------------------------------------------------------------------- 1e2b247f76 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update ability.txt -------------------------------------------------------------------------------- 75c64fe6d6 | Zhang Kai | 2023-10-15 23:28:06 -0700 Update help.txt -------------------------------------------------------------------------------- 129f0b0447 | Nicholas Feinberg | 2023-10-15 23:25:40 -0700 Split wizards in half (elliptic) When monster spellbooks were merged in bc7614a589d44b (Jan 2021), the number of wizards with Banish tripled. This increased the amount of Banishment in Crawl by an undesirable amount. Wizards were used quite widely for thematic reasons - they're a Generic Magic Monster. Rename them to 'occultists' and add an 'arcanist' monster, which has the same stats but a non-banishy spellbook (para, haste, lbolt, and flance). Put occultists in Depths, arcanists in Vaults, and a 50/50 split everywhere else. (Wizard name replaced to discourage future overuse and to disambiguate with orc wizards.) Didn't bother reflowing some vaults lines, so some are quite long now. Sorry! -------------------------------------------------------------------------------- 1a8549509d | gammafunk | 2023-10-15 21:33:58 -0500 fix: Colour some clear stone in a vault (elliptic) For gammafunk_dig_for_victory, make all clear stone use the special color currently used to hold the deep troll earth mages flanking the inner path. This colouration was done to distinguish diggable from non-diggable clear walls, especially in console, and there's no reason not to apply it to the clear stone proceeding the loot area as well. We do that and additionally use the colored stone for the outer walls as well, so now diggable and non-diggable clear walls are always distinguished by the same color. -------------------------------------------------------------------------------- 40fc089f4a | Kate | 2023-10-16 00:34:06 +0100 Document Nessos's special-cased brand stacking Closes #3316. -------------------------------------------------------------------------------- 86116bc889 | Nicholas Feinberg | 2023-10-15 15:43:41 -0700 Give fire crabs rLava (elliptic) Brutal buffs, or perhaps nerfs, to hangedman_research_pyrotechnics, cheibrodos_lair_end_hotspot, and minmay_lair_entry_lava. (The latter is the point.) -------------------------------------------------------------------------------- 85e71fe22c | Nicholas Feinberg | 2023-10-15 15:23:18 -0700 Fix: ID randbooks Reverts to the behavior we had before 658a57c81a4f6. Fixes bugs. -------------------------------------------------------------------------------- be960a18b5 | gammafunk | 2023-10-15 16:18:25 -0230 fix: A fix and minor changes to branch entries Add a missing MONS statment and apply some house style rules. -------------------------------------------------------------------------------- 385d4b38af | regret-index | 2023-10-15 16:17:18 -0230 Vault review: Branch entries Most of this is nerfs to notable statistical outliers of the most dangerous, and minor buffs to the absolutely weakest. It's not bad for a branch entry vault to have some notable danger, but the higher it is, the more it de-emphasizes the branch the vault spawned in and the more it emphasizes specific spoiler knowledge or arbitrary surprise spikes of danger. For example, autoexplore being bad around trees in Lair:2-3 if any noise was made because one could travel into blind harpooning beside dual bog bodies / hydrae, or random doors in Depths revealing three hellephants and five hell hogs immediately on the player at once. Not ideal. (This occasionally also just uses more strict NSUBST behaviour to reduce slim chances for absurd numbers, and also makes some minor adjustments for Depths and Hells having continued to change identity over time.) Additional notes: * A slim few rarely-spawning entries rely on a singular extreme out-of-depth: like a fire crab guarding Lair, or a guardian serpent guarding Snake. For now, I'm just adding some terrain cover to mildly reduce the threat; further discussion of the state of these is probably warranted. Some others, like the oklob plant guarding lair and the mini-Vaults:5 entrance get people far more for hubris than inherent chasing danger... so their inherent nature hasn't been touched. * No deep water in Spider entries (no clinging anymore, discourage poking). * No ORIENT: float in Snake entries since other lair branch entries aren't. * While a couple of the tier 4 and tier 3 demons could serve the occasional support functionality (af_corrode, af_barbs, malmutate), their presence in Depths entries to Pan was notably weak otherwise compared to how much the constant Hells entrances got. With this, the entry function now places no tier 4s, less tier 3s, and usually a second tier 2. * This also slips in some minor formatting style standardization- stuff like a standard NAME -> TAGS -> DEPTH -> ORIENT -> MONS -> ITEM -> KFEAT -> [randomization] -> feature tiles and colours order, or minimizing "nothing" in monspec and itemspec. Establishing a firm house style guide and enforcing it might be nice eventually...? -------------------------------------------------------------------------------- d2e1b1f749 | mainiacjoe | 2023-10-15 16:02:24 -0230 One arrival vault (#3178) An oval room with oval walls in the middle, with decorations around the entrance inside. This vault was the sample project in MainiacJoe's "The Beginner's Guide to Contributing Vaults to Dungeon Crawl: Stone Soup". [Committer's note: Moved from simple.des to small.des. Closes #3178.] -------------------------------------------------------------------------------- 75fcfec63a | Implojin | 2023-10-15 12:36:39 -0500 fix: Conjugate aoops pursuit verb (riverfiend) -------------------------------------------------------------------------------- e136f0c47a | regret-index | 2023-10-14 21:43:23 -0230 Remove fast movespeed off of monster tengu, compensate each differently Player tengu have lost faster movespeed due to kiting tedium, so monster tengu should somewhat correlate. While I personally feel that there's some advantages to not strictly trying to preserve symmetry between players and monsters for the sake of making monsters also actually work, the marginal speed advantage of monster tengu is east enough to exchange for actually fleshing out and focusing in on the rest of their gimmicks. Each of tengu reavers, tengu warriors, and tengu conjurers gets a different buff to compensate: tengu reavers get rMsl, tengu warriors get AF_FLANK, and tengu conjurers cast Battlesphere more often + swap emergency Blink for emergency Force Lance. * Late game ranged combat is exceptionally strong and simple, with extremely little notable trying to counter it (spriggans die to area wands, Sojobo / Enchantress are both unreliable spawns and both dislike wand of roots). Tengu reavers currently having an identity of random bolt + decent melee basically makes them a fancier giant. Giving them rMsl like Sojobo has suits the air apt, fleshes out the current focus on having all the bolts, and puts a little more pressure on those late game ranged characters. * Tengu warriors were just slightly more dangerous orc knights aside from their faster move speed, except with another tengu instead of battlecry + other orcs, and in late D after one may have already done Orc. Giving them the new AF_FLANK to fly behind the player in melee gives them a memorable trick without feeding further into stats arms races, and even results in a minor support role when they spawn in Depths. (As mid-D out-of-depth vault / spawns, if the player starts running earlier, then they're easier to escape without the added movespeed anyway. If players don't, well. They'll learn.) * Tengu conjurers are the only normal monster with battlesphere! They're also basically earlier deep elf zephyrmancers that cast lightning bolt less often, down to sharing blink (if in an emergency slot). To give them a bit more of a niche with this speed nerfing, they're getting a higher battlesphere cast chance (since it's completely dependent on proper sequencing of random actions) and replace emergency blink with emergency force lance (which will still put some distance but also actually activates the battlesphere more than a tenth of the time). A few early D vaults using tengu monsters have been adjusted alongside this. -------------------------------------------------------------------------------- 9a209b2425 | elliptic | 2023-10-14 11:18:35 -0400 Remove some Sword of Power breakpoints Now it just fires HP/270 beams, rounded randomly. This is a tiny buff to characters with less than 270 HP and a larger buff to characters with significantly more than 270 HP (hard without statue form + berserk etc), but I suspect the sword is still on the weaker side of unrands. -------------------------------------------------------------------------------- 1609e0ac53 | regret-index | 2023-10-14 02:06:53 -0230 Unbrace -------------------------------------------------------------------------------- 71e63ac981 | regret-index | 2023-10-13 22:56:27 -0230 Give ufetubi AF_FLANK, make them spawn in duos a floor later There's not much that ufetubi have to stand out amongst the early fast monsters- essentially hounds with higher damage and half the health plus some random resists. While they're more notable in early D than anywhere else they once previously spawned, they could do with any actual distinction. Since they're originally mostly noticeable for flocking off of ynoxinuls, let's lean on those origins a little harder. They get the new AF_FLANK capacity to slip past the player on a melee attack, and to make that actually notably matter anywhere, they also get a little more HP and spawn with another ufetubus, in D:5-7 instead of D:4-7. Maybe they'll finally be noticeable when they pin one in from fleeing a given water moccasin or ogre? (The ufetubi-summoning Ynoxinuls are rarely used in vaults at depths where they'll actually hurt the player much, but this commit also nerfs a few earlier vaults that use either without easy recourse, just in case. I'm not too concerned about this affecting demon summoning too much; sure, an orc sorcerer or high priest's ynoxinuls pin one in even harder, but a sun demon or sixfirhy could just kill directly instead.) -------------------------------------------------------------------------------- e004ede0ee | regret-index | 2023-10-13 22:55:08 -0230 New attack flavour - AF_FLANK Like hellwings' AF_SWOOP, this gives a monster a chance and a cooldown to go behind its target if said space is free. Unlike AF_SWOOP, the new AF_FLANK triggers on melee attacks, rather than giving it a free blink close from 2 to 5 tiles away. (Since this isn't being done from long range, that chance is 1/3 hits here, not 1/4 turns active.) Whatever gets this thus gains the notable ability to get past its foes in corridors and chokepoints, but without adding to the heavy use of a variety of different types of blinking used broadly throughout the game. Autofight probably shouldn't be too confused since they're already in melee anyway. -------------------------------------------------------------------------------- fe8ebadbca | regret-index | 2023-10-12 16:10:23 -0230 Transform a tiny amount of Elf:3 loot into thematic Elf:2 Hall of Blades loot The 1/3 chance to actually get an appropriate or even tempting top-tier weapon as the only real rewards from the Hall of Blades is kind of weak relative to the high danger an open vault eating up half of the level filled with dancing weapons presents. It's regularly better to not open the vault, but as a guaranteed placement avoiding it is awkward on top of the meagre rewards- Elf:3 hatches, teleports, and teleport traps are much worse, with little compensation for such an otherwise dramatic nature. As such, I'm buffing Blade's items rewards, while trying to adhere to its focus and flavour. Each vault gets a 50% chance for a blade talisman, so unarmed characters might actually care about it and may get something, plus two scrolls of enchant weapon and either a third or a brand weapon scroll. A third handpicked top-tier dancing weapon also spawns half the time (making the chance to get a specific weapon go from ~33% to ~42%), and their handpicked brands list replaces venom and draining with heavy and spectral. (These odds might be adjusted with further debate.) To balance out such additional items in the branch, the Elf end vault loot has been very slightly decreased- there's two items per endvault now just replaced with gold. (This sort of arrangement might warrant further reducing / "transferring" to support another optional branch's lacking rewards versus danger, in Crypt, but that will take a fair bit more review and debate.) -------------------------------------------------------------------------------- 02e7d12df6 | Nicholas Feinberg | 2023-10-11 18:06:31 -0700 Add Jinxbite tile (CanOfWorms) -------------------------------------------------------------------------------- a9a24b5522 | brandon s allbery kf8nh | 2023-10-11 18:05:49 -0700 prevent a Grand Finale crash If there are lost souls in LOS when Grand Finale is used, one may create a new monster where the exploded one had been, causing a crash. Catch this and take the fallback path. -------------------------------------------------------------------------------- a0274b33d4 | Kate | 2023-10-12 00:53:10 +0100 Fix spacing -------------------------------------------------------------------------------- ba0c9b4c9a | Kate | 2023-10-12 00:50:24 +0100 Fix Dimensional Bullseye leaking Mara clones Expire the effect from the real monster when creating a clone. -------------------------------------------------------------------------------- 346e7cf427 | Kate | 2023-10-12 00:21:45 +0100 Adjust Sigil of Binding messaging It gave a warning exactly 2 turns before expiring, but no message at all on actual expiration. Timeout warning messages should generally be randomised, and in this case there isn't really any need for a warning message at all - remove the warning message and add expiry messages. -------------------------------------------------------------------------------- 10ed682358 | MainiacJoe | 2023-10-11 16:01:39 -0230 Add two Ossuary entries (#3238) [Committer's notes: Moved these to the bottom of the entries section, for now, to fit with the rest of the file. Some later commit should reorganize portal entries to split the threatening from the decorative. Also, made a custom non-slow vaguely Egyptian undead set replacing D zombie use to tone down e.g. unseen horror zombie spam on D:8. Maybe this should be functionized and used all ossuary entries? Ossuaries themselves scaling or not based on not specifying zombie lists is weird and really should be addressed one way or another, much less how the non-scaling ones think rat zombies are interesting D:4 enemies.] -------------------------------------------------------------------------------- cc72cf4df8 | Roadster Tracker | 2023-10-11 12:58:01 -0230 Adding rocket / ship arrival / monster vaults (#2773) [Committer's note: Two smoky arrival rockets (where I heavily reduced smoke), a Greek ship minivault (I moved to D and Depths mixing Shoals and other enemies), and a ...beplagued colony ark capsules of zombie minivault (for which I cleaned up the list and combined together). These are pretty silly in this fantasy context, but I suspect few people will notice they're rockets without source-reading anyway, so it probably should be fine.] Closes #2773.] -------------------------------------------------------------------------------- 674d60d6f7 | gammafunk | 2023-10-10 17:13:13 -0500 fix: Correct an NSUBST For the subvault hex_subvault_crossings, the rock replacement pattern should leave non-modified glyphs as rock, not replace them with floor. -------------------------------------------------------------------------------- 9b2fd80f0c | gammafunk | 2023-10-10 16:47:53 -0500 fix: Place some subvaults correctly (elliptic) For the hex_subvault_* set of subvaults, which are part of hellmonk_hyper_hexagons, the subvaults were missing an unrand tag to prevent their placement as normal vaults. Add this tag and move common tag setup to the hex_setup() function these subvaults all use. -------------------------------------------------------------------------------- b85685009f | Nicholas Feinberg | 2023-10-10 12:48:02 -0700 Make /light match Dazzling Spray (ebonnov) It was confusing that Dazzling Spray didn't match /light for which monsters could be blinded. Restrict /light so that nonliving, plant and undead monsters can't be blinded by it. (Which seems moderately intuitive.) -------------------------------------------------------------------------------- 3d5d91748a | Nicholas Feinberg | 2023-10-09 16:51:52 -0700 BOULDER (CanOfWorms) Add a spell tile for Brom's Barreling Boulder. -------------------------------------------------------------------------------- 74853506b1 | Nicholas Feinberg | 2023-10-09 15:57:14 -0700 Small binding sigil tweaks -------------------------------------------------------------------------------- 087f8585d8 | Nicholas Feinberg | 2023-10-09 15:56:35 -0700 Binding sigil spell & feat tiles (CanOfWorms) -------------------------------------------------------------------------------- f9435882c7 | Nicholas Feinberg | 2023-10-09 15:28:55 -0700 Deduplicate Oka gifts (elliptic) Ban Oka from offering non-artefact weapons/armour of the same type and ego, since it was quite depressing to be offered three bardiches of protection or whatever. This is an Op^Oka armour gift buff especially, since they have so few slots that they're very likely to get gifted artefacts. That's fine, though. -------------------------------------------------------------------------------- 102095e7f3 | Nicholas Feinberg | 2023-10-09 15:27:16 -0700 Fix the build -------------------------------------------------------------------------------- 0814019178 | Nicholas Feinberg | 2023-10-09 15:10:33 -0700 Add Okawaru capstone icons (CanOfWorms) -------------------------------------------------------------------------------- 9dce7d3444 | MainiacJoe | 2023-10-08 20:31:50 -0230 Two late D vaults (#3229) [Committer's note: Both of these were Depths entries with some issues- one didn't have any threat or interest unless one digged out extremely out-of-depth enemies, and the other had little actual connection to Depths as a branch. Both of these have been converted to late D minivaults instead. The former arena made into an Okawaru vault using some D oods, as another experiment with all the backtracking material to make opening something be dangerous even late game. The latter labyrinth was given a few Lab non-minotaur enemies at the entrance to warn a little more and contrast a little with the other current faux-Lab. Note we probably shouldn't have too many more of the latter: added a new uniq_ tag for now, anyway.] -------------------------------------------------------------------------------- 469dc525a8 | yrdzrfxndfvh | 2023-10-08 18:31:02 -0230 new vaults in crypt and depths (#3028) [Committer's notes: A highly specific game reference of an beast zombie pile + curse skulls made into an enclosed Crypt single-stair ambush. Derived undead can't regenerate, but they can't be taken up the stairs either, so it should still kinda work. Also, a tengu + shrike minivault for Depths, after I gave it actual rewards and a little less of a chokepoint. Closes PR #3028.] -------------------------------------------------------------------------------- 86f20125e8 | Nicholas Feinberg | 2023-10-08 13:57:20 -0700 Remove DOS support (Ge0ff) Cont'd from 5577605d7802af08a7cc1c2d09c1b5599dfcee6c (2011). -------------------------------------------------------------------------------- 2a902b0113 | patrick | 2023-10-08 12:56:58 -0400 Add some simple decor vaults to Swamp and mini_features.des Nothing too fancy here. Just some designs that had been stuck in my head for a while. -------------------------------------------------------------------------------- 7dc041b90a | elliptic | 2023-10-08 12:24:05 -0400 Let nets/webs work on giants. The precise set of which monsters are SIZE_GIANT is one that players don't have much reason to learn for anything other than net-throwing, and it could be an annoying gotcha when players were playing quickly and didn't notice the (immune to nets) in the targeter for something they didn't expect to be SIZE_GIANT (e.g. quicksilver ooze vs azure jelly). If letting players freely net hydras, dragons, Cerebov, etc feels too strong, we can reduce net generation and/or add some HD scaling. This commit also affects players in dragonform, who are no longer immune to nets/webs. -------------------------------------------------------------------------------- 362426d53f | Nicholas Feinberg | 2023-10-07 22:17:36 -0700 Fix a randbook info leak (elliptic) "Unknown" randbooks weren't so unknown after all. -------------------------------------------------------------------------------- c9b61b78f7 | Kate | 2023-10-07 21:05:22 +0100 Improve cloud spell targeters When aiming cloud spells that use a targeter_cloud, correctly display when existing harmless clouds can be overwritten. Also fix an older bug that made cloud spells look like they could spill into a Sanctuary, and don't allow trying to cast clouds inside a Sanctuary (previously the targeter would tell you that nothing would happen, but the cloud could spill out of the Sanctuary). -------------------------------------------------------------------------------- 99b8c10eda | Kate | 2023-10-07 20:45:15 +0100 Let ophan holy flames overwrite cosmetic clouds Using the same cloud strength rules as used for other cloud spells. -------------------------------------------------------------------------------- 7ff8af7976 | elliptic | 2023-10-04 17:42:37 -0400 Simplify _cloud_is_stronger Don't let opaque clouds overwrite harmless opaque clouds; this was mainly relevant for using scroll of fog against catoblepas breath (which now works). Now no opaque or harmful cloud can be overwritten other than steam (which might not need a special case, but it dissipates very quickly anyway so it sort of makes sense). -------------------------------------------------------------------------------- 62f75f5e9b | Kate | 2023-10-04 22:06:44 +0100 Fix apply_area_cloud being unable to overwrite clouds (qwqw) Fixes cloud spells (such as swamp drake breath) being unable to overwrite harmless/cosmetic clouds. -------------------------------------------------------------------------------- d1b5ebe444 | elliptic | 2023-10-04 16:16:55 -0400 Fix hand cannon smoke being biased towards certain directions (kate). -------------------------------------------------------------------------------- aac375c287 | Kate | 2023-10-03 23:00:22 +0100 Don't crash when self-targeting Bombard/Mule -------------------------------------------------------------------------------- 2feec9bdef | Kate | 2023-10-03 23:00:22 +0100 Prevent self-targeting purple draconian breath As with 762be4b276345 preventing self-targeting wands of quicksilver, don't grant purple draconians unlimited access to cancellation. -------------------------------------------------------------------------------- b3bcc0d938 | elliptic | 2023-10-02 19:43:47 -0400 Remove pearl dragon as an option in a the_grid subvault It just generated with a pile of gold with no surrounding holy-theming, and there are plenty of other dragons that can be used instead. Mummies etc deserve not to be randomly blasted by a pearl dragon like this, and it's nice to keep them as a more special monster. -------------------------------------------------------------------------------- 9abc20d24f | Implojin | 2023-09-30 10:48:03 -0500 Fix an unintentional fallthrough (PF) -------------------------------------------------------------------------------- dc52ec4e09 | regret-index | 2023-09-27 13:58:09 -0230 Brief reorganizing & header rewriting for some .des files * abyss.des - Shorten the abyssal rune vault header with the addition of runelights, and put the rune vaults after the rune vault combinations with the other non-combined rune vaults. * wizlab.des - Remove the XP listing off the top banner, if it's not going to be used and since we're not tracking average xp off of other portals. Put the two randomly-named wizards' wizlabs at the top of list rather than the bottom so it can otherwise be listed in chronological order. * zot.des - reorganize to seperate decorative vaults from non-decorative vaults, for a future plan. Also consistently put the TAGS line second after NAME. -------------------------------------------------------------------------------- 427724c815 | Nikolai Lavsky | 2023-09-27 15:38:30 +0300 feat: add a default force_more for Okawaru's capstone gifts Otherwise it's easy to miss when these gifts become available. Also, remove an obsolete force_more for Oka's armour gifts. -------------------------------------------------------------------------------- dad65c7809 | elliptic | 2023-09-27 02:56:31 -0400 Don't have god wrath slow the player for 0 turns Giving the message for slowing but not actually slowing the player was confusing; instead use a more typical slow duration (same as *Slow etc). -------------------------------------------------------------------------------- 038b102fc3 | elliptic | 2023-09-26 23:09:42 -0400 Buff finessed rapier of speed. A rapier of speed at mindelay (or various other fast weapons of speed) takes 10/3 aut per swing (random-rounded). With Finesse this should be halved to 5/3 aut, but instead weapon delay was hardcapped below at 2 aut. This commit reduces that hardcap to 1 aut (which should be impossible to reach anyway). When quickblades had the same issue as rapier of speed it was possible to view the 2 aut cap as part of shortblade balance (though only with Okawaru specifically...), but with new quickblades it's hard to defend it as sensible. A finessed quickblade is already effectively a 5/4 aut attack delay weapon. -------------------------------------------------------------------------------- 6d2ecbb638 | Nicholas Feinberg | 2023-09-26 13:18:28 -0700 Prompt before dubious bombard shots Don't stumble backward into eg zot traps without a prompt. -------------------------------------------------------------------------------- 762be4b276 | Nicholas Feinberg | 2023-09-26 10:27:44 -0700 Ban self-targeting /quicksilver (elliptic) It's fun to have multiple uses for items, both offensive and utility, but using wands of quicksilver to cancel effects on the player was entirely too powerful. Since there are so many charges of /qs than there are potions of cancellation, it effectively made most status effects irrelevant. It's good for games to feel different depending on which items you get, but this went too far, unfortunately. Purple dracs can still self-target for now. -------------------------------------------------------------------------------- 67fb590e27 | Nicholas Feinberg | 2023-09-26 09:38:05 -0700 Reduce verbiage By one word. -------------------------------------------------------------------------------- 3fff7bce4a | Nicholas Feinberg | 2023-09-26 07:30:09 -0700 Fix bombard message (Flugkiller) -------------------------------------------------------------------------------- 3ceb0a68c4 | Implojin | 2023-09-25 18:28:50 -0500 fix: Correctly gender M_ARCHER uniques on xv This affects Nessos, Vashnia, and Joseph. -------------------------------------------------------------------------------- 2a3a5bc3be | elliptic | 2023-09-25 02:20:03 -0400 Let monsters throw instead of launch sometimes (Superwelder). Previously a goblin with a sling and curare would look scary but never use the curare. Instead, make it throw in place of launching 1/3 of the time. -------------------------------------------------------------------------------- 8ad8ed16fb | Implojin | 2023-09-25 01:18:04 -0500 fix: Don't steal mons throwables with Tukimas (Darby) Previously, it was possible to pull throwables out of monster inventories by casting Tukima's Dance at them, iff they were wielding a ranged weapon. This behavior seems to date back to when launchers had ammo and seems buggy; I think we're ok to just remove it. -------------------------------------------------------------------------------- c15d34cb79 | Implojin | 2023-09-25 00:30:03 -0500 fix: Allow inventory ctrl+f searches in descent Broken in 9a366f9be8. -------------------------------------------------------------------------------- 3a2c1c66ba | Nicholas Feinberg | 2023-09-24 14:59:41 -0700 Halve bombard knockback chance (Flugkiller) -------------------------------------------------------------------------------- 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 | Nicholas Feinberg | 2022-03-12 06:43:05 -0800 Make hunters more dextrous Since that's quite important for them now. -------------------------------------------------------------------------------- 389c0b56f3 | Edgar A. Bering IV | 2022-03-08 17:28:25 +0200 docs: fix changelog (gammafunk) -------------------------------------------------------------------------------- 17cd264cf9 | Edgar A. Bering IV | 2022-03-08 17:23:29 +0200 docs: update changelog -------------------------------------------------------------------------------- 8310661d2b | Edgar A. Bering IV | 2022-03-08 16:10:51 +0200 fix: don't give frightened monsters opportunity attacks (iamserjio) -------------------------------------------------------------------------------- 84ccd498e3 | Edgar A. Bering IV | 2022-03-08 08:33:34 +0200 wip changelog -------------------------------------------------------------------------------- d4eb659eea | advil | 2022-03-07 17:16:21 -0500 fix: allow anon spectating I guess everyone assumed that this was disabled because of account hold stuff and that's why no one told me this was broken, but it was just broken by mistake. -------------------------------------------------------------------------------- 1586fc07ea | Kate | 2022-03-07 02:03:29 +0000 Adjust an ice cave entrance ice_cave_statue_garden_transporter could place fast simulacra so close to the player that they couldn't safely leave if they decided to immediately abandon the vault after entry. Put the exit adjacent to the entrance, and move some of the monsters further away. Nagas and Chei worshippers are still out of luck against harpy simulacra, but at least can't get constricted by anaconda simulacra when trying to leave. Nagas of Chei simply suffer (and maybe this and similar portal vaults should be reworked further to make leaving safely always be possible). -------------------------------------------------------------------------------- 2e7ade144c | hellmonk | 2022-03-06 20:15:57 -0500 brutally nerf baileys Baileys had a very high kill rate and closing attacks probably make it worse. -------------------------------------------------------------------------------- 5627465c62 | Kate | 2022-03-06 17:27:00 +0000 Fix Ignite Poison's targeter leaking information It displayed the locations of invisible poisoned monsters - don't count them during the spell tracer. -------------------------------------------------------------------------------- e8b325be47 | Nicholas Feinberg | 2022-03-06 07:05:14 -0800 New Vv and Zenata tiles (Sastreii) Oooooh -------------------------------------------------------------------------------- f56f883ddd | Nicholas Feinberg | 2022-03-05 11:16:01 -0800 GOOE adjustments - Remove rPois (why is it there? Predates Stone Soup) - Remove from Depths - Roughly double Vaults weight, replacing wizards Try to have em place somewhere they have a chance of working. -------------------------------------------------------------------------------- b1efcce96a | Nicholas Feinberg | 2022-03-05 11:05:07 -0800 Uncomment a very important line (Yermak) Oops! -------------------------------------------------------------------------------- d32acbc352 | Nicholas Feinberg | 2022-03-05 10:57:33 -0800 Show LRD damage in monster desc (ardl) -------------------------------------------------------------------------------- 404d694432 | Nicholas Feinberg | 2022-03-05 10:49:50 -0800 Unrand tweaks - Glaive of the Guard: ench +8 -> +5. Ludicrously strong. - Damnation: 3d14 -> 2d14. Compensation for ammo removal. (Funny alternative: drain on fire...? Probably better not.) - Gyre & Gimble: ench +7 -> +12. Make it more competitive with non-unrand short blades. -------------------------------------------------------------------------------- d12d1d25ed | Nicholas Feinberg | 2022-03-05 10:46:01 -0800 Swap radroaches and meliai in spider Latter seem more threatening in practice. -------------------------------------------------------------------------------- f2a2391c1e | Nicholas Feinberg | 2022-03-05 10:44:31 -0800 Reduce meliai Spider gen Too rude. -------------------------------------------------------------------------------- 7e222a1f62 | Nicholas Feinberg | 2022-03-05 10:39:53 -0800 Reduce merfolk net gen (meowsim) To reduce "chain netting" of the player & general overabundance of nets in Shoals, drop from a 1/4 to 1/8 chance of any given merfolk spawning in with a throwing net. Average drops from 8.4 to 4.5 nets per Shoals. -------------------------------------------------------------------------------- d469af4107 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Implement closing attacks An experimental way to discourage long-distance luring or so-called 'pillar dancing', which tends to be rather repetitive and not very fun. Gives monsters a 1/3 chance to get a free attack when the player moves away from them. This only costs energy for enemies that attack slowly, like ogres and juggernauts. Wu Jian martial attacks & rampaging give immunity, and monsters that don't move fast enough to follow you can't attack. This should have a minimal impact on most normal fights, and even allow repositioning across a reasonable distance with adjacent enemies. -------------------------------------------------------------------------------- 7d8c13d22b | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Revert "Re-randomize energy temporarily" Obsoleted by closing attacks. This reverts commit 333b8329f1cbc402d63d599db9b7d6ba7397d29b. -------------------------------------------------------------------------------- a581b86abd | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Don't recommend pillar dancing Fie! -------------------------------------------------------------------------------- eff9672185 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Improve characters' starting kits (Hellmonk) One of the most interesting and exciting decisions in Dungeon Crawl is when and where to use your consumable items. In the very early game, characters may not yet have any consumables, which diminishes the tactical aspect of the game. So, let's try to give most characters some options which, if used wisely, can help them with a tough situation. - All 'mages' ('pure casters') start with a potion of magic. - Gladiators get a throwing weapon; javelin, large rock or boomerangs. - Monks get a potion of ambrosia. (See, it's divine.) - Hunters get a scroll of immo. - Brigands get an additional poisoned & curare dart. - Artificers trade their xom piece for nine charges of iceblast. - Wanderers get an additional random potion or scroll. - Delvers get nothing, for now, since I'm already pretty happy with how they play. They're a challenge anyway, really. :) - Berserkers and Cinder Acolytes likewise get nothing. They already have perfectly good early game buttons. - Abyssal Knights start at 60 piety (just over 2*) instead of 38 (just over 1*). This should allow them to use Bend Space if needed. (I think they're still quite weak.) - Chaos Knights get Artificer's xom chesspiece. - Transmuters get a potion of lignification, which should work well with their unarmed combat focus. It's also very thematic. - Warpers get more boomerangs of dispersal. - Arkane Markspersons get a scroll of vulnerability. - Enchanters get another potion of invisibility. - Fighters are unchanged. This should also be a nice compensation for various recent changes that increased early game difficulty. -------------------------------------------------------------------------------- 6e15ea0a97 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Weaken early spawns somewhat Take top killers and make em a bit less common. (Ogres, centaurs, water moccassins, 2hos, and hydras.) Also move Harold a bit deeper. Lad is a terror. -------------------------------------------------------------------------------- 614883fcd9 | Nicholas Feinberg | 2022-03-05 10:06:57 -0800 Make ogres attack more slowly To make their gimmick more noticeable and easier to reason about, make em swing at 1.5 aut/per instead of 1.3. Buff damage slightly, but not enough to fully compensate (ignoring AC). Change 2HOs, ogre mages, Erolcha, thunderhulks and Lodul to match. Considered including ettins too, but it might be a bit much... -------------------------------------------------------------------------------- 68b12284db | Edgar A. Bering IV | 2022-03-05 15:37:22 +0200 docs: update CREDITS.txt -------------------------------------------------------------------------------- 24134d049f | Perry Fraser | 2022-03-05 15:22:12 +0200 fix: make color tags render in MessageRegion [ Closes #2302. ] -------------------------------------------------------------------------------- 80730f7218 | Kate | 2022-03-04 22:09:13 +0000 Improve wording in ranged weapon descriptions -------------------------------------------------------------------------------- 811e9ec5e5 | Kate | 2022-03-04 22:09:13 +0000 Reduce the amount of wand charges in a shop The gimmick of the vault is overcharged wands, but guaranteeing the maximum number of charges is already a significant amount compared to normal generation, so giving a 66% bonus on top of that was excessive. Reduce it to 25%, and slightly reduce the prices. -------------------------------------------------------------------------------- cad78a6a97 | Aliscans | 2022-03-04 22:32:03 +0200 feat: don't highlight Vehumet offers if you also have book learning. This changes the meaning of "blue spell at the top of the list" from "spell Vehumet is offering you" to "spell which is only available because Vehumet is offering it to you". Vehumet can withdraw the offer, but you cannot lose the book. This change doesn't affect the religion screen. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 3d610745aa | Nicholas Feinberg | 2022-03-04 11:33:08 -0800 Add mon-death asserts Try to hunt down an odd rare crash. -------------------------------------------------------------------------------- 0cb962c1f0 | Antanishin, Ernest | 2022-03-04 19:58:56 +0200 feat: add tile_sidebar_pixels option The option allows one to resize inventory and spells icons in local tiles. It works in the same way as tile_cell_pixels for the dungeon tiles. [ Committer's note: Closes #2147, renamed option. ] -------------------------------------------------------------------------------- e5966c3f1e | Nicholas Feinberg | 2022-03-04 06:57:57 -0800 Tweak Sheza's Dance cast messages (SpicyCebolla) -------------------------------------------------------------------------------- 1a685ed5de | Edgar A. Bering IV | 2022-03-04 16:56:40 +0200 feat: distinguish drain levels in monster list (Aliscans) Closes #2411 -------------------------------------------------------------------------------- 85c4641d08 | Aliscans | 2022-03-04 16:08:38 +0200 feat: add annotations for distracted monsters Most of the reasons for a monster_info having MB_DISTRACTED give a description when the monster is selected on the level map, but not all. This creates two flags to fill in the gap. Monsters which you can see, but which can't see you because of invisibility, are described as "can't see you" in the examine surroundings command and monster list summary. Monsters which are distracted (possibly because they are attacking a summoned monster rather than you) ar described as "not watching you" or as "distracted". Co-authored-by: Aliscans -------------------------------------------------------------------------------- 602b31c20e | Nicholas Feinberg | 2022-03-03 20:06:52 -0800 Revise new uniques I'm quite happy with how Amaemon is doing post-nerf, but the others don't seem to be all there yet. Let's adjust. - Lodul: +8 avg mhp (62 -> 70) - Parghit: +large rocks, +damage (50/40/40; was 40/35/35). - Josephina: +HD (15 -> 18), +damage (10 -> 27), +HP (130 -> 150), +cast frequency (Seracfall 24 -> 36), +flash freeze - Vv: +damage (27/27 -> 45/45), +HD (21 -> 23), +HP (210 -> 270), +Will (120 -> 140), +25% cast frequency - Zenata: -HD (18 -> 15), -HP (240 -> 180), move from Depths/Zot to Elf/Vaults/Crypt, haste dancing weapons on cast. Also fix the Sheza's Dance casting message. -------------------------------------------------------------------------------- 4b928d7a4c | Nicholas Feinberg | 2022-03-03 19:49:42 -0800 New unique tiles (Sastreii) Amaemon, Josephina, and Parghit. Also properly display weapons for the former two - I initially forgot to have them show held weapons. -------------------------------------------------------------------------------- 20d21d4356 | Edgar A. Bering IV | 2022-03-03 23:35:32 +0200 lint: checkwhite -------------------------------------------------------------------------------- 645c86315e | Edgar A. Bering IV | 2022-03-03 23:15:23 +0200 vaults: fix a typo -------------------------------------------------------------------------------- dd60b7245b | RojjaCebolla | 2022-03-03 23:01:03 +0200 vaults: two arrivals by spicyCebolla spicycebolla_arrival_teleporter_tutorial Teleporters generally only show up in dangerous scenarios; this puts a pair of teleporters into an arrival vault for people to play with. These can also be used to juke gnolls and panlords, in times of need. (Inspired by the "throwing tutorial" key holder vault in Brogue, which shows up early and often in dungeon generation, helpiing the player learn that items can be thrown to trigger traps from a distance.) spicycebolla_arrival_xxxplode Minmay style. [ Committer's note: cleaned up some des, moved organization to small, fixed a teleport closet. Closes #2458 ] -------------------------------------------------------------------------------- 0f8c3457c7 | DreamDust | 2022-03-03 22:28:46 +0200 vaults: minivaults by DreamDust dreamdust_wishing_well Mini vault featuring a wishing well with some gold sprinkled around it. There's a small chance of a scroll of acquirement generating. Partially inspired by Nethack, + some nostalgia for when we used to be able to quaff from magic fountains in Crawl. [ Committer's note: simplified the terrain, the effect will be a bit more subtle but that's fine. ] dreamdust_mushroom_princess Just a simple vault featuring a princess statue surrounded by mushrooms. dreamdust_princess_bridge A bridge over a pond and a little courtyard area off to the side. dreamdust_princess_corridor A decorative corridor with three variations: summer, fall, and abyssal. [ Committer's note: also simplify some feature renames in a previous DreamDust vault, don't want to go overboard with these. All vaults edited based on review by hellmonk. Closes #2135 ] -------------------------------------------------------------------------------- 12ad11c1a6 | DreamDust | 2022-03-03 22:28:46 +0200 vaults: a DreamDust overflow temple A fancy temple dedicated to the three good gods. [ Committer's note: converted to an overflow temple ] -------------------------------------------------------------------------------- e8bc28a0cf | DreamDust | 2022-03-03 22:27:54 +0200 vaults: float vaults by DreamDust dreamdust_dug_too_deep The dwarves dug a little too deep and unearthed... a Balrug! Even a mighty dwarf hero (with a potentially good weapon to loot!) fell in battle to the demon. RIP. Maybe this is why we don't see deep dwarves much anymore. Hmmmm... The idea behind this vault is to place a single Balrug early enough that it's a serious (but not unmanageable) threat. I added a downhatch close by if players need to escape in a hurry. There are also warning signs in advance (all the dwarf corpses and the suspicious volcanic floor tiles outside the Balrug room). [ Committer's note: Added a runed door for the balrug, adjusted transparency, traded volcanic floor for blood. ] dreamdust_wu_jian_sword_trials A Wu Jian-themed vault. Challenge three increasingly powerful sword-wielders for their increasingly good swords. [ Committer's note: Adjusted depth range, added monsters to the earlier trial, trimmed arenas, added transperency. ] dreamdust_merry_men Inspired by Robin Hood and his band of merry men. Features a forest with a bunch of archers and a good bow and aides to banditry to loot in the center. [ Committer's note: Adjusted layout to prevent teleport closets, monster counts, loot. ] dreamdust_tengu_aerie A large nest of tengus. They keep their shiny loot in the center... along with their fledglings (wait, are we the baddies??). [ Committer's note: moved the crystal walls to the middle, put the rock wall on the outside (so the reavers can bolt bounce their omnibolts), and thinned the monster density. ] dreamdust_hydra_shepherd A shepherd is raising a flock (?) of hydras down in the Depths! Some players might regret abandoning their flaming weapons after finishing Lair/Swamp, haha. [ Committer's note: upgraded the cyclops to a stone giant, added a small chance for a really high head count. ] dreamdust_elfheim The home of Duvessa and Dowan. The more-practical Duvessa has training dummies in her room, while the vain Dowan has a large mirror to admire himself with. [ Committer's note: cut down on custom tiling/colouring a bit. ] -------------------------------------------------------------------------------- 7b655af5e2 | DreamDust | 2022-03-03 20:48:24 +0200 vaults: arrivals by DreamDust dreamdust_arrival_beginning_and_end Arrival vault that resembles the central orb chamber in Zot:5. Thought it would be cute (especially for new players) to realize it at the end of the orb run. dreamdust_arrival_sigmund_warning Beware the dreaded Sigmund, slayer of noobs! (and everyone else tbh, lol) -------------------------------------------------------------------------------- 0dae59b3db | DreamDust | 2022-03-01 21:11:17 +0200 Seven new vaults [ Committer's note: Edited accounting for gammafunk's feedback, thinned monster densities in a few places. Closes #2184. ] dreamdust_cave_troll Just a deep troll tucked away in a little cave. Using orient:northwest because I like how it looks when the level generator makes a path to the vault. Feels like a nice, cozy cave deep in the rock. dreamdust_gnoll_farm Just some simple gnoll farmers trying to make an honest living. dreamdust_gnoll_shepherd A cute little gnoll shepherd and his flock of dream sheep (or herd of yaks). dreamdust_wasp_nest A wasp/hornet nest! dreamdust_looks_like_rain A portal to the elemental plane of air briefly opened and spat out some clouds and monsters! dreamdust_zin_vs_xom Zin and Xom are having a skirmish in Zot. I think it's a nice contrast between Order and Chaos. dreamdust_under_siege The general idea is that you have a chance of going down some stairs and finding yourself in a little fortress under siege (usually by a swarm of undead). -------------------------------------------------------------------------------- 1125b37a9b | Nicholas Feinberg | 2022-02-28 17:35:56 -0800 Describe eruption damage in xv (ardl) This is a hack; the correct fix would be to make a zap. -------------------------------------------------------------------------------- 162f3ce599 | Nicholas Feinberg | 2022-02-28 17:21:31 -0800 Fix @ display for launchers with armour Broken by 9445043ebcbc046d65807a91ab1288053957184b. Closes #2450. -------------------------------------------------------------------------------- 945431f764 | Implojin | 2022-02-27 21:53:51 +0200 feat: add a new randart name of @god_name@'s Attic -------------------------------------------------------------------------------- 230a35465e | RojjaCebolla | 2022-02-27 21:52:43 +0200 text: new adjective and verbs for ran dart names, plus usage * Teach Trog adjectives and verbs example item names now possible: the Foo... (general) of Hungering Death of the Rescuing Gods of the Glowing God of Uskayaw, Screaming (trog) of Glamorous Victory of the Hopping Regicide of Barnacled Death (oka) of Okawaru, Healing (xom) "Xom, Gnashing and Baking" of Healing Xom -------------------------------------------------------------------------------- ce1ebfb2c9 | robertxgray | 2022-02-27 14:45:29 -0500 Update typed-ast to 1.4.3 This is required to run the server on Python 3.10+ -------------------------------------------------------------------------------- cf85d113b3 | Diego Essaya | 2022-02-27 14:40:39 -0500 fix: click + key modifier detection in tiles Fixes #898 -------------------------------------------------------------------------------- 9cf36f4b4d | RojjaCebolla | 2022-02-27 20:20:21 +0200 feat: remove identification scrolls from troves In the past year, identification scrolls have become increasingly less important as gear now is automatically identified, and never cursed. By the time players get into a trove, they generally will have no further use for scrolls of identify, so those should be removed from the trove.good_scroll table. In their place, we now have immolation scrolls, which are a fun tool for safely fighting large armies, and torment scrolls, so that these troves can be just as fun for demons/undead as they are for other species. These two additions are equally as common as scrolls of holy word. Finally, a small chance of the very powerful summon scroll. -------------------------------------------------------------------------------- ba8e22afda | Nicholas Feinberg | 2022-02-27 10:08:25 -0800 Move mu necro enhancers earlier XL 13/26 is too late to be relevant. Shift to XL 3/13 instead. -------------------------------------------------------------------------------- 54f80b8ed5 | Elliott Bernstein | 2022-02-27 20:08:00 +0200 fix: when felid has 2 lives, show actual died-now xp needed for next life Co-authored-by: Elliott Bernstein -------------------------------------------------------------------------------- b3188875b7 | Nicholas Feinberg | 2022-02-27 08:25:02 -0800 Adjust wight/necrophage XP They're pretty similar threats. Move necrophage to about 80 XP (from about 120, higher than a black bear or ogre) and bump wights to about 75 XP (from 60ish). -------------------------------------------------------------------------------- 7cd8c5c774 | Nicholas Feinberg | 2022-02-27 08:17:44 -0800 Tweak Phial of Floods description Clarify air breathing requirement. -------------------------------------------------------------------------------- 5b244fca1f | advil | 2022-02-26 09:48:58 -0500 fix: handle undefined item slots with action_panel_glyphs=true This can specifically cause a crash when dropping an artefact and then picking up something in the same slot, where it tries to get a glyph on an undefined item_def and artefact-related properties are in an inconsistent state. Possibly a pseudo-bug that flags are not reset for this case, or that get_item_glyph tries to do something for this case? (I think otherwise, this call was mostly was stable.) Resolves #2434 -------------------------------------------------------------------------------- ceb61267dd | advil | 2022-02-25 17:02:44 -0500 fix: improve some randart name grammar seems to need a determiner or noun. (I'm still not sure this is the most coherent randart name I've ever seen.) -------------------------------------------------------------------------------- 51b9c0fbd8 | gammafunk | 2022-02-25 09:59:46 -0600 fix: Remove a ghost vault restriction For ebering_ghost_funeral_grove, remove the restriction preventing Swamp:$ placement, since it no longer uses trees for its outer border. -------------------------------------------------------------------------------- 0a02b1cf4f | Nicholas Feinberg | 2022-02-24 17:15:28 -0800 Don't spawn Amaemon on D:7 Too rude. -------------------------------------------------------------------------------- f2abdc9806 | Nicholas Feinberg | 2022-02-24 13:48:19 -0800 Tweak frog hop targeter Don't show known invalid destinations as possible (occupied by actors, such as the player, or dangerous terrain). -------------------------------------------------------------------------------- ce79c09f71 | Nicholas Feinberg | 2022-02-24 08:03:50 -0800 Remove D skeletons too Missed em in the last commit, whoops. -------------------------------------------------------------------------------- 0c351c38d6 | Nicholas Feinberg | 2022-02-24 07:31:53 -0800 Bump down Amaeemon's HP/HD He was doing a little more direct damage than I wanted. HP from 92.5 to 87.5, HD from 10 to 7 (reducing accuracy and poison damage). -------------------------------------------------------------------------------- 29cdfe4e04 | Nicholas Feinberg | 2022-02-24 07:23:26 -0800 Remove most D zombies (hellmonk) Zombies aren't very exciting enemies. They're like other, existing monsters, except they don't have any cool gimmicks or definining features that those monsters have, and they make a bunch of nice items (poison darts/spells, ice magic, necro magic) useless. They're also not great for UI - it's harder to tell at a glance what you're fighting, or how tough it is. Let's cut em from normal D spawns. This is an early-game TSO nerf, but probably an overall buff to players. -------------------------------------------------------------------------------- 17f627cfee | Nicholas Feinberg | 2022-02-23 18:59:54 -0800 Fix missing regen space (ardl) -------------------------------------------------------------------------------- c45ea81df0 | nicolae-carpathia | 2022-02-23 21:42:27 -0500 Fix an error with a generic overflow vault that is NOT how the shuffle command works, did i write this at two in the morning, damn -------------------------------------------------------------------------------- 748a509809 | advil | 2022-02-23 18:55:44 -0500 fix: sanity check item quantity surely it is safe to add such a simple sanity check to low level item code, right? -------------------------------------------------------------------------------- 18cb72b20d | advil | 2022-02-23 18:33:38 -0500 fix: more info on invalid item tags.cc crashes The error for item_def::is_valid() had messaging, but it uses dprfs so wasn't visible in crashlogs. Since the game is going to crash anyways, let's actually print out these error messages. I've also reworded a bunch of them. -------------------------------------------------------------------------------- 9445043ebc | Nicholas Feinberg | 2022-02-23 09:27:28 -0800 Don't slow clumsy bashes with armour When attacking with launchers. -------------------------------------------------------------------------------- 989f1d9ccb | Nicholas Feinberg | 2022-02-23 08:33:23 -0800 Bring back Summon Scorpions tile Forgot this when adding Amaemon, whoops! -------------------------------------------------------------------------------- 7b0a884809 | advil | 2022-02-23 09:05:10 -0500 fix: tweak wording in a rampage prompt Rampaging is in general fine for wielded_weapon_check; it's only if your rampaging would trigger an attack that this verb is used in messaging. -------------------------------------------------------------------------------- f982a884d8 | Nicholas Feinberg | 2022-02-22 22:04:18 -0800 Remove anguish on leaving levels Maybe the cause of the mystery anguish bug..? Also, I hate this switch quite a lot. -------------------------------------------------------------------------------- 4a66f2e2b5 | Nicholas Feinberg | 2022-02-22 20:59:03 -0800 Allow LRDing Vvurtles (Nomi) Oversight! -------------------------------------------------------------------------------- 235afadefe | Nicholas Feinberg | 2022-02-22 18:54:55 -0800 Update job recs for og/tr (Lici) Now that you can't start with large rocks as Hu or AM, don't recommend them to trolls or ogres. AE background rec for ogre is semi-arbitrary. Seemed to have a high recent winrate for not excessively dubious reasons (wasn't a nem choice, wasn't one player streaking, etc). Seems reasonable for apts and so on (bouncing less dangerous when you have high HP). Might add Gl as a rec if a-good-start lands. -------------------------------------------------------------------------------- 8e21839460 | Nicholas Feinberg | 2022-02-22 18:42:21 -0800 Don't mention monster ammo When cursoring over a monster, and printing something like Here: a centaur, wielding a +0 shortbow, quivering arrows Cut the bit about 'quivering arrows'. Meaningless verbiage :) -------------------------------------------------------------------------------- 7cd6805d08 | Nicholas Feinberg | 2022-02-22 18:35:08 -0800 Fix: Don't slow throws with armour (Yermak, 12688) Oops! -------------------------------------------------------------------------------- 2e1b08cf00 | advil | 2022-02-22 21:25:47 -0500 feat: readd quivering/firing ranged weapons It's proven somewhat confusing to many players that the relevant UI elements no longer worked with launchers after ammo removal. This commit restores the ability to quiver launchers, allowing them (if quivered) to be triggered on default keybinds using `f` and `p`, as well as `v` and tab regardless of what is quivered. I've restored some corresponding options as well. It's entirely possible their defaults should be different than they used to be, if these are better viewed as compatibility options now. But for now, launchers are in the fire order (this never got removed), and `launcher_autoquiver` defaults to true. -------------------------------------------------------------------------------- 015645fbfe | advil | 2022-02-22 21:25:47 -0500 feat: add an explicit toss submenu Tossing is currently in a weird state where as more and more things become quiverable, they have two types of actions that could apply, making them harder to figure out how to toss. This is all sort of still in a mess for other menus, but this (quite basic) submenu is guaranteed to always use `ammo_to_action` and therefore only throw. -------------------------------------------------------------------------------- c7997b95f3 | Nicholas Feinberg | 2022-02-22 12:05:53 -0800 Launcher reform: update sling descriptions RIP rock v sling bullet dynamic -------------------------------------------------------------------------------- 542faf17db | Nicholas Feinberg | 2022-02-22 08:10:15 -0800 Fix a Jiyva jelly crash (?) If the player is damaged by a monster that's already dead (eg a guardian golem's inner flame), don't try to point jellies in its direction. I couldn't repro the crash, so not sure about this fix. -------------------------------------------------------------------------------- 28b64116f0 | Nicholas Feinberg | 2022-02-22 07:29:36 -0800 Roll-back post-AEVP delay launcher buffs When adding AEVP to launcher delay in af6a381e141a, I'd assumed that would be a considerable nerf that called for compensation. With the change to use dex for launcher damage shortly after, however, that no longer seems called for. Revert to more or less the weapon stats from a852ce8369264a3a4759b99df0bbba7645a78c97. -------------------------------------------------------------------------------- e3fb4bd5a4 | Nicholas Feinberg | 2022-02-21 19:05:10 -0800 Re-add launcher to-hit display (pdpol) This is a bit of a hack. Closes #2438. -------------------------------------------------------------------------------- 79605ca0cb | advil | 2022-02-21 19:50:11 -0500 fix: hide account hold div on force-logout Unintentionally still displayed after an account gets force logged out when an account hold is escalated to a ban. -------------------------------------------------------------------------------- 36e498a9cf | advil | 2022-02-21 19:50:11 -0500 feat: improve account-related logging This more consistently shows the IP address, and puts a substring that is very easily matched for scripts that want to pull out account-related logging from the main log. (This only will reliably log things that happen while a player is connected, so releasing a hold or removing a ban still won't show up here.) -------------------------------------------------------------------------------- 6e3aafee17 | Nicholas Feinberg | 2022-02-21 15:00:42 -0800 Fix fix -------------------------------------------------------------------------------- a21e45360d | Nicholas Feinberg | 2022-02-21 14:58:04 -0800 Fix kaux/ckaux Broken in 4e44252f3f24252e461ee3764b93ec7b8ad007b5, 9 months ago. -------------------------------------------------------------------------------- c9553a8f79 | Nicholas Feinberg | 2022-02-21 13:03:01 -0800 Pull back slightly on SpHu (Lightli) To compensate for dex increasing ranged weapon damage, make fustibali 2-handed and 3xbows unusable for spriggans. -------------------------------------------------------------------------------- 16cad56b0c | Nicholas Feinberg | 2022-02-21 09:47:50 -0800 Maybe fix a tossing crash (ardl) -------------------------------------------------------------------------------- 299514152f | advil | 2022-02-21 12:22:16 -0500 fix: (re)allow launching from `F` Previously this was implemented via ammo, which is gone. But it seems very confusing to not have launchers selectable from this menu, which after this change became limited only to throwing. This commit is a bit of a quick hack to do this, may need some more work. This means you can't use `F` any more to toss away a wielded launcher, though this is still possible via quivering it (with `Q**`). You can still toss a non-wielded launcher from this menu. More generally, it might be good to also allow quivering newlaunchers so that they still work with `f`/`p` (especially the latter, it's confusing that CMD_AUTOFIRE no longer has a way to fire for this case), but this will not be as easy so I'm not going to get to it immediately. The division of labor for autofight/autofire introduced with quivers may need some rethinking. -------------------------------------------------------------------------------- ca6a0d2473 | advil | 2022-02-21 12:06:24 -0500 fix: reenable anonymous spectating -------------------------------------------------------------------------------- 9aa386d172 | advil | 2022-02-21 09:44:16 -0500 fix: show lobby in a stable order with account holds I only had tested this in a python version where all dicts are ordered. Also, remove some traces of a pre-py27 compatibility shim for OrderedDict. (If anyone is still running this on py26, I don't know what to say. But probably not, because webtiles.load_games already dropped this.) -------------------------------------------------------------------------------- a23d9638d5 | Nicholas Feinberg | 2022-02-20 19:04:59 -0800 Give Vv a quote (ebering) There's probably better quotes from The Fifth Season - this was the first reasonable one I found. -------------------------------------------------------------------------------- 6546220326 | Nicholas Feinberg | 2022-02-20 19:04:48 -0800 Give Amaemon a signature weapon Don't drop that whip! -------------------------------------------------------------------------------- c2a82b186b | Nicholas Feinberg | 2022-02-20 15:47:36 -0800 Re-remove HINT_SEEN_RANDART Missed a few spots in 4be7dbf86b841721fccbcb6690ed74273671146d . -------------------------------------------------------------------------------- 2ef5e920f0 | Nicholas Feinberg | 2022-02-20 14:32:13 -0800 Remove Amaemon's corpse Every person is a whole world unto himself... but perhaps not a whole species. -------------------------------------------------------------------------------- d601ab35b5 | Nicholas Feinberg | 2022-02-20 13:30:48 -0800 Revert "chore: add a trunk reminder for the 0.28 tournament" This reverts commit 03a7b78be7a97b61e3ccfaa102cec36b0ca111bc. -------------------------------------------------------------------------------- 599418656c | Nicholas Feinberg | 2022-02-20 13:28:26 -0800 Ru melee redirection refactoring -------------------------------------------------------------------------------- 65f304602f | Nicholas Feinberg | 2022-02-20 12:35:52 -0800 Unbrace files.cc -------------------------------------------------------------------------------- 9fbeeb3dcf | Nicholas Feinberg | 2022-02-20 12:33:39 -0800 More mut description tweaks Cut more mut descriptions that are (IMO) non-actionable, and add the overlooked MUT_FANGS to dataified descriptions. -------------------------------------------------------------------------------- ca93a6e943 | Nicholas Feinberg | 2022-02-20 12:33:39 -0800 Trim Jiyva mut descriptions I don't think that the details here are helpful to players. You can't really control these muts, so what do detailed numbers get you? How will you play differently? It doesn't seem like something that will meaningfully affect play. -------------------------------------------------------------------------------- b9ea505e61 | Nicholas Feinberg | 2022-02-20 12:33:39 -0800 Tweak Ru eye desc -------------------------------------------------------------------------------- 507d7b0529 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Programmatic aux descriptions -------------------------------------------------------------------------------- b4860018a3 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Dataify aux attack trigger chances -------------------------------------------------------------------------------- adaf126bc6 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Fancy Lua horns description -------------------------------------------------------------------------------- bb7b57aa70 | Nicholas Feinberg | 2022-02-20 12:33:36 -0800 Beak -------------------------------------------------------------------------------- 0ef5763bac | advil | 2022-02-20 12:33:36 -0800 docs: attempt to despoiler various aux/retaliation muts I say "attempt" because this stuff is complicated enough that there may be all sorts of mistakes in here still, or even some random rolls I've missed entirely. In many cases I have chosen to give slightly round numbers (e.g. 40% rather than 38%), maybe these should be made exact. Also, this is a lot of numbers, but I think we have become pro-numbers enough for this sort of change. This commit began in response to https://www.reddit.com/r/dcss/comments/svj867/demonic_touch_utterly_useless/ where it became apparent that how this particular mut worked was completely opaque to players (especially since its behavior is pretty atypical), but once I started doing this it became clear to me that basically all of these would be better with more information. I've tried to get all of the direct combat effects in this change. Some of the Ru mutations that are responsive (e.g. no potion heal) could maybe use similar work. -------------------------------------------------------------------------------- c3e01e4e4d | Nicholas Feinberg | 2022-02-20 12:29:54 -0800 Fix Josephina vault (geekosaur) ??oops -------------------------------------------------------------------------------- fffab11c1d | Nicholas Feinberg | 2022-02-20 12:27:44 -0800 Add item descriptions to monster So no one ever has to maintain the ldb book entries ever again. This is quite ugly but mostly works? -------------------------------------------------------------------------------- cd8f6311e7 | Nicholas Feinberg | 2022-02-20 12:27:21 -0800 dgn_place_item refactoring -------------------------------------------------------------------------------- 96d55e26a3 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Checkwhite hints changes -------------------------------------------------------------------------------- 5e4a951760 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Add a malevolence (explore trap) hint -------------------------------------------------------------------------------- 4be7dbf86b | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 More hints updates Remove references to allies stealing XP (now only true for Beogh), and rewrite HINT_YOU_RESIST to be a bit clearer (maybe!). Remove HINT_SEEN_RANDART (would generally only show up once a randart was already IDed) and tweak the description of Spellcasting skill. Don't bother noting demon tiers, and don't claim that statues are notable or hide 'special areas'. -------------------------------------------------------------------------------- 0c76a2f6e3 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Remove HINT_FLEEING_MONSTER Mostly obsolete since 5cea4aff0001 (2012), 13c00676f0 and f1aa33a6750 (2013), and completely obsolete after b8068419c757 (2015). -------------------------------------------------------------------------------- fc0c1e2a9a | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Fixup HINT_EXCOMMUNICATE Don't claim you get wrath for abandoning a good god (or Ru) and not worshipping a new god. Also, dedent. -------------------------------------------------------------------------------- 491e7b286d | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Update HINT_CONVERT -------------------------------------------------------------------------------- bc0daef7cc | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Cleanup NEW_ABILITY_GOD -------------------------------------------------------------------------------- 477d20c3ff | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Misc hints cleanup -------------------------------------------------------------------------------- ca3a83724e | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Simplify wand use advice logic -------------------------------------------------------------------------------- 566ef67269 | Nicholas Feinberg | 2022-02-20 12:26:55 -0800 Remove HINT_SEEN_CARRION Irrelevant in a post-butchering world. -------------------------------------------------------------------------------- d8e2eab272 | advil | 2022-02-20 15:24:02 -0500 refactor: clean up `chr` chunk loading This was sort of impressively convoluted and bad: the tag code read chr chunk data directly into `you`, and then a `player_save_info` object was constructed from that. In most cases, this was wrapped in code that made a copy of `you` and then restored it after getting the info object. There were also all sorts of inconsistencies in what data was stored in this object. I'm guessing no one really wanted to mess with this old code where the cost of breaking things is high, but I'm going to give it a short here. This commit: * Cleans up `player_save_info` to exactly match the data in the `chr` chunk, aside from version info (and doll info used for tiles main menus). Add a few fields, remove one (`experience`) that seems to be completely unused. * Add a constructor to `player_save_info` to handle default values a bit more cleanly * Rewrite the tag code to read directly to a player_save_info object, and only copy data into `you` on demand * more comments, code reordering to match chunk data order, slightly better error messages in a few cases -------------------------------------------------------------------------------- 57cb919b73 | advil | 2022-02-20 15:24:02 -0500 fix: simplify and fix setup for save info CLOs `-save-version` was broken because it didn't correctly reset paths. In addition, I'm pretty sure that these don't need a full options reset. (Possibly I'm wrong, we'll see -- if there's mysterious uninitialized memory crashes, it'll probably just break the webtiles save viewer again and nothing else.) -------------------------------------------------------------------------------- 8aa3a5f11e | advil | 2022-02-20 15:24:02 -0500 fix: webtiles save info collection This broke around b939be14790 but I hadn't sat down to figure out what happened until now. (Amazed that there was never an actual issue about this that I'm aware of!) It may have been sort of a blessing in disguise as at least on CAO this callback chain has become pretty heavy and often times out. We'll see... -------------------------------------------------------------------------------- e9b396fb19 | Nicholas Feinberg | 2022-02-20 12:22:37 -0800 Allow looking up unrands in ?/I This was surprisingly annoying! -------------------------------------------------------------------------------- 8338fcb62e | Nicholas Feinberg | 2022-02-20 12:21:12 -0800 Don't let nymphs/elios port to unseen foes (dinky) That is, if you're invisible, don't let water nymphs waterport or eleionomae treeport to you. Also, dedent the water nymph logic. -------------------------------------------------------------------------------- 15338bc10e | Nicholas Feinberg | 2022-02-20 12:20:01 -0800 Tweak Merfolk weapon aptitudes (Hellmonk) Trade a point of Polearms for a point of Long Blades. At +3 polearms, Merfolk will still be extremely strong polearms users, but it'd be nice for them to occasionally have some reason to do something else. (Especially with impending changes to long blades.) -------------------------------------------------------------------------------- 32946d4e34 | Nicholas Feinberg | 2022-02-20 12:19:30 -0800 Make Jiyva less verbal Jiyva doesn't seem like much of a talker. Possible that J penance should be rethought regardless, but for now... -------------------------------------------------------------------------------- 68506e6fbd | Nicholas Feinberg | 2022-02-20 12:19:07 -0800 Disable the MCC targeter by default It seemed to mostly confuse players by leading them to think that the spell was targeted, since they could move the cursor around while in the targeter. It's also not super useful, since whatever monster is highlighted when you start the spell may not be the eventual victim. The MCC targeter can still be seen by quivering and (f)iring the spell, or by adjusting the rcfile. -------------------------------------------------------------------------------- d9437148fb | Nicholas Feinberg | 2022-02-20 12:18:29 -0800 Slot name: armour -> body armour To avoid confusion that the Armour skill only applies to the Armour slot. -------------------------------------------------------------------------------- 67d208b9ac | Nicholas Feinberg | 2022-02-20 12:16:14 -0800 Remove most uniques from Tomb Tomb has its own thing going, and most of these guys aren't really scary by the time you get there. (<0.6% recentish killratio.) Also drop Mara and Parghit from Crypt; former for killratio reasons (0.2%) and latter for thematic ones. Parghit is a winner! He's heading for the orb! No reason for him to be in the Crypt. -------------------------------------------------------------------------------- 06d020a549 | Nicholas Feinberg | 2022-02-20 12:16:14 -0800 New unique: Zenata, Seeker of Sheza Zenata is another late-game unique (appearing in Depths, Zot &c), borrowing a bit from the Desolation of Salt and putting a twist on it. She's taken the ragged hierophants' "Resonance Strike", which is like airstrike that gets bonus damage from adjacent constructs instead of from open spaces, and uses it in conjuction with a new "Sheza's Dance" spell, which summons 2-4 dancing weapons. To encourage players to kill her, she comes with a high-tier weapon with some plusses already on it. Zenata's theme is intended to expand slightly on the Desolation lore. She entered the Dungeon to look for secrets of the old Sheza/Sargol cult, the Divine Twins that ran the Desolation of Salt before it was a desolation. The bits and pieces she found required her to replace more and more of her flesh with metal to unlock their power... but hey, upgrade! :) -------------------------------------------------------------------------------- 226d363e7e | Nicholas Feinberg | 2022-02-20 12:16:14 -0800 New unique: Vv the Exile Vv is a combination of ironbound frosthearts (Creeping Frost) and Salamander Tyrants (Eruption/Pyroclastic Surge), appearing in Depths, Zot, Crypt and Tomb. She's themed as a new species, the Stoneborn, sentient earth elementals. She also has strong defenses and AF_FIRE and AF_COLD melee. I haven't yet added any loot for her, to incentivize players to tussle with her. The XP and curiosity might be enough for now. The theme is intended to push in a different direction from uniques like Parghit and Josephina. The former expand on existing lore. Vv, by contrast, expands the world of DCSS by suggesting the existence of something greater outside the game's current bounds. -------------------------------------------------------------------------------- 375cf7ae12 | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 Fix new VISUAL monspeak entries -------------------------------------------------------------------------------- 69db86b63c | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Lodul the Thundrous Lodul is an ironbound thunderhulk who's been sent to patrol outside the Vaults, in late D. He's got a weaker version of Call Down Lightning (lower HD) and a big band of ogres and two-headed ogres to help him keep distance from the player. Defensively, he looks a lot like Erolcha. His loot is a big pile of gold. Nothing like cash to bribe players into potentially risky fights :) -------------------------------------------------------------------------------- 9cfbde7411 | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Amaemon the Diabolical Poisoner Amaemon is Crawl's first demonspawn unique, appearing in mid-D, early Lair and Orc:1. Alongside his orange demon companion, Amaemon summons scorpions (the classic returns!) and casts Concentrate Venom, upgrading his allies' poison into curare. To encourage players to try to kill him, he wields a demon whip of venom, with 1% chance of the unique Snakebite. -------------------------------------------------------------------------------- 618b504a9a | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Josephina the Ice-Lich As one more 'alt-timeline' unique, Josephina is an upgraded version of Josephine. She appears in late Vaults, Depths, Crypt, Tomb and Zot, and borrows Wendigo Seracfall (turning simulacrula into 3d33 bombs) to add to her classic Ghostly Fireball. She comes with a guaranteed randart ring of ice. I suspect a lot of the numbers here will need more fine-tuning. She might be a bit of a glass cannon at the moment, especially with the rF-, and I think the placement range is probably a bit off. -------------------------------------------------------------------------------- 141cb85572 | Nicholas Feinberg | 2022-02-20 12:16:13 -0800 New unique: Parghit the Mighty Following the example of Maggie/Margery, Parghit is an "alt-timeline" version of Pargi. Parghit appears in late Depths, Zot, Crypt and Tomb, and sports high-enchantment golden dragon scales (with a 1% chance of wearing the Dragon King) and an astonishing 27 HP regenerated per turn. He's definitely killable, but best not underestimated. I considered also giving him large rocks. It seemed rude, but I might go back to that if it seems appropriate. Credit Hellmonk for several parts of this idea. -------------------------------------------------------------------------------- 920eff52f4 | Nicholas Feinberg | 2022-02-20 12:15:54 -0800 Mark dummy species mons as NO_GEN_DERIVED Don't spawn Palentonga zombies in Crypt. They're not real monsters! -------------------------------------------------------------------------------- 1eaea45740 | Nicholas Feinberg | 2022-02-20 12:12:34 -0800 Change the Woodcutter's Axe into a battleaxe Pushing back a bit on the original design principle, make skill matter a bit more (multiplying a higher base damage & augmenting a lower base accuracy), and add another tradeoff (2-hander status). I'm not adding save compat, so anyone upgrading from an older version can have both an off-hand and the woodcutter's axe until they unequip something. Bonus! :) -------------------------------------------------------------------------------- e3029af5aa | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Make ranged weapons use dex instead of str for damage After e08ca24d97b194, strength became extremely valuable for ranged weapons. It increased damage quadratically: not just multiplying the base damage of the weapon, but also increasing attack speed while wearing armour. This isn't the end of the world, but it does seem more intuitive that dexterity should be the desirable stat for ranged weapons. So, let's make ranged weapon damage scale with dex instead of str. Str is still quite valuable for ranged characters to allow them to use heavier armour, just a bit less so. -------------------------------------------------------------------------------- 85b37ae345 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Make blades use dex instead of str (hellmonk) To differentiate long blades further from other weapon classes, make Dex increase their damage instead of Str, in exactly the same way. It would feel very weird if lbl used dex but sbl still used str, so change sbl to match as well. Possible that some sbl nerfs could be called for after this? Probably it's fine. -------------------------------------------------------------------------------- 7cd8695230 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Ammo removal: more hints updates -------------------------------------------------------------------------------- af6a381e14 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Add AEVP to ranged weapon delay Ranged characters in Crawl generally feel rather similar to melee characters. Other than dealing with ammo - which tends to be mostly busywork, rather than a meaningful or interesting set of choices - ranged characters feel like polearm users with a very very long pole. This is not great for variety, and it's also not very intuitive. A player could reasonably expect that a ranged character should look different from a melee character - Robin Hood and Legolas aren't running around in plate armour! So, let's fix that. As of this commit, AEVP is now added to missile weapon attack delay. As usual, this is reduced significantly by Str and slightly by Armour skill. Some sample numbers: - Starting human hunter in leather: +0.042 delay - Starting human hunter in plate: +0.864 delay - 30 str, 16 armour, plate: +0.253 delay - 50 str, 27 armour, plate: +0.097 delay - 50 str, 27 armour, crystal plate: +0.159 delay - 5 str, 0 armour, crystal plate: +2.645 delay - 20 str, 10 armour, swamp dragon: +0.066 delay (Delays below 0.1 are randomized with every attack. For example, an added delay of 0.042 has a 42% chance of slowing an attack by 0.1.) In compensation, ranged weapons' have gotten various buffs; most weapons have seen their base damage has been increased, and slings have seen their base delay decreased. The expectation is that players will be encouraged to choose somewhat lighter armour than they might otherwise, making ranged characters feel more different from melee. It also makes ranged weapons somewhat less attractive as a swap for melee characters. All numbers subject to change. -------------------------------------------------------------------------------- 34d9ade26b | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Update the quick-start guide for ammo removal -------------------------------------------------------------------------------- b9b4b4cd67 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Give kobolds +3 xbows As something they're better at than other races (being mechanically inclined), it's nice to accentuate that strength a little more than their former +2. Plus, it's funny to give a race that has a big obvious disadvantage for ranged combat (reduced LOS) a great apt for it - creates a different kind of experience! -------------------------------------------------------------------------------- 216ade4d86 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove an unused variable (Aliscans) -------------------------------------------------------------------------------- ed46df0f1f | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Mark launcher ammo as removed (Aliscans) -------------------------------------------------------------------------------- a852ce8369 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Play with ranged weapon stats more Following some thinking about ranged weapons, here's a new set of ammoless stats. Philosophy: - Slings are high-skill 1-handers. Hunting slings are vaguely like war axes, and fustibaluses are no longer ultra-rare but are now more like broad axes. - Bows are high-skill 2-handers. - Crossbows are lower-skill - it takes fairly little to get the hand crossbow or the arbalest to mindelay. The triple crossbow is still high-skill, but it's quite rare, so doesn't define the 'feel' of the class, much as you can't rely on finding a triple sword as a lbl user or an exec axe as an axe user. (Unless a gifting god gets involved.) If we're going to keep all these item classes, it would be great to have some more obvious and pronounced gimmicks. I suspect we'll end up merging or removing some of these at some point, but that's a larger project than I'm ready for right now. TODO: make fustibali spawn at a higher rate - right now they're about 1/5th as common as I'd like. -------------------------------------------------------------------------------- 9b9ebdfc37 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove launcher ammo from the \ menu (Aliscans) -------------------------------------------------------------------------------- a30ec57329 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove throwing weapon hunter start (Aliscans) Throwing weapons were always an odd fit for the hunter background. They aren't a primary playstyle or 'killdudes' method like ranged weapons, but they were presented in the same way. Now that hunter's lost its short sword, it's an especially odd fit. Let's cut the throwing start for now. I think in the near future we might bring back additional throwing ammo as a supplement to another background, either Gladiator or Brigand (or perhaps both?). -------------------------------------------------------------------------------- cb38ff9839 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove webtiles launcher quiver -------------------------------------------------------------------------------- d562ef3a11 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove the short sword from the hunter start No longer needed. -------------------------------------------------------------------------------- 39307501d7 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Adjust ranged weapon stats post-ammo Mostly reduce numbers across the board, since players are no longer constrained by ammo. Slings are a little sad about the loss of sling bullets and so don't get hit quite as hard as the others. I playtested these and kept turning numbers downward until just mashing o-tab on a HuHu would get me killed somewhere in early-mid D. (With no numerical tweaks, it was pretty trivial to reach Lair, and probably to just win.) -------------------------------------------------------------------------------- 3bbc7b7260 | Nicholas Feinberg | 2022-02-20 12:05:40 -0800 Remove ammo from vaults, sprints & the tutorial -------------------------------------------------------------------------------- 13dfb44323 | Nicholas Feinberg | 2022-02-20 12:05:38 -0800 Adjust item gen for ammo removal Drop non-vault loot proportionate to the weight of old arrows, bolts, etc. Counting vaults, overall game loot will be slightly higher - maybe about 2%? -------------------------------------------------------------------------------- 4fc27e4f60 | Nicholas Feinberg | 2022-02-20 12:04:49 -0800 Allow firing with v Since launchers no longer use ammo, there's no reason for them to interact with the quiver system. Instead, make them fire using 'v', like polearms or other melee weapons. Tab also works. If people request, maybe there could be an option to have 'f' always fire a held ranged weapon, rather than using the quiver. -------------------------------------------------------------------------------- a8e9c987b8 | Nicholas Feinberg | 2022-02-20 12:04:47 -0800 Remove launcher ammo Ranged weapons in Crawl have long contained a painful tension. On the one hand, their design suggests that the player is expected to use them as their primary means of killing enemies. They have dedicated weapon skills, imposing a substantial strategic cost to reach mindelay with any given type, and there's a tactical cost to switching between them and melee weapons. On the other hand, the limited ammo supply suggests the player is expected to conserve ammo in some way. The only real way to do this is to use other means (i.e. melee weapons) to kill some enemies. However, there's still more than enough ammo to kill any really threatening enemy, and later on there tends to be more than enough ammo to make its limitations meaningless, especially for followers of Okawaru. Thus, ammo currently provides no really interesting tactical or strategic decisions, just busywork. It seems that ammo should either be made much more restrictive, so that the player is rewarded for engaging with it, or removed. If we made ammo much scarcer, such that players could only kill a few very dangerous enemies with it, players would generally be forced to train something else as their primary 'killdudes' skill, and use ranged combat as a supplement. This would end up looking quite a lot like Throwing or Evocations, but with a worse UI, since players would need to switch weapons rather than just pressing 'F' or 'V'. This seems uncompelling. As such, let's cut ammo entirely. Monsters *already* had infinite ammo, and players can follow suit. Subsequent commits will deal with the small print. -------------------------------------------------------------------------------- d09b832af6 | Nicholas Feinberg | 2022-02-20 11:48:37 -0800 Remove launcher ammo acquirement This will be meaningless very soon. (See following commits.) -------------------------------------------------------------------------------- 8efb068a30 | advil | 2022-02-19 14:01:43 -0500 feat: indicate stateful ?tele behavior in ItemUseMenu The stateful behavior of scrolls of teleportation is kind of easy to forget about, and also unique (I think) among consumables. Because of this, it seems helpful to indicate if it will cancel an existing teleport explicitly. I've done this in the `r` menu, another place this could be done is in the item description itself. -------------------------------------------------------------------------------- ba4477c8fd | Nicholas Feinberg | 2022-02-19 07:47:14 -0800 Add Ignis to db_lint (SpicyCebolla) -------------------------------------------------------------------------------- 4040846114 | Nicholas Feinberg | 2022-02-18 21:46:58 -0800 Fix Throatcutter player tile (Gwynnette) -------------------------------------------------------------------------------- 06d03a830b | Nicholas Feinberg | 2022-02-18 12:21:35 -0800 Remove a spurious tracer check Didn't quite think that one out. -------------------------------------------------------------------------------- 097e55589a | Nicholas Feinberg | 2022-02-18 12:20:20 -0800 Fix quiver/summon warnings (CarefulOdds) Don't check for interactions with ongoing AOE attacks (OTR, Polar Vortex, &c) when you're just quivering a summon spell. Only check on cast. Closes #2429. -------------------------------------------------------------------------------- 99c160cdfe | Nicholas Feinberg | 2022-02-18 11:01:33 -0800 Fix Shilleiagh noise (frdfg) When Devastator was added in 9cc3ee3f91d, it was intended to make 7 noise with every hit. However, since it was an explosion, it accidentally made 15 noise instead, and hence the wiki noted it as making 'fireball-level noise'. This continued for 10 years until 58ad9d9fa3b, which accidentally muted it while trying to make Irradiate silent. This commit restores Devastator to its intended 7 noise per hit. -------------------------------------------------------------------------------- 5b5bac981a | advil | 2022-02-18 10:14:58 -0500 feat: a means of preventing player ghosts from held accounts This is implemented a bit generally for maximum compatibility, but because it uses the new `-no-player-bones` option, a held account will not be able to start games with crawl binaries that do not support this. This applies both to old versions and forks. I will cherry-pick the options commit to a few stable versions back. Should have no impact on servers that aren't using account holds. -------------------------------------------------------------------------------- abffb2d2b2 | advil | 2022-02-18 09:28:53 -0500 feat: add a CLO to prevent writing player bones This is not really intended as a player facing feature (it doesn't prevent ghosts from being generated or anything like that), but as an option to support community management features on webtiles. Implementing as a separate commit to make it easier to backport. -------------------------------------------------------------------------------- 078de9bc30 | Nicholas Feinberg | 2022-02-17 19:49:28 -0800 Display irradiate damage in monster (ardl) -------------------------------------------------------------------------------- 501f64c9ef | Edgar A. Bering IV | 2022-02-18 04:39:55 +0200 feat: smooth early super ood cap and document In des syntax the glyph `8` means depth * 2 + 4. A "super ood". The glyph `9` means depth + 5, a "moderate ood". Both of these are constrained in D:1-8 at present, the maximum vault OOD is depth * 2 over D:1-8. This cap expires after D:5 for `9`, but continues to impact the meaning of `8` until D:8. The result is that from D:8 to D:9 there's a large jump in difficulty of vaults. This commit smooths things, so that the additive term goes up by 1 for each floor afte D:8 until reaching its full value by D:12 (at which point `8` means max depth since the cap of D's OOD table is 27). -------------------------------------------------------------------------------- baf749a769 | CipHuK | 2022-02-16 19:39:45 -0800 Fix: Don't warn on trying to summon rPois allies This is quite fragile, but maybe it's less annoying than the alternative. It'd be good to do the same trick for toxic bog and fliers. [Committer's note: did various cleanup and fixes.] Closes #2424. -------------------------------------------------------------------------------- 189f89ecda | advil | 2022-02-16 17:53:56 -0500 fix: check webtiles db flags more consistently and act on them This improves the handling of using the cli to change the ban/hold state of players who are currently logged in. The main change to db access is that the flags are updated when starting a game, and changes (in either direction) should take effect immediately. To get this to work I had to improve some of the logout handling (which previously relied on a reload, and couldn't be triggered from the server). Hopefully the I/O cost of this extra db check on I/O-bound servers isn't impactful, we'll see. This commit also fixes a bug where a held account that tries to spectate got the error info through the wrong message (well, the right one didn't exist yet) causing the user/password boxes to reappear. -------------------------------------------------------------------------------- 613497d651 | advil | 2022-02-16 17:01:34 -0500 feat: add a cli command to list only account holds In a real server in practice, the bans list can get pretty nsfw / unpleasant to see. So it's useful to have a way to look only at account holds for normal maintenance. -------------------------------------------------------------------------------- dac63da4db | advil | 2022-02-16 15:39:14 -0500 fix: allow disabling yaml games definitions Since these aren't templated on dgl setups, they are a bit of a pain to deal with even if the goal is just to remove the default one from trunk or prevent its installation. This commit provides another approach, where you can set the directory to `None` and skip loading yaml game definitions altogether. -------------------------------------------------------------------------------- 0523dad39a | gammafunk | 2022-02-16 11:55:29 -0600 fix: Add a missing vault definition and refactor For bailey_polearm_vampire_castle_hellmonk, one of the vampire weapon definitions was missing its vampirism ego, which the others all had. Also reformat the monster definition, simplify NSUBST syntax, and align indent. -------------------------------------------------------------------------------- 0a07039d5a | Nicholas Feinberg | 2022-02-15 21:23:51 -0800 Tweak branch entrance noise messages (Booper) "Less far" is very awkward. Closes #2427. -------------------------------------------------------------------------------- 6e81df9875 | Nicholas Feinberg | 2022-02-15 20:46:08 -0800 Fix an typo (FizzleBang) -------------------------------------------------------------------------------- 4b50743c59 | hellmonk | 2022-02-15 20:13:30 -0500 nerf vampire castle bailey -------------------------------------------------------------------------------- 37f86683bf | advil | 2022-02-14 18:34:46 -0500 feat: webtiles reload on SIGHUP This is a long requested feature whose implementation is made more tractable by the separation of config.py and the webtiles.config module. I'd still definitely put this in the "experimental features" category. It will probably go badly for at least some options, but I've tested it on the account disable-type features I added recently, and it works well for those. Game data reload looks to work fine but I haven't tested it very carefully (e.g. no idea what would happen if someone is playing a game that got removed, etc.) The implementation is tied to an option and disabled by default, both because I'm not sure how well it will work in practice, and because I have the impression some dgl setups may have used SIGHUP to stop the server at some point, and enabling this by default would break init.d scripts. -------------------------------------------------------------------------------- 45d3ea808a | advil | 2022-02-14 18:11:52 -0500 feat: various account management enhancements Nick restriction improvements: * Allow defining a custom name check function in config. Some things are a bit easier to do this way than with a regex. Two restricted registration modes: * set `new_accounts_disabled` to disable new account creation altogether. This is a bit quick and dirty, and users currently don't get an error until they hit the submit button. * set `new_accounts_hold` to allow new account creation, but mark any new accounts with an "account hold" flag. This flag: - prevents login via ssh, where relevant. (It just sets the ban flag, so messaging to players may be confusing..) - prevents the account's games from appearing in the lobby or being spectated. - prevents the account from using chat. - prevents the account from spectating altogether. (Of course they can log out and spectate as anonymous.) - Players with this flag can still play games. - This flag is implemented as a new dgamelaunch db flag. Since dgl itself hasn't added any flags in like 15 years, hopefully this is safe. The account hold flags can be set and cleared via the wtutil.py command line tool. I'd like to add an admin panel interface too, but that isn't done. Ths flag, if set, has an effect even when the new account hold mode isn't enabled, so it can also be used as a kind of soft ban if someone is causing trouble in chat but for whatever reason isn't judged to merit an outright ban. -------------------------------------------------------------------------------- 0f647bec9a | advil | 2022-02-14 09:38:39 -0500 fix: check ban flag for token logins I think I didn't add this before because it is awkward to check at the point of login without adding another db call. However, user flags are collected from the db shortly after the point of checking the token, so this is a perfectly workable point to check the ban flag again. (Some of this code could perhaps be consolidated.) -------------------------------------------------------------------------------- 60f898f876 | advil | 2022-02-13 17:12:39 -0500 feat: more verbose new account logging This information was accessible, but needed digging in the logs by cross-referencing a socket, or digging in the db. I could see an argument that the email value is better not reported in a logfile, but I'm going to include it for now. -------------------------------------------------------------------------------- 80d8537514 | advil | 2022-02-13 17:11:19 -0500 fix: handle nonexistent accounts in ban checks This was crashing on None values and therefore not displaying the "login failed" message. -------------------------------------------------------------------------------- 25f29fbe20 | advil | 2022-02-13 15:18:29 -0500 fix: stabilize serpent of hell placement The previous code was a bit of a pain to understand, and also seems to have never been updated for pregeneration. This simplifies the calculation, and restructures it to not rely on player exploration. It is still entirely possible for hell end vaults to mess this up. -------------------------------------------------------------------------------- 88c9fad16d | hellmonk | 2022-02-12 23:37:05 -0500 Unthin early D loot This was reduced as part of D:1 item gen changes but seems to have been unnecessary. Taking this back up to prior levels. -------------------------------------------------------------------------------- 93358da72b | hellmonk | 2022-02-09 21:59:09 -0500 feat: Xom orb gift speech -------------------------------------------------------------------------------- 6187a340c9 | hellmonk | 2022-02-09 21:28:40 -0500 slightly nerf bailey_axe_minmay_hex_keep -------------------------------------------------------------------------------- 258763100d | hellmonk | 2022-02-09 21:26:26 -0500 fix floor tiles in a bailey -------------------------------------------------------------------------------- 1f87ffd4f4 | hellmonk | 2022-02-09 21:24:55 -0500 fix: Nightstalker stealth Give 50 stealth at mutlevel 3 instead of 48. -------------------------------------------------------------------------------- ee772dd00f | advil | 2022-02-08 10:38:20 -0500 fix: regularize confused self-attacks (perryprog) Previously, there was basically one way where a monster could accidentally hit itself while confused (with a number of other rare special cases): if it targeted another monster, `mmov` would be reset after the `fight_melee` call, and then the later there's an additional 1/6 chance for a self-attack. There's code that appears intended to handle a similar player case in `_monster_move`, as well as a chance on top of the monster rolling mmov as 0,0, but these were unreachable due to variously an earlier batch of code that handles attacking the player, and an early return if `mmov.origin()` is true. This commit regularizes things to what appears to be intended. Further tweaks may be justified, and in particular I'm not sure the purely random chance of self-attacking is needed. After this commit: 2/3 chance of stumbling, with a 1/n chance of rolling 0,0 (n=habitable spaces), and then a 1/6 chance of a self-attack. So *probably* rare enough to be not worth kiting to get. If the monster targets another monster, or (now fixed) the player: a 1/6 chance of a self-attack on top of the swing. Oddly (?), this doesn't change energy and the monster always gets a swing for this case, so they attack twice for the usual energy cost. As noted in the comments, I'm interpreting this as a kind of slapstick effect. But it might be more consistent if that 1/6 roll attacked themselves *instead* of the intended target, not sure. -------------------------------------------------------------------------------- debf4667c2 | advil | 2022-02-06 12:40:32 -0500 fix: don't crash on theft during EquipOnDelay Hopefully the reference `equip` is ok in this case, but it seems to work in testing and this is how EquipOffDelay handled it. Relevant crashlog: https://crawl.project357.org/morgue/cpf86/crash-cpf86-20220206-105923.txt -------------------------------------------------------------------------------- c37658a0fe | advil | 2022-02-05 15:34:50 -0500 fix: invert some mistaken transparency logic This seems to be the opposite of what was intended in 7e0d850643. On top of the wrong transparency logic, the fact that these vaults can get a transparent tag added if they are used in vaults was generating false positives in seed testing (where the transparent tag persists to a later run). I'm not actually sure its great for the vaults layout code to force-add `transparent` like that (even though I probably added it), but I'm leaving that alone for now. -------------------------------------------------------------------------------- 01c6783841 | robertxgray | 2022-02-05 18:22:06 +0100 Merge branch 'master-upstream' -------------------------------------------------------------------------------- f8c823261f | advil | 2022-02-05 10:38:52 -0500 fix: various dancing weapon death message issues * give the "strangely unrewarding" message in the abyss (and other no-xp scenarios). Also applies to simulacra. * Don't give a goldify message in the abyss (and other no-xp scenarios). * Handle goldify better for a couple of spell special cases as well. Also, add an explicit ASSERT in dancing weapon tile code based on a recent crash report. -------------------------------------------------------------------------------- 03a7b78be7 | advil | 2022-02-04 14:47:43 -0500 chore: add a trunk reminder for the 0.28 tournament -------------------------------------------------------------------------------- 2e6bf50d99 | Nicholas Feinberg | 2022-02-04 08:16:33 -0800 Add Oozemancy ability tile (Sastreii) -------------------------------------------------------------------------------- 95d2506d3f | Nicholas Feinberg | 2022-02-04 08:02:31 -0800 Post-final changelog updates (Ge0ff) -------------------------------------------------------------------------------- 58af29d98f | gammafunk | 2022-02-04 08:48:45 -0600 Update the Debian changelog for 0.28 (cherry picked from commit c65acfa365c381bc93a5adae01e2246700b84dc4) -------------------------------------------------------------------------------- da9a4e44c3 | gammafunk | 2022-02-04 08:48:32 -0600 Final 0.28.0 changelog (cherry picked from commit 1f18f1326188bb30cc2e2468d6abd7c50934ed76) -------------------------------------------------------------------------------- 93cd696043 | gammafunk | 2022-02-04 08:48:19 -0600 Checkwhite (cherry picked from commit 5a74557163c3c3b12ce7de0173ff567a5bd4a380) -------------------------------------------------------------------------------- 837932c90e | Edgar A. Bering IV | 2022-02-03 18:53:05 -0500 docs: update CREDITS.txt -------------------------------------------------------------------------------- 2c38d6c9ec | Kate | 2022-02-03 23:48:24 +0000 Fix a crash on Jiyva jelly spawns Caused by damage from YOU_FAULTLESS (such as a guardian golem's clouds) triggering a jelly to try and spawn with a dummy monster set as its foe. -------------------------------------------------------------------------------- 3050e97935 | Edgar A. Bering IV | 2022-02-03 15:03:58 -0600 tiles: jiyva oozemancy tile Some slime wall in the invocations lozenge. Could use improvement. Closes #2394 -------------------------------------------------------------------------------- ad4ee0f8b3 | RojjaCebolla | 2022-02-03 14:37:04 -0600 text: add descriptions to mutations.txt for no-skill-training mutations for Demonspawn cloud immunity for Engulf and Noise Suppression for various Ru sacrifice muts [ Committer's note: Squashed and rebased, removed removed mutations. Closes #2391 ] -------------------------------------------------------------------------------- 66d9a3572a | RojjaCebolla | 2022-02-03 14:37:04 -0600 fix: a typo in the description of repulsion field -------------------------------------------------------------------------------- d89ecb8dae | Edgar A. Bering IV | 2022-02-03 14:36:22 -0600 fix: tweak staff of Olgreb description To make it clear it is used via the 'a' menu now. Closes #2400 -------------------------------------------------------------------------------- de281f79f8 | Edgar A. Bering IV | 2022-02-03 14:36:22 -0600 docs: update the manual -------------------------------------------------------------------------------- c270d1dad5 | Nicholas Feinberg | 2022-02-03 09:05:12 -0800 Changelog tweaks -------------------------------------------------------------------------------- c5fe22d4ff | Perry Fraser | 2022-02-03 07:45:21 -0800 fix: correct hint for stat increases per 6 levels Change introduced in 03ef38a. -------------------------------------------------------------------------------- 85bba54663 | gammafunk | 2022-02-03 07:44:43 -0800 Update the changelog Near final for 0.28.0, but probably more tweaks to this to come. -------------------------------------------------------------------------------- 1732ff48e7 | Edgar A. Bering IV | 2022-02-02 23:19:51 -0600 fix: default runrest ignore transformation ending messages As reported in #2189 the default options repeatedly interrupt resting for transmuters, and this is particularly noticable in the early game when spell power is low. This commit adds a default ignore for all transformation-expiring-soon messages and for transformation end messages for all good forms. Wisp, Bat, Pig, and Tree form still interrupt rest, as these are far more likely for the player to want to rest off. This commit does entail a tradeoff: it makes the experience smoother for newer players in the early game at the expense of requiring a player who wants to remain in a form while auto-exploring/auto-traveling to edit their rc. It's not clear to me that there's a way to easily satisfy both use cases, someone will need to edit their rc. This change shifts the onus to do so to what are probably more experienced players. Closes #2189 -------------------------------------------------------------------------------- e854522c82 | Edgar A. Bering IV | 2022-02-02 23:19:51 -0600 fix: prefer foes for default inner flame target (12676) -------------------------------------------------------------------------------- 0c4cd36759 | Edgar A. Bering IV | 2022-02-02 23:19:51 -0600 fix: allow trog (and other divine allies) to spawn in clouds (12675) Removes an ancient and undocumented hack to avoid placing divine allies in particular in clouds (except with Xom). Since summons from other sources can appear in clouds just fine, let's go with the simpler, consistent approach here. -------------------------------------------------------------------------------- 81e803b10a | advil | 2022-02-02 23:42:39 -0500 fix: update some mac plist stuff I have no idea why LSRequiresNativeExecution was previously being ignored (the 0.27.1 release has this set and runs fine under Rosetta), but as of the 0.28-b1 release artifacts, it is *not* being ignored and this prevents it from running under Rosetta. I'm not sure why this was even set in the first place. I've also adjusted the minimum version field to what we actually build for. Probably more values here need a pass, e.g. the bundle id is pretty outdated. -------------------------------------------------------------------------------- e7179d36cc | advil | 2022-02-02 21:01:04 -0500 fix: adjust mouse hover suppress timing (ebering) This was mainly tested in firefox, which takes about 10-20ms to deliver mouseevents to the menu after a scroll, so 80ms seemed nice and conservative. However, in Safari, the timing seems to be more on the order of 100ms. (Maybe it's intentionally delaying them if they result from rendering rather than actual mouse movement?) I've upped this timeout to 200ms. Even with a value that might in principle be noticeable, I wasn't able to generate any intentional physical motion that revealed the suppression when trying to use a mouse. Unfortunately this change does make it a lot easier for the timeouts to overlap, which a simple bool doesn't handle very well, leading to the more involved approach here. -------------------------------------------------------------------------------- 1d65ae1bb4 | advil | 2022-02-02 16:01:02 -0500 fix: handle webtiles SIGHUP messaging differently SIGHUP indicates that something killed the process. While this can happen for various reasons, it mostly happens on some form of disconnect. If the player is around to see this message (as in Mantis 11595), they probably hit the back button or something, and it's misleading to describe this as a crash ("Unfortunately your game terminated due to an error."). In any case, there's no crash report on a SIGHUP. This commit adds a new message in client.js that'll require caches to catch up, but until then the default case message is fine, and prints the exit reason. More or less resolves https://crawl.develz.org/mantis/view.php?id=11595 -------------------------------------------------------------------------------- b207118a1a | Kate | 2022-02-02 20:31:37 +0000 Reduce Wucad Mu's channeling effectiveness (atomjack) The new formulae resulted in Wucad Mu scaling much more strongly than intended, up to approximately a 99% chance to make spellcasting free at 27 Evocations skill. Ideally the formulae will be reworked in the longer term to also make the effect scale better for regular orbs of energy at lower skill, but in the meantime reduce the ceiling by counting Wucad Mu as 1.5 sources of channeling instead of 2, and removing the stacking effect of multiple sources on the backfire rate. -------------------------------------------------------------------------------- 3f3a666523 | advil | 2022-02-02 15:14:16 -0500 fix: further issues with non-casting monster descriptions df0a5da549d686d didn't get this case right -------------------------------------------------------------------------------- 139f01a7f8 | advil | 2022-02-02 15:14:16 -0500 fix: scroll more sanely in webtiles Page up/down was overshooting. This commit seems to bring it to a better place (although the interaction with the shade is messy). I'm not sure why this code was previously commented, as far as I can tell (aside from compensating for the shade) it was correct, so hopefully there isn't some problem I didn't find. Resolves https://crawl.develz.org/mantis/view.php?id=12193 -------------------------------------------------------------------------------- 28f407b12d | Edgar A. Bering IV | 2022-02-02 14:04:40 -0600 fix: inform the player that using yaras on fedhas summons doesn't work (12670) -------------------------------------------------------------------------------- 0a91294c2c | Edgar A. Bering IV | 2022-02-02 14:03:14 -0600 fix: don't double prompt for monsters with Yara's (12669) Using stop_attack_prompt and firing a tracer is overkill. The former uses a better verb and works well with modern hitfuncs. The latter includes a self-damage check. It would be great if the former could be converted but that's not a small task and is likely to introduce a bunch of new double prompt bugs. For now I've gone with checking for self-damage separately. -------------------------------------------------------------------------------- 9d6eb31067 | Edgar A. Bering IV | 2022-02-02 13:47:22 -0600 fix: account for guile in ctouch display (dilly) -------------------------------------------------------------------------------- 2e2478e390 | advil | 2022-02-02 14:18:54 -0500 fix: handle a few more numpad keys in menus Resolves https://crawl.develz.org/mantis/view.php?id=12641 (and a few others that I spotted). -------------------------------------------------------------------------------- df0a5da549 | advil | 2022-02-02 13:59:38 -0500 fix: handle webtiles spellset parsing a bit better The webtiles code replaces the spellset in a monster description body with a placeholder. Previously it did this by regenerating the full spellset string and doing a simple `replace_all`. This obvious relies on deterministic behavior for `describe_spellset`, something not true of spells that have some random elemental coloring. This webtiles code could probably use some major refactoring, and possible the spellset should be separated out at the level of monster_info fields, but to fix this for release I've done something a bit simpler (and hackier). When generating a spellset description for webtiles, the monster description code inserts some delimiters, and these delimiters are used to insert the placeholder. I've also inserted some code to explicitly detect this sort of bug both when inserting the placeholder, and in the webtiles js code that was going wrong as a result of this bug. (For the latter, the colour string markers that remained in the body were getting parsed as tags by the browser, or maybe jquery, and wiping out the div where the real spellset was supposed to be inserted.) -------------------------------------------------------------------------------- a2763057c1 | gammafunk | 2022-02-02 10:45:19 -0600 feat: Updates to octagon-themed float vaults For minmay's set of octagon vaults, namely `minmay_shoctagon`, `minmay_roctagon`, `minmay_firetagon`, and, yes of course, `minmay_coctagon`, updates to placement, monster sets, loot, and syntax. These vaults all have a lower-tier monster set that places 8 monsters on-average along with a single out-of-depth "boss" monster, but the monster sets don't change much with depth. I've updated the maps to have appropriate monsters for earlier Dungeon (either D:10-D:12 or D:12-D:13, depending on the map), late Dungeon, Elf, and Depths. For Depths, all vaults can now place on every level of that branch. I've replaced `ident:type` with `ident:all` in all cases. Simplify the loot/monster placement logic to not have a rare chance to add a lot more of either monsters or loot. Nearly doubling the loot doesn't work well in a vault where the loot is already generous and every loot item is thematic. Remove these rare substitutions in the common setup function. Tweak the NSUBST to place a few more monsters so we keep the same average. For the unrand weapon item, follow the lead of `minmay_coctagon` and have thematic randart weapons of the same weapon class but of subtypes different from the unrand. This way we're not placing e.g. the Arc Blade 100% of the time, like a guarded unrand vault. Also add to these vaults some other thematically appropriate unrands with randart alternative to these vaults in cases when unrands exist. -------------------------------------------------------------------------------- d243af8c8e | gammafunk | 2022-02-02 10:45:00 -0600 feat: Update a vampire-themed float vault For `lemuel_vampire_tower`, revamp the vault to have better monsters that scale with depth of placement. We remove the down-hatch, since it served little purpose other than limiting placement. Move the guaranteed altar to where the down hatch was, and put a superb_item on the altar to go along with the other two loot items. Allow the vault to place on the final levels of Dungeon, Depths, and Crypt. Rework the monster tiers to follow a more logical progression, using monsters appropriate for placement depth. For the vampire boss, place a vampire for earlier Dungeon, upgrading to a vampire knight, with a placement of either Jory or a vampire knight decked out with thematic equipment of high quality for Crypt and Depths. -------------------------------------------------------------------------------- 292b7dfcfe | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a Depths float vault For `gammafunk_depths_water_palace`, update the monster list to be more current with the Depths roster. Instead of solo water elementals at certain locations, use merfolk exclusively, but have a chance for two of these locations near the central chamber entrance to be elemental wellsprings. Reglyph a bit as necessary. -------------------------------------------------------------------------------- 727057aadf | gammafunk | 2022-02-02 10:29:20 -0600 fix: Wrap a DES line -------------------------------------------------------------------------------- 10b4fd4ada | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a Depths float vault For `lightli_eight_chambers`, make the monster sets more appropriate for Depths, removing the orc and poison themed sets, which don't really have appropriate monsters, replacing them with earth, tengu, and spriggan themed ones. Revamp the other sets to be more coherent in terms of threat level. -------------------------------------------------------------------------------- c803637380 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a Depths float vault For `hangedman_six_sided_sadism`, update the monster lists to remove some of the less interesting monsters from outside the branch. Use an appropriate SUBST to thin out two of the monster sets instead of having `nothing` in the monster list. -------------------------------------------------------------------------------- f436032661 | gammafunk | 2022-02-02 10:29:20 -0600 fix: Clean up syntax of a float vault -------------------------------------------------------------------------------- 05b2614ef2 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a fire-themed float vault For `lemuel_flame_loot_2`, replace teleport closet areas with simple lava. The vault requires flight or translocations to reach, and said closets didn't add anything to the vault aside from requiring `no_tele_into` masking. Add depth scaling, adding more monsters and loot as placement depth increases. Use two tiers of fiery monsters, with a single boss monster and a lower tier of support monsters. Allow fire monsters to generate as level lava spawns, but turn off level monster gen elsewhere in the vault. -------------------------------------------------------------------------------- 0f297cac12 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update placement of a float vault For `onia_ninara_swampy_vault`, don't place this vault in Depths, since there's not an appropriate set of Swamp-themed monsters that are appropriate difficulty for Depths. Refactor syntax and glyph usage. -------------------------------------------------------------------------------- 695ac6beb5 | gammafunk | 2022-02-02 10:29:20 -0600 feat: Update a troll-themed float vault For `lemuel_troll_bridge`, make the monsters scale better with depth. For later Dungeon, upgrade yaks to death yaks and upgrade trolls. For Depths, we replace the timid yak genus monsters with wizards, since it seems like wizards would be scared of being eaten by trolls. Place fewer monsters at earlier depths, since 10 trolls guaranteed on D:9 is a little much. -------------------------------------------------------------------------------- 14386d3767 | gammafunk | 2022-02-02 10:29:19 -0600 feat: Update a Depths mummy-themed vault For `lemuel_minitomb`, update the vault to monsters that are appropriate challenges for Depths, and revamp the appearance, layout, and loot. Don't use plain mummies, using spectral things at the low end, along with guardian mummies and mummy priests to go along with the single royal mummy. Replace some of the gold in the final chamber with super and star item loot, which is a more meaningful award. Use tomb-theme wall and floor tiles, and make the layout more favorable to monsters in the final two chambers. Allow the vault to place in all of Depths and Crypt. -------------------------------------------------------------------------------- 6705b9cb7d | gammafunk | 2022-02-02 10:29:19 -0600 feat: Update a Depths float vault For `minmay_skeletal_surprise`, use a better substitution setup and add more Depths-appropriate nasties monsters. Namely mix in a small chance for ancient/dread liches, keeping averages the same. For the nastier monsters that place in the gold rooms, place a superb or star item instead of just more gold. -------------------------------------------------------------------------------- e7567d4e05 | advil | 2022-02-02 11:07:07 -0500 fix: fix a rounding issue in webtiles bars This fixes the specific issue reported, but I couldn't swear that there are still no overflow issues. What was happening is that at the exact hp values reported in the issue, the main bar was 96.88% and the decrease bar ended up as 3.13%. Resolves #2384 -------------------------------------------------------------------------------- 69f475c709 | advil | 2022-02-02 10:29:52 -0500 docs: changelog updates Mostly editing/expanding UI/options bullet points -------------------------------------------------------------------------------- 72cdf85f72 | wheals | 2022-02-02 10:51:39 +0200 fix: ASSERT tripped with targeted destruction cards -------------------------------------------------------------------------------- 62a80824bf | Edgar A. Bering IV | 2022-02-01 22:56:19 -0600 fix: always give a message when a net trap fails to trigger For clarity. -------------------------------------------------------------------------------- 9fc6a9d840 | Nicholas Feinberg | 2022-02-01 15:57:34 -0800 Remove a reference to exploration traps C.f. 86c161e70f1664227c2cfe580500b2e3d2ef0146. -------------------------------------------------------------------------------- 89e12c0570 | Nicholas Feinberg | 2022-02-01 09:42:45 -0800 Fix toxic bog XP (Oneirical) It passed you->as_monster() into the temp map marker code (which is null), instead of the expected MID_PLAYER. -------------------------------------------------------------------------------- 8eb35efe60 | advil | 2022-01-31 22:58:10 -0500 fix: eliminate a bad memory access When the player had no wieldable inventory items, toggling the show all mode could lead to the deleted inv_header being modified. Write a custom clear() function for this class that explicitly sets nullptr. (Some day it would be nice if Menu classes used shared_ptrs or something...) -------------------------------------------------------------------------------- 581ba40fa7 | advil | 2022-01-31 16:16:31 -0500 docs: more color diagnostics for terminal These are intended to flag to putty users using certain options that their terminal is misconfigured. (I have *absolutely no idea* why putty is misrendering either of these. It's not impossible that at least the two block one is a low-level bug in our curses code? -------------------------------------------------------------------------------- a1db9ad13e | advil | 2022-01-31 16:16:31 -0500 fix: color spell letters by utility in more menus This was already done in the memorize menu. It looks more consistent overall, and also draws less attention to whatever is going on with putty's bg color swapping in blink_brightens_background mode. -------------------------------------------------------------------------------- 2ed287c6d8 | advil | 2022-01-31 16:16:31 -0500 fix: indicate compatibility mode for putty in more cases This was getting suppressed for players using blink_brightens_background, but the results of this mode are (currently) kind of odd, so we need to print the info about compatibility mode even then. Wording tweaked slightly in consequences. -------------------------------------------------------------------------------- b1d7ae0460 | wheals | 2022-01-31 20:16:04 +0200 fix: Numpad '*' and '+' in newgame menu (#12666) -------------------------------------------------------------------------------- ccf83627c4 | wheals | 2022-01-31 19:57:20 +0200 feat: allow closing the webtiles chat with F12 (Yermak) -------------------------------------------------------------------------------- 190321e9dd | advil | 2022-01-31 12:21:03 -0500 fix: restore item class hotkeys to id menu (Lici) No guarantees this behavior will stay forever, but it was unintentionally remove in fc454544111 so I'm restoring it for now. -------------------------------------------------------------------------------- 0a9fdd57f5 | advil | 2022-01-31 11:43:50 -0500 fix: menu selection for `prompt_invent_menu`s (gressup) These menus do manual keyhandling (which should eventually be refactored) and so CK_ENTER needed its own manual handling here. Affects most noticeably fire menu, but maybe all sorts of other misc ones. -------------------------------------------------------------------------------- 93984085d6 | wheals | 2022-01-31 18:28:56 +0200 fix: select all menu items when pressing a type shortcut Because the second iteration of the loop did not have the MF_SINGLESELECT check, using a non-primary hotkey to select things you had already scrolled past did not reliably select all items. The best way to reproduce this was to have several weapons in your inventory, scroll down past them on the (d)rop screen, and then press ). The topmost weapon would not be selected. (More specifically, I suspect it was being selected twice, leading to it being deselected.) -------------------------------------------------------------------------------- 238b2ceb19 | wheals | 2022-01-31 18:01:49 +0200 fix: time out drain when returning to a level (#12663) Wasn't updated when monster drain was made temporary. -------------------------------------------------------------------------------- 0aac2aca22 | wheals | 2022-01-31 17:57:46 +0200 fix: easy_floor_use when your (sub-)inventory is empty (#12667) -------------------------------------------------------------------------------- 171a82f519 | wheals | 2022-01-31 17:49:07 +0200 fix: restore spacebar behaviour in autoexplore autopickup prompt (#12671) -------------------------------------------------------------------------------- 15a0a6fec6 | wheals | 2022-01-31 17:19:41 +0200 fix: standardize penance piety display (#12565) Webtiles showed the piety rank even under penance, but console/local tiles did not. -------------------------------------------------------------------------------- 236b832b77 | wheals | 2022-01-31 17:14:28 +0200 fix: scroll of fear success chance (#12665, Yermak) The targetter did not properly reflect the power cap. The same bug probably also affected Anguish and Discord. -------------------------------------------------------------------------------- 9887b6b090 | wheals | 2022-01-31 17:04:59 +0200 fix: on the spellcasting menu casts the last spell again This was broken for both menu_arrow_control = true and false. The previous behavior was restored if arrow control is off; if arrow control is on, the menu automatically defaults to hovering over the last-cast spell, which means that pressing enter will cast that spell. Either way, the last-cast spell is shown with a '+' after the hotkey instead of a '-'. This does not restore the behavior when the player knows only one spell; that was mostly for newbies who are presumably keeping the default of true for arrow control. -------------------------------------------------------------------------------- 7f48f510a0 | Nicholas Feinberg | 2022-01-30 12:30:15 -0800 Fix (?) orb of wrath uselessness check Match the call to go_berserk() in melee-attack.cc triggered by you.angry() (which is the effect of an orb of wrath). -------------------------------------------------------------------------------- e4388f8e44 | advil | 2022-01-30 12:28:15 -0500 fix: correct shopping list menu more lettering This was doing the wrong thing on letters > 'z', which resulted in invalid UTF-8 and prevented the menu message from ever getting to the webtiles client. Resolves https://crawl.develz.org/mantis/view.php?id=12672 -------------------------------------------------------------------------------- a79f92ac9c | Nicholas Feinberg | 2022-01-29 14:47:47 -0800 Remove explicit fix slot support Unused since bf516ccc1f22f3449c9dce1c7828d97747f247d2 (2007) and unlikely to be used in future. -------------------------------------------------------------------------------- bf593b16ee | Nicholas Feinberg | 2022-01-28 17:25:33 -0800 Fix negative energy mutation description -------------------------------------------------------------------------------- e65d7fc6d1 | RojjaCebolla | 2022-01-28 19:25:24 -0500 fixup! Add descriptions for a few resistance mutations continuing to noodle on this. advil: "add explicitly any relevant abbreviations" -------------------------------------------------------------------------------- e889dcbc7e | RojjaCebolla | 2022-01-28 19:25:24 -0500 Add descriptions for a few resistance mutations Filling some holes in mutations.txt -------------------------------------------------------------------------------- ef7f3e67aa | advil | 2022-01-28 12:46:25 -0500 docs: a few more species mutation descriptions Also, tweaked hop to have more detail. Some of these touch on related fakemuts that wouldn't otherwise be currently described. -------------------------------------------------------------------------------- 9e681642b6 | Nicholas Feinberg | 2022-01-28 09:28:44 -0800 Tweak Mlioglotl Make him demonic holiness to better match player expectations (re vulnerability to holy word), and make his Lugonu abilities priestly rather than magical. -------------------------------------------------------------------------------- b194023da8 | advil | 2022-01-28 11:48:09 -0500 fix: don't list removed muts in describe debug code Also, put a static inside its only direct consumer. -------------------------------------------------------------------------------- 2e94016dc0 | Implojin | 2022-01-28 11:40:34 -0500 fix: lowercase help lookup on ctrl-o The keybinds shown on ctrl-o were outdated, this aligns it with how help lookup currently works. -------------------------------------------------------------------------------- 60158a2511 | Nicholas Feinberg | 2022-01-28 07:50:19 -0800 Add missing dj species mut descs (advil) -------------------------------------------------------------------------------- 13803eac2f | advil | 2022-01-28 10:44:29 -0500 feat: debug code to display muts without a description This is pretty spammy so not enabled by default. I've also restored the debug build `validate_mutations` call to the describe mut menu, if this was intentionally removed (it's a bit spammy too) it could be gated behind the new DEBUG_MUTATIONS define. -------------------------------------------------------------------------------- 59a240f8a5 | advil | 2022-01-28 10:22:38 -0500 fix: adjust some casing in mut short names These short names are being used as popup titles for `A` screen popups, and given this it is better to systematically uppercase relevant abbreviations. Because this field was designed for the % screen list, there was mostly a lowercase convention for these fields (with a few exceptions), but it doesn't seem to matter in any technical way if this casing is adjusted; db lookup is case insensitive. They look ok in the short list too, and a few things were already cased there. (Also because these have been designed for brevity, they often don't work well as titles, and I think in the long run it may be good to have an explicit "title" field of some kind in this data that allows writing a better one. But that's a bit of a project.) -------------------------------------------------------------------------------- e4976b13b8 | advil | 2022-01-28 10:00:28 -0500 fix: don't show (level 1/1) in mutation descriptions This seems to me more confusing than useful, I guess one might argue with this though. -------------------------------------------------------------------------------- a75d3d97ab | advil | 2022-01-27 20:52:29 -0500 fix: update SECURITY.md Someone needs to remember to do this again in a few weeks. Resolves #2107 -------------------------------------------------------------------------------- 08fb2288ea | advil | 2022-01-27 20:45:25 -0500 fix: quivering ammo from item description This call needed to correctly handle the ammo quiver (and the inscribe check), and to avoid code duplication I pulled similar relevant code out of ActionSelectMenu into its own call. Overall, this whole setup could possibly use some simplification at this point, it was written to support arbitrary numbers of quivers but I am not sure that's ever going to be realistic. Resolves #2257 -------------------------------------------------------------------------------- 022ca4c890 | advil | 2022-01-27 14:15:01 -0500 fix: suppress mores during describe actions This prevents graphical glitches in console and a hard-to-spot key input prompt in webtiles. Just suppressing the more is not an ideal solution as it can make you miss force_mores, but I'm not sure there's an alternative that wouldn't take some major refactoring. (I could imagine an RAII object that instead of suppressing output, collected it in a message tee and showed a popup if there was a force_more. But this is definitely in non-freeze territory.) Resolves #2232 -------------------------------------------------------------------------------- 0446c0dae4 | advil | 2022-01-26 23:07:21 -0500 fix: use menu api instead of deleteAll in a few menus -------------------------------------------------------------------------------- 068bf27d47 | advil | 2022-01-26 23:00:18 -0500 fix: reset scroll on spell search If the scroller was sufficiently far down, a search could result in no menu lines visible in console because the scroll didn't get adjusted. I haven't quite figured out why the Scroller m_scroll sanitization, which appears to be correctly implemented, doesn't kick in until a manual scroll. Maybe there's a missing _allocate? In any case, this commit explicitly manages the scroll for spell search, trying to keep it on the same spell if possible, but otherwise resetting to the top. Resolves #2303 -------------------------------------------------------------------------------- a859fcf985 | advil | 2022-01-26 16:57:37 -0500 ci: reset cache for mingw builds Or rather, change the cache key, which is apparently the way to do this right now. (The old cache gets erased if not accessed in 7 days.) -------------------------------------------------------------------------------- b8ed39c57d | Alex Jurkiewicz | 2022-01-26 16:16:26 -0500 Change return signature for set_rc Return boolean success. Also add a missing import used in on_message. Fixes #2382. -------------------------------------------------------------------------------- b0e57e52b4 | advil | 2022-01-26 12:43:07 -0500 fix: explicitly set UI_NORMAL before load_level in webtiles Messaging from portals happens during load_level, but on new char creation, UI_CRT is set by the character selection popups, and wasn't cleared in webtiles until load_dungeon. Since this state change is what is required for the initial show() call to the `normal` div in webtiles for this case, a more triggered during load_level would still wait for input but with the entire game div invisible. This is what led to the delver bug when landing on a level with a portal. Arguably it is also a bug that this messaging happens so early on initial load, but this seems extremely hard to change (marker init can't be moved later without what I seem to remember is complete disaster, so it would require deferring marker init messaging somehow). Resolves #2318, mantis 12343. -------------------------------------------------------------------------------- 53e83337bc | Alex Jurkiewicz | 2022-01-26 09:37:48 -0500 Use append for lists, not add Fixes #2380. -------------------------------------------------------------------------------- 12fcac58f8 | Nicholas Feinberg | 2022-01-25 18:03:19 -0800 Fix: clarify Conjure Flame description Try to explain how a rather complex spell works, without misleading newer players into thinking that re-casting the spell is the only way to get the embers to burn. -------------------------------------------------------------------------------- f2d273c862 | advil | 2022-01-25 15:51:46 -0500 fix: add a missing from future import (TZer0) -------------------------------------------------------------------------------- 94f35f3178 | advil | 2022-01-25 13:28:47 -0500 docs: remove a reference to CRD in the release guide since we haven't been doing that in as long as I've been a dev. -------------------------------------------------------------------------------- f1a7530480 | advil | 2022-01-25 13:04:53 -0500 fix: reenable * in UseItemMenu Probably broken in 673f3e5d658 -------------------------------------------------------------------------------- 87a8dc699f | advil | 2022-01-25 12:57:32 -0500 fix: make the unwield menu item usable Previously, this menu item was basically cosmetic, and didn't have a hotkey, preventing it from being hovered (in local tiles at least). This commit turns it into a real menu item that can be selected. While I was at it I improved some of the visuals of this item -- it uses form/species custom unarmed attack strings (though a lot of forms simply prevent this menu altogether), and indicates visually if unarmed is currently chosen. To match previous behavior, this menu starts with the first real item selected. We'll see if this is confusing or not. -------------------------------------------------------------------------------- 6d66802b9f | advil | 2022-01-25 11:22:10 -0500 fix: improve all items known case in KnownItemsMenu This fixes up the keyhelp to not show the toggle key, and absorbs the '-' keypress rather than just exiting the menu. This code needs some work still... -------------------------------------------------------------------------------- 2dc3af7c02 | advil | 2022-01-25 11:12:37 -0500 fix: adjust local tiles mouse hover behavior * get hover switching section to work in use and quiver menus, bringing these in line with webtiles * with arrow selection on, don't lose hover on MouseLeave * ignore mouse click keycode except on noselect menus. (Generally, this keycode only seems to happen when clicking outside of a window, which is extra confusing for anything else.) * don't draw hover for MF_NOSELECT menus, it makes the user think they can click and do something -------------------------------------------------------------------------------- 9123634e07 | advil | 2022-01-24 20:39:05 -0500 feat: quiver menu lettering improvements A long-time complaint about the newquiver menu is that the hotkeys are fairly arbitrary. This is challenging to resolve, since things that appear in this menu come from items, spells, and abilities, and there are likely to be collisions past the most basic of characters. A lot of players with this complaint have their preference for which lettering is the most important (I think that team item is the most vocal, because the old quiver menu just used item lettering), but these can't be mutually resolved. This commit attempts to use some of the fancier technology from UseItemMenu to resolve this problem. It adds a new mode to the quiver menu that focuses in on one of the three categories and uses the lettering from that category; the UI improvements from UseItemMenu hopefully make it easier to switch between the categories (e.g. arrow keys move smoothly between them, mouse hover changes categories*, and there's a toggle key as well. Focus mode on/off is implemented via a persistent option, so while you can manually set the rc option, it just remembers whatever mode you last had it in. Within a single play session it also remembers the section while in focus mode. So a typical use case for someone who doesn't quiver anything except items would be to hit ! to put the menu in focus mode, and not think about it ever again (until they upgrade, I suppose). This commit also involved a bunch of related fixes for stuff in Menu and UseItemMenu, as well as moving the quiver menu keyhelp to the footer. [*] n.b. there's been a regression somewhere along the line where this stopped working on local tiles, I'll deal with that separately. -------------------------------------------------------------------------------- cc9c2818f3 | advil | 2022-01-24 19:40:21 -0500 fix: guard against potential recursion in UseItemMenu Discovered while working on the quiver menu. I think this actually prevents some hover glitching at the moment. -------------------------------------------------------------------------------- 508f987c07 | advil | 2022-01-24 17:31:20 -0500 fix: fix some webtiles color string bugs This code didn't handle hand-generated nested color strings very well. More exactly recreate the stack algorithm from the crawl binary (still a bit different though). Should now work for any amount of foreground nesting, at least. -------------------------------------------------------------------------------- c496ab42f3 | advil | 2022-01-24 13:52:44 -0500 fix: correct exit logic for ability quiver submenu (Aliscans) -------------------------------------------------------------------------------- f64c0c316f | advil | 2022-01-24 13:52:43 -0500 feat: quiver menu section headings This is an old wishlist item and now that the cycle_header call and support code exists, becomes a lot more practical. Some minor other visual improvements to this menu as well. -------------------------------------------------------------------------------- cc732e7c34 | advil | 2022-01-24 13:01:45 -0500 refactor: clean up some messy quiver menu code Refactor a bunch of checks into the menu class, improve api for checking whether there are actions to quiver. Should not change behavior. -------------------------------------------------------------------------------- 283549b12f | advil | 2022-01-24 11:24:54 -0500 fix: fix use item section toggle with arrow control off -------------------------------------------------------------------------------- 673f3e5d65 | advil | 2022-01-24 11:05:06 -0500 fix: clean up some messy use item menu code This simplifies the use item menu so it doesn't have to entirely rebuild the menu every time the section changes. Rather, this commit adds an enable/disable toggle at the MenuEntry level that suppresses all hotkeys when disabled, and then changes this for relevant entries when switching sections. It also generalizes the section-switching code using the newer cycle_headers pattern. In addition, a minor visual tweak: indent non-hotkeyed items in these menus so that there horizontal position doesn't change on section change. -------------------------------------------------------------------------------- 55149d5790 | advil | 2022-01-24 11:05:06 -0500 fix: default `easy_floor_use` to false This option applies the action (read, wield, etc) to the floor item immediately on pressing ',' in the relevant menu if there is exactly one item of the right type on the floor. This behavior is really inconsistent with how menus work in general, and with what ',' does when there's more than one item. I'm keeping the option since it's been a default for a very long time. If people really don't like this new default I'm open to doing something further; one idea might be that if there's one item, assign it an actual (non-comma / non-letter) hotkey. -------------------------------------------------------------------------------- f728b707aa | Perry Fraser | 2022-01-23 13:46:06 -0800 fix: set FTILE in kennysheep_arrival_seaside stair -------------------------------------------------------------------------------- c66546352e | advil | 2022-01-23 11:10:02 -0500 fix: initialize a bool (Goratrix) This was resulting (depending on random local circumstances) in the first viewmap command sometimes being dropped spuriously. -------------------------------------------------------------------------------- 6e7a31e4fc | advil | 2022-01-23 10:58:36 -0500 fix: map touch input backspace to esc The lack of esc is one of the more immediate issues for using an on-screen keyboard, and using backspace seems like a workable solution. Backspace is prominent on these any touch virtual keyboard I've seen and would otherwise just go (almost) unused on touch input (in fact sending a fairly useless ctrl-h, which maybe needs a webtiles workaround in general). This only affects key input events handled via the mobile input button, so doesn't affect normal play or touch devices with physical keyboards. -------------------------------------------------------------------------------- e5bbfea7ee | advil | 2022-01-23 10:19:52 -0500 feat: use DESC_INVENTORY_EQUIP for carried stash search results Suggestion from u/SvalbardCaretaker -------------------------------------------------------------------------------- ee65da1d57 | advil | 2022-01-23 10:06:59 -0500 fix: select first travelable item in stash search Some players use this menu as a quick shortcut while collecting items that they are sure already exist, and I guess having to hit ','+enter is too much work. This lets enter immediately travel to the first travelable item. I'm undecided as of yet what to do with the lettering: I respect that many players have some muscle memory for ctrl-f a, but on the other hand, I don't think the fact that a kind of dodgy UI decision is enshrined in people's muscle memory is a good reason to keep it. I'm definitely opposed to making items on the current position fully unselectable in this UI, as was done (for carried items) in response to https://crawl.develz.org/tavern/viewtopic.php?f=8&t=20374. This makes the whole UI less usable and there's a ton of players who don't need or want the reversion that was (rather unconstructively) advocated for in that old thread. -------------------------------------------------------------------------------- 820543e53a | advil | 2022-01-22 19:38:17 -0500 fix: enable feature actions in full square describe Under this one code path (which happens with multiple describable things on the same square) a bool was not correctly applied. -------------------------------------------------------------------------------- 70179d601d | advil | 2022-01-22 19:22:08 -0500 fix: further fix describe item actions (perryprog) inventory items can't be expected to have a valid item index relative to env.items. -------------------------------------------------------------------------------- c30f734a66 | advil | 2022-01-22 16:14:06 -0500 fix: remove debug code -------------------------------------------------------------------------------- 86ee99c729 | advil | 2022-01-22 15:52:08 -0500 fix: parens -------------------------------------------------------------------------------- d457d2bfb3 | advil | 2022-01-22 15:42:00 -0500 fix: expand item index check from b35b39474d43 Reading and quaffing shouldn't work for this case either (and will crash). -------------------------------------------------------------------------------- b35b39474d | advil | 2022-01-22 15:11:05 -0500 fix: prevent pickup of non-env items via describe actions If an item_def is otherwise valid but is a copy of a real item in `env.items`, and the player is in the right position, this code would allow trying to pick it up and then crash. Add a check for a valid index. (The logic here is patterned off of `invalid_monster_index`.) The immediate effect is on descriptions accessed via stash search, and it would be better to actually allow the (g)et to work in this case, but it may be somewhat unavoidable that stash search is working with copies, so getting (g)et to work will be a bit of a project. -------------------------------------------------------------------------------- a0c2dbb3aa | advil | 2022-01-22 14:54:55 -0500 fix: reentrant calls to show_map via descriptions When viewing a staircase description, you can now use ]/[ in the description popup to go right to the map view on the other side. Since description popups are possible in `X` view, this could lead to weird stacking of map view UIs that were really not designed to happen. There was also a (possibly independent, but I'm not entirely sure) set of bugs where exiting the describe popup wasn't handled right and made the player travel to the stair location. This commit fixes all of this by refactoring `show_map` to allow graceful reentry without creating a new map view layer. Well, the behavior is graceful, the code isn't, but it'll do for now. -------------------------------------------------------------------------------- af8930e228 | nlavsky | 2022-01-22 10:52:22 -0600 fix: unmute the horn of Geryon "A hideous howling noise" was a lie: the horn has never produced a sound. This commit gives the horn a proper noise. -------------------------------------------------------------------------------- 050a50673c | Edgar A. Bering IV | 2022-01-21 15:26:51 -0600 fix: turn down wretched stars corrupting pulse a bit more Temporary mutations were turned down as they don't expire while in the Abyss. Even with that change, a handful of wretched star encounters could quickly add up. A handful of temporary mutations is an interesting challenge to overcome; receiving all of them gets to be a bit much. This commit reduces the casting frequency again, and also makes the chance to apply a temporary mutation scale down with the number of temporary mutations. -------------------------------------------------------------------------------- 3197508d1c | advil | 2022-01-21 15:42:09 -0500 fix: autocreate dgl status file dir (Pinkbeast) On default settings, this is automatically created on login or account creation, but until this happens a lot of warnings are generated by the timeout. I couldn't think of a good reason not to just create it if needed. -------------------------------------------------------------------------------- 8b1c90781f | advil | 2022-01-21 15:14:35 -0500 docs: update webtiles docs (WSL, other tweaks) * Incorporate Pinkbeast's discussion from: http://crawl.montres.org.uk/wsl-webtiles.txt. * Restructure prerequisites vs actually running the server * Note about UTF-8 * Other editing -------------------------------------------------------------------------------- daab1c2f9b | Nicholas Feinberg | 2022-01-20 13:47:34 -0800 Increase flam.wav damage by 20%ish dde70e7af44 was a well-deserved nerf, but overshot somewhat. Let's dial it back the other way. Average damage per round (pre-AC): 0 power 100 power Original 5 25 Post-nerf 4 14 Current 4 17 Easy to make further adjustments. -------------------------------------------------------------------------------- a624279079 | advil | 2022-01-20 16:05:37 -0500 fix: linebreak Y/N popup prompts (ebering) It is very unclear to me whether adding automatic linebreaking would be a good idea to MenuEntry items (which are used for many things), so I added a convenience function that only does this happen on demand, and used it for `yesno` calls. N.b. it works fine on Menu titles, but console regular menu entries do not work with multiline text. I also did a bit of relevant MenuEntry refactoring. -------------------------------------------------------------------------------- 47742a1d20 | advil | 2022-01-20 16:04:46 -0500 fix: tweak console hover rendering on yes/no prompts There is a difference in how hovers render for formatted vs non-formatted menus; this basically results in the hover being the width of the menu for non-formatted ones. Since yes/no menu prompts are pretty variable, this can sometimes be odd (and it's worse if someone overflows the terminal width). So, as a quick workaround, just mark this with MF_ALLOW_FORMATTING. -------------------------------------------------------------------------------- ae24e75c0c | Edgar A. Bering IV | 2022-01-20 14:14:50 -0600 feat: print what can't be picked up when prompting Could be verbose on large stacks with very greedy autopickup, but it's been a big screw for me to not know what is in the cell and have to stop and examine it before answering the "couldn't pick up" question. -------------------------------------------------------------------------------- 2a4342cb04 | Monkooky | 2022-01-20 14:14:50 -0600 feat: prompt to disable autopickup items of a type during autoexplore [ Committer's note: Re-wrote the patch to use more crawl codebase idioms and the new ask_always parameter to yesno previously implemented. Closes #2367. Closes #1873. ] -------------------------------------------------------------------------------- 4ed01045b5 | Edgar A. Bering IV | 2022-01-20 14:14:50 -0600 feat: removed unused yesnoquit It was partially provided to the lua API in 2008 when implementing toll zigurats for prompting if the player wanted to pay. Or at the same time, that ended up using yesno. Subsequently it slowly rotted against the weight of the FIXME: looking to be a real mess and disuse in the main codebase. This might be a pain point for some clua users, but yesno is quite full featured and ternary decisions (yes/no/quit) can be factored into nested binary decisions by those downstream users. -------------------------------------------------------------------------------- fa79eddd99 | Edgar A. Bering IV | 2022-01-20 14:14:50 -0600 feat: add "always" prompting to yesno There's one place in particular where we ask the player a specific question about a one-time situation that we can generalize both technically and sensibly for ui: "Could not pick up an item here" prompts. There may be others, so I've implemented this as a way to prompt for either a one-time or global change. Previously, a general [A]lways prompt was available via yesnoquit, but that has been unused for 6 years, has a FIXME for being a mess, and is missing some updates and modernizations of yesno. -------------------------------------------------------------------------------- 4b4a722d26 | advil | 2022-01-20 13:25:02 -0500 fix: further adjust some format specs `%llu` produces warnings on mac/linux, and the exact definition of size_t is not guaranteed by anything, so use the `%zu` format spec instead. -------------------------------------------------------------------------------- 886a180965 | Zarchan | 2022-01-20 11:46:42 -0600 feat: no more accidental lava related item destruction. Checks if the tile a player is on will destroy items, and if so prompts the player before continuing. [ Committer's note: Closes #2353. Tweaked and specialized the prompt. ] -------------------------------------------------------------------------------- 932a3574db | Zarchan | 2022-01-20 10:22:51 -0600 docs: update monster_list_colour documentation -------------------------------------------------------------------------------- ec4c6a5604 | advil | 2022-01-20 10:45:04 -0500 fix: tweak webtiles mouse hover behavior with multiple popups Previously, if you open a popup over a menu, and closed the popup, the mouse position at the time would determine hover, which can be a bit confusing (especially big menus where the mouse is likely to be somewhere in the menu, and especially for arrow key selection). This keeps hover on the previously hovered item (if any) when focus is returned. We'll see if something even more fine-grained would be better, e.g. suppress hover if previous item was not selected by mouse. It's also still TBD under what conditions if any a pure mousemove (with no leave or enter events) should set the hover, right now it doesn't. -------------------------------------------------------------------------------- 16e8fc0620 | Chris Landry | 2022-01-20 09:26:38 -0600 fix: update wizard armor gen with new egos [ Committer's note: Checkwhite and made consistent with weapon egos. Closes #2373. ] -------------------------------------------------------------------------------- a69ad8bafb | Aliscans | 2022-01-20 09:26:38 -0600 fix: correct spelling of skilful Was "skillful", but this is not a valid spelling according to https://www.australian-dictionary.com.au/wordcheck/. Closes #2372. -------------------------------------------------------------------------------- 83964af658 | Aliscans | 2022-01-20 09:26:38 -0600 fix: correct spelling of wilful Was "willful", but this is not a valid spelling according to https://www.australian-dictionary.com.au/wordcheck/. -------------------------------------------------------------------------------- d61996a82c | Aliscans | 2022-01-20 09:26:38 -0600 fix: pluralise ghosts with the same name as "2 ghosts called " The previous version gave "2 's ghosts", which was poor English. This form of words makes sense if they are ghosts of the same character or of different ones. -------------------------------------------------------------------------------- 903a904aa7 | Chris Landry | 2022-01-20 09:26:38 -0600 fix: some numeric compiler warnings Closes #2369 -------------------------------------------------------------------------------- 4a4240be9d | Aliscans | 2022-01-20 09:26:38 -0600 fix: a compiler warning In _genus_factoring(), mon is set in a loop. This is always set as "types" and "genera" are set in _count_monster_types(), which builds them both from the same list of monsters. This is not apparent to a code coverage tool, so set it to nullptr. Closes #2371 -------------------------------------------------------------------------------- d6fec0f1ec | Edgar A. Bering IV | 2022-01-20 09:26:38 -0600 docs: update CREDITS.txt -------------------------------------------------------------------------------- a72db329a9 | advil | 2022-01-20 09:59:04 -0500 fix: prevent webtiles mouse hover from scrolling This commit tweaks two related pieces of mouse hover behavior: * don't snap a mouse-hovered item into view; this was kind of confusing when it happened (by hovering a partly visible menu element). * apply a tiny bit of margin to what counts as partly visible for mouse hover purposes. This is very heuristic so it may need some tweaking or adjustment for different resolutions. Without this, it's sometimes possible to be hovering something you can't even tell is there. I first consider just making partly visible elements unhoverable by mouse, but this was also confusing. -------------------------------------------------------------------------------- a885d4b3d6 | advil | 2022-01-19 22:14:03 -0500 fix: tweak popup window heights This accomplishes two things: * prevent overlapping with the chat box in most regular browser circumstances, which has bugged me for a while * provide a workaround for the 100vh issue on iOS Safari, by simply leaving more blank space There might be better workarounds available. We'll see if people find the extra vertical space too much, or if it needs some more responsivity. -------------------------------------------------------------------------------- a88e694cbd | advil | 2022-01-19 22:14:03 -0500 fix: exert more control over iOS virtual keyboards The behavior is still somewhat flaky (a few bugs noted in comments), but this commit brings improvements. Basically, it tries to never let anything else but the mobile input box have focus, while the keyboard is displayed -- this is apparently what it takes on iOS to keep the keyboard up. Once it's down, focusing a text input doesn't bring it back up, and despite trying many recipes, I could not find a way to programmatically bring it back up. This prevented several alternative approaches that I considered, e.g. using a timeout. The focus control involved here is quite aggressive and hopefully won't break anything on Android. This also does some better styling of the mobile input box, rather than relying on the browser focus highlight. -------------------------------------------------------------------------------- d61c85c099 | advil | 2022-01-19 22:14:03 -0500 fix: clicking in multiselect webtiles menus Because there were previously no multiselect+ arrow menus, the code was sending enter (which only works for singleselect). For now send space; this commit is a placeholder for a non-keycode-based solution. -------------------------------------------------------------------------------- 6000d10c1c | advil | 2022-01-19 22:14:03 -0500 fix: make canvases non-selectable On touchscreens (ios), it is a bit too easy to long tap and select the canvas, which is then somewhat annoying to undo. This commit isn't a real solution because it is still possible to long top the canvas, but it prevents the canvas itself from being selected. (In my testing, some very thin element to the left of the canvas gets selected?) This means that if you tap the canvas itself the selection disappears. -------------------------------------------------------------------------------- 0a9ec5b959 | advil | 2022-01-19 22:14:03 -0500 fix: suppress click after touchend clickoutside At least on iOS, the click was still getting processed after the popup was closed, leading to spurious things happening. -------------------------------------------------------------------------------- 9c9f7e8d09 | advil | 2022-01-19 22:14:03 -0500 fix: let webtiles mouse dungeon clicks interrupt travel/repeats Previously, the click was just discarded during interruptible travel/repeats. This change will let the fake key enter the key handling queue, and `kbhit()` return true, which is the main check for interrupting such things. I think it's ok to return a keycode unconditionally for click handling, and CK_MOUSE_CLICK is innocuous, but we'll see. -------------------------------------------------------------------------------- 8cf2c06242 | advil | 2022-01-19 22:13:37 -0500 fix: improve mobile input box behavior This commit should prevent spurious shifting (which I believe was happening because the first letter of the input box is capitalized), and hide autocomplete/spelling suggestions at least on iOS. It also attempts to hide the cursor, and uses a placeholder instead of text. (Since anything that tries to edit the box is prevented, this should always be visible, I hope.) -------------------------------------------------------------------------------- 7722353844 | robertxgray | 2022-01-19 22:10:13 -0500 feat: better support for mobile browsers This is a minimum set of features and fixes to make the WebTiles interface playable on mobile browsers. - Added an optional auxiliary input field that can be focused to enable virtual keybards. - Added a new option tile_web_mobile_input_helper to enable or disable the input field. - Fix touch zoom and scroll disabled when a popup is shown. - Allow popups to be closed with touch events. - Fix some minor display issues on small screens. [Committer's note: squashed and edited commit message. Several tweaks aimed at iOS follow in subsequent commits from me. -advil] Closes #2221, closes #2332 -------------------------------------------------------------------------------- ee0477cf1a | Edgar A. Bering IV | 2022-01-19 20:40:53 -0600 fix: a typo (ManiacJoe) -------------------------------------------------------------------------------- 623ef8b387 | Crestwave | 2022-01-19 20:26:13 -0600 fix: add support for Haiku These are patches applied by upstream packagers. -------------------------------------------------------------------------------- 72eb5c4738 | Edgar A. Bering IV | 2022-01-19 19:53:49 -0600 docs: update CREDITS.txt -------------------------------------------------------------------------------- 12e810a91a | Edgar A. Bering IV | 2022-01-19 19:49:35 -0600 fix: update runrest_stop defaults for modern times and old doors Closes #2346, Closes #2368 -------------------------------------------------------------------------------- e87ddf7535 | Edgar A. Bering IV | 2022-01-19 18:54:23 -0600 feat: give out some fancy shields in Snake Give Naga Warriors a chance of getting a good_item shield. Overall this will result in an average of 2-3 good shields per Snake. With the lootfeel shifts of Spider and Swamp, and Shoals' throwing items, Snake was already somewhat distinguished by the chance of getting a kite or tower shield off of a Naga warrior. Adding a small chance for the shield to be fancy should make this pop a bit more as lootfeel. -------------------------------------------------------------------------------- 477bb3ace5 | hellmonk | 2022-01-19 18:43:26 -0600 feat: two new spider ends Adds a broodmother end and a themed ending that only places non-spiders. -------------------------------------------------------------------------------- acdfd95529 | hellmonk | 2022-01-19 18:29:16 -0600 feat: update floodkiller_spider_rune_tomb Add new monsters and some loot, cut density a bit. -------------------------------------------------------------------------------- 1478b6322d | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust arachne_lair spider end Reglyph and add new monsters and loot, fix some substs. -------------------------------------------------------------------------------- dbc70543e1 | hellmonk | 2022-01-19 18:29:16 -0600 feat: update grunt_spider_rune_island Add new monsters and loot, reglyph. -------------------------------------------------------------------------------- 9ca27bf259 | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust grunt_spider_rune_parallel add new monsters and loot, reduce density slightly. -------------------------------------------------------------------------------- 46fceaadd4 | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust guppyfry_spider_rune add new monsters and loot -------------------------------------------------------------------------------- 86b270519b | hellmonk | 2022-01-19 18:29:16 -0600 feat: adjust grunt_spider_rune_circles Add worms and loot, rewrite some of the monster randomization. -------------------------------------------------------------------------------- 85af5c1198 | hellmonk | 2022-01-19 18:29:15 -0600 feat: update and reglyph spider_rune_water Add a few of the new monsters, change trash mob randomization, add some loot. -------------------------------------------------------------------------------- dee6c067ee | hellmonk | 2022-01-19 18:29:15 -0600 feat: loot function for spider ends Not in use yet, but soon? -------------------------------------------------------------------------------- c6f6baafec | hellmonk | 2022-01-19 18:29:15 -0600 feat: two spider minivaults featuring some of the new monsters -------------------------------------------------------------------------------- aeca334d3e | hellmonk | 2022-01-19 18:20:09 -0600 feat: adjustments to non-end spider vaults -------------------------------------------------------------------------------- 9e22a525d0 | hellmonk | 2022-01-19 18:20:02 -0600 feat: two new spider entry vaults -------------------------------------------------------------------------------- 88295113b6 | hellmonk | 2022-01-19 18:19:57 -0600 feat: update spider entry vaults -------------------------------------------------------------------------------- 77cbbf62ba | Aliscans | 2022-01-19 10:58:41 -0500 fix: Make space toggle the selected item in shop menus. Pressing either Space or Return had attempted to buy the selected items. This changes Space to match the effect '.' has, which matches the behaviour b5dea8a184 added to various other prompts. The effect of the space bar remains undocumented. -------------------------------------------------------------------------------- 1695149f81 | Kate | 2022-01-19 06:27:41 +0000 Checkwhite -------------------------------------------------------------------------------- e73e3526bd | Nicholas Feinberg | 2022-01-18 22:03:15 -0800 Cleanup meatsprint des We no longer need to specify ident:all or no_pickup, since both are always true. -------------------------------------------------------------------------------- 95a8017c83 | advil | 2022-01-18 21:00:48 -0500 feat: arrow key navigation for the memorize As a bonus, I made left and right work to move between menu panes, as it felt fairly natural. At some point I'll experiment with generalizing this beyond this menu. -------------------------------------------------------------------------------- 7369b063a1 | advil | 2022-01-18 20:50:27 -0500 feat: arrow selection for spell cast/describe menu Also some minor formatting tweaks. There's still one extremely minor issue I can't track down, where this menu's with changes on ! in webtiles. -------------------------------------------------------------------------------- 52c9ff9b3a | advil | 2022-01-18 20:15:09 -0500 feat: enable arrow selection for ability menu Pretty straightforward, no special tweaks needed that I'm aware of. -------------------------------------------------------------------------------- 2eedf47f95 | advil | 2022-01-18 20:11:35 -0500 fix: improve webtiles menu pageup In menus with variable height menu items, this was occasionally overshooting the last visible. This commit fixes the problem, but for pageup maybe the relative hover position should be handled differently. -------------------------------------------------------------------------------- 99ac4a3411 | advil | 2022-01-18 20:11:35 -0500 feat: stash search menu improvements The ultimate aim of this is to make this menu workable with arrow key selection. Previously, carried item results weren't hotkeyed at all (presumably because travel is pointless), but this didn't quite work for arrow selection. * All stash search results are selectable. * Visually, items at the player's feet and in their inventory are grouped together, and the former are now clearly indicated in the menu. A hotkey (,) quick-moves the menu between these sections. * In travel mode, selecting an item at the player's position doesn't do anything; previously this was true for carried items (because they weren't selectable) but did open for things on the ground. Possibly it would be clearer to do something in this case, maybe a message? Or open a description? These items are also greyed out in travel mode. * Subheads are now cyan for better readability * Various supporting Menu API improvements (including some bits that are probably extremely useful in the future but didn't end up fully needed here.) It would be possible, but I found it a bit confusing on first implementation, to start the menu with the first item not at the player's position selected. Will revisit this on feedback. I think with the , hotkey this isn't as important. Other TBD improvements: the keyhelp could be improved and standardized, I think it might be good to support right click to describe in this menu. -------------------------------------------------------------------------------- 060a6a1bfc | Kate | 2022-01-18 17:22:39 +0000 Fix some spell description typos -------------------------------------------------------------------------------- 417bf1fd16 | Edgar A. Bering IV | 2022-01-18 09:03:21 -0600 fix: a teleport closet (12658) -------------------------------------------------------------------------------- cbc3b0e11f | Edgar A. Bering IV | 2022-01-18 09:00:01 -0600 docs: changelog through 0.28-a0-1557-g548886b -------------------------------------------------------------------------------- 548886b2ed | Edgar A. Bering IV | 2022-01-17 21:53:49 -0600 feat: slightly increase the orb floor drop rate Since orbs, unlike shields, don't come as monster gear currently. -------------------------------------------------------------------------------- 303e8cf5e6 | Edgar A. Bering IV | 2022-01-17 21:53:49 -0600 fix: tune down guile a lil bit -------------------------------------------------------------------------------- 9ae15a6949 | Nicholas Feinberg | 2022-01-17 18:42:51 -0800 Move Passwall check to a better place The confusingly similarly named casting_ and _spell uselessness checks are for different things - casting_ is only for costs, Ru sacrifices, and a few other broad things, whereas whereas spell_ checks everything else. -------------------------------------------------------------------------------- 6f2a123a96 | Nicholas Feinberg | 2022-01-17 18:42:28 -0800 Make Call Imp fight alongside you Typo in 877f77fdfb4cba3a06bde7f51e1239edfa655e6c . -------------------------------------------------------------------------------- 6a8d134351 | Edgar A. Bering IV | 2022-01-17 20:38:49 -0600 fix: restrict passwall's constriction restriction to passwall -------------------------------------------------------------------------------- ad4bc827a9 | Edgar A. Bering IV | 2022-01-17 20:26:09 -0600 text: clarify transmutations spell power effects -------------------------------------------------------------------------------- 877f77fdfb | Edgar A. Bering IV | 2022-01-17 20:00:32 -0600 text: clarify the spellpower dependence of Summonings spells (10906) -------------------------------------------------------------------------------- eb7d2789bd | Edgar A. Bering IV | 2022-01-17 19:03:05 -0600 feat: stop teleporting passwall obstructing monsters (5107, 12041) The player has paid the MP and delay cost, if we can't shift the target abort. The lack of space only occurs in packed vaults and specific vaults and allows for cheesing more than it adds gameplay. Closes #2127 -------------------------------------------------------------------------------- 753840947a | Edgar A. Bering IV | 2022-01-17 18:21:26 -0600 fix: trigger explore traps on passwall end immediately (12647, 11952) The "free turn" exempting players from traps was unintuitive and surprising. Unlike doors and fog, which do bring new tiles into view, remaining completely in place and triggering a trap in a subsequent turn breaks the feel and expectation of trap effects. -------------------------------------------------------------------------------- a3b06d5894 | Edgar A. Bering IV | 2022-01-17 18:04:44 -0600 fix: prevent passwall while constricted Constriction interrupts passwall, but then you can just start again. Not that it's a good idea often, but for consistency with stair delays constriction blocks passwall. -------------------------------------------------------------------------------- 15810a7b44 | Edgar A. Bering IV | 2022-01-17 17:25:48 -0600 fix: treat Passwall like stair and shaft-self delays Treating Passwall like a usual delay, as opposed to a multi-turn move commitment like shaft self and stairs, created all sorts of weird things as documented in Mantis #12239, #11825, and #10961. Treating it like a stair or shaft self delay makes it behave more like "movement" and gives it a consistent set of rules. -------------------------------------------------------------------------------- 957fa82e37 | Edgar A. Bering IV | 2022-01-17 17:25:36 -0600 fix: adjust some inapprorpiate uses of force interrupts -------------------------------------------------------------------------------- 945cd3f27e | Nicholas Feinberg | 2022-01-17 13:35:51 -0800 Fix thunderhulk armour (Nomi) -------------------------------------------------------------------------------- ef8730868c | Edgar A. Bering IV | 2022-01-17 15:15:57 -0600 fix: respect FTILE when destroying terrain Closes #1628 -------------------------------------------------------------------------------- e92cbb8f83 | Edgar A. Bering IV | 2022-01-17 14:20:18 -0600 fix: enrage elven twins taken to duel If a player duels one sibling have the other react as if they're already dead. This is because there are only three ways out of the arena for the player - their death (so who cares) - the death of the elven twin they're dueling (so the twin's gonna be mad when they get back) - renouncing okawaru within the arena to escape (twin's still mad that you dared do such a thing, also a ridiculous edge case) Closes #2325 -------------------------------------------------------------------------------- 7dfede7c9b | Edgar A. Bering IV | 2022-01-17 13:52:20 -0600 fix: the build -------------------------------------------------------------------------------- eb816f4f03 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: set pet_target when using a LOS attack spell Relevant for Hepliaklqana followers in the days of shooting through your Hep ancestor. Closes #2256. -------------------------------------------------------------------------------- 4c6099d30f | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: don't offer to throw_item_no_quiver if you're a cat Closes #2348. -------------------------------------------------------------------------------- b657c59d09 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: keep grey dracs unbreathing in dragon form Since everyone else keeps their breath weapon and grey dracs don't get one they should get this! Closes #2349 -------------------------------------------------------------------------------- 933e3b857f | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: add breaks to a switch statement 467f337aae6 did not intend these fallthroughs. Closes #2350. -------------------------------------------------------------------------------- 9ba09be145 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: don't try to die repeatedly if pending revival Prevent reflection and other misc bound soul related crashes when the revival is triggered by something on the monster's turn. Closes #2323. -------------------------------------------------------------------------------- 5967ad2b6c | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: don't offer unavailable gods in interlevel travel Closes #2315 -------------------------------------------------------------------------------- a1f3fc70dd | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: correct the Xom webtiles moodmeter Closes #2186 -------------------------------------------------------------------------------- 811ca023a5 | Edgar A. Bering IV | 2022-01-17 13:34:55 -0600 fix: a teleport closet in an arrival Closes #2151 -------------------------------------------------------------------------------- ee5c5fb8bb | advil | 2022-01-17 14:04:51 -0500 fix: re-allow `w-` Originates from fc4545441119, because of the new tag, `-` in this menu needed a menu-specific check. Also, generalize this code a bit, and add the macro submenu to the list as well. Resolves #2363 -------------------------------------------------------------------------------- 570b316de1 | advil | 2022-01-17 13:58:17 -0500 fix: default for menu_arrow_control intended to be true, oops -------------------------------------------------------------------------------- 866c7d65e6 | advil | 2022-01-17 13:44:10 -0500 docs: remove a spurious plural I already fixed one mismatch between this heading and ToC but missed the plural. -------------------------------------------------------------------------------- 7af6551d5a | advil | 2022-01-17 13:35:47 -0500 feat: option to disable arrow key menu control I admit that 50% of the reason I'm adding this is so that the 1% of the player base that is enraged by >90s UI features will stop bugging me. But I suspect it could also be useful for accessibility purposes to be able to disable hover in console -- for example I doubt it works well with screen readers without some specific effort that I don't really know how to do. As a side effect this option does disable arrow control for all menus that had it added in the 0.27 cycle. -------------------------------------------------------------------------------- be3f6fb03a | advil | 2022-01-17 11:25:42 -0500 docs: move auto_hide_spells to a different section I think this was probably in 3-a because its consequences do happen during pickup, but I think it's probably more intuitive for it to be in the "Command Enhancements" section with most other spell options. -------------------------------------------------------------------------------- 8903882b62 | advil | 2022-01-17 11:15:20 -0500 fix: swap order in add_alias calls oops -------------------------------------------------------------------------------- 6c7bc2a1f9 | advil | 2022-01-17 11:07:18 -0500 refactor: rename `.._brand` options to `.._highlight` I assume there's some charming retro-roguelike and/or Australian explanation for the use of "brand" here, but it seems completely non-standard now and extremely confusing. I chose "highlight" as a much more intuitive name. I also rewrote a fair amount of the options guide for these beyond the name, partly with an eye towards including all the search terms I initially tried when looking for this code the other day. This is a full internal rename as well. The actual implementation of these options is very odd and could use some refactoring, but I'm not going to do that right now. Needs testing on Windows (CI should be enough). -------------------------------------------------------------------------------- 7e9bcdcf84 | advil | 2022-01-17 10:09:11 -0500 feat: add shift-left/right as line up/down menu shortcuts This is because in my testing I've found terminals that by default only define shift left/right and not up/down, and shift left/right weren't doing anything at all in any menus. For completeness I added this in webtiles also, though shift up/down already worked there. -------------------------------------------------------------------------------- 066c4f1fa3 | advil | 2022-01-17 10:09:11 -0500 fix: correctly handle console shift arrows if defined Previously, the crawl binary got ncurses keycodes that were not ignored by the binary but not interpreted properly. This translates the keycodes to crawl's internal scheme, so that they are recognized by e.g. the menu code. If people had macros for these keycodes they will need to remap. Worth noting that these being correctly produced is pretty variable. E.g. in my testing, iTerm defines all of them, mac terminal defines only left and right, and putty defines none of them. Usually (always?) what happens instead is that the terminal sends the escape codes for regular arrow keys. It would be possible to configure them in at least some terminals using the escape codes that I noted in the comments. -------------------------------------------------------------------------------- e72afd5fc6 | Kate | 2022-01-17 06:53:36 +0000 Don't let monsters try to re-polymorph a polymorphed player Fixes monsters wasting charges and turns emptying their wands of polymorph after already having succeeded at polymorphing the player. -------------------------------------------------------------------------------- 5f3ffaac98 | Kate | 2022-01-17 06:53:36 +0000 Let monsters use spell_logic for zapping wands Doesn't have any effect currently, but makes it possible to add better logic for deciding whether to zap a wand where needed. -------------------------------------------------------------------------------- 8550a1e9b9 | Kate | 2022-01-17 06:53:36 +0000 Mark confusion beams as harmless to monsters with clarity -------------------------------------------------------------------------------- 870370a84a | Kate | 2022-01-17 06:53:36 +0000 Remove Mephitic Cloud's damage It did 0-2 damage, which was mostly insignificant but resulted in it not being consistently marked as useless against targets with clarity (with a hack for the player to mark it harmless unless below 2HP). Instead remove the damage and handle clarity properly. -------------------------------------------------------------------------------- c3277d3759 | hellmonk | 2022-01-16 21:24:36 -0500 tweak some spider monsters Make some of the new spider enemies a little frailer. -------------------------------------------------------------------------------- c307741d3e | hellmonk | 2022-01-16 20:49:56 -0500 feat: tweak layout_spider_delve Adjust parameters to avoid generating big open levels so frequently. -------------------------------------------------------------------------------- be868bca14 | advil | 2022-01-15 22:20:35 -0500 fix: tone down default `may_stab_brand` (G-flex) This was set to yellow, which by default on most terminals is extremely bright as a background color, with poor contrast with many foreground glyph colors. Most players were either used to this and didn't notice, or playing in 8 color putty where this comes out as `brown`, not the brighter yellow that putty is also capable of displaying (but doesn't on default settings). I think `brown` (which is typically a sort of mustard color) has much better contrast on terminals I've tried anyways, and it's not otherwise used for a monster highlight, so let's go with that. -------------------------------------------------------------------------------- 020f416216 | advil | 2022-01-15 21:55:53 -0500 fix: revert main menu hover changes Using lightgrey with a manually inverted foreground color seems safer overall in terms of contrast since this menu doesn't need to ever change foreground color; unfortunately the implementation (which I've just restored) is all a bit ad hoc. Possibly this hover scheme could be better generalized. -------------------------------------------------------------------------------- 37088b3766 | advil | 2022-01-15 21:55:53 -0500 fix: tweak hover color for 8 color consoles This moves it from lightgray to blue, since the latter has much better overall contrast with all foreground colors. -------------------------------------------------------------------------------- 81556d0073 | advil | 2022-01-15 21:55:53 -0500 feat: color/display diagnostic popup The somewhat odd situation has emerged several times recently that console players don't realize that their terminal is running in some variant of an 8 color compatibility mode. First, when allow_extended_colors=true was made the default and people thought 16 color mode was "new", and then more recently, when putty users have been complaining about the new menu hover being too non-contrasty. (I'll actually change that, but this isn't that commit.) This popup provides in-game information that is mostly relevant to console players about what their terminal and options are actually doing. It's largely aimed to make it clear to putty users that something is wrong, but should be more generally useful. For other build targets most of the information isn't relevant, but it still shows the color palettes corresponding to the 8/16 ANSI colors. The popup is slightly hidden, under `?!`. I can imagine a later approach where it is under an "advanced" submenu of the game menu, especially if it eventually becomes an interactive popup. But for now this also lets it be used at the main menu. Still needs testing on windows. -------------------------------------------------------------------------------- 3e5f17529f | advil | 2022-01-15 21:55:53 -0500 feat: support background colors in formatted_string This is not something that I think we should start using much, or really even at all, but it's very useful for diagnostic purposes. -------------------------------------------------------------------------------- e4f4046303 | Kate | 2022-01-15 22:42:27 +0000 Don't allow attempting to enter Malign Gateway portals It was very rarely possible to even try since usually the portal would be blocked by the tentacle, and having it deal a small amount of damage and blink the player is unnecessarily complicated compared to just treating it consistently as a solid feature. -------------------------------------------------------------------------------- 142ac7cd73 | Kate | 2022-01-15 22:42:27 +0000 Don't use Malign Gateways as walls for Creeping Frost (#2359) They're sort of solid for most purposes, but shouldn't be valid targets for Creeping Frost. Closes #2359. -------------------------------------------------------------------------------- 0647d9364e | Kate | 2022-01-15 21:31:10 +0000 Refactor piety gain prevention in the Abyss Fixes a number of bugs: Ru and Ashenzari will no longer offer new sacrifices/curses from exploring or killing monsters in the Abyss, but if the player enters with one already available, they can still gain piety from taking it. Gods in general will no longer give misleading messages about accepting your kills in the Abyss. Beogh will no longer gift new followers or upgrade weapons/armour/classes of existing followers, but will still give existing followers healing. Hints mode won't give a hint about gaining XP for killing a monster in the Abyss. Yredelemnul piety will be properly tracked on gaining zombie followers. Converting to Lugonu or picking your first god as a monk in the Abyss will properly give bonus piety. -------------------------------------------------------------------------------- d0f6b136d3 | hellmonk | 2022-01-13 23:31:53 -0500 feat: shrink some spider bands Make the monster density a little less overwhelming. -------------------------------------------------------------------------------- 5ff2a343f8 | hellmonk | 2022-01-13 23:19:47 -0500 rework orb of destruction damage formulas Removes a secret hidden power stepdown and makes the formula linear. The new formula is roughly equivalent damage to the old at low power, somewhat worse at about 100 power, and very slightly worse at 200 power. Additionally, to emphasize the positional aspect of the spell, change the damage dropoff at low distance to more harshly penalize point-blank iood casts. Distance 1 now deals a wimpy 30% damage (was 50%) and 60% at range 2 (was 70%). Range 3 and above are unchanged. Can be adjusted further if this is an overnerf. -------------------------------------------------------------------------------- 054e75b119 | Kate | 2022-01-14 01:03:26 +0000 Reword an ushabti cast message -------------------------------------------------------------------------------- b10ca78fad | Kate | 2022-01-14 01:00:15 +0000 Fix inventory menu colouring not being used in item menus Possibly the new item selection menus could use a new menu_colour category, but previously they used the inventory category so keeping that behaviour seems reasonable. -------------------------------------------------------------------------------- 3893175d92 | Nicholas Feinberg | 2022-01-12 22:10:48 -0800 Add Summon Hell Sentinel description (Nomi) Oversight in ff29be1aa77. -------------------------------------------------------------------------------- 8c907de6ad | advil | 2022-01-12 19:12:58 -0500 fix: memorise menu ui tweaks * convert to keyhelp, remove custom set_more calls, make keyhelp more consistent with others. * fix various spacing issues, including interactions of search and divine exegesis, search width in local tiles, column alignment consistency. * Indent the more if the title is indented (both tiles targets). I'm not actually sure I like how this looks but it leads to a more consistent UI behavior with console spacing. It also prevents window size jumping in local tiles in various cases. What would be better is if the more column width itself could be adjusted, but that seems extremely hard. The code to generate this menu's keyhelp remains an unholy mess of c and c++ style string formatting. -------------------------------------------------------------------------------- 839a4452db | Nicholas Feinberg | 2022-01-12 11:25:18 -0800 Turn Spider noise back down (ardl) It was quieted down back when web sense was removed, but Spider monsters are a lot more lively now - players don't need as big a party to have fun. We can re-revert this if spider feels too lonely with normal noise. -------------------------------------------------------------------------------- 9e29e62679 | Nicholas Feinberg | 2022-01-12 11:24:43 -0800 Revert "REVERTME: increase orb rate for testing" Initial testing is done. This reverts commit 8dc402e3264e5ac93cec5fabe3b95c5186369434. -------------------------------------------------------------------------------- 98be2d08f0 | Nicholas Feinberg | 2022-01-12 11:24:32 -0800 Revert "force Spider generation for testing" Initial testing is done. This reverts commit be321230710a090a0a22678120c99eebdee71df4. -------------------------------------------------------------------------------- 99b08493b7 | Nicholas Feinberg | 2022-01-12 11:24:19 -0800 Revert "REVERTME: Make infusion gloves very common" Initial testing is done. This reverts commit e3c729c0851fa3275ad841092a6c6a803fe431f6. -------------------------------------------------------------------------------- 21c982267c | Nicholas Feinberg | 2022-01-12 11:04:02 -0800 Halve Anguish damage (ebering) It was a bit much. -------------------------------------------------------------------------------- f88bddc06d | advil | 2022-01-12 13:41:39 -0500 fix: fix hover colors on 8 color consoles and standardize On 8 color consoles, a darkgrey background color as hover shows up as black. This commit uses lightgrey in an 8 color setting instead. Otherwise, I think darkgrey looks better, though it's possible opinions may differ. (If they do, we'll find out soon, since I've applied this standardization to the main menu as well -- it used its own custom hover color.) -------------------------------------------------------------------------------- 61e5acc4d9 | advil | 2022-01-12 13:41:39 -0500 doc: further clarify some console color logic Add a contenful comment to the relevant code, and restructure the options documentation. -------------------------------------------------------------------------------- ab9d7fee88 | Edgar A. Bering IV | 2022-01-12 10:26:41 -0600 feat: reduce poison dart quantity At current quantities a character can always have a mega ammount past the early game, and is incentivsed to use them whenever they lack a stronger ranged alternative at minimal cost. Let's lower the stack size to put a bit more strategic pressure on their use. Poison darts are in a bit of an awkward place relative to their other thrown siblings, it might make more sense to move the poison brand to boomers and have darts only be specialty items, but that's for a future consideration. -------------------------------------------------------------------------------- 3c2d7996e7 | Kiëd Llaentenn | 2022-01-12 09:38:14 -0600 fix: make Trog tantrum if orb of energy is used An orb of energy is primarily used for enhancing spellcasting, so it makes sense that it should be considered a wizardly item and thus that Trog should frown upon its use. -------------------------------------------------------------------------------- 5f9446187d | nlavsky | 2022-01-12 09:37:25 -0600 feat: don't grant explore piety to Jiyva worshippers in the Slime Pits Granting exploration piety in the Slime Pits encourages Jiyva worshippers to fully explore this threat-free branch. A dozen tests show that if the player dives the Slime Pits and joins Jiyva on the last floor, they'll have 63-105 piety from auto-exploring the rest of the branch. The average is 86 piety, which is three stars. Joining Jiyva before entering the branch guarantees that the player will get to 100+ piety and reach four stars after fully exploring the Pits. -------------------------------------------------------------------------------- 253b278887 | Edgar A. Bering IV | 2022-01-12 09:36:08 -0600 fix: throatcutter doll tile -------------------------------------------------------------------------------- 08698888e4 | Edgar A. Bering IV | 2022-01-11 22:14:14 -0600 feat: an untended Ignis altar temple 12 altars with nice plants and roaring votive fires, plus an Ignis altar and some ecumenical altars with sputtering smoke and cobwebs. Less dramatic than pdpol_scorched_temple to tell a more subtued ecumenical story about abandonment. -------------------------------------------------------------------------------- 7e3bb95383 | paul | 2022-01-11 22:14:14 -0600 feat: a rare Ignis-themed temple [ Committer's note: Closes #2219. Tweaked the lava lake room and the tile and console colours, used granite statues instead of stone arches for the broken pillars for consistency. Added water to the smaller rooms and wall contrasts. ] -------------------------------------------------------------------------------- 7d64a5f647 | paul | 2022-01-11 22:14:14 -0600 fix: an off by one error in a temple vault altar count It looks like minmay_temple_bridge_d expects to place 17 or 18 altars but there are only markers for 16 or 17. -------------------------------------------------------------------------------- a01311f068 | paul | 2022-01-11 22:14:14 -0600 fix: a comment on pow_rolls default value -------------------------------------------------------------------------------- a6001f96d0 | advil | 2022-01-11 19:52:28 -0500 feat: add `bold_brightens_foreground=force` Recently it came up that it can be helpful for console readability to be able to use bold weight on bright colors even on modern terminals, not just as a workaround; people (and by people I mean ebering) had been doing this just by using 8 color mode. This commit provides an option to not ignore bold_brightens_foreground in 16 color mode. -------------------------------------------------------------------------------- 24bb901ea4 | advil | 2022-01-11 19:52:28 -0500 fix: more consistent shopping list menu keyhelp Move the shopping list keyhelp to the more, make it more consistent with other keyhelps (especially shops). This also fixes a number of misc base class issues: * correctly handle default keyhelp more init * spacing in default keyhelp * generalize some code for lettering in keyhelps * update_more timing -------------------------------------------------------------------------------- 0a3215c577 | Edgar A. Bering IV | 2022-01-11 17:40:07 -0600 fix: don't feel guilty for choppin firewood Don't cause Anguish damage when attacking firewood. -------------------------------------------------------------------------------- 8196b01e9b | Kate | 2022-01-11 07:31:45 +0000 Fix Xom granting ~4 potions of experience at once Caused by !XP now caring about effect power. -------------------------------------------------------------------------------- 077359a4bf | Perry Fraser | 2022-01-10 20:44:47 -0600 fix: display_bar should clamp negative values * fix: display_bar should clamp negative values If a bar was displayed of something with a negative value (like with EV) then text such as "EV: none (normally )" could be displayed. This function is only used for values that aren't meaningful when negative, so let's clamp any negative values to zero. -------------------------------------------------------------------------------- a4b24466b4 | Edgar A. Bering IV | 2022-01-10 19:31:10 -0600 fix: an anguishing crash -------------------------------------------------------------------------------- da10c1d967 | Edgar A. Bering IV | 2022-01-10 18:44:32 -0600 tiles: throatcutter and maulers (Sastreii) Closes #2322 -------------------------------------------------------------------------------- fc45454411 | advil | 2022-01-10 18:51:03 -0500 fix: disable item class hotkeys in UseItemMenu This adds nothing except surprises, especially the case noticed by ebering, where an optimistic person might imagine that the `r` menu has a help dialog and instead read the first scroll. Implementation is ugly.. -------------------------------------------------------------------------------- 7509e2a2af | Perry Fraser | 2022-01-10 17:22:17 -0600 fix: phial should always engulf the center target Previously, if the phial of floods knocked a target back onto a non-floor or water feature like a staircase, then no flooding would generate at that location (fine) and consequently no waterlogging/engulfing (not fine). Let's instead make create_feat_splash return a set of coordinates, and add back the center location before iterating over monsters to waterlog. Closes #2331. -------------------------------------------------------------------------------- 744777c2d9 | advil | 2022-01-10 18:20:58 -0500 feat: enable arrow keys for shopping list menu Also, improve the behavior of a subprompt for long item names. -------------------------------------------------------------------------------- 74d9c6da68 | advil | 2022-01-10 18:20:58 -0500 fix: show hover by default for shop menu -------------------------------------------------------------------------------- 486f26dfa3 | Edgar A. Bering IV | 2022-01-10 17:19:12 -0600 fix: an intermittent levelgen crash An operator precedence bug. The necessary check is covered by !feat_is_gate in the changed conditional. -------------------------------------------------------------------------------- 273aa18710 | advil | 2022-01-10 17:35:54 -0500 fix: don't check gold for MSG_NOTHING_CARRIED -------------------------------------------------------------------------------- 7cf701f5d5 | advil | 2022-01-10 17:35:54 -0500 fix: don't crash when cycling hover on an empty menu This is an old one, but I guess it's harder to trigger without item menus. -------------------------------------------------------------------------------- 6dc9c6bb35 | Perry Fraser | 2022-01-10 16:31:03 -0600 fix: properly describe moving staircases When you climbed down a staircase while Xom was sliding them around, you could get the message " slides away from you right [...]". The stair was being described by feature_description_at which only uses the player map knowledge, which means the staircase would be DNGN_UNSEEN. This uses feature_description instead to get around that. -------------------------------------------------------------------------------- 56126dae6c | advil | 2022-01-10 17:24:17 -0500 fix: properly sync non-templated mores to webtiles -------------------------------------------------------------------------------- 62e843ad78 | advil | 2022-01-10 17:07:09 -0500 fix: crash during settings_db initial generation Reported by @Walther in #2332 -------------------------------------------------------------------------------- 442d625886 | advil | 2022-01-10 17:06:53 -0500 fix: don't send crash milestones over webtiles sockets This appeared in 6ef7baa362 but shouldn't be applied to the case of crash milestones. (a) this code is super heavy and not safe after a crash, and (b) it has timing issues with the socket closing, and so was causing recursive crashes on a dead socket. (This is why no crash milestones have appeared for the last couple weeks, they've all been recursive crashes which don't generate milestones.) To be clear, after this commit crashes will still be written directly to the milestones file. -------------------------------------------------------------------------------- 981f6e296f | robertxgray | 2022-01-10 15:43:02 -0600 fix: check negative energy resistance when casting vampiric drain The game doesn't warn the player when casting vampiric drain on natural monsters with immunity to negative energy (Josephine). -------------------------------------------------------------------------------- 841984c3b6 | Aliscans | 2022-01-10 15:33:48 -0600 fix: stop artefact amulets of faith from flashing on first worshipping Gozag The game checked ignore_faith_reason() when a non-demigod puts on an amulet of faith, and checked is_useless_item() when one committed to a god. These give different results for artefacts (which are never considered "useless"). It now checks ignore_faith_reason() in both cases, and there is no special message when a character wearing an amulet of faith worships Ashenzari, Gozag or Ignis. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 8b0d500728 | Aliscans | 2022-01-10 15:31:07 -0600 feat: mark identify scrolls as useless once everything is identified. Create a "have identified all potions and scrolls" prop. Scrolls of identify are treated as useless if it is set. It's updated on game load if the version has changed, and also whenever set_ident_type() changes something. This also refactors several checks for complete identification to check this prop. [ Committer's note: Closes #2244. Added Mu special casing. ] -------------------------------------------------------------------------------- 6790c33dfa | advil | 2022-01-10 15:57:59 -0500 fix: don't divide by 0 in keyhelp rendering missed because clang doesn't crash, gcc does -------------------------------------------------------------------------------- 1e88248612 | advil | 2022-01-10 15:04:48 -0500 fix: update acquire menu to work with item menu changes The acquire menu had its own custom keyhandling for some reason; this commit removes this and uses the `Menu` default keyhandling. It also updates this menu's keyhelp to use the new API (and fixes some issues in that API that I had missed). -------------------------------------------------------------------------------- 30118fcd2b | advil | 2022-01-10 15:04:48 -0500 fix: remove old cursor code This has been semi-broken for some time, completely broken on webtiles, and was also a fairly bad implementation of the idea to begin with. It is superseded by the new hover code, so let's just kill it completely. -------------------------------------------------------------------------------- b5dea8a184 | advil | 2022-01-10 15:04:48 -0500 feat: arrow key controls for item menus This ended up being a fairly big change that needed to be mostly done at once. This affects every item menu except stash search and shopping list (which I'll do in a later commit). Because this affects a *lot* of different UI elements, there may be some more testing needed... Menu-general changes: * Arrows controlling hover is fully implemented for multiselect menus (previously only for singleselect menus). In webtiles and tiles, shift+arrow have the old behavior, but I haven't gotten this to work on console. * MF_ALWAYS_SHOW_MORE is removed; a more is now visible iff it is non-empty. * New flag, MF_INIT_HOVER: if set, show hover on initial display. Previously menus have needed to manually call `cycle_hover`. This is on for all item menus except the regular inventory. * New virtual method, get_keyhelp: generate a keyhelp more for both the case of a menu with scroll bars, and a menu without. Designed to be overridden, see the known item menu for an example. * scroller keyhelp is shown in more cases and fully implemented in tiles targets (before it was only complete for console) * Many hover issues fixed and tweaked, especially in webtiles * Old multiselect cursor stuff is disabled, will be removed in a separate commit * In multi-select menus '.' does not change the hover. (If people want a key that does this it could be arranged, but it isn't so clear anyone has been using the old cursor -- it was broken on webtiles anyways.) Item menu changes: * MF_ARROWS_SELECT is on for any item menu unless it is MF_NOSELECT * Bugs in multiselect category selection fixed, category selection snaps category into view UseItemMenu: * better indication of `easy_floor_use`. (Though, from a UI perspective, I'm not a fan of this being on by default, it's not very consistent...) * hovering can cross that inv/floor boundry and reletters items when it does so. (Needs to ping the server on webtiles unfortunately.) -------------------------------------------------------------------------------- cdc11d4697 | advil | 2022-01-10 15:04:48 -0500 refactor: remove `easy_quit_item_prompts` (wheals) Since c5434703b61cb9, these prompts have been quite hard to get to, and are perhaps on the verge of disappearing altogether. I think this option may have also targeted worry about some potential item-wasting cases (maybe enchant scrolls and the like), but if so, these cases are long gone as well. At this point, this micro-option doesn't serve much purpose, so remove (retaining the current default behavior). -------------------------------------------------------------------------------- 20fba0d420 | advil | 2022-01-10 15:04:47 -0500 refactor: simplify drop ui Previously, the drop menu would let you drop to a prompt by hitting enter with nothing selected. This is not very useful, and the code was a mess; plus I plan to change the behavior of enter somewhat in a later commit. (I guess there may be players out there who will need to remap enter+letter to letter+enter at the worst?) If there's really demand for the prompt mode it may be better to integrate it with prompt_invent_item and get a working codepath for the toggle. But for now just make this function much more straightforward -- as of this commit, enter with nothing selected just exits. -------------------------------------------------------------------------------- 95bfa34988 | advil | 2022-01-10 15:04:47 -0500 feat: clean up and generalize menu keyhelp code This commit generalizes the keyhelp code and makes most of it less client-specific: * show scroll keyhelp on all clients * refactor the templating code for adding in the percent so that it can be used on local tiles and is a bit less ad hoc (it's still weird though). * refactor so that keyhelp can be overridden. -------------------------------------------------------------------------------- 84980b0d82 | advil | 2022-01-10 15:04:47 -0500 fix: adjust shop keyhelp The right-click hint is only accurate for local tiles; for webtiles any click outside will work but a right-click inside will not -- too complex to describe, but also now standardized. -------------------------------------------------------------------------------- 370c3107d9 | advil | 2022-01-10 15:04:47 -0500 fix: modernize some inventory code -------------------------------------------------------------------------------- dc4cd7eb33 | Edgar A. Bering IV | 2022-01-10 13:53:10 -0600 fix: don't scan for unlinked items midway through abyss vault generation -------------------------------------------------------------------------------- 66ff00425e | Goratrix | 2022-01-10 11:01:11 -0600 fix: small tweaks to crystal spear projectile tiles Correct size and remove stray pixel in crystal_spear1.png and clean up the rest of the tiles. -------------------------------------------------------------------------------- d6a3831c70 | Nikolai Lavsky | 2022-01-10 10:54:02 -0600 feat: display potion/scroll rarity on the item knowledge screen As a followup to 2f15ad60, this commit makes it easier to compare potion/scroll rarities by displaying all of them on one screen. When deciding which unidentified consumables to use in order to survive, players often check the `\-` screen to see possible outcomes. So it makes the item knowledge screen a perfect place for this information. -------------------------------------------------------------------------------- aeb352d00f | Perry Fraser | 2022-01-10 10:35:06 -0600 fix: skip title on tiles integration tests -------------------------------------------------------------------------------- 78a2654a08 | Edgar A. Bering IV | 2022-01-10 10:30:02 -0600 text: update some Yred translation keys -------------------------------------------------------------------------------- 374218e70b | Zhang Kai | 2022-01-10 10:29:21 -0600 text: update Chinese translations of ability.txt Add translations. 增添翻译。 [ Committer's note: Fixed whitespace, Closes #2203. ] -------------------------------------------------------------------------------- 9084b0ae73 | Aliscans | 2022-01-10 10:11:47 -0600 fix: remove references to Hell from feat_is_branch_exit() Delete DNGN_ENTER_HELL, as the function returns false whether it's listed separately or not. Delete DNGN_EXIT_HELL and feat_is_hell_subbranch_exit(), and adjust the callers to accommodate this. This should not affect game behaviour. Also remove feat_is_hell_subbranch_exit() from is_feature_fudged(), as is_feature() now returns true for these and CMD_GO_UPSTAIRS. -------------------------------------------------------------------------------- a2056f7337 | Aliscans | 2022-01-10 10:11:47 -0600 fix: remove references to Hell from feat_is_branch_entrance() feat_is_hell_subbranch_exit() can simply be deleted, as the function returns false whether it's listed separately or not. The response to DNGN_ENTER_HELL changes from false to true, so change the functions which call it to accommodate this. The things which should behave differently are: - Hints mode now treats DNGN_ENTER_HELL as a branch entrance. - In lua (dlib), is_branch_entrance() now returns true for DNGN_ENTER_HELL. This isn't used in the Crawl source at present. -------------------------------------------------------------------------------- 2965a4dc42 | Aliscans | 2022-01-10 10:11:47 -0600 refactor: split DNGN_ENTER_HELL into one feature per destination Replace DNGN_ENTER_HELL with DNGN_EXIT_COCYTUS, DNGN_EXIT_DIS, DNGN_EXIT_GEHENNA or DNGN_EXIT_TARTARUS for gates leading out of those branches. This means that the descriptions for these are more appropriate, and makes it easier to change how one of them looks in a console build. [ Committer's note: Closes #2173. Tweaked descriptions and made these PORTAL_EXIT features. ] -------------------------------------------------------------------------------- b131497017 | Edgar A. Bering IV | 2022-01-10 09:31:43 -0600 fix: ensure Mennas never speaks across attitude changes Closes #2330 -------------------------------------------------------------------------------- a049f037fa | Edgar A. Bering IV | 2022-01-10 09:27:31 -0600 feat: some bound Donald dialog -------------------------------------------------------------------------------- c586ae71bd | Edgar A. Bering IV | 2022-01-10 08:29:55 -0600 fix: clarify shallow water's effect on large movement Closes #2345 -------------------------------------------------------------------------------- a5a8893891 | Edgar A. Bering IV | 2022-01-09 17:46:38 -0600 fix: a teleport closet in Nemelex: the Gamble Closes #2138. Closes #2126. -------------------------------------------------------------------------------- 47dfaac58e | DreamDust | 2022-01-09 17:23:04 -0600 fix: prevent breaking level connectivity (#2137) Closes #2039 Adds extra padding to nicolae_take_the_stairs -------------------------------------------------------------------------------- 108eccecdf | Aliscans | 2022-01-09 17:21:26 -0600 fix: use the standard names for monsters in "comes into view" messages. (#2132) Change the "comes into view" messages to use the names the game normally uses for each monster by preference, rather than a name based on the monster type. This particularly affects dancing weapons and ugly things. The game still uses different names (based on the "genus") when a lot of different monsters come into view at once. This should fix bug #0012649. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 6c55d0bc0c | Edgar A. Bering IV | 2022-01-09 16:07:00 -0600 feat: display to hit chance for targeted drac breath weapons Closes #2165. This also resolves some internal todos around zap mappings for breath abilities. -------------------------------------------------------------------------------- c9894997ea | Kate | 2022-01-09 21:27:37 +0000 Adjust Kiku book gift logic Add Anguish as an option to the second book, move Agony from the second book to the first, and rework the logic for picking spells. The first book now guarantees Animate Skeleton, and then picks 3 spells at random from Pain, Corpse Rot, Sublimation of Blood, Vampiric Draining, and Agony. The second book guarantees Animate Dead, then picks 4 from Anguish, Dispel Undead, Borgnjor's Vile Clutch, Excruciating Wounds, Death Channel, and Simulacrum. This simplifies much of the logic while retaining the guarantee of a corpse-using spell in each book, and slightly increases the variation in spell choices for each book. -------------------------------------------------------------------------------- de96f65983 | Kate | 2022-01-09 21:27:37 +0000 Update options_guide defaults -------------------------------------------------------------------------------- 6bfe6b3ffa | Kate | 2022-01-09 21:27:25 +0000 Apply coding conventions -------------------------------------------------------------------------------- 6a3f3e4ae6 | Nicholas Feinberg | 2022-01-09 12:48:20 -0800 Fix a crash? -------------------------------------------------------------------------------- 7e5176108a | Nicholas Feinberg | 2022-01-09 11:48:21 -0800 Fix a name mispelling For years, I was very confident I knew how to spell Yred's name. For years, I was wrong! Oops. -------------------------------------------------------------------------------- 467f337aae | Nicholas Feinberg | 2022-01-09 11:34:41 -0800 New spell: Anguish (L4 Hex/Necro) With Yred's Injury Mirror ability removed, the design space of 'retalation damage' that it occupied has become open. Anguish puts a different spin on that idea, causing affected monsters to take twice the damage they deal for the duration of the affect. Assorted notes: - The theme is 'haunted by the damage you've done'. Horrible, supernatural visions of the wounds you've caused appearing on your own body, that kind of thing. - For flavour reasons, it doesn't work on mindless creatures, but it does work on intelligent demons and undead. - It's not a straight port of Injury Mirror as a player-based duration, largely because, without the piety cost of Injury Mirror, it'd suffer from the 'buff problem' of something you'd want to have online at all times. Probably there's some way to deal with that, but in general, Crawl spells work better as things you cast on enemies. - It's taken Corona's spot in the status effect icons, because Corona is now a somewhat uncommon effect on monsters (mostly just from Ru retaliation?) and not that important. We should strongly consider refactoring the status effects to not be packed into a single int, either by adding a second int (lol) or by using a list like sane people. We don't need to scrounge for a few dozen bytes per monster... it's 2022, for heaven's sake. - It's Hexes because it checks Will and I wanted to make a hex, and it's Necromancy for flavour (somewhat difficult to conceptualize as pure hexes) and to suggest fun synergy with undead allies. (Enemies hitting your zombies triggers anguish too, which is big thematic!) - I'm very unsure about balance. Lots of levers and knobs to pull, so let's try it out! -------------------------------------------------------------------------------- af83eef3db | Nicholas Feinberg | 2022-01-09 09:55:52 -0800 Remove support for Yred injury mirror Since it was removed in b4513a33dfc258858182bc1aa8ffa57d82efba1c . -------------------------------------------------------------------------------- aff854cc17 | Nicholas Feinberg | 2022-01-09 07:39:54 -0800 Give XP for frenzied monsters' deaths Frenzied monsters (from orbs of mayhem, Discord, or datura darts) gave no XP due to a detail of their implementation. In general, it's better for players to get XP for their kills (mostly for reasons of 'fun'), so let's fix that here. Balance issues are best handled through other mechanisms. -------------------------------------------------------------------------------- 82390b3a13 | Edgar A. Bering IV | 2022-01-08 11:31:44 -0600 fix: don't strip ashenzari abandoners naked (Aliscans) -------------------------------------------------------------------------------- 0490bf50c2 | Nicholas Feinberg | 2022-01-08 09:20:02 -0800 New hats (CanOfWorms) This code is very bad. -------------------------------------------------------------------------------- ec1d49878b | Nicholas Feinberg | 2022-01-08 08:34:59 -0800 Woodcutter/dreamshard tiles (Sastreii) Like a dream... keep trying, skeleton -------------------------------------------------------------------------------- 39c23d704c | Nicholas Feinberg | 2022-01-08 08:30:36 -0800 Update waypoint docs (Slacking) Don't claim that show_waypoints exists; it hasn't for quite some time. (Since f2373cbd01457d94902, 2016.) -------------------------------------------------------------------------------- 3e8e36ac5f | Edgar A. Bering IV | 2022-01-08 10:06:31 -0600 fix: nerf seracfall Reviewing tvs and play data, wendigo had big assists with shard shrikes (whose prevalence was turned down). Cocytus remained an outlier among the hells, with wendigo getting the lion's share of hell kills. So let's tone down seracfall damage a bit. -------------------------------------------------------------------------------- a82b073101 | Edgar A. Bering IV | 2022-01-08 09:43:47 -0600 fix: use abyss regeneration for wizard level regeneration Closes #2342 -------------------------------------------------------------------------------- f3d713df7a | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 refactor: give !xp power scaling -------------------------------------------------------------------------------- d764ef0d23 | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: give an XP reward for the abyssal rune With the abyss now stripped of most rewards, let's give the rune a stronger incentive. It gives a potionlike effect for potions of XP equivalent to two potions of XP (due to how its implemented it gives slightly less skill XP than quaffing two !xp, but it's still a nice blob of skill XP and two XLs). -------------------------------------------------------------------------------- d21ca1c0ff | Kate | 2022-01-07 14:43:57 -0600 feat: make Abyss exits and staircases slightly more common With the changes to prevent scumming for XP or items in the Abyss, make exits slightly more common to try and make Abyss trips tend to be shorter (especially for characters that reach/are pulled to greater depths). -------------------------------------------------------------------------------- 6c1bee596d | Kate | 2022-01-07 14:43:57 -0600 feat: reduce wretched star malmutation rate Since it's no longer possible to work off temporary mutations while in the Abyss, make wretched stars only ever apply 1 bad mutation at a time with Corrupting Pulse, and reduce its casting weight so that it's more likely to be possible to deal with them without racking up a huge amount of bad mutations for the current Abyss trip. -------------------------------------------------------------------------------- 010f2a2272 | Kate | 2022-01-07 14:43:57 -0600 feat: don't grant piety in the Abyss Alongside XP gain and item generation, it also shouldn't be possible to gain piety in the Abyss, or to goldify corpses under Gozag. Uskayaw is an exception, since the piety isn't persistent, and likewise Yredelemnul still works normally. -------------------------------------------------------------------------------- 3b305989a8 | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: increase abyss plunge rate The chance to fall deeper into the abyss is meant to increase the challenge, discourage scumming at high levels, and speed strong characters to the rune encounters. The chance is a bit low, this tunes it up. -------------------------------------------------------------------------------- 578a0bbfb4 | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: remove abyss random item generation The second half of abyss scumming, collecting consumables on Abyss:1 and departing promptly on the first offered XP gate exit. Again, this has historically been regarded as not-worth-the-risk, but the shifting nature of the end game means that balance has changed. Vaults can still place items, but vaults are scary and sufficiently rare that this should be low enough percentage to be not a good idea to scum. -------------------------------------------------------------------------------- fcf540680d | Edgar A. Bering IV | 2022-01-07 14:43:57 -0600 feat: prevent gaining experience in the Abyss Abyss scumming has been present in the game for a long time, a lingering design wart where the running thinking is that the risks outweigh the benefits. With the changes to the Hells and Tomb this wisdom is a bit lackluster; indeed the strategic damage of the Hells can be countered by "working off" the stat and HP drain in the abyss. This commit locks out progress towards all XP-gated effects except the abyss progress timer. The player gets messaging to show Abyss monsters grant no rewards. -------------------------------------------------------------------------------- 19973ebb7a | Nicholas Feinberg | 2022-01-07 11:29:03 -0800 Fix some mutation comments -------------------------------------------------------------------------------- 79b0f14e7e | Nicholas Feinberg | 2022-01-07 11:27:09 -0800 Fix a mutation crash? -------------------------------------------------------------------------------- a4934feff6 | Kate | 2022-01-07 18:27:16 +0000 Remove the strength bonus from bite damage It was the only attack remaining with a special-cased stat bonus on top of the regular stat multipliers, and it was mostly an insignificant bonus. Increase base bite damage by 1 for bite attacks (which does include VS bite bite although this didn't previously benefit from the strength bonus), and give Dragon Form an effective extra 2 levels of fangs since this would be the main case where the strength bonus was actually noticeable. -------------------------------------------------------------------------------- ed6f2ea202 | Nicholas Feinberg | 2022-01-07 09:45:50 -0800 Remove a misleadingly named function undead_mutation_rot sounded like it would rot the player for trying to mutate. But it was just a thin alias over a bool check! -------------------------------------------------------------------------------- 8ce13c4dff | Nicholas Feinberg | 2022-01-07 09:43:38 -0800 Simplify delete_mutation() (gammafunk, Sauken) Replace a complex and hard-to-reason about loop with some classic unweighted reservoir sampling. -------------------------------------------------------------------------------- 082bef1587 | Nicholas Feinberg | 2022-01-07 08:02:30 -0800 Remove many diverse spells (dilly) RIP big spellbooks. -------------------------------------------------------------------------------- 7c84da036a | Nicholas Feinberg | 2022-01-06 18:33:56 -0800 Remove most angel sInv (Yermak) Largely redundant with haloes. Seraph keeps it as a 'boss', and profane servitor of course has an unhalo. -------------------------------------------------------------------------------- c19253909b | Nicholas Feinberg | 2022-01-06 18:17:08 -0800 Remove sInv from guardian mummies (kate) Plenty of other Tomb enemies still have it, and it's odd for guardian mummies to keep sInv while the 'higher threat' mummy priests don't. -------------------------------------------------------------------------------- 493c1fd462 | Nicholas Feinberg | 2022-01-06 18:09:36 -0800 Strip sInv from various enemies Now that Invisibility isn't a player-castable spell, we can dial back on monster sinv and prune it off some monsters. This cuts sInv from: - shrikes (both) - orc high priests, deep elf high priests, mummy priests, hierophants - water nymphs - ancient zymes, worldbinders, tentacled starspawn - jiangshi - shadow imp, chaos spawn, sun demon, ynoxinul - mlio minderbender, grinder, rupert Things that still have sInv: - spriggans, nagas, trolls and jellies - vault guards - "wizards" (some) - high-tier demons & all angels - some statues and some other stuff Plausible that more pruning is called for in future. -------------------------------------------------------------------------------- f95308ed99 | Kate | 2022-01-06 04:12:50 +0000 Add an ability targeter for Hepliaklqana Idealise -------------------------------------------------------------------------------- a4a8cb2b72 | Nicholas Feinberg | 2022-01-05 19:50:16 -0800 Remove the Tomb of Dorokhle Enormously complex, very weird (it'd turn into Blink in various cases?), and rather pointless. -------------------------------------------------------------------------------- 445fb3080f | Nicholas Feinberg | 2022-01-05 19:41:24 -0800 Add Enfeeble tile (Sastreii) -------------------------------------------------------------------------------- 32e282a20f | Kate | 2022-01-06 02:17:53 +0000 Simplify Jiyva tendril disarm chance To not check strength/dexterity - just use a straight monster HD check, and don't give "fighter" tagged monsters a bonus to their HD. -------------------------------------------------------------------------------- 0b286ecb3d | Kate | 2022-01-06 02:12:11 +0000 Fix retaliation dealing 0 damage with Confusing Touch active -------------------------------------------------------------------------------- 2894324c5e | Kate | 2022-01-06 02:12:11 +0000 Adjust Minotaur retialiation chance To be based on XL instead of stats, as with other incidental strength and dexterity checks. Now grants around a 25% chance to retaliate at XL1, and around a 50% chance at XL27, which is comparable to the previous chances for a Minotaur with average stats. -------------------------------------------------------------------------------- a8dd43b1d0 | Edgar A. Bering IV | 2022-01-05 11:34:09 -0600 tiles: radioactive spikes (Sastreii) -------------------------------------------------------------------------------- 7885d49575 | Edgar A. Bering IV | 2022-01-05 11:17:34 -0600 fix: account for orbs in invis_allowed (#12662) -------------------------------------------------------------------------------- 4df0f3684d | Edgar A. Bering IV | 2022-01-04 22:05:20 -0600 fix: spacing -------------------------------------------------------------------------------- ffcb275ae5 | Kate | 2022-01-05 02:18:06 +0000 Increase kite shield and tower shield encumbrance They were tuned a little low with the new formula. Tower shields now have similar penalties (for normal-sized species) to before the rework, and kite shields still have lower penalties until around 8 skill. -------------------------------------------------------------------------------- ee2755802b | Kate | 2022-01-05 01:41:15 +0000 Refactor aux attack accuracy Factor in some accuracy bonuses/penalties that previously weren't handled for aux attacks (palentonga roll/transformation/halo bonuses, and invisibility/umbra penalties), and don't make Confusing Touch affect aux attack accuracy or damage. -------------------------------------------------------------------------------- 4b82a7ed23 | Kate | 2022-01-05 01:41:15 +0000 Rework offhand punch checks Simplify the check for offhand punches and make them overall slightly more likely to trigger - don't make heavy armour reduce the chance of punching, and get rid of Octopodes' improved chance for offhand punches (they still the benefit of being able to punch with a shield/two-handed weapon). All species instead have a 5% chance to trigger an offhand punch that scales with unarmed combat skill to a 50% chance at max skill (compared to a a 33% chance previously at 20 UC or higher). -------------------------------------------------------------------------------- 3a1cdb9d31 | Kate | 2022-01-05 01:41:15 +0000 Base aux attack chance on XL instead of str+dex Aux attacks had a fairly obscure chance to trigger based on str+dex, followed by various other specific checks depending on the type of attack. Simplify by making the initial check depend only on XL, scaling from just over 50% at XL1, up to near 100% at XL27. -------------------------------------------------------------------------------- 7b68f1b707 | Kate | 2022-01-05 01:41:15 +0000 Rework shield penalties To remove the hard skill thresholds for shield skill training, rework shields to use a similar formula to armour encumbrance, with the penalties being fully removed at 27 skill. The new formula is: 2/5 * shield_penalty^2 / (20 - 3 * racial_factor) * (27 - shield_skill) / 27 where shield_penalty is 5 for bucklers, 9 for kite shields, and 13 for tower shields, and racial_factor is -2 for large species and formicids, 0 for medium species, 2 for kobolds, and 4 for spriggans. -------------------------------------------------------------------------------- d379f8d934 | Nicholas Feinberg | 2022-01-04 17:26:20 -0800 Remove an unused attack field -------------------------------------------------------------------------------- 2cf8304be8 | Kate | 2022-01-05 00:53:55 +0000 Fix halo descriptions on '@' Broken since 44cf67ff301, oops. -------------------------------------------------------------------------------- dcb3f3653b | Kate | 2022-01-04 17:59:36 +0000 Update the quickstart guide It's an ancient relic either way, but still! -------------------------------------------------------------------------------- 4f6bc678fa | Nicholas Feinberg | 2022-01-03 14:44:42 -0800 Remove to-hit penalties from armour & shields These were so small as to be unnoticeable in almost all plausible cases. There are already many interesting tradeoffs from wearing heavy armour & shields; we don't need to complicate things further. -------------------------------------------------------------------------------- c92c38d8fe | Nicholas Feinberg | 2022-01-03 14:02:34 -0800 Fix to-hit display of armour/shield penalties What a ridiculous bug! This has been broken for the last 1.5 years, since I added it in 5b8897f42da . Simply too many randoms... -------------------------------------------------------------------------------- bd29554cb1 | hellmonk | 2022-01-03 16:34:23 -0500 reduce meliai frequency in spider -------------------------------------------------------------------------------- b5fd6dc846 | Nicholas Feinberg | 2022-01-03 11:05:40 -0800 Don't allow omnireflecting vampiric draining (Grit) Your +3 warlock's mirror {reflect} reflects the Vampiric Draining! INVALID YOU_FAULTLESS draws life force from the deep elf death mage! Would be nice to fix this instead, though I'm not sure what the correct behaviour would be. Would need to poke at _vampiric_draining_effect for a bit. -------------------------------------------------------------------------------- cbb8a028cc | Nicholas Feinberg | 2022-01-03 11:00:05 -0800 Allow scorch recasts to refresh duration (Snakku) -------------------------------------------------------------------------------- fede4e8891 | Nicholas Feinberg | 2022-01-03 10:53:02 -0800 Remove old shaft immunity Obsoleted by the removal of multiple explore traps per branch (in 2ccdadd). -------------------------------------------------------------------------------- c726bef33b | Kate | 2022-01-02 19:24:15 +0000 Simplify Gozag gold distraction (hellmonk) Instead of using bernoulli trials and reducing the chance to gain stacks depending on the number of current stacks, make gold distraction a simple 3% chance per stack to distract, capped at 10 stacks, and with all valid kills increasing the stack count. -------------------------------------------------------------------------------- 3b246a18e6 | Kate | 2022-01-02 18:46:36 +0000 Reduce Ashenzari's skill boost (again) It was still very overtuned after the previous reductions (and is probably still pretty generous even after this change) - 4 boosts are now equivalent to the old fully bound boost. -------------------------------------------------------------------------------- 3a22ab9bdc | Nicholas Feinberg | 2022-01-01 14:31:22 -0800 Restore 0.26 acquirement frequency (perryprog) Looks like it got drastically boosted at some point. Not clear how. -------------------------------------------------------------------------------- 95c3d9ec3d | Kate | 2022-01-01 22:12:49 +0000 Let autofight target frenzied monsters (nicolae) -------------------------------------------------------------------------------- cb2c1687f3 | Nicholas Feinberg | 2022-01-01 13:57:53 -0800 Add some lovely puppies (Sastreii) New tiles for Pharaoh Ants, Jorogumos, and Broodmothers. -------------------------------------------------------------------------------- b830f16b3f | advil | 2022-01-01 14:24:28 -0500 feat: improve mouse handling for message pane input * Don't lose focus when clicking on random stuff. Before you could click on e.g. the dungeon and nothing would happen, except that the input would lose focus. * With tile_web_mouse_control, right click exits a prompt by sending esc. (This could also accept left click, maybe outside of the message pane, but in my testing this seemed too prone to misclicks.) * Smooth over trading focus with the chat pane -------------------------------------------------------------------------------- 7516f22de0 | advil | 2022-01-01 14:24:28 -0500 fix: add a missing Error instance in webtiles -------------------------------------------------------------------------------- 92835e5c71 | Kate | 2021-12-31 21:11:24 +0000 Add some newlines in ammo descriptions -------------------------------------------------------------------------------- 5f6e48996a | Kate | 2021-12-31 21:10:36 +0000 Make blindness, frenzy, antimagic and daze dispellable Partially going back on a previous commit (8836bdb7) - frenzy was made undispellable since various other dart effects were also undispellable, but this approach doesn't really work consistently, since most monster enchantments can be applied by multiple different sources (eg frenzy can be applied by Discord as well as orbs of mayhem and darts of datura) and it's unclear why effects like this wouldn't be considered dispellable. -------------------------------------------------------------------------------- dd239049a3 | Kate | 2021-12-31 20:21:56 +0000 Allow attacking frenzied monsters normally Unlike regular neutral monsters, they don't turn hostile when attacked, so there's no reason to have any restrictions on attacking them. -------------------------------------------------------------------------------- bf4c3871c4 | advil | 2021-12-31 14:29:09 -0500 fix: don't ignore game menu exit button Yet another fix of a fix -------------------------------------------------------------------------------- 9884ec658a | advil | 2021-12-31 14:24:25 -0500 refactor: consolidate help lookup to one UI This commit entirely removes the message pane UI for help lookup, replacing it with the menu-based version added in 4c3c5a04a9. Along the way I did a bunch of tweaking and testing of this menu; main secondary changes: * submenus have arrow key navigation enabled * exit menu is the last item, not the first * some error popups clarified and improved, fully works on webtiles * the key to open this popup from the game menu is now `/`, for consistency with `?/`. * use the search icon introduced in 4c3c5a04a9 across the board instead of the circled i icon. Some of these could be adjusted further if desired. -------------------------------------------------------------------------------- 39bde7bcfb | advil | 2021-12-31 12:23:09 -0500 fix: further fix game menu fallthrough behavior Generalize a75cb3825e and fix the save command. In local games, this was crashing at the main menu when used, with a segfault in UI code. (Possibly indicates a bug there? But it's safest just to exit the popup anyways.) -------------------------------------------------------------------------------- b870ddcdaf | advil | 2021-12-31 12:23:09 -0500 fix: use correct save and X wording in game menu That is, don't mention the "main menu" if the game is in a state where one won't be used. -------------------------------------------------------------------------------- 9cff2364a1 | gammafunk | 2021-12-31 01:47:45 -0600 feat: Nerf ghost moth melee a bit These currently hit for up to 76 damage. Compare to emperor scorpions, a top-tier melee-only threat, that do up to max 60 damage with the same monster speed of 12. The increased ghost moth damage was to allow af_drain_stat to apply more often, but it had the side effect of turning them into the HULK (which is hard to program). Nerf their (28, 28, 20) melee attacks down to (24, 18, 18) for now. Some play-testing shows them still able to drain stats in honorable single combat versus a shield-equipped HuFi possessing sInv. The stat drain I got while testing was fairly minor; typically a few points in a couple stats after one fight. If we'd like the drain to become more relevant, it may be best to increase the amount of stat drain applied per successful hit, since it's clear that the stat drain will still get applied with these nerfed numbers even against characters with strong defenses. -------------------------------------------------------------------------------- a75cb3825e | advil | 2021-12-30 22:04:12 -0500 fix: correct a fallthrough issue with e3a463e -------------------------------------------------------------------------------- 7577a969be | advil | 2021-12-30 21:57:59 -0500 fix: a few issues with the help lookup menu * Don't show an extra popup when escaping out of the text entry sub-popups. (Super ugly code, this stuff could use a refactor to not rely on `response` for a non-error condition.) * Do actually show the above popups in webtiles (before it didn't do anything but still needed the key input). This popup is a bit rare now it seems but can at least be triggered on a string consisting of spaces. * Remove some (I think) unnecessary UI_CRT things. -------------------------------------------------------------------------------- e3a463ef05 | advil | 2021-12-30 21:57:59 -0500 fix: submenu behavior for most main menu commands It was probably a strategic error to not do this initially, but I think having a submenu open is more what people would expect from a main menu command. I didn't do this for CMD_QUIT because it uses a message pane prompt. The lookup menu already did this. -------------------------------------------------------------------------------- 76a60e06d6 | Nicholas Feinberg | 2021-12-30 17:25:01 -0800 New placeholder Jorogumo tile -------------------------------------------------------------------------------- 69a50951d7 | Nicholas Feinberg | 2021-12-30 16:33:36 -0800 Fix tag_upgrade build -------------------------------------------------------------------------------- 0aadbb367f | Nicholas Feinberg | 2021-12-30 16:23:34 -0800 Improve frenzy UX - Allow targeting frenzied monsters with damage spells, etc normally. - Don't make good gods punish you for attacking frenzied monsters. -------------------------------------------------------------------------------- 33a2d3f881 | Nicholas Feinberg | 2021-12-30 16:06:16 -0800 Remove one last ray of sunshine TARG_HOSTILE_SUBMERGED, unused since 1d64b78cf4984becb95c8. -------------------------------------------------------------------------------- b64ed734f3 | Nicholas Feinberg | 2021-12-30 15:59:07 -0800 Correct a frenzy comment ENCH_FRENZY does not exist. -------------------------------------------------------------------------------- d371e1541e | Nicholas Feinberg | 2021-12-30 15:57:23 -0800 Merge strict neutral with good neutral (kate) They were almost identical. The only difference is that jellies will now show up with a brown background instead of grey & will be described as 'fellow slime' instead of 'indifferent', which seems fine! (Could have made them grey instead of brown, but it'd be misleading.) -------------------------------------------------------------------------------- 7e0445c96d | Nicholas Feinberg | 2021-12-30 10:38:27 -0800 Bring back Xom's dragons (kate) This partially reverts commit a0dfb7b2014fc097504f6b115edb92e612a79952. -------------------------------------------------------------------------------- a0dfb7b201 | Nicholas Feinberg | 2021-12-30 10:34:39 -0800 Remove non-player-castable Xom spells (pi-314) -------------------------------------------------------------------------------- e07096e7bc | Nicholas Feinberg | 2021-12-30 10:25:58 -0800 Fix channeled exegesis from ignorance (Nomi) Don't end channeled spells immediately when you exegesis them with no spells memorized. -------------------------------------------------------------------------------- 6040ee8864 | Nicholas Feinberg | 2021-12-30 10:10:57 -0800 Remove the orb Added accidentally. -------------------------------------------------------------------------------- b2e798e311 | Nicholas Feinberg | 2021-12-30 09:52:38 -0800 Improve orb of light description (🐙Mike) -------------------------------------------------------------------------------- 0273388e84 | Nicholas Feinberg | 2021-12-30 09:05:12 -0800 Add player orb tiles Feel the orb within your hand... feel its cold, smooth surface. The deadly temptation of its power. Who could stand against you if you bore such a device? Who could withstand the sorcery boiling within, seeking only a crack to escape and wreak boundless havoc? You would be a king. No... more. A god. -------------------------------------------------------------------------------- 7b639605f7 | Nicholas Feinberg | 2021-12-30 08:36:54 -0800 Fix Hep powers webtiles display (🐙Mike) -------------------------------------------------------------------------------- e1d817e1ef | Nicholas Feinberg | 2021-12-30 08:23:04 -0800 Fix allied radroach crash Instead of consistently crashing when an allied radroach decides whether or not it should cast irradiate, don't crash instead. Also, switch to using a tracer for irradiate cast logic instead of weirdly hand-replicating the same logic. -------------------------------------------------------------------------------- 2ac24fcec8 | Nicholas Feinberg | 2021-12-30 07:30:37 -0800 Remove un-ID'd angel weapon code I warned it'd never come up, and now it definitely won't! -------------------------------------------------------------------------------- 2ad6d04315 | Neil Moore | 2021-12-29 23:12:07 -0500 Handle correct name of Japanese language. Ever since the very first commit that introduced Japanese support (viz. 05c31b08e25), the lang option has accepted the ethnonym but not the name of the language . Leave as an alternative for compatibility. -------------------------------------------------------------------------------- cf31067fe6 | Kate | 2021-12-30 02:54:40 +0000 Mark some orbs as useless when appropriate -------------------------------------------------------------------------------- 62fc55f08d | Kate | 2021-12-30 02:29:00 +0000 Fix Summon Spider messaging (nicolae) -------------------------------------------------------------------------------- c3160e8207 | Nicholas Feinberg | 2021-12-29 16:45:36 -0800 Tweak channel status descriptions Semicolons are a dangerous vice, not to be overindulged. Also, it's *waves* of flame, not *a wave* :P -------------------------------------------------------------------------------- 1c5e12ca7f | Kate | 2021-12-30 00:01:36 +0000 Fix some descriptions (Ge0ff) -------------------------------------------------------------------------------- a5cd5cae6f | Kate | 2021-12-29 23:31:18 +0000 Rename Heavenly Storm's status light (PleasingFungus) To no longer overlap with Storm Form. -------------------------------------------------------------------------------- cbcab8c68d | Kate | 2021-12-29 22:55:36 +0000 Don't gender some non-unique enemies Water nymphs, harpies and jorogumos were always gendered female which was inconsistent with all other non-unique enemies. Closes #2317. -------------------------------------------------------------------------------- 9cd67a661c | Kate | 2021-12-29 22:55:36 +0000 Update some status light descriptions And the related spell descriptions for some forms. Currently Heavenly Storm and Storm Form overlap, and one of them needs their status light to be renamed. Closes #2321. -------------------------------------------------------------------------------- 050f3537b9 | advil | 2021-12-29 17:37:17 -0500 fix: restore rest behavior when > rest_wait_percent The => was accidentally introduced in 0bdd5ba03093. Resolves #2304 -------------------------------------------------------------------------------- 113dc556a4 | Kate | 2021-12-29 01:50:18 +0000 Remove unequip penalties from the robe of Misfortune It's no longer intended to be a strictly-bad unrand, with its design being that it grants substantial AC/EV but with the significant downsides of *Slow and *Corrode when damage is received, as well as having Harm. To encourage at least trying it on, remove the Contam and Drain on unequip - as body armour, it can't be quickly swapped so doesn't need an additional unequip penalty alongside the Harm. -------------------------------------------------------------------------------- c8854da52d | Kate | 2021-12-29 01:44:13 +0000 Simplify an orb check -------------------------------------------------------------------------------- fc495fb4ec | Nicholas Feinberg | 2021-12-28 17:26:06 -0800 Don't talk about orb AC (ShaperMC) Squash a pointless message in orb descriptions. -------------------------------------------------------------------------------- 6b9ff3a05d | Nicholas Feinberg | 2021-12-28 11:06:26 -0800 Refactor Irradiate, pt 1 (sdynet) Don't prompt when a monster would irradiate one of your allies, do pass the caster by reference rather than as a pointer, and various other fixes. -------------------------------------------------------------------------------- 18cc7973ba | Kate | 2021-12-28 18:11:32 +0000 Improve Makhleb destruction ability descriptions -------------------------------------------------------------------------------- 3d317c14f4 | Kate | 2021-12-28 18:11:32 +0000 Make Chei consider orbs of mayhem hasty -------------------------------------------------------------------------------- ba9079b354 | Edgar A. Bering IV | 2021-12-28 12:08:03 -0600 docs: changelog through 0.28-a0-1340-g77f64c2 -------------------------------------------------------------------------------- 77f64c2f64 | Edgar A. Bering IV | 2021-12-28 08:51:10 -0600 fix: prevent wearing an orb while wielding a 2-hander The reverse check already worked but this one was missed. Closes #2316 -------------------------------------------------------------------------------- a5422284a4 | Nicholas Feinberg | 2021-12-27 20:28:46 -0800 Fix orbs + SH (Lightli) Don't make orbs set your SH to 0 when you have other sources. -------------------------------------------------------------------------------- ce4b496cc8 | Nicholas Feinberg | 2021-12-27 18:44:10 -0800 Revert "Let good gods cause some mayhem (booper)" Neutral is a mess :( This reverts commit 83453ab7136c4dc63250dae6215468288a3404e4. This reverts commit 9a4740a79772870bd10ec86309d9a473f55b9590. -------------------------------------------------------------------------------- 83453ab713 | Nicholas Feinberg | 2021-12-27 18:38:02 -0800 Make neutrals considered less friendly In a few places. Maybe this is an improvement? Unsure. -------------------------------------------------------------------------------- 9a4740a797 | Nicholas Feinberg | 2021-12-27 18:37:40 -0800 Let good gods cause some mayhem (booper) Good gods don't like you attacking peaceful creatures, like ely's friendly neutral or kirke's humans' strict neutral (?), but it should be fine to attack frenzied 'true neutrals'? Maybe? This is too many neutrals... -------------------------------------------------------------------------------- ebfa916d04 | Nicholas Feinberg | 2021-12-27 18:22:21 -0800 Clarify mayhem (booper) -------------------------------------------------------------------------------- 1c9ffb4daf | Nicholas Feinberg | 2021-12-27 13:57:16 -0800 Fix a duration crash (skeral) Introduced by 95685b5d4a526e94ea562b9df2ea7fce36eb05bc . -------------------------------------------------------------------------------- 95685b5d4a | Nicholas Feinberg | 2021-12-27 12:52:58 -0800 Rename mid_msg -> expire_msg, etc (Pinkbeast) 5c2cb368445 (2015) continued the misleading naming used by _decrement_a_duration() in which effects for the 'expiration point' (an arbitrary # of turns before the end of a duration at which the player is warned that it's nearly done) were claimed to occur at the 'midpoint' (50% of the way through the duration.) Fix this. -------------------------------------------------------------------------------- 9cdbbaba87 | Nicholas Feinberg | 2021-12-27 12:44:16 -0800 Remove centaurs (Lici) Centaurs weren't meaningful threats in Shoals. They are a nice match for the vaguely Greek mythological theme, though, so swap in some centaur warriors instead. -------------------------------------------------------------------------------- a7867985be | Kate | 2021-12-27 20:16:58 +0000 Adjust some monster genuses -------------------------------------------------------------------------------- 586501026f | Kate | 2021-12-27 20:16:58 +0000 Remove some speech lines and a randbook name As with recent changes to Yred's theming, remove a few somewhat tasteless lines. -------------------------------------------------------------------------------- e4a90f2674 | Kate | 2021-12-27 20:16:58 +0000 Remove some obsolete book titles -------------------------------------------------------------------------------- 8ca4fe5f7a | Kate | 2021-12-27 20:16:58 +0000 Display drowning resistance in monster descriptions -------------------------------------------------------------------------------- 9e5b8c6e9f | Kate | 2021-12-27 20:16:58 +0000 Remove water vulnerability Only an extremely small number of monsters were vulnerable to water, it did very little (affecting only direct BEAM_WATER damage, but not granting any additional vulnerability to waterlogging or engulfing), and the player has minimal access to sources of water damage. -------------------------------------------------------------------------------- 8dc402e326 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 REVERTME: increase orb rate for testing -------------------------------------------------------------------------------- 961f3f1587 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 fix: remove a placeholder -------------------------------------------------------------------------------- 17eb628754 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of energy (bringing back the crystal ball) This commit adds a new "energy" orb ego that offers passive channeling, like Wucad Mu. The implementation is set to stack with Wucad Mu and any other potential source of energy (currently none) in the following ways: - The trigger chance is multiplied by the number of sources. - The all sources must backfire for the backfire effect to trigger. Wucad Mu's channeling was interesting, but compared to an enhancer staff or other unrands the effect underwhelemed many players. In addition to offering channeling with a shield, this commit buffs Wucad Mu by making it count as two sources of channeling for internal calculations. XXX: Unsure of the best way to communicate this to the player without turning our inscriptions into a line of dubious code, inscribing it *channel++ just doesn't sit right. -------------------------------------------------------------------------------- 92c09265f1 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of guile The guile ego is a will-check analog of harm: it reduces the willpower of any user's target by 3 * WL_PIP, in exchange for reducing the willpower of the user by 2 * WL_PIP. This is more interesting than a straight hex enhancer: the tradeoff is stiffer and it works with all willpower checks, not just hexes. -------------------------------------------------------------------------------- ecb9636ef5 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of mayhem (nicolae) The mayhem ego for orbs causes monsters who see the wielder kill something to go frenzy. It only hits one monster per kill with a coinflip for now. This could be adjusted up or down based on power, but we definitely don't want to give out free Discord casts for a single kill. -------------------------------------------------------------------------------- acce00ee20 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of wrath A *Rage orb, because *Rage is powerful, fun, and dangerous. This one is in the mix because why should spellcasters get all the orb fun. -------------------------------------------------------------------------------- 973e1c81fd | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: orbs of light The first of several orb egos, an orb of light gives the player a radius 3 halo. Halo prevents invisibility and backlights the player (an extra defensive penalty) in exchange for revealing invisible creatures and an accuracy bonus. Alone the accuracy bonus isn't that big, but an ally user can get quite a bit of a boon from halo. This is probably the weakest of the orb egos, but that's ok. In general orb egos will represent some kind of a tradeoff, as they're egos that one can use in place of a shield without training. -------------------------------------------------------------------------------- e3aa5898da | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 feat: chill lofi orbs to ponder/crawl with A shield-slot analog of scarves, meant to play with the same sort of defense/interesting ego trade-off. Orbs give no SH and no penalty. "Caster" and some "battlemage" archetype characters are almost always steered to shields through a confluence of factors: - cheap one-handers (demon weapons and shortblades) that can be amplified with magic - one-handed enhancer staves leaving the other hand flapping around empty and begging for a shield - shield penalties are easier for low-strength characters to overcome Forthcoming commits will introduce orb egos (currently ponderous is a placeholder but will not be on the final list) aimed at expanding the options for these characters. Another direction to pursue in this design space is to create some 2-handers that tempt such characters, this is not an exclusive direction so both could happen, but for now orbs are what we've got. -------------------------------------------------------------------------------- 050272b745 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 refactor: adjust some reflection checks Make actor.reflection() do what it says on the tin, and use the shield_reflects(item) method only for messaging, not for determining which actors are reflective. -------------------------------------------------------------------------------- 9e8018ba61 | Edgar A. Bering IV | 2021-12-27 14:13:17 -0600 fix: remove the limit on weapon and armour egos These were limited for seen item tracking to (subtly) influence acquire. Unlike seen basetypes, seen ego tracking makes a lot less sense, since seeing an ego on an unwanted base type tells us nothing about the player's preferences. This seemed cleaner than the save-compatibility needed to expand the bitfields because they're saved. -------------------------------------------------------------------------------- e154d51992 | Nicholas Feinberg | 2021-12-27 11:22:27 -0800 Revert "fix: remove a now unused MB check" This broke the bound soul icon. This reverts commit 53f92202ff9e202943409b577e6ad06e644bce8b. -------------------------------------------------------------------------------- f86f92d26c | advil | 2021-12-27 13:58:43 -0500 fix: bounds checks for monster lrd and ghostly sacrifice This removes the hardcoded checks from 73776a4c32c7 and 4f857bc58ec3. The reason for these crashes and for their variability was that the fake monster used for the validity check is at position 0,0. So if the game was saved on a level where a monster was in the upper left corner, the iterators used in these two spells would fire a tracer at the monster during game setup. The presence of a salt entrance in the save in #2308 was a red herring, it's just that this level had some monsters in the right place. It's probably still not ideal that the level even exists at the point where this validity check happens? Re-resolves #2308, should resolve #2281 (though I couldn't get an abyss crash to happen on demand). I also added a bit more info to the ASSERT that may make this easier to track down in the future. -------------------------------------------------------------------------------- 73776a4c32 | advil | 2021-12-27 13:19:26 -0500 fix: don't fire tracers for ghostly sac validity check This is a followup to 4f857bc58ec3, it seems that this ASSERT triggers only if a monster with the relevant spell is on the level where a player saved. (???) Resolves #2308 -------------------------------------------------------------------------------- bc27143018 | Nicholas Feinberg | 2021-12-27 07:16:34 -0800 Revert "Move the Mace of Variability to the early game" Various people have pointed out that, while the mace of variability used to be weak enough to be an early game item, it's now a compelling one for the later game. Mea culpa! This reverts commit fdf38ca10bdff2f4954046791e0ea06d90ea673a. -------------------------------------------------------------------------------- 71652a0310 | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 Add a guarded Meek vault -------------------------------------------------------------------------------- 0e9cb7027e | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 New early-game unrand: staff of the Meek Another early-game unrand, the staff of the Meek is a +7 quarterstaff of super-protection. When the player is below 55 HP, the staff of the Meek gives extra AC, scaling up to an additional +7 AC (for a total of +14) at 27 HP or below. I suspect it might be slightly overtuned. -------------------------------------------------------------------------------- be34dac4b3 | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 Rename Danyla -> Delatra To avoid name conflicts with Slavic regions. -------------------------------------------------------------------------------- dce6b4fef7 | Nicholas Feinberg | 2021-12-26 19:49:55 -0800 Move the Robe of Augmentation to early-game (Lici) It's just not that strong. -------------------------------------------------------------------------------- 17cdd1422e | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 New early-game unrand: Throatcutter Throatcutter is a +7 long sword of draining with a 33% chance to instakill struck foes that are below 21 hp. Monster HP tends to increase over the course of the game, so this is of course most relevant early on. It's a bit like extra AC-ignoring damage, but it only works when enemies are at low HP to begin with. Terence gets a Maggie-esque 1% chance to spawn with this. -------------------------------------------------------------------------------- a2d17535fb | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Move the Trident of the Octopus King early It's too weak to be good later, unless its gimmick goes off, which it won't. (FR: new/tweaked gimmick!) Also remove its Will+ as superfluous. (rElec and rPois are both vaguely thematic.) -------------------------------------------------------------------------------- fdf38ca10b | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Move the Mace of Variability to the early game It's often a trap to use the mace of variability later on, and there are plenty of fun later-game unrands for m&f users to use. Let's switch this back to a simple mace (from a great mace), buff its ench (mimicking klown clubs), and put it in the early-game weapon set. -------------------------------------------------------------------------------- f4a11d3a62 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Move Lear's to the early-game Lear's tradeoff - blocking aux slots in exchange for a big flat AC bonus - makes more sense in the early game, when players have access to few items to fill those aux slots. Later on, it just means players get to play around less with the loot game, which isn't that exciting. Its focus on enchantment over base AC is also stronger early, when players have little Armour skill. So, move Lear's into the early-game unrand category (making it more likely to spawn early & less likely later), and cut its enchantment from +27 to +18. -------------------------------------------------------------------------------- 2cb09928ac | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Shift more unrands to be early-game Morg, Devastator, the Ratskin Cloak, and Kryia's mail. - Kryia's mail potion healing buff is more relevant earlyish, when potion healing is more relevant and competing armour options are worse. - Ratskin cloak's summons don't scale; makes sense for it to show up earlier. - Devastator as a mini-shatter is a fun earlier-game effect. - Morg is just too weak for later. At some point I do want it to have a better gimmick, though - perhaps some way to trigger a 'sublimation of blood'-type HP for MP trade? Or, perhaps, a twist on pain brand that's works better in the early game. -------------------------------------------------------------------------------- dd19a0eca0 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Fix danyla ftiles (nicolae) -------------------------------------------------------------------------------- 4d69e0ec34 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Refactor early-game unrand weights -------------------------------------------------------------------------------- 2b8dd8ea68 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Force woodcutter's axe to speed 10 (hellmonk) Regardless of being slowed, shield delay, etc, etc. -------------------------------------------------------------------------------- 07e9fc738c | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Add a fireplace -------------------------------------------------------------------------------- 88828878fe | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Add a guarded unrand woodcutter's axe vault -------------------------------------------------------------------------------- fcf6033174 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 New unrand: woodcutter's axe Another early-game unrand, the woodcutter's axe swings at a fixed 10 aut, regardless of skill. As a +8 vorpal war axe that can never hit a normal war axe's mindelay, it should become obsolete by midgame, but quite powerful earlier. -------------------------------------------------------------------------------- a9f048274c | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Add a guarded unrand vault for Danyla's -------------------------------------------------------------------------------- 7890d4bb03 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Make Danyla's less likely later Since Danyla's are intended to be interesting in the early game, give them a 10x weight at early depths (D:6 and earlier, I think) and 0.1x weight at later depths. -------------------------------------------------------------------------------- f9a06f655c | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 New unrand: Danyla's gloves Continuing the 0.28 trend of new unrands, Danyla's gloves play in the space of 'unrands for the early game'. The wearer is healed by drinking unknown potions, and their MP is restored by reading unknown scrolls. Is it wise to intentionally keep consumables unknown so that you can use them as ersatz !hw and !magic? Maybe?? I considered also giving some bonus for reading ?id or some alternate way to use up ?id with these gloves, but that seemed to go against the design premise. Also, to be a bit too complicated. More related changes to come in subsequent commits. -------------------------------------------------------------------------------- 1f8817ceea | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Allow artefacts to spawn on D:2-3 To increase variety, and to allow early-game unrands to work, lift the ban on artefact generation in D:2-3. To discourage startscumming, D:1 artefacts are still banned. -------------------------------------------------------------------------------- 54527cc1f4 | Nicholas Feinberg | 2021-12-26 19:49:52 -0800 Explain no_upgrade -------------------------------------------------------------------------------- b4563b27b3 | Nicholas Feinberg | 2021-12-26 14:51:13 -0800 Remove zombie deep dwarf damage shaving Monster deep dwarf zombies had damage shaving, probably left over from when actual deep dwarf enemies existed. Let's clean that up. -------------------------------------------------------------------------------- 91df5548d3 | Nicholas Feinberg | 2021-12-26 08:17:46 -0800 Pass item_level into make_item_unrand This is mostly intended for future changes. -------------------------------------------------------------------------------- 77e77742e6 | Nicholas Feinberg | 2021-12-26 08:14:29 -0800 Fix unrands being able to reappear in the Abyss This was broken in 850bfe61e39, a year and a half ago. Probably no one noticed because it's almost impossible to encounter this case to begin with. -------------------------------------------------------------------------------- 8a08cb6da8 | Nicholas Feinberg | 2021-12-26 08:13:51 -0800 Minor artefact refactoring -------------------------------------------------------------------------------- 700d31dd17 | Kate | 2021-12-26 15:35:15 +0000 Add some new wizards as potential spellbook owners -------------------------------------------------------------------------------- 73c4ac0421 | Kate | 2021-12-26 15:35:15 +0000 Give Portal Projectile a static targeter -------------------------------------------------------------------------------- 6bde065e89 | hellmonk | 2021-12-25 21:40:59 -0500 minor revisions to vampire castle -------------------------------------------------------------------------------- 01e59b5888 | hellmonk | 2021-12-25 21:40:59 -0500 delete boomers Reduce the number of boomerangs generated in bailey maps and entries. -------------------------------------------------------------------------------- 507d92f863 | hellmonk | 2021-12-25 21:40:59 -0500 various bailey fixes -------------------------------------------------------------------------------- 69d4bd79ad | hellmonk | 2021-12-25 21:40:59 -0500 remove bailey_polearm_4 This map was very small and also very bad. -------------------------------------------------------------------------------- 65a5005c76 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_2 Make the outer area less annoying and shrink the border. Slightly randomize monster counts and placements. Adjust loot. Also, fix bailey_polearm_1. -------------------------------------------------------------------------------- 514828de85 | hellmonk | 2021-12-25 21:40:59 -0500 Adjust bailey_polearm_1 Make the moat shallow. Give routes for monsters in the center to escape the lava (makes the vault less annoying and less cheeseable). Adjust the good item selection slightly. -------------------------------------------------------------------------------- c62d020828 | hellmonk | 2021-12-25 21:40:59 -0500 enchanted keep bailey Spriggans and ogres, plus one small dragon. -------------------------------------------------------------------------------- b6a7f6400c | hellmonk | 2021-12-25 21:40:59 -0500 checkwhite -------------------------------------------------------------------------------- 1f28f93398 | hellmonk | 2021-12-25 21:40:59 -0500 Prince Ribbit bailey Feat: frogs, vault guards. -------------------------------------------------------------------------------- eca784f0a1 | hellmonk | 2021-12-25 21:40:59 -0500 checkwhite -------------------------------------------------------------------------------- 1e23faca81 | hellmonk | 2021-12-25 21:40:59 -0500 remove bailey_axe_1 This was the other kobold boomerang behind water map, and it was very bad. -------------------------------------------------------------------------------- bafb9c2f4c | hellmonk | 2021-12-25 21:40:59 -0500 Rework bailey_axe_3 This was formerly one of two 'boomerang kobolds behind deep water' baileys. Now it is a kobold brigand bailey; they replace a few of the regular kobolds (which are no longer behind deep water) and the other weak enemies. Loot has been updated to include a few stacks of specialty darts. -------------------------------------------------------------------------------- fb8d33413f | hellmonk | 2021-12-25 21:40:59 -0500 vampire castle bailey Features 1-3 vampires with big polearms, a gargoyle, and some orcs. -------------------------------------------------------------------------------- c7d099ddaa | hellmonk | 2021-12-25 21:40:59 -0500 checkwhite -------------------------------------------------------------------------------- d8f7bb276c | hellmonk | 2021-12-25 21:40:59 -0500 restructure bailey_axe_of_yendor_kennysheep Rearrange the layout so that the hard monsters appear later in the map. Also, randomize monster counts. -------------------------------------------------------------------------------- a913e2b07b | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_bossmonster_kennysheep Randomize monster counts. Remove deep water to prevent kobold annoyance and trivial drowning strats. Reduce loot slightly (early portal maps should generally not place multiple stacks of !exp, I do not care how hard killing the warlord is). -------------------------------------------------------------------------------- 39464d8d1f | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_5 Reduce and randomize monster counts. Add terrain. Tag the summoning scrolls no_pickup. Reduce loot slightly. -------------------------------------------------------------------------------- 673e66e2bb | hellmonk | 2021-12-25 21:40:59 -0500 new elf bailey Places a single pyromancer or zephyrmancer, who is held hostage by the typical bailey polearm orcs. Armour, potion, and gold loot. -------------------------------------------------------------------------------- 0c74f66fb6 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_gnolls_kennysheep Randomize monster count slightly. Add wolves and a chance for Grum. Buff loot. -------------------------------------------------------------------------------- c07eaa88f9 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_polearm_flooded_kennysheep Push the centaurs out of the entrance's line of sight. Adjust and randomize monster counts. Slightly adjust loot. -------------------------------------------------------------------------------- a63312ec20 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_minmay_hex_keep Place less popcorn. Space out and randomize "hard" monster locations. Reduce loot from 2 exp/acq to 1. Still places a warlord. -------------------------------------------------------------------------------- 3b12c07c51 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_4 Give the player a path across the moat without flight. Move the flight items into the vault proper. Randomize monster placement. -------------------------------------------------------------------------------- bd0c3d1049 | hellmonk | 2021-12-25 21:40:59 -0500 adjust bailey_axe_2 Add draining to formerly mundane halberds, let orc warrior get in on the elec action, and nerf the loot (this map is too easy to place guaranteed acq/exp). -------------------------------------------------------------------------------- 46454fb2af | hellmonk | 2021-12-25 21:40:59 -0500 Cut bailey spawn depth Bailey portals spawned between D:7-14 and in Orc:1. While at first glance this looks like a small portion of the game, players get massively stronger over those floors. D:7 characters might still be working on their starting kit, whereas a character on D:14 or in Orc is likely well established and has probably cleared Lair. The monsters in many existing Bailey vaults are similar to Orc spawns as well, so they tend to be threatening in the early part of the Bailey spawn range but mundane in the later part. Thus, Bailey will now spawn between D:7-10 and the chance per floor is doubled to keep the overall likelihood of seeing a bailey roughly the same. -------------------------------------------------------------------------------- fc91cddb57 | Kate | 2021-12-26 02:30:05 +0000 Simplify a zap -------------------------------------------------------------------------------- ff14099be7 | Kate | 2021-12-26 02:30:00 +0000 Store spellpower on cast for ongoing spells Make Borgnjor's Vile Clutch, Searing Ray, Olgreb's Toxic Radiance, Flame Wave, Searing Ray, Frozen Ramparts, and Dragon's Call all check spellpower only once on cast, instead of continuously throughout the duration. Also includes some minor cleanup for other spells that unnecessarily rechecked power. As noted in 9c71ebef145, this fixes their interactions with Sif's Divine Exegesis, and for Searing Ray and Flame Wave it has no other meaningful effect (since it's not possible to swap gear while channeling). For the other spells, it does become possible to cast them with an enhancer and switch to another item, but this is no different to the majority of other spells with an ongoing component (such as transmutations, hexes, and summons) where all that matters is the power at time of cast. -------------------------------------------------------------------------------- c629bbe4ae | Edgar A. Bering IV | 2021-12-25 17:14:01 -0600 fix: remove a diacritic Since we still officially support pure ascii interface, changing the monster name to "jorōgumo" in mon-data.h is a non-starter. To get the description to appear the diacritic must also be missing in the database. -------------------------------------------------------------------------------- 52c95e12a3 | hellmonk | 2021-12-25 16:49:40 -0600 refactor: rename a monster spellbook Since it's now in use by multiple enemies. -------------------------------------------------------------------------------- be32123071 | hellmonk | 2021-12-25 16:49:40 -0600 force Spider generation for testing -------------------------------------------------------------------------------- 4f13a64121 | hellmonk | 2021-12-25 16:49:40 -0600 feat: adjust and refactor monster web immunity Use a monster flag. -------------------------------------------------------------------------------- b4f9141d82 | hellmonk | 2021-12-25 16:49:35 -0600 feat: update spider bands -------------------------------------------------------------------------------- 4dffdd49c8 | hellmonk | 2021-12-25 16:49:01 -0600 feat: revise spider spawn table Incorporate the new spider monsters introducded in previous commits, enable ood usage. -------------------------------------------------------------------------------- db8c699bc0 | Edgar A. Bering IV | 2021-12-25 16:49:01 -0600 feat: adjust existing spider monster numbers -------------------------------------------------------------------------------- dabb86c9ba | hellmonk | 2021-12-25 16:49:01 -0600 feat: radroaches They cast irradiate. Currently contams the player a lot rather than mutating them outright; not totally opposed to changing it though. -------------------------------------------------------------------------------- f555730fcc | hellmonk | 2021-12-25 16:49:01 -0600 feat: adjust some spider layouts Allow another cavelike layout, change a few parameters in delve. -------------------------------------------------------------------------------- 8ac70cea53 | hellmonk | 2021-12-25 16:49:01 -0600 feat: sun moths Holy moths with a single tile halo, sticky flame, and energy bolt. -------------------------------------------------------------------------------- 43fd8d3cd6 | hellmonk | 2021-12-25 16:49:01 -0600 feat: adjust ghost moths Take away their poison sting and make them much better at draining stats. -------------------------------------------------------------------------------- 73a05ced62 | hellmonk | 2021-12-25 16:49:01 -0600 feat: adjust emperor scorpions Reduce their defenses and damage in exchange for speed 12. -------------------------------------------------------------------------------- b1d9b9a04c | hellmonk | 2021-12-25 16:49:01 -0600 feat: culicivora Low end spider for packs; heal other + vamp bite -------------------------------------------------------------------------------- cdf09cc80e | hellmonk | 2021-12-25 16:47:59 -0600 feat: broodmothers High end spider enemies that summon spiders and bite to summon spiders. -------------------------------------------------------------------------------- b91c745bbe | hellmonk | 2021-12-25 16:47:59 -0600 feat: Jorogumo High end spider nasties that cast ensnare and bolt of draining, plus melee for hornet poison. -------------------------------------------------------------------------------- 5bc7cbe778 | hellmonk | 2021-12-25 16:47:59 -0600 feat: steelbarb worms They inflict barbs status in melee, have regen and rF, and are fast. -------------------------------------------------------------------------------- de0d139c19 | hellmonk | 2021-12-25 16:47:59 -0600 feat: buff orb spiders Increase cast rate, hd, and melee damage -------------------------------------------------------------------------------- da204c4458 | hellmonk | 2021-12-25 16:47:59 -0600 feat: Pharaoh Ants A new undead spider monster that hits moderately hard for AF_DRAIN and binds the souls of all nearby monsters on death. -------------------------------------------------------------------------------- 2a955c5cc2 | hellmonk | 2021-12-25 15:22:40 -0600 feat: rework demonic crawlers Give them warning cry so they can alert their spider friends. -------------------------------------------------------------------------------- f280a0fbb2 | Kate | 2021-12-25 17:16:50 +0000 Make Formicid digging drain max health The ability to dig outside of combat with no limit or meaningful cost has been known to be a problem ever since Dig existed as a spell, and it encourages a variety of undesirable behaviours. Formicids have been a problem in this regard for a while (and even when the ability had a food cost, this didn't appropriately limit its use). To make digging have a noticeable cost, make it drain the user for each tile dug, to make extensive out-of-combat digging hopefully much more dangerous. To simplify the ability and make it slightly more useful as an in-combat escape, also remove its movement speed penalty. -------------------------------------------------------------------------------- 32bd0c41fe | Kate | 2021-12-25 17:03:33 +0000 Update some speech lines Remove various outdated speech lines, adjust a few others, and give Crazy Yiuf some new words. -------------------------------------------------------------------------------- 986220338f | Nicholas Feinberg | 2021-12-25 15:31:26 +0000 Code tweaks Constify some variables, switch from a pointer to a reference, and make some mon-info code shorter (this bit is dubious). -------------------------------------------------------------------------------- 2f14e528d3 | Kate | 2021-12-25 15:31:26 +0000 Make enchantment power use a smooth stepdown Should result in minimal changes to enchantment power in practice, but removes a use of the (supposedly) deprecated stepdown_value function, and also removes the cap of 120 on enchantment power, allowing spells with high power caps and a power boost (such as Agony and Enfeeble) to continue improving their success rate at very high skill levels. -------------------------------------------------------------------------------- 0dbd67afb6 | Kate | 2021-12-25 15:31:26 +0000 Add a new L7 Hex: Enfeeble Intended to give Hexes some more interesting utility to fill the gap between the powerful early stabbing spells and Discord at level 8, Enfeeble is a beam-targeted hex which irresistibly applies weakness and antimagic to a single foe (even against infinite willpower). The target is also dazed and blinded if they fail a willpower check (with a fairly substantial power bonus). -------------------------------------------------------------------------------- b25a51b929 | hellmonk | 2021-12-24 21:43:23 -0500 nerf Tukima's Studio This wizlab has like 3x the kill rate of the next most dangerous one. -------------------------------------------------------------------------------- 7c8fac35f0 | hellmonk3 | 2021-12-23 21:28:31 -0500 feat: Install some new plumbing Update old sewer maps to use best vaultmaking practices (randomized monster counts and placements, minimal hidden areas/spoilers). Reduce loot quality or quantity in most maps - this was buffed significantly when potion/scroll types got despoilered, so needs to come down somewhat. Additionally, add two exciting new sewer maps and re-weight all maps so that formerly rare ones are somewhat more common. -------------------------------------------------------------------------------- 826d19b2e0 | hellmonk3 | 2021-12-22 22:41:54 -0500 Add some assorted vaults feat. 1 (one) funny shop, 1 (one) funny transporter, and a few other things -------------------------------------------------------------------------------- 92def6ad0a | advil | 2021-12-22 17:47:50 -0500 build: add wtutil.py to the flake8 exclude list This is such a useless linter -------------------------------------------------------------------------------- a21510a5d8 | advil | 2021-12-22 17:29:43 -0500 feat: CLI interface for the dgl ban flag This can maybe be done already using the dgamelaunch-config tools, but it's useful to just have a simple interface built directly into the wlutil.py script. Resolves #1034 (together with the ^^ commit) -------------------------------------------------------------------------------- 45a336b667 | advil | 2021-12-22 15:21:08 -0500 feat: split off some webtiles cli stuff to a separate file This moves the commands for setting and resetting password tokens to a separate utility. (The underlying code is still part of webtiles.server, though, since all the setup stuff is there.) -------------------------------------------------------------------------------- 428f677eea | floraline | 2021-12-22 14:56:20 -0500 fix whitespace -------------------------------------------------------------------------------- 82aefee779 | floraline | 2021-12-22 14:56:20 -0500 Disallow user login when account has been banned DGL already supports banning user accounts via the user flags. Webtiles will now check this flag when testing password on user login. If the account is disabled, webtiles will not allow the user to log in. A message will be returned indicating that the account is disabled. -------------------------------------------------------------------------------- 270c432c18 | advil | 2021-12-22 14:54:57 -0500 fix: Restore #! line for server.py This got cut in 9b1d5c9715351a9bef3c. I'm not sure this should be an env call though? For the moment, keeping it unchanged. -------------------------------------------------------------------------------- a9037bb4c8 | advil | 2021-12-21 10:36:05 -0500 fix: fix some config defaults code * correctly check the bind options * fix handling of invalid recursive key checks -------------------------------------------------------------------------------- 59251e613b | advil | 2021-12-21 09:36:32 -0500 docs: update README.md, comments in config.py -------------------------------------------------------------------------------- 47ca6f2f2d | advil | 2021-12-21 09:36:32 -0500 fix: temporarily revert changes to client.html template This one gets me every time: templates update immediately even if the server hasn't yet restarted. So a pre-refactor server trying to load this template generates a 500 error because it doesn't have the new config API. This commit adds a shim that will work until servers have all restarted, and then it can be reverted. -------------------------------------------------------------------------------- 473480021d | advil | 2021-12-21 09:36:32 -0500 fix: correct a wrong config name -------------------------------------------------------------------------------- fb42bd042d | advil | 2021-12-21 09:36:32 -0500 fix: don't double webtiles --live-debug logging A logging call before `init_logging` results in doubled output, just push this check later. -------------------------------------------------------------------------------- 9b1d5c9715 | advil | 2021-12-21 09:36:32 -0500 refactor: move main server code into the webtiles package This was the last remaining chunk of webtiles code that was not inside the `webtiles` namespace. This commit moves it into a proper module, leaving the original non-package `server.py` as just a light wrapper on this module. -------------------------------------------------------------------------------- 65b1a8c667 | advil | 2021-12-21 09:36:32 -0500 refactor: move server.py This change apparently needs to happen in two steps so that the move is properly tracked in git history. -------------------------------------------------------------------------------- e20dd551ba | advil | 2021-12-21 09:36:32 -0500 docs: update placeholder README I originally put this file here just as a test of how DGL setups would handle subdirectories, but now that it has served its purpose, why not do something with it. This overview is pretty brief and high level, but as far as I know this kind of overview doesn't really exist anywhere else. -------------------------------------------------------------------------------- 2872ec6120 | advil | 2021-12-21 09:36:32 -0500 fix: acclimitize auth_test to `webtiles` * use package-anchored module names for mock * remove an unneeded mock for config -------------------------------------------------------------------------------- b939be1479 | advil | 2021-12-21 09:36:32 -0500 refactor: regularize the internal config api This wraps the server config module that is used as the repository for config info as if it were a dict-like. This would enable eventually just subbing in a dict (e.g. from yaml). In the short term it also makes the module have better behavior when no server config is provided. -------------------------------------------------------------------------------- c07941e8bc | advil | 2021-12-21 09:36:32 -0500 refactor: move webtiles defaults into webtiles.config Before there were occasional default values scattered around the code in get/getattr calls, in combination with things that are de facto defaults because no one has ever changed them. This collects the defaults in one place. I've aimed to leave uncommented in config.py only things one should or might want to change. -------------------------------------------------------------------------------- 0364767e1c | advil | 2021-12-21 09:36:32 -0500 fix: fix imports in tests This won't fully fix CI I think, because one of these tests needs config info that is now separated from the package; I'll fix that later. -------------------------------------------------------------------------------- 6b151ea7cb | advil | 2021-12-21 09:36:32 -0500 refactor: restructure webtiles into a package Previously, webtiles was just a loose collection of modules in the same directory. This restructures things so that everything but server.py and config.py form a proper python package. This has three main goals: 1. make the webtiles server code more encapsulated, and cleaner to load and interact with. This commit (to some degree) regularizes a lot of import statements. 2. short term: make it easier to dissociate config logic from config content. The `config.py` file in `webserver` is the same as before -- a python module with config settings for the webserver. The webtiles.config module on the other hand provides an api for getting config info that is abstracted from the python module that provides it. This can help clean up the handling of defaults, and pave the way for turning most of the old config.py into something like yaml, while retaining backwards compatibility. This could all have been done with a distinctly-named module in the same directory, but I think it is just a lot conceptually cleaner to do it in combination with 1. 3. long term: make it easier to swap out parts of the server code en masse by changing around package loading. This is aiming at a compatibility-preserving way of merging the dormant `webtiles-asyncio` branch. *Possibly* make it possible to version the webtiles server itself. This is a big change, and I've done only light testing so far, but in a local setup at least, everything is working. It may be that this commit will require a dgl change to merge (I'm not sure if subdirectories will be copied by default). -------------------------------------------------------------------------------- 76c8c3f4a7 | advil | 2021-12-21 09:36:32 -0500 fix: remove remaining import *s -------------------------------------------------------------------------------- 0243856f03 | Kate | 2021-12-21 01:29:26 +0000 Document mons_has_attacks behaviour Weird monsters with special zero-damage attacks like fire elementals and drowned souls are considered as having no attacks here which is very weird, but probably technically correct in the context of considering whether they should be able to be weakened or go berserk, so add a comment explaining it. -------------------------------------------------------------------------------- c6b4282bc0 | Edgar A. Bering IV | 2021-12-20 22:53:56 +0200 refactor: move Cantrip messaging to the monspell DB Instead of hard-coded strings plus some custom speech DB strings that got strange less-than-fully-featured handling. -------------------------------------------------------------------------------- 6bb796e56f | Edgar A. Bering IV | 2021-12-20 22:05:15 +0200 feat: leave Dissolution's prayers unanswered if Jiyva dies (11741) Dissolution is an incredibly devout follower of Jiyva, but not so devout to keep Jiyva alive alone without the Royal Jelly or the player as well. So, when Jiyva dies, this commit replaces Dissolution's eyeball summon with a cantrip and adds some custom casting messages for tragic flavour. [ Closes #2136 ] -------------------------------------------------------------------------------- a0fd31170c | Edgar A. Bering IV | 2021-12-20 20:39:51 +0200 fix: don't treat tentacles as separate monsters for yred (mdonais) This fixes both a funny piety bug and a serious crash-on-demand coming from kraken. -------------------------------------------------------------------------------- 948942c869 | Kate | 2021-12-20 18:15:36 +0000 Disable targeter for the staff of Battle's battlesphere (#2300) Closes #2300. -------------------------------------------------------------------------------- 2034e2a03a | Kate | 2021-12-20 18:00:33 +0000 Fix a Djinn mutation description -------------------------------------------------------------------------------- 75d13f451a | Kate | 2021-12-20 18:00:33 +0000 Improve wording of nimble swimmer mutation (#2295) Closes #2295. -------------------------------------------------------------------------------- 193881aaa2 | Nicholas Feinberg | 2021-12-19 17:12:51 -0800 Tweak Bind Soul description (🐙Mike) Move the important part (gotta kill the target before the mark expires!) before a bunch of fine print, and make other small tweaks, such as removing an overlooked 'enslave'. -------------------------------------------------------------------------------- e70e11bbaa | Nicholas Feinberg | 2021-12-19 16:36:57 -0800 Tweak Yred power description (🐙Mike) Try to clarify re raising the dead, etc. -------------------------------------------------------------------------------- c10b29e619 | Kate | 2021-12-19 23:39:51 +0000 Adjust Black Mark to only apply useful effects Instead of just randomly rolling for weakness, antimagic or draining when the mutation triggers, only select an effect that the defender is susceptible to. -------------------------------------------------------------------------------- bdd4f303c2 | Kate | 2021-12-19 23:39:51 +0000 Show when monsters are affected by antimagic Instead of having it be a hidden status effect, display it as a regular enchantment and give a message when it expires. -------------------------------------------------------------------------------- 1e6f1b2279 | advil | 2021-12-19 10:20:57 -0500 lint -------------------------------------------------------------------------------- ac32c9ce6f | advil | 2021-12-19 10:02:04 -0500 fix: make some prop types explicit Seems to be breaking the build on some compilers. -------------------------------------------------------------------------------- d731693074 | advil | 2021-12-19 09:43:41 -0500 feat: (g)o to location in item descriptions This seems like a fairly natural thing to have in this popup; already available via many other means of course, but you had to jump through various hoops to get to it from an item description depending on where the popup came from. -------------------------------------------------------------------------------- ef9e1dbd39 | Nicholas Feinberg | 2021-12-18 14:23:50 -0800 Fix Slouch stop attack prompt Don't ask "Really harm near your goblin?" -------------------------------------------------------------------------------- a495bdf9d0 | robertxgray | 2021-12-18 22:36:17 +0100 Configure GitHub Actions for Android -------------------------------------------------------------------------------- 582babd7fa | advil | 2021-12-18 12:56:47 -0500 feat: in ctrl-x list, indicate items at player's position The behavior of the full view menu for this case is somewhat confusing: by default a left click travels to the item's position, so nothing happens when a player clicks on an item in the menu at their position. I think a more major refactor of this menu might be helpful (not sure exactly what), but this commit tries to very slightly smooth over the case by marking which items are at the player's position explicitly. -------------------------------------------------------------------------------- ce354f50cf | advil | 2021-12-18 12:56:47 -0500 fix: enable describe actions for item stacks d40668a25 worked only on stacks of 1, because that was the only case where the describe popup got access to the "real" item that was on the floor. This commit expands things out so that for stacks of items if they are at the player's feet, the real item is used all the way along the chain. There was some required const munging that is not so great (though there's a lot of code that did not seem like it should actually be using const item_def * -- I started to work through this but the domino effect made me back up.) This commit also makes describe actions work for items in the full view describe that are at the player's feet. -------------------------------------------------------------------------------- 6159c76d74 | advil | 2021-12-18 12:56:46 -0500 feat: add (g)et as a describe action -------------------------------------------------------------------------------- bf359695bc | Nicholas Feinberg | 2021-12-18 09:25:21 -0800 Make the undead unpruneifiable Since they can't transform, right..? -------------------------------------------------------------------------------- 11349e6732 | Nicholas Feinberg | 2021-12-18 08:50:25 -0800 Rework the glaive of Prune (perryprog) The glaive of Prune has, for many years, had exactly one unique mechanical feature: being hated by Zin. Let's add something slightly more meaningful. Whenever the glaive's wielder is paralysed, petrified, or KO'd, they'll be overcome with the curse of the Prune, transforming into a giant prune. This makes the player so squishy that they're hard to injure, making them take half damage until the paralysis/etc ends. N.b.: probably this shouldn't affect the undead? -------------------------------------------------------------------------------- 876f0bc6b4 | Nicholas Feinberg | 2021-12-18 07:51:21 -0800 Manually add a throwaway gag (flappity) -------------------------------------------------------------------------------- 3f01f628eb | Edgar A. Bering IV | 2021-12-18 15:01:56 +0200 docs: add Gopall to credits -------------------------------------------------------------------------------- ed7a1ca826 | Edgar A. Bering IV | 2021-12-18 15:01:14 +0200 docs: changelog through 0.28-a0-1190-g77e1c55 -------------------------------------------------------------------------------- 77e1c55843 | advil | 2021-12-17 11:45:24 -0500 feat: use Goratrix's main menu tile in the action panel -------------------------------------------------------------------------------- 03e5d3d3bf | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 refactor: combine code for drawing item glyphs and panel actions (advil) Both `draw_action()` and `draw_item_glyph()` have the same code for drawing quantities and highlighting actions, so it makes sense to combine them into a single function. Also, add a few TODO comments for future improvements. -------------------------------------------------------------------------------- 013d6de2c3 | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 feat: don't hide the action panel unless it is explicitly disabled Since the panel always has at least one action now, it should be permanently visible unless disabled by configuration. -------------------------------------------------------------------------------- 5f2c673282 | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 feat: add a main menu button to the action panel (PleasingFungus) With a main menu button on the action panel, it should be easier for players to discover the macro editor, lookup-help menu, and other tools and commands. -------------------------------------------------------------------------------- e4c47cc41c | Nikolai Lavsky | 2021-12-17 11:39:14 -0500 refactor: add helper functions for drawing panel actions The code for drawing actions and item glyphs is a bit complex, so it's better to split it up into separate functions. Also, we drew an item glyph and the cursor for some items twice. This happened if an item had a base tile and a brand icon. Fix this and simplify handling of `adjusted_scale`. -------------------------------------------------------------------------------- 4dc111b8cc | Goratrix | 2021-12-17 11:04:33 -0500 Tweak tile for game menu button on local tiles Commit 6a8ace0 added the game menu button to local tiles using a placeholder tile, this updates the tile to have the correct button frame. -------------------------------------------------------------------------------- 53156a8862 | Kate | 2021-12-17 02:17:16 +0000 Adjust messaging for monsters dropping wands on death To make it a little more succinct. -------------------------------------------------------------------------------- 2b4b0b1879 | Kate | 2021-12-16 23:26:30 +0000 Prevent self-healing abilities under DDoor They had no effect, but could waste max MP (as a Deep Dwarf) or piety (as an Elyvilon worshipper who abandoned to cast DDoor and then reconverted with DDoor active and enough saved piety to still activate Heal Self). -------------------------------------------------------------------------------- 381e24db82 | Nicholas Feinberg | 2021-12-15 22:08:27 -0800 Add an 'unaffected by silence' status A very common error for newer players is to try to silence demons and then to be confused about how they cast anyway. Adding a status that describes them as 'unaffected by silence' might help? -------------------------------------------------------------------------------- ba1fe864d9 | Nicholas Feinberg | 2021-12-15 21:51:18 -0800 Shift fire champion's display ordering -------------------------------------------------------------------------------- 586d44308f | Nicholas Feinberg | 2021-12-15 21:47:24 -0800 Buff infusion These felt a bit worse to me than I expected. Costing 2 MP per hit really burns through your pool startlingly fast, and results in a lot of resting. Let's try it at 1 MP per hit and see if it still feels like a significant cost. The Mad Mage's Maulers are unaffected. -------------------------------------------------------------------------------- e3c729c085 | Nicholas Feinberg | 2021-12-15 21:41:37 -0800 REVERTME: Make infusion gloves very common So that we can actually test this. Roll this back before 0.28's release. -------------------------------------------------------------------------------- 3097664d63 | Nicholas Feinberg | 2021-12-15 21:32:05 -0800 Increase the rat rate Changing the ratskin cloak from +Rats to *Rats may have left it somewhat undertuned. Increase the rat rate by 50% to compensate. -------------------------------------------------------------------------------- 7ef81e1a51 | Nicholas Feinberg | 2021-12-15 21:30:22 -0800 Add default values for monster spell slots Rather than requiring a full specification (spells:fireball.200.wizard...), allow just naming a spell and default to some plausible frequency and casting type values. -------------------------------------------------------------------------------- 0bdaba56fc | Nicholas Feinberg | 2021-12-15 21:30:22 -0800 Discover traps Don't claim that &Tzot will "mark it undiscovered". -------------------------------------------------------------------------------- d6bfa8a262 | Nicholas Feinberg | 2021-12-15 21:30:22 -0800 Zot! (Sastreii) New Zot trap tile. -------------------------------------------------------------------------------- 766a6a42ef | advil | 2021-12-15 21:23:11 -0500 doc: tweak some comments The return values here are not very obvious, document and make the comments consistent. -------------------------------------------------------------------------------- 38569e0721 | Kate | 2021-12-16 02:02:35 +0000 Fix a return value -------------------------------------------------------------------------------- 90128a5531 | Oneirical | 2021-12-16 02:02:14 +0000 Ban Jiyva from Thunderdome, replace Teleport Self with Blink Away Jiyva now uses exploration piety so doesn't function in arenasprint, and Teleport Self has been removed. [Committer's note - updated commit message, and kept Fedhas as enabled. Closes #2293] -------------------------------------------------------------------------------- bbd083314f | Kate | 2021-12-16 00:50:52 +0000 Make Yara's Violent Unravelling smite-targeted Along similar lines to Inner Flame and its recent change, Unravelling is a fun hex spell with some good utility, but is often quite fiddly to make effective use of. Change it to also be smite-targeted, allowing more precise enchantment/summon removal without the chance of a non-enchanted creature blocking the beam and making it ineffective. -------------------------------------------------------------------------------- f21496c7a1 | Kate | 2021-12-16 00:24:28 +0000 Shorten some new welcome messages To fit on a single console line. -------------------------------------------------------------------------------- e8bcaa7831 | Kate | 2021-12-16 00:02:48 +0000 Remove an unnecessary prompt The dreamshard necklace as implemented doesn't have any problem interacting with DDoor - the player will be invincible as expected while the spell is active, and then once it expires the necklace works as normal to save them if required. -------------------------------------------------------------------------------- c1efb617dc | Kate | 2021-12-16 00:02:48 +0000 Remove a duplicate canned message -------------------------------------------------------------------------------- 616b1c6417 | advil | 2021-12-15 14:40:31 -0500 lint -------------------------------------------------------------------------------- a718ce6c6e | Nicholas Feinberg | 2021-12-15 11:14:23 -0800 Lighten hands (kate) Continue a policy of strategic ambiguity wrt the purpose & uses of the Orb of Zot. -------------------------------------------------------------------------------- d40668a259 | advil | 2021-12-15 13:57:14 -0500 feat: read/quaff floor items from description Pretty straightforward change except that it was slightly tricky to get the right item to use. In the course of this I also refactored some of the switch statements and generalized the quiver check -- you can quiver from the description anything that is normally quiverable, rather than using an item by item check. This required a somewhat ugly hack to keep (q)uiver and (q)uaff from colliding, point even more towards the need to overhaul this code in a more structured way. -------------------------------------------------------------------------------- f8141789e4 | advil | 2021-12-15 13:57:14 -0500 feat: feature description tweaks * Show "you are here" if the player is at the position being examined. For now this is only on feature descriptions, but I have long wanted to add something like this for accessibility reasons. * Simplify some redundant feature decriptions. This was already done on the js side (I haven't removed that code, but possibly it is now removable if this one remains bug-free). * Improve door long descriptions. This mentions open/closed state, which is redundant, but felt odd not to include. It also explicitly mentions the door breaking mechanic. -------------------------------------------------------------------------------- 96c0fc9bb0 | advil | 2021-12-15 13:57:14 -0500 feat: tweak describe item actions order This is aimed at getting the "main" thing you do with various item types first, and the stable things across many item types last. (Previously, the latter were mostly first, and the order of the former was somewhat variable.) -------------------------------------------------------------------------------- 39b20cf4d7 | Nicholas Feinberg | 2021-12-15 10:24:05 -0800 Ignis flavor tweaks - Put its message before the 'you have escaped'. The latter is iconic and should always be last. - No messaging for escaping without the orb with Ignis - it won't come up often & doesn't really add much. -------------------------------------------------------------------------------- cb000ee472 | Edgar A. Bering IV | 2021-12-15 20:17:44 +0200 feat: some Ignis lore messaging (Wandering Mushroom) -------------------------------------------------------------------------------- 933dd556d1 | Edgar A. Bering IV | 2021-12-15 20:10:45 +0200 fix: lower the cost of Yred recall It didn't survive its tweak in the rebase, oops. -------------------------------------------------------------------------------- 27aa881441 | advil | 2021-12-14 17:22:12 -0500 fix: relax the conditions for `X]`/`X[` (elliptic) These got overly tightened in 5bd2f0ac44. -------------------------------------------------------------------------------- 93145404a5 | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: silence library messages during newgame creation (kate) -------------------------------------------------------------------------------- 43c36bbe99 | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: don't announce empty wanderer inventories -------------------------------------------------------------------------------- 805a0a0067 | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: remove some dead book code from ng-setup -------------------------------------------------------------------------------- c9877f665c | Edgar A. Bering IV | 2021-12-14 22:20:41 +0200 fix: don't fall back to a kite shield inappropriately at newgame -------------------------------------------------------------------------------- a95d5098ad | hellmonk | 2021-12-14 22:17:31 +0200 feat: invert the wanderer paradigm Wn is a really cool "random start" option, but has a couple annoyances. You can get some truly awful starts due to the way skill points are assigned, and are basically guaranteed to have awful stats due to the way stat points are assigned. This commit tries to rectify those problems and adds some new things that Wn can get at game start. The new model assigns the equipment first, based entirely on species apts, then assigns stats and skills afterward depending on what we got. It tends to lead to more lopsided (ie useful) stat distributions and higher levels of skill in things that are useful, though these are by no means guaranteed. Along with changing the model this commit makes the following adjustments to Wn starting equipment, offering a wider mix of cool things: - "good weapon" can get an upgraded base type or vorpal brand instead of enchant - "good armour" can roll chain instead of +2 scale, and gives acid scales for non-chain users - "good shield" now rolls an enchanted buckler or prot buckler, instead of a kite shield - "good magic school" rolls a 3-spell randbook instead of a background starting book - "good spellcasting" rolls a 4-spell any-school randbook (capped at level 3) - "good stealth" can give either a +2 dagger and a consumable or a plain dagger and a mix of atropa and datura darts - "decent armour" can role chain or ring, with a plain aux armour for odd shapes (all scales and tla are too strong for decent items) - "decent dodging" and "decent stealth" can give an aux armour if a good armour wasn't received - "decent fighting" can give an extra weapon plus if a weapon is available - it is possible to start with a hunting sling and sling skill - throwing can start with boomerangs - it is possible to get aux armour (and likely for oddly shaped species) - a wider variety of potions and scrolls can be rolled - a wider variety of evocables can be rolled - Wn that start with sandblast also start with stones [ Committer's notes: Thanks to gammafunk, kate, and PleasingFungus for input in this overhaul. ] -------------------------------------------------------------------------------- f74599e7d4 | Edgar A. Bering IV | 2021-12-14 11:22:38 +0200 text: quotes for Chei abilities This might be gratuitous and I don't care -------------------------------------------------------------------------------- 9c71ebef14 | Nicholas Feinberg | 2021-12-13 20:44:56 -0800 Store polar vortex power on cast We historically didn't do that to discourage, say, wielding a staff of ice, casting the spell, and then unwielding the staff to do something else. But... usually if you're casting a level 9 ice spell, you sort of want to have ice enhancers for other things (eg ozo's fridge), and the un-stored power system encourages other silly swaps - eg start with a ring of wizardry to get vortex castable, then swap to =ice once it was running. Anyway, not storing power meant that using exegesis on vortex was a nasty player trap. Now that's fixed! -------------------------------------------------------------------------------- 59a505c739 | Nicholas Feinberg | 2021-12-13 20:24:43 -0800 Beef up ironbound thunderhulks Even as mid-tier enemies, thunderhulks were generally considered to be somewhat underwhelming threats. So, increase their HD by 50% to increase the accuracy and damage of their Call Down Lightning (damage from 3d21 to 3d26, accuracy from 19 to 21). Also give them Blink Range so that they eventually get a chance to re-distance themselves after getting too close to the player, similar to boulder beetles. -------------------------------------------------------------------------------- ef4b3a621b | Nicholas Feinberg | 2021-12-13 20:15:18 -0800 Fix Fire Storm damage display (elliptic) A weird ancient hack (3a4159644bb83, greensnark, 2008) was causing displayed damage (in xv, etc) to be twice actual damage. Now fixed. -------------------------------------------------------------------------------- 286b55035a | Nicholas Feinberg | 2021-12-13 20:12:48 -0800 Clarify Fiery Armour desc Be explicit about the +AC. -------------------------------------------------------------------------------- ec31e34405 | Nicholas Feinberg | 2021-12-13 20:10:41 -0800 Make two sudden removals The teleportatis exploration trap message used "suddenly" three times in a row. It was a bit much. -------------------------------------------------------------------------------- c7b72d3202 | gammafunk | 2021-12-13 14:58:16 -0600 fix: Update loot potion weights (darkwolf811) The list dgn.loot_potions is supposed to have weights adding up to 100, but this was broken f55cbd34. Adjust the entries appropriately so we total to 100 again. -------------------------------------------------------------------------------- 0f060c364e | advil | 2021-12-13 12:18:53 -0500 feat: no exiting popups via mouse with mouse control disabled Disabling this for now because of complaints. I'm not sure if this is really a good idea, this strikes me as the sort of thing where if this had always existed, no one would be asking me to remove it. -------------------------------------------------------------------------------- 5bd2f0ac44 | advil | 2021-12-13 12:18:53 -0500 feat: add key hints and hotkeys to feature descriptions Also, add clicking to webtiles, with some other misc description enhancements. This turned out to be a mess of special cases, many of which I've probably still missed. The commands that are supported are up, down, open, close, and some shortcuts that go directly to the map view for the other side of explored staircases. Bugfixes: correctly handle unseen tiles with webtiles right click; fix a subtle ordering issue in description hotkey handling. -------------------------------------------------------------------------------- c91ac77a38 | advil | 2021-12-13 12:18:53 -0500 fix: don't crash when right clicking out of bounds Probably webtiles specific. -------------------------------------------------------------------------------- cf6077d4cc | Kate | 2021-12-12 21:14:02 +0000 Tweak wording of autumn katana description For consistency with other DESCRIP lines. -------------------------------------------------------------------------------- c8569940dd | Edgar A. Bering IV | 2021-12-12 23:08:30 +0200 fix: remove some leftover code -------------------------------------------------------------------------------- 5f824d10e6 | sdynet | 2021-12-12 23:06:02 +0200 Rework the autumn katana Now, the sword sometimes uses manifold assault when attacking an enemy, instead of having clarity. Due to issues of setting time_taken and preventing re-entry the katana duplicates some of the functionality of cast_manifold_assault instead of simply re-using the function. However! There are two great upsides to this implementation: monsters can use the katana (no special flag) and players can use it with manifold assault to get one layer of recursion (and a rare message). [ Committer's note: Rewrote the artefact function, tweaked the implementation, revised the commit message. Closes #2234 ] -------------------------------------------------------------------------------- dee3398930 | advil | 2021-12-12 14:55:11 -0500 fix: add explicit styling for action panel settings For most players this is just minor color / spacing tweaks. But, it's come to my attention that CWZ loads bootstrap, and bootstrap's css is impacting the action panel quite badly. This commit should undo the most egregious aspects of this, though it's a bit hard to test directly. (Don't get me wrong, tossing bootstrap on top of webtiles is super double plus unrecommended, likely to lead to any number of subtle unpredictable rendering glitches, and by providing a workaround for these particular fairly major ones I in no way endorse doing webtiles+bootstrap...) -------------------------------------------------------------------------------- 386a16afc0 | advil | 2021-12-12 10:30:58 -0500 feat: click to close webtiles popups Previously, there was no way to escape a popup with a mouse(!). This commit adopts the local tiles approach, where clicking outside of a popup exits the popup. Unlike local tiles, both left or right clicking will work; in local tiles it's only right click. Possibly both clients should be standardized to use one or the other. -------------------------------------------------------------------------------- ff41af4bb9 | hedk3 | 2021-12-12 10:49:17 +0200 fix: more Storm Form hand naming [ Committer's note: fixed to compile correctly and unbraced. Closes #2290 ] -------------------------------------------------------------------------------- 4ce00ec954 | Edgar A. Bering IV | 2021-12-12 10:35:37 +0200 docs: update the CREDITS -------------------------------------------------------------------------------- 8fc9a925bb | Edgar A. Bering IV | 2021-12-12 10:11:16 +0200 feat: revise the ring of the Mage The ring of the Mage was a not-super exciting Wiz ring with light bonuses. In keeping with the "good or interesting" unrand revision paradigm, this commit revises the ring of the Mage to be a Wiz/Archmagi ring. Archmagi on an easty to swap slot might raise some eyebrows, but it is no worse than enhancer swapping. The hope is that this item might convince some more hybridization, helping make up for both the penalty of heavy armour and the lack of intelligence of heavy armour users. Of course, it'll also be an exciting find for any spellcaster who has body slot Archmagi, thanks to the stacking change. Boom pow! XXX: The _resist_composer in output.cc assumes that resists with a max of < 5 should get spacing, if it becomes possible to get 3 pips of Archmagi this will cause display issues % on console. -------------------------------------------------------------------------------- e886f3e13f | Edgar A. Bering IV | 2021-12-12 10:09:28 +0200 feat: archmagi stacking Currently the only sources of archmagi are body armour and a save-transferred hat of the high council. However, adding more archmagi sources has been discussed in a couple of development spitballs and the expectation in all of these conversations is that archmagi stacks. This commit alines expectation and reality. -------------------------------------------------------------------------------- 151b4aef40 | Edgar A. Bering IV | 2021-12-12 10:09:17 +0200 fix: archmagi handling in util/art_data.pl -------------------------------------------------------------------------------- 468af4c5fd | Edgar A. Bering IV | 2021-12-12 09:31:54 +0200 fix: remove a Tar teleport closet Closes #2291 -------------------------------------------------------------------------------- 87f88a2ef8 | Edgar A. Bering IV | 2021-12-12 09:24:06 +0200 Revert "fix: don't force picking up of newly IDd equipment" This reverts commit f5e35ccd160c657ff46174990fc3fe4e97655484. As implemented it did not have the correct behavior, and was still incorrect after 99a87601b6. Discussion with players revealed there are many users who expect autopickup to make its "should pick up decision" on an item when it comes into view, while others would like their autopickup options applied with respect to the item post-floor-identification. So I'm reverting this to the behavior before f5e35ccd: an item will be autopickedup if it meets the user's autopickup preferences before it is floor-identified. The correct solution here is to add a boolean game option that is checked before setting NEED_AUTOPICKUP_KEY in the relevant lines (the ones modified by this commit). -------------------------------------------------------------------------------- 8cf3085ebe | Edgar A. Bering IV | 2021-12-12 09:24:06 +0200 fix: don't crash on deathbed conversions Closes #2289 -------------------------------------------------------------------------------- c51a68064b | Kate | 2021-12-11 21:51:33 +0000 Add a missing canned message to Shaft Self prompt -------------------------------------------------------------------------------- a6bf8c0b4a | Kate | 2021-12-11 21:51:32 +0000 Let Yara's Unravelling turn summons into explosions (Undo) Yara's is a fairly situational spell, so to give it some slightly wider utility, allow it to also be cast on summoned monsters, unravelling the magic that summoned them and killing them immediately. This allows it to be used as a form of single-target abjuration that can additionally damage the summoner with the resulting explosion. -------------------------------------------------------------------------------- b845255321 | gammafunk | 2021-12-11 14:30:48 -0600 fix: Correctly handle classed objstat averages For the classed averages of charges and enchantment, use the correct count when averaging according to classes of "Vault", "Shop", and "Mons" for items in vaults/shops/held by monsters. -------------------------------------------------------------------------------- 64c176eb70 | advil | 2021-12-11 14:48:53 -0500 feat: expand out webtiles mouse control Webtiles mouse control has always been a bit of an incomplete feature; I think edlothiol only barely started on this in 2012 in 52f5b20b692aa, which was (afaict) his last commit. No one else has tried to fix this up since. This commit fills out the feature set a bit. Previously, you could use left click to move and attack in command mode, and there was a minimal tooltip for monsters, and that's it. This commit adds: 1. right click to describe in regular view, targeting view, and map mode. 2. left click to fire in targeting mode. (Or other behaviors, e.g. in `x` this triggers autotravel.) 3. synchronization of a targeting ray with the mouse cursor position. This is probably the dodgiest feature in that (a) it may run into issues with latency (it's handled on the server side) and (b) it may make it too easy to misclick. The implementation follows local tiles but I wonder if this would be better with something like, click to select target, click again to fire. (Also, this was rather involved to implement as it revealed a subtle bug in the direction chooser.) 4. Slightly less minimal tooltips. This only shows tooltips for monsters still, because it's a bit constrained by what info there is on the client side, and constantly doing popups with just the click hints was pretty annoying in my testing. One departure from local tiles: mousing over a square out of view doesn't affect the currently set ray. I found this a lot more natural and it works better with mousing from an object in the action panel to the targeting range (which almost always involves crossing out-of-los squares). Possibly this should be ported to local tiles. As before, all of this stuff is entirely disabled with `tile_web_mouse_control = false`. -------------------------------------------------------------------------------- 29f2d0b5fe | gammafunk | 2021-12-11 13:26:29 -0600 feat: Update briar patch and bush logic Currently, both bushes and briar patches allow projectiles and non-piercing magical beams to pass through, but get hit by enchantments and piercing or exploding beams. Although these rules are documented, they aren't intuitive and their complexity doesn't to interesting decisions. This commit simplifies the rules to allow pass-through to apply to all kinds of beams, be they enchantment, exploding, piercing, or non-piercing. Thus if a monster is shooting you behind a bush with whatever beam, you can shoot back with whatever beam. Bush and briars can still be targeted directly to prevent pass-through for any type of beam. We also remove specific exceptions for ranged and non-ranged sticky flame pass-through, since again this distinction is vanishingly rare in practice. Finally, we remove an unused exception for Chain Lightning as well, since it's not necessary for that spell to function properly. For briar patches, we improve their logic so pass through beams only if the actor is aligned with the briar. They intercept beams fired by a non-aligned actor like a normal monster would. This means that thorn hunters can fire through their briars, but the player's beams through these briars will be intercepted. This helps the briar patch to be a more effective anti-player-ranged barrier. For player-created briar patches under Fedhas, briars now block all incoming beams from hostile monsters like the player would expect. Monster descriptions for bushes and briar patches are updated to describe the new logic. -------------------------------------------------------------------------------- f48e6d8fb1 | amcnicky | 2021-12-11 20:06:22 +0200 feat: new unrand artefact: dreamshard necklace The dreamshard necklace is an amulet of nothing that for the most part does nothing. However, on a lethal or near-leathal blow the necklace shatters, absorbing the blow and releasing protective dreams of healing (a big heal, between half and full HP), friendship (shadow creatures), and clouds (fog). That is, the player gets to trade their amulet slot (with its many powerful effects) for a one-time-get-out-of-death-free card. [ Committer's note: Simplified the shattering effect significantly, re-factored the trigger logic to be simpler, moved the dreamshard effect to spl-goditem, reduced the visuals to a single flash (no permanent tile changes), implemented Ashenzari and Death's Door checks. Thanks to kate and PleasingFungus for input in the PR process. Closes #2078. ] -------------------------------------------------------------------------------- 12f55c057d | Edgar A. Bering IV | 2021-12-11 19:23:03 +0200 fix: finish an old todo in player::heal -------------------------------------------------------------------------------- 17253bc447 | robertxgray | 2021-12-11 12:54:53 +0100 Merge branch 'master-upstream' -------------------------------------------------------------------------------- 397d20460d | mgdelmonte | 2021-12-11 11:08:11 +0200 feat: add travel trail functions to clua Adds `travel.clear_travel_trail` and `travel.set_travel_trail` functions, allowing clua control over the travel trail. This purely visual feature can enable some nice generated visualizations, without affecting gameplay. [ Committer's note: Closes #2273. ] -------------------------------------------------------------------------------- 376ce86db5 | mgdelmonte | 2021-12-11 10:58:57 +0200 feat: add optional weapon argument to monsterinfo.target_weapon Adds an optional `weapon` argument to the Lua `monsterinfo.target_weapon` function. If `weapon` is omitted, it shows the targeting description accompanying an unarmed attack. If `weapon` is provided, it shows the targeting description for an attack with that weapon. This changes usage of the function slightly (formerly, the function returned only the description for your current weapon), but the function is new in this trunk cycle. [ Committer's note: Tweaked to also resolve a TODO in describe.cc. Closes #2275 ] -------------------------------------------------------------------------------- 9993a5020f | mgdelmonte | 2021-12-11 10:51:22 +0200 feat: add you.known_items clua function This exposes the list of known, identifiable subtypes to Lua. It's the same list as given by the `\` "display known objects" command, minus the unknowns. Without this, it's impossible to know (within Lua), that one has already seen a particular kind of potion or scroll. [ Committer's note: Squashed and clarified docstring. Closes #2286 ] -------------------------------------------------------------------------------- 31a25a4635 | mgdelmonte | 2021-12-11 10:30:17 +0200 fix: don't treat range 1 spells as "ranged" in mons_has_ranged_spell Range 1 spells like Freeze aren't really ranged spells, for the purpose of this function. [ Committer's note: Closes #2279 ] -------------------------------------------------------------------------------- ea0b6819f9 | mgdelmonte | 2021-12-11 10:14:27 +0200 feat: add can_traverse to clua monsterinfo Adds `can_traverse(x,y)` function to the clua monsterinfo object. Returns true if the monster can traverse (actually, occupy) the cell at x,y coordinates. Helpful for deciding where monsters might move. [ Committer's note: Closes #2274 ] -------------------------------------------------------------------------------- 398d93cfb8 | Brian Power | 2021-12-11 10:12:25 +0200 fix: add missing args for lua print_hint() [ Committer's note: Closes #2247 ] -------------------------------------------------------------------------------- 0bdd5ba030 | advil | 2021-12-10 21:04:28 -0500 fix: don't rest forever when divine vigour ends (ardl) If divine vigour ends while resting, bringing the player to full health, the delay would not end on its own, because the delay end condition was apparently only checked when increasing hp or mp. (I thought the delay was also supposed to check, but it seems I've been misreading this could. Possibly this would be a lot more robust than what we're doing now...) For most players this doesn't matter, because the divine vigour end message interrupts the delay. But any player who has something like `runrest_ignore_message += pray:` can trigger the bug. (Thanks to ardl for his ...involved rc, I got some good bisecting practice to find the interaction.) To fix this, this commit adds a check to calc_hp on top of inc_hp, which should also cover any similar cases that have so far been missed. Also, some cleanup of resting checks to be more uniform. -------------------------------------------------------------------------------- 2df8497881 | nicolae-carpathia | 2021-12-10 19:33:30 -0500 Make nicolae_danse_macabre slightly less macabre After comments, toned down a bit in D and Elf, by adding runed doors and also using less demon weapons in D. -------------------------------------------------------------------------------- fd376f2b2f | advil | 2021-12-10 18:15:15 -0500 lint: checkwhite (Odd thing for checkwhite to be enforcing, maybe a bug?) -------------------------------------------------------------------------------- 8eb0198dcf | advil | 2021-12-10 17:54:37 -0500 fix: handle multi-word actions in webtiles item descriptions Previous implementation made wrong assumptions about what actions there could be; instead of trying to generalize this commit just brute-forces the handling of a final "or". -------------------------------------------------------------------------------- 52f9137b40 | advil | 2021-12-10 17:28:42 -0500 fix: make webtiles ui push bugs less disastrous Two related issues: * If the menu state gets out of sync with the webtiles ui state, don't bring down the whole client (this could happen in `menu_key*_handler` if `menu` was set but `ui.top_popup()` returns null or undefined). * If there is a crash in a ui handler, show a buggy div rather than do nothing, to head off one way that the game's menu state and webtiles ui can actually get out of sync. This will also make it a bit clearer to the user they are seeing a bug that they could report. -------------------------------------------------------------------------------- 2d15a92f8c | robertxgray | 2021-12-10 21:42:51 +0100 Android: Include < and > in numeric keyboard This is a user request for searching stairs in map mode. They replace - and + which are available in the main keyboard. -------------------------------------------------------------------------------- 5c4f51bb93 | advil | 2021-12-10 15:28:19 -0500 fix: don't crash on `(t)ake off` This won't render quite right, but this commit should fix the javascript crash. -------------------------------------------------------------------------------- 1608afb2e1 | Edgar A. Bering IV | 2021-12-10 22:04:00 +0200 fix: don't treat all delays as frozen time -------------------------------------------------------------------------------- 97e41b5463 | Kate | 2021-12-10 19:49:04 +0000 Update some tests Remove obsolete items/egos from test character setups. This was only from a very cursory glance over the tests, and they likely could use some further attention (especially poor qw). -------------------------------------------------------------------------------- 76092dafaf | Edgar A. Bering IV | 2021-12-10 21:28:39 +0200 fix: don't crash when reaping with zonguldruk or chaos The refactor to work like the rest of corpse exploitation got lost in rebasing new Yred, oops. -------------------------------------------------------------------------------- f17af53183 | Edgar A. Bering IV | 2021-12-10 19:23:15 +0200 fix: the build -------------------------------------------------------------------------------- 6ce92f56ac | ArmiesAndCastles | 2021-12-10 19:03:35 +0200 feat: improve wizmode freeze time This commit keeps time frozen during autoexplore and forbids resting (since HP will not be recovered). [ Committer's note: Squashed and rebased, blocked the rest command completely. Closes #2206 Closes #2205 ] -------------------------------------------------------------------------------- a90572a584 | advil | 2021-12-10 11:39:59 -0500 feat: clicking for inventory item actions One thing the action panel has revealed is how minimally implemented clicking is in the webtiles UI. I realize that lots of advanced players are perfectly fine with never using a mouse, but allowing it makes things easier for newer players who aren't used to huge keybindings. This commit enables clicking on the actions in an item description popup (which is one of my first targets for this kind of change because it's so obviously missing when you right click from the action panel). The implementation is entirely client-side: it converts any strings like "e(v)oke" into a span with the `data-hotkey` attribute set to the hotkey in parens. This might be described as hacky (perhaps sending structured action data from the server would be better), but it was really easy to implement and actually seems pretty robust/useful. Part of the trick was that someone (aidanh I assume) has previously implemented an amazing thing where if you just set this data attribute, an on click handler magically springs into existence that sends the hotkey. -------------------------------------------------------------------------------- 39a6f95271 | Aliscans | 2021-12-10 18:39:39 +0200 feat: use modifier prefix keys in the direction chooser /+direction and shift+direction are valid combinations for the "long walk" command. Shift+direction is a valid combination for "fire in a direction", with direction+! as an alternative, but having /+direction do the same should make it easier to remember. Ctrl+X and Ctrl+P are both valid inputs to the direction chooser and common browser hotkeys, this commit also allows *X and *P as alternatives. Put ' and ; before * and / in targeting_help_1, as the above change means the latter keys are used as modifiers if use_modifier_prefix_keys is set (the default). In unmangle_direction_keys(), only let * modify characters which CONTROL() maps to \x00-\x1F. In particular, this means that ** is *, giving a work-around for people who use the default settings but are used to * and / cycling through objects. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 0997d3a168 | ArmiesAndCastles | 2021-12-10 18:00:45 +0200 feat: add awoken forest attitude indicator to xv [ Committer's note: fixed bracing style, Closes #2204 ] -------------------------------------------------------------------------------- 99a87601b6 | Edgar A. Bering IV | 2021-12-10 16:44:21 +0200 fix: use identify_item when deciding autopickup information -------------------------------------------------------------------------------- f5e35ccd16 | Perry Fraser | 2021-12-10 16:24:55 +0200 fix: don't force picking up of newly IDd equipment This just re-uses the logic that was being used for wands, which also avoids the edge-case where if you floor-id something without using autopickup triggering (like when AP is disabled) then it was possible to have the item ID'd, marked as don't-pickup in `\`, and still picked up due to NEEDS_AUTOPICKUP_KEY set in its props. The old code that led to this logic seems to imply there was an intentional hack for "previously-unknown items", but in testing, I found no unexpected behavior with the new version. -------------------------------------------------------------------------------- c8cd538e2d | Edgar A. Bering IV | 2021-12-10 16:06:36 +0200 lint: checkwhite -------------------------------------------------------------------------------- 6a268ab339 | Gopall | 2021-12-10 16:04:24 +0200 feat: prompt when wearing faith Trying to remove an amulet of faith (while worshipping a deity that cares about it) would trigger a confirmation to confirm your choice. But there wasn't any confirmation like that for when you tried to put it on. So I added a bit of code to a function so the game would ask the player if they were sure they wanted to wear an amulet of faith. [ Committer's note: There was some discussion among the devteam as to whether or not this prompt is necessary or if auto inscriptions can implement the desired functionality (autoinscribing faith with !P to force a prompt). I'm merging this for consistency and because this prompt protects new players who are exactly the ones who won't have autoinscriptions set up. ] -------------------------------------------------------------------------------- 9766e9d42a | ArmiesAndCastles | 2021-12-10 15:55:55 +0200 fix: forbid temporary form lava exploration Closes #1975 -------------------------------------------------------------------------------- 27af8a720d | EdDewey | 2021-12-10 15:55:05 +0200 fix: only ask barachi for confirmation once when they hop -------------------------------------------------------------------------------- 88f0ff19eb | Nikolai Lavsky | 2021-12-10 15:29:25 +0200 feat: allow checking if there is enough space for Malign Gateway This commit disables the spell in the quiver and z/Z menu when there is not enough space to open a gateway. -------------------------------------------------------------------------------- 2bfde531ef | Perry Fraser | 2021-12-10 15:23:54 +0200 fix: correct levdes.vim comment syntax highlighting Seems to have been introduced as a typo in 763bd81. -------------------------------------------------------------------------------- 9d8ee82f23 | Aliscans | 2021-12-10 15:14:55 +0200 feat: state when a terrain blocks movement, but not reaching or magic State in the description when a terrain blocks movement, but doesn't restrict reaching weapons or LOS_NO_TRANS spells. At present, the former covers orcish idols, granite statues and malign gateways (the last only shows a description before the tentacle appears), and the latter also covers grates. This knowledge could be useful for (e.g.) cheibrodos_spider_deadly_dance. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 5bfae530bd | Nikolai Lavsky | 2021-12-10 15:11:34 +0200 fix: don't erase travel trail when visiting item piles (#2081) After 330158af and 1bdd5c97, the travel trail is not drawn at all when the player visits item piles. `movement:cc:move_player_action()` adds visited tiles into the trail as long as there is the running delay in the delay queue. If the player moves manually (`running == false`), the same function calls `clear_travel_trail()` to erase the trail. Before we call `move_player_action()` for the last time, `travel.cc:travel()` calls `stop_running()`, which removes the running delay. As the result, `move_player_action()` clears the trail instead of adding the last step to it. Fix this by using `stop_running(false)`, which doesn't clear the delay. This should be safe, since the delay will be cleared by other code later anyway. -------------------------------------------------------------------------------- dce3279b65 | Nikolai Lavsky | 2021-12-10 15:11:34 +0200 fix: draw complete travel trail when autoexploring (#2081) After 14faa605, the travel trail sometimes doesn't have the last step. It happens when autoexplore is interrupted by a monster coming into view or by the player noticing a new item pile. Previously, we removed the running delay from the delay queue only after adding the last visited tile to the trail. We stop running and remove the delay earlier now, so we need an extra check after the code added in 14faa605. -------------------------------------------------------------------------------- 6a9fe35dad | burnish3d | 2021-12-10 15:10:15 +0200 docs: update style of use_animation and monster_list_colour (#2261) -------------------------------------------------------------------------------- 51eb943035 | hedk3 | 2021-12-10 15:08:02 +0200 fix: Storm Form display weapon name depending on species (#2265) Currently, this form always displays "Storm fists" no matter the active species, despite tiles showing that the player character's anatomy is maintained in this transformation. To be consistent with Statue Form and Blade Hands, this minor change uses the same logic used in Statue Form to fix this. -------------------------------------------------------------------------------- f47a79d804 | Jonathan Klabunde Tomer | 2021-12-10 15:05:23 +0200 consider Summonings useless after sacrificing love (#2277) With Abjurations gone, every spell in the Summonings school is inaccessible to characters that have sacrificed Love to Ru. The skill is therefore useless to them; we needn't bother allowing them to train it, and certainly shouldn't offer manuals of Summonings from acquirement. -------------------------------------------------------------------------------- 6434aa07ad | robertxgray | 2021-12-10 14:00:31 +0100 Android: Fix weird keyboard on Samsung devices Newer Samsung devices use the emoji variant of some characters by default. This fix explicits the text variant and reduces the font size for better fitting in the smallest devices. -------------------------------------------------------------------------------- f337918505 | robertxgray | 2021-12-10 14:00:23 +0100 Android: Long press as right click A long press can be used as a right click on the Android port. -------------------------------------------------------------------------------- c0a09d7c55 | robertxgray | 2021-12-10 14:00:11 +0100 Hide tab icons by default in the small layout The icons are shown/hidden when clicking on the status area. We can increase the viewport scale as a result. -------------------------------------------------------------------------------- 498bec7977 | Edgar A. Bering IV | 2021-12-10 11:54:41 +0200 tiles: yred iconography (Sastreii) -------------------------------------------------------------------------------- 1eb2483b26 | Edgar A. Bering IV | 2021-12-10 11:47:23 +0200 fix: consistently treat zombie base types In 1e9075421c5 zombies were de-anonymized. As an unfortunate side effect, the function mons_zombie_base was changed to return the species of the base zombie, not the base monster class used to define the zombie. As a result, most dramatically noticed for the damage of orcish derived undead, but also relevant for spriggan defender zombie action eneriges and any monster with a species much weaker than its type, the zombie was based on the underlying species. This commit simplifies some uses of the function and is being made after verifying every other use will work correctly (or as originally intended) with mons_zombie_base returning the monster class, and not the underlying species. Undead orc warlords should once again be as spooky as they seem from their name. -------------------------------------------------------------------------------- f3fc490d9d | Kate | 2021-12-10 03:13:02 +0000 Fix TSO not giving penance for miasma effects Appears to have been broken since the poison conduct was removed in c6e9da29e, oops. Fortunately didn't really matter since methods of creating miasma (like casting Corpse Rot) would already cause penance, but fixes the very powerful tech of creating a bunch of miasma in advance and then converting to TSO and letting it kill things. -------------------------------------------------------------------------------- 0f7456fd9b | Kate | 2021-12-10 02:39:54 +0000 Update the manual's mutation section -------------------------------------------------------------------------------- 594c0c42f0 | Kate | 2021-12-10 01:51:32 +0000 Update the manual -------------------------------------------------------------------------------- a282ea246d | advil | 2021-12-09 15:45:36 -0500 docs: update action panel options -------------------------------------------------------------------------------- 450912fe5d | advil | 2021-12-09 14:30:05 -0500 feat: action panel glyph mode I'm not sure this is really that useful, so it's currently not tied to actually being in glyphs mode and has its own option. We'll see if people actually use it; if not, (and if I don't find a way to improve it) it may just be better to remove before release. -------------------------------------------------------------------------------- 0cd4c285bc | advil | 2021-12-09 11:30:52 -0500 feat: more control over action panel item order Previously, item order was determined by enum order. This change uses the action_panel option itself to determine primary order (this was already implemented in an ordered way), and item letter for the suborder. It's possible that the latter will be too confusing by default, and if so, we can return to subtype as the secondary sort (which provides a stable ordering across games). I've also tweaked the default so that it is actually enum order, for some level of consistency before and after this commit. -------------------------------------------------------------------------------- a9895729f1 | gammafunk | 2021-12-09 06:32:15 -0600 feat: Slightly tone down a float vault (Lici) For minmay_chambers_of_sevens, the final chamber of sevens has seven 9 out-of-depth monsters, which is a bit steep for earlier mid dungeon levels like D:7. Allowable, but verging into runed door territory, which this vault isn't. Replace 3 9s with 0 spawns and downgrade two of the loot items, preserving the count of seven monsters and seven loot items in the final chamber. -------------------------------------------------------------------------------- 05a166d0ed | Kate | 2021-12-09 01:45:16 +0000 Adjust Chain Lightning damage falloff with range Increase the damage falloff from 2/3 per arc to 3/5 - in practice the damage falloff wasn't quite significant enough to make it feel distinct from other level 9 spells that deal massive AoE damage. Making it fall off faster helps make the positional aspect of the spell more important, while retaining its huge initial damage. In addition, rework the initial arc to scale smoothly with range, instead of having damage breakpoints at range 4 and 7 - this wasn't communicated clearly, and made those range breakpoints especially important against Nikola, for example. -------------------------------------------------------------------------------- a9c9dcfaf8 | Kate | 2021-12-09 01:45:16 +0000 Make wizmode god gifting grant Yredelemnul zombies Since &^ can't be used to adjust Yred's piety, special-case &- to gift zombies up to the next piety star. -------------------------------------------------------------------------------- 31ca34fcf2 | Kate | 2021-12-09 01:45:16 +0000 Refactor Bind Soul to use a new ability targeter And slightly adjust a failure message. -------------------------------------------------------------------------------- 6c0667d426 | Kate | 2021-12-09 01:45:16 +0000 Slightly increase BiA piety cost By 0.5 on average, to continue toning down the strength of various god abilities that are extremely strong and relatively low cost. -------------------------------------------------------------------------------- 46f1710d2c | Kate | 2021-12-09 01:37:05 +0000 Adjust some Qazlal ability costs To help Qazlal out a bit early on, reduce the MP and piety cost of Upheaval slightly, and also reduce the MP cost of Elemental Force. Also increase the MP cost of Disaster Area by 1, to make it a tiny bit harder to use multiple times in a single fight. -------------------------------------------------------------------------------- c1a47e44fc | Kate | 2021-12-08 23:25:24 +0000 Increase Okawaru Duel cost, reduce grace period on win It's an intended part of the ability that the player has some time to heal up after winning a duel, but it should be a little less reliable as a method of escaping danger. -------------------------------------------------------------------------------- 3cb2360906 | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 tiles: spectre tiles for bound souls (Sastreii) Not the full range of zombies like some of the others, but enough types to capture the different kinds of soul encountered in crawl. Should help the player keep track of their bound soul better. Definitely look super cool. -------------------------------------------------------------------------------- 53f92202ff | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 fix: remove a now unused MB check -------------------------------------------------------------------------------- 26d7df5b1f | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: add the rest of genus W to Dark Bargain Since that was intended from the start. As the list is now longer in the mid range, adjust the quality floor upward. -------------------------------------------------------------------------------- 274bf074c3 | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: toughen up bound souls For a capstone that's a bit tricky to earn, bound souls are pretty flimsy, even with the extra HP they were previously given. Let's turn them up a bit more so they get a better "bridge moment" feel, and players feel good about keeping them around/replacing and upgrading them. -------------------------------------------------------------------------------- a437c65847 | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 fix: clean up merge-induced bugs in dark bargain As well as abort the ability if the servant fails to arrive, instead of charging the player zombies for nothing. Unlike other ally abilities, Yred's Dark Bargain is used by players who have gobs of allies, so many that they might not have any available space for their servant. Aborting may leak a small amount of information, but the cases where that happens are either: ones where the player is getting it any way in virtue of their zombies, or so vanishingly rare and punishing that its probably ok to leak here. -------------------------------------------------------------------------------- b2c76ee18a | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: mark death channel useless for Yredites -------------------------------------------------------------------------------- d6ebe8a65d | Edgar A. Bering IV | 2021-12-08 23:05:34 +0200 feat: allow bound souls to throw rocks -------------------------------------------------------------------------------- ea437062f2 | Edgar A. Bering IV | 2021-12-08 23:05:32 +0200 rename: change Yred abilities to not be explicit slavery Casual use of slavery-as-entertainment in crawl has been on its way out as poor taste for a while. Yred was one of the last hold outs, this rework is a good opportunity to make a change. Instead of dipping into the metaphysics of whether or not "enslaving souls" is the same as chattel slavery, let's just be a bit more vague in the flavour of Yred. -------------------------------------------------------------------------------- 17048352e6 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 refactor: black torch: treat bound souls as their own species There were a bunch of strange special cases for spectral things intended to handle edge cases for bound souls but not show up on regular spectrals because of other checks or luck. This changes the enslaved soul to be its own monster type, still of species spectral thing, and simplifies or makes explicit the relevant checks. This commit also allows bound soul stats to be adjusted independent of spectral things; the EV modifier could be changed in the future. For now, to buff the bound soul, it gets full HP so as to be less fragile. -------------------------------------------------------------------------------- 5224dc67e1 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 fix: clarify that undead left behind will poof -------------------------------------------------------------------------------- df1d555f45 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: fineff-ify attitude changing revivals Many different ways of harming a monster don't expect the monster to change attitude partway through the process. This has been the source of several mysterious Yred enslaved soul and Beogh deathbed conversion bugs. To prevent them, move both of these attitude-changing revivals to a fineff, so that mon->alive() returns false for the convertee until the fineff fires. This is a bit hacky so might cause weird behavior, but since fineffs now fire after each monster turn I don't think it will. -------------------------------------------------------------------------------- c2baa198af | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: black torch: spectral mist immunity Like nightvision, meant to make monsters from Dark Bargain not harmful to the player. Of course, we could have left revenants off of the dark bargain list but that is a significantly less cool approach. -------------------------------------------------------------------------------- 8b846c3b94 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 fix: reduce message spam under Yred and Usk -------------------------------------------------------------------------------- 8212ce3e68 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: black torch: yredelemnul conduct enforcement -------------------------------------------------------------------------------- 772aeeb350 | Edgar A. Bering IV | 2021-12-08 23:04:45 +0200 feat: black torch: handle yred abandonment correctly Update the abandonment sequence for the new style of yred minion and tidy up the now unused ALLY_YRED daction. -------------------------------------------------------------------------------- 0a07692a02 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: monk and ecumenical altar bonuses Grant the devout some immediate zombies. Monks get filled all the way up to **, which will feel a bit sad in the Temple but oh well. Ecumenical altar grants * worth of zombies, which at D:1-3 is a lot of bodies. Monk + Ecu gives ** but a few more zombies than a monk alone. -------------------------------------------------------------------------------- bf6f545f5c | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 fix: increase bind soul duration Now that it's a bit more awkward to use, give players a little more time to make the kill, since the zombies are paid out either way. -------------------------------------------------------------------------------- 3254f7a1f8 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: ensoul the animals And other less intelligent creatures. Souls are things that living, demonic, and holy creatuers have regardless of intelligence! -------------------------------------------------------------------------------- bf073b50f9 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 fix: prevent spectral things from taking stairs -------------------------------------------------------------------------------- 556ba5c09b | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: don't drop corpses with Yred This is to create the illusion that Yred always reaps when a corpse is dropped. (Yred's reap chance can be improved with faith, so it's a separate roll, but without faith they're both coinflips.) For consistency, both the reaping brand effect and this Yred effect now occur before dropping a hide. You cannot skin a zombie after its been reanimated! -------------------------------------------------------------------------------- 7da1dd8346 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: give full XP for Yred ally kills Commit db2750068a removed the summon XP penalty for all but Beogh and Yred allies, hoping a future rework of these two categories would allow the penalty to remove. The black torch sequence of commits overhauls Yred into a state where full XP is ok. -------------------------------------------------------------------------------- 39e59bd991 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: runrest ignore yred messages by default -------------------------------------------------------------------------------- 3d579d9813 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: amulet of faith Amulets of faith increase the chance of reaping a semipermanent follower while worshipping Yred. On removal some of these followers are reclaimed. This means that a Yred worshipper without zombies can remove faith for free, but that's similar to Uskayaw. -------------------------------------------------------------------------------- 98cb3ae26c | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: grant Yred nightvision at all times (kate) -------------------------------------------------------------------------------- 2e4292cc8c | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 text: Update Yred's description to reflect the changes -------------------------------------------------------------------------------- 484e03e0cf | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 text: give more detail in the bound soul desc -------------------------------------------------------------------------------- b0a17c5a12 | Edgar A. Bering IV | 2021-12-08 23:04:44 +0200 feat: black torch: remove yred gifting In Yred's redesigned piety system, the gift timer and its mechanics don't make sense, so the permanent ally gifts are removed. This achieves one of the goals of the redesign, which is to severely limit the use of permanent allies (to only the enslaved soul). -------------------------------------------------------------------------------- 3e152b4d76 | Edgar A. Bering IV | 2021-12-08 23:04:43 +0200 feat: black torch: dark bargain A subsequent commit will remove Yred's passive, permanent gifts. Yred's more powerful servants are really cool as allies and significantly better than plain zombies and spectres. This active ability brings them back as summons, the player trades their zombies for them. This commit also expands the list of Yred servants to cover almost all of genus n, z, V, and W. The exceptions are Vampire Mages (kiku worshippers, or at least too proud to serve), and a couple of monsters that would be more harmful to the player than good allies. -------------------------------------------------------------------------------- 83783ab100 | Edgar A. Bering IV | 2021-12-08 23:03:47 +0200 feat: black torch: zombie piety Move Yred to an alternative piety system, where abilities are paid by offereing up some of the player's reaped souls. Currently this uses Zombies-recently-in-LOS for piety, the aim being a medium-time-scale piety system that builds up over a single floor, but resets on floor transition. Zombies on the floor could also be used, but there are information leak issues with that, plus it encourages closet stashing. The goal is to encourage the player to keep their harvest close at hand! Reaped monsters live on the floor they were created on and disappear when the player leaves the floor (by any means, portal vaults and shafts both count). This gives Yred a medium-scale piety system, lasting longer than Usk but much shorter than a conventional god. -------------------------------------------------------------------------------- 35b79d20d0 | Edgar A. Bering IV | 2021-12-08 23:03:47 +0200 refactor: move the targeting abflags to the high byte -------------------------------------------------------------------------------- 831c365f3e | Edgar A. Bering IV | 2021-12-08 23:03:46 +0200 feat: black torch: passive reaping To replace Yredelemnul's active animate dead abilities, this introduces a passive reaping status, granted at 0*. In this redesign Yred will use zombies as piety, so this is in essence the new piety gain system. Yred reaps both body and soul, from monsters that don't have a corpse (or whose corpse exploded!) the player gets a spectral thing. With the recent change to allow spectralizing demons, Yred can reap their twisted souls, too. The reaped monsters cannot leave the floor they came into being on, and if the player leaves they are dismissed. -------------------------------------------------------------------------------- b4513a33df | Edgar A. Bering IV | 2021-12-08 23:02:13 +0200 feat: new yred: remove injury mirror Injury Mirror was the most awkward of Yred's abilities. It cost a lot of piety if it activated, but getting a big activation meant taking a lot of damage. In comparison, Drain Life gains hitpoints and costs a predictible amount of piety. It's possible there's an injurry-mirror or damage-sharing ability that works with the re-designed Yredelemnul "zombies are piety" principle, beyond just having allies to soak up damage. For now, this gets the axe. -------------------------------------------------------------------------------- 286e7562c3 | Edgar A. Bering IV | 2021-12-08 23:01:25 +0200 feat: black torch: remove yred animation actives This sequence of commits re-designs Yredelemnul. A key feature of the re-design is a passive reaping to replace the animation active abilities, and a necessary first step is to remove them. -------------------------------------------------------------------------------- aa9a639d33 | Perry Fraser | 2021-12-08 15:22:59 -0500 Have deps.py print output of a command on fail Note: probably would be better to use subprocess.run instead of check_output, but that's Python 3.5+ only. I'm not sure what the intended version this is supposed to run on. -------------------------------------------------------------------------------- 92583b6a8d | advil | 2021-12-08 14:25:50 -0500 fix: don't let Usk steal other gods' powers (G-Flex) As discovered by G-Flex, if you have a religious ability quivered and convert to Uskayaw, the quivered ability registers as valid and can be used via quiver commands if you meet its piety threshold. This commit changes `god_power_usable` to do an explicit god check. To support this check I refactored the god_powers static to use a construct-on-first-use paradigm, and added the god field directly to the struct type. -------------------------------------------------------------------------------- 7a5fce4930 | Edgar A. Bering IV | 2021-12-08 16:05:56 +0200 feat: adjust fiend ratios in Coc and Dis New Cocytus and Dis have turned out significantly deadlier than new Geh and Tar. In Cocytus, shard shrikes shine bright, sticking out as an outlier in kills. In Dis, iron giants aren't as much of an outlier, until you notice the second kiler is iron golems, who spawn in bands with an iron giant leader to chuck them at the player. On the other hand, Ice Fiends have barely notched any kills in coc, despite being rather nasty; Hell Sentinels have about 1/3rd the kills of the giant/golem duo, a bit more respectable but not enough to catch up to an outlier. Comparatively, tainted leviathans and hellephants spawn singularly. The former hold their own, racking up kills with a similar rate to tzitzimimeh (who spawn less often). The latter are weaker, but the rarer brimstone fiends top the charts. So this commit reduces the frequency of iron giants and shard shrikes, swapping them with hell sentinels and ice fiends respectively in the table, in hopes of making the four hells a bit more level. -------------------------------------------------------------------------------- 9c4cb8273d | advil | 2021-12-07 15:52:52 -0500 fix: handle db source files with mtime 0 These don't occur normally in the wild, but sometimes people doing reproducible packaging or the like will set all mtimes to 0. When this happens some old db code that treated 0 as an error condition would produce a fairly incomprehensible ASSERT. I suspect this is what is behind: https://crawl.develz.org/mantis/view.php?id=11956&nbn=1#bugnotes https://github.com/crawl/crawl/issues/2276 and the like, though this is not something I've been able to test. I've also rewrote the ASSERT to produce something more like a real error message, though I think it should be much harder to trigger now. Note to packagers: this commit keeps things from crashing, but distributing files with mtime 0 is *really not recommended* unless you are sure to never use a shared db cache directory. If you do, this commit will severely break having multiple versions installed (and I don't think the errors will be any less cryptic that this one). It should meet a typical reproducible build desiderata to use the official file times for db (and most dat/ files) as these are not generated at build time -- they are game data files. -------------------------------------------------------------------------------- 9b0f503c9e | advil | 2021-12-07 14:26:38 -0500 fix: hidpi scaling for action panel div -------------------------------------------------------------------------------- 702cd34d14 | advil | 2021-12-07 14:20:06 -0500 fix: scale action panel qty for hidpi also There must be some better way to do this... -------------------------------------------------------------------------------- 5957592b1c | advil | 2021-12-07 13:40:16 -0500 fix: correct hidpi rendering for the action panel (PleasingFungus) This code assumed that the `renderer` object was pre-adjusted for the device to pixel ratio (which is how it's done elsewhere), but this is not so straightforward to do for the action panel (though it might be cleaner if it could be done). So, do explicit scaling for the device ratio, and remove explicit scaling for mouse cursor position. Should have no impact on non-hidpi/retina devices. -------------------------------------------------------------------------------- b7f16da270 | advil | 2021-12-07 12:22:38 -0500 fix: improve `.prf` file naming/location on DGL builds Two changes, should affect DGL builds only: 1. Set the filename correctly. After game start, it turns out that Options.game.name is the empty string, resulting in the hilarious behavior of everyone on a DGL_STARTUP_PREFS_BY_NAME build sharing a single prefs file named `start--ns.prf`. 2. For a DGL_STARTUP_PREFS_BY_NAME build, put prefs in a subdirectory of the shared directory, rather than the saves directory. The reason for this is that the saves directory on a DGL setup (and maybe any setup using this flag) is versioned, and so the .prf file gets wiped out/ignored on any trunk version change. (An alternative would be having DGL copy the files, but this would be too painful to implement.) -------------------------------------------------------------------------------- 1a2f33fa85 | Nicholas Feinberg | 2021-12-06 18:37:15 -0800 Remove spurious malevolence (some) If an explore trap teleportation fails to teleport the player, don't print a message about malevolence. Still possible to get a spurious message from getting explore shafted after getting non-explore shafted, in principle. -------------------------------------------------------------------------------- a8db75c868 | Nicholas Feinberg | 2021-12-06 18:29:54 -0800 A flaming sword which turned each way... (Sastreii) New tiles for ironbound thunderhulk, Yredelemnul's altar, and the Seraph. -------------------------------------------------------------------------------- 8410daf38b | advil | 2021-12-06 21:19:17 -0500 fix: tweak full hide behavior with minimized action panel The action panel is supposed to hide itself entirely if there's no relevant inventory items (either by happenstance or by configuration), but because of the sequencing this would still show the minimized form -- clicking the + then got rid of the panel. (An easy way to replicate was to set `action_panel =` and `action_panel_show = no`, but it also had similar behavior when dropping items.) This adjusts the sequencing so that the placeholder is handled correctly with no items at all. -------------------------------------------------------------------------------- 8662a715a7 | advil | 2021-12-06 20:00:25 -0500 fix: use longname for explore trap flavor Adding "the" to `shortname` doesn't always work, and `longname` already is designed to be used wherever a definite description should work. Resolves #2270 -------------------------------------------------------------------------------- 6b46d0572a | advil | 2021-12-06 18:36:35 -0500 fix: show wands by default in the action panel Early indications are that it is more confusing than not to leave these out by default. I guess the concern may have been screen space, but we'll see how it goes in practice. -------------------------------------------------------------------------------- 3b2567e0bc | advil | 2021-12-06 18:29:49 -0500 fix: use targeters from action panel This change got lost in the shuffle, I think this is what players will expect though. -------------------------------------------------------------------------------- 57bb0be0ea | advil | 2021-12-06 17:03:44 -0500 fix: fully remove custom parsing code for action_panel_orientation This check can be implemented using a different class, so let's do that. (A previous commit had made the custom parsing code inert by converting the option to StringGameOption, but this had the result that anything other than "horizontal" was interpreted as "vertical" rather than producing an error.) -------------------------------------------------------------------------------- 0724427129 | advil | 2021-12-06 17:03:44 -0500 feat: save action panel scale and font size This also changes the behavior of action_panel_scale so that it is an int percentage, rather than a float -- this allows removing custom parsing code, and makes it so that the ui and settings values are more consistent. (I had apparently already added the IntGameOption part of this in a previous commit, so this commit isn't clean.) -------------------------------------------------------------------------------- 691f867587 | advil | 2021-12-06 17:03:44 -0500 fix: hide action panel for spectators A braver person than me might try to sync the visual state of this with the player rather than hiding, but I'm not going to do that any time soon myself. -------------------------------------------------------------------------------- b232902b95 | advil | 2021-12-06 17:03:44 -0500 fix: hide tooltips when action panel settings is open These aren't readable anyways, because they are under the popup. -------------------------------------------------------------------------------- 090e49b2c9 | advil | 2021-12-06 17:03:44 -0500 fix: apply an upstream fix from focus-trap This reverts ac5a30bc78f08b3 and applies the final upstream fix for https://github.com/focus-trap/focus-trap/issues/103, in particular: https://github.com/focus-trap/focus-trap/commit/fe2b0ad8d03d3a727d7f0d4d1e0ec2b3 f2887577. Since my original fix for this focus-trap has gained a new maintainer and seen a bunch of releases, so possibly we should consider updating, or at least checking if there are specific bugfixes to apply. -------------------------------------------------------------------------------- bbe7356047 | advil | 2021-12-06 17:03:44 -0500 feat: use focus-trap for action panel settings popup This fixes a whole bunch of issues with keypresses going the wrong place, focus not being returned after this closes and just generally being weird, etc. There are still various issues with this commit that are indicated in the comments, where basically (to me at least) browser focus can be extremely mysterious. But the only user-facing one is that I couldn't get tabbing to the buttons to work. Also, rename some html elements. -------------------------------------------------------------------------------- 394b2318f7 | advil | 2021-12-06 17:03:44 -0500 fix: min panel scale to 50%, not 10% With 0.1, it becomes hard (on my display at least) to get back to the panel by right clicking. 50% is about the smallest I could imagine it being usable at, and it makes it possible to get to the settings menu to reset this value. This may need further tweaking. Note that nothing prevents you from setting a lower value in rc if this is useful in some configuration I'm not imagining. (There's a different way to hide it altogether.) -------------------------------------------------------------------------------- a1dc6246e2 | advil | 2021-12-06 17:03:44 -0500 fix: don't toggle settings panel on settings change This fixes a regression introduced when I implemented saving. Because the textinput value is processed on key input, they are unusable if the panel closes immediately. -------------------------------------------------------------------------------- af3cd226fe | advil | 2021-12-06 17:03:44 -0500 fix: change behavior of x when settings open Previously, this would still minimize the panel, but I think it's more intuitive to just hide the settings pane if settings is currently open. -------------------------------------------------------------------------------- ff10334c96 | advil | 2021-12-06 17:03:44 -0500 docs: update action panel entries -------------------------------------------------------------------------------- 551de97837 | advil | 2021-12-06 17:03:44 -0500 refactor: rename consumables panel => action panel I anticipate we may eventually want to generalize this beyond just items. This is an optimistic preemptive rename, since the options names need to be definitive before merge, though I don't anticipate making it handle non-consumables before merge. This change also makes the options names a bit shorter and (maybe) easier to remember. -------------------------------------------------------------------------------- 7743480e9c | advil | 2021-12-06 17:03:44 -0500 feat: save some consumables panel settings in .prf file This provides a persistent memory of whether the user has the panel visible, and what orientation they have it in, across games. -------------------------------------------------------------------------------- d1ef89111a | advil | 2021-12-06 17:03:44 -0500 feat: improvements to webtiles options API This adds a bit more control over some of the set_options calls on the webtiles side, and provides a way for webtiles to send options settings back to the crawl process. It's still all a bit brute force. -------------------------------------------------------------------------------- c9e27d6a74 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 fix: iron out a few bugs in the consumables panel enhancements This commit fixes the following issues: * The hide button was drawn on top of the first consumable item. * Interaction options - adjust, read/quaff, drop, inscribe - didn't work when called from the describe popup, printing "Unknown command" messages instead. I fixed this by replacing `describe_item_popup()` with `describe_item()`, which executes the selected interaction via `_do_action()`. * It wasn't possible to use unidentified potions and scrolls by clicking them on the panel. I "fixed" this by allowing to quiver unidentified potions and scrolls. This was explicitly disabled in `consumable_action:is_valid()`, but it looks like such consumables work fine from the quiver, so I hope this change is OK. Also, I added an extra check into `consumable_action:is_enabled()` to prevent information leaks. * The cursor for the selected item didn't scale with the panel. This was caused by calls to `draw_icon()` missing a couple of arguments. * There were no item tooltips in Chrome (caused by a missing `var`). Also, there is a new `draw_gui()` helper function for drawing tiles from the `gui.png` tilesheet. It wasn't obvious that the panel has a settings menu, so I added a tooltip for the hide button. -------------------------------------------------------------------------------- bd7f567b5d | advil | 2021-12-06 17:03:44 -0500 feat: consumables panel enhancements (clicking, information) (This is not super well-tested, so I'm not really sure if it is safe to merge just yet.) This commit adds the following features to nlavsky's original consumables panel patch: * click to show/hide; the leftmost icon when visible is always a hide icon. * right click on the hide icon (only) to get the settings popup * right click closes the settings popup also. (This should maybe close * if you click out of this ui, but I wasn't quite sure how to do that.) * tooltip on consumables gives the item name and inventory letter * right click on consumables (when in mouse command mode) opens the describe popup * left click (in mouse command mode) just directly triggers the item. This is implemented via the actions interface, so doesn't need to add much code (as it rests on 6e4aca117). Does this make misclicks too easy? I'm undecided whether this should be minimized or shown by default. It would be really nice if minimization state at least were stored either as a cookie or in the save between sessions. Motivation: The patch as it stands is feature-complete relative to the original goals (including ones I encouraged), but after testing I unfortunately don't think it will feel very complete to end users. The UI has the form of something that should be clickable, so players will expect it to be clickable. (The tiles even look kind of like local tiles menus.) Also, players not familiar with the icons will have a lot of trouble with this: even as a long-time console player I don't know the icons well. Hence the tooltip. -------------------------------------------------------------------------------- 9e6efe1491 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Add an in-game configuration menu for the consumables panel This new menu allows changing the panel's orientation, scale, and font size in-game. Also, it allows minimizing the panel into a "+", similar to how the chat window can be minimized. All the changes are done on the client side and not saved between sessions. Also, this commit splits the panel's font option into font_size and font_family, so it is similar to other existing font options. -------------------------------------------------------------------------------- 8d133420af | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Add a font option for the consumables panel (nojaa3) The pixel font used for displaying the quantities of items is quite small and doesn't scale well. Instead of mimicking the style of the inventory panel from local tiles, it's better to use a system font and allow the player to configure it. This commit adds an option to specify the font for the panel and increases the default font size. -------------------------------------------------------------------------------- f446b847d9 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Add an option to reposition the consumables panel (Implojin) To make the panel less intrusive for more screen resolutions and sizes, add the `consumables_panel_orientation` option. When set to 'horizontal' (the default), the consumables panel will be placed along the top edge of the screen. When set to 'vertical', the panel will be placed along the left edge. -------------------------------------------------------------------------------- 637e5f1bb1 | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Filter consumables on the crawl binary side (advil) This allows to use the same regex parser that the crawl binary uses, which should be faster. Also, it makes the code more portable to other build targets. Now `TilesFramework::_send_item()` does the filtering and sends an extra flag with each item, `qty_field`. If it's either "plus" or "quantity", the web client(s) will show such items on the panel. -------------------------------------------------------------------------------- 58cd58bcfe | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Remove a couple of obsolete vendor prefixes Firefox v.51+ (2017) and Chrome v.30+ (2013) can handle the unprefixed `imageSmoothingEnabled` canvas property just fine. -------------------------------------------------------------------------------- 972ed031cb | Nikolai Lavsky | 2021-12-06 17:03:44 -0500 Fix web clients not getting updated about the state of XP evokers Whenever an inventory item's item_def changes, the game sends an update to the web client(s). Because information about XP evokers is stored outside of item_defs, there are no updates when XP evokers recharge or lose charges. Fix this by caching the number of charges in the item.plus field (similar to how wand charges are stored) and sending updates when necessary. -------------------------------------------------------------------------------- d76b51a1a8 | Nikolai Lavsky | 2021-12-06 17:03:43 -0500 New consumables panel for Web Tiles The main goal of adding this panel is to give the player a quick and easy way to see all the items that can help them succeed in a fight. It would be ideal to have the full inventory panel, similar to Local Tiles, but there are a couple of problems. The first is a lack of screen space: unless you have a big monitor, the choice is either the monster list (Web Tiles) or the inventory panel (Local Tiles). The second problem is that only about a half of inventory items are useful in fights. A filtered view of the inventory will take less space and present only combat-relevant items. This commit adds a new panel, which can be configured via four options: * `consumables_panel`: types of items to show on the panel; * `consumables_panel_filter`: a list of regular expressions for filtering items out; * `show_unidentified_consumables`: whether to show unidentified scrolls and potions; * `consumables_panel_scale`: allows to change the size of icons on the panel. The panel is displayed in the top left corner, partially covering the top row of tiles on the map. Non-Barachim chars should always have at least one out-of-sight row at the top. For Barachim, the game can show 18 rows of tiles with one out-of-sight row at the top as long as you have 736 pixels vertically. -------------------------------------------------------------------------------- 4b78bf2b85 | Edgar A. Bering IV | 2021-12-06 21:12:23 +0200 docs: changelog through 0.28-a0-1004-g00e6d53462 -------------------------------------------------------------------------------- 00e6d53462 | Edgar A. Bering IV | 2021-12-06 21:00:32 +0200 fix: make mauler's inscription consistent -------------------------------------------------------------------------------- a36b043db1 | Edgar A. Bering IV | 2021-12-06 20:27:03 +0200 feat: refactor eleionoma and fenstrider wands 2dcde036d21 gave eleionoma and fenstirder witches guaranteed wands. However, it didn't give them the ability to use the wands. This was on purpose, the wands were meant as loot for the player, not an extra threat on already mid and high tier monsters. Placing the items into monster inventory was a bit confusing, players expect monsters carrying wands to be capable of using them; especially with the UI efforts put in to announce monster wands. Since these are meant as pure loot, this commit refactors them to drop on death through the same code path that drops dragon hides. This roughly halves (corpse rng) the rate of wand generation in 2dcde036d21, so the charges dropped are doubled to compensate. -------------------------------------------------------------------------------- f00fe891ef | Kate | 2021-12-06 01:09:34 +0000 Don't allow equipping Lear's with Demonic Touch (Lightli) -------------------------------------------------------------------------------- 1d7427ec22 | Kate | 2021-12-06 00:40:18 +0000 Refactor some breath weapon handling Although it could still use some more streamlining. -------------------------------------------------------------------------------- 1aa8e01074 | Kate | 2021-12-06 00:40:18 +0000 Initialise a variable (geekosaur) -------------------------------------------------------------------------------- ce17e19b79 | Kate | 2021-12-06 00:40:14 +0000 Adjust umbra accuracy and stealth handling Grant players (and monsters) immunity to umbra's accuracy reduction if they're wearing the ring of Shadows, and don't give players a stealth bonus in umbra unless they're emitting it themselves, so Yredelemnul worshippers no longer gain bonus stealth from allied profane servitors (while still avoiding the accuracy reduction). -------------------------------------------------------------------------------- b9e9c7b67e | Kate | 2021-12-05 04:26:43 +0000 Add missing canned messages for some cancelled abilities -------------------------------------------------------------------------------- e2d2f24f2d | Kate | 2021-12-05 04:26:43 +0000 Let Divine Exegesis trigger Battlesphere/Demonic Magic Since it's mostly-but-not-quite a real spell. -------------------------------------------------------------------------------- b3aea5d014 | Kate | 2021-12-05 04:25:00 +0000 Refactor spell-based ability failure timing Fixes Demonspawn Damnation, Beogh Smiting, and Sif Muna Divine Exegesis having fail checks before targeting. -------------------------------------------------------------------------------- 0dbd382bca | Kate | 2021-12-05 04:18:00 +0000 Refactor many ability fail checks Abilities should always be targeted before their fail check, so that they can consistently be cancelled before committing to activating the ability. This commit fixes this issue for a large number of abilities, and removes unnecessary fail checks for abilities that should never fail. A small number of abilities still need further refactoring to move the fail check to take place pre-targeting. -------------------------------------------------------------------------------- 27b72ba42d | Kate | 2021-12-05 04:18:00 +0000 Refactor some abilities to use new targeters Most breath weapons (except for Breathe Acid, which has a more complex targeter), as well as a number of simple targeted god abilities (Makhleb Minor/Major Destruction, Zin Imprison, Okawaru Duel, and Fedhas Grow Ballistomycete/Oklob) now use new ability targeters. -------------------------------------------------------------------------------- 557f2b6704 | Kate | 2021-12-05 04:17:54 +0000 Add more ability targeter handling There should now be full support for targeted abilities to share the new targeting code. Some particularly complex abilities might be difficult to refactor, but many aimed abilities such as breath weapons can now start being moved to use the improved targeters. -------------------------------------------------------------------------------- 46d0310cc0 | Kate | 2021-12-04 22:56:01 +0000 Display ability ranges in their descriptions By adding range to ability_def, in preparation for also using it in ability targeters. -------------------------------------------------------------------------------- 956f0ee3d5 | Kate | 2021-12-04 01:58:07 +0000 Make Demonspawn stingers conflict with regular stingers -------------------------------------------------------------------------------- 482a24a92f | Kate | 2021-12-04 01:30:09 +0000 Give Pikel a new title To match his new(-ish) job trading souls of the damned. -------------------------------------------------------------------------------- d7bf75cbcc | advil | 2021-12-03 18:56:15 -0500 fix: don't use html entities in issue template This didn't work, I don't know why I thought it might. -------------------------------------------------------------------------------- 17ad3ed552 | advil | 2021-12-03 18:53:24 -0500 docs: adjust issue template People seem to be surprisingly incapable of reading and following the "replacing or deleting all italicized text" instructions, so make it easier on them by putting this text in comments. -------------------------------------------------------------------------------- 8383568036 | Kate | 2021-12-03 21:54:34 +0000 Slightly increase Dragon Form fire breath power Draconians in dragon form all get to keep their breath weapons and use them at a power of 2 * XL, but other species (and red draconians) used fire breath at a power of XL + 12 instead. Change fire breath's power to also be 2 * XL for consistency. -------------------------------------------------------------------------------- 82fdf335c4 | Kate | 2021-12-03 21:39:05 +0000 Remove an unused function -------------------------------------------------------------------------------- d6bbb3f436 | Nicholas Feinberg | 2021-12-03 10:54:22 -0800 Rename: traumaturge gloves -> Mad Mage's Maulers The lowercase name felt odd, and also conflicted with a Veh title. Neither were large problems, but neither is a rename, so why not? -------------------------------------------------------------------------------- 3775c662fe | Nicholas Feinberg | 2021-12-02 15:55:11 -0800 Put on my wizard hat (Sastreii) New funny hat tile. -------------------------------------------------------------------------------- 1de4e0787c | Kate | 2021-12-02 01:35:24 +0000 Add static targeters for many abilities Making abilities behave more consistently with regards to targeting is a pretty substantial project, but this is a start for many of the simpler abilities. Currently this only supports static targeters - some limited support for regular targeters has been added, but more work would be required to fully support regular targeters (such as more ability flags to indicate how an ability should be targeted). As with spells, a number of abilities with either full-LOS or limited radius effects are added to the default force_ability_targeter option. -------------------------------------------------------------------------------- 134dc7ce2c | Kate | 2021-12-02 01:35:24 +0000 Remove some unused handling for wand trove tolls (Ge0ff) -------------------------------------------------------------------------------- 945c40ea80 | CanOfWorms | 2021-12-01 18:01:05 -0500 Reduce the average number of items in a shop With the pool of permanent items slowly decreasing over the years, shops have shown a noticeable increase in redundancy with permanent items, such as jewellery stores selling multiple copies of a particular amulet type. In addition, shops can generate with up to 16 items, which creates unnecessary UI clutter. Fix this issue by reducing the average number of items in a shop from 4 + 3d12/3 to 4 + 3d8/3, reducing inventory by 2 items on average. This change also counterbalances a gradual increase in the quantity of consumables available, possibly due to the removal of food and gadget shops. -------------------------------------------------------------------------------- 3664467d6e | mgdelmonte | 2021-12-01 11:04:50 -0800 bugfix: lua moninf_get_flags must init flags Function fails until flags are initialized, which for now only happens if you call `is` first, at least once, with a string. -------------------------------------------------------------------------------- 85d866c40e | robertxgray | 2021-12-01 11:01:39 -0800 Exclude hidden spells from the memorisation tab -------------------------------------------------------------------------------- 79cf1ff08c | Brian Power | 2021-12-01 09:32:09 -0800 hint mode: prevent temporary portals being misindentified as downstairs -------------------------------------------------------------------------------- 8735e2aeb5 | Kate | 2021-12-01 16:52:37 +0000 Adjust some deck descriptions Conveniently also prevents gather_items from claiming that there exists a "deck of at one's foes (or, if unlucky, at oneself)." Probably the script should also be reworked somehow to avoid similar things happening again elsewhere in future. -------------------------------------------------------------------------------- dd2fe8c8b9 | Kate | 2021-12-01 16:40:22 +0000 Add some missing books to gather_items -------------------------------------------------------------------------------- 86362df473 | Kate | 2021-12-01 16:18:20 +0000 Remove some unused handling for book trove tolls -------------------------------------------------------------------------------- 0325d80940 | Kate | 2021-12-01 15:43:42 +0000 Remove an obsolete trove message -------------------------------------------------------------------------------- a7f8b01127 | Aliscans | 2021-11-30 18:38:00 -0800 Remove "const" from the parameter to seen_item(). 751e42844d described removing the const from a reference within seen_item() as a "major hack". 11 years later, fixing this involves removing the const from this function and one additional method, with no changes needed for stack_iterator. -------------------------------------------------------------------------------- 8d97f0daa7 | paul | 2021-11-30 17:37:22 -0800 A couple small barding cleanups I was reading some Palentonga code to try to be less bad as them and came across two things that looked like reasonable cleanups. * Comment in acquire.cc suggests only nagas have increased chance to acquire a barding but I think it applies to palentongas too since it's based off you.wear_barding(). * wears_barding() checks the SPF_SMALL_TORSO flag instead of SPF_BARDING which works because they both apply to the same species but I assume is just coincidental. Tested out trying to wear bardings and acquire a bunch on nagas/palentongas and humans as a control and I don't think I broke anything. -------------------------------------------------------------------------------- 880e0f58e3 | Aliscans | 2021-11-30 17:34:00 -0800 Add "flight" to the stash search prefix for armour "of flying". Searching for "fly" returned any equipment which gives flight, but not potions, and searching for "flight" returned potions and artefacts, but not boots of flying (as "find" searches artefact descriptions, but not ego item ones). This change means that a search for "flight" finds everything. -------------------------------------------------------------------------------- d52952e488 | Martin Kennedy | 2021-11-30 17:29:38 -0800 fix: typo: Correct a typo in the description of the Book of Pain -------------------------------------------------------------------------------- 2dcde036d2 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Make Swamp a bit more magical Give out guaranteed wands to swamp-exclusive Eleionomae and Fenstrider Witches - on average, about 5 wands per Swamp, about 10% of the total generated over the course of a game. This is intended to be something of a counterpart to the ammo generation in Shoals, and to complement the earlier reduction of wand charge generation. We can increase these numbers farther if need be. -------------------------------------------------------------------------------- cca59f9bd0 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Update a hacky comment -------------------------------------------------------------------------------- 34a2937e56 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Reduce mid/late-game wand charges Wands can be a fun and exciting tactical tool. Deciding how much to invest in Evocations to power them up is a cool strategic choice, and limited charges make for tough usage decisions. In the late game, though, most characters will have more wand charges than they know what to do with. This feels bad (picking up essentially valueless wand charges, since you'll never use them up), and makes the game less interesting. To compensate, starting around D:8, halve charge generation for most wands (excepting the already-scarce /digging). Following the earlier reduction in throwing ammo generation, this should hopefully keep wand charge limits more relevant into the late-game. -------------------------------------------------------------------------------- 47ffb9280c | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Erase DROPPER_MID_KEY on pickup So that if you poly a monster (causing it to drop its weapon), the monster picks it up, and you then disarm that monster, they won't pick it up again. -------------------------------------------------------------------------------- f2ff745afe | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Simplify monster pickup logic Now that monsters don't normally pick up seen items, most of this was irrelevant. (And it broke monsters picking up items when poly'd.) -------------------------------------------------------------------------------- 94437a2481 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Revert "Don't let monsters pick up seen items they've dropped" Broke monsters picking up items after poly. No longer needed after bc3f381ebcfc7bc390c3495e054d1fb84b63bb7e. This reverts commit 2d6b87359491cf4d84fe175b5a7c57c56e3f85ff. -------------------------------------------------------------------------------- 2ccdaddb72 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Limit explore shafts to 1/branch/game Being shafted is a fantastic experience - it can be hard to survive, but can create truly deep, memorable tactical challenges. However, its charm wears on repeated exposure. Let's limit players to one shafting per branch per game. -------------------------------------------------------------------------------- a7c9fdd7d1 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Allow shafting the player on stairs Vaguely buggy not to. -------------------------------------------------------------------------------- 86c161e70f | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Retheme explore traps Exploration effects are themed as 'traps', but work quite differently from the features. Rather than existing in fixed locations that the player can stumble into, explore 'traps' have a chance of triggering whenever new terrain is revealed. This commonly occurs when the player goes down stairs, or even without any action from the player at all (when a monster opens a door). Players are frequently (and understandably) confused by this - how did they 'stumble into a teleportation trap' without going anywhere? Instead, attribute these events to an unspecified 'malevolent force', spontaneously causing bad things to happen to the player. This is also intended to offer potential for expansion, allowing new and exciting bad things to happen to the player. (What if the player could be shafted from Depths straight to Hell?) -------------------------------------------------------------------------------- 7bd870e236 | Nicholas Feinberg | 2021-11-30 13:23:02 -0800 Add wizmode explore trap command -------------------------------------------------------------------------------- 12e872d363 | advil | 2021-11-30 10:35:46 -0500 docs: edits to attributes section of manual Mostly, better paragraph breaks. -------------------------------------------------------------------------------- ab84650245 | advil | 2021-11-30 10:07:15 -0500 refactor: wrap Dg species gain in a mutation This is much cleaner than species checks, and lets the mutation menu describe the exact statgain behavior. -------------------------------------------------------------------------------- 42eb19b844 | Nicholas Feinberg | 2021-11-29 21:45:58 -0800 Remove get_stat_gain_multiplier (ebering) Rendered unhelpful by 03ef38a5c2cf. A bolder soul than I can add a MUT_BIG_STATS for demigods, if they so desire. -------------------------------------------------------------------------------- 03ef38a5c2 | Nicholas Feinberg | 2021-11-29 21:40:07 -0800 Give 2 points per attribute choice The attribute choices at XL 3, 6, 9 and so on accumulate into interesting decisions. Being able to shift your character toward a given stat by a total of 9 points over the course of a character can make a real impact. However, each individual choice is almost meaningless - 1 point in any attribute has approximately no impact. To make players' choices meatier and more impactful, shift the choice to only occur every 6th level (XL 3, 9, 15, 21, and 27), and to give 2 points per level-up. This is a minor player buff (attributes are recieved earlier, and 1 more point is receieved total), but we'll nerf em in some other way sooner or later. Hopefully this won't be too confusing. Demigods are unaffected. -------------------------------------------------------------------------------- f78dbcb89b | Nicholas Feinberg | 2021-11-29 21:25:10 -0800 Nerf merfolk impalers/javelineers Javelineers are the deadliest enemy in Shoals, and it's a bit odd that they are. A common nice dynamic in Crawl is that the closer you get to an enemy, the more dangerous they are (so closing in to melee is a risk). Occasionally, we toss in a curveball and have enemies that are neutered in melee, eg centaurs. But javelineers are just consistently deadly at all ranges. That's not awful, but it seems like in melee, other enemies should be nastier. So, drop javelineer damage by 5 (from 27 [with javelin] to 22), and remove 2 EV (14 -> 12) and 5 avg HP (78 -> 73). Also pull back on impalers slightly, as a belated response to melee enemy buffs from weapon delay changes. (Damage with trident down from 34 to 31.) This might make Shoals a bit closer to Snake and Swamp in overall difficulty (varying with character, of course), which seems good. -------------------------------------------------------------------------------- 0ea205dc43 | Nicholas Feinberg | 2021-11-29 21:25:07 -0800 Initialize a variable -------------------------------------------------------------------------------- 2ad3dba794 | Kate | 2021-11-30 03:09:06 +0000 Adjust summon spell targeters Summons can be placed on the other side of grates/statues, so update their targeters to reflect this. -------------------------------------------------------------------------------- 04878082bc | Kate | 2021-11-30 03:04:16 +0000 Don't destroy foxfires/ball lightnings when blocked by grates They could be summoned on the other side of a grate (as with all summons), but would then immediately die - let them keep existing as long as they're not fully out of LOS or on the other side of a wall. -------------------------------------------------------------------------------- ced782017d | Kate | 2021-11-30 02:26:33 +0000 Fix Wall of Briars leaking invisible monster information This would be very difficult to actually come across in practice, but sets the ability up better to use a targeter when that gets implemented in the (hopefully near) future. -------------------------------------------------------------------------------- 9f272a1a52 | Kate | 2021-11-30 01:36:17 +0000 Remove an obsolete comment -------------------------------------------------------------------------------- 1e39a6ef00 | Kate | 2021-11-30 01:36:16 +0000 Don't allow activating Yred animate dead with no targets -------------------------------------------------------------------------------- ee6e0bcda6 | Kate | 2021-11-29 22:33:09 +0000 Remove an unused parameter -------------------------------------------------------------------------------- 2f15ad600a | Kate | 2021-11-29 21:04:17 +0000 Display potion/scroll rarity in item descriptions So that it's easier for newer players to learn their relative generation weights and make better reasoning about identification. -------------------------------------------------------------------------------- 216afd96f5 | Kate | 2021-11-29 21:04:17 +0000 Refactor and standardise potion/scroll generation weights To allow unspoiling some information about consumable generation (particularly in cases where it's relevant to identification), give potions and scrolls a more discrete set of weights. -------------------------------------------------------------------------------- 3c35fc0fc0 | Edgar A. Bering IV | 2021-11-29 17:35:52 +0200 text: further tweak a charge description -------------------------------------------------------------------------------- 72e5a758c0 | Edgar A. Bering IV | 2021-11-29 16:58:12 +0200 text: descriptions for some status lights -------------------------------------------------------------------------------- 17860c6496 | Edgar A. Bering IV | 2021-11-29 12:36:30 +0200 fix: decapitalize -------------------------------------------------------------------------------- 12477afec8 | Nicholas Feinberg | 2021-11-28 21:56:15 -0800 Scale up some tiles (Sastreii) New 'mundane' dragon armour tiles. -------------------------------------------------------------------------------- 140ffa10cf | Edgar A. Bering IV | 2021-11-28 20:28:55 +0200 fix: clarify spell danger prompt (lukem1234) Closes #2230 -------------------------------------------------------------------------------- 4f8b84809c | Edgar A. Bering IV | 2021-11-28 20:22:59 +0200 fix: only merge options different from default (ardl) The feature in 843f935 was implemented by adding merge functionality to the game_option class. Unfortuantely, this led to defaults being loaded from init files (instead of included in the binary) being clobbered as they were not set in the temprorary perf-loaded options. This changes the implementation of merge to only merge entries that were loaded in the source game_options object. The buggy behavior was most notable in how it interacted with the auto_exclude default. -------------------------------------------------------------------------------- 61a4acea3e | Edgar A. Bering IV | 2021-11-28 20:22:23 +0200 fix: remove a duplicate entry -------------------------------------------------------------------------------- bc3f381ebc | Nicholas Feinberg | 2021-11-27 10:51:57 -0800 Remove DROPPER_MID from most monster-dropped items I'm moderately sure this wasn't used for anything. -------------------------------------------------------------------------------- 6175104b25 | robertxgray | 2021-11-27 18:16:04 +0100 Autoconfigure android-project/local.properties -------------------------------------------------------------------------------- 71c9695731 | robertxgray | 2021-11-27 18:15:49 +0100 Improved touch screen and small layout experience - Tooltips disabled by default on Android - Keep tabs open when an element is selected - Keep tabs open on resize - Adjust tabs to cover only the map area - Increase transparency in inventory and monster tabs - Stop the inventory tab from showing when another tab is hidden -------------------------------------------------------------------------------- b588e42d88 | Nicholas Feinberg | 2021-11-27 08:49:40 -0800 Remove an antique ID call Monster weapons are now just all auto-ID'd on sight. -------------------------------------------------------------------------------- c5f9a05f81 | Nicholas Feinberg | 2021-11-27 08:49:40 -0800 Flatten monster_drop_things This function is ridiculous. -------------------------------------------------------------------------------- 6df31dea4b | Kate | 2021-11-27 16:24:48 +0000 Fix MP regen rate not being recalculated on amulet removal And let the amulet remain attuned while melded. -------------------------------------------------------------------------------- 3387f7d204 | Kate | 2021-11-27 16:24:48 +0000 Fix some amulet equip/unequip handling Removes some obsolete checks for activating amulets of reflection/acrobat, and makes them also display messaging consistently when unmelding. -------------------------------------------------------------------------------- dde70e7af4 | Edgar A. Bering IV | 2021-11-27 10:20:45 +0200 feat: nerf flame wave damage Flame Wave did calcdice_calculator<3, 10, 2, 5> damage for each blast (at a total cost of 6mp over 3 turns) Compare to some other level 4 damage spells: - Hailstorm calcdice_calculator<3, 10, 1, 2> (more awkward targeting, costs 12 mp to fire for 3 turns) - Mystic Blast calcdice_calculator<2, 6, 1, 3> (also has knockback (for possible knockback damage), easier targeting; still 12 mp to fire for 3 turns) - Sticky Flame calcdice_calculator<2, 3, 1, 12> (also sets them on fire for a time, doing 2d4 per turn extra damage; initial sticky flame damage plus 2 turns of fire damage is the calcdice plus 4d4 for 4mp over 3 turns) At equal training, flame wave can do as much as half the damage of 3 casts of starburst, for 1/3rd the mp. There's targeting awkwardness and the hazard of being adjacent but this damage is just really really good. With 3 dice it is also consistent in its damage output. So let's nerf it to calcdice_calculator<2, 8, 1, 5>. -------------------------------------------------------------------------------- 843f935a50 | advil | 2021-11-26 16:06:07 -0500 feat: save `default_manual_training` in `.prf` files This is more of a proof of concept commit than a complete implementation of this idea that can be generalized immediately to tons of options, but it seems to work well enough and provides a path towards generalized option serialization in .prf files. I chose `default_manual_training` because it already has a UI element that players might reasonably expect to be saved, it involves no custom parsing (just a simple `BoolGameOption`), and because if something goes wrong with the .prf files for it, it doesn't seem too disastrous (because the it's ignored after game start). The .prf files are already used to store newgame options, and are parsed using game_options reading code already, so this change was a matter of figuring out how to coherently write non-newgame options, and pull them in to the Options static in a sensible way. Some notes: * If a player has an option explicitly set in their rc file, it will override the .prf version. This part is written in a general way so it will extend to new serialized options. * The general code only works for options implemented using a GameOption object. Getting it to work for others will need a more effort, including custom handling in the `merge` function and changes to the tracking of what was loaded from an rc. Possibly more options should be converted to `GameOption`s rather than more custom handling being added. * Serialization code is extremely not general, this would be easy + tedious to generalize so I will leave that for when more options are added. * A bunch of boilerplate code is moved to game-options.h. This stuff definitely has the feel of something that ought to be templated, but this doesn't work with the polymorphism needed for GameOption in any way that I have yet found. This commit also adds a generic function to set one GameOption object from another, with a somewhat ugly implementation. (Also should be templated, but I haven't come up with a way yet.) * Most other options will need UI added to do something like this. * It's possible that we should add a game menu command that lets you reset the .prf file before adding too much more to this. -------------------------------------------------------------------------------- 629283d8f3 | advil | 2021-11-26 16:05:36 -0500 feat: api to track GameOptions modified by rc settings This provides a way of checking whether a GameOption subclass was explicitly modified by a player's rc. The eventual point of this to ensure that explicit settings can override an autosaved preference. Obviously, because this is tied to use of GameOption, it does not work on custom-parsed options handled in read_option_line, nor on options that are stored on the lua side. It also doesn't track any changes to member variables of game_options made directly. -------------------------------------------------------------------------------- a3687e240c | Nicholas Feinberg | 2021-11-26 08:46:49 -0800 Fix webtiles AC light for Ignis (Lici) I dislike this code a lot :) -------------------------------------------------------------------------------- eabae20b52 | advil | 2021-11-26 09:18:48 -0500 refactor: unify some seed display code Centralize this in one function with a single approach to checking for player death. -------------------------------------------------------------------------------- eeb059e727 | advil | 2021-11-26 09:18:48 -0500 refactor: lightly generalize newgame prefs code This is just trying to make this options serialization code better, in preparation for later more involved changes. * turn newgame_def-specific code (which is, currently, all of this) into a method on newgame_def * write prefs file on any save * but don't rewrite unless there are changes -------------------------------------------------------------------------------- 1d79628fcd | advil | 2021-11-26 09:18:48 -0500 fix: remove an old #ifdef for seed preferences This originates from when online games didn't support seeded play. Now most servers do in some form and several servers enable the seeded play popup. Removing this #ifdef lets the seed field in this popup be prepopulated with the seed of a recent ended game in online play. -------------------------------------------------------------------------------- 0fd3a81354 | advil | 2021-11-26 09:18:47 -0500 refactor: remove an unused build conditional As far as I can tell this #define and its conditionals have never been used by anyone. The only use case anyone has come up with is shared accounts (geekosaur), but if this is an actual use case that someone wants I'd rather implement it in a different way (e.g. CLO or just a regular rc option). -------------------------------------------------------------------------------- d5e1996cdb | Nicholas Feinberg | 2021-11-25 08:28:35 -0800 Totally blork our tiles (Sastreii) -------------------------------------------------------------------------------- f5b72a5aab | Nicholas Feinberg | 2021-11-25 08:09:51 -0800 Fix Mindburst damage I believe this was broken since monster /disintegration use was first added in 65c148fa03d (2007). -------------------------------------------------------------------------------- a419b9d3f4 | Kate | 2021-11-25 14:09:07 +0000 Adjust gloves of infusion messaging To make it clear that normal gloves of infusion do work for Djinn. -------------------------------------------------------------------------------- 334d32066b | Kate | 2021-11-25 13:58:22 +0000 Add some unrand equip/unequip messages -------------------------------------------------------------------------------- 4693fef7fb | Kate | 2021-11-25 13:57:22 +0000 Fix Djinn instakilling themselves with traumaturge's gloves Luckily they would also crash at the same time as killing themselves, but either way seems less than ideal - prevent the unrand from working for Djinn instead, and adjust pay_mp to consistently use an ASSERT that would normally be used when paying HP for things. Also fixes Djinn crashing when using normal infusion gloves at 2 HP or less. -------------------------------------------------------------------------------- e90d3d521c | Kate | 2021-11-25 12:52:57 +0000 Fix a typo -------------------------------------------------------------------------------- 0b5b508569 | Nicholas Feinberg | 2021-11-24 22:32:20 -0800 Let Nikola hurl Reverts 87e75285439, since it seems very goofy and not particularly pointful. -------------------------------------------------------------------------------- a42776352a | Nicholas Feinberg | 2021-11-24 22:32:07 -0800 Rework archery ego into hurling The archery gloves ego has always been an odd outlier. Giving +slaying to 'ranged combat' (bows, slings, xbows, and throwing) is simultaneously broad and narrow. Why do only those types of combat get an ego to bolster them? Why aren't there gloves of slashing for long and short blades, or gloves of magma for fire and earth magic? We may go that way some day, but for now, let's refocus. Gloves of hurling (replacing gloves of archery) give a bonus exclusively to throwing. Recent reductions to throwing item generation have left throwing weapons in a distinctive position, as a strong but limited-supply killing method. Giving a bonus to that *specifically* could potentially change players' tactics, encouraging them to try hurling a bit more. And that's fun! -------------------------------------------------------------------------------- d9240322ae | Nicholas Feinberg | 2021-11-24 22:28:53 -0800 New unrand: traumaturge's gloves The traumaturge's gloves spend your *entire* MP every time you hit any enemy in melee, giving a proportional bonus to damage. To make them less obnoxious to use, they get RegenMP, and to make them less interesting for characters who don't actually want to hit stuff, they have Int-4. This is in the same vein as rampaging boots and the seven-league boots - they're super-infusion gloves. In practice, I found them to be very funny. Possibly they encourage kiting too much and will need to be cut, but I do want people to get a chance to try them out first. -------------------------------------------------------------------------------- f4b206033c | Nicholas Feinberg | 2021-11-24 22:28:44 -0800 New gloves ego: "infusion" A riff on the old Charms spell of the same name, gloves of Infusion give +0,+4 slaying (that is, +0-4 pre-AC damage per hit) on melee attacks, in exchange for 2 MP spent per hit. This will be appealing for many characters, but will you regret being stuck at 0 MP in a tight spot? Maybe! Numbers are very preliminary. In testing, my main concern was whether it'd cause too much resting, but it didn't seem to be worse than 'caster' characters already have it. Excited to hear feedback from others. -------------------------------------------------------------------------------- cd63401287 | Nicholas Feinberg | 2021-11-24 17:21:57 -0800 Shift vampire knight weapons left -------------------------------------------------------------------------------- c41cc7542a | Nicholas Feinberg | 2021-11-24 16:40:38 -0800 Add some new tiles that really suck (Sastreii) New vampire, vampire knight, and vampire mage tiles. -------------------------------------------------------------------------------- 12fdbb3a91 | Nicholas Feinberg | 2021-11-24 16:33:15 -0800 Buff amulets of magic regeneration The amulet of magic regeneration is generally considered fairly weak. 0.25 MP/turn is not nothing, but it compares pretty poorly to other amulet effects, even for characters that should like it. Adjust it up to 0.4 MP/turn. This is exactly half of the 0.8 HP/turn that regen effects give, which is nice aesthetically. -------------------------------------------------------------------------------- dd814f33f1 | Nicholas Feinberg | 2021-11-24 16:27:46 -0800 Re-adjust Regen properties In c8f691b2cc7, effects that granted Regen (the amulet, artefacts, etc) went from giving 0.4 HP per turn to 1.0 HP per turn, a 2.5x multiplier. Having played with the new, stronger version for a few months, it's clear that high levels of regen are stronger than I anticipated. As such, this commit reduces regen somewhat back down to 0.8 HP per turn. This is still double what it was before c8f691b2cc7, so I expect it should still be an exciting and powerful property, but it should take a little more work to stack regen to such ludicrous levels that enemies have difficulty harming the player. The Robe of Vines goes from 3 HP/turn to 3.2 HP/turn, and loses a point of enchantment in exchange. Most other sources of regen follow the change, excepting Trog's Hand and Powered by Death, which go back to their old flat values (no longer pegged to the regen pip). -------------------------------------------------------------------------------- caa4c314a1 | Nicholas Feinberg | 2021-11-24 16:23:04 -0800 New Ignis ability: Fiery Armour Replacing Sea of Fire for the 'cheap ability' slot, Fiery Armour is a proactive defensive ability, complementing Foxfire Swarm (a reactive offensive ability) and Rising Flame (a reactive escape). When used, Fiery Armour gives +7 AC and 2d4 fire damage to melee attackers. It lasts for somewhere around 120 turns, to help it feel better compared to Foxfire Swarm - the latter straight up wins a fight, so it's nice if Fiery Armour can help with a few fights. (It also provides an incentive not to dawdle, which is fun!) There's a special message when you use it with Ozo's Armour, Icemail, or Ice Form, as a bit of a lampshade. -------------------------------------------------------------------------------- 68fc8d02d3 | Nicholas Feinberg | 2021-11-24 16:08:43 -0800 Remove Sea of Fire Ignis's Sea of Fire was a very visually cool effect, but it had no clear purpose. It wasn't clear when players should use it - the most common experience was for players to use it once, get trapped by it, feel extreme regret, and never use it again. Let's replace it with something with a greater clarity of purpose. -------------------------------------------------------------------------------- 2f522a9c0a | robertxgray | 2021-11-23 23:15:57 +0100 New virtual keyboard layout - Less redundant and closer to the standard US layout. - Function keys added, so they can be used for macros. - New colors to highlight important keys. - Keys used for movement have been labeled with arrows. -------------------------------------------------------------------------------- 796cbd3a86 | Edgar A. Bering IV | 2021-11-23 23:44:01 +0200 text: two new Donald speech lines -------------------------------------------------------------------------------- 9e5967653d | Edgar A. Bering IV | 2021-11-23 23:32:31 +0200 text: add a slimify quote (Ge0ff, 12661) -------------------------------------------------------------------------------- 59e3c9d8a8 | Kate | 2021-11-23 21:16:12 +0000 Don't crash on alerting dead monsters to acid damage (#2240) Closes #2240. -------------------------------------------------------------------------------- 0406aca7d3 | Nicholas Feinberg | 2021-11-22 17:05:57 -0800 Update mut math -------------------------------------------------------------------------------- 2a66bcaeff | Kate | 2021-11-23 00:06:24 +0000 Add a Jiyva ability: Oozemancy (acid ramparts) With Slimify as the only active ability, Jiyva could use something new to spend piety on, especially since the god is intended to have rapid piety gain. Oozemancy is granted at 3*, has a relatively high piety cost, and temporarily turns nearby walls (within radius 4) into slime-covered walls. It has no movement restriction like Frozen Ramparts, but slime walls don't deal damage outside line of sight. -------------------------------------------------------------------------------- 5b0ebec07e | Kate | 2021-11-23 00:06:24 +0000 Increase Slimify's MP and piety costs Jiyva has rapid piety gain, and Slimify is mostly an irresistible instant kill, so it should be pricy. -------------------------------------------------------------------------------- 738adcbc29 | Kate | 2021-11-23 00:06:24 +0000 Move some Jiyva passives earlier Move rCorr from 3* to 2* (since it's mainly flavour, and to free up the 3* slot for a new active ability), and move the jelly-on-hit effect from 6* to 5* (since 6* is generally reserved for one-off capstone effects or gifts. It was also already displayed as available at 5* despite not yet being in effect). -------------------------------------------------------------------------------- 12af580f8b | Kate | 2021-11-23 00:06:20 +0000 Change Jiyva's piety gain to be from exploration Gaining piety from sacrificing items was flavourful but didn't function well in practice, since it encouraged going back to old floors upon converting to Jiyva to sacrifice junk items and gain piety quickly. Jellies eating items becomes strictly a conduct to encourage moving forward quickly, and Jiyva's piety gain is changed to be from normal exploration, but at a much faster rate than other gods to compensate for the fact that the god is generally picked up late. Since jellies eating items is now a conduct rather than a method of piety gain, also remove the ability to call a jelly, and don't immediately place a jelly on conversion. -------------------------------------------------------------------------------- 60ee69b403 | Kate | 2021-11-22 21:08:41 +0000 Make Jiyva's Cure Bad Mutation a passive part of mutation gifts Being able to remove mutations at will doesn't fit with the god's theme, overlaps with Zin's specialty, and isn't necessary with the god no longer gifting bad mutations. Instead increase the chances of Jiyva removing bad mutations via mutation gifts, to help dealing with mutations from external sources (since potions will be less effective with big mutation sets). -------------------------------------------------------------------------------- c8825b9f11 | Kate | 2021-11-22 21:08:41 +0000 Don't let Jiyva gift bad mutations Since having a bad mutation maxed out by a god gift would be particularly unpleasant (or act as a large piety tax requiring repeated use of the ability to remove it again), just grant good/slime mutations. -------------------------------------------------------------------------------- f2b78a14d2 | Kate | 2021-11-22 21:08:25 +0000 Update some options_guide entries -------------------------------------------------------------------------------- cca88958be | advil | 2021-11-22 09:31:19 -0500 fix: don't allow spell memorisation in tiles map view Another extension of 904a573f8967; spell memorisation isn't designed to happen in this UI mode and so while it *seems* to work, I suspect there could be unintended consequences. This should be everything that takes time disabled. This commit also adds an i_feel_safe check for whether memorise buttons are enabled. (I believe before it would have prompted, but just outright disabling them gives clearer UI I think.) -------------------------------------------------------------------------------- 2ecf54ff0b | advil | 2021-11-22 09:19:49 -0500 fix: disable tiles item buttons in view map mode This extends 904a573f8967; don't allow things to happen in map mode that aren't designed for it and may have buggy behavior. This commit isn't very subtle, just check map mode directly. Resolves #2236 -------------------------------------------------------------------------------- f7baa44570 | advil | 2021-11-22 08:50:51 -0500 fix: add a missing negation Missing since 70de9b6695476e, but I guess no one uses the "cast a spell" button itself. 904a573f89 made spell-specific buttons enabled or disabled depending on whether casting is allowed via this check, revealing the bug. Resolves #2237 -------------------------------------------------------------------------------- 6e5f11bd55 | advil | 2021-11-21 23:12:20 -0500 fix: improve the ASSERT from 4f857bc58ec395c Don't crash during tests or scripts. -------------------------------------------------------------------------------- 805c5ecd05 | Nicholas Feinberg | 2021-11-21 19:35:07 -0800 Fix bribe branch costs Broken in 2eadbcdadce4. -------------------------------------------------------------------------------- 5e322aebe8 | Kate | 2021-11-21 21:26:22 +0000 Remove a reference to Zin divine sustenance When save compat is broken, at least. -------------------------------------------------------------------------------- 4f857bc58e | advil | 2021-11-21 15:38:21 -0500 fix: don't fire tracers on LRD validity check This is a somewhat nasty bug that triggers when returning to the main menu after playing; because there is still a map kicking around, when trying to check if LRD is valid, the LRD setup code fires off some tracers in that map, leading to bad memory access. I'm 90% sure this is without manually inserting the ASSERT here. (But llvm is usually "better" about not crashing on bad memory accesses.) My approach here was pretty brute force: I didn't see how to make the LRD setup code safe so I just force-validated it. Even on the clean startup case, it's still interacting with suspect memory regions, even if it never fires tracers. Possibly env stuff ought to be cleared up in _reset_game() so that the global state during startup steps is more predictable. In general, I wonder about the rest of the monster spell setup code triggered in this init step... Resolves #2168 (probably) -------------------------------------------------------------------------------- 61c88513d0 | advil | 2021-11-21 14:32:11 -0500 fix: set ui_root.needs_paint after a resize This resolves #2218. The proximate issue seems to have been that resizing with ctrl-command-f both exits the menu and triggers a resize event, which is handled immediately when pump_events is next called during; this is immediately on displaying the game menu. Something about being the first event was messing up the repaint. I'm not sure what. Beyond that, I think there is still something weird going in the ui.cc code for this case: in my testing on a large monitor I see a brief flash of a very strangely resized window before the new size takes hold. Unfortunately I don't understand ui.cc well enough to have any sense of what might be doing this. -------------------------------------------------------------------------------- 88c7259194 | advil | 2021-11-21 13:36:48 -0500 feat: turn the map view button into a toggle Right now this command uses the same tile as CMD_DISPLAY_MAP; possibly someone could add an x to it or something to differentiate them. -------------------------------------------------------------------------------- 904a573f89 | advil | 2021-11-21 13:36:48 -0500 fix: disable most tiles buttons in map view All sorts of stuff was semi-clickable in map view, e.g. you could cast spells or use abilities via local tiles buttons. This commit tries to be more consistent about it: anything that works in KMC_LEVELMAP can work, and anything that doesn't, can't. It's possible that this disables some useful stuff that can work (even if it isn't designed to) that tiles players will be used to? We'll see if there are complaints... -------------------------------------------------------------------------------- 820883e265 | advil | 2021-11-21 13:36:27 -0500 fix: handle button commands in map view (local tiles) There were two interrelated bugs here: command handling was simply unimplemented (a key was returned by tiles code, but the widgetified version of the map UI ignored it), and any clicking (including on buttons) was interpreted as dungeon clicking, moving the cursor to a clamped map position. I guess this probably just fell through the cracks when the map view was widgetified. At least because of the new API, we can now pass the command directly to the map view, rather than needing to pass a key. I've implemented this with an unappealing dynamic_cast, someone may want to do something nicer here. Resolves #2087 -------------------------------------------------------------------------------- b27f3f0c18 | advil | 2021-11-21 10:12:49 -0500 feat: refactor debug build autowiz with an options default Previously, when working with a debug build, to get a truly non-wizard character you had to rebuild entirely (either switch to a different build, or comment out the wizard mode setting in startup.cc). Suppress wizmode is still not perfect, and it is useful to be able to start a regular character from time to time. This commit reimplements the auto-wiz feature so that instead of a debug build simply forcing wizmode directly on character creation, a debug build defaults the `wiz_mode` option to `yes` instead of `no`. (N.b. this doesn't override the logic in a dgamelaunch build.) This lets a debug build respect `wiz_mode=no` (or `never`) in an rc file. -------------------------------------------------------------------------------- b23a865559 | advil | 2021-11-21 10:03:29 -0500 fix: trigger tiles layout on chaging wizmode Now that wizmode activates some abilities, this needs to relayout each time status of wizard or suppress_wizard changes. -------------------------------------------------------------------------------- bdc701c526 | advil | 2021-11-21 09:56:15 -0500 fix: generalize some relayout code from rings In the past, it seems that evokable abilities were mostly confined to rings, and so the code that checked for ability changes was only done when putting on a ring. This commit generalizes the (extremely brute force) check so that it happens whenever any equip is added or removed -- so this should handle scarfs of invis, unrands that have abilities, etc. Resolves #1754 -------------------------------------------------------------------------------- ab553e919e | advil | 2021-11-21 08:14:08 -0500 fix: bring morgue_dir more in line with save_dir For some reason morgue_dir is set and initialized in a slightly different way, so the changes in 381dff06d7c didn't affect morgue_dir quite right. This unconditionally resets it to its default value if `reset_paths` is called. For unclear reasons, this one will get overridden by SysEnv in fixup_options, and I have left this fairly ancient behavior intact. Further resolves #2192 -------------------------------------------------------------------------------- c8d7bad45d | Kate | 2021-11-21 00:16:52 +0000 Add messaging for gaining Jiyva's bonus regen Unfortunately can't be handled via the normal gain/loss messaging since it also has special handling for display on the ^ screen. -------------------------------------------------------------------------------- 7dab3e9f5c | Kate | 2021-11-21 00:16:52 +0000 Remove a reference to Jiyva stat shuffling -------------------------------------------------------------------------------- ae16bb6c82 | advil | 2021-11-20 14:42:41 -0500 feat: reveal init.txt in finder on mac This is a super quick, OS-specific, implementation of this feature, in part just because I realized that on mac it is a 1-liner. It is triggered from the game menu. As noted in the comments: * someone should implement this at least on windows, maybe linux if that's feasible. Probably won't be me though. * might be handy from the main menu somehow, though not in that menu directly (it has no more space). So I'm not sure what the UI is exactly. -------------------------------------------------------------------------------- 8add94bf39 | Kate | 2021-11-20 17:46:13 +0000 Give living spells a summon cap of 6 Mainly to prevent them from filling up LOS in cases where they're sticking around for a few turns without being able to fire for whatever reason. -------------------------------------------------------------------------------- 29138dbd66 | Kate | 2021-11-20 17:46:04 +0000 Allow living iceblast spells to blow themselves up again With ugly special-casing in beam.cc rather than by marking them as non-threatening monsters. -------------------------------------------------------------------------------- c155b14c34 | Kate | 2021-11-20 17:02:34 +0000 Don't mark living spells as non-threatening Since they are definitely dangerous, and marking them as non-threats causes targeting issues with some spells. -------------------------------------------------------------------------------- 381dff06d7 | advil | 2021-11-20 11:32:37 -0500 fix: resequence rc directory setting Previously, when setting `crawl_dir` in an rc, the following sequence of events would happen: 1. crawl_dir gets set to a default value (e.g. a ~/Library directory on mac.) 2. reset_options initializes save_dir based on this crawl_dir. 3. crawl_dir changes (stored in static SysEnv) 4. a. maps are loaded, des cache is built in the save_dir set in 2 b. game menu is also initialized from this save_dir 5. player starts game, triggering another reset_options. Now the save_dir is set based on the crawl_dir in 3, instead of 1. This is what we want, but: 6. No des cache in the current save_dir, so the game crashes any time levelgen is triggered The main change in this commit is to do the path resets from step 2 any time `crawl_dir` is set, so that the save_dir can't get out of sync like this. There's a bunch of refactoring that I did while working on this, some of which didn't end up being necessary but I kept because it seemed cleaner. This commit also explicitly rechecks for a data directory if crawl_dir changes (since the data directory could be under crawl_dir, though it's not in most cases I think). The overall directory handling code is pretty insane but it's covering so many special cases across multiple platforms that it's a bit hard to refactor safely. This commit also adjusts the documentation. Partly this is to indicate this change (since setting save_dir before crawl_dir gets overridden), but partly this is just to make it more accurate. Unfortunately I couldn't really even figure out how the defaults are interpreted outside of mac, so more accurate -> more vague in this case. Someone could try to make this more specific, especially for the defaults for `crawl_dir` and `macro_dir` -- it would be best to explicitly list the defaults for each of win/mac/linxu. I think based on the report in #2192 it might use the current directory on linux for crawl_dir? Resolves #2192. -------------------------------------------------------------------------------- ba3a78600c | Kate | 2021-11-20 15:33:36 +0000 Shorten some mutation descriptions So that they still fit on one line with the new mutation menu interface. -------------------------------------------------------------------------------- aee5879d26 | Kate | 2021-11-20 14:58:06 +0000 Fix Manifold Assault targeter leaking invisible monster locations -------------------------------------------------------------------------------- 3304299650 | Kate | 2021-11-20 14:58:06 +0000 Print wounds when monsters collide with each other Usually via Gell's Gravitas, so that it's easier to see what the spell's effects are. -------------------------------------------------------------------------------- 241ead5b78 | Edgar A. Bering IV | 2021-11-20 13:39:25 +0200 fix: destaticify mangrove colour We really don't want a global colour for the mangrove feature picked by the values _etc_mangrove is called with the first time it gets invoked. -------------------------------------------------------------------------------- 80cf8599ee | Nicholas Feinberg | 2021-11-19 20:38:51 -0800 Fix amnesia/negative levels (CarefulOdds) When amnesiaing a spell with negative levels remaining (e.g. after breaking an Ashenzari Spellcasting curse), print the correct number of spell levels you'll have left afterward. -------------------------------------------------------------------------------- 5db232d3bc | Nicholas Feinberg | 2021-11-19 18:40:05 -0800 Give Jiyva passive HP and MP regen Following on from 3b57ee21721, give Jiyva passive HP and MP regen. This is intended to synergize with the item-eating conduct to encourage the player to rush through levels before all the good stuff is eaten (using fast regen to minimize resting time), while also being an overall buff to the god's strength. (As a god that's somewhat harder to get than normal temple gods, Jiyva should be strong once reached, especially earlier.) This currently gives one pip of HP and MP regen (1 hp/turn, 0.25 mp/turn) at 1* piety, scaling to double that at 6* piety. Numbers can be adjusted as appropriate. -------------------------------------------------------------------------------- facf16e111 | Nicholas Feinberg | 2021-11-19 18:40:05 -0800 Make J give mutations in bursts Jiyva has historically given very frequent mutation changes. Their frequency made them less impactful: since they vanished so quickly, their impact on play was generally limited. Instead, make J give mutations at roughly 1/4th the frequency. In each gift, all mutations have a 25% per-level chance of losing a level. Then 4 new mutation levels are given out, proceeding through one mutation at a time before maxing it out and choosing another. This will let players explore the top-level effects of muts (normally unseen) and enjoy them for a while before they fade away. On average, going from 60 to 200 Jiyva piety caused 3-4 of these gifts. I expect we'll want to tweak this frequency in response to playtest feedback. -------------------------------------------------------------------------------- 53b1d5cb3f | Nicholas Feinberg | 2021-11-19 18:40:05 -0800 Remove Jiyva hp/mp from item eating Jiyva healing from item eating was strong and flavourful, but encouraged goofy tactics, like carrying around stacks of arrows to drop one-by-one for healing. We can provide both strength and delicious jelly flavour by other means, so let's. -------------------------------------------------------------------------------- 05814a4f1e | Nicholas Feinberg | 2021-11-19 18:40:05 -0800 Small cleanups Fix a typo & remove a duplicated check. -------------------------------------------------------------------------------- 278d75afea | advil | 2021-11-19 20:20:23 -0500 fix: correctly interpret `~` in crawl_dir etc In most cases, this was just getting used for its string value, leading to the creation of subdirectories named `~/`, pretty amazing. For some uses of `SysEnv.crawl_dir`, `_resolve_dir` was getting correctly called on subdirectories, leading to probably inconsistent directory patterns, but I'm not sure of the details. The directory handling code here is very confusing. -------------------------------------------------------------------------------- 754df0dcc8 | advil | 2021-11-19 20:09:53 -0500 fix: correctly handle map_load_exception for temple generation This can happen if something is wrong with the des cache, or the des location. Without this fix it triggers uncaught exception behavior, probably a cryptic abort trap. -------------------------------------------------------------------------------- 61ead9eb7d | Nicholas Feinberg | 2021-11-19 15:05:37 -0800 Remove minotaurs from Depths (again) -------------------------------------------------------------------------------- 8af684f10f | hellmonk | 2021-11-19 15:05:33 -0800 Improve the monsters in some overflow vaults Overflow vaults with a uniq_altar tag can place in Depths. Some of these vaults place very easy monsters, like goblins with spears, which are suitable for the overflow altar range but not suitable later. This commit either adds an alternative monster set for Depths placement or limits the range of the vault to dungeon only, depending on which method seemed best. Closes #2215. -------------------------------------------------------------------------------- 8cecda6153 | Nicholas Feinberg | 2021-11-15 17:35:42 -0800 Give orb guardians a glow up (Sastreii) -------------------------------------------------------------------------------- 58c29a6370 | Nicholas Feinberg | 2021-11-15 14:29:57 -0800 Fix Degeneration & Xom polymorph These were broken in 6ee961360c27e and functioned identically to /poly. -------------------------------------------------------------------------------- e64d6db94f | nicolae-carpathia | 2021-11-14 23:02:05 -0500 Add a selection of vaults to various places (#2172) * Add a diverse assortment of vaults in various places Add vaults of all kinds. Vaults for ecumenical and overflow altars, shop vaults, floats, mini_features, mini_monsters, a serial vault, a trove layout, a Hell entry, and vaults for Crypt, Lair, and Hell. They're all here and ready for visitors. Next time I should really break these up into separate pull requests. -------------------------------------------------------------------------------- 41a590f754 | Nicholas Feinberg | 2021-11-14 17:43:17 -0800 X gonna give [a new tile] to ya (Sastreii) New orb guardian tile. We'll always remember the original, and by the original I mean the original original one that was literally a floating fetus. -------------------------------------------------------------------------------- d8f344a91d | Implojin | 2021-11-15 00:30:19 +0000 fix: really end engulf upon polymorph At present, the bug described in #1935 still occurs in trunk. dd09596130 made an attempt to fix this, but clear_far_engulf() only applies to non-adjacent monsters by default. This commit forces the engulf removal upon monster polymorph, hopefully fixing the bug. -------------------------------------------------------------------------------- 8f7a205945 | Kate | 2021-11-15 00:06:13 +0000 Move Cheibriados Bend Time to 1* In general, gods should require some initial investment before granting abilities, and this has been changed recently for various other gods. Cheibriados had Bend Time granted at 0* intentionally since the god is fairly challenging and does immediately slow the player, however it's also not very likely to help much on initial worship, with its success rate depending on piety and invocations skill. Instead swap it with the poison-slowing passive (which has a decent chance of being helpful early), and move Bend Time to 1*, at which point it's more likely to be usable. -------------------------------------------------------------------------------- 8c1bd5eb55 | Kate | 2021-11-15 00:06:13 +0000 Give Trog berserk a piety cost Outside of historical inertia, there wasn't really any good reason for such a strong ability to have no piety cost at all. Giving Berserk a small piety cost won't affect the strength of the god or berserker background in a particularly significant way, but should at least slightly slow down early piety gain. -------------------------------------------------------------------------------- 81a577e8d6 | Kate | 2021-11-15 00:05:11 +0000 Give Dowan permanent haste on Duvessa's death Dowan already gained the Haste spell and an immediate haste enchantment, so this is a much less significant change than Duvessa's permanent berserk, but upgrading the haste to permanent at least saves him from needing to recast it. -------------------------------------------------------------------------------- 0e04eb73d5 | Kate | 2021-11-15 00:05:11 +0000 Allow Death Channel to work on demons and holies To allow necromancy some further application in areas where it's generally weaker, and for thematic consistency with Yredelemnul's Enslave Soul, allow it to create spectral demons and holies, and to also work on living creatures that don't leave a corpse. -------------------------------------------------------------------------------- f87a654afa | Aliscans | 2021-11-15 00:01:10 +0000 Remove a redundant "your" from a message. The item_name variable in _equip_weapon_effect() uses DESC_YOUR, so doesn't need "your" to be added later. -------------------------------------------------------------------------------- 80664f265d | Nikolai Lavsky | 2021-11-14 23:59:42 +0000 fix: let Beogh's Smite set ally targets Also, tweak Smite's damage message to include attack strength punctuation. -------------------------------------------------------------------------------- bbce81c95b | Nicholas Feinberg | 2021-11-14 12:25:10 -0800 Make a quick tile swap (Sastreii) New Quicksilver Elemental (not ooze!) tile. -------------------------------------------------------------------------------- 8b9cc49659 | Nicholas Feinberg | 2021-11-13 18:40:21 -0800 Enrage the Bear Spirit As a follow-up to e692aea80228c, make the Hat of the Bear Spirit's new *Rage also buff berserk rage. While wearing the hat, berserk will give +100% HP (normally +50%), and the slow duration afterward is reduced by 1/3rd. In compensation & to simplify, remove the rN. Possibly it should only have one of these buffs, but I liked them both, so in they both go. (Also possible some other hat props should get tossed.) -------------------------------------------------------------------------------- 09de17f5b5 | hellmonk3 | 2021-11-12 21:43:11 -0500 dezombify saegor_arrival_fortress -------------------------------------------------------------------------------- aed13ad2c0 | Kate | 2021-11-13 02:30:43 +0000 Slightly randomise Beogh's Smite piety cost It was fixed at 3, but as a rule piety costs are randomised slightly to prevent tracking exact piety values, so give it a randomised cost of 3-4 piety. -------------------------------------------------------------------------------- ac13b58d08 | Kate | 2021-11-13 02:13:27 +0000 Remove charge count display for wands from \ menu Since showing max charges per wand isn't useful any more. -------------------------------------------------------------------------------- 0713323be1 | Kate | 2021-11-13 02:13:27 +0000 Let Noxious Bog be generated with 1 adjacent solid tile Instead of requiring zero adjacent solid tiles. The limitation still prevents the spell from being used in corridors and very enclosed areas, but allows it to be a little more effective in unevenly-shaped spaces. -------------------------------------------------------------------------------- 9a1a4af6a0 | Nicholas Feinberg | 2021-11-12 16:54:48 -0800 Necrotize putrid mouths (Sastreii, CanOfWorms) -------------------------------------------------------------------------------- fc338a8e3c | hellmonk | 2021-11-11 22:35:21 -0500 re-remove a description -------------------------------------------------------------------------------- 52b40a1e3f | MainiacJoe | 2021-11-11 22:31:36 -0500 feat: a zoo-themed Lair entry vault (mainiacjoe) did a little syntax cleanup; this closes pr 2140 -------------------------------------------------------------------------------- b979743d38 | Perry Fraser | 2021-11-11 19:02:29 +0000 fix: typo in mut description for slowness -------------------------------------------------------------------------------- c3dbe4743c | Kate | 2021-11-11 19:01:52 +0000 Fix Englaciate lasting 10 times too long on players No monsters actually cast it, but this appears to have been broken since it was implemented as a monster spell in 8e67a19276. -------------------------------------------------------------------------------- b106dbac18 | Kate | 2021-11-11 19:01:45 +0000 Give Metabolic Englaciation a minimum duration The effect's duration was scaled down by monster HD, which could often result in a monster being affected but only for an extremely short duration. Let monsters still fully resist the effect in the same way, but guarantee a minimum duration for monsters that don't resist. -------------------------------------------------------------------------------- e9a2b5622a | Kate | 2021-11-11 18:08:37 +0000 Consistently redraw EV/SH values when incapacitated -------------------------------------------------------------------------------- 6f72491a82 | Kate | 2021-11-11 15:58:20 +0000 Don't let sleeping monsters try to use shields Fixes an oversight in merging cannot_move and cannot_act. Closes #2214. -------------------------------------------------------------------------------- 47ca5a425f | Perry Fraser | 2021-11-11 15:58:19 +0000 Refactor actor::cannot_move into actor::cannot_act With the change in 7190d3f, player::cannot_move and player::cannot_act became equivalent. This was in addition to the monster versions of those methods also being equivalent, which meant we can remove the super versions of them. This also corrects one instance where the lack of checking for sleepiness in player::cannot_speak was relied on to enable talking while sleeping. -------------------------------------------------------------------------------- 0321f2dd10 | Perry Fraser | 2021-11-11 15:58:19 +0000 Fix: consider the player unable to act while asleep Being asleep wasn't considered a condition in being unable to move, which led to issues like not having your evasion reduced while asleep. I investigated this after causative mentioned it in #crawl. [Committer's note: adjusted commit message.] -------------------------------------------------------------------------------- 2d8be16583 | Kate | 2021-11-11 11:54:11 +0000 Fix Cold Breath description (#2220) Closes #2220. -------------------------------------------------------------------------------- bb0bd99bb4 | Kate | 2021-11-11 11:46:05 +0000 Fix Yara's Head Instructor not having a description -------------------------------------------------------------------------------- 1a73be5ee4 | Kate | 2021-11-10 22:19:32 +0000 Let Noxious Bog affect the player's current tile Since you're now immune to it while active, there's no need to leave the player's current square unaffected. -------------------------------------------------------------------------------- 84f7f7b7e7 | Kate | 2021-11-10 21:35:48 +0000 Properly cancel Noxious Bog on level transition The terrain already expired on changing floors, but the duration lingered, which prevented recasting the spell on a new floor until it timed out. -------------------------------------------------------------------------------- 7b4740d1af | Kate | 2021-11-10 21:35:48 +0000 Don't mark rCorr useless with temporary rCorr active -------------------------------------------------------------------------------- 025dcb77dc | Nicholas Feinberg | 2021-11-10 11:30:18 -0800 Fix tentacle corners (Goratrix, dilly) Broken by 325244837d3070345b97a7eb4a78b7e1acbdd791. (There's probably a better fix.) -------------------------------------------------------------------------------- f98f3959e3 | Nicholas Feinberg | 2021-11-10 10:10:17 -0800 Devour hungry ghosts (Sastreii) Replace the old Putrid Mouth tile with a new one. -------------------------------------------------------------------------------- 1410851fad | advil | 2021-11-10 09:32:27 -0500 build: add a test placeholder This is a brute-force way of trying to figure out whether various DGL setups will copy subdirectories of webserver. -------------------------------------------------------------------------------- 0121872642 | Kate | 2021-11-10 01:03:09 +0000 Remove the Orb's effect on contamination Contamination is now much less a common status that players need to manage, and more a rare effect from miscasts and specific abilities/items. As such it no longer makes as much sense for the Orb to have a special (and fairly minor) interaction with it. If any special interaction is still desired, it'd be better to increase contamination received rather than to just reduce dissipation slightly. -------------------------------------------------------------------------------- 08208c227e | Kate | 2021-11-10 00:50:16 +0000 Adjust invisibility costs and contamination To simplify the effect and its costs, remove the contamination over time, and reduce the initial contamination for activating the ego. As with Irradiate, the darkgrey to lightgrey threshold is now also the threshold at which activating the ability again might cause yellow contamination. Increase the drain cost slightly to further penalise using it at lower success rates, and to make it less likely that the kills during the effect can quickly counteract the draining. Also remove the contamination from invisibility beams, since wands of invisibility are long gone. -------------------------------------------------------------------------------- 1d1595ee42 | Kate | 2021-11-09 13:39:08 +0000 Remove Invisibility as a player spell Invisibility is a very powerful effect, and has multiple sources (spell, potion and scarf ego). The spell is by far the most easily repeatable of these, making it much stronger and less interesting to make effective use of. The scarf still remains as a non-consumable source of invisibility, but is better balanced by the additional drain cost. -------------------------------------------------------------------------------- 1135068088 | Kate | 2021-11-09 13:39:08 +0000 Give Beogh orcs more health when surrendering Previously hostile orcs had a chance to convert when a Beogh-worshipping player would kill them, but were only given 1-4 health back so were likely to immediately die to any other nearby hostiles. Increase the healing up to a larger portion of their max health to make this less likely, especially when converting higher tier orcs or uniques. -------------------------------------------------------------------------------- e8106a3eec | Kate | 2021-11-09 13:39:08 +0000 Don't let hostile monsters level up Restrict levelling up to only divine allies (specifically to Beogh orcs, since undead can't level up anyway). This behaviour was barely noticeable otherwise, except in occasional cases of charming a monster and having it kill something else. -------------------------------------------------------------------------------- b444dcf96d | MainiacJoe | 2021-11-08 21:35:08 -0800 Add nine large Temple maps with 18-21 gods Closes #2124. -------------------------------------------------------------------------------- 2a3509429d | MainiacJoe | 2021-11-08 21:34:15 -0800 Expand label for category <<3>> to twenty altars -------------------------------------------------------------------------------- 923ab73998 | Nicholas Feinberg | 2021-11-08 11:54:20 -0800 Make Ignis less mad at non-worshippers (nicolae) -------------------------------------------------------------------------------- 68644deec8 | advil | 2021-11-08 09:30:15 -0500 feat: add some text to the chargen pseudo-milestone This is not a real milestone (it isn't saved, or written to the milestones file) -- it's only used in the webtiles lobby. So it should be fine to add some informative text to it. -------------------------------------------------------------------------------- 6ef7baa362 | advil | 2021-11-08 07:41:47 -0500 feat: transmit milestones/where info over webtiles sockets In order to update the lobby, the webtiles server needs various bits of information about ongoing games. Previously, this information was transmitted via 0-2 distinct channels: the .where file in the morgue directory, and the milestone tailing. (The 0 is because on just a plain `WEBTILES=y` build, where/milestone info was just extremely unreliable, and milestones weren't sent at all as far as I can tell.) This commit refactors things so that where info and milestones can just be sent directly to the webtiles server over the socket connect, rather than increasing the I/O load. (Probably not impactful on most servers, but possibly actually matters on CAO.) This change also simplifies client/server communication quite a bit. For versions with this patch, the webtiles server does not need to tail the milestones file, and does not need to read .where files at all, simplifying configuration as well. We do keep these capabilities around for legacy reasons, as I expect to backport this a bit but not very far back. Specific notes: * The crawl process still writes a .where file if DGL_WHEREIS is defined. This is necessary for dgl setups, but probably could be dispensed with otherwise. * If a crawl process sends direct where/milestone info, the server will stop paying attention to the indirect versions. This should make using older versions fairly seamless. * On the webtiles server side, some light refactoring so that milestones and wheres use the same code, moreso than before at least. * The last milestone is saved in a prop so that it can be shown when reloading, and explicitly synced on game start. (Previously it was just a static variable that was not saved.) * An explicit where is sent directly during character generation. -------------------------------------------------------------------------------- 06939e2a5b | advil | 2021-11-08 07:41:47 -0500 refactor: further refactor lobby sync * Dispense with caching the lobby_entry() result; if this needs to be cached it could be cached on ProcessHandler object itself (but I suspect it's not very important). The global state is now just a set of games with known stale lobby entries. * separate out lobby updating from the asynchronous loop code; this is just to make it easier to understand and refactor in the future. * Use a queue-then-flush paradigm, rather than send everything at once. This should do a better job of batching the message traffic. * Better avoid race conditions in case of asynchronous calls -------------------------------------------------------------------------------- 592c3b7cb7 | advil | 2021-11-08 07:41:47 -0500 refactor: do lobby updates on a schedule Previously, every time any game changed state in a way that would affect the lobby, the lobby update function was called immediately. This, so far as I can assess this sort of thing, scales quite poorly with the number of active players and the number of lobby viewers. The amount of data was still quite small, but the amount of send_message calls, it seems, was not. This commit refactors lobby updates to be sent all at once, by default every 2 seconds. The idea is put a configurable bound on the amount of traffic involved in lobby info, where lower-traffic servers could set this much lower (e.g. 1 or 0.5), and higher traffic servers could tweak upwards as needed. It should be mentioned that truly profiling webtiles in live situations is basically impossible as it stands, so this commit is based on some level of guesswork. It's also not tested yet in a real live situation. -------------------------------------------------------------------------------- b054d885db | Nicholas Feinberg | 2021-11-07 20:14:21 -0800 Remove Jiyva's stat shuffling It seems to have been meant as a perk, but it was pretty frequently detrimental to the player - not in the fun way of systems that encourage one to adapt to circumstances, but just in an overly complex and busted way. -------------------------------------------------------------------------------- fb90bdcb57 | Kate | 2021-11-08 02:35:31 +0000 Remove Disjunction's contamination cost It's not really necessary for balancing the spell - contamination is supposed to prevent recasting multiple times, but the cost was low enough that it could already be recast a lot of times before risking yellow glow, and it's high level enough that the MP cost works fine to prevent continuous recasting. -------------------------------------------------------------------------------- f37d360483 | Kate | 2021-11-08 01:03:24 +0000 Update a comment -------------------------------------------------------------------------------- 1b360eb39e | Kate | 2021-11-08 00:22:24 +0000 Add targeters for Silence and Liquefaction -------------------------------------------------------------------------------- 8d5f0ca64a | Kate | 2021-11-08 00:15:08 +0000 Display current/max level on mutation descriptions (Mike) -------------------------------------------------------------------------------- 00180f5fcc | Kate | 2021-11-07 22:02:19 +0000 Remove obsolete identification checks for reflection -------------------------------------------------------------------------------- ac2d178426 | Kate | 2021-11-07 21:58:13 +0000 Don't let Yred try to reflect reflected splash damage Fixes a crash when the player reflects a yellow draconian acid breath attack, it hits a monster, splashes back onto the player, and Yred tries to mirror that damage back onto a dummy monster that represents the player. -------------------------------------------------------------------------------- 108efc2627 | Kate | 2021-11-07 20:37:14 +0000 Fix misleading indentation -------------------------------------------------------------------------------- 581a213eff | Kate | 2021-11-07 20:21:10 +0000 Let monsters use Rift's bonus reach range And fix its display in the monster list so that it shows up as a polearm there. -------------------------------------------------------------------------------- 7e933cf55b | Kate | 2021-11-07 19:50:24 +0000 Let monsters use reaching attacks in any attack slot Reaching attacks previously only functioned in the first attack slot, but some mutant beasts could have them in later slots, resulting in the reach attack not functioning. -------------------------------------------------------------------------------- 19d727b07e | Kate | 2021-11-07 18:17:04 +0000 Remove unused AF_KITE handling Since this attack flavour has been removed. -------------------------------------------------------------------------------- de3ffcc593 | Kate | 2021-11-07 17:48:04 +0000 Give Excruciating Wounds a targeter As with transmutations and other self-enchantments. -------------------------------------------------------------------------------- 60983d4ba9 | Kate | 2021-11-07 00:23:51 +0000 Fix Serpent of Hell attack descriptions Due to various complicated handling for hydra-style multi-attacks, only their first bite attack was listed in their descriptions. -------------------------------------------------------------------------------- 74956062c1 | Kate | 2021-11-06 15:41:08 +0000 Adjust some mutation descriptions -------------------------------------------------------------------------------- 09f76e8c00 | Kate | 2021-11-06 01:50:21 +0000 Fix Xom chesspieces claiming to put undead to sleep And correctly give the "is unaffected" message instead. -------------------------------------------------------------------------------- 4fbe447692 | AdamPG | 2021-11-06 00:55:39 +0000 Readjust Ignis ability costs to 4/3 of original cost This gives the player 8 uses of Foxfire Swarm, each of which cost and additional 3 piety, leading to an increase of 24 piety cost - exactly the former cost of one use of Rising Flame (which is now free). -------------------------------------------------------------------------------- c9cd55e000 | AdamPG | 2021-11-06 00:55:39 +0000 Make Ignis' Rising Flame only usable once Cinder Acolyte has proven to be an incredibly strong start. In particular, the Rising Flame power changes the game in ways that make the entire early and mid-game into a foregone conclusion for any experienced reasonably-high-win-rate player. While strong starts such as Berserker already exist, these are all still susceptible to losing if one makes the various mistakes that players make in an average game of Crawl. Rising Flame, however, removes all consequences for mistakes. At starting Ignis Piety, the player gets four uses of Rising Flame. When they activate it, they are shafted upwards after a delay of 2+random2(3) turns (an entire turn faster than a teleport scroll!). This ability is probably the most powerful escape ability in the entire game and is simply too strong to be available from the start of the game in such a large quantity. A "get out of jail free card" for a player's worst mistakes is a cool idea, but it should only be available one time, similar to Tso or Kiku's capstone abilities. As such, this PR turns Rising Flame into a capstone ability, usable exactly once at any piety level and with no piety cost of its own. [Committer's note: squashed commits and updated commit message to reflect the change from an increased piety cost to a capstone ability. Closes #2209.] -------------------------------------------------------------------------------- b5f29a7041 | Nikolai Lavsky | 2021-11-06 00:03:45 +0000 fix: disable miscast-created allies when allies are forbidden As a followup to cf4520f7, this commit blocks one more source of allies who would immediately turn hostile under Okawaru or Sac Love. This covers Spellbinder melee and any other potential way of causing summoning miscasts on monsters. -------------------------------------------------------------------------------- e7ca7b5467 | Nicholas Feinberg | 2021-11-05 16:24:08 -0700 Reword clarity berserk slightly "Losing temper" reads very strangely to me; I've always seen it as "losing [your/my] temper". Perhaps it's a commonwealthism? In any case, it seems to imply that without this mutation, you could become enraged for no reason at all; let's try to fix that. -------------------------------------------------------------------------------- f458de4411 | Nikolai Lavsky | 2021-11-05 23:10:10 +0000 text: fix, reword, and extend a few mutation descriptions * To make style more consistent, this commit capitalizes stat names, adds a missing serial comma, and replaces +Stealth with Stealth+. * "Stab" has a special meaning for melee attacks, so replace it with the spiked tentacle's attack verb, "pierce". * Clarity blocking Rnd*Rage is a well-hidden mechanic, which is not mentioned anywhere in the game, so let's fix this too. -------------------------------------------------------------------------------- d4f0d3f9b2 | Kate | 2021-11-05 22:46:59 +0000 Remove checks for unidentified equipment Items equipped by the player and by monsters are always identified, so remove a lot of code that handled cases where the player didn't know whether they or a monster had a certain resistance or not. -------------------------------------------------------------------------------- 4e399c39f0 | advil | 2021-11-05 09:48:49 -0400 fix: make an ASSERT more informative This ASSERT has been triggering sporadic, unreplicatable crashes since 2018 or so. Maybe more information will help. (In particular, if one of these link values is corrupted somehow, this might give a clue as to how.) -------------------------------------------------------------------------------- afe8c5f9e9 | Nicholas Feinberg | 2021-11-04 15:59:56 -0700 Allow players to use anubis guard tiles -------------------------------------------------------------------------------- 31680bbd8b | Nicholas Feinberg | 2021-11-02 19:02:40 -0700 Celebrate true heroism (Sastreii) New Heroism and Duel invocation icons. -------------------------------------------------------------------------------- 75f770b44e | Edgar A. Bering IV | 2021-11-02 23:32:51 +0200 feat: make Duvessa permanently berserk when Dowan dies She waits to see you before going crazy. But the game of "kill Dowan first then escape to wait out the berserk and fight a normal Duvessa" always seemed a bit sad, considering Dowan's grief gave him permanent new strength. So lets let the bond run a bit deeper, and make Duvessa's rage eternal. -------------------------------------------------------------------------------- d6d7bb098e | Edgar A. Bering IV | 2021-11-02 23:30:27 +0200 fix: prevent petrified monster speech -------------------------------------------------------------------------------- 9f4689a14b | Edgar A. Bering IV | 2021-11-02 23:19:52 +0200 fix: don't time out any permanent enchantments on stair change -------------------------------------------------------------------------------- 03c7b27e48 | Nicholas Feinberg | 2021-11-02 13:36:35 -0700 Reduce crystal tome spell count Drop to 1-2 spells per cast, from 2-3. They're quite strong regardless, and can stand to be pulled back just a little bit. -------------------------------------------------------------------------------- 59c5b1f36e | Nicholas Feinberg | 2021-11-02 13:36:35 -0700 Increase living earthen tome HD Give em a better shot at hexing Depths characters. -------------------------------------------------------------------------------- 2d16a5e2fa | Nicholas Feinberg | 2021-11-02 13:36:35 -0700 Fix living spell HP display -------------------------------------------------------------------------------- fc378a028c | Nicholas Feinberg | 2021-11-02 13:36:35 -0700 Hopefully clarify living tome descriptions -------------------------------------------------------------------------------- a3f3a1a0a4 | Nicholas Feinberg | 2021-11-02 13:36:35 -0700 Cut living spell HP Make it easier to kill them before they cast. -------------------------------------------------------------------------------- b1e28150d3 | Edgar A. Bering IV | 2021-11-02 22:29:10 +0200 vaults: adjust a zot vault lich placement -------------------------------------------------------------------------------- b4ddf7de7f | Edgar A. Bering IV | 2021-11-02 22:26:26 +0200 vaults: adjust a zot vault draconian placement -------------------------------------------------------------------------------- 02bda5dcb3 | advil | 2021-11-02 12:36:46 -0400 docs: update placement.lua docs (perryprog) This replaces some obsolete documentation that referred to `placement.lua`'s predecessor, as well as updates the script --help output to include some things that got added but never documented. -------------------------------------------------------------------------------- 6f86257384 | Nicholas Feinberg | 2021-11-02 08:31:42 -0700 Improve armour/sh miss messages Account for to-hit being randomized after armour & shield penalties are applied, before they're compared to EV. Also de-indent. -------------------------------------------------------------------------------- 186eaeaa95 | Nicholas Feinberg | 2021-11-02 07:53:31 -0700 Remove the tail tail -------------------------------------------------------------------------------- 3d1f99b579 | Nicholas Feinberg | 2021-11-01 21:19:35 -0700 End All Hallow's Eve This reverts commit 91a516d0e768b6e4232327f2d9d008fc577132f3. -------------------------------------------------------------------------------- a603e38af3 | Nicholas Feinberg | 2021-11-01 16:36:08 -0700 Add a mutation menu To allow players to examine details of mutations. Lots of notes about good future improvements in get_mutation_desc(). -------------------------------------------------------------------------------- c1b1554a8f | Nicholas Feinberg | 2021-11-01 16:36:08 -0700 Minor mutation description tweaks Mostly to removed muts. -------------------------------------------------------------------------------- ddf5a44173 | Nicholas Feinberg | 2021-11-01 16:36:08 -0700 Add mutation DB -------------------------------------------------------------------------------- 90e1efd671 | Nicholas Feinberg | 2021-11-01 16:36:08 -0700 Separate out _get_fakemuts -------------------------------------------------------------------------------- 1fcdd13c02 | Nicholas Feinberg | 2021-11-01 16:36:08 -0700 Refactor form fakemuts Simplify poison immunity printing & pull out form fakemuts into their own category. -------------------------------------------------------------------------------- 130ae17fe5 | Kate | 2021-11-01 01:34:27 +0000 Reduce spellpower caps of some low-level spells Teleport Other, Sublimation of Blood, Spider Form, Inner Flame, Gell's Gravitas and Vampiric Draining - as level 2-3 spells, they shouldn't scale all the way up to 200 power. -------------------------------------------------------------------------------- 2d6b873594 | Kate | 2021-11-01 01:34:27 +0000 Don't let monsters pick up seen items they've dropped This allowed them to pick up their weapon again after being disarmed, for example. -------------------------------------------------------------------------------- 91a516d0e7 | Edgar A. Bering IV | 2021-10-31 20:36:10 +0200 hack: halloween tonight, be careful Since we're a bit late and didn't put this on Maurice let's give our players a spooky costume with a hasty options default. Doing this (or maurice) automatically using today_is_halloween() will come later. -------------------------------------------------------------------------------- c05be326da | gammafunk | 2021-10-31 01:11:00 -0500 feat: Tweak a Master Elementalist vault Remove the final chamber door in `mu_elemental_laboratory`, since it tends to allow players to sneak up on our secretive wizard too easilly. Also put a small window into the final chamber about halfway through the vault. Then players can see what they'll be up against as well as the potential rewards. -------------------------------------------------------------------------------- 550dbda0cd | advil | 2021-10-30 18:42:21 -0400 fix: tweak &P temple behavior when low on gods (nicolae) If the seed-chosen temple had fewer altars than an &P placed one, levelgen would simply place floor. This change repurposes an existing check for mapstat/objstat that places a Xom altar in this case. -------------------------------------------------------------------------------- 8c92f1e708 | advil | 2021-10-30 17:50:07 -0400 fix: suppress corrupted PlaceInfo error for wizmode commands This is treating the symptoms, but I think it is safe to ignore this fixup entirely for things like &P. (A better fix might be to make wizmode commands not need the fixup.) -------------------------------------------------------------------------------- 84b7309ef8 | advil | 2021-10-30 17:50:06 -0400 fix: make &P work in temple Previously, the selected map for this command was ignored in temple, overridden by the temple map chosen at seed start. This commit lets a FORCE_MAP_KEY prop override TEMPLE_MAP_KEY if both are set. This does not replace the TEMPLE_MAP_KEY prop, so `&ctrl-r` resets. A map that requires a layout will crash here; this could maybe be headed off by requiring the map to be usable in temple to place there in the wizmode code. I've fixed the crash so that it's an ASSERT at least, and not a segfault (which is how this initially presented). This commit also fixes the encompass warning for `&P` to check PLACE restrictions and not just DEPTH; it was ignoring PLACE before and so probably printing this warning for a bunch of unnecessary cases. -------------------------------------------------------------------------------- 0164abf027 | Kate | 2021-10-30 20:39:40 +0100 Don't consume corpses on Kiku torment failure -------------------------------------------------------------------------------- 4ac5789cae | advil | 2021-10-30 15:25:49 -0400 fix: remove an essentially unused function This function has both webtiles and local tiles code, but isn't used in local tiles. In webtiles it returns 1. Possibly intended for greater things in 1f9488b117fe8, but that didn't happen. -------------------------------------------------------------------------------- cc23663199 | advil | 2021-10-30 15:25:49 -0400 fix: explicitly use TargetConditionals.h in platform detection OS X provides a header that is in some ways quite similar to our platform.h, up to the macro naming style, but unfortunately uses a value of 0 rather than undefinedness for false. This has been around for a very long time (e.g. I found a version as old as 2000), and it looks like there have always been some collisions, but these are largely for for macos 12) added a few new ones that do matter quite a bit, in particular TARGET_OS_WINDOWS and TARGET_OS_LINUX are now #defined to 0 when building on OS X. This breaks many things. This commit takes the easy way out and does some selective #undefs. I've tried to fix a few of the old problems that don't really matter as well, e.g. the old version had noticed that TARGET_CPU_PPC was defined but didn't handle that correctly. I think in the longer run it could be better to change our prefixes, e.g. to DCSS_TARGET_OS_WINDOWS. But this is a bit of an annoying task. Resolves #2208 -------------------------------------------------------------------------------- b5831b966b | Kate | 2021-10-30 20:19:33 +0100 Adjust some Elyvilon abilities While Elyvilon's basic functionality is relatively strong, the god had a very large number of activated abilities and is heavily focused on using them with high invocations training, so was quite fiddly in practice. To streamline things slightly, make the lifesaving ability entirely passive, with no requirement to avoid attacking things (since Zin's Sanctuary is a more interesting version of that design). It now provides the standard good god lifesaving chance, plus an additional stronger piety-based chance which becomes guaranteed at 5* but has a piety-gated timeout. Rather than having two separate self-healing abilities, also remove the Lesser Healing ability and move the other active abilities earlier - Purification moves to 1* and is made slightly cheaper, and Greater Healing is renamed to Heal Self and moves to 3*. -------------------------------------------------------------------------------- 707b13c9aa | Kate | 2021-10-30 19:24:57 +0100 Improve Kikubaaqudgha's invoked torment Allow it to take corpses from adjacent squares instead of only the player's location, and guarantee at least partial torment protection. -------------------------------------------------------------------------------- 2b075f26b7 | Kate | 2021-10-30 19:20:35 +0100 Move some TSO active abilities earlier Moves Divine Shield to 1* and Cleansing Flame to 3*. The Shining One isn't really a useful god in the early game, and this doesn't really change that, but should make the god a little more usable if chosen from a faded altar, for example. -------------------------------------------------------------------------------- d57beee77b | Kate | 2021-10-30 19:20:35 +0100 Cap Gozag's gold distraction chance In edge cases (primarily casting level 9 spells in Ziggurats), it was possible to stack gold distraction so high that monsters could barely act. Adjust the probability of gaining a stack, so that it's now easier to gain multiple stacks at low values, but harder once lots of stacks have been gained, and cap the number of stacks at 20. This is unlikely to be relevant most of the time but should at least tone it down in extreme situtations. -------------------------------------------------------------------------------- f0b37e2a93 | Kate | 2021-10-30 19:20:35 +0100 Slightly reduce Ru's chance of passive retaliation From 1/4 at max piety to 1/5. Ru is very powerful for most characters, and while the sacrifices are a good tradeoff for this, having that power focused in the active abilities (with their cooldowns) is more interesting than having passive retaliation do too much of the work. -------------------------------------------------------------------------------- 5845fe868d | Kate | 2021-10-30 19:12:29 +0100 Highlight some Pan rune messages by default -------------------------------------------------------------------------------- b643f36830 | Kate | 2021-10-30 19:12:29 +0100 Remove a reference to spell hunger -------------------------------------------------------------------------------- abee14ce83 | Kate | 2021-10-30 19:12:27 +0100 Randomise the corpse used for Animate Skeleton Instead of picking the first location visited by radius_iterator. -------------------------------------------------------------------------------- 8f272e2798 | Kate | 2021-10-30 18:59:48 +0100 Remove some handling for multi-headed players -------------------------------------------------------------------------------- f7c1052996 | Kate | 2021-10-30 18:59:48 +0100 Update description for scrolls of fear -------------------------------------------------------------------------------- c1929b3ff3 | Edgar A. Bering IV | 2021-10-30 20:49:11 +0300 fix: recolour titans and antaeus in console -------------------------------------------------------------------------------- 0db16c8cc9 | Nicholas Feinberg | 2021-10-30 07:46:08 -0700 Add ArmiesAndCastles to the CREDITS -------------------------------------------------------------------------------- ef3a642a4e | Nicholas Feinberg | 2021-10-29 07:39:35 -0700 Fix using ?id under Ashenzari (particleface) Also remove an unused #include. -------------------------------------------------------------------------------- 7c675f85b1 | Nicholas Feinberg | 2021-10-28 21:01:04 -0700 Fix console builds? -------------------------------------------------------------------------------- ded9c35045 | Gopall | 2021-10-28 19:48:25 -0700 Prompt user when trying to enter ziggurat portal. Ziggurats are very dangerous. And the portal you enter through is disabled when you enter. It would be a good idea to prompt the user to prevent them from accidentally entering a ziggurat. -------------------------------------------------------------------------------- 340af05277 | Nikolai Lavsky | 2021-10-28 19:45:31 -0700 tile: add ability icons for the Olgreb, Dispater, and Asmodeus unrands -------------------------------------------------------------------------------- 9e3a184554 | ArmiesAndCastles | 2021-10-28 19:34:31 -0700 Add spell menu option -------------------------------------------------------------------------------- 1ad88e3242 | Aliscans | 2021-10-28 19:27:42 -0700 Only compile 27 functions when USE_TILE (or similar) is set. There were a number of functions which were only called if TILE, TILE_LOCAL or TILE_WEB was defined, but were defined unconditionally. Add #ifdefs to some of them to reflect the way they are used. -------------------------------------------------------------------------------- cf0edb70ba | Aliscans | 2021-10-28 19:27:42 -0700 Delete 43 unused functions. Make 1 DEBUG-only. Delete these unused functions: can_spawn_mushrooms() compare_skills() count_allies() count_desc_lines() count_monsters() count_neighbours() count_traps() downgrade_zombie_to_skeleton() drain_hp() fully_map_level() get_armour_repel_missiles() get_desc_quantity() get_random_stair() get_recent_messages() gozag_gold_in_los() ignite_poison_affects() inc_max_hp() init_abomination() is_helmet() is_real_food() item_from_int() item_int() macro_sendkeys_end_add_cmd() max_cloud_damage() mons_can_move_towards_target() mons_class_res_polar_vortex() mons_has_flesh() mons_has_incapacitating_ranged_attack() mons_has_incapacitating_spell() mons_secondary_habitat() multiple_items_at() num_feats_between() pack_item_identify_message() playable_job_names() playable_species_names() player_can_memorise() rand_round() set_hydra_form_heads() spell_is_form() tile_clear_map() tile_reset_feat() update_monster_symbol() zin_remove_all_mutations() Put "#ifdef DEBUG" around keyseq_to_str(). This is not used in the code, but this means that it can still be called through a debugger with the right compile option. -------------------------------------------------------------------------------- 3554995387 | hellmonk | 2021-10-28 19:20:36 -0700 adjust the slow spell Move it to level 1, but cap the power at 25. This might make slow more exciting early on AM without letting it remain too relevant later on. It still has a success bonus compared to other hex effects; this could be removed, but might require adjusting other sources of slow. -------------------------------------------------------------------------------- 776b58c23f | ArmiesAndCastles | 2021-10-28 19:17:21 -0700 Forbid invalid ghost spells -------------------------------------------------------------------------------- 6247938026 | ArmiesAndCastles | 2021-10-28 19:11:23 -0700 Solve wizard mode charms crash -------------------------------------------------------------------------------- 1d6e689fef | Santiago Acosta | 2021-10-28 19:07:31 -0700 Simplify mon_to_hit_base mon_to_hit_base asked if the attack was ranged or not. but this was pointless, since it always returned 18 + 2.5 * HD for skilled monsters or, 18 * 1.5 * HD for unskilled ones. Removed this distinction, and simplified the magic numbers. -------------------------------------------------------------------------------- 09e7bd7c26 | Aliscans | 2021-10-28 19:05:39 -0700 Don't say the map boundary can be burnt or dug through. Prevent get_feature_desc() from stating that terrain on the map boundary can burn or be dug through, as it can't. This reflects a restriction in destroy_wall(). Fix a typo in a comment. -------------------------------------------------------------------------------- de44f11507 | Gopall | 2021-10-28 19:03:49 -0700 Fix a Pan teleport closet -------------------------------------------------------------------------------- 1cc4480b13 | dilly | 2021-10-28 19:03:02 -0700 Give master elementalist willlpower Carry on, master elementalist. -------------------------------------------------------------------------------- 6bb2ce7825 | Perry Fraser | 2021-10-28 19:01:43 -0700 Rename Purgy to Pargi After an IRC discussion brought up by PleasingFungus/gammafunk/geekosaur, it was decided to rename Purgy to Pargi to avoid a potential comparison to bulimia. -------------------------------------------------------------------------------- 9ea0df9366 | ArmiesAndCastles | 2021-10-28 18:57:55 -0700 Solve lost soul crash -------------------------------------------------------------------------------- bb860f9c85 | Nicholas Feinberg | 2021-10-28 18:56:08 -0700 Adjust dpeg_arrival_tiny_a Be merciful (?) -------------------------------------------------------------------------------- 0f29109cba | Nicholas Feinberg | 2021-10-28 18:38:15 -0700 Add seven new Gastronoks (Sastreii) Replace Gastronok's tile with a much sillier one, and add six other tiles for players who want to set a custom tile. These are: - MONS_GASTRONOK_MUSTACHE - MONS_GASTRONOK_CLEANSHAVEN - MONS_GASTRONOK_HANDLEBAR - MONS_GASTRONOK_FU_MANCHU - MONS_GASTRONOK_SIDEBURNS - MONS_GASTRONAUT They can be set by using this rcfile option: tile_player_tile = tile:mons_gastronaut (Or likewise for other tiles.) -------------------------------------------------------------------------------- f7145f7991 | Nicholas Feinberg | 2021-10-28 18:15:39 -0700 Show Crypt rocks (Sastreii) New rock wall tiles for Crypt. -------------------------------------------------------------------------------- 75e6d9beac | Kate | 2021-10-28 16:12:16 +0100 Simplify scrolls of brand weapon Their list of brands with multiple different weights was fairly spoilery. Instead split the brands into "common" (vorpal, freezing, flaming, venom, protection) and "rare" (draining, electrocution, spectral, vampiric, chaos) categories, with each brand within those categories having the same weight, and add this information to the item description. In practice this is a relatively small change to the brand weightings, with the main exceptions of protection and chaos becoming noticeably more common. -------------------------------------------------------------------------------- 59de83eefb | advil | 2021-10-28 09:53:32 -0400 fix: NOWIZARD build compilation issues There are still a bunch of warnings that look harmless, but this should get it to build -------------------------------------------------------------------------------- 892d06dc2c | Kate | 2021-10-28 05:12:11 +0100 Move Ashenzari's item and trap identification to 1* Ashenzari is extremely strong and generically useful to any character, and in addition to the substantial skill boosts offered once cursed, granted a number of abilities up-front without requiring any curses at all. Instead move the trap protection and item identification to 1*, so that joining Ashenzari doesn't immediately identify all consumables for free and some investment is required. -------------------------------------------------------------------------------- 7a50183f53 | Kate | 2021-10-28 05:12:11 +0100 Remove an unused Jiyva god_passive And fix a typo describing some related functionality. -------------------------------------------------------------------------------- 0181a31188 | Nicholas Feinberg | 2021-10-27 07:25:52 -0700 Make Shoals less washed out (Sastreii) Tweaks to new stone wall tiles. -------------------------------------------------------------------------------- ef20177fd5 | advil | 2021-10-27 10:12:41 -0400 fix: remove a spurious # No idea if this could be causing monterey build problems somehow, but it doesn't need to be there. -------------------------------------------------------------------------------- 4a9143789a | Nicholas Feinberg | 2021-10-26 18:50:32 -0700 Actually add new Shoals tiles Oops! -------------------------------------------------------------------------------- 345791154b | Nicholas Feinberg | 2021-10-26 17:39:39 -0700 Add a pillar of the community (Sastreii) New Shoals stone wall tiles. Simply classic... -------------------------------------------------------------------------------- 66f9036eb4 | Kate | 2021-10-26 02:37:52 +0100 Make boulder beetles stop rolling when incapacitated -------------------------------------------------------------------------------- 095bd1b44f | Nicholas Feinberg | 2021-10-24 15:05:01 -0700 Show brimstone fiends the door (Sastreii) More brightness and contrast tweaks. -------------------------------------------------------------------------------- c0678643b6 | Kate | 2021-10-24 22:23:03 +0100 Remove shock as an option for black draconian breath Black draconian breath being uncontrollable works well to distinguish it from being another plain elemental-flavoured bolt, but makes it harder to use effectively and very high-variance. Remove shock as one of the zaps it can fire, and slightly increase the relative weight of orbs of electricity (from 33/33/33 shock/lightning/OoE to 60/40 lightning/OoE). -------------------------------------------------------------------------------- 5a7bdb8870 | Kate | 2021-10-24 22:07:26 +0100 Remove duplicate acid breath handling -------------------------------------------------------------------------------- 7be2a051a4 | Kate | 2021-10-24 20:03:31 +0100 Improve yellow draconian breath targeter So that it properly displays as a beam, instead of looking like it's smite- targeted. -------------------------------------------------------------------------------- 5dbd38fb6a | Kate | 2021-10-24 20:03:31 +0100 Let yellow draconian breath splash more consistently It previously couldn't splash if the monster it hit was killed by the initial damage. -------------------------------------------------------------------------------- e95497fc47 | Kate | 2021-10-24 20:03:31 +0100 Simplify some Shadow Creatures handling Since it's now only a scroll and not a player spell. -------------------------------------------------------------------------------- 190f86ba01 | Nicholas Feinberg | 2021-10-24 09:44:50 -0700 New Brimstone Fiend tile (Sastreii) Decided to take a break from puns for this one. Gotta mix things up :) -------------------------------------------------------------------------------- 73b70caff8 | gammafunk | 2021-10-24 06:19:49 -0500 feat: Remove a Gauntlet exit vault The map `gauntlet_exit_spiral` is a simple spiral Gauntlet exit map adapted from an exit vault for the original Labyrinth portal. This map is significantly harder than the other exits because it provides no cover over long corridors. It predates the minotaur having access to javelins, so this difficulty difference is unintentional. Furthermore it's not an especially interesting exit map on its own. The newly added `dreamdust_gauntlet_exit_labyrinth` map is more balanced and interesting than `gauntlet_exit_spiral`, and the former is also a Labyrinth reference, so I'm removing the latter. It's possible to rework the map's layout to give the player some better terrain while retaining a spiral aspect, but it would make more sense to make a new map at that point. -------------------------------------------------------------------------------- 7e422d3a0a | gammafunk | 2021-10-24 06:00:19 -0500 feat: Some tweaks for a Gauntlet exit map For dreamdust_gauntlet_exit_labyrinth, use alternating patterns to place dead ends not cardinally adjacent to wall openings, which would make the dead end not function. Tweak the inner-most wall to always a path around corners that doesn't create a diagonal choke point. Finally, move the map to the end of the DES section, so that the maps are ordered by when they were added. Closes #2166. -------------------------------------------------------------------------------- b7d1d2055b | DreamDust | 2021-10-24 06:00:19 -0500 A Gauntlet exit map Similar to my other labyrinth vault, dreamdust_labyrinth, but scaled down and turned into a gauntlet exit vault. Commiter's Note: Tweaked commit message and squashed a fix commit. -------------------------------------------------------------------------------- 6a1266e7b4 | gammafunk | 2021-10-24 06:00:19 -0500 feat: Some adjustments to two large themed maps For `dreamdust_labyrinth`, this is a large vault that ultimately places a single monster. Although the larger maze is visually interesting, there's a lot of dead space. This commit scales down the maze by removing one set of stone walls. Additionally it simplifies the substitutions and introduces an alternating pattern to prevent the dead end from sometimes placing adjacent to the single opening in the wall in a way that prevents the dead end from functioning. For `dreamdust_isle_of_ice`, I've rebalanced the monster lists for each placement depth and added loot appropriate for the threat. For monsters, since this vault is evoking the Ice Cave aesthetics and monster themes, I've made monster lists that combine the "natural" and "undead/demonic" sets, choosing depth-appropriate monsters from the Ice Cave common monster lists used in that portal. The earlier Dungeon and Lair placements use the "easy" Ice Cave monsters, the later Dungeon uses the "hard" Ice Cave monsters, and for Depths I've logically extended the sets to include top end "hard" monsters and a few additional threats form Cocytus. I've added a mix of the usual loot types as well as one thematic Ice Cave loot item that borrows some of the loot definitions used in the portal. The monster and loot item counts are the same for all depths, only the types of monsters change. Ice statues have a chance to place in Dungeon and Lair, with a chance for a second ice statue in late Dungeon. For Depths, we use an orange crystal statue. I've tweaked the appearance of the vault to be more consistent with the Ice Cave portal for console, and added vault connectors near the front of the map, so the vault will be better integrated with the level layout. -------------------------------------------------------------------------------- 8fcd438c92 | DreamDust | 2021-10-24 06:00:19 -0500 Two large themed vaults dreamdust_isle_of_ice: An ice-themed vault on the edge of the map. Original inspiration is how Antarctica looks on a 2D world map, but I'm a terrible artis. So quickly gave up on replicating it. dreamdust_labyrinth: An homage to the old labyrinths. I gave it the lowest WEIGHT since it's a large vault and I think it works best as a very rare easter egg. Committer's Note: Combined commits and tweaked commit messages. -------------------------------------------------------------------------------- 10fb06eb29 | DreamDust | 2021-10-24 06:00:19 -0500 A small loot vault dreamdust_deal_with_the_devil: Some devilish being is trying to tempt players into using a powerful but dangerous piece of equipment. Original plan for this vault was to generate a randart armour with Harm, but this apparently isn't possible. Unfortunate. -------------------------------------------------------------------------------- ac3eafeb5c | gammafunk | 2021-10-24 06:00:19 -0500 Some fixes and adjustments to some float vaults For `dreamdust_black_sun_cult`, use the new correct name for demonspawn black suns. Tweak placement to allow on branch ends, since there's nothing special about this vault that needs to avoid that. For `dreamdust_experimentation`, mix in some "experimental" hostile monsters along with the wizards, to make the vault a bit less mundane. Scale loot and monster count better with depth of placement. For the decorative monsters, use either only human or animal species monsters depending on the monster set chosen, all with permanent enchants, and have them generate awake. For `dreamdust_cat_pyramid`, slightly increase the number of sphinxes, placing 3 on-average and up to 5 to balance the vault's difficulty relative to its loot. Use the good loot potion set instead of random potions, and thin out the loot count a little. This way there's a bit less loot, but it's higher quality. Spread the loot items out in the vaults interior, moving external gold to inside the vault. Tweak the vault layout to prevent statues from blocking the door and to give a more complete path around the outside of the vault. -------------------------------------------------------------------------------- 3ea58914d7 | DreamDust | 2021-10-24 06:00:19 -0500 Some float vaults `dreamdust_black_sun_cult`: Vault featuring a fire and necromancy based cult. In the Dungeon, players will encounter sun demons and a demonspawn black sun, while in Zot they'll find powerful draconians and a black sun worshipping an orb of fire. Rewards are a book (either a manual or a spellbook) and a fire-related item. `dreamdust_cat_pyramid`: A cat-themed pyramid with a couple guardian sphinxes and some offerings as loot. `dreamdust_experimentation`: Some wizards have been performing inhumane experiments... Kill them, stare in horror at what they've created, and then feel free to loot their potion stash! :) Committer's Note: Merged commits and cleaned up commit message. -------------------------------------------------------------------------------- 79a10526bc | gammafunk | 2021-10-24 06:00:19 -0500 feat: Some tweaks to a Shoals vault For `dreamdust_from_the_deep`, the custom water and wall tile visuals taken from the Sewer portal are out of place for the visuals of Shoals. The vault's themes directly referencing the Abyss, so this commit removes the custom water tiles and replaces the Sewer wall tiles with Abyss rock wall tiles. Also replace the gravestone tile for the statue with the newly added tentacle statue tile and remove the custom description. Custom statue descriptions used only in one vault tend to confuse the player as to whether the statue might some special effect, which this one doesn't. -------------------------------------------------------------------------------- 7e8daab784 | DreamDust | 2021-10-24 06:00:19 -0500 A Shoals vault dreamdust_from_the_deep: An "eldritch" vault full of tentacle and chaos monsters. Gives a randart ring and a spellbook with malign gateway & summon horrible things as rewards. Commiter's Note: Cleaned up commit message. -------------------------------------------------------------------------------- f6f64a616a | Kate | 2021-10-24 01:35:50 +0100 Give Blink a power-dependent cooldown Blink was the final player spell that ignored spellpower completely, and was also one of the worst offenders for being universally desirable without requiring any noticeable skill investment. Give it a power cap of 50 and a short cooldown (which is also applied to evokable blink on randarts, but no other methods of blinking - scrolls of blinking and forced blinks from monster spells are unaffected). At full power the cooldown is reduced all the way to zero. -------------------------------------------------------------------------------- c1fbb6f34a | Nicholas Feinberg | 2021-10-23 16:22:37 -0700 Do some deep trolling (Sastreii) New DTEM and deep troll shaman tiles, tweaked for better visibility. -------------------------------------------------------------------------------- 4d584c6bc1 | Kate | 2021-10-23 22:44:42 +0100 Rename a removed mutation So that it doesn't have the same name as an existing mutation for wizmode purposes. -------------------------------------------------------------------------------- b99661e8b9 | Kate | 2021-10-23 22:44:42 +0100 Fix a wispform typo -------------------------------------------------------------------------------- a01ba6cf96 | Kate | 2021-10-23 22:44:42 +0100 Don't make -Potion duration display as a mutation Moves the display for lichform's inability to drink potions to the form's list of innate fake mutations - possibly these should be extended to allow marking a form mutation as good/bad to determine colour, rather than special-casing bad mutations with colour tags. -------------------------------------------------------------------------------- 5ef96339b7 | Kate | 2021-10-23 22:44:42 +0100 Make Inner Flame smite targeted (perryprog) Inner Flame was strong but often a little fiddly to use - making it smite targeted allows it to still be used with foxfires blocking line of fire, for example. Closes #2175 (and implements the change slightly differently, with the beam/zap still kept so that it can be used elsewhere). -------------------------------------------------------------------------------- fe11b99a14 | Kate | 2021-10-23 22:44:42 +0100 Let player hexes set ally targets As with direct damage spells, hexing a monster indicates that you probably want your allies to attack it. Hibernation is kept as an exception, since the player is more likely to want to stab themselves than to have their allies try to do so. -------------------------------------------------------------------------------- 0812ffde7f | Nikolai Lavsky | 2021-10-23 22:44:09 +0100 fix: don't show Rage % when the player can't be affected by *Rage Don't show the Rage chance on the character overview screen for lifeless undead and for players with Clarity. -------------------------------------------------------------------------------- 20c1a8e840 | Aliscans | 2021-10-23 22:43:29 +0100 Shrink some overview screen labels to make them fit better Reduce the width of the first column of labels from 9 to 8. This creates a 1 character gap between the right edge of the Stlth field and the second column of labels. Set the length of the Stlth, HPRegen and MPRegen labels using cwidth. This means that every field in the two label columns has its width set by cwidth. Remove loops from _stealth_bar(). -------------------------------------------------------------------------------- 47f3eba078 | Nicholas Feinberg | 2021-10-22 08:22:14 -0700 Add a spooky new halloween tile (Sastreii) Not currently used for anything but could be fun for Maurice. -------------------------------------------------------------------------------- 841cac7204 | Nicholas Feinberg | 2021-10-22 08:09:07 -0700 Shatter Morrison's legacy (Sastreii) New broken door tiles. -------------------------------------------------------------------------------- ff097466f2 | Kate | 2021-10-21 17:09:34 +0100 Simplify sickness status display It's a much simpler effect than it was in the distant past, and can just be displayed straightforwardly instead of changing colour depending on remaining duration. Also fixes it not being correctly displayed by potions of cancellation. -------------------------------------------------------------------------------- e4f7e7e258 | Kate | 2021-10-21 03:57:34 +0100 Adjust a distortion message So that it doesn't overlap with the messaging for Lugonu's Bend Space or translocation miscasts, which resulted in misleading message colouring by default. -------------------------------------------------------------------------------- 1f2755edf2 | Kate | 2021-10-21 03:57:10 +0100 Give Bend Space a chance to blink monsters at the destination Bend Space's power-dependent chance to blink and damage adjacent monsters mostly acts as flavour and to slightly distinguish it from regular Blink. To lean into this and Lugonu's chaotic nature a little more, let it also blink monsters at the destination. Blinking monsters at the destination also has the added bonus of making it slightly less likely to end up next to a hostile creature. -------------------------------------------------------------------------------- 5bcc4f242e | Kate | 2021-10-21 02:25:10 +0100 Remove an obsolete parameter -------------------------------------------------------------------------------- ad6df49e81 | Kate | 2021-10-20 01:23:27 +0100 Make the player immune to their own Noxious Bog The spell's utility was previously very heavily dependent on whether the player had easy access to flight. Make it a little easier to use without needing access to flight, since it already does have strong restrictions on where it can be cast in the first place. (This can also technically be used to gain immunity to monster-cast sludge, which is probably fine.) -------------------------------------------------------------------------------- e46a2d6e3a | Kate | 2021-10-20 01:23:27 +0100 Fix spacing -------------------------------------------------------------------------------- a55568f2eb | advil | 2021-10-19 17:51:19 -0400 lint: checkwhite -a -------------------------------------------------------------------------------- 42619f35cc | advil | 2021-10-19 17:50:58 -0400 docs: MSYS2 install tweaks for python issues The main contentful change here is to be consistent about using the binary name `python3` instead of `python`. The reason for this is that apparently these days `base-devel` forces install of the `python` package as a dep of various things included in it, and we also install the `mingw-w64-x86_64-python` package as part of that toolchain. Having the latter installed (which uses the `python3` binary name) seems to break regular `python` in current MSYS2 versions, because when you load `python` the python path (as seen in `sys.path`) gets set wrong, to the mingw toolchain version. Because of this it fails to load any c libs due to binary incompatibility (`math` being the one that shows up when trying to import `yaml`). Anyways, this confusing situation doesn't actually impact building crawl, because the build steps themselves already use `python3`, it just means this step that was supposed to check `yaml` was producing an error. The situation is possibly an outright MSYS2 bug, though I'm not entirely sure where to report or ask about it. Because the build actually works fine as-is, I don't think any deeper change is merited on our part (e.g. uninstalling one or the other python, each of which is a dep to a corresponding version of gdb). This commit resolves #2195, which proposed a less direct workaround for getting an attempt to import `yaml` not to crash. -------------------------------------------------------------------------------- 5d44ed7e61 | robertxgray | 2021-10-19 22:22:58 +0200 Show gold for Gozag worshippers in small layout Also adjust Android permissions -------------------------------------------------------------------------------- b91baff9cc | Nicholas Feinberg | 2021-10-18 21:06:12 -0700 Maybe fix an engulf bug -------------------------------------------------------------------------------- 66d609a797 | Nicholas Feinberg | 2021-10-18 21:03:36 -0700 Make living spells more reckless (causes bugs) Allow living iceblast spells to target an adjacent player, removing their regard for their own existence. This probably causes some new bugs. I don't know what, but I suspect there's something. -------------------------------------------------------------------------------- 4011e67c31 | Nicholas Feinberg | 2021-10-18 17:03:51 -0700 Put the last nail in the coffin (Sastreii) New Crypt door tiles of all shapes and sizes. Dead cool. -------------------------------------------------------------------------------- 30a9fa1a03 | nicolae-carpathia | 2021-10-18 17:15:42 -0400 Add/fix synonyms for statue tiles, vault that uses them Fixes the synonyms for the two new statue tiles, adds synonyms for all the statue tiles that didn't have any, and adds the new tile synonyms to dreamdust_ecumenical_altar_statues, which uses the synonyms to make sure the two statues placed are identical. -------------------------------------------------------------------------------- a8797d1ae1 | Nicholas Feinberg | 2021-10-17 21:19:34 -0700 Clear engulf after rising flame (Prakerore) -------------------------------------------------------------------------------- d288e3ce45 | Kate | 2021-10-18 04:24:54 +0100 Clear engulf status when monsters swap places (Daunt) -------------------------------------------------------------------------------- 1ffa25e84c | Kate | 2021-10-18 04:03:29 +0100 Fix a header-build-tests error -------------------------------------------------------------------------------- e885453c89 | Kate | 2021-10-18 03:59:30 +0100 Improve Yara's Violent Unravelling targeter Display a message when aiming at a monster that can't be unravelled. -------------------------------------------------------------------------------- 182c74e625 | Kate | 2021-10-18 03:59:30 +0100 Make monster Injury Mirror dispellable Monster enchantments are generally dispellable even if they're divine/priestly in origin and undispellable on the player (see 8836bdb7d9), but Injury Mirror had been missed from the updated list. -------------------------------------------------------------------------------- 48537fa010 | Kate | 2021-10-18 03:59:30 +0100 Remove an obsolete spell targeter -------------------------------------------------------------------------------- 3278d6a771 | Nicholas Feinberg | 2021-10-17 07:53:47 -0700 Take new Sastreii tiles for granite Two new statue tiles. -------------------------------------------------------------------------------- 6a1b92adce | Kate | 2021-10-17 14:48:37 +0100 Fix Refrigeration and OTR targeters (Goratrix) -------------------------------------------------------------------------------- c014c758b5 | Kate | 2021-10-17 14:39:43 +0100 Reduce some code duplication -------------------------------------------------------------------------------- daf460b524 | Kate | 2021-10-17 02:07:26 +0100 Remove a duplicate #include -------------------------------------------------------------------------------- 47fb96b963 | Kate | 2021-10-17 01:51:07 +0100 Upgrade Corpse Rot and PoG targeters Correctly handle corridors and adjacent walls for Corpse Rot, to show when it has a chance of spilling out and when it's guaranteed to affect a cell. Highlight squares that overlap for both portals in the Passage of Golubria targeter, to make it visually clearer that they're two distinct target areas. -------------------------------------------------------------------------------- 0a521eb1f5 | Kate | 2021-10-17 00:35:00 +0100 Adjust targeter_radius behaviour Change a number of radius spell targeters so that the caster's tile isn't automatically displayed as affected, unless it's actually a spell that can affect the caster such as Static Discharge. For Battlesphere, also slightly adjust the spell's behaviour so that the valid squares for recalling an existing battlesphere are the same as the squares for summoning a new one. -------------------------------------------------------------------------------- ee0c6bb3a6 | Kate | 2021-10-17 00:35:00 +0100 Add a spell targeter for Passage of Golubria -------------------------------------------------------------------------------- 50bfc30901 | Kate | 2021-10-17 00:35:00 +0100 Make Passage of Golubria's range scale with power Passage of Golubria was one of the few remaining spells that ignored spellpower completely, and was a desirable tool for anyone able to cast it. To make it less useful with low investment, scale its range with spellpower, from 2 at 0 power up to full LOS at 100 power. For practical spellpower values, this results in range 4/5 with minimal skill to cast the spell, and range 6/7 with more skill investment. -------------------------------------------------------------------------------- 6308e9f754 | Kate | 2021-10-17 00:34:56 +0100 Add a spell targeter for Corpse Rot -------------------------------------------------------------------------------- db29cd8f73 | Kate | 2021-10-17 00:12:34 +0100 Make Corpse Rot create more clouds with higher power Corpse Rot was one of the few player-castable spells that ignored spellpower completely, and was also fairly awkward to make good use of despite the strength of miasma clouds. Allow it to rot multiple corpses from a single stack, and give it a power-dependent chance of creating an extra miasma cloud per corpse in LOS. With high power and/or high numbers of corpses, also allow it to spread out to radius 2, once all adjacent squares have been filled with miasma. -------------------------------------------------------------------------------- 162e43154e | Nicholas Feinberg | 2021-10-16 10:17:14 -0700 Add a howler of a new tile (Sastreii) New Bunyip tile. -------------------------------------------------------------------------------- 0e9bf3705b | Nicholas Feinberg | 2021-10-16 09:18:30 -0700 Clarify explore mode (venx) -------------------------------------------------------------------------------- 4c3c5a04a9 | Nicholas Feinberg | 2021-10-16 08:29:54 -0700 Add ?/ to the main menu TODO: - Somehow show a proper response when regex searches (e.g. ?/M) don't find anything, instead of silently failing. (This works in local tiles and console, but not in webtiles.) - Tiles? -------------------------------------------------------------------------------- c179e30c89 | Nicholas Feinberg | 2021-10-14 11:12:35 -0700 Let Discord wake sleeping monsters Instead of leaving them unaffected. Seems simpler to reason about for players. -------------------------------------------------------------------------------- df75b09677 | Nicholas Feinberg | 2021-10-14 11:06:11 -0700 Simply divine tile changes (Sastreii) New tiles: - Angel - Daeva - Profane Servitor - Pikel - Goblin -------------------------------------------------------------------------------- 1651b1f1e0 | Kate | 2021-10-14 03:57:15 +0100 Update Pacification description It was changed in ff9e726d5e to give full XP. -------------------------------------------------------------------------------- 144af121cd | gammafunk | 2021-10-13 13:11:13 -0500 feat: Roomify Vaults branch Desolation entries Similar to what was done with 1b783e53 for Wizlab entries, move Vaults branch Desolation entries into rooms. Add floor border to some entries so they work better as Vaults rooms. This border won't cause any issues for placement outside of Vaults (i.e. in Elf), so I'm not going to CLEAR it outside of Vaults branch. One entry is a large diamond shape that won't work terribly well as a Vaults room, so it has 0 weight only for Vaults. -------------------------------------------------------------------------------- df74fcfb57 | gammafunk | 2021-10-13 13:10:30 -0500 feat: Move Vaults branch Wizlab entries to rooms Currently, Wizlab entries in the Vaults branch place through the normal CHANCE method as minivaults, but non-room vault placement doesn't work well in Vaults. These vaults routinely destroy parts of the Vaults layout, making the room vaults placed by the layout less effective. In the worst case, ghost vault rooms can be partially broken, releasing the ghost vault contents into the level without player interaction. This commit does for Wizlab entries the same thing as was done for ghost vaults: give them a special tag and Vaults room generator that applies the desired chance, placing the entries as rooms if the chance is successful. We use the existing entries by modifying the setup function. No layout changes were necessary to adapt these vaults into Rooms, but I did clean up the decorations in mu_enter_wizlab_7 to be more Zot-like and reglyphed and cleanup up a couple other vaults. and making some slight changes to Wizlab entry vaults where necessary. -------------------------------------------------------------------------------- a7a6a45411 | gammafunk | 2021-10-13 11:34:25 -0500 fix: Generalize a vault depth range Use depth ranges that don't indirectly reference branch length. -------------------------------------------------------------------------------- faba86c3f8 | gammafunk | 2021-10-13 11:34:25 -0500 feat: Merge door vaults maps For the variations of door_vault placing in the Vaults branch, we previously had separate vaults for these. Similar to to the ghost vault merge done in 17de5e6, this commit merges the Vaults branch variants into their parent vaults, adjusting the parent to have a ring of floor tiles and the necessary tags. -------------------------------------------------------------------------------- 71136c5590 | nicolae-carpathia | 2021-10-12 13:07:34 -0400 Slightly improve documentation for vault ORIENT: statement -------------------------------------------------------------------------------- 66cdd625d7 | advil | 2021-10-12 10:05:19 -0400 fix: condense logging on webtiles connection timeout Based on 7bb4a8268b, one thing I can say is that in Tornado 4+, when a timeout finally reaches the point of closing out the socket, there can be a really large number of async write Futures waiting to be failed, that all get their callbacks triggered within a few ms of each other. This situation in and of itself indicates some issues in our code, e.g. one culprit apparently is lobby messages, which look to be really inefficient and scale badly with the number of players on the server. However, it seems possible here that the server thrashing conditions are triggered by just too much logging in response to this sudden burst of callbacks. I still haven't replicated any of this locally, so this is all somewhat speculative. However, for exceptions indicating that the connection is closed, now that I have seen some logging, I don't think there's a huge need to keep the verbose logging on (it can always be restored if I need more data). This commit logs just the first one, and keeps track of the total number of failed callbacks on connection end, printing that in the final close message. Regular exceptions will still be fully logged, if they happen. This commit also adds correct handling for StreamClosedError in tornado 4. -------------------------------------------------------------------------------- 4eb62b627b | advil | 2021-10-11 22:30:09 -0400 fix: remove debug code oops -------------------------------------------------------------------------------- 7bb4a8268b | advil | 2021-10-11 22:28:55 -0400 feat: more debugging info for Future exceptions This is aimed at debugging CAO thrashing on disconnects, which I can't replicate locally. This leads to extremely spammy debug messages when this issue happens, so may need to be reverted, but this should be quite rare in normal circumstances. -------------------------------------------------------------------------------- 7e9dba17c3 | Kate | 2021-10-11 00:04:19 +0100 Shorten some welcome messages So that they'll fit on a single line in the message area. -------------------------------------------------------------------------------- 885e983cc2 | Kate | 2021-10-10 23:29:32 +0100 Update CREDITS.txt -------------------------------------------------------------------------------- 1c50d1d167 | Perry Fraser | 2021-10-10 23:28:39 +0100 Fix: redraw tiles when breath ability gained (#2142) Before, until TilesFramework::update_tabs() was called, the tiles abilities pane would not appear when receiving your first ability by way of draconian breath. This amends that by calling layout_statcol when Draconian maturity is reached. -------------------------------------------------------------------------------- 770bde8897 | Perry Fraser | 2021-10-10 23:28:26 +0100 Fix: don't list walljump twice in the ability pane while silenced (#2121) Closes #2120. -------------------------------------------------------------------------------- 2b6bb2fd11 | Kate | 2021-10-10 21:33:44 +0100 Don't let grunt_zot_stairs_overgrown turn orbs of fire into oklobs Fixes a Zot stair vault being able to turn any monster into an oklob if it's standing in one of the spots where a valid plant used to be. -------------------------------------------------------------------------------- 0d26b95db6 | Kate | 2021-10-10 17:24:45 +0100 Let monsters use potions of brilliance -------------------------------------------------------------------------------- ad9de1bfc8 | Kate | 2021-10-10 17:07:06 +0100 Don't let monsters read scrolls while unable to speak Scroll-reading was prevented under silence, but not when engulfed or muted by Zin recite. -------------------------------------------------------------------------------- c2b38c0785 | Kate | 2021-10-10 17:07:06 +0100 Adjust some monster emergency spells Remove Minor Healing and Invisibility from a few books that were already quite full or where they weren't likely to be relevant (orc high priests, sphinxes, and deep troll shamans lose Minor Healing, and necromancers and the Enchantress lose Invisibility). -------------------------------------------------------------------------------- 33d3b24fc1 | Kate | 2021-10-10 17:07:06 +0100 Remove some unused handling for monster scroll use Pacified monsters would in theory try and use scrolls of blinking and teleportation, but the scroll use check also required them to have a foe nearby, which would never be the case. -------------------------------------------------------------------------------- e0297cdf13 | Kate | 2021-10-10 17:07:01 +0100 Remove Teleport Self as a monster spell The timely follow-up to 9d39c9a61c - only Sonja, Prince Ribbit, and Maurice were left using it, and for all of them it was still unlikely to be particularly interesting to deal with. -------------------------------------------------------------------------------- 84cb2ea78e | Kate | 2021-10-10 01:44:07 +0100 Reduce the electrocution brand's chance to trigger Electrocution highly overperforms as a weapon brand - not only is it rare for monsters to resist it, its damage was high enough to compete with multiplicative brands such as vorpal/freezing/flaming even on larger, slower weapons. Reduce its chance to trigger from 1/3 to 1/4 per hit, to make it slightly less of an obvious best choice. -------------------------------------------------------------------------------- 587649e3ce | Kate | 2021-10-10 01:44:07 +0100 Let LRD work on permarock walls Since the main function of permarock is just to be indestructible, and LRD no longer destroys walls. -------------------------------------------------------------------------------- a6156daa3a | Kate | 2021-10-10 01:42:58 +0100 Make Demonic Touch's attack chance independent from str/dex Give it a fixed 2/5 chance to trigger, rather than the standard str/dex check followed by a 1/2 chance, since its damage is also independent from stats and other bonuses. The aux attack still has to successfully hit the target (and uses the normal tohit calculations), but should now be more effective early, before the main draw of the vulnerability effect shows up. -------------------------------------------------------------------------------- 1f24579cd5 | Kate | 2021-10-10 01:28:55 +0100 Clarify pain brand description for Djinn As with elemental staves, add to the description to indicate that spellcasting skill isn't good enough to make use of pain weapons. -------------------------------------------------------------------------------- d89666f14f | Kate | 2021-10-10 01:28:55 +0100 Allow training currently-useless skills with !XP And also allow toggling the display of base skills/enhanced skills. -------------------------------------------------------------------------------- 6c90c26265 | Kate | 2021-10-10 01:28:31 +0100 Fix targeting not being reset on phantom mirrored enemies Targeting was being reset on the caster instead of on the mirrored target. -------------------------------------------------------------------------------- da0c5dcf31 | Kate | 2021-10-10 01:15:32 +0100 Fix a KMONS line in nzn_ghost_randoct Looks to have been accidentally broken when the vault was refactored in 388b075d1f. -------------------------------------------------------------------------------- e759d193ff | Santiago Acosta | 2021-10-09 23:53:25 +0100 Fix some Phantom Mirror bugs Bug 1 is simple: When a monster casts phantom mirror on another monster, the casting monster is unentangled/unconstricted. This behaviour is unintended, as clearly, the monster being copied should be freed instead. Bug 2 is more subtle: When a monster is copied, its constriction status is not copied (as intended). However, the enchantment applied by BVC to indicate direct constriction IS copied. This results (in tiles) in a graphical bug, where the monster has the BVC icon, but can move around and act as normal. Closes #2122. -------------------------------------------------------------------------------- e5425f880d | Nikolai Lavsky | 2021-10-09 23:45:07 +0100 fix: add a usefulness check for Elyvilon's self-healing abilities Without such check, it's easy to over-heal and waste piety. Closes #2169. -------------------------------------------------------------------------------- 19d156f19b | Aliscans | 2021-10-09 23:45:07 +0100 Fix: Give useful notes when an ally dies. Previously, the death of a unique ally would be marked with the note "Your ally died". Insert the name of the deceased. Closes #2133. -------------------------------------------------------------------------------- 500345e458 | MainiacJoe | 2021-10-09 23:45:07 +0100 Take note when a Ds is revealed as monstrous [Committer's note: Monstrous status was tracked as a DGL milestone, but wasn't conveniently visible from in-game. Closes #2125.] -------------------------------------------------------------------------------- f509bdd586 | MainiacJoe | 2021-10-09 23:45:07 +0100 Take note when player prays at an ecumenical altar In the morgue, it will be referred to as, "the altar of an unknown god," since I've discovered that some players think the term, "ecumenical altar" refers to an altar in the Ecumenical Temple. -------------------------------------------------------------------------------- 0446da8ef9 | nicolae-carpathia | 2021-10-08 20:48:43 -0400 Add some entries to miscname.txt This includes entry messages for when you first arrive in the dungeon, along with some new adjectives for the Orb of Zot and also some new Halloween variants, which I hadn't realized were even a thing. Also includes some new messages for Hell effects. Fun times all around! -------------------------------------------------------------------------------- 0357d9c091 | nicolae-carpathia | 2021-10-08 16:48:35 -0400 Fix a Halloween typo, just in time -------------------------------------------------------------------------------- 4a3272bca7 | Nicholas Feinberg | 2021-10-08 11:26:41 -0700 Clarify Discord sleep failure (CarefulOdds) -------------------------------------------------------------------------------- 3c9886e45e | Kate | 2021-10-07 23:21:09 +0100 Add a missing comma (perryprog) And a related compile check. -------------------------------------------------------------------------------- 4e9751bbfc | advil | 2021-10-07 17:41:34 -0400 docs: remove an obsolete sentence in options documentation Since e74157ce7a5c and preceding commits, no artefact can be evoked in the way that the removed sentence was alluding to. -------------------------------------------------------------------------------- 35d0774509 | Kate | 2021-10-07 20:33:17 +0100 Fix an off-by-one error -------------------------------------------------------------------------------- 1ca825e530 | Kate | 2021-10-07 19:37:03 +0100 Add a compile check for some aux attack handling -------------------------------------------------------------------------------- e23450071b | Kate | 2021-10-07 19:32:26 +0100 Give monster draconians fixed colours per job While the draconian colour/job system works better than it did on monster demonspawn (since they're more noticeably differentiated by their breath weapons), it still allows for a very large set of possible monsters. Instead give every draconian job a single default colour when randomly generated: white = stormcaller, green = monk, purple = shifter, yellow = annihilator, black = knight, and red = scorcher. Pale and grey draconians already don't randomly generate. Vaults have been edited to stick to these combos, but in cases where the vault is self-contained and based on a specific theme they can manually override them (for example a fire-themed vault could place red draconians of any job, or a conjurations-themed vault could place annihilators of any colour, as long as the vault sticks to a single colour or job in each case). -------------------------------------------------------------------------------- 7f772adbe3 | Nicholas Feinberg | 2021-10-07 11:14:23 -0700 Add Sastreii to the dev team Welcome! 🎊 🎊 🎊 -------------------------------------------------------------------------------- baef9634d7 | gammafunk | 2021-10-06 11:44:22 -0500 fix: ghost vault logic The ghost vault logic changes in 17de5e62 were partially incorrect and messed up ghost vault placement. We need to have ghost vaults placing outside of the Vaults branch always set a CHANCE, but not set CHANCE for the Vaults branch. Furthermore ghost vaults exclusive to the Vaults branch should only exist as so-called Vault rooms in the file `vaults_rooms_ghost.des`. The vaults in this file have no set DEPTH so that they never attempt to place as minivaults but are still selectable by the `vaults_ghost` tag. However 17de5e62 had these vaults also set a CHANCE, which caused this to be applied to a default depth of *all levels*, even ones not included in the ghost vault range. Furthermore the conditional in `ghost_setup()` incorrectly didn't set CHANCE if the `vaults_setup` argument was true, even for ghost vaults that placed both in Vaults and outside of Vaults. This commit fixes these issues. For Vaults exclusive ghost vaults in `vaults_rooms_ghost.des`, we have them set a new `set_chance` arg for `ghost_setup()` to false to prevent setting the CHANCE at all. The vaults in this file thus only rely on the `vaults_ghost` tag to be used (and only in the Vaults branch). This argument defaults to true, so ghost vaults outside of this file will get their CHANCE set properly for non-Vaults branches. Furthermore we give any such vault a CHANCE weight of 0 specifically in Vaults. This prevents a ghost vault that places both outside of Vaults (as a CHANCE vault) and inside of Vaults (as a ghost vault room) from ever independently placing in Vaults branch as a minivault via CHANCE. -------------------------------------------------------------------------------- ad74161d1b | Kate | 2021-10-06 16:46:37 +0100 Don't crash on chardump after making tentacle attacks Caused by adding a new aux attack type but not handling it in action count displays, oops. -------------------------------------------------------------------------------- 539b0f7ac7 | Kate | 2021-10-06 02:29:16 +0100 Remove talons as a demonspawn mutation Unlike the other body slots with multiple options (horns/antennae, and now claws/demonic touch), there's no noticeable mechanical distinction between hooves and talons, and hooves are much more demonic. -------------------------------------------------------------------------------- 7b6c64ccd2 | Kate | 2021-10-06 02:12:21 +0100 Add a demonspawn gloves slot mut: demonic touch The demonic touch mutation grants an offhand touch attack which deals a small amount of irresistible damage (not increased by skills/stats, and not reduced by AC). At level 3 it blocks the gloves slot and also applies the vulnerability status effect for a short duration. -------------------------------------------------------------------------------- b5b0ca8da5 | Kate | 2021-10-06 02:12:21 +0100 Add a demonspawn cloak slot mut: weakening stinger The weakening stinger mutation gives demonspawn a tail and a stinger, granting a tail-slap aux attack. At level 3, it becomes large and sharp enough to block the cloak slot, and begins to apply the weakness status on hit (to all except undead and nonliving monsters). -------------------------------------------------------------------------------- 4e51291bfa | Nicholas Feinberg | 2021-10-05 16:44:15 -0700 Make berserk monsters break more doors This is pure theme, but it feels right, you know? -------------------------------------------------------------------------------- deb3d7f7b4 | Nicholas Feinberg | 2021-10-05 14:35:25 -0700 Supply Snake stone surfaces (Sastreii) ssssssss -------------------------------------------------------------------------------- ff9e726d5e | Nicholas Feinberg | 2021-10-05 12:05:35 -0700 Make Pacify give full XP As with Banishment, Pacification is already something the player dedicates significant resources to achieve - piety, mp, Invocations skill, a god... Getting half XP feels bad, and there's no balance requirement for it, so toss it. -------------------------------------------------------------------------------- 07eab104ef | Nicholas Feinberg | 2021-10-05 12:05:35 -0700 Remove portal mimics (hellmonk) A little bit too cruel. Timed portals are a fun minigame; having a chance of a no-prize isn't great. I'll add some kind of mimics somewhere else someday, Hep willing... -------------------------------------------------------------------------------- 3e9935cbe5 | gammafunk | 2021-10-05 11:42:59 -0500 fix: Correct a lua syntax error (Sergey) A bad search and replace, oops. -------------------------------------------------------------------------------- cfc00ec14d | Nicholas Feinberg | 2021-10-04 22:11:34 -0700 Solve the problem of evil Refactor away MH_EVIL to simplify the concept of holiness. -------------------------------------------------------------------------------- 6ae9c628c9 | Nicholas Feinberg | 2021-10-04 22:11:12 -0700 Fix monster sustain limit descriptions 'obsidian statue can sustain at most three...' -> 'The obsidian statue can sustain at most three...' -------------------------------------------------------------------------------- 3aaae7bc06 | Nicholas Feinberg | 2021-10-04 21:53:27 -0700 Don't color SH red while Petrifying? Since, per 7dc2aef8cabe0b31, Petrifying no longer disables SH. (Petrified does.) I couldn't make the coloring work while testing, but hopefully it does. -------------------------------------------------------------------------------- fe5b701de9 | Kate | 2021-10-05 01:08:41 +0100 Update some vault demonspawn The Pan Orc vault previously used non-monstrous base demonspawn, and Wucad Mu's monastery used monstrous base demonspawn. Re-stat the dummy demonspawn monster to have similar stats to old monstrous demonspawn and put them back in both vaults, reducing the number of other threats (knights, sorcerers and high priests) in the Orc end vault to compensate for the more dangerous demonspawn. Also restore these buffed demonspawn to the zombie spawn list. -------------------------------------------------------------------------------- b65a5730ee | Kate | 2021-10-05 01:08:12 +0100 Give demonspawn corruptors entropic weave Replacing their temporary malmutation, since there's a decent amount of permanent malmutation in Pan anyway, and corrosion is a more immediate and reliable threat. -------------------------------------------------------------------------------- 82a91f0f04 | Kate | 2021-10-05 01:08:12 +0100 Adjust demonspawn weapon sets Greatly trim down the list of weapons in the weapon sets used by demonspawn corrupters and black suns (keeping the same odds of them having a demon weapon). -------------------------------------------------------------------------------- b058677d0a | Kate | 2021-10-05 01:08:12 +0100 Remove monster icemail As with Ozocubu's Armour, giving monsters extra AC that sometimes melts isn't worth the extra complexity compared to just giving them the AC unconditionally. Demonspawn stats have been adjusted in the previous commit to be more appropriate per-class without the icemail bonus. -------------------------------------------------------------------------------- 10ef46f4bb | Kate | 2021-10-05 01:08:06 +0100 Simplify monster demonspawn Monster demonspawn using draconian-style colour/job combinations was flavourful but ultimately just made them overcomplicated, since base demonspawn were mostly unremarkable and didn't provide very meaningful distinctions other than monstrous demonspawn having much more health and damage than the rest. Instead remove all base demonspawn, and make each of the classed demonspawn effectively have a fixed base type: warmongers are monstrous (extra health, damage and 2 aux attacks); blood saints are infernal (rF+++, +3 AC and AF_FIRE attacks), black suns are gelid (rC+++, +6 AC and SInv), and corrupters are torturous (rN+++, +3 EV and 1 aux attack). They also all gain increased willpower, since previously classed demonspawn were (presumably unintentionally) inheriting the reduced willpower of their base type. The old separate base/job tiles have been updated and merged together by wormsofcan. Demonspawn bands are adjusted to contain a single greater demon and 1-2 other classed demonspawn. -------------------------------------------------------------------------------- 249bb1af34 | advil | 2021-10-04 17:30:12 -0400 fix: use correct keymap context for level maps (Nasst) This seems to have gotten lost in translation when this view was widgetified in 08ff59a6b337511f. I guess that indicates how much people actually use this feature. -------------------------------------------------------------------------------- 0edeeca3e2 | Kate | 2021-10-04 21:44:41 +0100 Tweak Call of Chaos effects again Move berserk to the list of rare "backfire" effects, since allied monsters are often spell-based, and the positive effects can already apply haste and might separately (but it's fun to have at least some chance of sending nearby demons berserk). -------------------------------------------------------------------------------- 9b3319b32b | Nicholas Feinberg | 2021-10-04 12:58:16 -0700 Don't let wandering monsters break doors Reduce ambient noise. -------------------------------------------------------------------------------- 992ecb606c | Nicholas Feinberg | 2021-10-04 12:55:12 -0700 Break doors less often To reduce incidental noise. 1/5 instead of 1/3 chance. -------------------------------------------------------------------------------- 388b075d1f | gammafunk | 2021-10-04 12:07:40 -0500 feat: Ghost vault adjustments This commit expands the placement of a number of ghost vaults, allowing them to place in Vaults as ghost vault rooms, and in some cases allowing them to place in additional branches. It also adjusts monster and loot placement for a few vaults. List of changes by vault: hellmonk_ghost_happy_afterlife: Allow this vault to place in all branches. It's pretty general, hence good to have in the set of simple ghost vaults that can place everywhere. Replace the second potion with a scroll. The former was itself a replacement for the removed ration, and while two potions works fine thematically, so does the idea of having good reading material for the afterlife. More loot variety is also nice. nzn_ghost_randoct: Allow this vault to place in Vaults. Also revamp its use of monster statues to consistently have a chance to place a relevant statue everywhere it places. Use orange crystal statues for later depths and retain its use of ice statue or oklob for Lair and earlier Dungeon. Make the use of branch-specific "boss" monsters more consistent in terms of how those are used along with multiple ghosts, so that we always have the chance to have up to three ghosts, instead of this limit being lower for some of the later placement depths. Refactor some of its conditional code. gammafunk_ghost_necromancy: Tweak its monster placement NSUBST to place more at minimum, but with the same average and clean up a few monster lists to pose a better threat for certain branches. gammafunk_ghost_ooze: Allow it to place also in Elf, Vaults, Depths, and Zot, choosing an appropriate slime distribution for each branch. Mix in some of the debuffing eye monsters. This vault began with a specific "death" theme using nothing worse than death oozes, but those are gone, so just go with the more general theme of Slime Pits monsters. gammafunk_ghost_mausoleum: Allow it to place also in Spider and Vaults, using appropriate undead for those branches. Tweak the Zot derived undead list to use only a few choice monsters. biasface_ghost_orc_armoury: Add two good potion or scroll loot items that places sometimes for D:14-15 and always for Vaults. gammafunk_ghost_smash: Allow it to place also in Vaults and Depths. Rework the good weapon equipment of the highest tier monsters to sometimes include giant (spiked) clubs. Introduce fire giants, frost giant, ironheart thundehulks, and iron giants, using them appropriately in the later placement Depths. gammafunk_ghost_wrathful_warriors: Allow it to place in Vaults. Tweak the monster equipment so that ranged weapons aren't used, since Trog no longer gifts launchers/ammo. Tweak monster lists to remove ranged-specific monsters. gammafunk_ghost_abyssal_escape: Allow it to place in Vaults. Improve the equipment given to certain distortion wielding monsters. Remove the Ring of the Hare as a potential loot item, as it now has no translocations theme. Remove trees from vault border, so it can't be broken into trivially. Mark the vault as `transparent` with the inner portions appropriately masked as `opaque`. hellmonk_ghost_big_iron: Allow it to place in Vaults and Crypt. Add some intermediate upgrading of hat quality. -------------------------------------------------------------------------------- 08eb9380c9 | gammafunk | 2021-10-04 12:05:03 -0500 feat: Improve a monster weapon selection function The function `dgn.monster_weapon` is used to give vault monsters higher quality weapons appropriate to their function. Add one-handed and two-handed classes for "warrior" and "knight" to allow vaults using this function to specify the handedness of the desired weapon. This is useful when when the original monster always recieves a weapon of a specific handedness, e.g. tengu monsters always have a buckler and ancient champions always use a two-hander. Update a few ghost vaults to use these new classes where appropriate. -------------------------------------------------------------------------------- 17de5e62ec | gammafunk | 2021-10-04 12:04:45 -0500 feat: Simplify Vaults branch ghost vaults Currently for ghost vaults in the Vaults branch, we maintain separate copies of existing vaults. This was done because Vaults branch ghost vaults must be defined as so-called vault rooms that have special tagging and, in some cases, changes to layout relative to the original ghost vault. However in all cases this wasn't actually necessary, since the original vault could have relatively minor modifications allowing it to be uses as-is in both branches. This commit merges the Vaults branch vaults back into the original vaults, mainly by copying over any Vaults-specific monster and loot definitions and by generalizing the ghost vault setup code to do any required Vaults branch tagging and setup. We remove the `vaults_ghost_setup()` function, and modify `ghost_setup()` to have a boolean argument that performs any setup related to the Vaults branch when the argument is true. We also modify the terrain of these vaults to give more spacing near areas that could create single square corridors should the vault place as a Vaults room. In some cases this just adds a row of floor near the vault entrance, but other vaults need an addition border of floor to surround the entire vault. Transporter vaults are now marked `passable` (for Vaults) and `transparent` with relevant sections masked with `opaque`. The transparent/opaque masking isn't required, but helps the layout code properly determine the vault's connectivity. The ghost vault setup function is now documented. The ghost vault guidelines will be updated in the future. -------------------------------------------------------------------------------- d048e4c10b | gammafunk | 2021-10-04 06:55:55 -0500 fix: Rework the border of a ghost vault In ebering_ghost_funeral_grove, the vault border is made of trees with a destruction veto. This isn't revealed to players except when they attempt to destroy the tree, which is spoilery. Additionally it has odd gameplay side effects with respect to certain spell effects. This commit adds a border of stone to the vault, retaining the use of trees for the vault's interior, and removes the tree destruction veto. The vault's theme still very much comes across with this change. -------------------------------------------------------------------------------- afb812fb24 | gammafunk | 2021-10-04 06:55:55 -0500 feat: Move a Shoals-only ghost vault to shoals.des Part of a forthcoming reorganization of ghost vaults. Now dat/des/variable/ghost.des is for ghost vaults that place in multiple branches. Similarly to how we handle other vaults, any ghost vaults that place in only one non-Dungeon/Depths branch go in the respective branch file. -------------------------------------------------------------------------------- 9f6c0e134a | Kate | 2021-10-04 03:12:00 +0100 Simplify Call of Chaos Greatly reduce the number of effects it can apply, to slightly reduce the interface burden of having to check lots of monsters for different status effects. -------------------------------------------------------------------------------- aa1e17a07e | Kate | 2021-10-04 03:09:31 +0100 Adjust Plane Rend and Forceful Invitation Tweak both branch-based summoning spells to be more distinct and to summon better threats. Remove Lair and Orc as options from Forceful Invitation, remove all the Lair branches from Plane Rend to focus it on the deeper branches, and adjust a number of the summon sets for both spells. -------------------------------------------------------------------------------- 8e0189d5dd | Kate | 2021-10-03 23:05:21 +0100 Make Zin and TSO more effective at cleaning up blood -------------------------------------------------------------------------------- 6fc52098c6 | Kate | 2021-10-03 22:08:30 +0100 Reword an unequip message -------------------------------------------------------------------------------- cf4520f741 | Kate | 2021-10-03 22:03:23 +0100 Disable more unrand-created allies when allies are forbidden So that reaping from Zonguldrok and demons from the obsidian axe are consistently blocked under both Ru's Sacrifice Love and Okawaru's no-allies conduct. -------------------------------------------------------------------------------- 20facfdd61 | Nicholas Feinberg | 2021-10-03 09:44:27 -0700 Disable Zonguldrok reaping under Oka (dilly) -------------------------------------------------------------------------------- 333b8329f1 | Nicholas Feinberg | 2021-10-02 20:35:27 -0700 Re-randomize energy temporarily While we continue discussion. We'll hopefully remove it again in a little bit. Reverts c20955654e95f046d01c06ff82ebef2e971ceded. -------------------------------------------------------------------------------- d698ae2ba6 | Nicholas Feinberg | 2021-10-02 20:00:55 -0700 Clarify Battlesphere description (kab) -------------------------------------------------------------------------------- c2ca4e2432 | Nicholas Feinberg | 2021-10-02 16:33:20 -0700 Refactoring -------------------------------------------------------------------------------- bdb9d174a4 | Nicholas Feinberg | 2021-10-02 13:46:38 -0700 Break doors In certain circumstances, it's possible for players to door-dance, repeatedly closing doors in the face of an enemy who then opens the door, etc. This allows the player time to heal and gives a decent chance the enemy will simply forget about them. There's already a chance for doors to creak, creating noise, but this has a very limited impact on the tactic. To weaken this somewhat (in context of recent changes to random energy), give a 1/3 chance of doors breaking whenever monsters open them. This turns them into 'broken doors', which can be re-locked by vault wardens but are otherwise useless. (If we simply destroyed the doors, players would be incentivized to repeatedly open doors until they broke in some circumstances in Vaults, to mitigate vault wardens.) This should have fairly little impact on most players, but it sure was a pain in the butt to make crude sprites for. -------------------------------------------------------------------------------- c20955654e | Nicholas Feinberg | 2021-10-02 13:46:38 -0700 Remove random energy Random energy has a long and dismal history. It was invented as a means to discourage repetitive and boring play patterns (pillar-dancing, door-dancing, break-dancing, etc), but signally failed to do so. Instead, it obfuscated game mechanics, added situations that felt 'unfair', and generally kludged everything up. It was a bold experiment, but it's been clear for many years now that it's failed. Let's move on. -------------------------------------------------------------------------------- 0594cd7a83 | Kate | 2021-10-02 18:17:59 +0100 Prompt when trying to Drain Life with no valid targets This could probably use a proper targeter, too. -------------------------------------------------------------------------------- f117bdfcbe | Kate | 2021-10-02 17:54:14 +0100 Fix Drain Life tracer -------------------------------------------------------------------------------- 36912a808a | Kate | 2021-10-02 17:46:23 +0100 Fix Drain Life working on firewood -------------------------------------------------------------------------------- 98e7288b7f | Nicholas Feinberg | 2021-10-02 09:42:27 -0700 Fix piercing allies (dilly) 98ec5579a34455a245d inadvertently disabled piercing for all allies with beam-type attacks (lightning spires, merfolk javelineers, etc). -------------------------------------------------------------------------------- a2639ab843 | Nicholas Feinberg | 2021-10-01 17:00:07 -0700 Power up a leggy boy (Sastreii) New Gloorx Vloq tile. Did you know that Gloorx had spooky shadow shoulder tendrils this whole time? I didn't! -------------------------------------------------------------------------------- b15b5f7f7d | Kate | 2021-10-02 00:13:08 +0100 Adjust some demon resistances Remove rPois from hell hounds, as with all the other demons that are closely related to living creatures, and give hell hogs fire immunity. -------------------------------------------------------------------------------- 717728bcc0 | Nicholas Feinberg | 2021-10-01 09:17:22 -0700 Restore treeform rTorm Broken by 662dcd36ddf41f5a366a00f7f19567d347cff114 . See comment about some issues here. -------------------------------------------------------------------------------- b193047a1f | Kate | 2021-10-01 01:57:06 +0100 Tweak wording -------------------------------------------------------------------------------- 6b7ffc0d7b | Kate | 2021-10-01 01:46:25 +0100 Fix Pacification working on sleeping undead Caused by 70bc44f8 changing the pacification check to look specifically for the "sleeping" status (applied to natural, holy and demonic monsters), but not the "dormant" status (applied to undead, nonliving and plant monsters). -------------------------------------------------------------------------------- 738fa26ca9 | Kate | 2021-10-01 01:46:25 +0100 Improve Pacification failure messaging -------------------------------------------------------------------------------- d1ff7b2e8d | Kate | 2021-10-01 01:46:25 +0100 Make Elyvilon care about plants Lets Elyvilon lifesaving work on plant allies, and lets Pacification work on intelligent plants - most plants are mindless so still can't be affected, but thorn hunters (animal intelligence) and shambling mangroves (human intelligence) can now be pacified. -------------------------------------------------------------------------------- 399c192ba0 | Kate | 2021-10-01 01:39:43 +0100 Don't consider worshippers of good gods as innately holy beings Separates out checks that should care about innate holiness (obtainable only by being a literal angel, daeva etc) from things that should care about whether something is merely a priest of a good god. Fixes some theoretical weird edge cases such as nonliving monsters being also considered holy if they worship a good god and for example, losing their innate fear immunity as a result. Ideally mon_holy_type should be further simplified and every monster (and the player) would innately fall into exactly one holiness category, with the MH_EVIL flag being separated out and handled elsewhere. -------------------------------------------------------------------------------- b600878595 | Kate | 2021-10-01 01:39:43 +0100 Remove holiness restrictions from Intoxication and spores The other existing limits on these abilities still make sense without them them being usable on natural holiness only, so remove the holiness restriction and make them a little more flexible. Alistair's Intoxication now affects any intelligent monster that isn't poison-immune, so can now affect many demons and holies, and intelligent plants (which is currently only shambling mangroves), although these mostly do have poison resistance so are harder to affect. Spore explosions are now able to affect demons and holies, and still don't affect unbreathing monsters (undead, nonliving, and plants). -------------------------------------------------------------------------------- 662dcd36dd | Kate | 2021-10-01 01:39:38 +0100 Don't give plant holiness monsters innate rN+++ Since plants are now a set of actual monsters instead of only decoration, it feels odd that they're living creatures but can't be affected by draining or negative energy. Remove their innate rN+++, but keep their torment immunity (since it makes more sense that pain-flavoured effects wouldn't work). Other draining-flavoured effects that previously only worked on natural monsters now work on plants, too - including Scythe of Curses miscasts, vampiricism, and Ghoul health-on-kills. Withered plants in Crypt/Tomb keep their rN+++. Firewood in particular remains unaffected by vampiricism, to prevent decorative plants being available for free healing. -------------------------------------------------------------------------------- 070a2a64fb | Kate | 2021-10-01 01:25:43 +0100 Allow demons and holies to be feared/berserked As part of an effort to reduce the number of effects that are restricted to natural monsters only, to increase some of the distinctions between undead/demonic/nonliving holinesses, and to allow some more flavourful interactions. Lore-wise, demons and holies are supposed to be of similar stock aside from their god alignment, so are grouped together here. They're also established to be like living creatures in a number of ways - they're generally intelligent, can be poisoned, and have souls, so it feels appropriate for them to feel emotions in some way and be able to go berserk and be feared. (Importantly this also allows the zealot's sword to send divine allies berserk, for any TSO worshippers who happen to find it.) -------------------------------------------------------------------------------- 2d0446b249 | Kate | 2021-10-01 01:21:04 +0100 Display torment immunity in monster descriptions Since it's separate from negative energy resistance/immunity. -------------------------------------------------------------------------------- 575fbe42a6 | Kate | 2021-10-01 01:21:04 +0100 Let frenzy apply haste/might to all affected creatures Previously it could affect creatures of any holiness, but only natural holiness creatures were hasted/mighted. Instead make it work the same way on any affected creature. -------------------------------------------------------------------------------- 544b704789 | Kate | 2021-10-01 01:21:04 +0100 Simplify mass enchantment handling Remove a lot of old code for now-unused mass enchantments, and some old assumptions about what can be affected. Should also fix messaging around firewood when using a scroll of fear. This could still use some more substantial refactoring ideally! -------------------------------------------------------------------------------- 5885fe61e5 | Kate | 2021-10-01 01:21:04 +0100 Rebrace -------------------------------------------------------------------------------- 7719699fd9 | Nicholas Feinberg | 2021-09-30 07:54:26 -0700 Upgrade ghost sewer tiles -------------------------------------------------------------------------------- d7573fbb20 | Nicholas Feinberg | 2021-09-30 07:50:38 -0700 Fix sewer entry c tiles (12653, Majang) Broken in 115e938b4e1d6. -------------------------------------------------------------------------------- f77a47075d | Nicholas Feinberg | 2021-09-28 20:05:50 -0700 A few more minor doc fixes -------------------------------------------------------------------------------- 911e869b65 | Nicholas Feinberg | 2021-09-28 20:03:24 -0700 Update background creation guide -------------------------------------------------------------------------------- c72452776e | Santiago Agustín Acosta | 2021-09-28 13:29:05 -0400 feat: improve archer description (#2164) Improves the description given for for monsters bonus damage in 619f226: the goal is to make it easier for the player to understand what damage will be gone if they get the monster to stop attacking with ranged weaponry, and to convey the damage bonus for thrown ammo as well as launched. [commiter's note: light commit message edits] -------------------------------------------------------------------------------- 173413878b | Nicholas Feinberg | 2021-09-28 08:29:57 -0700 Clarify *Rage desc (kate) -------------------------------------------------------------------------------- fb8421d2c4 | Nicholas Feinberg | 2021-09-28 08:04:35 -0700 Revert: "Revert "fix: Clarity once again blocks *Rage"" Now that Chei doesn't give penance for getting mad, but instead only gets even (see 2dc4ca50970f), we can once again treat berserkitis and artefact rage as unintentional and let Clarity prevent it properly. This matches player intuition ('clear thoughts' do seem like they should prevent gettin real salty). Balance implications should be minimal. Reverts 35c06b56. -------------------------------------------------------------------------------- 619f226d55 | Nicholas Feinberg | 2021-09-28 07:42:08 -0700 Describe archer bonus damage When a monster with the archer flag is wielding a ranged weapon, show the bonus damage it gets from that in its description. -------------------------------------------------------------------------------- aa5fe0c46d | Nicholas Feinberg | 2021-09-27 21:42:46 -0700 Make shard shrikes battify after shooting The design intent was always for these lil guys to wander off after hitting OR shooting, but I never bothered checking to see if it actually worked. It didn't! But now it will. This is probably a minor nerf, since they'll spend a couple turns wandering around instead of hitting or shooting after they shoot you. If players think they're too weak now, something can be arranged. -------------------------------------------------------------------------------- ab23d0e057 | Nicholas Feinberg | 2021-09-27 21:22:20 -0700 Consider *Rage a bad prop Randomly berserking is very likely to get you killed. It is funny, though. -------------------------------------------------------------------------------- 4a18f0a723 | Nicholas Feinberg | 2021-09-27 21:21:37 -0700 Actually really remove +Rage It was 'removed' but was still generating on randarts, resulting in randarts with few or no props. -------------------------------------------------------------------------------- 4214526f7d | Kate | 2021-09-28 02:17:04 +0100 Rebrace -------------------------------------------------------------------------------- 9c95886402 | Kate | 2021-09-28 02:16:23 +0100 Don't place shafts in the Abyss with Rising Flame -------------------------------------------------------------------------------- 3153ac1ab2 | Kate | 2021-09-28 02:16:02 +0100 Cancel Rising Flame on abandoning Ignis -------------------------------------------------------------------------------- 18fa513841 | Kate | 2021-09-28 02:14:24 +0100 Mark amulets of faith as useless under Ignis Since they have no effect. Also de-duplicate the code handling this. -------------------------------------------------------------------------------- 5d3631ad8e | Kate | 2021-09-28 00:43:42 +0100 Fix spectators having the wrong species -------------------------------------------------------------------------------- 34f850c0d2 | Kate | 2021-09-28 00:17:16 +0100 Make Okawaru Arena spectators into real monsters Rather than vault renames of humans. Doing so allows fixing a few edge cases - they have no attacks and give no XP, and can no longer be recalled into duels by convokers, they're given higher HD so that they're more likely to notice that a duel is happening if the player is very stealthy, and they no longer appear in the monster list. -------------------------------------------------------------------------------- 0384439e04 | Kate | 2021-09-27 22:58:34 +0100 Spread out *Rage's randart weight slightly With the removal of evokable berserk, *Rage had quite a high weight compared to other negative properties - instead spread out a bit of its weight to *Noise and Fragile. -------------------------------------------------------------------------------- b1a8950f57 | Kate | 2021-09-27 19:13:53 +0100 Reglyph some snakes and eels Move eels off ; and onto S, since they were the only remaining monster using ; as the ancient "fish/water monster" glyph (and this frees up ; for walking tomes). To make room for eels and also to improve visibility of some other monsters, also shuffle around some colours: Electric eel: lightblue ; -> lightcyan S Sea snake: lightcyan S -> lightred S (for better visibility in water) Lava snake: lightred S -> yellow S (for better visibility in lava) -------------------------------------------------------------------------------- 7ee5da7d44 | Kate | 2021-09-27 19:13:53 +0100 Replace a hardcoded number with its #define -------------------------------------------------------------------------------- 5a15c83aae | Kate | 2021-09-27 19:10:44 +0100 Display some attack flavours in the monster list Specifically reaching, constriction and trample - chosen because they're the three attack flavours that carry over to derived undead, and getting information on which zombie out of a group of zombies has a certain attack flavour is very awkward. For other attack flavours, players can at least be sure that a certain tile or glyph represents one specific monster and so will have one specific set of attack flavours, whereas derived undead are only distinguished by size in console or body shape/genus in tiles, which isn't sufficient to communicate what they can actually do. Other ideas on how to better display this information would be welcome, since this change on its own isn't enough to properly address the problem. -------------------------------------------------------------------------------- 207b005307 | nicolae-carpathia | 2021-09-27 08:17:00 -0400 Make edits to some vaults based on comments Made some changes based on ebering's comments: nicolae_coc_kraken_the_ice: change kraken undead to just simulacra nicolae_coc_caroushell: set WEIGHT to 2 nicolae_coc_on_the_berg: mark fog machine origins with shallow water nicolae_coc_wendigon: add { nicolae_geh_tyrants_menagerie: remove hell hounds and narguns nicolae_hells_demon_pit: branch conditions for demons nicolae_hells_seeping_fissure: branch conditions for cloud types nicolae_hells_slight_mixup: remove mismatched weapons, renamed to nicolae_hells_giants_party, made it oriented centre nicolae_tar_fifth_circle: chance to place toxic bog instead of W -------------------------------------------------------------------------------- ff8c9aff81 | nicolae-carpathia | 2021-09-27 08:17:00 -0400 Add Gehenna lava maze vault This vault has enough subvaults that I gave it its own file. I think this makes three files in /branches/ just for my own vaults. Also there's a checkwhite in here somewhere. -------------------------------------------------------------------------------- 40b5bdf05a | nicolae-carpathia | 2021-09-27 08:17:00 -0400 Move multi-Hell vaults to their own file Move vaults that are intended to place in multiple Hells into their own file in /dat/branches/, called hells.des. -------------------------------------------------------------------------------- c41377e160 | nicolae-carpathia | 2021-09-27 08:17:00 -0400 Add new vaults to Tartarus new vaults. decor. encompass. monsteriferous. somehow, my willpower to write this commit has been halved... -------------------------------------------------------------------------------- 4fe6ac43cf | nicolae-carpathia | 2021-09-27 08:17:00 -0400 Add new vaults to Cocytus As before: cool new vaults of all kinds for the smaller new Cocytus. -------------------------------------------------------------------------------- 1f62ee5ebf | nicolae-carpathia | 2021-09-27 08:17:00 -0400 Add new vaults to Gehenna Like the previous commit, a selection of decor, monsteriferous, and encompass vaults for the new, smaller Gehenna layouts. -------------------------------------------------------------------------------- 5ae6719378 | nicolae-carpathia | 2021-09-27 08:17:00 -0400 Add new vaults to Dis New vaults for Dis, designed to work with the new monsters and smaller level layouts. Decor, monsteriferous, and encompass vaults are all here. -------------------------------------------------------------------------------- 3bccd9ccbf | Neil Moore | 2021-09-26 18:19:18 -0400 Minor changelog fixes [skip ci] -------------------------------------------------------------------------------- 4f1c8046e5 | David Damerell | 2021-09-26 13:53:42 -0500 Recite to the correct group (12652) Commit 5f4c38d67a61b9ac2c9eef99dcee94b507b00502 changed the ordering of items in enum recite_type but did not notice the choice of sinners, sins, and virtues in zin_recite_text() is dependent on this to, say, complain about amorphous wretches in a RECITE_CHAOTIC. [ Committer's note: thanks to stoat soup for the patch ] -------------------------------------------------------------------------------- 6f645e4c1d | Nicholas Feinberg | 2021-09-25 22:00:09 -0700 Rev up yaktaur tiles (Sastreii) New Revenant, Yaktaur & Yaktaur Captain tiles. You would not believe how much discussion there was about the revenant. LRD is a divisive subject... -------------------------------------------------------------------------------- 4b64996d49 | Nicholas Feinberg | 2021-09-25 21:55:30 -0700 Have ice statue, will travel (railbird80) Don't claim that stationary monsters can travel through anything, regardless of their habitat. Arguably I should still display their habitat and use a different word in place of 'travel', but I have a hard time imaginging when it would matter. -------------------------------------------------------------------------------- 9f97627e2a | Kate | 2021-09-24 22:12:40 +0100 Move revenants from L to z Since they're actual real spooky skeletons and can be affected by LRD, move them to the glyph specifically for skeletons. Also tweak their description to make this a little clearer. -------------------------------------------------------------------------------- 4d8ae7cab5 | Kate | 2021-09-24 22:12:40 +0100 Update some LRD colours Match the monster colour directly for a few crystal monsters that had different explosion colours. -------------------------------------------------------------------------------- 8885160007 | Kate | 2021-09-24 22:12:40 +0100 Give curse toes their own genus It's funny for them to be technically liches, but not actually good for the the theoretical case of a curse toe and a ton of liches coming into view, which would previously have grouped them all together into a single "comes into view" message. -------------------------------------------------------------------------------- af8216a34e | Edgar A. Bering IV | 2021-09-24 15:31:23 -0500 fix: correctly display and apply Dis corrosion -------------------------------------------------------------------------------- 3bad584f25 | advil | 2021-09-23 18:06:04 -0400 tile: octagonal wizmode ability tiles from Sastreii -------------------------------------------------------------------------------- 4b98be1b05 | Nicholas Feinberg | 2021-09-23 13:35:56 -0700 Buff walking tome XP Put em somewhere around lichen and titans, to match their intended threat level. -------------------------------------------------------------------------------- c9a36226f5 | advil | 2021-09-23 15:09:03 -0400 fix: tiles for wizmode terrain abilities Apparently people don't like question marks in their GUI. These break the octagonal ability tile convention, sorry. If someone has interest in making these into octagons, feel free. -------------------------------------------------------------------------------- f8e193620d | Edgar A. Bering IV | 2021-09-23 11:23:08 -0500 doc: update the changelog through 0.28-a0-524-g197395d739 -------------------------------------------------------------------------------- f0617a802e | Nicholas Feinberg | 2021-09-23 09:21:57 -0700 Fix a goofy message -------------------------------------------------------------------------------- 197395d739 | Nicholas Feinberg | 2021-09-23 09:06:12 -0700 Describe quicksilver bolt effects In the spell description. -------------------------------------------------------------------------------- 0e5110bbff | Nicholas Feinberg | 2021-09-23 08:34:33 -0700 Make Tiamat's tile more visible (Sastreii) "I'm a god. How can you kill a god? What a grand and intoxicating innocence..." Also change her to SIZE_LARGE to match her new tile. -------------------------------------------------------------------------------- 4794fbc64e | Nicholas Feinberg | 2021-09-23 08:30:00 -0700 Galvanize Sastreii's Monster Often incorrectly called just 'Sastreii'. -------------------------------------------------------------------------------- 115e938b4e | Nicholas Feinberg | 2021-09-23 08:12:54 -0700 Use new sewer tiles for sewer entrances This is information asymmetry between tiles and console, but it looks really cool. (Plus, ossuary entrances already do the same thing.) -------------------------------------------------------------------------------- fb1784a141 | Nicholas Feinberg | 2021-09-23 08:03:50 -0700 Hack: fix threat values 2eadbcdadce4 made late-game monsters worth much less XP, which made the game count them as unthreatening. This is unsound. Revert to the historical threat values. -------------------------------------------------------------------------------- bfeecf2fc5 | Kate | 2021-09-22 23:17:53 +0100 Give Blinkbolt a fixed LOS casting range It previously had a variable range based on power (copied directly from Lightning Bolt), but this was almost never actually relevant in practice - raiju and spark wasps always cast it at range 7, Storm Form would almost always have either 6 or 7 range for any character reasonably capable of casting it, and beasts from the box of beasts would almost always have range 7 except at extremely low power. Instead of keeping these barely noticeable range variations, simplify the ability and allow it to always be cast at full LOS range. -------------------------------------------------------------------------------- 36894cfc38 | Nicholas Feinberg | 2021-09-22 11:08:35 -0700 Nerf divine living tomes Drop them from 3-5 living spells per cast to 2-3, same as other tomes. Also fix descriptions for all living tomes being nondeterministic. -------------------------------------------------------------------------------- 4d5786efa1 | Nicholas Feinberg | 2021-09-22 08:59:59 -0700 Reduce javelin/boomerang generation Throwing weapons are intended to be an auxiliary tool for players to use tactically, not a primary 'killdudes' mechanism. They have LOS range and strong damage, so it's very important that there is a limited supply of these weapons. Shoals in particular broke this assumption. Javelineer bands provided huge numbers of javelins and boomerangs. Shoals generated more javelins than the rest of an average 3-rune game put together (!), and nearly as many boomerangs. Now that monsters have unlimited ammo, reduce most monsters' ammo generation considerably, along with a small tweak downward for random ammo stacks. This should help keep ammo limitations relevant for a 3-rune game. Urug and the Minotaur still get big javelin stacks, since that's their special thing. -------------------------------------------------------------------------------- 5a36c9af25 | Nicholas Feinberg | 2021-09-22 08:36:50 -0700 Brighten up husks' disposition Increase contrast vs swamp floor tiles. -------------------------------------------------------------------------------- c05233ca19 | advil | 2021-09-22 09:07:26 -0400 fix: add some numpad bindings for the skill menu Webtiles/console only (where the latter is extremely variable depending on TERM settings, as usual). Resolves #2117 -------------------------------------------------------------------------------- 0d7ab7f379 | Nicholas Feinberg | 2021-09-21 16:32:20 -0700 An immobile stone gathers much moss (Sastreii) New stone wall tiles for Swamp and Sewer. -------------------------------------------------------------------------------- 47465dbb04 | Nicholas Feinberg | 2021-09-21 16:22:53 -0700 Tweak orc weapon offsets again (ardl, gammafunk) -------------------------------------------------------------------------------- 960c72b710 | advil | 2021-09-21 10:27:04 -0400 fix: clean up failed crawl processes correctly in webtiles I think this should fix the lobby in scenarios we see where something goes very wrong with the webtiles server and the lobby ends up looking like there are many duplicate games. What was happening is that if an exception prevents the crawl process from starting altogether, the cleanup code was also throwing an exception on this first logging call because self.process was None. This prevented the inprogress file from getting removed, and the webserver's ongoing game table from getting cleaned up. This will unfortunately make it *harder* to see when a webtiles server is completely borked, so possibly something should be done about that. I did add an error message to the player when this happens. (In the process of adding this, I attempted to alleviate a race condition that was preventing exit dialogs from being shown when a process never started. Hopefully I did so correctly. Basically, multiple go_lobby messages in close timing will wipe out an exit dialog if it's already been shown.) -------------------------------------------------------------------------------- cc94558de3 | Nicholas Feinberg | 2021-09-20 21:35:55 -0700 Reduce delay for top-end twohanders It takes a ludicrous amount of XP to reach extremely high weapon skill in Dungeon Crawl, which made the rare top-end weapons (executioner's axes, lochaber axes and triple swords) hard to justify using. These are intended to be very exciting items, so it's sad that they ended up being 'traps' even for most characters that are interested in using their weapon type! In combination with the earlier XP curve changes, reducing delay by 1 aut each should hopefully make these weapons more viable for use in 3-rune games. New skill to mindelay: - Executioner's axe: 24 (was 26) - Bardiche: 24 (was 26) - Sword sword sword: 22 (was 24) -------------------------------------------------------------------------------- 2e89a317aa | AdamPG | 2021-09-20 21:35:55 -0700 Reduce the experience cost of high-level skills The cost of increasing a skill from 20 to 27 was more than the cost of increasing a skill from 0 to 20, making training extremely high level skills (e.g. for level 9 spells or slow two-handed weapons) a poor investment for most of the game. This commit makes the implicit quadratic-with-break-point formula explicit, and divides the break point contributions to skill costs above level 9 by 2. This has the following implications: * Skill costs up to level 9 are unaffected; * The new cost of skill level 15 is half-way between the old costs of level 14 and 15; * The new cost of skill level 20 is approximately the same as the old cost of skill level 19; * The new cost of skill level 27 is approximately the same as the old cost of skill level 25; * The decreases in costs are roughly equivalent to a +1 increase in aptitude by skill level 23, and the impact is always smaller than a +2 increase in aptitude. [Committer's note: code refactored.] Closes #1733. -------------------------------------------------------------------------------- 2eadbcdadc | Nicholas Feinberg | 2021-09-20 21:34:01 -0700 Cut late-game XP This commit reduces the total XP in a 3-rune game by about 20%, overwhelmingly concentrated in late-game areas. D and Lair are almost unchanged, while Zot loses about a third of its XP, for example. This should help compensate for impending apt changes, and also generally help with the late-game difficulty slump. -------------------------------------------------------------------------------- 902bb890a6 | Nicholas Feinberg | 2021-09-20 17:31:10 -0700 Flush some good art right down the toilet Repurpose last commit's Swamp wall tiles for Sewer. -------------------------------------------------------------------------------- c9b6b5e602 | Nicholas Feinberg | 2021-09-20 16:54:56 -0700 New Sastreii tiles (bloated husk etc) Also included are some Swamp tiles, but those are currently unused - I'm not sure what the best place to put them is. Maybe they should replace the existing rock tiles? -------------------------------------------------------------------------------- 9ecc6377bc | Nicholas Feinberg | 2021-09-20 16:46:12 -0700 Update battlesphere description (ardl) -------------------------------------------------------------------------------- 2d6a64c10f | Nicholas Feinberg | 2021-09-20 16:46:12 -0700 Fix Gozag player ghost speech (Spaninq) Oops! -------------------------------------------------------------------------------- f79e20f00e | Nicholas Feinberg | 2021-09-20 16:46:12 -0700 Fix Sting effect tile (spaninq) Oops! -------------------------------------------------------------------------------- 83f2989fac | Kate | 2021-09-20 02:14:13 +0100 Fix crashes when attempting to leave Zot For games where Depths was generated in a broken version, fix up the branch entry location for Zot and hopefully allow leaving the Zot again without crashing. -------------------------------------------------------------------------------- 6c43a8f463 | Implojin | 2021-09-19 21:46:17 +0100 fix: allow unrand air enhancer stacking (#2134) e08c5e17fd added an air enhancer to the amulet of the air, but unlike the rest of the spell enhancers in the game, it didn't permit stacking this with the elemental staff. This looks to me like an oversight rather than a balance issue, (especially given that you could still stack the amulet with a vanilla staff of air), so here's a fix. -------------------------------------------------------------------------------- eef7685dc3 | Implojin | 2021-09-19 21:45:30 +0100 Fix missing MUT_NOISE_DAMPENING punctuation (#2141) -------------------------------------------------------------------------------- 121bc3e445 | advil | 2021-09-19 12:32:23 -0400 fix: branch entry depths for zot and zigs This will ensure that zot entry actually generates. (I think it may also cause a fix up for any games without it on depths 4? Not sure.) -------------------------------------------------------------------------------- 516edc7163 | advil | 2021-09-19 11:35:43 -0400 test: tweak a bunch of CI test output * Remove the rng test, I think this is no longer needed * Apply some indents in a few cases * Remove most of the vault-related output; hopefully the failing seed number will be enough if this trips. This level of output was really from back when this test often failed. -------------------------------------------------------------------------------- 203a4d6027 | advil | 2021-09-19 11:35:34 -0400 fix: further update unique tests for shallower depths -------------------------------------------------------------------------------- 8b1ebaf2f3 | Nicholas Feinberg | 2021-09-19 08:17:04 -0700 ...fix the build? -------------------------------------------------------------------------------- 613524ee8a | Nicholas Feinberg | 2021-09-19 07:56:32 -0700 Shift orc weapons 1px left Feels better with their new beefy look. -------------------------------------------------------------------------------- 9bb89235eb | advil | 2021-09-19 10:33:11 -0400 fix: update fixup for depths portals to new values Also, comment on the code duplication. -------------------------------------------------------------------------------- e2d2658822 | Nicholas Feinberg | 2021-09-18 21:37:11 -0700 Fix the build Oops -------------------------------------------------------------------------------- 98ec5579a3 | Nicholas Feinberg | 2021-09-18 21:34:48 -0700 Make allies avoid shooting you (Torax) Use aimed_at_spot to have allies avoid hitting the player when they miss their actual target. Keep enemy & neutral behavior the same. It seems polite. -------------------------------------------------------------------------------- 3d4abc6862 | Nicholas Feinberg | 2021-09-18 21:09:52 -0700 Switch Sting back to its old tile The poison arrow is way too big and fancy for a level 1 spell. Partially reverts 3cb921fa598. -------------------------------------------------------------------------------- c732d1d4b8 | Nicholas Feinberg | 2021-09-18 21:06:04 -0700 Make Abyssal Knights a bit dumber Move 1 int into str and 1 into dex. They're no berserkers, but they're still not particularly inclined towards spellcasting, and they're weak enough that we might as will give them some slightly better suited stats. -------------------------------------------------------------------------------- 3788438092 | Nicholas Feinberg | 2021-09-18 21:04:35 -0700 Remove Tukima's Dance's power boost (hellmonk) Recent changes (removing monster weapon delay, allowing Tukima's Dance to affect ranged weapons) have made the spell much more powerful. It no longer needs the power boost it got when I originally rewrote it, so... let's toss it. -------------------------------------------------------------------------------- a22a9363c6 | Nicholas Feinberg | 2021-09-18 20:59:18 -0700 Ban channeling when you can't cast (gressup) Standardize and streamline. It might be helpful to have extra messaging here when you enter one of these states while channeling - it might be too easy to miss right now. -------------------------------------------------------------------------------- 706b79e7bb | Nicholas Feinberg | 2021-09-18 20:41:13 -0700 Remove tarantellas' bite Tarantellas are a perfectly fine monster and a great name pun, but their theme is extremely misleading. If a spider bites you, you'd naturally expect rPois to protect against the effects. But that's not how tarantellas work! Instead, make their attack a 'touch'. That should hopefully make their behaviour a little more intuitive, though I expect some people will still be surprised by the pure fact of them being spiders... -------------------------------------------------------------------------------- 2322c75162 | Nicholas Feinberg | 2021-09-18 20:36:22 -0700 Fix cloud targeters (CarefulOdds) They can't actually hit stuff through transparent walls. Broken since, god, 098d46cfcc740f maybe? Not sure, honestly. -------------------------------------------------------------------------------- 6302f7b1d6 | Nicholas Feinberg | 2021-09-18 20:25:47 -0700 Remove Depths:1 (mostly) Recent changes to differentiate Depths from Vaults caused it to become considerably more intense. That's not a bad thing! But 5 straight levels of powerful intensity are a bit much. Let's draw it down to 4. Vaults have mostly been adjusted, but I'm sure I missed a few. -------------------------------------------------------------------------------- c45d5503f1 | Nicholas Feinberg | 2021-09-18 20:04:29 -0700 Clarify Conjure Living Spells desc Specify which spells a given tome will create in the spell description. -------------------------------------------------------------------------------- e8cdce0153 | Nicholas Feinberg | 2021-09-18 19:56:12 -0700 Plop walking tomes in Depths Replacing the high tier deep elves, which still have plenty of other places to show up (Elf, Vaults:5, many vaults, etc). On average, looks like you'll see about two tomes per Depths. -------------------------------------------------------------------------------- a443631078 | Nicholas Feinberg | 2021-09-18 19:42:29 -0700 Make Blink Allies Encircling drain energy (ardl) Don't let enemies hit you on the same turn they get blinked encircling around you. It seems excessively cruel to be hit by 5 guys who weren't on screen the turn before. -------------------------------------------------------------------------------- f8b08d3f47 | Nicholas Feinberg | 2021-09-18 19:42:23 -0700 Axe ironbound beastmasters Ironbound beastmasters were a whole pile of cool ideas, none of which quite panned out. - They depended very heavily on their bands, which tends to work poorly (it's pretty common for monsters to get separated) - They had some hacks to guarantee they'd only generate with bands, which broke monster queries and still didn't prevent them from getting separated. - The effects of their spell was poorly communicated to players - the energy system is a very secret under-the-hood effect, unlike e.g. haste, which has a visible effect. - They weren't tuned to the point of being very strong. (This is the most fixable issue.) There was some discussion of replacing them with a summoner that calls and berserks harpies and such, and we could still do that. For now, though, let's roll back this experiment. Partially reverts 0b001bae985. -------------------------------------------------------------------------------- ea7fc97e4c | Nicholas Feinberg | 2021-09-18 15:42:34 -0700 Give orcs a workout (Sastreii) New basic orc and orc warrior tiles. -------------------------------------------------------------------------------- 4d16425fc6 | Nicholas Feinberg | 2021-09-18 15:38:30 -0700 Add a truly thrilling trio (Sastreii) -------------------------------------------------------------------------------- 5baa6b73be | Nicholas Feinberg | 2021-09-16 19:17:31 -0700 Spider stone sprites (Sastreii) SSSS SSSS -------------------------------------------------------------------------------- b47aa1321a | Nicholas Feinberg | 2021-09-16 17:55:39 -0700 Add a truly thrilling trio (Sastreii) New tiles: zombie human, elf, and ogre.n -------------------------------------------------------------------------------- 0b43c73ce0 | Nicholas Feinberg | 2021-09-16 07:38:35 -0700 Fix Ignis invocation frames (Sastreii) -------------------------------------------------------------------------------- 0f06bd746f | Nicholas Feinberg | 2021-09-15 17:11:03 -0700 New zombie tiles (Sastreii) Lizard and large and in charge. -------------------------------------------------------------------------------- 7dc2aef8ca | Nicholas Feinberg | 2021-09-15 08:03:36 -0700 Simplify Petrifying (dilly) Don't consider petrifying creatures to be fully incapacitated. This fixes a bug in which petrifying monsters couldn't shoot or throw (though they could still cast spells, attack, etc). It also allows all petrifying (but not petrified) creatures, monsters and players, to block attacks with shields, which probably doesn't matter that much. -------------------------------------------------------------------------------- 535839065c | Nicholas Feinberg | 2021-09-14 17:37:22 -0700 Fix slime wall death message Broken in e619aef00bffaae3f811d3ff97aa9ddea2c37f07. Oops! -------------------------------------------------------------------------------- 079b763570 | Nicholas Feinberg | 2021-09-14 17:24:39 -0700 Electrify cats and calamari (Sastreii) Two new species-specific Storm Form tiles. -------------------------------------------------------------------------------- 50180c0d78 | Nicholas Feinberg | 2021-09-14 11:39:27 -0700 Storm Form player tile (Sastreii) -------------------------------------------------------------------------------- 27616f31e4 | Kate | 2021-09-14 18:26:12 +0100 Don't crash when failing to pacify nothing Targeting empty space with pacification is allowed so that invisible monsters can be pacified, but doing so still costs a turn to avoid leaking information. However if the attempt to use the ability rolled a failure, it would instead crash when targeting an empty space due to a missing fail_check(). -------------------------------------------------------------------------------- 5218f81949 | Kate | 2021-09-14 18:26:12 +0100 Adjust some randart names Remove "of Battle" to avoid overlap with the unrand, and Australianise some spelling. -------------------------------------------------------------------------------- 5de4b4396b | Edgar A. Bering IV | 2021-09-14 09:17:37 -0500 fix: give seracall its own beam name -------------------------------------------------------------------------------- e8575c7553 | Edgar A. Bering IV | 2021-09-14 09:08:26 -0500 fix: restore berserk and confusion checks for evocables (12651) The misc evokers had confusion (but not berserk) checks in their specific methods, while wands had no checks at all. -------------------------------------------------------------------------------- 103e827438 | Edgar A. Bering IV | 2021-09-14 08:11:21 -0500 feat: replace hell contam with temporary mutations In the game of one of these things is not like the other, the contam hell effect produced permanent strategic damage, the other two produced XP gated strategic damage. Contam hits a few more things other than mutations (putting a brake on miscasts and preventing invis) but the interaction with the mutation system is the noticable part in hell. At the rate we'd like to apply hell effects, however, it gets to be a bit much in terms of permanent damage. So let's try temp mutations. -------------------------------------------------------------------------------- 5e7bb1d84c | Edgar A. Bering IV | 2021-09-14 08:11:21 -0500 feat: slow down hell effects Still trying to dial these in to a good place. The larger effects less frequently make for spikes, which are more exciting (do I gamble and press on I'm almost there) than smaller more frequent attrition. -------------------------------------------------------------------------------- e2dae52223 | Nicholas Feinberg | 2021-09-13 21:06:00 -0700 Remove unthings None of these placeholder monsters exist enough to even be used in vaults. -------------------------------------------------------------------------------- 0687ed57fd | Nicholas Feinberg | 2021-09-13 12:26:56 -0700 New randart name Specifically to break formatting. -------------------------------------------------------------------------------- 941f9de75c | Nicholas Feinberg | 2021-09-13 09:14:22 -0700 Reorganize Mlio Since it no longer appears in Depths. -------------------------------------------------------------------------------- 6aa5aab5a4 | Nicholas Feinberg | 2021-09-13 07:57:04 -0700 Remove an antique "faith special case (hellmonk) If you were at 15 piety or less when you removed the amulet of faith, you wouldn't lose any piety. This was introduced in the very first commit that added "faith, 5871154a2e, and has never really had a good reason to exist. Simplify. -------------------------------------------------------------------------------- 2dc4ca5097 | Nicholas Feinberg | 2021-09-12 21:19:52 -0700 Make Chei chill out Instead of being angry at berserk rage, just turn off the haste (as Chei already did when you quaffed un-id'd !zerk). In general, there aren't a lot of situations where divine penance for actions is more fun than your god just shutting things off. This (esp in light of recent changes to e.g. zerkitis) was no exception. -------------------------------------------------------------------------------- 91930fd77e | Nicholas Feinberg | 2021-09-12 20:11:38 -0700 Walking Tome tiles (Sastreii) Book it! -------------------------------------------------------------------------------- aa0f46ea79 | Neil Moore | 2021-09-12 21:33:22 -0400 Two new splash screens by KaoNedong Licensed under CC0. Source for the images: https://www.deviantart.com/kaonedong -------------------------------------------------------------------------------- 4afc6ae9f4 | Kate | 2021-09-13 00:20:54 +0100 Fix tag_upgrade compilation -------------------------------------------------------------------------------- ce0acab4f2 | Kate | 2021-09-12 23:52:33 +0100 Replace Leech's *Rage with Harm *Rage is a fairly severe downside and means the player should expect to berserk in every combat, which heavily limits the chances of any items with it from being actually used. It's very thematic on the Wrath of Trog and necklace of Bloodlust, and the zealot's sword also has a unique (although perhaps hard-to-utilise) interaction with berserk, but the other unrands with *Rage could use different downsides to encourage still using them. The hat of the Bear Spirit could use a new idea, but for Leech, replace *Rage with Harm (and drain-on-unequip to prevent it from being freely swappable). The only other use of Harm on an unrand is the robe of Misfortune, so Leech's guaranteed vampiricism seems like a fun place to encourage trying to work around Harm's downsides. -------------------------------------------------------------------------------- cbfb7e9818 | Kate | 2021-09-12 23:52:23 +0100 Remove the Elemental Staff's Will++ Since it doesn't fit the elemental theme, and it's now a pretty strong actual weapon on top of giving out a heap of resistances. -------------------------------------------------------------------------------- b5e7e19f26 | Kate | 2021-09-12 23:25:36 +0100 Give the *Rage inscription its star back Since the * is inscription-ese for "this thing triggers some random portion of the time when x condition is met" (as with *Noise, *Slow, *Corrode). -------------------------------------------------------------------------------- 73f125ba1b | Kate | 2021-09-12 23:25:19 +0100 Remove an unused parameter -------------------------------------------------------------------------------- 0f1c06f14f | Kate | 2021-09-12 23:25:12 +0100 Fix compilation -------------------------------------------------------------------------------- 2fb25c9035 | Edgar A. Bering IV | 2021-09-12 17:10:28 -0400 feat: combine berserkitis and item Rage The separate displays and (slightly) separate semantics for "go berserk on melee hit" confounded the issue, especially since berserkitis' chances are so small at low levels. This commit changes berserkitis to simply grant angry percentage points, identical to other sources of random berserk. It does mean that berserkitis now works through clarity and causes Cheibriados penance. This is consistent with the previous commits: berserkitis only triggers on melee attacks, which are intentional. If this is too severe some grace can be hacked in for Chei followers, but the fraction of characters that will find berserkitis much worse than they already do is tiny. -------------------------------------------------------------------------------- e692aea802 | Edgar A. Bering IV | 2021-09-12 17:08:49 -0400 feat: remove evoked berserk, increase *Rage berserk chance Step-by-step we have been cutting back on items that add active abilities to the 'a' menu: even with the quiver these abilities are often forgotten by players for ui reasons since they only come from artefacts (+Inv is the remaing exception) so aren't frequently encountered. A player can't forget to use a "passive" ego. *Rage was meant as a bad property. With a 5% chance to berserk it was small enough that one could take a swing here and there and not expect to berserk (making it an unreliable source of zerk), but large enough that a player trying to use it had to approach fights expecting to go berserk in every fight. This commit removes +Rage in favor of giving *Rage a greater chance to trigger berserk, currently 20%. This leans into the "always be ready to zerk", while being low enough that it's not a guaranteed immediate berserk in desparate situations. The insrcription is changed simply to "Rage". When it comes to changing unrands: - Leech and Bear Spirit might want lower (or 0) Angry values, but for now they both get the standard 20% for clarity; - the necklace of bloodlust, which has a swap penalty and extra zerk powers, gets a 50% zerk chance - the wrath of Trog, with its swap penalty, keeps its 50% zerk chance - the Zealot's sword gets the standard 20% chance; The chance contribution is shown in the item description, and the total zerk chance is shown in the character overview if nonzero. -------------------------------------------------------------------------------- d8b2e6da16 | Nicholas Feinberg | 2021-09-12 12:15:42 -0700 s/inflammable/combustible (FIQ) Reduce ambiguity about the meaning of FIRE_VULN. -------------------------------------------------------------------------------- a6d6528d93 | Edgar A. Bering IV | 2021-09-12 13:00:12 +0200 fix: clarify battlesphere description (12644) -------------------------------------------------------------------------------- 35c06b56df | Edgar A. Bering IV | 2021-09-12 12:59:05 +0200 Revert "fix: Clarity once again blocks *Rage berserk (Mantis 12640)" This reverts commit 51f8dfeb475ed0e39ea3046524384fdaf5c92adb. Commit 51f8dfe intentionally made *Rage on artefacts an intentional source of berserk, as equipping the item and attacking in melee is intentional, and otherwise Chei players could get access to penance free berserk (the hates item code is only for generating the warning prompt, penance comes from actually using it). This revert clarifies the description of *Rage to make it read as intentional source of berserk (like the potion or +Rage), which clarity does not block. It also displays the items contribution to the berserk chance, and makes these contributions linear so the probability is clear to players. -------------------------------------------------------------------------------- 1f95980246 | Nicholas Feinberg | 2021-09-11 21:32:30 -0700 Clarify Ash wrath (JF) -------------------------------------------------------------------------------- b986a403c0 | gammafunk | 2021-09-11 22:03:30 -0500 fix: Don't give cloud rings to friendly pan lords Before this commit, friendly pan lords from the Pentagram card could get cloud rings that would damage the player and their allies. Prevent this by passing the necessary attitude information to the ghost demon code we use to initialize pan lords. -------------------------------------------------------------------------------- 51f8dfeb47 | Seve Monahan | 2021-09-11 14:02:42 -0500 fix: Clarity once again blocks *Rage berserk (Mantis 12640) 516ec7 unintentionally caused *Rage to work on characters with Clarity. This is because 'intentional' rage bypasses Clarity, and 516ec7 caused *Rage berserks to be classified as intentional. Since 911e812, *Rage artifacts have been classified as intentionally hasty at all times. This has similar implications for Chei worshippers as 516ec7 was intending (i.e, Chei worshippers can't use *Rage artifacts without provoking penance). As a result, I do not believe any further changes to the Chei/*Rage interaction are necessary. -------------------------------------------------------------------------------- 34660d7429 | advil | 2021-09-11 13:03:29 -0400 fix: improve SIGHUP handling in clua code on dgl builds User lua that involved hand-rolled prompts could interact in a bad way with SIGHUPs, prevent the game from ever properly handling the HUP. The following example based on long-time crash generator `ziggurnaut` is a case in point: { function ready() force_prompt("asdf") end function force_prompt(text) while true do crawl.formatted_mpr(text) crawl.formatted_mpr("Type p", "prompt") res = crawl.getch() if string.lower(string.char(res)) == "p" then break end end end } If the player disconnects at the prompt, the `while` loop runs in a tight loop because getch returns immediately without a client, and the loop never exits on its own, so the HUP isn't handled. The webserver does detect this 10s or so later, and kills the process with SIGABRT, so the issue isn't catastrophic, but it still is 100% cpu for that time period and generates an annoying crash report in #crawl-dev. (For reference, the best thing to do here on the current API would be to also accept ESC (27) at any prompt implemented in a loop like this; getch returns ESC on disconnects. Or just use crawl.yesno instead of trying to write a custom one.) This commit piggybacks on the clua throttle code to check for HUPs if the throttle trips; if a HUP has been seen it immediately errors out of clua code, which leads to a graceful shutdown of the process. It's possible this could use its own separate hook (which would let it work by default on non-DGL builds as well, and possibly be checked more often), but the main problem here is on webtiles so I'm going with this more minimal solution for now. -------------------------------------------------------------------------------- 1af55ca459 | advil | 2021-09-11 13:03:29 -0400 fix: don't allow c_message reentry This hook is already pretty wild, given the arbitrary points where mpr can be called from, but it's additionally very, very easy to trigger recursion that would be infinite if it weren't for the lua stack limit. Depending on what happens this recursion can be quite cpu intense as well, even with the stack limit. This commit just prevents any recursive triggering of the hook in a heavy-handed way. (Overall, I find this hook quite worrying, and I suspect it still needs substantial auditing.) -------------------------------------------------------------------------------- 8072b577e9 | advil | 2021-09-11 13:03:29 -0400 fix: step up lua throttle aggressiveness On testing, a tight loop in ready() takes nearly 3 minutes to get killed by this on a fast cpu, and does still have a noticeable cpu impact until then -- I expect it'd be much worse on a busy server. This commit makes the throttle kill scripts much more aggressively, and also, if ready() in particular is killed by the throttle, keeps it from running again. If this runs up against legitimate online use we can adjust, but I really think it won't. I tested this on qw, and qw does trip the throttle but never more than ~4 times in a row at the absolute max. So 15 is still extremely conservative. It's possible that this could be tightened even further: e.g. by starting the throttle time at something like 128ms instead of 2, or by reducing the number of lua instructions this is checked between (currently defaults to 50000 I think). No impact outside of webtiles. -------------------------------------------------------------------------------- b603f484b2 | Nicholas Feinberg | 2021-09-11 08:15:45 -0700 Scorch and Flame Wave tiles (Sastreii) -------------------------------------------------------------------------------- e3cd3e9c68 | Nicholas Feinberg | 2021-09-10 20:00:27 -0700 Stoker tile (Sastreii) I'm stoked. Are you? -------------------------------------------------------------------------------- 4cf4cd4993 | Nicholas Feinberg | 2021-09-10 10:08:01 -0700 Dial down tile_show_threat_level defaults Only show on nasties by default. -------------------------------------------------------------------------------- 3d58a18ffd | Nicholas Feinberg | 2021-09-10 10:02:08 -0700 Ignis altar tile (Sastreii) -------------------------------------------------------------------------------- 3d5cecec24 | Nicholas Feinberg | 2021-09-10 09:15:51 -0700 Make a BIG removal Remove SIZE_BIG, switching monsters into either SIZE_LARGE or SIZE_GIANT as seems appropriate. Following up on 7bd0902ce6cc84c6, we really don't need two sizes that are 'bigger than any player race'. Is a yaktaur bigger than a centaur? How does a spatial maelstrom compare in size to a fire dragon? These are questions that we don't care about and shouldn't bother with. This is a small buff to dragon form and maybe a nerf to something else. Who knows. -------------------------------------------------------------------------------- 07589e2de0 | advil | 2021-09-10 11:58:17 -0400 fix: remove comma -------------------------------------------------------------------------------- 392f49ab0d | Nicholas Feinberg | 2021-09-10 08:40:45 -0700 Remove Okawaru Commander title (Graveyardigan) Since Okawaru now prevents you from commanding anyone. Toss in 'Myrmidon' instead, shifting "Warmonger" one higher. -------------------------------------------------------------------------------- 579aff930e | Nicholas Feinberg | 2021-09-10 08:23:57 -0700 Refactor Ignis quiver logic (advil) Allow quivering but don't do so by default. -------------------------------------------------------------------------------- 32eb216c14 | Nicholas Feinberg | 2021-09-10 08:22:35 -0700 Don't autoquiver wizmode abilities Makes testing default quiver stuff impossible. -------------------------------------------------------------------------------- e87aa7cc50 | Nicholas Feinberg | 2021-09-10 08:17:05 -0700 Default tile_show_threat_levels Experimentally set tough and nasty on by default, in an attempt to make it clearer to players when something spooky is headed their way. -------------------------------------------------------------------------------- 118590704b | Nicholas Feinberg | 2021-09-10 08:12:59 -0700 Ignis ability icons (Sastreii) Might want to recolor these or Trog's at some point to avoid overlap, but confusion doesn't seem very likely. -------------------------------------------------------------------------------- c56ee47f37 | Nicholas Feinberg | 2021-09-10 07:59:22 -0700 Searing Wretch tile (Sastreii) https://cdn02.plentymarkets.com/qozbgypaugq8/item/images/1625/full/PSTR-DOOM002. jpg -------------------------------------------------------------------------------- 1448048969 | Nicholas Feinberg | 2021-09-09 11:18:36 -0700 Turn down Hell effects Per popular demand. - Contamination down 25% (from 4-8k to 3-6k). - Stat drain down 33% (from 2-7 to 1-5). HP drain is unaffected. These numbers are still fairly arbitrary and remain subject to revision in either direction. -------------------------------------------------------------------------------- b8cf3755b2 | Nicholas Feinberg | 2021-09-09 11:13:25 -0700 Don't quiver Ignis abilities (various) Too pricey, too easy to misfire. Womp womp. -------------------------------------------------------------------------------- 6657d4870c | Nicholas Feinberg | 2021-09-09 11:09:26 -0700 Nargun tile (Sastreii) https://media.discordapp.net/attachments/747522859361894521/885578302797021234/S chermata_2021-09-09_alle_19.31.21.png -------------------------------------------------------------------------------- da42bb4400 | Nicholas Feinberg | 2021-09-09 07:46:38 -0700 Wendigo tile (Sastreii) when do they call it wendigo when you wendy go the cold food wendy go hot eat the food? -------------------------------------------------------------------------------- d0eccab798 | Nicholas Feinberg | 2021-09-08 11:45:25 -0700 Dragon cleanup (Sastreii) -------------------------------------------------------------------------------- b4fee303d0 | advil | 2021-09-08 14:17:11 -0400 fix: remove a book that required a lvl 1 hex This book placement is not saved by ffd9c288d6fe because there's nothing to reroll -- it'll crash unless there is a level 1 hex. Could be replaced? But for now I'm just removing it to fix crashing games. -------------------------------------------------------------------------------- af36da5c11 | Nicholas Feinberg | 2021-09-08 07:38:10 -0700 New Cactus & Manifold tiles (Sastreii) New tiles for the Manifold Assault and Summon Cactus Giant spells, along with a new tile for the Cactus Giant itself. -------------------------------------------------------------------------------- d71735cc25 | Nicholas Feinberg | 2021-09-07 15:54:29 -0700 Add Ignis altar description Oops! -------------------------------------------------------------------------------- d1dd6c5fb5 | hellmonk | 2021-09-07 14:04:56 -0400 feat: add an ambush vault to lair It's called ambush because there am a lot of bush. -------------------------------------------------------------------------------- 0c02eea278 | Nicholas Feinberg | 2021-09-07 09:16:54 -0700 New Kobold tiles (Sastreii) Goodbye, kobold vest. You will be missed. -------------------------------------------------------------------------------- 3dc288482e | Nicholas Feinberg | 2021-09-07 08:30:18 -0700 New zombie tiles (Sastreii) Gnoll, orc, wolf, bear, hydras. -------------------------------------------------------------------------------- 01ebcbcbcd | sdynet | 2021-09-07 08:16:38 -0700 Simplify the ranger card There are too many monsters with similar roles on this card. I want to cut out too many branches and leave only those who match the name of this card. Modified Effect: Now it summon only these three(centaur warrior, naga sharpshooter, deep elf master archer). -------------------------------------------------------------------------------- 4da15c877b | John Stahara | 2021-09-07 08:13:11 -0700 Accurately order a comment with the variables it describes -------------------------------------------------------------------------------- cae3918e47 | Perry Fraser | 2021-09-07 08:12:07 -0700 Improve Ratskin Cloak god interactions [Committer's note: - Don't allow the cloak to spawn rats that should hate you (hell rats under good gods, any rats under Oka or Sac Love) - Unmark the cloak as evil.] Closes #2102 -------------------------------------------------------------------------------- cf6c460519 | Nicholas Feinberg | 2021-09-07 07:59:26 -0700 Tweak Ignis wratch status msg (dilly) -------------------------------------------------------------------------------- 55a29874ef | Nicholas Feinberg | 2021-09-07 07:45:43 -0700 Make Scorch suitable for sauna use Create steam clouds when it hits someone in water, for consistency with other fire effects. -------------------------------------------------------------------------------- de365fb1df | Nicholas Feinberg | 2021-09-06 13:39:49 -0700 Cut Storm Form power scaling 20% It's a bit stronger than I intended at high power, partially because I got the math slightly wrong when setting it up. Let's scale it back somewhat. -------------------------------------------------------------------------------- 9c2f8b1708 | Nicholas Feinberg | 2021-09-06 13:15:01 -0700 Reduce Searing Ray power scaling Searing Ray is a fun and distinctive early-game spell. However, with the current damage values, it remains surprisingly effective well into Lair branches, reducing the need to branch out into new spells. To increase variety, let's keep the min damage the same while reducing the max damage about 25%, from 3d7 to 2d8. (Fewer dice should also increase variance, which is nice.) -------------------------------------------------------------------------------- ffd9c288d6 | advil | 2021-09-06 14:02:57 -0400 fix: reroll spell schools for crashing hex books After d4a3b56016 removed corona, there are currently no level 1 hexes. The vault spec randbook generation code did not handle cases where a vault spec could not find any spells at all, which happened for some early randbook placements that tried to include a single level 1 spell, if they rolled hexes after this change. This commit adds a somewhat convoluted means of rerolling the book discipline(s) if the first try fails. It does fix the version of this crash that I have replicated. -------------------------------------------------------------------------------- bef64dd269 | hellmonk | 2021-09-05 23:53:28 -0400 Rework the flesh golem This Cigotuvi wizlab monster is a reskinned iron golem, so it got buffed when they did. While a wizlab-depth player can certainly deal with a slow 300 hp monster, it feels pretty awful to have to do it. Lower it to ~100 hp and give it corrupting pulse so it has something to do besides walk slowly at you. -------------------------------------------------------------------------------- 6a72785379 | Nicholas Feinberg | 2021-09-05 10:59:27 -0700 End Ctouch on hitting will∞ (Graveyardigan) To save players who have made poor life decisions (e.g. casting Confusing Touch when going up against a fire elemental), make Confusing Touch end itself when you hit something that has infinite willpower (and hence can never be affected). -------------------------------------------------------------------------------- d4a3b56016 | Nicholas Feinberg | 2021-09-05 10:43:13 -0700 Make the hex 'Corona' monster-only See discussion in cafe5c4f27db83f. We may offer some compensation to arkane markspersons at a future date. (Or we may decide they're fine as-is.) -------------------------------------------------------------------------------- 69098e2f6d | Kate | 2021-09-05 00:53:25 +0100 Shorten a vault shop name It was too long to display the "What would you like to do?" shop prompt in console. -------------------------------------------------------------------------------- 4bac719ec2 | Nicholas Feinberg | 2021-09-04 12:09:37 -0700 Don't let sp. servitors cast v weak spells https://www.reddit.com/r/dcss/comments/phpjtn/ Also prune some monster-only spells. -------------------------------------------------------------------------------- b337144f63 | Kate | 2021-09-04 19:30:26 +0100 Staticify a function -------------------------------------------------------------------------------- d1960fc7b0 | Nicholas Feinberg | 2021-09-04 10:45:04 -0700 Make nonflammable trees block fire (ardl) (But really people shouldn't be using nonflammable trees! Booooo) -------------------------------------------------------------------------------- eb13ee3423 | Nicholas Feinberg | 2021-09-04 10:22:10 -0700 Maybe fix !cancel fly desc (particleface, shummie) Don't claim that !cancel will remove permanent sources of flight (e.g. items, species, etc) when you had some other actually dispellable duration active. -------------------------------------------------------------------------------- c0c42a9b79 | advil | 2021-09-04 10:57:45 -0400 build: improve messaging if `git describe` fails This message was pretty cryptic and didn't cover one major case at all (when `git describe --tags` fails because the repository is a shallow clone). The new error is extremely verbose but hopefully provides much better hints as to what went wrong. This also adds a comment documenting a workround to gen_ver.pl. This workaround seemed too niche to me to put in INSTALL.md, but maybe it should be there? See discussion in #2115 -------------------------------------------------------------------------------- e240ad9e29 | hellmonk3 | 2021-09-04 00:46:55 -0400 Merge pull request #2110 from crawl/delightfullyreddevilish feat: rework red devils -------------------------------------------------------------------------------- bc928eaac7 | hellmonk3 | 2021-09-04 00:36:00 -0400 feat: add six wizlab maps Expand Crawl's wizlab offerings: -Eringya's Formal Garden (removed in 0.17) returns with a modified layout, nastier archers, and the addition of some of the swamp monsters that have been added between then and now. -Tukima's Studio (also removed in 0.17) returns with a modified layout and several brand-new monster types to complement the dancing weapons: walking tomes, which cast living spells that cast themselves at the player. Thanks to PleasingFungus for the monster concept. -Yara's Duelist Academy features mana vipers, lots of warrior-mages wielding antimagic weapons, and a fearsome semi-unique Head Instructor who likes to dual-wield triple swords. -Borgnjor's Mausoleum features both corporeal and incorporeal undead. Lost souls occasionally appear when monsters are killed, making big fights scarier. A cult of halazid warlocks serve as the final encounter. -Maxwell's Workshop features an array of golems and big, meaty workers who wield big, meaty maces. You'll find some of Maxwell's cast-off equipment here, perhaps including the legendary artifacts themselves. -Alistair's Party Mansion features an array of wizards and their bizarre guests. There's some good consumables to be had if you don't mind crashing the party of the century... and wading through statrotting clouds of degeneration. In addition to the new wizlabs, this commit removes the golem set from the Tomb of Doroklohe (because it was mostly taken by Maxwell), so that map will exclusively place demons or undead now. The inner chamber of Iskenderun's Mystic Tower was also changed slightly; classed purple draconians will show up to make the end a bit more dynamic. With luck, we will soon have new tiles for the added maps and monsters, but until then you can enjoy some truly q u a l i t y art. -------------------------------------------------------------------------------- 0fcadc17a9 | Kate | 2021-09-04 04:14:10 +0100 Capitalise fruit And remove some duplicate entries from the randart name database. -------------------------------------------------------------------------------- 1a7b1a870f | Kate | 2021-09-03 22:28:38 +0100 Remove the book of stone from vaults Missed in the previous commit, oops. -------------------------------------------------------------------------------- db61641bf8 | Kate | 2021-09-03 21:53:38 +0100 Make Bolt of Magma a monster-only spell With the addition of Flame Wave, fire magic now has a very wide range of mid-level attack spells (which fits the school's flavour), but Bolt of Magma sticks out as one of the remaining old-style bolt spells and is much less interesting than the newer spells around it. Even with it removed, fire magic still is still more heavily weighted towards direct attack spells than other elements. Earth magic also now has access to Borgnjor's Vile Clutch at the same spell level, which fills a similar purpose but again has a more interesting design. Lightning Bolt remains as a classic bolt spell which has been more intentionally kept around due to the bouncing behaviour fitting air magic's theme. Some spellbook contents are shuffled to accomodate the change, and the book of Stone is removed to avoid repeating too many spells. -------------------------------------------------------------------------------- 8d994e73c7 | Nicholas Feinberg | 2021-09-03 07:57:29 -0700 Probably fix flame wave crash (spaninq) Off by one. -------------------------------------------------------------------------------- 4d1e82e741 | advil | 2021-09-03 10:25:05 -0400 fix: don't corrupt place_info on &ctrl-r in the vestibule As usual, place_info handling is a complete mess and extremely brittle. This crash could happen because the vestibule is a depth 1 connected branch, so a fixup corrected levels_seen in files.cc before getting to the wizmode handling for this field for this command, which assumed that it was uncorrected. This commit adds a workaround on top of the fixup. The fixup was originally created for a very specific bug but is *also* necessary for `&ctrl-r` in the vestibule, because otherwise the following assert crashes due to the branch depth. Possibly place_info validity handling should be entirely rethought. Resolves #2067 -------------------------------------------------------------------------------- 142c4e0e00 | advil | 2021-09-03 09:30:39 -0400 fix: improve `auto_switch` behavior with two bad weapons This makes the check on the current weapon and the target weapon identical, following a suggestion in #2057. I was initially worried that this would lead to further special cases but I think it's ok. This commit also makes an item definedness check explicit, where before it relied on `is_melee_weapon` to do the right thing. Resolves #2057 -------------------------------------------------------------------------------- 57a78d8006 | advil | 2021-09-03 09:16:10 -0400 docs: better document auto_switch=true This is a clarification in response to #2057, though I won't immediately close that issue. -------------------------------------------------------------------------------- 7265e17f22 | advil | 2021-09-03 08:43:40 -0400 fix: remove incorrect key handling for primary fire Handling for `()Q` was incorrectly inherited from action_cycler. Resolves #2083 -------------------------------------------------------------------------------- 741b2176ff | robertxgray | 2021-09-03 11:22:54 +0200 Fix minor display error on stat loss This bug is specific to the small layout -------------------------------------------------------------------------------- b254ac4902 | Nicholas Feinberg | 2021-09-02 21:21:18 -0700 Update the manual For the foxfire -> scorch swap. -------------------------------------------------------------------------------- 4726060ac2 | Kate | 2021-09-03 05:14:22 +0100 Update options_guide -------------------------------------------------------------------------------- c9e9834ff9 | Kate | 2021-09-03 05:11:55 +0100 Remove an extra character from Flame Wave desc -------------------------------------------------------------------------------- 0a9eca1c1b | Nicholas Feinberg | 2021-09-02 17:43:53 -0700 Update FE spell list As part of the mission of increasing variety across games and making backgrounds more of a 'starting kit' than a fully game-defining role, make Flame Wave the new top end of Fire Elementalists' start kit. Together with Scorch, Fire Elementalists should have a more fun and varied early game while still wanting to branch out by the time they reach Lair. -------------------------------------------------------------------------------- f3a705cdda | Nicholas Feinberg | 2021-09-02 17:43:53 -0700 New Spell: Flame Wave (L4 Fire/Conj) Flame Wave is a channeled spell (like Searing Ray) that blasts your surroundings with ever-wider waves of flame. It's intended to be a fun (and spectacular!) capper to the Fire Elementalist start. Fact sheet: - Max damage 10 + pow * 0.4. - Channel costs 1 MP per turn. - Can be channeled twice normally, for a max radius of 3. - Veh range extension allows a third channel at radius 4. - Noise starts at 12 (shout+) and goes up by 2 per turn. - Burns trees (very efficiently!) It would be nice to explain how Veh works in the spell description. -------------------------------------------------------------------------------- 79de503ca0 | Edgar A. Bering IV | 2021-09-02 11:46:17 +0300 fix: adjust hell effect strength The timing reduction in the final balance got hell effects in about the right place in terms of frequency, and contam in the right place for quantity. Drain was checking rN, which players carry a lot of. Instead of turning it up to big number, this commit makes hell effect drain ignore rN. Stat drain was hitting with reasonable frequency, but the XP available made it worked off easily. This commit increases the amount of stat drained. -------------------------------------------------------------------------------- 0ad3c213c0 | hellmonk | 2021-09-01 22:41:33 -0400 feat: rework red devils Instead of kiting (annoying), let red devils impede the player's movement more directly by giving them a melee attack flavor that inflicts barbs if any damage is dealt. They still spawn with polearms, so can use this to their immediate advantage especially in groups. -------------------------------------------------------------------------------- 9e0c098162 | Nicholas Feinberg | 2021-09-01 15:14:13 -0700 Add Scorch to FE and CA As discussed in the previous commit. Also push CA back toward spellcasting stats - you'll have to start with melee for a level or so, but I'd like for it not too be *too* hard to get Scorch castable. -------------------------------------------------------------------------------- 08d601b168 | Nicholas Feinberg | 2021-09-01 15:14:12 -0700 New spell: Scorch (L2 Fire) Scorch is a damage spell that strikes a random enemy within 3 tiles, dealing fire damage to them and (if it beats AC & resists) applying Cerebov's rF- debuff to them for a few turns. Currently, it does 2d5 damage at 0 power, scaling to 2d10 at 50 power. Veh extends range as usual. Scorch is intended to provide additional variety to the Fire Elementalist early game (reducing reliance on Foxfire) and to make Cinder Acolyte feel more distinctive from FE by replacing its Foxfire entirely. -------------------------------------------------------------------------------- 33c4956463 | Edgar A. Bering IV | 2021-09-01 17:41:43 +0300 fix: further tweak the Manifold Assault desc -------------------------------------------------------------------------------- 937acc2988 | Edgar A. Bering IV | 2021-09-01 08:37:18 +0300 fix: clarify Manifold Assault description -------------------------------------------------------------------------------- 6a4b6a32f9 | Edgar A. Bering IV | 2021-09-01 08:32:55 +0300 feat: downgrade Fighters to a buckler The starting kite shield on a Fighter was in a weird place. It had the kind of very long term value that the recent changes to spellcasting backgrounds have moved backgrounds further away from. It was completely reasonable to put some enchant armour scrolls into it and use it throughout the game. Unlike the aux armour of other backgrounds which provide 0-1 AC at the start and 2-4 AC at best, the kite shield starts out around 8SH and without enchants or increased dexterity rises to 13SH with training; it is a significant portion of the user's defenses. On the other hand, with the 0.27 change linearizing shield delay penalty, the shield was a liability for normal sized races. The penalty was sufficiently high that "remove your shield turn 1" advice reappeared and was not unreasonable. This is unfortunate, as a starting kit should ideally be useful at game start. Given the above, lets replace the kite shield with a buckler. The buckler will be worth using on turn 1, but any normal-sized heavy melee fighter will want to find an upgrade... or consider a two-hander or an alternate character archetype, depending on what drops. Races that cannot use a buckler get a kite shield. Currently this leaves the background description and manual intry as is---both simply mention "shield". -------------------------------------------------------------------------------- f8c7cfddd9 | gammafunk | 2021-08-31 22:03:27 -0500 feat: Despoiler loot and monsters in a Lair ending For due_jungle_book, the thematic loot item guarded by the obsidian statue is at a position where one had to step in view of the statue to see the item at all. Additionally the statue is easy to autoexplore into, and the area in which it resides is rather cramped for it to be able to use its summons. This commit encloses the loot item in a clear stone room with a clear door, placing the statue in front. The room is visible from another room usually encountered before the statue area. Hence the player can always see basic information about the loot item before deciding to fight the statue, and the statue itself will likely be seen and autoexcluded before it's reached. An additional bonus is that the loot item can't simply be apported without fighting the statue, since the door must be opened first. Finally, we clean up the terrain surrounding the statue to open up space a little, allowing its summons to work better. -------------------------------------------------------------------------------- 84fbe2c6ea | hellmonk | 2021-08-31 22:44:53 -0400 fix: don't spawn an oklob vault as often -------------------------------------------------------------------------------- 46f4d3c346 | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 Change a miniruin subvault for better wand placement -------------------------------------------------------------------------------- b29a9eb848 | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 checkin the whites -------------------------------------------------------------------------------- 5d38da674a | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 Two new encompass vaults for Desolation Two new encompass vaults for Desolation: Pilgrimage, in which the three mini-ruin subvaults are laid out linearly across the salt flats, and Temple, which eschews subvaults entirely and scatters loot around the outlines of an ancient crumbling temple. -------------------------------------------------------------------------------- 8f02261bec | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 Add a handful of Desolation mini-ruin subvaults -------------------------------------------------------------------------------- c8992b3357 | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 New entry vaults for Desolation Inspired by the famous report "Expert Judgement on Markers to Deter Inadvertent Human Intrusion into the Waste Isolation Pilot Plant", these entry vaults are designed to suggest that the Desolation is not a place of honor and no great deed is commemorated there. Lower weights since they're big. -------------------------------------------------------------------------------- 4e71d33c19 | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 Change the statue tiles used in Desolation Statues are renamed to "ruined idols" in Desolation, but the description says they've all had their features removed, while the statues still use the regular dungeon tiles, which have plenty of features. After discussion in the discord, use the crumbling column tiles for now for statues in Desolation. At least they're featureless. -------------------------------------------------------------------------------- 963f628cec | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 Rearrange the order of subvaults in Desolation Put the paired intact/wrecked vaults in a separate section from the unpaired singleton vaults. The other arrangement was driving me bonkers. -------------------------------------------------------------------------------- 3674f0abaf | Nicolae Carpathia | 2021-08-31 18:53:19 -0400 Fix some subvault misconceptions in Desolation The desolation_ruins_setup function called by all the subvaults in Desolation doesn't need to subst . = , - the main vault can't replace anything in a subvault anyway. Also, subvaults don't need ORIENT statements. -------------------------------------------------------------------------------- e74157ce7a | advil | 2021-08-31 18:21:55 -0400 refactor: remove CMD_EVOKE_WIELDED Until recently, there were only 3 holdouts that used this command, all unrands. Previous commits moved those unrand evocations into abilities in order to have a cleaner, more standardized, UI for them, leaving nothing that uses evoke wielded. Based on past discussion, we are unlikely to add anything that does use it, and item-specific abilities are generally better. As part of this I've removed all the old stuff for triggering reaching weapons via evocations; this was partly dismantled already as part of the introduction of CMD_PRIMARY_ATTACK. For one-key triggering of Olgreb (a common request), there are two recommended solutions after this commit: quiver the ability and use `p`, or just macro the ability like any other. -------------------------------------------------------------------------------- 28a71e5310 | advil | 2021-08-31 18:21:55 -0400 fix: add ability descriptions for dispater/asmodeus Also, tweak the Olgreb description. This commit intentionally leaves the artefact descriptions of these abilities in place (which lets them be obvious while not wielding them). -------------------------------------------------------------------------------- 31e2066950 | advil | 2021-08-31 18:21:55 -0400 refactor: converk staff of olgreb evoke to an ability As with the previous two commits, this lets a much more straightforward version of the power be shown to the player. As part of this, I have simply removed the fail check. This required 5 evo skill to get to 100%, which is trivial; it originates from earlier versions of the staff that could also cast venom bolt. -------------------------------------------------------------------------------- b9327a18ab | advil | 2021-08-31 18:21:54 -0400 refactor: convert staff of dispater evoke to an ability This allows for better transparency for the costs, more code reuse, etc. I have provisionally converted the HP cost to a percentage, which overall should work better for damnation. This is currently set at 10%, and it may be a nerf to many characters at higher HPs. Further adjustment might be required. -------------------------------------------------------------------------------- 3858e25e18 | advil | 2021-08-31 18:21:54 -0400 refactor: Convert Sceptre of Asmodeus evoke to an ability This regularizes the interface to the sceptre, allowing nice things like showing the fail rate, etc. The existing evocations check didn't fit well into the more standardized ability.cc checks, so I've adjusted it (I think this is a buff, but I'm not sure it matters -- anyways, others can feel free to adjust further). -------------------------------------------------------------------------------- b16ebcc8e8 | Edgar A. Bering IV | 2021-09-01 00:37:30 +0300 feat: don't place shafts in hell The small levels and placement of hatches give a fast enough dive, shafts are an ultra fast forward. We'll permit Fo to shaft in hells and permit shafts in vaults for the hells, so that they can be used as vault "loot". -------------------------------------------------------------------------------- 51d9a1de7a | Edgar A. Bering IV | 2021-09-01 00:37:30 +0300 fix: new hell mosnter description tweaks (PleasingFungus) -------------------------------------------------------------------------------- 46c4a727e1 | Edgar A. Bering IV | 2021-09-01 00:37:30 +0300 feat: update doom howl spawns -------------------------------------------------------------------------------- 4b270e8d09 | Edgar A. Bering IV | 2021-09-01 00:37:30 +0300 fix: describe stoker movement (dilly) -------------------------------------------------------------------------------- 5fa11ae2f9 | Edgar A. Bering IV | 2021-09-01 00:37:30 +0300 text: add some newlines (PleasingFungus) -------------------------------------------------------------------------------- 5d3d9a63fa | Edgar A. Bering IV | 2021-09-01 00:37:30 +0300 vaults: adjust Tartarus vaults for new monsters Add the new Tar cast to the vault des. Some places shadow demons were replaced with doom hounds, for the summon effect, and others profane servitors for the "shadowy flavour". Most reapers are gone but a few stick around as guests. -------------------------------------------------------------------------------- 4c841b28f7 | Edgar A. Bering IV | 2021-09-01 00:37:30 +0300 vaults: adjust monsters in Cocytus vaults Some care was needed to make sure there's simulacra around for the wendigo, but placing wendigo bands can take care of that when needed. Otherwise, blizzard demons were replaced by titans or shard shrikes depending on context, and several vaults were 098-ified. -------------------------------------------------------------------------------- 3d3c2c6d84 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: adjust Gehenna vault monsters This adjusts all Gehenna vaults to use the new cast. Fewer changes than the Dis vaults, mostly replacing sun demons with searing wretches and sprinkling in some creeping infernos. -------------------------------------------------------------------------------- 2bde554b36 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: Dis end vault monster set adjustments In line with the Dis changes, remove trash mobs and replace with the new Dis cast. As with the non-end vaults, a few juggernauts sneak in as a guest threat, and the cacodemons in the one grunt ending stick around. Might have been too heavy with caustic shrikes on some of these. -------------------------------------------------------------------------------- f8756136d3 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: adjust non-end Dis vault monsters and cleanup Adjust monster sets of Dis vaults. When possible I tried to stick with or switch to 098. When vault storyline demanded eg. a humanoid or a boss monster one was chosen from the new Dis cast appropriately. Occasionally some vaults desired slightly more variety, and juggernauts get sprinkled in there. I'd considered putting them on the Dis spawn table, but a few vault cameos seems to be better for them. -------------------------------------------------------------------------------- 3a40abb400 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: make hangedman_mysterious_dungeon_monster_house 098 Essentially. The generic undead are preserved (with some branch flavoring so Cocytus wendigo have simulacra to collapse), and the "fodder" placements are replaced with 09. The "boss" is specified to be a top tier threat for the branch. -------------------------------------------------------------------------------- 8b58bad9cc | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new Cocytus spawn table The icy hell, ruled by Antaeus, this monster set has a slightly more cryptonatural feel, keeping with the "newness" of Cocytus in the lore. The monster mix aims to beset the player with iceblasts, cold, and status effects (much worse under -Potion) This places the following monsters in addition to the cross hell threat set. "basic" branch welcome monsters: - simulacra Using the adjusted simulacra list, these simulacra either hit hard, are fast, or mess up player position (often two or more). - freezing wraiths Somewhat on the weak side for hell, a lucky slowing hit goes much further when a player cannot obtain potion help. - frost giants Lower tier colossus, following Antaeus' leadership. "branch flavour" monsters: - titans More of Antaeus' pals. Titans' airstrike is spooky in Coc's mostly open layouts, as is their flight over deep water. - azure jelly Rarer, might be a bit too weak for its place, but a good cold monster with big ol hits. - wendigo To help slower simulacra really nail the player, the wendigo can turn them into 3d43 iceblasts (one time only, destroyingn the simulacrum), in addition to having stunning burst and some strong melee. Wendigo are fragile and cannot fly, however, so they can be managed with care using Cocytus' terrain. - nagrun Earth spirits who were here first and tolerate the new hell that was dug out around them. Petrification is much more threatening if it can't be cancelled, so these earth spirits come with it, plus AF_VULN to help it land. "signature threat" monsters. Equal chance at max depth, otherwise more shrikes - shard shrike Basically TIE fighters with blue lasers. A player favorite. - ice fiend The cold tier 1 demon. -------------------------------------------------------------------------------- 58b44f322d | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new Tartarus spawn table The decaying hell, this monster set is out to bewitch the player and drown them in foul miasma. Unlike other hells, because of the misma quantity no living holiness monsters are added. This places the following monsters in addition to the cross hell threat set. "basic" branch welcome monsters: - spectral things The generic late population is adjusted so that the spectrals that place should be a somewhat serious threat to the player, if they start to swarm. - shadow wraiths Not very hard hitting, but AF_DRAIN_SPEED makes these a thematic mix. - eidola Also not very hard hitting (could they gain dispell undead lol?) but with Tar's new Will/2 their Cause Fear has a chance at landing and constraining player movement. "branch flavour" monsters - profane servitors A monster from "elsewhere" repurposed to service in Tartarus. Some concern about this aura and silence aura being difficult to see in combination in console. They're a nice melee threat and combined with their aura a nice threat multiplier. - bone dragons Big dumb hits. Thwacks. Tramples. - putrid mouths Somewhat similar to ushabti, putrid mouths are a stronger melee threat in addition to the warning cry and miasma breath. They apply poison and stat drain fitting in with Tar's theme. - doom hounds Definitely not spirit wolves. Everyone's favorite "summoner" monsnter. - silent spectres (rarer, flat distribution) These are sprinkled in to fit with Tar theme and provide a unique tactical challenge. Much rarer than regular monsters. "signature threats" - tainted leviathans A C genus monster for tar. With mesmerisation to use the Will/2 branch-wide effect, a miasma ring, silence, and large rocks, these giants are an all-around top tier threat. - tzitzimimeh The branch's tier 1 demon. -------------------------------------------------------------------------------- a5164bd282 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new Dis spawn table The iron city, this uses a mix of new and classic monsters to beset the corroded player with big hits (wham pow), metal splinters, and prevent their escape with fetters and barbs. This places the following monsters in addition to the cross hell threat set. "basic" branch welcome monsters that fall off with depth and aren't used for ood rolls beyond max depth: - ancient champion Iron shot, haste, good hits. Currently they have skeletal warrior bands, perhaps that should change. - war gargoyle Metal splinters and fast, but not tough. - iron dragon Metal splinters and stronger melee than a war gargoyle, tougher as well. Unfortunately they're slow, so currently less frequent. Might be worth making them speed 10. "branch flavour" monsters to fill out the regular threats: - iron golem Buffed iron golems are hard to kill and hit really hard at normal speed, so it is not good to be next to them. That's easy to do because they're slow, but it does mean they might block an escape in the kind of layouts Dis generates. - caustic shrike The pigeons of Dis. Recontextualize a top-tier depths threat as a regular friend in the iron city. Their corrosive attack stacks with the present Dis corrosion for maximum fun! - quicksilver elementals At least one Dis castle places quicksilver dragons (good flavor, but not really strong enough for a Dis threat). These elementals are a cross between a quicksilver ooze, a qsd, and a shard shrike. Quicksilver bolt will remove some corrosion, but do you really want to keep one as a pet? - crystal echidna Iron golems are slow, many other Dis threats are regular speed. To help everyone along these spiny green helpers have throw barbs, along with crystal bolt so they're not defenseless on their own. The cramped layouts of Dis should give them many bolt bouncing opportunities. "signature threat" monsters (becoming equal chance at max ood). - iron giant The classic C, with harpoons and iron shots and now hurling buffed iron golems (which get a swing on the turn they're thrown). - hell sentinel The tier 1 demon of Dis. -------------------------------------------------------------------------------- 1c5eef2bd2 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new Gehenna spawn table The firey hell, this uses new monsters along side classic favorites to beset the player with fire storms, fireballs, and burn away their resistance. This places the following monsters in addition to the cross hell threat set. "basic" branch welcome monsters that fall off with depth and aren't used for ood rolls: - hell hog The classic fast fireballing demon. Their fireballs hit enough to hurt and they swarm, but they aren't so tough. - fire giant Increasing placement of 'C' genus monsters in hell is a lorebuilding exercise. Not as fast as hell hogs, stronger melee. - salamander tyrant The highest tier salamander monster, recontextualized here in hell. Their lava spells work well in Gehenna's lava pool terrain. "branch flavour" monsters that fill out the regular spawns in the mid range and fall off for ood (but not as sharply as the cross-hell set): - balrug Classic demon; subsequent changes to the other hells makes this one of the few non-fiend non-common demons appearing. - searing wretch Resistance stripping melee threat. - stoker (less common) Ranged, maintain range threat. In Gehenna's layouts corners are hard to comeby, and hiding from creeping infernos is a good deal trickier than dodging oods. Setting them off early is a possibility for the player, but comes at a cost. - creeping inferno (less common) Like a lurking horror, but with Fire Storm. "signature threat" monsters that fill out the ood weight. At depth 7 helephants are more common than fiends, and at the depth cap they have equal chances. - hellephant 3d40 bolt of fire (ow!), trample, and blink. Tough but not too tough defenses. A good firey monster for the firey hell. - brimstone fiend Every hell needs a thematic 1 and the brimstone fiends are the fiends for Gehenna. -------------------------------------------------------------------------------- 1c56b440e8 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: define a cross-hell spawn population To unify the hell branches, this defines a population subtable that produces "cross-hell" threats: a flat (falling off in ood range) sprinkling of tormentors and hellions bringing suffering to the damned, plus rare lichen making sundry unholy pacts. Lore note: Lichen, having mastered life and death, are not minions of hell or bound there. They're simply visiting. So we don't want to put a ton in any hell, even Tartarus. -------------------------------------------------------------------------------- cec1ff2907 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: enable a higher ood cap for hells In order to let 098 pick out true nightmares without making each hell 6/7 roll oops all fiends, let's set an ood cap that we can work with. Technically we lose a bit of expressivity at the deepest possible 8 depth, but I don't think that's needed. -------------------------------------------------------------------------------- a084dd16cf | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: revise generic_late_zombie populations (nojaa) The generic_late_zombie population is used for derived undead base classes in areas where the player is expected to be quite strong. This commit adjusts the way depth is handled by the picker so that the population list has its own depth cap (independent of branch depth caps). It also changes the monster selection to focus on derived undead that are either fast or interfere with player movement or both, with a few hard hitters for good measure. -------------------------------------------------------------------------------- e6604a7e06 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: adjust derived undead attack flavours This commit allows spectrals and simulacra to constrict and reach (losing the flavor brand on that attack) and all derived undead to trample. These "physical" attack flavours mess with player positioning in various ways; not including them on the higher tier derived undead made it challenging to use those derived undead as serious threats. -------------------------------------------------------------------------------- 5587a7b593 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, nargun Without cancellation pots, status effects are much more deadly in Cocytus. Nargun are modelled after the Australian mythic stone creatures, and are gargoyle-esque: they hit hard, have big AC, and a threatening spell but weak HP. In this case they bring Petrify to the mix, along with AF_VULN and a big HD to help it land. They are lrdable and treated as icy. -------------------------------------------------------------------------------- a7dcba2b6e | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, wendigo Wendigo are a new Cocytus monster. They're somewhat flimsy and act as threat multipliers, with stunning burst and a new spell seracfall. Seracfall turns a simulacrum in view into a very high power (3d43) iceblast. Cocytus will have plenty of simulacra around as part of the overhaul, but many simulacra are slow. The wendigo "help" the simulacra along in a couple of ways. The targeting also means that a player facing a wendigo plus simulacra will have to manage LOF from several directions as the simulacra advance. -------------------------------------------------------------------------------- 5a7b489cf3 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, tainted leviathan A non-fiend top tier threat for Tartarus. Tainted leviathans come with mesmerise and a cloud ring to pull players into. Oh! And they're giants so they thro rük. -------------------------------------------------------------------------------- 0cc904eb20 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, putrid mouth Putrid mouths are a new Tar monster, meant to be a more substatial (ha) wraith genus monster to fill out the branch flavour set of threats. They are based on Chinese mythology around hungry ghosts and re-use the old hungry ghost tile since it was so cool. As a monster they aren't the toughest of Tar threat, but the mix of miasma, poison, and warning cry should combine with the small levels to prevent a player who mismanaged the encounter from recovering before reenforcements arrive. -------------------------------------------------------------------------------- 6bad965b88 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, crystal echidna Meant as a "support caster" type monster for Dis, crystal echidnas have barbs (to confine the player's movement while slow things catch up) and crystal bolt (to be a bolt-bouncing threat when they're met alone in the cramped rooms of most Dis layouts). Crystal Echidna are nonliving and explode like green crystal for LRD. -------------------------------------------------------------------------------- e42411b9ad | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, quicksilver elemental I considered simply using quicksilver oozes or quicksilver dragons in Dis, as both are reasonably strong late-game threats. However both dragons and oozes are vulnerable to some of the collateral damage done to allies by hell minions. It seemed like a better idea to make a monster in a genus that won't fall so easily to tormennts, since the new Dis list already has its share of living creatures. This monster is something like a cross between a quicksilver dragon and a shard shrike, with batty movement and qs breath, though not as fast as a shrike. Not 100% happy with repeating the shard shrike gimmick, could instead just make quicksilver oozes torment immune. (How does one torment a blob of quicksilver anyway?). -------------------------------------------------------------------------------- 6bbbebb4f9 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: buff iron golems (amcnicky) Iron Golems are slow, and slow monsters are often sad. Dis has iron giants, which can throw them into range, which makes them more exciting. Except they're also not that strong, and attack slowly to boot. To make them a better Dis monster this gives them a big buff to their AC and HP, the idea being that they are avoidable but will block a player's manouverability. To make their obstruction to manouvering even more pointed, they get buffed attack and a second attack, and attack at normal speed. The normal speed attack ensures that (depending on monster list sequencing) they get a good chance to swing at the player after being thrown. Big big big ruk. -------------------------------------------------------------------------------- a2eda6f88b | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, stoker Stokers are a ranged harrassment and positioning threat in Geh. The player can defeat one solo by setting off its own creeping infernos against it, but in a fray this back-line threat should keep the player off balance with wind blasts and inferno-firestorms. -------------------------------------------------------------------------------- a95eead60a | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, searing wretch A hard-hitting melee threat for Gehenna, searing wretches are ghoul genus monsters that stack on fire, sticky flame and strip fire resistance. They are complementary to the other Geh threats, which all have some sort of ranged component, and other than hellephants are a bit flimsy at hell depth. -------------------------------------------------------------------------------- b7fef34776 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: new monster, creeping inferno Creeping infernos are a new monster for Gehenna. Operating with lurking horror move rules, creeping infernos unleash a power 120 fire storm at their location upon death. The savvy player will be able to use them to advantage, so we won't place too many, but the player caught off guard will be exploded. -------------------------------------------------------------------------------- 751aad3b66 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: adjust Tartarus vaults for new hell levelgen Fewer encompasses here, large vaults again get ORIENT: centre to keep them from wandering off, stairs adjusted. -------------------------------------------------------------------------------- 8c116a9034 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: adjust Cocytus vaults for new hell levelgen Similar to Dis, several of these vaults are very large and given ORIENT: centre, one is turned into an encompass. Stair placement fixed up. -------------------------------------------------------------------------------- ffef9bb0b2 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: adust Gehenna vaults for new hell levelgen -------------------------------------------------------------------------------- 0cff350621 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: add green crystal to Dis While Dis is the Iron hell, it is also notionally earth/metal themed. Moreover elemental iron can crystalize. So let's spice up the wall types a bit. Currently this is accomplished by repurposing serial_glass to place green crystal instead of glass. Other Dis specific crystal vaults welcome. -------------------------------------------------------------------------------- 2e6bbc7fcc | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: adjust Dis vaults for new level generation Several large Dis vaults disconnected the level and were practically encompasses in their own right; they get promoted. Other large vaults are given ORIENT: float or trimmed as need be to get them to play nice with the new small levels. All stair placing vaults have their placements adjusted for single stairs. -------------------------------------------------------------------------------- e5be5493b6 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 vaults: revise miscelaneous vaults appearing in hell This commit adjusts vaults that are defined in various files other than the branch specific vault files. Vaults that are too large are removed from hell spawning and appropriate conditionals for stairs are added. Vaults that break connectivity (elevators) are also dropped from the hells spawn lists. -------------------------------------------------------------------------------- 4708905124 | Edgar A. Bering IV | 2021-09-01 00:37:29 +0300 feat: only place one up and down stair in the hells This changes the level generator to only place one stair in each hell branch, as a complement to the previous change to level generation size. This commit will currenlty break crawl due to the number of vaults that place disconnected stair bubbles in Hell. Follow-up commits will be adjusting hell vaults to account for all level generator changes. -------------------------------------------------------------------------------- 43dec93354 | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: add error checking for some dungeon builder lua -------------------------------------------------------------------------------- 903cbe717e | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: shrink Hell subbranches on floors 1-6 This commit converts hells layouts to use the new dgn.builder_bounds() instead of dgn.max_bounds(), adding parameterization on grid size for some procedural values that were previously hard coded. The dive portion of the hells can be exciting, but quickly becomes a slog if the player must make the dive a second or third time, due to how the stairs work. By shrinking the levels we reduce the time a player spends with unfun repetition and increase the time spent in "good dive moments". A subsequent commit will reduce the number of stairs spawned on each level to 1 guaranteed stone stair. -------------------------------------------------------------------------------- 9424aacb20 | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: separate builder_bounds and max_bounds This adds two stub functions dgn_builder_x and dgn_builder_y to allow parameterizing the dungeon buillder's driving dimensions. Subsequent commits will use these to shrink intermediate hell levels. The assumption that GXM and GYM are constants is baked in across the layout code, so layouts will be adapted to use the builder_bounds gradually. Layouts switched to use builder_bounds will be tested for support of various builder sizes. -------------------------------------------------------------------------------- 20ce1ca697 | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 fix: resolve a todo in zonify mapping -------------------------------------------------------------------------------- bc17ff6ebb | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 refactor: move padded_bounds to a layout library This function is used with the various omnigrid gridding functions to put a bit of padding to allow the grid to expand into the edge of this padding. There were two versions of it, one in layout_city the other in layout_grids; layout_cellular was implicitly using one of them without an explicit include. This moves the function to omnigrid so that we have only one copy. -------------------------------------------------------------------------------- 43d0ba7266 | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: shift timed hell effects to do more strategic damage The effects of the hells serve two purposes. One is to spice up encounters with tactical shifts: new monsters, noise, damage; the other is to deal strategic damage. The previous commits added a branch-wide effect to each hell branch to give them a distinct tactical flavour. This commit shifts the timed-effects to do strategic damage to those who would linger: contam, drain, and stat rot. -------------------------------------------------------------------------------- e744962671 | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: persistent hell effects: rot tartarus (Lici) The third of four branch-wide hell effects, meant to give each hell a unique tactical experience. In Tartarus, halve half willpower. Ereshkigal has paralysis, and the new Tar monster set will have some will checking monsters. Lets make it harder for the player to simply Will++++ item their way out of these concerns. -------------------------------------------------------------------------------- 6f13a9c4bf | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: persistent hell effects: fill gehenna with acrid smoke The third of four branch-wide hell effects, meant to give each hell a unique tactical experience. In Gehenna, prevent the use of scrolls. -------------------------------------------------------------------------------- 3d7a220799 | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: persistent hell effects: freeze cocytus solid The second of four branch-wide hell effects, meant to give each hell a unique tactical experience. In Cocytus, prevent the use of potions. -------------------------------------------------------------------------------- 49807740c2 | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 feat: persistent hell effects: rust dis The first of four branch-wide hell effects, meant to give each hell a unique tactical experience. In Dis, apply two stacks of corrosion. -------------------------------------------------------------------------------- 79cbbdc86d | Edgar A. Bering IV | 2021-09-01 00:37:28 +0300 refactor: abstract corrosion to a method -------------------------------------------------------------------------------- 21599a725c | Perry Fraser | 2021-08-31 13:00:22 -0700 Have C-glyph altars use temple_god_list() Previously there was a hardcoded list of gods that couldn't generate for C glyphs in dungeons. It turns out this was essentially equivalent to the list already used in temple_god_list(), so this removes that duplication. This also fixes an issue where an altar to Ignis could generate on a few Zot dungeon levels which used random altars. -------------------------------------------------------------------------------- d86dc11844 | Nicholas Feinberg | 2021-08-31 11:53:27 -0700 Bump SCG to L6 (ardl) Cactus giants were a bit stronger than expected, and with the removal of Shadow Creatures, there were no other L6 summons left. -------------------------------------------------------------------------------- 98b9f98406 | Nicholas Feinberg | 2021-08-31 11:50:16 -0700 Fix monster cactus giant display -------------------------------------------------------------------------------- df715e3894 | Perry Fraser | 2021-08-31 08:15:42 -0700 Fix dancing weapon death messages [Committer's notes: - Don't claim that summoned dancing weapons turn to gold on death. - Allow summoned corpseless monsters to create clouds on death, just like other summons. - Fix handling of banished unrand dancing weapons. Closes #2092. ] -------------------------------------------------------------------------------- bc0475efdd | Kate | 2021-08-31 02:52:45 +0100 Prevent cactus spines from working outside LOS -------------------------------------------------------------------------------- bced6e68ee | Nicholas Feinberg | 2021-08-29 19:07:02 -0700 Remove an unused corpse tile Oops! Should fix tests. -------------------------------------------------------------------------------- 8ac975c05d | Nicholas Feinberg | 2021-08-29 17:54:53 -0700 New spell: Summon Cactus Giant (L5 Summoning) Summon Cactus Giant summons a giant cactus warrior. Enemies that hit it in melee take 5d8 AC-reduced spines damage. Oof! The intent is to have another situational/toolbox summoning spell: it's not particularly great against "casters" or "ranged" enemies, but fun against melee foes, particularly ones that move fast rather than hitting hard. To differentiate from Guardian Golem, which has a vaguely similar role, it's a few levels high (L5 1school vs L3 2school). The giants also have giant spiked clubs, mainly for comedy value. They're intended to not do that much against with their attack (as opposed to their spines), so their attacks take 3 turns and their base damage is very low. Giant stats: 1 AC, 2 EV, roughly (27 + spellpower) HP, though it's randomized like other monsters'. Standardish summon duration, like call canine familiar. The spell appears in the Book of Dryads (renamed to Book of the Wilderness) and a new Book of Scorching, which also gets Foxfire and Fireball. (I actually named this book before I came up with the idea for Scorch, but you better bet that's going in there if it lands.) -------------------------------------------------------------------------------- 620d9153ef | Kate | 2021-08-30 00:07:12 +0100 Remove some broken speech lines _fruit_name_ is a key in the randart database and can't be used in the speech database. -------------------------------------------------------------------------------- f6d37e6e1d | Kate | 2021-08-29 22:31:04 +0100 Disable Okawaru Duel in Sprint Instead of crashing, disable the ability in Sprint, since it's not supposed to be possible to leave the single D floor by any means (and the Abyss is also disabled). While it'd be possible to special-case the Arena and enable the branch, it seems likely to break Sprint balance even more than usuali (especially in maps like linesprint and arenasprint, for example). -------------------------------------------------------------------------------- e87a16407d | Nicholas Feinberg | 2021-08-29 08:49:46 -0700 Blame Ignis for fire champs (gammafunk) No idea if this works correctly for cikiller, tbh! -------------------------------------------------------------------------------- 28825b98b6 | Edgar A. Bering IV | 2021-08-29 10:25:10 +0300 docs: first changelog update for 0.28-a0 -------------------------------------------------------------------------------- 2a6f7409c1 | Edgar A. Bering IV | 2021-08-29 08:40:47 +0300 docs: update credits -------------------------------------------------------------------------------- 9e858e973b | Nicholas Feinberg | 2021-08-28 20:09:21 -0700 De-damn missed bolts (ardl) oops -------------------------------------------------------------------------------- 7e9a150488 | Nicholas Feinberg | 2021-08-28 19:41:38 -0700 Add missing Cinder Acolyte icon (Really, swap in the Delver candle, since it fits, and give Delver a lantern instead.) -------------------------------------------------------------------------------- 80eddfa388 | Kate | 2021-08-29 01:18:52 +0100 Fix interactions between noise, fake noise and silence (#12293) "Fake" noise (primarily created by alarm traps and the Orb) was intended to ignore silence and still alert monsters, but didn't actually work since no noise (including fake noise) was ever allowed to propagate through any silenced squares. Instead, allow all noise to propagate through silence, but only allow fake noise to actually originate within silence and to alert monsters in a silenced area. This also fixes problematic behaviour of the Demonspawn silence aura mutation, where the aura blocked all noise from the player from propagating outwards. -------------------------------------------------------------------------------- bb949333c4 | Kate | 2021-08-28 23:10:01 +0100 Give Haunt a summon cap of 8 As a high-level summon it doesn't need as strong a limitation as most of the earlier summons, but it previously had no cap at all - give it a high summon cap to at least make it a little less practical to haunt multiple different targets at once. -------------------------------------------------------------------------------- 1a59d63638 | Kate | 2021-08-28 23:10:01 +0100 Make Shadow Creatures a monster-only spell It doesn't work well with the reduced player summon caps, since a big part of its functionality is being able to create monster bands, and the interaction between bands and the summon cap was already fairly messy. Being able to summon rare branch-specific monsters and big monster bands is a fun effect, but works much better on the already-existent scroll of summoning, which avoids the problems of summon caps and is balanced by being a consumable. -------------------------------------------------------------------------------- db2750068a | Kate | 2021-08-28 23:10:01 +0100 Remove the XP penalty from summon kills With the caps on most summon spells substantially reduced, it should now be reasonable to remove the 50% XP penalty on kills made entirely by allies. Other temporary allies also have the penalty removed, as these show up much less often (for example, charmed allies and summons from items and god abilities) so should have a fairly minimal effect. Undead allies also have the penalty removed, with plans to further adjust corpse-using spells in the future. Currently permanent allies from gods (specifically Beogh and Yredelemnul) are unchanged - these require more substantial reworks to their design, with the plan being to hopefully then fully remove the XP penalty from them when their respective redesigns are worked on. -------------------------------------------------------------------------------- 635202c219 | Kate | 2021-08-28 23:10:01 +0100 Give monsters separate summon caps to players Making summon caps for monsters match the reduced player caps unintentionally weakens a small set of monster summoners whose spells are coincidentally also player-castable. Instead let monsters retain the old caps, and document these in the spell description when examining a monster. -------------------------------------------------------------------------------- af93940d1b | Kate | 2021-08-28 23:10:01 +0100 Reduce most summon spell caps to 1 Summoning magic has long had the downside of kills by allies granting only 50% XP, which works fine in terms of balance due to how hugely powerful summoned allies are, but is very inelegant as well as just feeling bad to many players. The main problem caused by summon spells is how easy it is to quickly and repeatably create a very large number of allies, so to try and balance this better and allow removal of the XP penalty, greatly reduce the summon caps for player-castable summoning spells. Almost all spells are capped at 1 summon, with a few exceptions for spells that wouldn't function with such a low cap (such as Summon Small Mammal where the individual allies are very weak), for a few high-level spells (Summon Hydra and Monstrous Menagerie) which are instead capped at 2, and for the very highest level spells (such as Summon Horrible Things and Dragon's Call) where the high level of investment required can justify their strength. Being able to create allies on demand is still fundamentally an extremely powerful ability so this is very unlikely to cause problems for summon- focused characters - it'll just be required to either hybridise more or to use a wider variety of summon spells. -------------------------------------------------------------------------------- 99b01970c5 | gammafunk | 2021-08-28 16:46:57 -0500 fix: Make a function static -------------------------------------------------------------------------------- ae8ea5ec39 | Edgar A. Bering IV | 2021-08-28 23:15:54 +0300 feat: adjust Mlioglotl's spawn range Mlio's spawn range was picked to cover holes in the distribution of uniques. Unfortunately, an S-branch threat simply isn't all that spooky by Vaults or Depths. Additionally, in Abyss Mlio's one weird trick doesn't do anything. So let's place Mlio in the S branches, corrupting an otherwise peaceful runic experience, and very rarely in the abyssal lair end as the source of the corruption. -------------------------------------------------------------------------------- 832ee520b4 | Edgar A. Bering IV | 2021-08-28 23:11:37 +0300 fix: inscribe the obsidian axe (rayg00n) -------------------------------------------------------------------------------- 47ca004b5c | Nicholas Feinberg | 2021-08-28 12:07:32 -0700 Ban fire championing priests (Lightli) Another god already took that one! -------------------------------------------------------------------------------- 0e18a103e6 | Nicholas Feinberg | 2021-08-28 12:02:53 -0700 Cleanup beogh_follower_convert -------------------------------------------------------------------------------- 1796491f69 | Nicholas Feinberg | 2021-08-28 12:02:53 -0700 Ban fire champion conversions (Lightli) Another god already grabbed that orc! You can't have them! -------------------------------------------------------------------------------- 5b1f6a4db3 | Nicholas Feinberg | 2021-08-28 12:02:53 -0700 Fix fire champion wizmode name -------------------------------------------------------------------------------- 6d487c6445 | Kate | 2021-08-28 19:20:20 +0100 Reduce Lesser Beckoning's power cap As a level 3 spell it's not especially appropriate for it to scale all the way up to 200 power. Instead cap it at 100, with the range scaling up to 5 instead of 7. -------------------------------------------------------------------------------- e22f211cc6 | Nicholas Feinberg | 2021-08-28 10:50:13 -0700 Ignis: ability cleanup Swap Foxfire Swarm and Sea of Fire, since foxfires are more powerful in practice. Make all abilities significantly cheaper. Add spacing to the enums. -------------------------------------------------------------------------------- c0270e7ab8 | Nicholas Feinberg | 2021-08-28 10:50:13 -0700 Ignis: monster dialogue -------------------------------------------------------------------------------- 3a68cb0a86 | Nicholas Feinberg | 2021-08-28 10:50:13 -0700 Ignis: zealot start Gnoll and human should do well with the flexibility, hill orc likes the fire, and mummy likes the rF, ha. -------------------------------------------------------------------------------- 7cb2ebde44 | Nicholas Feinberg | 2021-08-28 10:50:13 -0700 Ignis wrath: Fire Champion Chooses the toughest monster in LOS and gives it increased move speed and AF_FIRE permanently. Lots of conditions to try to choose only an interesting monster to fight, not a rat or whatever. Dare you risk the wrath... of the super fire yak? -------------------------------------------------------------------------------- d1c9835b8b | Nicholas Feinberg | 2021-08-28 10:50:13 -0700 Ignis wrath: shaft -------------------------------------------------------------------------------- c171122a48 | Nicholas Feinberg | 2021-08-28 10:50:07 -0700 Ignis wrath: fire elementals -------------------------------------------------------------------------------- 8762c4751e | Nicholas Feinberg | 2021-08-28 10:50:03 -0700 Ignis: add rF=0 to god wrath And tweak duration and messaging. -------------------------------------------------------------------------------- b194a03854 | Nicholas Feinberg | 2021-08-28 10:47:29 -0700 Ignis: wrath description -------------------------------------------------------------------------------- 8c10d7e454 | Nicholas Feinberg | 2021-08-28 10:47:29 -0700 Ignis: ignore amulets of faith And refactor the relevant code in the process. It might be nice to care about "faith (getting discounts on abilities), but maybe there are weird incentives..? Not handling it right now, anyway. -------------------------------------------------------------------------------- dc0d7ab00c | Nicholas Feinberg | 2021-08-28 10:47:19 -0700 Ignis: die After abandoment and mollification, Ignis dies. RIP. -------------------------------------------------------------------------------- 24c43e5e87 | Nicholas Feinberg | 2021-08-28 10:46:20 -0700 Ignis: Rising Flame ability -------------------------------------------------------------------------------- 44ce977461 | Nicholas Feinberg | 2021-08-28 10:46:20 -0700 Ignis: Sea of Fire ability -------------------------------------------------------------------------------- 8782af215f | Nicholas Feinberg | 2021-08-28 10:46:20 -0700 Ignis: Foxfire Swarm ability -------------------------------------------------------------------------------- 68b9825e2d | Nicholas Feinberg | 2021-08-28 10:46:14 -0700 Ignis: Add rF passive -------------------------------------------------------------------------------- 61f1a7678b | Nicholas Feinberg | 2021-08-28 10:46:11 -0700 Ignis: initial implementation A god specifically designed for use as a zealot start. What if your 'starting kit' was a god that got used up, burned out, and pushed you to risk its (weak) wrath? -------------------------------------------------------------------------------- f7720a2501 | Nicholas Feinberg | 2021-08-28 09:09:04 -0700 Fix evolution The last implementation of it required you to be at the next XL to evolve... which was impossible. When you did reach the next XL, you'd need to reach the one after that to evolve, and so on. Instead, require one XL worth of XP for each evolution. -------------------------------------------------------------------------------- 81c34554c2 | Matthew Daley | 2021-08-28 17:43:59 +0300 feat: Show turn counts and real game times in lobby This lets spectators find potentially interesting games to view, i.e. from a speedrunning perspective. webserver/process_handler.py: * Treat the turn count and duration (real game time) as "interesting info" in the wherefile. webserver/static/scripts/client.js: * Show the new turn count and duration fields. Keep the columns hidden until we see at least one game with the new fields, for nicer backwards compatibility. * While at it, rationalise the units shown for idle times ("min" -> "m", and drop the spaces). webserver/static/style.css, webserver/templates/client.html: * Add new fields, defaulting to be hidden until changed by client.js. -------------------------------------------------------------------------------- 4b70cb3502 | Edgar A. Bering IV | 2021-08-28 17:36:23 +0300 docs: update debian package name for DejaVu (Cebolla) Closes #2094 -------------------------------------------------------------------------------- cd7d0065d9 | Aliscans | 2021-08-28 17:30:15 +0300 Change the spelling of some words to Australian English. Change a few places where words were spelt with -eling at the end and where this is not a correct spelling according to https://www.australian-dictionary.com.au/wordcheck/. 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. This changes: channeling -> channelling dueling -> duelling groveling -> grovelling quarreling -> quarrelling raveling -> ravelling traveling -> travelling tunneling -> tunnelling Closes #2093 -------------------------------------------------------------------------------- 0b7dbbd7ef | Edgar A. Bering IV | 2021-08-28 17:20:41 +0300 fix: a crash bug in clua.target_desc (mgdelmonte) Closes #2090. -------------------------------------------------------------------------------- f02e23bfe7 | Aliscans | 2021-08-28 17:14:03 +0300 Show gnolls how many levels they need to reach a skill target Show gnolls how many levels they need to reach min delay / no shield penalty for an item. The game already told other species how much experience they needed to remove the penalty for a shield, or reach the minimum attack delay for a weapon. This change extends this to gnolls. It doesn't enable gnolls to set a target as they cannot vary how much experience they put into a skill. [ Committer's note: Closes #2085. Refactored lightly in action selection to deduplicate a condition. ] -------------------------------------------------------------------------------- 3f656e82c2 | Nicholas Feinberg | 2021-08-27 14:50:10 -0700 Reinforce transparent stone tiles To make them hopefully look a bit tougher and more distinct from transparent rock. -------------------------------------------------------------------------------- 1c0f7aac2b | Nicholas Feinberg | 2021-08-27 11:45:54 -0700 Fix Dj spell icons on local tiles Closes #2091 Closes #2095 -------------------------------------------------------------------------------- 36ea832cf1 | John Stahara | 2021-08-27 11:40:58 -0700 Don't ever consider books evil Unfortunate from a flavour perspective, but in gameplay terms it's never detrimental to read a book. This allows autopickup to read books, even if your current god forbids you from casting the spells contained within. It isn't the knowledge that's harmful, after all, but how you use it! -------------------------------------------------------------------------------- 048bc9fd10 | Kate | 2021-08-27 01:47:48 +0100 Remove unused handling for self-casting Tukima's Dance -------------------------------------------------------------------------------- 1e3a1f7914 | advil | 2021-08-26 20:29:42 -0400 fix: prevent bad array access for describing unid'd staves Also add a bunch of other checks around this particular crash; the basic problem here was that SK_NONE is greater than NUM_SKILLS and a lot of code that has skill-related arrays doesn't check bounds and stops at NUM_SKILLS. The specific crash was because `staff_skill` returns SK_NONE in cases where it can't find a matching skill, which happens when a staff is unid'd. Because the bug depended on what was in adjacent memory, the crash was somewhat variable. -------------------------------------------------------------------------------- 17d1ee0984 | advil | 2021-08-26 18:35:18 -0400 fix: transparent tags for some vaults It's better to mark vaults transparent than not, because that allows the builder to check for teleport closets itself, and also allows the placement script to more easily check that the intention indicated by a tag matches with what happens when the vault places. This commit has a batch of fixes for vaults that automated testing indicates should be marked transparent. This stops in a somewhat arbitrary place as I was working on this several months ago and haven't managed to get back to it, but eventually this should be checked for all vaults. This commit also includes a few teleport closet fixes for vaults that didn't immediately show up as being marked transparent. -------------------------------------------------------------------------------- 6aaddb815b | advil | 2021-08-26 18:35:18 -0400 feat: script options for checking vault opacity This new set of options to the placement checker script is designed to find vaults that are not marked as transparent but probably should be. To use this, make sure to test with enough iterations so that randomization can play out. It's actually also somewhat useful for finding vaults that aren't marked as transparent and have a teleport island, when going through vaults one by one. -------------------------------------------------------------------------------- c0b50483a2 | wheals | 2021-08-26 21:43:09 +0300 Interrupt explore by default when a shopping target is reached (perryprog) -------------------------------------------------------------------------------- a0e16d178b | wheals | 2021-08-26 21:43:07 +0300 Fix explore being interrupted by autopickupable items Caused by 14faa60; check_for_interesting_features uses the stash to determine whether to stop, but it was being called without actually updating the stash. -------------------------------------------------------------------------------- f6564f113a | Nicholas Feinberg | 2021-08-26 07:55:33 -0700 Remove riposte from long blades It was intended to create strategic variance by encouraging characters with more EV to use long blades and characters with less EV to use other weapon types. In practice, it just created more complexity without corresponding interesting decisions for players. It'd be possible to simplify into a damage bonus from EV (or Dodging, or Dex), which would accomplish the original design goal... but it's not obvious that said goal would produce good gameplay even if it worked. It's quite difficult to find alternative weapon gimmicks. Wu Jian has taken up much of the rest of the design space, and other common suggestions, e.g. adding innate SH to lbl, just add more numbers & problems to the game without contributing any real decisions. Correspondingly, long blades are mostly returned to their old stats from before 4dea7376dac , with some tweaks from ba988d45092 kept. Fencer's Gloves still have riposte until/unless we decide otherwise. -------------------------------------------------------------------------------- 8de209e91f | Nicholas Feinberg | 2021-08-25 18:59:24 -0700 Fix monster slime wall damage -------------------------------------------------------------------------------- 644a552097 | Nicholas Feinberg | 2021-08-25 18:49:31 -0700 Further spriggan druid desc fixes (dilly) -------------------------------------------------------------------------------- c0dc8c719c | Nicholas Feinberg | 2021-08-25 18:29:27 -0700 Remove more acid splash damage To simplify acid damage and make it more visible in monster descriptions, make acid spells deal all of their damage in the initial attack, rather than following up with some in a separate 'acid splash'. Since this acid splash did 2d4 to monsters and 4d5 to players, and I'm using the latter values for monster acid damage, this is a buff for allied ally damage. To compensate, I've lowered Fedhas oklob fire speed by 25%, roughly the complement of the damage increase. Other sources of allied monster acid damage, such as ?summoned yellow draconians or non-summoned oklobs under Fedhas, are still somewhat buffed, but that seems like a small change with few consequences. -------------------------------------------------------------------------------- f4e2d62f27 | Nicholas Feinberg | 2021-08-25 18:18:45 -0700 Split up acid_splash and corrosion -------------------------------------------------------------------------------- 1c58e7f47f | Nicholas Feinberg | 2021-08-25 18:04:40 -0700 Simplify acid cloud damage -------------------------------------------------------------------------------- 1afa1a9824 | Nicholas Feinberg | 2021-08-25 18:04:20 -0700 Remove unused splash_with_acid params -------------------------------------------------------------------------------- e619aef00b | Nicholas Feinberg | 2021-08-25 18:00:25 -0700 Simplify acid wall splashes -------------------------------------------------------------------------------- 1ef7cba1b3 | Nicholas Feinberg | 2021-08-25 17:27:54 -0700 Clarify sp druid death effect (dilly) It wasn't mentioned in the monster description before. -------------------------------------------------------------------------------- 79ebb2a17b | Kate | 2021-08-26 00:39:03 +0100 Add AoE resistible spells to the default force_targeter These targeters are useful for indicating affected monsters and their chances to resist AoE spells, but are normally only accessible through the quiver. Instead add various untargeted AoE resistible spells to the default list of spells where the targeter is always displayed. -------------------------------------------------------------------------------- 9004c80361 | Nicholas Feinberg | 2021-08-25 12:49:15 -0700 Rename Corrupt Locale -> Corrupt (gammafunk) Nothing to really disambiguate against and much more flavourful. -------------------------------------------------------------------------------- 46a7db7966 | Kate | 2021-08-25 18:52:34 +0100 Don't let Ghostly Sacrifice target projectiles (causative) Projectiles are always considered as "aligned" with other actors (since they never make actual direct attacks?), so orbs of destruction fired by anyone were considered valid targets for monster Ghostly Sacrifice. -------------------------------------------------------------------------------- b8bfbab023 | Kate | 2021-08-25 00:13:55 +0100 Shuffle squares for monster Upheaval animation As with player Upheaval, instead of always displaying them in the same order. -------------------------------------------------------------------------------- cf53092a1b | Kate | 2021-08-25 00:01:29 +0100 Remove some dead Upheaval code Since very shortly after the god was implemented, the code to have Upheaval occasionally destroy walls hasn't actually functioned. Also simplify monster Upheaval's implementation - it iterated over radius 2 but then only ever affected squares in radius 1, so make the code reflect that properly. -------------------------------------------------------------------------------- 639a1a48b9 | Kate | 2021-08-24 04:21:53 +0100 Don't crash when casting an uncapped summon Oops. -------------------------------------------------------------------------------- fa261e29c3 | Kate | 2021-08-24 03:42:48 +0100 Don't try to reroll Shadow Creature spell sets Since no monsters have variable spell sets any more. -------------------------------------------------------------------------------- 01758ec4b5 | Kate | 2021-08-24 03:21:47 +0100 Remove variable timeouts from capped summons Summon spells all had custom timers on how long a summon would remain after hitting the summon cap, but they almost all expired after 5-15 aut (with the only exceptions being Summon Horrible Things, and Summon Dragon, which expired after 40 aut). Instead of having a near-meaningless distinction here, make all capped summons expire after 10 aut. -------------------------------------------------------------------------------- 8580c7503b | Kate | 2021-08-24 03:21:34 +0100 Remove some obsolete summon cap handling Since Monstrous Menagerie no longer creates bands, it doesn't need special handling around summon caps. -------------------------------------------------------------------------------- fbb0926a3a | Kate | 2021-08-23 22:41:23 +0100 Use correct pronouns for monster targeting descriptions -------------------------------------------------------------------------------- 8e8b57cc88 | Kate | 2021-08-23 22:37:46 +0100 Improve skill descriptions for god-related skills Instead of adding some details for Trog only, include information about Invocations usage for all gods, as well as describing any god-hated skills (which is still only Trog in that case, but now properly extends the information to skills other than Spellcasting). -------------------------------------------------------------------------------- 68911e0c57 | advil | 2021-08-22 15:45:15 -0400 refactor: handle self-targeting checks better in beam.cc Xom's chessboard fakes smite targeting for a variety of effects by just setting the beam source to a target monster's position. This leads to some conflation of real self-targeting and fake smite-targeting in a bunch of subtle corner cases, and also led to 12637. Rather then handle this on case-by-case basis as in 395adb26f73b for poly and a708605c5b for teleport, this commit restores the general check from pre-395adb26f73 but makes it more restrictive. It also sets the agent for xom's chessboard actions (as the player, tbc) in the course of this. This commit should also fix some related weirdness with wrath that hasn't yet come up. -------------------------------------------------------------------------------- 79c9209bdd | Kate | 2021-08-22 20:17:53 +0100 Simplify some rain cloud behaviour Don't make the chance of rain clouds creating water depend on how much water or lava is adjacent to them. -------------------------------------------------------------------------------- 9cc4ca73b0 | Kate | 2021-08-22 20:17:39 +0100 Make the robe of Clouds' thunder passive So as to continue moving away from activated abilities on equipment (as with other unrands such as the cloak of the Thief and ratskin cloak), give the robe of Clouds a chance of creating a storm cloud on enemies within radius 2 each turn. Also mention its cloud immunity in the description. -------------------------------------------------------------------------------- 5c1c4949f7 | Kate | 2021-08-22 18:12:03 +0100 Fix spacing -------------------------------------------------------------------------------- 5d50cf8172 | Kate | 2021-08-22 18:11:36 +0100 Remove some obsolete ability code And an outdated comment. -------------------------------------------------------------------------------- c3c367e0a5 | Edgar A. Bering IV | 2021-08-22 16:38:42 +0300 feat: corrupt trees into demonic trees For Mliogotl and player corruption, turn (permanently) trees corrupted into demonic trees. This is technically not a "flavour" effect because of the difference in how they burn, but it's close enough and ultra flavourful. -------------------------------------------------------------------------------- b8ca4b6547 | Kate | 2021-08-22 02:59:18 +0100 Adjust some stat zero effects Replace 0 strength's regeneration reduction with -Regen in monster LOS (the same as the mutation), to give it an effect in combat without making resting take excessive time. Also replace 0 intelligence's 4/5 chance for scroll-reading to fail with -Scroll (since it no longer needs to be possible to read remove curse scrolls to unequip cursed -Int gear). This whole mechanic could probably be simplified further since it's such a rare occurence. -------------------------------------------------------------------------------- dd10bd25a4 | Kate | 2021-08-22 02:51:30 +0100 Add a description for the -Regen status light -------------------------------------------------------------------------------- b1a13b149e | Kate | 2021-08-22 01:15:53 +0100 Rework Sap Magic It was very overcomplicated for such a rare effect, and its implementation of applying multiple levels of spell failure penalty required the player to repeatedly check their spell success rates between each cast. Instead of the scaling penalty, make casting spells under Sap Magic always apply a short duration -Cast. (This also makes its effect on players more similar to its effect on monsters of applying antimagic - it'd probably be feasible to make the effects match and implement -Cast for monsters but this doesn't seem worth the effort.) Sap Magic also had a confusing 3/10 chance to have no effect when cast, despite being otherwise irresistible - just remove this failure chance entirely, since the spell already has a fairly low cast rate. -------------------------------------------------------------------------------- 086cc6695f | Nicholas Feinberg | 2021-08-21 14:58:14 -0700 Update Attr status description. -------------------------------------------------------------------------------- 7ea6ab310f | Nicholas Feinberg | 2021-08-21 14:56:42 -0700 Fix a 7-year-old typo oops -------------------------------------------------------------------------------- d9515000ea | Edgar A. Bering IV | 2021-08-21 20:00:48 +0300 fix: silence a compiler warning -------------------------------------------------------------------------------- 237fc358d9 | mgdelmonte | 2021-08-21 19:54:05 +0300 feat: lua access to monster targeting descriptions This commit adds target_desc, target_weapon, target_spell, and target_throw functions to the Lua monster_info object. target_desc returns the targeting description of the monster. The other function returns the descriptions shown if you target a monster with your weapon, a spell, or a thrown item. [ Committer's note: Closes #1922. Rebased and cleaned up commit history. Made the spell target_desc pick up all of the possible fancy addl descs and be future proof for them, as well as crash robust for spells that lack a hitfunc. ] -------------------------------------------------------------------------------- b260e8e558 | Edgar A. Bering IV | 2021-08-21 17:45:34 +0300 fix: Mlio spell logic fixes Move all corrupt locale casting to use the spell_logic structures. Clean up the code to use const refs instead of passing by value. Properly handle a friendly Mlio. -------------------------------------------------------------------------------- b12d812e02 | amcnicky | 2021-08-21 16:07:10 +0300 feat: Mlioglotl, an Abyss themed unique Mlioglotl is a mid game unique with the power to (temporarily) corrupt levels, spawning in Swamp, Vaults, Depths, and Abyss:2 onward. Mlio's corruption produces abyssal summons drawn from the full spawn table; a Swamp-depth character might have to run depending on the roll. The gameplay feel is to force the player to either avoid or swiftly kill before the summons and terrain get out of control. [ Committer's notes: buffed the damage, defenses, and casting frequencies so that Mlio hits appropriately hard for his locales, expanded the spawn range to include V:$ and U:4-5. Gave corruption guaranteed summons (and a roll), and allowed it to roll monsters from the full abyss table. Mlio might pull chaff to his aid, or he might get a hell sentinel and a bone dragon. There will be a lot of variability in the nature of encounters, but this is part of the design vision. The summon duration is shorter, to allow escapes. Simplified and refactored the monster version of corrupt, it doesn't need to be a complete mirror of the player mechanics. Especially don't recolour outside of Mlio's immediate locale. The temp terrain is placed for a shorter duration, so that a long encounter will get some "abyssal churn" feel. Fixed whitespace, cleared unneeded XXX comments other code clean-up. Moved Mlio to the appropriate place in Mon-data and used brown for the console colour so that glyphs don't overlap. Closes #2058 ] -------------------------------------------------------------------------------- 76b539d98b | Nicolae Carpathia | 2021-08-20 11:19:33 -0400 Rearrange existing quotes and add new ones Scroll of tele quote (ADMIN) moved to Swiftness, at PF's suggestion. Existing scroll of fear quote moved to /dev/null, it's not even by Plato, and replaced with old eidolon quote. Add new quotes, featuring T.S. Eliot, Homer, Lovecraft, Pablo Neruda, Shakespeare, Lord Byron, Nine Inch Nails, and more. -------------------------------------------------------------------------------- 1bb7f9241b | Kate | 2021-08-20 15:35:27 +0100 Tweak duel speech weighting So that adding new speech lines doesn't affect their chance to speak. -------------------------------------------------------------------------------- 0f8ce75afc | Kate | 2021-08-20 15:35:27 +0100 Fix spelling and some incorrect speech keys -------------------------------------------------------------------------------- 2b4a79830d | Edgar A. Bering IV | 2021-08-20 17:11:55 +0300 feat: recommend brigand over hunter for Ko (dilly) Recommendations are supposed to be thematic and flavourful as well as suited to the species. Kobolds have AM as a "ranged" recommend, and there's literally a Kobold Brigand monster. What could be more thematic than to be one yourself! Closes #2038 -------------------------------------------------------------------------------- ad6161974e | RojjaCebolla | 2021-08-20 16:57:14 +0300 Add a few more _anger_possessive_ strings -------------------------------------------------------------------------------- c0b1434407 | RojjaCebolla | 2021-08-20 16:56:23 +0300 Add pennants for duel spectators (text string) -------------------------------------------------------------------------------- 8eabd40a87 | RojjaCebolla | 2021-08-20 16:56:23 +0300 Add a couple adjective strings -------------------------------------------------------------------------------- dc40aaacc9 | RojjaCebolla | 2021-08-20 16:56:23 +0300 Add a few more actions for Okawaru Duel spectators -------------------------------------------------------------------------------- 0da4227f7a | RojjaCebolla | 2021-08-20 16:56:23 +0300 Re-add fruit names to the string generators This brings back some of the fruits of 1eb5282a -------------------------------------------------------------------------------- 8e425c6592 | Edgar A. Bering IV | 2021-08-20 13:44:03 +0300 doc: changelog for 0.27.1 main and debian -------------------------------------------------------------------------------- cbf37d0371 | robertxgray | 2021-08-20 12:34:40 +0300 Vampires are not (pure) lifeless undead This cleans up the following undesired effects: - Rage and lignification potions are tagged as useless. - Wanderers can't receive such potions. - Poison ring tagged as useless while bloddless and other poison related side effects. - Kikubaaqudgha does not grant Sublimation of Blood. [ Committer's note: Closes #2055. Adjusted commit message. Tweaked a few other vampire hacks in spl-util.cc. ] -------------------------------------------------------------------------------- b7ea06bb7e | Edgar A. Bering IV | 2021-08-20 12:21:03 +0300 Revert "Don't consider rings of rPois useless for bloodless vampires" This reverts commit e31878e1fe37459b33a9e04917198de829909ca1. A different solution will be commited subsequently. -------------------------------------------------------------------------------- a7b0c1cb7f | Edgar A. Bering IV | 2021-08-20 12:19:53 +0300 doc: update CREDITS -------------------------------------------------------------------------------- 50b444eb91 | Zhang Kai | 2021-08-20 12:17:55 +0300 Update branches.txt Add translation. 增添翻译。 [ Committer's note: Closes #2063. Fixed whitespace, removed incorrectly placed credit line. Corresponding with the PR author on appropriate CREDITS entry. ] -------------------------------------------------------------------------------- b0f16cbe65 | John Stahara | 2021-08-20 12:14:55 +0300 indent fix -------------------------------------------------------------------------------- 080cfb6e2c | John Stahara | 2021-08-20 12:14:55 +0300 "Okay, then" on saying 'n' to warn_hatches prompts -------------------------------------------------------------------------------- 14faa605fd | Aliscans | 2021-08-20 12:01:39 +0300 Check for monsters, objects & features as soon as you move. (#2041) Check for things after the player moves, rather than waiting for the start of the next turn. Improve the accuracy of a comment in check_for_interesting_features(). Co-authored-by: Aliscans -------------------------------------------------------------------------------- ea8a313d67 | kippig | 2021-08-20 11:51:28 +0300 vaults: edit tgw_trog vault to avoid rat spawns late Ran into some rats in depths and it felt bad. This change removes them and makes it a bit more dangerous. [ Committer's note: Closes #2050. ] -------------------------------------------------------------------------------- c2c9e32840 | Nicholas Feinberg | 2021-08-19 20:21:31 -0700 Don't recalculate MP when Evo is trained They're no longer connected! -------------------------------------------------------------------------------- 3091681fa3 | Nicholas Feinberg | 2021-08-19 19:57:26 -0700 Remove Stairs (The card.) Partially implemented in 30824b7084af3c2dce35d as a debugging tool for the Xom stair-moving effect and left around ever since. -------------------------------------------------------------------------------- 655a12affb | Nicholas Feinberg | 2021-08-19 19:34:39 -0700 Always show all cards in ?/ Since there are few enough to show, these days. -------------------------------------------------------------------------------- f40de95187 | advil | 2021-08-19 16:56:24 -0400 fix: adjust buggy rest delay check Two changes: * tweak the base delay up, recalibrated by ogre healing rather than troll healing. (Turns out regen matters!) * account for collapse, which gives a 4x multiplier on time to full heal, and so collapsed characters with lots of hp would hit the old delay without too much trouble. -------------------------------------------------------------------------------- 2406090169 | advil | 2021-08-19 16:56:24 -0400 fix: accept numpad enter keycode for menu "enter" I'm not sure how reliably this keycode gets used, but it sometimes can be, so accept it in menus. -------------------------------------------------------------------------------- 214da3ba67 | Kate | 2021-08-19 20:47:49 +0100 Fix some invalid vault syntax Just place a fixed amount of a few items that were trying (and failing) to create a randomised stack size. -------------------------------------------------------------------------------- d305098ac3 | Kate | 2021-08-19 20:47:06 +0100 Add Okawaru to tgw_lugonu_bribe Offer Okawaru worshippers some nice summoning items. -------------------------------------------------------------------------------- 298df9dbad | advil | 2021-08-18 20:42:50 -0400 fix: refix something that is *not* an off-by-one-error da2e87d06967ae turns out not to have been an off-by-one error, but rather the result of bad initial calculations when the menu is not yet displayed, resulting in invalid scroll values. In addition, da2e87d06967ae broke scrolling in menus that don't use a hover. This wasn't noticed before now partly because webtiles still works, the bug seems to be a bit erratic, and in the words of one dev, "oh so that key is actually broke and its not my broken keyboard". -------------------------------------------------------------------------------- a584919b07 | Nicholas Feinberg | 2021-08-18 15:09:08 -0700 Warn about unsilencable spells Since players get surprised by these all the time. -------------------------------------------------------------------------------- 74814aa22a | advil | 2021-08-18 14:05:46 -0400 fix: more player shadow vs wrath avatar cleanups I went through references to MONS_PLAYER_SHADOW as well as mons_is_player_shadow to double check them vs. the previous commit and f9c1391b6; these are the resulting changes. -------------------------------------------------------------------------------- 4e69de0771 | advil | 2021-08-18 13:36:06 -0400 fix: don't crash on fedhas wave wrath Via side effects, this wrath action results in `move_player_to_grid` which puts the player on the same square as the fake monster casting the spell. This monster reuses shadow creature code, but as of f9c1391b6 no longer returns true for mons_is_player_shadow, so an ASSERT got tripped. This commit just adds another similar function for god wrath so that at least this special case can be checked without knowing implementation details, but also this implementation of wrath is not ideal. -------------------------------------------------------------------------------- 7c5eadcf33 | advil | 2021-08-18 10:36:43 -0400 fix: don't use homebrew includes over contribs Mac clang imposes `-I /usr/local/include` on builds, which takes precedence over our use of `-isystem` and leads to an unfortunate interaction with homebrew. Regular mac build tools don't actually use this location, and nor does macports, but homebrew does. For example if the user has SDL2 installed via homebrew, those includes will be used even though the build tries to link with the contrib version of SDL2, resulting in build failure. (This has been reported for a couple of years, it seems.) There may be a number of ways to fix this, and I'm not sure I'm a fan of using -isystem for contrib libraries that we are providing and maintaining and that aren't located in a system include path, but this commit takes a more minimal approach to working around this issue, just ensuring that checking this directory takes precedence under any `-isystem` includes introduced in the Makefile. (Of course, it's arguably a bug that mac clang does this with `-I` instead of `-isystem`, but good luck getting that changed.) Possibly in the future `-isystem` should be switched back to `-I` for contribs so that we have better control over this (by using `-isystem` we ceded control to any way of setting `-I` e.g. via environment variables), but doing so would require a lot of testing. (See e84909d808a7 for where this originated; from the dev logs I suspect this may be partly about suppressing warnings from include headers as well.) -------------------------------------------------------------------------------- 42b4daccc1 | advil | 2021-08-17 16:20:16 -0400 fix: remove accidental debug code -------------------------------------------------------------------------------- 9e3c00f94b | advil | 2021-08-17 15:12:35 -0400 fix: use correct names for non-alpha ctrl keys in SDL This was handled correctly for key help, but not the macro menu. I know I wrote this code in 378ef55cfb79986e3 but this is an extremely magical looking invocation, I wonder if there's a better option? -------------------------------------------------------------------------------- 0687de6023 | advil | 2021-08-17 15:12:35 -0400 fix: local tiles ctrl-key names (perryprog) This got overly #ifdef'd in 643d97a57c66bc5, but the issue hasn't popped up yet because that commit wasn't in the 0.27 release. -------------------------------------------------------------------------------- b5bb297faa | Nicholas Feinberg | 2021-08-17 10:28:51 -0700 Ban devolution as tempmut Seems very unkind to have our good abyssal starry friends give out permanent badmuts, even indirectly. This code is not great. -------------------------------------------------------------------------------- c707856eba | Nicholas Feinberg | 2021-08-17 10:28:51 -0700 New badmutation: Devolution Evolution's evil twin. Gives out a couple of bad mutations over time (currently once every 1/4th of an XL), then goes away. Better cure it fast, huh? -------------------------------------------------------------------------------- 9383fbc173 | Nicholas Feinberg | 2021-08-17 10:28:51 -0700 Solve Darwin's dilemma The Evolution mutation worked in a strange, complex, and not very satisfying way. Once every 500-1500 turns (!), it would check to see whether the total accumulated XP you'd gotten since your last evolution mutation, times the mutation level, times 1d10, was greater than the XP needed for your next XL. (So, it took a long time to do anything.) Once it triggered, it had a 20% chance of trying to remove a bad mut, 64% of applying a good mut, and 16% of applying a bad mut. Regardless, it had a 10% chance of removing itself. Surprisingly often, it would remove itself without doing much of anything at all. Instead, let's simplify. Each level of evolution is now worth 2 good muts. Once per XL's worth of experience, you'll get a good mut. After the second mut, you'll lose a level of evolution. It's a 'delayed gift box' mutation - very nice in the medium term, does nothing in the short term. Do you really want to quaff !mut if you still have a level of evolution pending? Tough choice... Don't worry - failures die fast. -------------------------------------------------------------------------------- 2552a6465f | advil | 2021-08-17 12:21:36 -0400 fix: correctly set target when firing untargeted abilities This keeps autofight_check from applying to quivered abilities without a targeter triggered by `f`, reported by discord user rypofalem. Applies to things like DD healing, ely abilities, etc. -------------------------------------------------------------------------------- 48023c6eb5 | Edgar A. Bering IV | 2021-08-17 18:12:29 +0300 fix: make confused trees claw the walls (PleasingFungus) -------------------------------------------------------------------------------- 12f296af85 | advil | 2021-08-17 10:38:20 -0400 feat: implement CTRL/SHIFT cues for */ in webtiles These are if anything more important than in console these days, since you may need to use them to override browser shortcuts on windows/linux, but the message window cues were only implemented on console. This just uses the more div to show custom messages. -------------------------------------------------------------------------------- b3f9c8a74a | advil | 2021-08-17 10:38:20 -0400 fix: default ctrl/shift behavior for numpad `*`/`/` This allows rebinding these keys, in contrast to regular * and /. -------------------------------------------------------------------------------- ed537f1d7e | advil | 2021-08-17 10:38:20 -0400 Revert "fix: temporarily disable new keymappings except 0-9" This restores full new-numpad handling from the commit sequence pre-tournament. * In trunk, people who have macros set to F1-Fn using keycodes in the -1000 range will need to adjust those to the correct keycode range (-265 etc). There'll probably be complaints about this, but this change needs to happen some time or other. * Distinct keycodes for more number pad keys are enabled; this is a bit keyboard dependent. These should already, hopefully, have reasonable default bindings. This reverts commit 662ed650adae8ada8c3a4fa3e5978df99d465dd1. -------------------------------------------------------------------------------- 780c878087 | Edgar A. Bering IV | 2021-08-17 17:16:07 +0300 fix: describe frost creeping from trees -------------------------------------------------------------------------------- 7777c1c129 | Edgar A. Bering IV | 2021-08-17 17:13:45 +0300 fix: a frozen tree form information leak (12624) -------------------------------------------------------------------------------- 638331083e | Edgar A. Bering IV | 2021-08-17 16:07:51 +0300 fix: update item seen status in relevant places (12626) This also fixes sporadic reports of monsters still picking up items a player has seen: the SEEN flag was not being set until the _prep_input stage of the player's turn, so a monster could walk into view and wield an item just revealed by the player. -------------------------------------------------------------------------------- 911e812f60 | Edgar A. Bering IV | 2021-08-17 10:13:02 +0300 fix: warnings for hasty artefacts (Majang) -------------------------------------------------------------------------------- 5eb9c77d6f | Edgar A. Bering IV | 2021-08-17 09:54:19 +0300 fix: set an appropriate string for a const prop (12629) Also closes #2070 and #2071. The bug was that both ITEM_TILE_KEY and WORN_TILE_KEY had the same value; on local tiles this would manifest by occasionally tripping an assert when a doll tyle would pass through tile_main_info. On webtiles javascript is more flexible and happily indexed the strange tiles requested, resulting in player doll tiles appearing in item stack icons and unseen mosnter tiles appearing on the floor. -------------------------------------------------------------------------------- a708605c5b | Nicholas Feinberg | 2021-08-16 19:37:26 -0700 hack: Make monsters not res tele self Very curious when this bug was introduced. I saw it reported a few months ago, but I'm not sure it was in 0.26. -------------------------------------------------------------------------------- d8966da807 | Nicholas Feinberg | 2021-08-16 19:24:00 -0700 Make potions of attraction translocate (kate) To preserve their utility for stabbing sleeping monsters (fun and potentially risky!) while keeping them consistent/intuitive with effects like Lesser Beckoning and Gell's Gravitas, which do wake monsters, retheme Attraction as translocating its victims rather than 'pulling' them. This is also more consistent with its behaviour wrt terrain obstacles like deep water and lava. The tloc clouds might have other weird effects, but even in zigs, they don't seem to do an awful lot in practice. This reverts commit 8d3330d46d1c987e9b2bae9433c9aefaa59c07d7. -------------------------------------------------------------------------------- a704b87b3c | Nicholas Feinberg | 2021-08-16 19:03:33 -0700 Fix Oka/Trog gift message order Maybe! This probably breaks something else important. -------------------------------------------------------------------------------- b2089b6bb7 | Edgar A. Bering IV | 2021-08-17 00:21:42 +0300 fix: try to place the entire requested number of maps with place_maps Since 2010, the dgn.place_maps function would attempt to place the requested number of maps... until one failed to place for any reason, then it would give up. Before then it would error, so this was an improvement. However the commit messages around that time suggest that the goal was for the function to continue in its attempt, and return the total number of placed vaults. This change should hopefully make some of our serial vaults shine a bit better. If they become too overwrought we might need to retune the number of serial maps each one places, but in my local testing it seemed ok. -------------------------------------------------------------------------------- 0eb5c47895 | Kate | 2021-08-16 22:07:03 +0100 Adjust "toggle layers" keybinds Use 'a' to toggle all visible layers instead of escape, so that escape can be used for its expected behaviour of cancelling out of the prompt. -------------------------------------------------------------------------------- 6f4fce7e9c | Kate | 2021-08-16 22:04:31 +0100 Dismiss summoned allies on joining Okawaru Instead of turning them hostile. -------------------------------------------------------------------------------- 787e458d71 | Kate | 2021-08-16 03:27:54 +0100 Revert "chore: add a trunk reminder for the 0.27 tournament" Tournament over! This reverts commit 06dbe2521f2f3a55d5c719914c39637abdb66fd0. -------------------------------------------------------------------------------- f39b64463d | Kate | 2021-08-16 03:09:24 +0100 Remove a duplicate failure check from +Blink So that (for example) activating it with Ozo's Armour active gives the prompt to abort before checking whether the ability fails. -------------------------------------------------------------------------------- 745f8db33d | Kate | 2021-08-16 02:54:43 +0100 Add a missing return -------------------------------------------------------------------------------- 5b07bef5ff | Kate | 2021-08-16 02:15:31 +0100 Give Okawaru a no-allies conduct Okawaru now demands that the player fight alone and prevents all allies, functioning the same as Ru's Sacrifice Love while worshipped. Requiring that the player fight alone fits well into Okawaru's theme (and has already been shown to work well as a conduct under Ru) so should let the god remain strong and straightforward but with a noticeable downside. -------------------------------------------------------------------------------- 7b975550ec | Kate | 2021-08-16 02:07:47 +0100 New Okawaru ability: Duel Granted at 5* (with Finesse moving earlier, to 4*), the Duel ability smite-targets a single non-summoned enemy in LOS (which must be threat level "tough" or higher), and transports them and the player to an Arena portal vault. The ability is aimed at giving Okawaru worshippers a more exciting top-end power, letting them isolate key foes and (alongside the upcoming conduct) fitting with the god's theme of appreciating the player proving themselves in combat. Invocations skill currently only affects success rate, but could possibly be used to give duels a power-dependent time limit. Water/lava-only monsters cannot be dueled, and banishment from within the Arena is blocked for both the player and monster. Winning the duel opens a gate to return from the portal vault, and the player will be forcibly teleported back after a short duration (to give them some time to loot before leaving). The Arena vault itself has a few cosmetic variations - any future variants should remain simple, with minimal terrain, and should be small enough for the whole arena to be in LOS on arrival. Each Arena also includes some favoured of Okawaru spectating the duel and cheering/jeering, and these could use some custom tiles and possibly more speech lines. -------------------------------------------------------------------------------- 7eff39e849 | Kate | 2021-08-15 22:21:15 +0100 Remove remaining support for mechanical traps Cleans up a large amount of dead code, with a few very minor gameplay implications - monster intelligence no longer has any effect on whether they try to avoid specific traps, since its only remaining effect was on friendlies avoiding teleportation traps. Instead of having only intelligent allies avoid them, let all allies avoid them. -------------------------------------------------------------------------------- 4af1e16f07 | Kate | 2021-08-15 22:21:15 +0100 Remove mechanical traps from Sprints They were already only a few left, and none of them were likely to have meaningful effects. Also clean up a couple of other vault definitions with '~' glyphs that weren't used in the vault itself any more. -------------------------------------------------------------------------------- e36b712cf9 | Kate | 2021-08-15 22:20:58 +0100 Fix spelling A pesky 'z' snuck back in. -------------------------------------------------------------------------------- 83978e0af5 | Nicholas Feinberg | 2021-08-15 13:42:48 -0700 De-indent Ignition logic -------------------------------------------------------------------------------- 3afc62176d | Nicholas Feinberg | 2021-08-15 13:38:17 -0700 Nerf Robin's damage Reduce back to 0.26 levels. (This is in response to a big spike in Robin kills in 0.27 - Robin was overlooked in those changes.) -------------------------------------------------------------------------------- bfbcaea002 | Nicholas Feinberg | 2021-08-15 13:34:54 -0700 Give Sigmund his slow scythe back 581982f5c1d5d0416b5a increased Sigmund's attack speed by 33% (from 15 aut/swing to 10), which dramatically increased his lethality. Let's bring him back to his usual level of cruelty. -------------------------------------------------------------------------------- e028cf09b9 | Nicholas Feinberg | 2021-08-15 13:34:23 -0700 Cut Jackal spawn rate considerably This rose by about 75% from 0.26 to 0.27, which wasn't intended and considerably increased early game caster deaths. There's probably more cleanup to be done here. This seems to increase D:1 XP somewhat; that might have other knock-on effects... -------------------------------------------------------------------------------- 77845bc91e | Nicholas Feinberg | 2021-08-15 13:33:42 -0700 Add a message for dj quaffing magic When quaff-iding !magic, add a message indicating that it was useless for you. -------------------------------------------------------------------------------- 10db4a4e68 | Nicholas Feinberg | 2021-08-15 13:33:22 -0700 Remove 8x from starburst damage description Not really meaningful. Should Fireball be 9x..? -------------------------------------------------------------------------------- 1a3d647539 | Nicholas Feinberg | 2021-08-15 13:32:55 -0700 Tighten up Usk description Remove some distracting fluff to make it clearer what 'the dance' is. -------------------------------------------------------------------------------- 5ad2e3275a | Nicholas Feinberg | 2021-08-15 13:32:29 -0700 Fix the build -------------------------------------------------------------------------------- f2ccef998a | Nicholas Feinberg | 2021-08-15 13:28:01 -0700 Make all shields only use Dex Instead of kite & large shields using a mix of strength and dex for bonuses. I doubt this will have a large impact on most characters, but should make shields a little simpler to reason about, and will reinforce Dex's role as a defensively focused attribute. -------------------------------------------------------------------------------- 6dc78333b9 | Nicholas Feinberg | 2021-08-15 13:27:45 -0700 Randomize wizmode player ghost names Seemed funny. -------------------------------------------------------------------------------- 162c5fecbd | Nicholas Feinberg | 2021-08-15 13:27:26 -0700 Customize antimagic wield messages for dj Since it has no effect on them. -------------------------------------------------------------------------------- 722926ba4e | Nicholas Feinberg | 2021-08-15 13:27:10 -0700 Remove nonexistent prop references Added in 0d0c82d5f74 but never actually implemented. -------------------------------------------------------------------------------- 184090c6a4 | Nicholas Feinberg | 2021-08-15 13:27:08 -0700 Constify almost all string literal props To avoid silly issues caused by typos. The rest should probably be constified too, I just ran out of energy. -------------------------------------------------------------------------------- 3b27209acc | Nicholas Feinberg | 2021-08-15 13:21:57 -0700 Remove separate acc/damage plusses Funny antique leftover in vaults parsing code. -------------------------------------------------------------------------------- e0fec98b5a | Nicholas Feinberg | 2021-08-15 13:21:45 -0700 Remove curses A few last leftovers. -------------------------------------------------------------------------------- 9f22321abd | Nicholas Feinberg | 2021-08-15 13:21:27 -0700 Standardize more monster Blink spells This should again have very few gameplay effects, but along with fixing the sap magic interaction, this will also cause blink range, blink away, and blink close to cause (a tiny amount of) noise. Exciting! -------------------------------------------------------------------------------- 09c23b12f5 | Nicholas Feinberg | 2021-08-15 13:21:12 -0700 Standardize monster Blink spell logic Remove a weird special code branch. This should have very few gameplay effects, though does mean that sap magic will interact properly with Blink. -------------------------------------------------------------------------------- d229782820 | Nicholas Feinberg | 2021-08-15 13:20:18 -0700 Fix MCC goldification Looks like it was intended that MCC would still make gold under Gozag, but one vital check was missed. -------------------------------------------------------------------------------- f319017eea | Nicholas Feinberg | 2021-08-15 13:16:20 -0700 Simplify find_maxwells_possibles() Use grid_distance() instead of reimplementing it and de-indent. -------------------------------------------------------------------------------- 0a0d85e590 | Nicholas Feinberg | 2021-08-15 13:16:20 -0700 Give Maxwell's LOS range Range was limited to 5 to avoid risk-free murder of statues, but, as a level 8 spell, it's probably fine to murder statues freely. It's simpler to reason about the spell if it can hit anywhere in LOS - players already get confused about the delayed targeting, so we don't need to add more space for ambiguity. (If it did miss due to being outside range, it'd be quite unclear what had happened.) -------------------------------------------------------------------------------- 71813d69f4 | Nicholas Feinberg | 2021-08-15 13:16:20 -0700 Simplify maxwell's name code monster::name already handles invisible monsters, and we don't have to worry about ones around corners. -------------------------------------------------------------------------------- ff2bc6137f | Nicholas Feinberg | 2021-08-15 13:16:20 -0700 Use constants for Maxwell's props To avoid simple errors. -------------------------------------------------------------------------------- fe3a445f75 | Nicholas Feinberg | 2021-08-15 13:10:50 -0700 Improve maxwell's no-target message Clarify that it failed due to a lack of target. ('Nothing happens' is very unclear in this context! And many others...) Also, de-indent. -------------------------------------------------------------------------------- 6365dcfadc | Nicholas Feinberg | 2021-08-15 13:10:50 -0700 Add a message for Maxwell's charge To clarify that something is actually happening when you hit '.'. The flashy status effect is cool, but very easy to miss if you aren't looking for it. -------------------------------------------------------------------------------- ab93a79d97 | Nicholas Feinberg | 2021-08-15 13:10:49 -0700 Tweak Coupling desc Clarify that you need to channel. Remove a mention of relec - not a confusion people seem likely to have. -------------------------------------------------------------------------------- 182d1643c2 | Nicholas Feinberg | 2021-08-15 13:09:04 -0700 Trigger battlesphere on staff of battle hits It seems cool. -------------------------------------------------------------------------------- a8238b5478 | Nicholas Feinberg | 2021-08-15 13:08:02 -0700 Move mobile golems onto 9 The '8' glyph was overstuffed, with 22ish monsters, while '9' had only 3. Shifting all mobile monsters from '8' to '9' creates a much better balance: 16 '9's and 9 '8's. If we want to have more golems or statues later, this should give us more flexibility. It also means that saltling no longer shares a glyph & colour with pillars of salt & diamond obelisks. -------------------------------------------------------------------------------- d52c3af447 | Nicholas Feinberg | 2021-08-15 13:05:44 -0700 Simplify airstrike damage Remove the floor of 3 on bonus damage from surrounding empty spaces. Now that we display this to players, it's too confusing to try to explain. This is a small nerf. -------------------------------------------------------------------------------- 176428ccee | Nicholas Feinberg | 2021-08-15 13:05:42 -0700 Display airstrike bonus in the targeter -------------------------------------------------------------------------------- febfb30b37 | Nicholas Feinberg | 2021-08-15 13:04:56 -0700 Show empty spaces around Airstrike targets And avoid information leaks. -------------------------------------------------------------------------------- e8fccdb193 | Nicholas Feinberg | 2021-08-15 13:04:55 -0700 Add an airstrike targeter Show a brighter or darker target indicator based on the number of empty spaces around the target. -------------------------------------------------------------------------------- 4aefe609b9 | Nicholas Feinberg | 2021-08-15 13:04:55 -0700 Show shatter damage in the targeter Highlight susceptible enemies with AFF_MULTIPLE and show enemies that take reduced damage (eg jellies) with AFF_MAYBE. -------------------------------------------------------------------------------- 63affc0d33 | Nicholas Feinberg | 2021-08-15 13:04:55 -0700 Make the Shatter targeter more precise Show visible affected monsters & walls, including the chance to shatter different terrain types (roughly). -------------------------------------------------------------------------------- 99093fa9e1 | Nicholas Feinberg | 2021-08-15 13:02:34 -0700 Remove the rune requirement to enter ziggurats This was added in 07949ec7b9c0 as a replacement for the old gold-based ziggurat entry cost, rather than as something with a solid justification in itself. Later discussions (e.g. https://s-z.org/crawl-dev/%23%23crawl-dev-20140929.lg ) suggested that the reason for the 2-rune requirement was as a 'progression' between Vaults and Zot. The Zot rune lock exists so that players are forced to battle the difficult and exciting encounters guarding runes before winning the game, and the Vaults rune lock likewise exists to encourage players to get at least one rune earlier, while the earlier S runes are still challenging. The Zig rune lock, in contrast, has no real justification other than history. So let's cut it! -------------------------------------------------------------------------------- cafe5c4f27 | Nicholas Feinberg | 2021-08-15 13:01:55 -0700 Give Enchanters invisibility again Corona is not a very fun spell to use. The player is being asked to spend their time flipping a coin, and, unlike Ensorcelled Hibernation or Petrify or similar spells, they don't get a satisfying reward. Instead, they get a roughly 20% accuracy increase, which is really quite hard to notice. Most of the time, players are better off throwing stones or doing almost anything else. So, we'll remove Corona from the Enchanter starting book (that is, leaving them without a level 1 spell) and give them a single potion of invisiblity instead. This should be a net buff to the background overall. (It's a nerf to muen, but mummies should be used to suffering by now.) Arkane markspersons will be addressed in some way once ranged combat is reworked. They aren't changed in this commit. Does not revert 64f0e6ef8afa5d38b99351a6346e47b553adcc76 . -------------------------------------------------------------------------------- 027562a8d8 | advil | 2021-08-15 09:41:55 -0400 refactor: improve Menu action api a bit (take 2) Previously, the general on_single_selection function needed to handle selection for every MenuEntry, leading to things like conditioning on hotkeys in an awkward way, code being split up, etc. -- at least for the Menu use cases I've been introducing in the 0.27 cycle (macro submenus and the like). This commit lets a MenuEntry be defined directly with an action in the form of an on_select function, making for more coherent (though not less verbose) code in macro.cc. This reverts commit e9cb50d38746ba62bce27ec046d3c630cd5bc1b2. -------------------------------------------------------------------------------- cbb86046cc | Kate | 2021-08-15 00:38:20 +0100 Rebrace -------------------------------------------------------------------------------- e31878e1fe | Kate | 2021-08-15 00:37:39 +0100 Don't consider rings of rPois useless for bloodless vampires The useless item filter shouldn't drop items which will become useful again on returning to life. -------------------------------------------------------------------------------- f70498e230 | Kate | 2021-08-14 23:25:11 +0100 Improve vampire transformation messages -------------------------------------------------------------------------------- 8d3330d46d | Kate | 2021-08-14 23:25:11 +0100 Make potions of attraction wake up monsters Other methods of forced movement (Beckoning, Gravitas, etc) all wake monsters up, so potions of attraction not doing so is fairly unintuitive. -------------------------------------------------------------------------------- 73ec313a74 | Nicholas Feinberg | 2021-08-13 19:30:46 -0700 Fix yellow drac monster cast messages Broken since 29bf9f277ad , 2016. -------------------------------------------------------------------------------- e9cb50d387 | advil | 2021-08-13 19:18:01 -0400 Revert "refactor: improve Menu action api a bit" This broke some inventory menus, apparently. I don't have time to do a direct fix right now. This reverts commit 1b086527081208bf4a99ba5dbfafc23619dfe122. -------------------------------------------------------------------------------- fd0ec89410 | advil | 2021-08-13 12:01:58 -0400 doc: fix a confused comment -------------------------------------------------------------------------------- 1b08652708 | advil | 2021-08-13 11:52:12 -0400 refactor: improve Menu action api a bit Previously, the general on_single_selection function needed to handle selection for every MenuEntry, leading to things like conditioning on hotkeys in an awkward way, code being split up, etc. -- at least for the Menu use cases I've been introducing in the 0.27 cycle (macro submenus and the like). This commit lets a MenuEntry be defined directly with an action in the form of an on_select function, making for more coherent (though not less verbose) code in macro.cc. -------------------------------------------------------------------------------- a53d8862b5 | advil | 2021-08-13 11:52:12 -0400 refactor: unify some slaying calculations This is a followup to 09634a79b; adopting the assumption there that this calculation should be the same for monsters and players, just unify the code so they would be modified together. (Also, add a comment on the oddity of this calculation.) -------------------------------------------------------------------------------- a52ba8600a | Nicholas Feinberg | 2021-08-12 10:46:39 -0700 Redewiggle Closes #1825. -------------------------------------------------------------------------------- 278a0e9555 | Nicholas Feinberg | 2021-08-12 10:34:31 -0700 Rewriggl This reverts commit 9df8b82d6f4c636b92ce8c650f64e25a7c1e846f. -------------------------------------------------------------------------------- 9df8b82d6f | Nicholas Feinberg | 2021-08-12 10:32:48 -0700 Dewriggl -------------------------------------------------------------------------------- b8161351ab | advil | 2021-08-12 13:13:46 -0400 fix: rework fungal movement behavior Previously, fungus movement constraints were checked (at least) once per square they consider moving to. For deathcaps and wandering mushrooms, this is fine; their constraint is absolute. For lurking horrors, this led to some odd behavior: the `random2` call is rerolled for every possible target square, leading to a chance for movement that is a bit hard to reason about, and determined largely by the degree of openness around the monster. Various people have also reported that lurking horror movement patterns have changed, with them becoming more likely to charge and having weirder ("wiggly") paths. I *think* that to the extent this is true it is because of subtle interactions with changes in monster pathing over time: monsters consider more path options than they used to (I think), and so the odds of them charging at a distance have changed, and their paths are drawn from a wider variety of indirect paths. There may also have been an interaction with the introduction of squarelos. Though I have tested them with versions going back to 0.12 and the changes are not gigantic. This commit moves the movement check out of the low-level movement code, and so does the random check only once. This means that a lurking horror always has exactly 1 in LOS+1 chances of moving at the edge of LOS, rather than up to 5 in LOS+1 chances depending on the terrain. One noticeable side effect of this change is that a wandering mushroom at the edge of los will follow a foe as they move out of los, rather than giving the foe a turn out of los. This is because the sequencing is that the player moves, the fungus is out of los, and then can move. On the old code, the movement target was also considered, perhaps for this exact scenario. So if players find this too confusing, it may be necessary to restore some version of it at least for wandering mushrooms and deathcaps. I don't think lurking horrors would need it. -------------------------------------------------------------------------------- 169bfb5c5e | advil | 2021-08-12 10:27:47 -0400 fix: indicate SK_THROWING as a skill for stones (mishima) The only impact that I know of is that the skill will show up by default in the skill menu, but there could be other side effects. -------------------------------------------------------------------------------- 2bf3c13a2f | advil | 2021-08-12 00:54:00 -0400 fix: clean up redundant warning prompts This affected bad items when no hostiles were in view, they led to a double prompt. -------------------------------------------------------------------------------- 53fca2b799 | advil | 2021-08-12 00:54:00 -0400 feat: targeter and range checks for scroll of torment This also fixes (?) the handling of torment resistance in monster_info, where it seems to have been mostly ignored. Unless I'm missing something... -------------------------------------------------------------------------------- a44e4a4e2b | advil | 2021-08-12 00:54:00 -0400 fix: don't show ranged to-hit for non-missiles in default targeter This was specifically showing up for scrolls of torment, which don't have a targeter, but all of the details that this prevents are applicable only when this targeting behaviour is used for missiles. -------------------------------------------------------------------------------- 7ef01f2898 | hellmonk | 2021-08-11 23:11:07 -0400 feat: New ghost vault with an iron shot theme -------------------------------------------------------------------------------- 8873947cb4 | hellmonk | 2021-08-11 21:46:24 -0400 Improve descriptions of some weapon types (hawthornbunny) -------------------------------------------------------------------------------- 8b7c386d52 | advil | 2021-08-11 18:01:45 -0400 fix: use current los for lurking horror movement checks This doesn't really fix whatever general problems there may be with lurking horror movement, but it at least keeps them from getting stuck at the edge of Barachi vision range. (It shouldn't affect smaller ranges significantly because of the you.see_cell(targ) check.) -------------------------------------------------------------------------------- 844de0d849 | advil | 2021-08-11 17:07:12 -0400 fix: quiver range check for blinkbolt When there is no enemy in blinkbolt range, gray the quiver and improve autofight messaging. -------------------------------------------------------------------------------- c083491d3f | advil | 2021-08-11 16:59:27 -0400 fix: enforce range in blinkbolt targeting (kate) Previously, you could use ! or @ to target an enemy out of range, and blink to the end of range along the bolt path. This imposes the targeting restriction from power leap and line pass that also requires the monster target to be in range. (It also renames the relevant enum value and clarifies the comments in the enum.) -------------------------------------------------------------------------------- 0b5ac8c916 | advil | 2021-08-11 13:32:38 -0400 feat: a better wizmode interface to feature placing Sometimes for debugging purposes it is helpful to set up specific dungeon layouts in wizmode, but the interface via `&` for doing this was really quite painful. This commit adds a much better interface for placing a bunch of features quickly, via some wizmode-specific abilities that provide a helpful targeter. It may or may not be a good idea to have wizard-specific abilities (none exist prior to this), and if it turns out to be too annoying, I can convert these back to something more like the old `&` interface and selection. But for now, let's try this -- they are very convenient to access. Some further features it would be nice to have if there's demand (but since none of this is user-facing, low priority): * a way to change the feature being built within the targeting interface, right now you need to use the separate ability. * some way to create feature_property_types, right now you have to use the old UI to do this. * a better feature selection interface, what's there is the old one split off into its own function. * a way of toggling xray vision in the targeter? This is definitely most useful with xray vision on. (Is this the beginning of dcss creative mode???) -------------------------------------------------------------------------------- 49a0850c41 | advil | 2021-08-10 17:00:12 -0400 fix: improve message order for constriction damage This needs to message before the `hurt` call, otherwise various messages in `ouch` don't make sense, and messaging is missing entirely on player death. -------------------------------------------------------------------------------- 1f5599b4a6 | advil | 2021-08-10 16:45:07 -0400 feat: add a killer type for constriction Dying by constriction was completely undistinguished from melee damage aside from a status; this is probably ok for a direct constriction attack but is very confusing for BVC/grasping roots. On par with things like barbs and collisions, add a ktyp. -------------------------------------------------------------------------------- 4baf66127a | advil | 2021-08-10 10:18:39 -0400 fix: properly handle return on y/n popups with hover Return was just sending the default answer, not the selected one. (For legacy reasons, Menu distinguishes between on_single_select and pressing the hotkey for the item, but this really should be cleaned up so that Menus don't constantly need the kind of on_single_select I just added here.) -------------------------------------------------------------------------------- 63c4f9efeb | Kate | 2021-08-10 10:04:11 +0100 Remove mechanical traps from Tomb:1 The Tomb:1 corridor still had some mechanical traps left over. -------------------------------------------------------------------------------- 18048e5a82 | Kate | 2021-08-09 23:31:50 +0100 Add targeters for Blink, Disjunction, and Manifold Assault -------------------------------------------------------------------------------- 47d82705ae | Kate | 2021-08-09 16:10:53 +0100 Fully identify some partially-identified randarts Partial identification of these items is fairly confusing from a distance, since outside of specific rare vault placements, almost all items are now either fully unidentified or fully identified. Instead of partially identifying vault randarts and displaying the brand or base type but no other properties, just fully identify any randarts that have a fixed base type or are unrand fallbacks with a guaranteed brand. -------------------------------------------------------------------------------- 2c61e4fb76 | Kate | 2021-08-09 14:21:20 +0100 Adjust a monster attack brand description It's a little awkwardly worded either way, but rewording AF_BLINK to say "blink self" fixes the case where monsters with the brand were referred to as "it" even for monsters that should use a different pronoun. -------------------------------------------------------------------------------- cfcbea5bde | Kate | 2021-08-09 14:21:20 +0100 Fix uselessness checks for rCorr Rings of resist corrosion were incorrectly being considered permanently useless with temporary rCorr active (from a potion or a form that provides rCorr, for example). -------------------------------------------------------------------------------- 102d6777a4 | advil | 2021-08-08 14:07:30 -0400 feat: indicate existence of /help in webtiles chat The existence of commands that this describes, especially /mute, were not at all apparent to newer players, especially ones not familiar with something like irc. This commit also changes: * don't count interaction with / commands as unread messages * "back to game" -> "close", as a more accurate description of what this actually does. Also, maybe this should say "esc" unless focus is in the chat box? But no change here. These will need a webtiles restart and possibly hard cache reset for players to pick up. -------------------------------------------------------------------------------- f9c1391b64 | advil | 2021-08-08 13:30:02 -0400 fix: don't credit the player for wrath kills (Turukano) Wrath attacks reuse shadow creature code, and because of this, wrath kills were credited in the same way that shadow kills were credited. A version of this was supposedly fixed in 9176aad88b6178, but I don't think it actually was. The relevant check is not to the monster's actual mindex; in mon-death.cc killer_index is simply reset to the player with the actual mindex discarded as long as mons_is_player_shadow returns true. (As noted in the comment there I think this would all work better if the wrath code didn't reuse the player shadow code in entirety, this is a recipe for bugs to sneak in.) -------------------------------------------------------------------------------- 65e1ffefe4 | Edgar A. Bering IV | 2021-08-07 21:56:29 +0300 fix: okay then when cancelling Stack 5 (12622) -------------------------------------------------------------------------------- 325244837d | advil | 2021-08-06 16:07:12 -0400 fix: adjust targeter highlight colours In terms of the practical effect, this ups the alpha values so that the highlighters are more opaque; I also did a bit of color adjustment and moved the dimmer highlight a bit towards gray. This makes them more visible against blue and brown backgrounds, as in shoals. The new colors are probably uglier, but they are definitely more visible. More tweaking may be required. In the long run, I do wonder if some other color than yellow might work better here, or even something more complex like showing tile borders. Under the hood, this replaces the targeter highlight tiles with programmatically generated tiles, and fills out the tile tool with some commands to make this possible to do. -------------------------------------------------------------------------------- 8149849420 | advil | 2021-08-06 12:12:26 -0400 fix: respect no_tele_into in pan landing selection There is exactly one vault in pan.des which actually uses the prop, but that vault definitely places a formicid-dooming tele trap, so let's check the flag. I suspect it wasn't checked simply because historically it wasn't used. -------------------------------------------------------------------------------- 934d61de66 | advil | 2021-08-06 12:02:31 -0400 feat: show no_tele in wizmode cell description This is in order to make it very easy to double check vault props in console. -------------------------------------------------------------------------------- 9442e6b4c1 | Edgar A. Bering IV | 2021-08-06 17:45:46 +0300 feat: add bolt of draining to tengu reavers -------------------------------------------------------------------------------- 718bdbf3cc | Edgar A. Bering IV | 2021-08-06 17:30:58 +0300 fix: reset ashenzari boosts with fishtail merging -------------------------------------------------------------------------------- 25d27de915 | Edgar A. Bering IV | 2021-08-06 16:35:10 +0300 fix: don't add a redundant spectral Now that spectral is a brand we don't need to name the monster "a spectral +4 spectral quarterstaff". -------------------------------------------------------------------------------- b9de417b3f | Edgar A. Bering IV | 2021-08-06 12:50:55 +0300 fix: don't crash when abandoning ash with the finger necklace (CanOfWorms) -------------------------------------------------------------------------------- 9a7839dea9 | Edgar A. Bering IV | 2021-08-06 00:22:42 +0300 fix: range and chance in dispersal targeter -------------------------------------------------------------------------------- 9604337dc0 | advil | 2021-08-05 17:04:31 -0400 fix: render targeters after other overlays After a lot of digging, it turns out that these are simply assembled in the wrong order, so the targeter (ray) tiles are always drawn first. In local tiles, the way alpha blending works means this doesn't matter (or at least, I'm pretty sure that's what is going on), but in webtiles the effect was that the targeter goes under other tiles. In particular, it layered under wave tiles. This commit just brute-force pulls them out of the overlay list and draws them last in this list. Possibly these should be rendered even later. Also, for future people digging into this: `draw_ray` does not draw these ray tiles. I don't know what this function does draw. -------------------------------------------------------------------------------- 516ec72166 | Edgar A. Bering IV | 2021-08-05 22:32:34 +0300 feat: treat *Rage as intentionally hasty Players excpect it, the property is identified, berserk is triggered when the player makes a choice, and other intentional berserks anger Chei. -------------------------------------------------------------------------------- 312a84cf96 | Edgar A. Bering IV | 2021-08-05 21:37:18 +0300 fix: keep the lighthouse keepers from the flame -------------------------------------------------------------------------------- 7c29f1f256 | advil | 2021-08-05 12:05:57 -0400 fix: handle multiple SDL key events for numpad `.` For some reason, SDL is sending both . and Del for numpad . on some keyboards, even when . isn't delete. This commit handles that case by suppressing the . when there's a double event, and providing a default mapping of delete to CMD_WAIT. This should be fine because it's previously unbound, but I've set this to local tiles only; it seems buggy that SDL is sending this keycode at all (at least on my keyboard), so this may be a temporary fix if I can figure out what is going on here. SDL numpad handling generally needs some attention. For background on the key handling issues, see af9c1943b0bc. Reported by discord user Dank Memer. -------------------------------------------------------------------------------- 70931ec564 | Edgar A. Bering IV | 2021-08-05 18:54:53 +0300 fix: update acrobat for quiver-fired wait spells -------------------------------------------------------------------------------- 2d7b7a1a19 | Edgar A. Bering IV | 2021-08-05 18:19:00 +0300 fix: display hit chance in the starburst targeter -------------------------------------------------------------------------------- 9707f7362f | advil | 2021-08-03 12:35:43 -0400 fix: mark ENCH_SHORT_LIVED in monster descriptions Indicate that briar patches will crumble away. -------------------------------------------------------------------------------- 444c7a33f5 | Nicholas Feinberg | 2021-08-01 21:11:30 -0700 Alphabetize gods.txt Move Wu Jian into its proper location. -------------------------------------------------------------------------------- 53beef7077 | Nicholas Feinberg | 2021-08-01 16:43:17 -0700 Fix Tukima's description (rockygr) Forgot to touch this when I allowed Tukima to affect ranged weapons. -------------------------------------------------------------------------------- 616f7b5f32 | Kate | 2021-08-02 00:11:35 +0100 Fix Summon Lightning Spire not having a targeter As with other summons, it should show potential locations when its targeter is enabled via the force_targeter option. -------------------------------------------------------------------------------- 1dcfd26496 | Kate | 2021-08-01 23:34:27 +0100 Fix spelling in a description Missed this one in 70c531d6. -------------------------------------------------------------------------------- 15dc114455 | advil | 2021-08-01 14:16:25 -0400 feat: keycode help for macro mappings This introduces a detailed help screen for crawl-internal keycodes, and shows it in a couple of places in the macro menu. Some TODOs: * map SDL keycodes to this space so things are uniform across build targets * generate this help automatically from keycodes * fix a bug in webtiles where a popup over a title prompt does not receive focus for key input -------------------------------------------------------------------------------- 42140f4989 | Nicholas Feinberg | 2021-08-01 09:31:24 -0700 Fix transform wieldability display bug (sanka) Weapons that couldn't be wielded due to your current form (e.g. due to Blade Hands) would claim to be "too large" when examined. This should no longer occur. -------------------------------------------------------------------------------- 16105a9d8c | gammafunk | 2021-08-01 11:21:45 -0500 fix: Identify a guaranteed vault potion (Yermak) In wizlab_wucad, there's a guaranteed potion of experience. Pre-identify this potion in a way consistent with how we identify other guaranteed or highly probably loot types and properties. -------------------------------------------------------------------------------- 77753f3aa7 | gammafunk | 2021-08-01 11:21:45 -0500 feat: Don't use trees in a Swamp transporter vault The vault gammafunk_worm_tunnel uses a border of trees to help it blend in with the surrounding level. It's trivial to burn some of these trees with an item as common as scroll of immolation and collect the loot in a way that bypasses all threats in the vault. Also, the vault's size has been greatly reduced, so it doesn't stand out in a drastically weird way. This commit restores the stone walls when it places in Swamp, so it uses the same wall type in all places it generates. -------------------------------------------------------------------------------- 84acfa7270 | advil | 2021-07-31 16:19:07 -0400 fix: speed up explosion calculations (gammafunk) The check for whether a cell had already been seen with count value <= n was not properly taking into account the additive factor cadd that is accumulated on recursion, and so was redoing a lot of calculations to no extra effect. This led to big slowdowns on e.g. firestorm targeters in open areas. Or at least, that's what I *think* was happening, this algorithm is pretty complicated. But this change speeds things up quite a bit, and doesn't change explosion shapes as far as I can tell. N.b. this function is still called many times during targeting, but without noticeable slowdown after this change, in my profiling. -------------------------------------------------------------------------------- dd8709b231 | Kate | 2021-07-31 20:58:50 +0100 Fix poison-vulnerable monsters displaying as meph immune -------------------------------------------------------------------------------- 91ee094a69 | robertxgray | 2021-07-31 15:11:26 +0200 Move Android related ignores to crawl-ref/.gitignore -------------------------------------------------------------------------------- 11f8450190 | robertxgray | 2021-07-31 00:27:13 +0200 Update Android port to 0.27 - Fix compilation errors with current code. - Fix small layout. Some errors were introduced with MUT_HP_CASTING. - Fix #1702. Cache not rebuilding on upgrade. - Fix title when show_game_time option is set. - Fix small layout crashing with limited vertical space. - Restore virtual keyboard on landscape mode. - Move toggle keyboard button from commands to system. - Add toggle keyboard button in the new main menu. Shortcut (F12) assigned for consistency. -------------------------------------------------------------------------------- f8cea274af | robertxgray | 2021-07-31 00:26:56 +0200 Update Android build Tested with DCSS 0.26.1, SDK for Android 11 (API level 30) and NDK version r22b. Build changes - Added a gradle build setup for the android app. - Removed previous build.xml. - SAVEDIR static storage path repaced with SDL_AndroidGetExternalStoragePath. - Disable FORTIFY in lua to avoid runtime errors. - Updated various #ifdefs for __ANDROID__ and TOUCH_UI to handle current android builds. - TOUCH_UI build is no more. Most of the code has been removed because it's not working as expected. The rest has been merged in the Android build. - Some __ANDROID__ directives are no longer required for the build. They have been removed. New features - Show keyboard icon now can also be used to hide the virtual keyboard. Renamed to: Toggle keyboard. - Android's back button no longer hides the keyboard when the Activity is focused, now it behaves like an alias for the escape key. - The volume keys can be used for zooming the dungeon and the map. - Two finger scroll can be used on menus. - Custom font configurations to improve readability in small screens. The game auto scales in high resolution displays. - Added summary of Android controls to the help screen. - New option: tile_window_minimum. When set to false, disables the window size restrictions for testing purposes. - The small layout has been fixed and improved. Now it shows the same information as the default layout and the tab menus scale better to modern smartphone displays. - Small layout can be enabled with configuration option: tile_use_small_layout. This is now the default on Android. - Custom keyboard inspired by the ascii port. It is no longer needed to install 3rd party apps por better gameplay. - Support for physical keyboards. Fixes - The game is saved when the Activity is paused. It was very easy to lose progress (on purpose or by mistake) before. - If the virtual keyboard is visible when the Activity is paused, it will be visible again when the Activity is resumed. - The main menu no longer hides behind the virtual keyboard on startup. - Lots of fixes for the small layout. It no longer crashes on vertical displays. - Controls fixed on Android 10 and newer. - Fix game crash when wielding a launcher while quivering something different than the ammo. - Replace various fopen with fopen_u when opening the bones files and some wizard, test and debug functions. - Set the external storage path as the working directory to fix several write permission errors. - Don't show the keyboard on portrait mode to avoid crashes on some devices because of the lack of vertical space. -------------------------------------------------------------------------------- 49dcd67cf8 | gammafunk | 2021-07-30 13:04:52 -0500 doc: Credit ZureaL in the server admin list I've also reorganized these names using the "last name or nick" ordering that we use for other credits. -------------------------------------------------------------------------------- 3707ed8130 | advil | 2021-07-30 13:08:41 -0400 fix: handle clicking on non-chr hotkey items correctly When input is sent via `data`, it is passed through `chr()` in the python code. But, the value stored here is a keycode and may be negative for special keys, so this was causing an exception in python. This comes up specifically when clicking on macro menu entries for some special keys, and pretty much nowhere else (the main menu uses esc, but this is still a positive keycode). On the user side, it's relatively harmless, the symptom is just that clicking doesn't work, so backporting to stable is not urgent. It just produces log messages. Two changes around this: * for arrow-selection menus, don't use the hotkey at all, force calling on_singleselect. (Hopefully in the future this distinction is better cleaned up.) * send hotkeys via `keycode` rather than `data`, so that this code is more robust for the future. Should have no impact on current menus... -------------------------------------------------------------------------------- bfdb43030f | advil | 2021-07-30 12:13:31 -0400 fix: extend aa6b198b to keydown handling (Spaniq, wheals) This will be more impactful once full numpad key handling is back on, but for now it is also impactful on keyboards that send a high/numpad-specialized keycode for some numpad operator keys together with a regular keypress (I can reproduce this on mine). I think this override (and the one in aa6b198b) could be made better by checking whether the menu is in key entry mode specifically, it doesn't need to happen for the entire menu. However, I don't want to mess with this too much just now. -------------------------------------------------------------------------------- 06dbe2521f | advil | 2021-07-30 10:09:38 -0400 chore: add a trunk reminder for the 0.27 tournament -------------------------------------------------------------------------------- 041002c0f2 | advil | 2021-07-30 10:09:24 -0400 Revert "chore: Add a trunk reminder for the 0.26 tournament" This reverts commit e6e398f9e6a4651d34eba70066e19c64dbf84b5b. -------------------------------------------------------------------------------- e6e398f9e6 | advil | 2021-07-30 10:06:28 -0400 chore: Add a trunk reminder for the 0.26 tournament -------------------------------------------------------------------------------- 6846a8eab2 | advil | 2021-07-30 10:06:28 -0400 fix: shorten tournament message to <80 chars This is not wrapping on current UI for whatever reason, so just shorten the message a bit so it can be fully shown on console. -------------------------------------------------------------------------------- 662ed650ad | advil | 2021-07-30 10:04:22 -0400 fix: temporarily disable new keymappings except 0-9 Because the previous commit fixes this in code that usually takes a while to make its way into people's caches, I'm just temporarily bringing trunk's keypad and fn key behavior in line with 0.27, in hopes of getting the persistance bug to go away quicker. This commit partially readds some of the legacy handling for function keycodes in the -1000 range, so that their names aren't shown confusingly for anyone actually using trunk while this commit is in place. I expect to revert this commit in the near future. -------------------------------------------------------------------------------- f225e029a1 | advil | 2021-07-30 09:35:00 -0400 fix: actively reset keycode mappings on lobby load Because these were getting set only on load of the entire app, my attempts at versioned keycode mapping were getting reset only on a full reload and therefore persisting across versions -- needless to say this created a bunch of confusion. -------------------------------------------------------------------------------- 54b5640690 | gammafunk | 2021-07-30 00:13:20 -0500 doc: Final changelog updates for 0.27.0 Main and debian changelogs (cherry picked from commit a0080399dad664af76b4aa87ab7530497249abb0) -------------------------------------------------------------------------------- b16ffaf7c1 | Nicholas Feinberg | 2021-07-29 19:30:06 -0700 Djinni changelog rewording (gammafunk) Mention using Spellcasting instead of spell schools. -------------------------------------------------------------------------------- 8378e6c968 | Kate | 2021-07-30 02:22:47 +0100 Remove mechanical traps from a Tomb entry vault It was using the ~ random trap glyph, which shouldn't really be used anywhere. -------------------------------------------------------------------------------- 271197699b | Nicholas Feinberg | 2021-07-29 14:36:36 -0700 Tweak end_maxwells_coupling Reduce indentation and fix a typo. -------------------------------------------------------------------------------- f87c99a2d6 | Edgar A. Bering IV | 2021-07-30 00:00:43 +0300 docs: update CREDITS.txt -------------------------------------------------------------------------------- ed1d120c62 | Kate | 2021-07-29 21:54:54 +0100 End Searing Ray on Felid revival In the extremely rare case of being revived on the same square that the player died on, Searing Ray would continue being channeled. -------------------------------------------------------------------------------- a6d7c33c12 | Kate | 2021-07-29 21:54:41 +0100 Fix compilation -------------------------------------------------------------------------------- f67c460f1f | Edgar A. Bering IV | 2021-07-29 23:33:00 +0300 fix: expire ramparts and mcc on felid revival -------------------------------------------------------------------------------- 867ca72370 | Elliott Bernstein | 2021-07-29 23:33:00 +0300 fix: empty corrupting presence source messages Closes #2046 [ Committer's note: also addressed the use of malmutate (currently ignored but good future proofing and adjusted the commit message. ] -------------------------------------------------------------------------------- 0740493359 | Edgar A. Bering IV | 2021-07-29 23:33:00 +0300 tile: Word of Chaos ability icon (CanOfWorms) -------------------------------------------------------------------------------- 04a2f65e3b | advil | 2021-07-29 16:23:44 -0400 fix: add some default bindings for distinct numpad extra keys Some numpad operator keys may now be bindable separately from their regular versions. This commit assigns as many of them as I could their regular default bindings in various contexts. This commit is a bit brute-force, and some eventual unification with local tiles would also be nice. It may actually be better in the long run to collapse the multiple versions of `=/*-+.`? For one thing, I don't think the differentiation of these across different devices is wholly reliable. -------------------------------------------------------------------------------- eb8ac83edc | advil | 2021-07-29 11:21:21 -0400 fix: minimize impact of numpad changes on old versions This commit should restore the exact (sometimes broken, but mostly semi-working) behavior of the numpad on pre-0.27 versions. I've seen reports of issues on e.g. 0.26 where it's a bit tricky to identify the exact cause, and so this is to try to eliminate them. Possibly, some of this can be later removed, e.g. this restores a browser-specific chrome tweak that doesn't line up with my testing of current chrome in the wild (that's why I originally removed it). -------------------------------------------------------------------------------- fd831c5874 | advil | 2021-07-29 09:28:30 -0400 fix: capture ctrl+0-9 keys (dilly) It does not look like the crawl binary handles these at all, so I'm not sure how much this will do, but this may help with ctrl+numpad combos where the number key is interpreted as an arrow/home/etc and the browser was capturing it. -------------------------------------------------------------------------------- fa555f5c9d | advil | 2021-07-29 08:58:00 -0400 fix: only normalize numpad number keycodes The key conditional in 7b1be97da7 was converting too many cases; for example it was possible for `code` to be NumpadX with arrows/home/etc. This also should fix shift handling for a number of cases, depending on what the keyboard actually sends. * report 1 (Ham): shift-5 sends clear. This should now be fixed for this key configuration, as I think it was being prevented by keycode overwriting. It's worth noting that this is a pretty non-standard arrangement, and since we have no specific translation for shift-5, it probably just sends numeric 5 on many keyboards (as it does on mine). I'll await more reports to see if there should be some standardization for shift+5. Shift+0 is in a similar state. * report 2 (dinky): `code` values lined up with number keys, but `key` and `keyCode` are arrow/home/etc. keys. Interestingly, no keypress event at all. Again, fixed by reining in keycode replacement. We'll see what other exciting keyboard situations the world provides next... -------------------------------------------------------------------------------- 7b1be97da7 | advil | 2021-07-28 15:01:48 -0400 fix: improve handling of numpad keycodes on webtiles Modern browsers can differentiate numpad keycodes from their regular versions quite straightforwardly, but this information wasn't being handled well by the javascript interface. This was manageable on devices that have numlock, because with numlock off, the keycodes for the secondary keycodes are usually fine for movement, and the number keys are available for macros. But on devices without numlock (like all macs for many years), this was pretty annoying if you use the numpad for movement -- there was no way to use the numrow number keys separately, and rebinding them rebound the number pad keys. Moreover, these keys were generally handled better on local console/tiles. This commit attempts to remedy this situation along with some other tweaks. * key handling in the webtiles client now has a versioned component that can override unversioned key handling. * Support for legacy F keycodes (see b0746d5dc15c) is dropped going forward. This will break some existing macros that used the (wrong) values in the range -1011 to -1014, these should be easy enough to fix up but basically the correct values are -265 to -268. * The client uses w3c `code` values[1] to detect numpad keys in a way that works across browsers and maps them to (a version of) the internal keycodes that local console was already using for them. This means that default movement bindings etc continue to work for them. * I did some standardization and cleanup of these keys for non-local-tiles builds, and their names will show in the macro editor. [1] https://www.w3.org/TR/uievents-code/#code-value-tables Caveats: * The underlying curses code remains quite shaky, and numpad = is currently not handled at all. * The versioned keymapping API is non-existent; and in the future we may want to consider modernizing this to check `code`. * Probably more variation across devices / builds than is accounted for here... -------------------------------------------------------------------------------- da2e87d069 | advil | 2021-07-28 11:35:06 -0400 fix: off-by-one error in menu calculations This was causing javascript exceptions in webtiles with 1-item menus. I'm not sure it was otherwise very consequential, maybe visual glitches when spectating? I'm actually still not sure that this is being calculated right (based on some output debugging) but it isn't causing invalid menu jump_to targets any more, that I can find. -------------------------------------------------------------------------------- f34e66f144 | gammafunk | 2021-07-28 01:40:20 -0500 doc: Mention Storm Form in the changelog -------------------------------------------------------------------------------- 560ac104fe | gammafunk | 2021-07-27 14:00:28 -0500 fix: Don't make redundant explosion calculations Some targeters use explosion map data calculated by struct bolt for both the minimum and maximum possible explosion radii. In cases where those radii are identical, the calculations are still run twice. This commit copies the minimum radius explosion data when the maximum data would be identical. -------------------------------------------------------------------------------- 6621cef402 | gammafunk | 2021-07-27 13:58:42 -0500 fix: Correct the LRD targeter display (CanOfWorms) The fragmentation targeter's display wasn't properly accounting for intervening walls and statues and indicated additional cells as being affected that were not in the final explosion. This was because the targeter was running the explosion map determination code with the incorrect arguments and beam flavor. The actual LRD explosion was correct, since that's run later, and in the correct way. This commit corrects the targeter logic so it agrees with the actual explosion. -------------------------------------------------------------------------------- 4b2499a8ea | Edgar A. Bering IV | 2021-07-27 18:51:57 +0300 fix: apply item_slot when merging stacks from a shop Closes #1685 -------------------------------------------------------------------------------- 9cfa8ffb95 | Edgar A. Bering IV | 2021-07-27 18:14:39 +0300 fix: don't pick up floor-id'd useless items (12530) -------------------------------------------------------------------------------- 3fd8b35b7f | Edgar A. Bering IV | 2021-07-27 17:36:06 +0300 fix: adjust default autopickup autopickup exceptions is an ordered option, put the good_item default last so useless items that would be good for someone else don't get picked up. Closes #2042 -------------------------------------------------------------------------------- 9055cd164d | Edgar A. Bering IV | 2021-07-27 17:34:08 +0300 docs: correct an options guide entry -------------------------------------------------------------------------------- af9d615c11 | Edgar A. Bering IV | 2021-07-27 17:20:18 +0300 fix: don't consider branded missiles emergency items 6be897d added these, unfortunately the `\` menu doesn't break down missiles by brand and this has led to autopickup confusion reported in several places by players, both inexperienced and veterans. So until the interface issues can be revised let's not do that. -------------------------------------------------------------------------------- 8ae03cc802 | Edgar A. Bering IV | 2021-07-27 17:15:26 +0300 feat: two new quotes (hyperactiveChipmunk) Move the old very ugly thing quote to fenstrider witches (where it fits better) and put the muppet show quote on very ugly things. Closes #2043 -------------------------------------------------------------------------------- d9e24bc47f | Edgar A. Bering IV | 2021-07-27 10:26:43 +0300 docs: update the mailmap -------------------------------------------------------------------------------- 10cfe34aa0 | Edgar A. Bering IV | 2021-07-27 10:13:43 +0300 docs: two CREDITS renames -------------------------------------------------------------------------------- 6342605492 | Edgar A. Bering IV | 2021-07-27 09:30:14 +0300 docs: update the credits -------------------------------------------------------------------------------- 8dfe7f97f6 | gammafunk | 2021-07-26 23:38:42 -0500 fix: Have Overgrow fail after targeting (#2018) Targeted abilities like Fedhas' Overgrow should always allow the targeter to work before processing any failure chance. This way players can see what they might affect using the ability targeter as part of deciding whether the attempted use is worthwhile. Fedhas' other targeted abilities already work this way, so have Overgrow do the same. -------------------------------------------------------------------------------- bb1da1a3e9 | gammafunk | 2021-07-26 23:38:42 -0500 fix: Show affected walls for Overgrow (#2018) Fedhas' Overgrow ability targeter lost its can_affect_walls() override in the targeter reworks that followed positional magic. Restore this so that the targeter can display which walls Overgrow will affect. -------------------------------------------------------------------------------- 84e2d79d80 | Kate | 2021-07-27 03:31:19 +0100 Move a volcano entry out of flame cloud range volcano_tomb could still immediately drop players into a flame cloud on entry. -------------------------------------------------------------------------------- 0adfcbbeba | gammafunk | 2021-07-26 16:06:34 -0500 fix: monsters targeting of invis players (dilly) If a player goes invisible, monsters that have the player as a foe and that are sufficiently close to the player will have their throwing and launcher tracers "fuzzed" to indicate that the tracer hit. This allows monsters to sometimes shoot at invisible players and works fine if the player is reachable. But if the player isn't reachable, the logic leads to monsters performing pointless actions that can lead to monster collateral kills. For example, if the player goes invisible in front of a group of hostile monsters behind glass, monsters that can throw or fire launchers will attempt to shoot at the player, instead hitting monsters in front of them. This commit updates the monster logic in two places to prevent this behaviour. First we don't allow invisible player "hit fuzzing" to work for monster tracers if the player is not reachable under LOS_NO_TRANS. Then we require monster throwing/launcher actions to have the same "friendly monster or hostile monster with a LOS_NO_TRANS reachable foe" requirement used for spells, most special abilities, potions, and scrolls. The second change re-uses the result of a check we've already performed to prevent the tracer from being fired in the first place. The first change is still good to have, since it's not ever logical for a tracer to falsely tell a monster that an unreachable player can be hit. The logic that governs under what conditions monster take certain actions could be simplified more than I've done in this commit. Since we are close to release I want any change to be as minimal as possible, so this change will only affect throwing/launchers specifically. The other types of actions either already have the "friendly or near foe" condition described above, or do their own LOS_NO_TRANS check. I also suspect that the "friendly" portion of "friendly or near foe" condition can be dropped, since there's no reason a friendly monster would want to bypass reachability conditions. -------------------------------------------------------------------------------- 95c66c932c | Edgar A. Bering IV | 2021-07-26 19:59:57 +0300 tile: blinkbolt ability icon (CanOfWorms) -------------------------------------------------------------------------------- 84096a565d | Edgar A. Bering IV | 2021-07-26 19:45:24 +0300 tile: Shatter the Chains ability icon (CanOfWorms) Closes #2033 -------------------------------------------------------------------------------- e5760e785a | wheals | 2021-07-26 19:22:04 +0300 Remove CMD_FORCE_EVOKE_WIELDED -------------------------------------------------------------------------------- 17765e0794 | wheals | 2021-07-26 19:22:04 +0300 Change some false claims about staves They cannot be evoked (except for some few unrands) and they are on | by default, not \. -------------------------------------------------------------------------------- 643d97a57c | wheals | 2021-07-26 19:21:28 +0300 Standardize conversion of keycodes to text Only main change is that End and its variants should be properly rendered in the macro menu. Just to be safe, though, this should not be cherry-picked. -------------------------------------------------------------------------------- aa6b198bf9 | wheals | 2021-07-26 18:44:55 +0300 Allow +/- as inputs in the macro menu on Webtiles (Spaninq) -------------------------------------------------------------------------------- 9d592f0669 | CanOfWorms | 2021-07-26 09:40:12 -0400 Differentiate hydra tiles from plant tiles The shape of hydras (necks that stick out of a body) is similar to some plant tiles, so make the underbelly yellow to create contrast. -------------------------------------------------------------------------------- f74fda84f9 | Kate | 2021-07-25 23:49:55 +0100 Don't turn clear doors opaque when sealing them Closed clear doors were handled correctly, but opened ones were being turned into regular opaque doors when closing them to activate a vault warden's seal doors ability. Fixes #2024. -------------------------------------------------------------------------------- dd470a43dd | Nicholas Feinberg | 2021-07-25 14:22:19 -0700 Block wereblood heals under death's door (dilly) This check should probably be refactored in some way - I think it's duplicated in a few places. -------------------------------------------------------------------------------- 269154a5ba | Kate | 2021-07-25 22:16:43 +0100 Don't destroy cursed weapons without prompting when changing forms With a cursed holy wrath weapon equipped, trying to enter lichform would prompt the player about unequipping and destroying their weapon, but if the weapon was melded due to entering a different form first, there was no prompt when swapping from that form to lichform. Fixes #2027. -------------------------------------------------------------------------------- 3c0819f736 | Edgar A. Bering IV | 2021-07-25 22:50:37 +0300 fix: don't crash checking books for rampage -------------------------------------------------------------------------------- 8ee6c6440a | mainiacjoe | 2021-07-25 22:29:03 +0300 Mephitic Cloud --> Corpse Rot in Book of Vapours All the spells that appear in only one book and are not available in starting libraries are all level 7 or higher, except for Corpse Rot. At the same time, Mephitic Cloud is available from Turn 1 for two backgrounds, and also appears in three books. Thus with Mephtic Cloud being so easily gained, and Corpse Rot as hard to find as end-game spells, and both having a theme of noxious fumes, put Corpse Rot into the Book of Vapours in place of Mephitic Cloud. -------------------------------------------------------------------------------- e5b3285e1b | a | 2021-07-25 22:26:39 +0300 Fix typo in the manual's Missiles section This commit fixes a typo in the manual's Missiles section. The verb should be "throw" since it's being used as an infinitive. -------------------------------------------------------------------------------- d5dc72f758 | Edgar A. Bering IV | 2021-07-25 22:25:36 +0300 fix: fire fineffs after monster moves, too Closes #2036 -------------------------------------------------------------------------------- 30eb4d6358 | Edgar A. Bering IV | 2021-07-25 22:25:36 +0300 feat: increase penance for rampaging Simplify the check, only apply it to a rampaged move (or a step with the lightning scales) and always trigger the conduct. It should maybe cost more than one piety per rampaged move, but I leave that for the future. -------------------------------------------------------------------------------- 390debcb5f | Edgar A. Bering IV | 2021-07-25 22:25:36 +0300 fix: give a hasty item warning for non-armour Rampage (u/Delicious-Most5180) -------------------------------------------------------------------------------- 70c531d6f8 | Kate | 2021-07-25 20:02:47 +0100 Fix spelling A good instance where we used three distinct spellings, none of which were the apparent standard Australian English spelling. -------------------------------------------------------------------------------- aa4a0049d6 | Nicholas Feinberg | 2021-07-25 08:37:13 -0700 Embellish the changelog -------------------------------------------------------------------------------- 964c8b829e | Kate | 2021-07-24 21:29:15 +0100 Adjust some tutorial text Tweak a spellbook name and wrap an overly long line in a summary. -------------------------------------------------------------------------------- 1e78e81bf7 | advil | 2021-07-24 10:56:10 -0400 docs: changelog updates This is mostly filling in UI/options things; a few clarifications elsewhere. -------------------------------------------------------------------------------- 6e044cfa68 | Kate | 2021-07-23 05:01:48 +0100 Update hints mode Fix some typos and broken hint triggers, remove some obsolete hints, and update some out-of-date information. -------------------------------------------------------------------------------- 84f66890ac | gammafunk | 2021-07-22 22:53:24 -0500 Update the changelog through 0.27-b1-2-g8387495791 -------------------------------------------------------------------------------- 334057b17a | advil | 2021-07-22 15:50:32 -0400 fix: exclude autofight paths that can't see the target This is a solution to: https://crawl.develz.org/mantis/view.php?id=11905 https://crawl.develz.org/mantis/view.php?id=12576 In both of these cases, autofight's pathfinding gets into a trap because under various conditions it prioritizes a move that doesn't keep sight of the target along a path visible from the starting point. But, because the search is greedy, it doesn't go back and try an alternative path when this first attempt fails. Because (for whatever reason) it prioritizes diagonal moves, the setup usually involves a diagonal, but I think that switching the prioritization would lead to similar problems for straight moves. The sequencing here looks very delicate and for the most part it does seem to make do with a greedy search, so I didn't want to try messing with this. Rather, this commit introduces a check that throws out immediate moves where the current target would not be visible from. I've convinced myself that in theory this is entirely safe to do: if there's a path at all for autofight, there's a path that keeps sight of the target at every point. (And of course, potential paths that don't.) Hopefully this will hold up in practice. -------------------------------------------------------------------------------- 1ec5790e4f | Nicholas Feinberg | 2021-07-22 12:21:14 -0700 Fix webtiles display of corrosion (ShaperMC) This is duplicated in three places. TODO: FIXME -------------------------------------------------------------------------------- eb5a7e5f55 | advil | 2021-07-22 14:57:00 -0400 fix: default bind F1 to CMD_GAME_MENU The `~` binding is ok-ish for US keyboards and has some resonance with the previous binding on this key (which is now a submenu), but it's pretty non-intuitive, and the symbol typically involves a complex chord on many international keyboards. At the same time, ESC, which is a typical binding for this in other games is fairly non-viable in crawl, because it is used to clear mores and get out of menus very quickly, while being a noop at the main interface. (The qw bot even has a function where it exploits this to reliably exit menus.) This commit adds F1 as a binding for the game menu. This still isn't perfect, but is a much more likely key for such a thing than `~`. A lot of people (including myself) like to bind F1 for e.g. casting, and this is still fine; for advanced users the `~` binding still exists (or it can be otherwise rebound). Hopefully this all works across platforms, but I've tested on local tiles, console, and webtiles and mac. -------------------------------------------------------------------------------- fc94bf0d26 | Nicholas Feinberg | 2021-07-22 10:29:15 -0700 Make dancing launchers prefer ranged (gammafunk) -------------------------------------------------------------------------------- 643f2454ad | advil | 2021-07-21 17:30:13 -0400 fix: typo in comment We can count this as resolves #1988 -------------------------------------------------------------------------------- 835d75f5b3 | advil | 2021-07-21 17:02:12 -0400 fix: quiet a compiler warning (#2031) Not sure about the other warning in this report, but this one is easily fixed and the fix is probably better style. -------------------------------------------------------------------------------- 4fb8d4a8fc | gammafunk | 2021-07-21 15:24:46 -0500 feat: Reindent an Elf vault Shameless commit scumming made to diverge trunk and stable! -------------------------------------------------------------------------------- fb6a3606f8 | advil | 2021-07-21 13:32:00 -0400 feat: add a status light for inhibited regeneration If this is too blinky, it can be easily removed. But I think it might be helpful to see, and it also helps identify some corner cases (e.g. situations where a monster can't attack but has the player as a foe). -------------------------------------------------------------------------------- 9e7ac92ab0 | advil | 2021-07-21 13:32:00 -0400 fix: don't rest when regeneration is inhibited The first fruit of 05da648f! This seems to have come about when 7fb00627a50e removed the vampire check from player_regenerates_hp, perhaps under the assumption that this function was not about current regeneration. However, it is used only for current regeneration state, in order to decide whether resting is pointless. As of this change, 5 with a monster in sight but out of reach (e.g. across water) will trigger wait, not rest. Possibly it should also message, analogous to i_feel_safe's messaging. -------------------------------------------------------------------------------- e3c52671f8 | Nicholas Feinberg | 2021-07-21 10:20:09 -0700 Revert "Check for monsters, objects & features on move" Broke autoexplore somewhat - see https://github.com/crawl/crawl/issues/2026 . This reverts commit 09c7552f22266b3fe47164032a29611aefc84864. -------------------------------------------------------------------------------- 42a3d12a42 | advil | 2021-07-21 10:30:01 -0400 test: possibly fix randbook test I'm pretty sure this was relying on an uninitialized static before this commit. Unfortunately catch2 doesn't seem to work on M1 so I can't rerun locally. -------------------------------------------------------------------------------- 81a68cc532 | advil | 2021-07-21 10:02:45 -0400 fix: improve some spell data statics This applies the construct-on-first-use (v2) paradigm to a couple of key spell data statics, so as to avoid static constructor order issues. This may improve some hard-to-reproduce issues reported after a7dfd5ec23, since the Options constructor is called on static initialization but makes use of this constructor. Spell data isn't in place on the first call so this may or may not really matter, but it can at least now reliably be determined that spell data isn't set up yet. -------------------------------------------------------------------------------- 56f7456a25 | advil | 2021-07-21 10:02:45 -0400 fix: avoid static initialization of ability list This is not necessarily an ideal fix, but is aimed at preventing static initialization order issues resulting from a7dfd5ec23. After that, the constructor for the static Options object relies on the static Abilities_List object, and I suspect this is a source of crashes on some builds reported in bugs like #2010 (this bug went away, but I have no confidence that it is fixed). -------------------------------------------------------------------------------- de56a17b89 | gammafunk | 2021-07-21 00:45:20 -0500 feat: Clarify bush and briar behaviour Bushes and briar patches allow beams to pass through them unaffected, but block explosions and enchantments, which is behaviour that wouldn't otherwise be obvious to players. Document this aspect of plant physics in their monster descriptions. I don't mention the exceptions of beams from ranged Sticky Flame and Chain Lightning being blocked, as those are niche. -------------------------------------------------------------------------------- ff50d6eb01 | gammafunk | 2021-07-20 22:58:09 -0500 doc: Add a tier 1 vault demon to the mailmap -------------------------------------------------------------------------------- de9417c70f | gammafunk | 2021-07-20 22:54:09 -0500 feat: Remove `allow_dup` from a shop vault (ardl) This style of "inconvenient shop" is amusing, but less amusing the second time you get it in the same game. Remove `allow_dup`, so it only generates once per game. -------------------------------------------------------------------------------- 669cdb294d | gammafunk | 2021-07-20 22:33:34 -0500 feat: Allow spectral ego on certain weapons Currently the spectral ego is only allowed on two-handed weapons or the one-handed club base type, even for artefacts and vault-defined weapons that request the spectral ego. Yet the scroll of brand weapon bypasses this exception, allowing spectral as a result on any one-handed melee weapon, to help make that scroll more exciting. We already have the weapon property data to limit spectral to only club or staves on mundane generated items. This commit removes the handedness restriction for spectral, thus allowing it to generate on all artefact melee weapons and on vault-defined melee weapons that specifically ask for that ego. This won't increase the amount of spectral too much and makes the ego's logic consistent. It's now simply a melee-only ego that's allowed on artefacts, like other such egos, but is limited to clubs and staves for mundane weapon generation. -------------------------------------------------------------------------------- 60587a63ad | gammafunk | 2021-07-20 22:23:24 -0500 feat: Adjust monster-placing Elf vaults Most changes are to refactor syntax of recently merged Elf branch monster vaults by nicolae. We use numeric glyphs for monsters and simplify statements. A couple vaults have more significant changes, as described here: nicolae_elf_defective_weapons_storage: Instead of having various helpless and inneffective dancing weapons, rework this vault to place dancing weapons that all have some kind of permanent debuff (and hence are still "defective"), but have other aspects allowing them to still be significant threats. Break weapons up into three tiers by type of ego we'll give as well as type of debuff: fast acting chaos weapons get blindness, slower acting distortion weapons get slowness, so they'll be slower than normal speed, and we use highest quality base types for venom, but make them "damaged" (-1 to -4 enchant) and permanently corroded. The vault is now a runed door vault since it's fairly dangerous and having these weird weapons leak out into the level would ruin the theme. Not to mention that the blind weapons need to stay in a fairly confined area to be effective. It's layout has gotten a slight trim to completely reveal the loot inside. Since I worked with nicolae to re-imagine this vault, we agreed to rename it to nicolae_gammafunk_elf_defective_weapons_storage. nicolae_elf_double_double_double_trouble: This is a runed door vault, but the current layout means a player might be forced to open the door to reach otherwise disconnected areas in Elf. We like to avoid forcing players to take runed doors, and although two blade masters with two double swords is not an especially dangerous threat that would normally warrant a runed door, it's helpful for the specific theme of this vault. So mark the doors and sealed areas of the vault as opaque for connectivity purposes. Add more runed door to keep the two blademasters separated, increasing the visual theme. Upgrade one of the blademasters' double swords to either good_item or randart, thus allowing them to pose a bit more of a threat. Finally, introduce a star_item and two normal item loot pieces on both sides of the vault, giving some incentive to open the vault for those who wouldn't benefit from the weapons. -------------------------------------------------------------------------------- 979284e43a | Nicolae Carpathia | 2021-07-20 22:23:24 -0500 Update elf_deep_mausoleum based on gammafunk comments -------------------------------------------------------------------------------- ddbec97b21 | gammafunk | 2021-07-20 22:23:24 -0500 feat: Adjust some Elf entry vaults For nicolae_elf_arrival_dilemma, technically we shouldn't require passage through a runed door like this to the rest of a level, but I'm allowing it in this case. The right side of the vault is a perfectly ordinary encounter with four monsters, hence always a reasonable option for those with basic preparation for Elf. The runed door for this side fits the "border check" aspect, which allows inexperienced players to re-evaluate their decision before it's too later. The two choices feel one-dimensional, and a single high level elf feels a bit sad alone behind a runed door. So we up the runed door aspect, adding a second high level elf to the left section and two high quality loot pieces, also adding one normal quality loot item to the right section. Give this entry half weight so that it's not too common. For nicolae_elf_arrival_no_cutting_in_line, ensure we place at least two monsters in each of the two thematic groups. The odds of rolling no monsters in the orc group or no monsters in the elf group are not that small, and if either happens the vault's theme is ruined. This increases the size of each group by 1.5 monsters on-average, but the groups are only 3.5 monsters each, and the monsters used here are common for Orc and late dungeon. Some glyph and syntax cleanups for this and two other entry vaults. -------------------------------------------------------------------------------- ed5bec7572 | gammafunk | 2021-07-20 22:23:24 -0500 feat: Split up vaults in elf.des Move decorative and monster-placing vaults into their own distinct sections. -------------------------------------------------------------------------------- 2d3e3a81d9 | gammafunk | 2021-07-20 22:23:24 -0500 fix: Remove `decor` from Elf vaults The decor tag does nothing in vaults except on D:14- and in Depths, hence we don't need that tag for vaults in Elf. Also update the DES syntax document for decor to refer to the correct range where the tag applies. -------------------------------------------------------------------------------- 5ea49452ee | gammafunk | 2021-07-20 22:23:24 -0500 fix: Remove `no_dump` from a Hall of Blades vault Forgot to remove this tag from this vault in a previous commit. -------------------------------------------------------------------------------- 7cc329e542 | Nicolae Carpathia | 2021-07-20 22:23:24 -0500 Add two decor vaults to Elf. -------------------------------------------------------------------------------- 7c62198929 | Nicolae Carpathia | 2021-07-20 22:23:24 -0500 Add some more regular monstriferous vaults to Elf. Committer's Note: Squashed a commit into this one. Three of the vaults added in this commit get significant modifications in subsequent commits as part of PR #2029, namely nicolae_elf_deep_mausoleum, nicolae_elf_defective_weapons_storage, and nicolae_elf_double_double_double_trouble. -------------------------------------------------------------------------------- fba2232dec | Nicolae Carpathia | 2021-07-20 22:23:24 -0500 Add new arrival vaults to Elf. -------------------------------------------------------------------------------- 2e09723bad | Nicholas Feinberg | 2021-07-20 19:46:56 -0700 Adjust changelog Reorder, reword, fix some inaccuracies, and add highlights. -------------------------------------------------------------------------------- 1368757f42 | Kate | 2021-07-20 23:17:15 +0100 Let Spellforged Servitors cast Shock As one of their fallback spells, since the rest of the L1 conjurations are valid. -------------------------------------------------------------------------------- e58577e147 | Kate | 2021-07-20 21:32:04 +0100 Fix typo in Majin-Bo description (FizzleBang) -------------------------------------------------------------------------------- 05da648ff6 | advil | 2021-07-20 09:49:45 -0400 fix: add a debug tripwire for long delays, v2 There have been some cases of delays going on much longer than they should lately (#1757, #2037 among others) and while a few bugs have been fixed, the worst cases have resisted debugging or replication. This commit is an attempt to get more information, while at the same time protecting the player a bit better. If a rest delay exceeds 500 turns, this will trigger a crash, and if an explore delay exceeds 2k turns (1/3 of the per-level zot clock) it will also crash. These are intended to be numbers that can't be triggered on demand ever, so if I've missed something that allows this, this code should be further amended. The rest one at least would have been triggered by the case in #2037. cd13fe65733ae6d1 was missing some cases where you.running.turns_passed needs to be reset, and they should be taken care of here. -------------------------------------------------------------------------------- 0b823d0a13 | Nicholas Feinberg | 2021-07-19 13:57:28 -0700 Don't revive decorative cats (tilp) They aren't meant to be used in the actual game, only in decor vaults, and reviving them causes weird issues when they get killed (by eg krakens). Shouldn't have gotten stuck at xl 1, felids! -------------------------------------------------------------------------------- fd1010017a | Nicholas Feinberg | 2021-07-19 12:47:33 -0700 Revert "fix: add a debug tripwire for long delays" Triggering way too often. Reverting for now. This reverts commit cd13fe65733ae6d1ebf66b383617bb497fa25090. -------------------------------------------------------------------------------- cd13fe6573 | advil | 2021-07-19 13:38:18 -0400 fix: add a debug tripwire for long delays There have been some cases of delays going on much longer than they should lately (#1757, #2037 among others) and while a few bugs have been fixed, the worst cases have resisted debugging or replication. This commit is an attempt to get more information, while at the same time protecting the player a bit better. If a rest delay exceeds 500 turns, this will trigger a crash, and if an explore delay exceeds 2k turns (1/3 of the per-level zot clock) it will also crash. These are intended to be numbers that can't be triggered on demand ever, so if I've missed something that allows this, this code should be further amended. The rest one at least would have been triggered by the case in #2037. -------------------------------------------------------------------------------- 01599e1a9e | advil | 2021-07-19 13:38:18 -0400 Revert "Forbid DEBUG_TRAVEL without DEBUG_DIAGNOSTICS" Revert reason: this was disabled by default before this commit, and it's *extremely slow* to enable, so return to the disabled-by-default state. Instead of an `#ifdef`, add a comment explaining the situation. This reverts commit d8756d56bca0c83564c4a383b0931343e2ffb2e0. -------------------------------------------------------------------------------- c56fcc985a | Nicholas Feinberg | 2021-07-18 07:26:55 -0700 Fix touching typo (hardworking goddess, reeces) -------------------------------------------------------------------------------- 15f69828bf | gammafunk | 2021-07-18 00:47:19 -0500 feat: Organize elf.des and refactor functions Give elf.des section headers like we do for other DES files. Make sections for entries, normal vaults, blade entries, blade main vaults, and the elf end maps. Add a function to set standard blade monsters, since multiple maps where using a common definition. Remove `no_dump` from main blade maps, since we now have multiple vaults, not all of which use entry subvaults. -------------------------------------------------------------------------------- 8427feac8f | Nicolae Carpathia | 2021-07-17 23:25:49 -0500 Add new entry subvaults for the Hall of Blades Committer's Note: I'm not adding nicolae_blade_animated_armoury, since animated armour monsters designed to be a player ally, not a compelling hostile monster. Melee-only slow monsters are something we've almost completely removed at this point. There's not an obvious design for hostile animated armour monsters that's sufficiently unique, but if that changes, a vault like this can be reevaluated. -------------------------------------------------------------------------------- 0c1c6157e4 | Nicolae Carpathia | 2021-07-17 23:25:17 -0500 Add two new layouts for the Hall of Blades -------------------------------------------------------------------------------- 5a1362afc6 | gammafunk | 2021-07-17 20:05:18 -0500 fix: Adjust three transporter vaults again (advil) A recent report I'd seen for the vault emtedronai_trogs_sanctum showed it generating areas only reachable via its transporters, effectively sealing off access to its entrance transporter. This report lead me to make 97d24401, which put borders of floor around this vault and two others, since it seemed there was no other way to prevent these problems. However advil informs me that the problem with emtedronai_trogs_sanctum was due to it not conditionally applying its `passable` tag only for the Vaults branch. The `passable` tag was added for the Vaults layout to allow features like transporters place in Vaults rooms, but when enabled in other branches it leads to the layout generator to incorrectly think that areas inside the transporter vaults are connected to the vault entries without using a transporter. Hence 2170ac5a makes `passable` now only apply in the Vaults branch. advil also informs me that now that we can't misapply `passable`, these transporter vaults will both never generate such disconnected areas nor will passage through the transporter ever be required to reach the rest of the level, specifically because the internals of these vaults are marked with the `opaque` tag as of 97d24401. Hence this commit restores the behaviour before that commit which only applied the border of floor around these vaults in the Vaults branch; it's still necessary in that branch for them to place properly as rooms. Now the vaults will better integrate into non-Vaults levels in that they can embed properly in surrounding walls yet have their two entries properly connected to the rest of the level. Additionally, I've changed the wall types of these vaults to rock when placing in Vaults, so the layout code of that branch can correctly substitute the wall to the surrounding wall type of the level. Interestingly, this seems to allow gammafunk_its_a_trap to properly place in Vaults. In my previous testing, it always failed to place as a vaults room even though the other two vaults were able to. Finally, correctly apply the `transparent` tag to emtedronai_trogs_sanctum and fix its opaque mask to correctly cover all internal vault squares. The slightly incorrect mask was added 97d24401, but since the vault wasn't actually given `transparent`, this error wasn't seen. This commit partially reverts 97d24401. -------------------------------------------------------------------------------- d5c625afe7 | advil | 2021-07-17 15:26:21 -0400 fix: reorder currency symbols so that `$` shows in help Bug introduced in 1715c4e68; the help menu can't handle unicode keybindings and shows a number, and `$` is probably the best one to show anyways. -------------------------------------------------------------------------------- 5988178df2 | advil | 2021-07-17 15:25:07 -0400 fix: quick macro keybinding add, take 3 Unfortunately, ctrl-m is equivalent to return, and so this turns one of the standard noops (that people use to clear mores) into a menu key by accident. This third attempt moves the travel speed toggle to ctrl-t, and puts quick add on ctrl-e. I *think* this should be fine in webtiles. (Unfortunately, it does mean that windows webtiles users will need to use *t for travel speed toggle, because it seems that most windows browsers eat ctrl-t in a way that isn't easy to override.) -------------------------------------------------------------------------------- 1b087cb4c1 | Nicholas Feinberg | 2021-07-17 10:03:25 -0700 Improve slime creature messaging (nojaa, jilles) Be clearer about's going on when they merge. (Not touching unmerging yet, but that probably wants love too.) -------------------------------------------------------------------------------- 8f6b6f5ddb | advil | 2021-07-17 12:52:40 -0400 fix: simplify macro action entry (Yermak) After this commit, entering an action while doing a macro binding returns to the main macro menu (or exits in the case of quick-add), while esc gets you to the mapping menu. This reduces the keystrokes used when setting at the slight cost of keystrokes when cancelling. Two remaining issues: (i) when editing an old macro, it first brings you to the mapping submenu. This could go right into editing the action, at the cost of making the submenu c/R options harder to get to. (ii) What should this UI do on enter with a blank action? Right now this cancels, but I'm not sure this is very intuitive. Other possibilities include having this case clear the macro, and disabling enter with an empty action. A few other minor tweaks to display stuff. -------------------------------------------------------------------------------- 2170ac5abd | advil | 2021-07-17 11:32:50 -0400 fix: limit `passable` tag masking to Vaults This tag is a bug magnet outside of Vaults, because it makes it very easy to trick the builder into generating disconnected zones. In some vaults these issues had been fixed by explicitly conditionalizing the tag, but there's not a lot of use-cases outside of Vaults layouts that can't be better handled by other techniques, so simplify things on the vault designer here. I've also updated the docs to more clearly warn designers about the pitfalls. -------------------------------------------------------------------------------- 9c98e07f0c | Nicholas Feinberg | 2021-07-17 08:09:07 -0700 Decay mon breath timeout at EOT (mishima, gressup) Similarly to netted monsters, which already work this way, have monsters reduce their breath timeout after their turn instead of before their next one. That way, if you see a monster 'catching its breath' on your turn, they won't be able to use a breath weapon on you before your next turn unless they get a double turn. It's possible that other enchantments might be changed to work similarly, but for e.g. paralysis, that would be a big stabber nerf. I haven't done an audit to look for other candidates. -------------------------------------------------------------------------------- 6eef9f81b9 | advil | 2021-07-17 11:06:56 -0400 fix: move macro quick-add to ctrl-m This is now working, so I think it must have been a cache issue. ctrl-t is new tab on windows, so doesn't work so well. -------------------------------------------------------------------------------- 97d2440184 | gammafunk | 2021-07-17 00:02:43 -0500 feat: Adjust aspects of three transporter vaults For the transporter vaults gammafunk_its_a_trap, gammafunk_dig_for_victory, and emtedronai_trogs_sanctum, give these vaults a border of floor. Having connectivity require a path through the transporter frequently leads to one side of the transporter being left in a disconnected area, thus either stranding the player who travels through the vault via transporters or preventing transporter entry altogether. This is a bug in our layout code, which should ensure that these disconnected areas won't happen. Even if this were not the case, these vaults are meant to pose an optional, difficult challenge, so we shouldn't require passage through their transporters to reach other portions of the normal level. We now add no_item_gen throughout these vaults instead of only in certain sealed or trap-laden sections, since there's no reason to lock away normal level items. For gammafunk_its_a_trap, remove its placement from Spider, but allow it to place on D:14. I previously allowed it in Spider to connect sections of the cave-like layout, but as described above we're no longer requiring access through these types of vaults for normal level access. The vault's highly angular stone structure is out of place in a "natural" place like Spider. For D:14, this is an ok depth to beging exposing players to Zot traps, since it's very close to their normal generation and behind a transporter. For all three vaults, mark them as transparent and mask the vault insides as opaque. Revise glyph usage so we can distinguish between the inside and outside of each vault. Simplify and clean up some DES syntax. -------------------------------------------------------------------------------- 7cc0d9ac62 | Nicholas Feinberg | 2021-07-16 19:35:02 -0700 Remove wanderer debug code BIG oops (This made all wanderers start with two minor books, I think?) -------------------------------------------------------------------------------- 29e9f9e103 | Nicholas Feinberg | 2021-07-16 19:20:07 -0700 Add storm form tile (alex1729) And remove the old hydra form tile. RIP. -------------------------------------------------------------------------------- 2387c0671f | Nicholas Feinberg | 2021-07-16 19:19:50 -0700 Clarify spectral ego -------------------------------------------------------------------------------- d28e588067 | Nicholas Feinberg | 2021-07-16 19:08:20 -0700 Rename the Desolation entrance (Undo, ardl) To avert confusion for players who assume something ruined is unusable. I wanted to use 'unsealed gateway', but we already have 'unsealed gates', which are a bit too similar sounding. -------------------------------------------------------------------------------- 4a8006d288 | Nicholas Feinberg | 2021-07-16 18:53:10 -0700 Avert a riot (dinky) (OK Tukima launchers) Lots of weird special cases here. This might be a bit strong. -------------------------------------------------------------------------------- 51fae8af72 | gammafunk | 2021-07-16 17:32:31 -0500 fix: Place a Swamp exit in bugged saves (Sergey) The Swamp exits destroyed by eleionoma due to the issue fixed by 0d5cf04 need to be restored in affected saves, otherwise those games always crash on Swamp:1. This commit adds a save compat function _ensure_exit() that's analogous to the _ensure_entry() function used for ensuring branch entries and calls it for Swamp:1. We find whether Swamp is missing its exit, and if so, find a floor or shallow water square that's as close as possible to the first down stairs, thus helping to ensure that our exit is placed at a connected location. -------------------------------------------------------------------------------- acd6f1ce93 | advil | 2021-07-16 17:37:18 -0400 docs: update allow_extended_colours in options guide (gammafunk) -------------------------------------------------------------------------------- 52be93032c | advil | 2021-07-16 17:27:37 -0400 fix: default allow_extended_colours to true This *may* still be a terrible idea, but I'm not sure we'll find out without trying. Some of the historical reasons for the old defaults are no longer an issue, like old mac osx terminals. One remaining one is that this may decrease the default readability of ttyrecs. We'll see... -------------------------------------------------------------------------------- e1855fdbe6 | advil | 2021-07-16 16:17:54 -0400 feat: command for quick macro adding/editing This renames previous CMD_MACRO_ADD to CMD_MACRO_MENU, and adds a new command under CMD_MACRO_ADD that is a bit more true to the name. The new command jumps straight into macro editing given a specific key, and skips the macro menu. Basically, it comes full circle and very nearly replicates the pre-0.26 CMD_MACRO_ADD functionality except with an updated UI. The one difference is that it is macro only -- no keybinds. But people shouldn't be using keybinds anyways. The new command is currently bound to ctrl-t. Ctrl-m is actually free but I could not get it to work in webtiles. To rebind this, e.g. if you hate all this menu stuff I've been adding, you can do something in your options file like: `bindkey = [~] CMD_MACRO_ADD`. -------------------------------------------------------------------------------- becab4ff2c | advil | 2021-07-16 16:17:54 -0400 fix: streamline new action entry Treat new actions started by `~` and by key in the same way, jumping right into editing. To get raw entry, you can use enter to get out to the menu with a blank mapping; esc still cancels. (I'm not sure if this behavior is very intuitive and it is currently somewhat hidden, but raw key entry may also be a fairly niche feature.) Doing this required adding an on_show callback to Menu, and tweaking the title_prompt api to provide a way to detect whether text entry was cancelled or not. -------------------------------------------------------------------------------- 8c6f3a9b5b | advil | 2021-07-16 16:17:54 -0400 fix: various macro menu tweaks * fix webtiles spacing issues * fix some cases where the mapping menu wasn't pushed to webtiles * more consistent behavior after entering an action * explicit save option in the mapping menu (no behavior change, this still uses esc) * better status msg behavior -------------------------------------------------------------------------------- 3b5a371ceb | advil | 2021-07-16 16:17:54 -0400 feat: macro menu, the final form 4a6b093f0 filled a big need in macro editing, by allowing macros to be chosen from a menu, and viewed all at once. However, it was pretty incomplete in a number of ways, keeping the old message-window pseudo-ui for actual editing. This had a number of problems. 97433f2 exaggerated some of the problems of this approach -- since the menu is just used to pick which macro to edit, there's a lot of keystrokes to restart the process if you want to edit more than one at once, or select the wrong one, etc. This commit attempts to finally provide a coherent macro editing UI. * Editing individual mappings is now done via popus from the main macro edit menu. All of the message-window code has been converted to Menu-based code. Text entry uses a generalized version of the title_prompt input box previously only used for spell search. Hopefully most aspects of this will be much more convenient than the old approach. * To make it easier to use this menu with arrow keys, several meta-functions have also been Menu-ified. * Deleting individual mappings is possible from the main list. * Macros vs the various keymap modes are now handled within the menu; getting at keymap editing is a bit hidden to keep people from preferring those over macros. (Basically every "this key doesn't work" report I've run across was someone using a keymap instead of a macro.) * key hints throughout these menus have been (I hope) improved from the message window version. * This UI has a proper help screen. Main TODO that I am aware of: it would be nice to show a cursor when editing in local tiles / console. (Webtiles is fine.) Some subsidiary stuff: * The `Menu::title_prompt` API has been massively improved so that it works in webtiles in a general way, and setting a custom prompt always works. * min Menu width now (sort of) works in webtiles * various minor tweaks / bugfixes to menu code (including some weird stuff with spell search) -------------------------------------------------------------------------------- 0d5cf0409e | Nicholas Feinberg | 2021-07-16 10:10:34 -0700 Stop eleios from destroying the world Very big oversight in 450c7e4133f94db. -------------------------------------------------------------------------------- ad902ab807 | Nicholas Feinberg | 2021-07-15 21:32:23 -0700 Fix Roxanne books (Yermak) Roxanne wants her statue form! -------------------------------------------------------------------------------- 38290d930c | Nicholas Feinberg | 2021-07-15 21:32:11 -0700 Tweak book of iron description Maybe this is a little better? I think there's still room for improvement. -------------------------------------------------------------------------------- 2c003e96b8 | advil | 2021-07-15 22:49:08 -0400 feat: unhide staff skills in skill menu (PleasingFungus) This extends 4390dbc5be0fb to make staff spell school skills show up as trainable by default when carrying a staff that involves such a skill. -------------------------------------------------------------------------------- b82cc645e0 | advil | 2021-07-15 22:38:43 -0400 fix: clarify dj staff wording As far as I know, melee damage is the only thing affected, so clarify the wording so it doesn't confuse the issue with respect to spell school enhancement. -------------------------------------------------------------------------------- 6b5ea614c1 | advil | 2021-07-15 22:25:06 -0400 feat: explicitly mark dj staff limitations I'm still not actually sure this is the best solution to this interaction, but as long as this interaction exists, make it clear. -------------------------------------------------------------------------------- 8cdb131401 | Kate | 2021-07-15 23:38:06 +0100 Don't start Recite's cooldown until ending recitation And decrease the cooldown duration, to clean up the status light display. -------------------------------------------------------------------------------- 299f9947c5 | Kate | 2021-07-15 22:00:23 +0100 Fix a description typo (Goratrix) -------------------------------------------------------------------------------- 458e30bab1 | Kate | 2021-07-15 21:29:30 +0100 Add Nemelex card ability info to the quiver -------------------------------------------------------------------------------- 57f10a385c | gammafunk | 2021-07-14 20:18:56 -0500 feat: Adjust the due_jungle_book Lair end vault We don't have a lot of data for the new version of this map, and its newness means players are more likely to make mistakes, but early indications are that people die to it in practice a lot. It does feature a somewhat higher monster count as well as some legitimately nasty monsters not commonly seen in Lair. This commit reduces the monster count by about 20% and fixes up portions of the layout. For monsters, we reduce the bands spawning in the major combat areas from 6 monster total on-average to 3. That way the focus is on the final necromancers in the two end chambers. We also reduce the random spawns throughout the map, concentrating them on the earlier entryway area, since none of the bands spawn there. That way the map is less likely to be empty until one of the bands are encountered. For layout, we remove the many additional entry connectors, since just one is necessary. The additional ones likely increased the number of vetoes. This might increase the chance that the vault is located at the end of a passage, but this is fitting for the "spooky jungle castle" theme the map now has. -------------------------------------------------------------------------------- c03b058e8b | gammafunk | 2021-07-14 19:33:27 -0500 feat: Rework parts of a Lair ending For gammafunk_lair_ancient_temple, rework the way the temple is "ruined", tweak monster placement and loot, and simplify syntax. For layout, we greatly simplify the crumbled wall sections. Each of the three walls now has an independent 50% of being "collapsed". The collapse wall sections avoid clumping the "broken" wall pieces together and add dry land to facilitate their usage by players. We add an inner chamber with possible door to house the loot and provide more structure. Introduce very light ruining of the fixed wall portions and chamber to prove a few small entrances into the temple. Finally, we introduce random dry land throughout the map to give players better footing while fighting closer to and inside the temple. For monsters, we reduce the average monster count by about 33%. The map was not extreme in terms of monster placement, but it's been the Lair end with the most kills by a wide margin for a long time, in large part due to how effective the merfolk avatar is at punishing incautious players. We now place a couple more of the Shoals themed threats on average, since those were somewhat underused. Add snapping turtles to the list of Shoals monsters, which will help prevent an overall increase in wind drakes; those seem to pose the biggest challenge of the non-avatar monsters in the Shoals set. For the Lair natives, add blink frogs and steam dragons, and remove the very trivial water moccasins. For loot, we replace some of the normal items with thematic items that include 2-4 good loot potions and a single water/Shoals themed item. The water/Shoals themed item includes throwing nets, trident weapons, and phial of floods, and small chances for the three unrands Captain's Cutlass, Trident of the Octopus King, and a ring of the Octopus King. -------------------------------------------------------------------------------- 0e7b3fb1d2 | gammafunk | 2021-07-13 20:36:17 -0500 feat: tweak the abyssal woods Lair ending For hellmonk_lair_end_abyssal_woods, slightly adjust the monster set, introduce chances to have shortcut entrances, tweak the use of demonic trees, add some use of floor tiles, and clean up DES syntax. For the monsters, introduce a 5th monster tier below the "boss" tier on glyph 6. Move the small chance of large abominations formerly on 6 to this new 5 glyph, which it now shares with ugly things. The latter are appropriate to the map, and although they are common enemies later, we don't overuse them here. Then 6 remains dedicated to thrashing horrors, whose numbers we constrain somewhat. Now only 2-4 of those can now place, with an average of 3, since we only place these in the final chamber, and we place a few 5 glyph monsters throughout the map. For layout, introduce two potential shortcuts, each with an independent 33% chance, one that leads something part the starting area and another on the far side that leads in close to the final chamber. Instead of a forest of all demonic trees, use mostly regular trees, gradually introducing demonic trees at an increasing rate until the final chamber, which uses all demonic trees. Also add Abyss-themed floor tiles in this final chamber. Adjust a few loot locations due to the new shortcuts. Closes #1967. -------------------------------------------------------------------------------- 214d61ee58 | hellmonk | 2021-07-13 20:36:17 -0500 Abyssal woods Lair end Adds a new lair end vault based on enchanted_forest, but makes use of demonic trees and an abyssal monster set. Thrashing horrors are the big threat here, so adjusting the number of those would be the easiest way to modify difficulty. Committer's Note: The subsequent commit reworks parts of this map. -------------------------------------------------------------------------------- 57bb12a6e0 | Kate | 2021-07-14 00:27:33 +0100 Remove some food leftovers -------------------------------------------------------------------------------- bdbb211e1e | Kate | 2021-07-14 00:23:06 +0100 Don't let Folly's brilliance stack with the potion To make its behaviour slightly clearer, since as originally implemented the MP reduction didn't stack but the enhancer did. Its permabrilliance is now technically separate from regular Archmagi, so would stack with it if a non-body-armour source of Archmagi existed. Potions of brilliance are marked as temporarily useless with Folly equipped. -------------------------------------------------------------------------------- 622f6405ea | Kate | 2021-07-13 22:25:26 +0100 Rework the robe of Folly (hellmonk) Make it grant perma-brilliance (archmagi and halved spell costs), increase its intelligence and enchantment bonuses, but have it set your willpower to zero. -------------------------------------------------------------------------------- e1afea27ad | Kate | 2021-07-13 22:23:35 +0100 Update unrand descriptions and inscriptions Move information on special unrand features to DBRAND and DESCRIP entries where possible, so that it's all grouped together with standard item properties. This allows shortening the actual descriptions, and making room for them to be primarily focused on flavour and more general descriptions of the item's abilities. -------------------------------------------------------------------------------- 492c89284f | Kate | 2021-07-13 17:57:47 +0100 Adjust weapon brand descriptions For consistency and brevity - it's not necessary to explicitly spell out that fire damage deals more damage to things with fire vulnerability in this single description of one source of fire damage, for example. -------------------------------------------------------------------------------- f8a67e7463 | Neil Moore | 2021-07-13 00:05:33 -0400 Correct Abyss feature placement check. Instead of checking whether a potential feature was surrounded by seven or more solid cells, the old code checked whether the previous feature was solid and surrounded by seven or more cells. -------------------------------------------------------------------------------- d3c00ef09d | Neil Moore | 2021-07-12 23:14:56 -0400 Fix quote formatting. -------------------------------------------------------------------------------- e6b0c8b507 | hellmonk | 2021-07-12 18:42:25 -0400 Adjust snake endvault monsters Many snake end vaults placed large numbers of monsters (50+ on average, with 90 average monsters in the most extreme case) with low randomization. This commit reduces snake end vault average monster counts to ~35-40 for most vaults and randomizes formerly static monster counts. Additionally, two snake rune vaults that previously placed twice as often now share the standard vault weight. -------------------------------------------------------------------------------- 3eddc1d3d3 | Aliscans | 2021-07-12 23:10:51 +0300 Let the player create both Maggie and Margery in wizard mode. Wizard mode let you bypass the "has this unique been generated?" check, but not the "has the other unique been generated?" one. Instead of the second check, this change has the game mark Maggie and Margery as having been created whenever either one is. [ Committer's note: Moved the class to its own header. If more "storyline uniques" are generated this should be further datified, but the type doesn't belong in player.h regardless. Closes #1884 ] -------------------------------------------------------------------------------- e3ff63456f | Nikolai Lavsky | 2021-07-12 22:08:17 +0300 Don't allow cancelling hostile Battlespheres -------------------------------------------------------------------------------- e30191f0e2 | Aliscans | 2021-07-12 20:35:58 +0300 Fix the "stat zero" warnings for rings. If you say no to a "stat zero" prompt for wearing a ring, don't remove your existing ring. -------------------------------------------------------------------------------- 3b8667add3 | Aliscans | 2021-07-12 20:35:58 +0300 Fix the "stat zero" warnings for amulets. If you put on an amulet, having not previously been wearing one, check for stats below 1. If you say no to a "stat zero" prompt for wearing an amulet, don't remove your existing amulet. -------------------------------------------------------------------------------- b3396a012b | Aliscans | 2021-07-12 20:35:58 +0300 Fix the "stat zero" warnings for armour. If you say no to a "stat zero" prompt when changing your armour, don't remove your existing armour. Don't give a "stat zero" prompt if wearing your current armour at the same time as a new piece in the same slot would give a stat below 1. Give a "stat zero" prompt if wearing some new armour alone would give a stat below 1. -------------------------------------------------------------------------------- cf74c853f4 | Aliscans | 2021-07-12 20:35:58 +0300 Fix the "stat zero" warnings for weapons. Remove the second MSG_OK from when you say no to a "stat zero" prompt as you wield a weapon. Don't give a "stat zero" prompt if wielding your current weapon at the same time as a new one would give a stat below 1. Give a "stat zero" prompt if wielding a new weapon alone would give a stat below 1. -------------------------------------------------------------------------------- 09c7552f22 | Aliscans | 2021-07-12 20:27:53 +0300 Check for monsters, objects & features as soon as you move. (#1936) The game previously only reported which monsters had "come into view" when a monster shouted or the player was ready to start a turn. This interacted badly with ABIL_WU_JIAN_WALLJUMP (for one), as you move to a new location as part of the turn, and both you and the monster can act before the next "start of turn" rolls around. Calling update_monsters_in_view() from moveto_location_effects() should make the "comes into view" message the first one you see for a monster. I also call check_for_interesting_features() so that nearby objects and features are announced at the same time. Co-authored-by: Aliscans -------------------------------------------------------------------------------- 25c1220f7b | hellmonk3 | 2021-07-12 13:03:15 -0400 place water under goliath frogs in frog pond -------------------------------------------------------------------------------- b5d4ac33de | hellmonk3 | 2021-07-12 12:56:04 -0400 modify frog_pond Add a chance to place goliath frogs and reduce the notoriously high monster density by about 25%. -------------------------------------------------------------------------------- db44c70a1d | Kate | 2021-07-12 17:33:59 +0100 Fix a vault loot definition -------------------------------------------------------------------------------- 81e557bc32 | Edgar A. Bering IV | 2021-07-12 10:31:44 +0300 vaults: Adjust the despoilered loot in portals For the most part, change the loot lists to use standard dgn.* constants instead of identifying everything. The identification in early portals would eat up a large portion of the remaining item ID game, which would be a shame. Usingn the dgn.* constants does mean that portal loot has a different distribution than the floor, but it's not a vault by vault absurd spoiler. Closes #1855 -------------------------------------------------------------------------------- f0cfdccd6e | hellmonk | 2021-07-12 10:09:28 +0300 vaults: Identify non-random potion types in many vaults This was an extremely obtuse, though little-abused, spoiler. -------------------------------------------------------------------------------- 98b9705cb8 | nlavsky | 2021-07-12 09:25:31 +0300 Remove a couple of obsolete descriptions (#2022) -------------------------------------------------------------------------------- ca18f49f40 | gammafunk | 2021-07-12 01:05:28 -0500 Rework the Elemental Staff guarded unrand vault For dilly_guarded_unrand_elemental_staff, rework monster placement and the decorative chambers, and reorganize and simplify DES syntax. We extend the placement range to include D:8, and have difficulty scaling conditions cover each of D:8-11, D:12-13, and D:14-15 separately. The monster sets are adjusted to have more depth-appropriate threats at each range, with a low-tier elemental set for each element that doesn't go out of depth and a shared moderate out of depth tier. Monster counts also scale with depth. The boss is modified to be a depth-appropriate monster wielding the Elemental Staff. For Dungeon we increase from deep elf pyromancer, to deep elf zephyrmancer, to tengu reaver. For Elf and Depths we used the master elementalist vault-defined monster already used by mu_elemental_laboratory. The decorate elemental areas have been simplified to just use appropriate clouds and not use decorative monsters. There aren't appropriate conjured monsters for each element, and the vault already nicely communicates the elemental theme with the decor and actual monsters. Closes #2021. -------------------------------------------------------------------------------- 89162da0c7 | dilly | 2021-07-12 01:04:08 -0500 A guarded unrand vault for the Elemental Staff Committer's Note: Reword commit message. The subsequent commit revises many aspect of this vault. -------------------------------------------------------------------------------- 491fb513fc | gammafunk | 2021-07-12 01:01:19 -0500 Rework the master elementalist vault The vault mu_elemental_laboratory features a vault-defined "master elementalist" monster that's themed as having mastered the four forms of elemental magic. However this monster doesn't pose a very good threat, certainly not one worthy of a having a vault-defined monster. The vault itself is not especially challenging either. This commit reworks the monster and the associated vault to pose a greater challenge and give greater rewards, reworking it into a rare runed door vault. The master elementalist gets an HD bump to 18 and boasts a formidable array of spells: Ozocubu's Refrigeration, Lehudib's Crystal Spear, Chain Lightning, and Fire Storm. It still has Haste, but loses Blink for Repell Missiles, since the former doesn't work great for its terrain in this vault. The monster attempts to generate with the Elemental Staff, thus giving him formidable elemental resistances. If the Elemental Staff is unavailable, it instead gets a staff of air, and its robe gains the resistance ego, thus it will always have at least rF, rC, and rElec. The master elementalist is a formidable spellcaster, but it doesn't have especially good HP or other defenses, so players with good resistances who act quickly can take it on. The rest of the vault monsters have been given a rework to pose a serious threat for both Elf and Depths, and the elemental-themed terrain has been enhanced. Loot includes randbook for one of each of the four elemental schools, as well an artefact jewellery, an enhancer staff, and a manual, all theme from one of the elemental schools. The master elementalist monster definition is moved to a function, since it will be re-used for a forthcoming guarded unrand vault. -------------------------------------------------------------------------------- 1e82c303ef | Kate | 2021-07-11 03:04:27 +0100 Remove mechanical traps from Ossuaries This was the last place they existed outside of Sprints, and even with vaults that were originally designed around them they didn't really fulfil any real purpose. Some of the vaults keep alarm and net traps which might have more relevant effects, but all of the plain damage traps could almost always be easily avoided, ignored or rested off. -------------------------------------------------------------------------------- 90fbb72469 | Edgar A. Bering IV | 2021-07-10 21:31:41 +0300 feat: a more electrifying storm fist (ardl) -------------------------------------------------------------------------------- 5d1bdbc639 | wheals | 2021-07-10 21:25:28 +0300 Add a quote for Storm Form -------------------------------------------------------------------------------- c46b4539cf | Edgar A. Bering IV | 2021-07-10 12:36:07 +0300 fix: a doubled word (FizzleBang) -------------------------------------------------------------------------------- 1038ab4fd7 | gammafunk | 2021-07-09 21:15:56 -0500 Simplify a lua test and reindent I'm not sure if this test needs to exist as a standalone test given our existing map connectivity checks, but so long as it does exist, it needs to properly ignore any shoals encompass maps for the branch end. A previous fix to the dlua API allows the existing code to work. This commit just simplifies its logic and reindents. Closes #2003. -------------------------------------------------------------------------------- 4b6fb3c526 | gammafunk | 2021-07-09 21:15:56 -0500 Fix the return value of a dungeon lua API method For vault placement lua objects, have orient() return a string with the name of the orientation instead of returning the relatively useless raw enum value. -------------------------------------------------------------------------------- d9be06fd8e | hellmonk | 2021-07-09 21:15:56 -0500 Fix a shoals lua test -------------------------------------------------------------------------------- 1d15788f7f | hellmonk | 2021-07-09 21:15:56 -0500 Two new encompass Shoals rune vaults shoals_end_hellmonk_lost_city: A ruined city at the bottom of shoals, feat. sphinxes and minotaurs. shoals_end_hellmonk_storm_palace: Features wind and water enemies, merfolk, and a storm dragon or titan. Committer's Note: Squashed commits and cleaned up and combined commit messages. -------------------------------------------------------------------------------- 1261f788d9 | nicolae-carpathia | 2021-07-09 22:14:23 -0400 Merge pull request #2011 from crawl/nicolae-quotes-0721 Add new quotes to the Crawl quotes list -------------------------------------------------------------------------------- 7b03791ad5 | Nicolae Carpathia | 2021-07-09 22:05:40 -0400 Add new quotes to the Crawl quotes list Improve the Crawl quotes list, with a diverse assortment of choice quotes from such sources as Mary Shelley, Ovid, Hesiod, T.S. Eliot, John Milton, DMX, and ADMIN. -------------------------------------------------------------------------------- c8121b24ce | Edgar A. Bering IV | 2021-07-09 20:31:40 +0300 fix: fix the previous fix -------------------------------------------------------------------------------- f355649ca4 | Edgar A. Bering IV | 2021-07-09 20:20:07 +0300 fix: highlight gozag gold blue in webtiles under distraction aura Closes #1691 I don't claim to fully understand CSS inheritance, but it seems like having a separate block for #stats_gozag_gold is unnecessary. -------------------------------------------------------------------------------- 1ef64ffb57 | Edgar A. Bering IV | 2021-07-09 19:39:26 +0300 fix: correct capitalization of Storm fists -------------------------------------------------------------------------------- b01f110dc7 | Edgar A. Bering IV | 2021-07-09 19:32:17 +0300 fix: correctly sum a geometric series The probability display for pacify chances was not the correct probability computation. -------------------------------------------------------------------------------- 8568cbafd6 | gammafunk | 2021-07-09 10:40:57 -0500 Rework a transporter vault The vault gammafunk_worm_tunnel is a memorable challenge, but it's conspicuously large for a challenge vault of this type. This commit drastically reduces its size, slightly changing layout and adjusting swamp worm placement slightly so it remains a significant challenge. It also adapts the vault to place in earlier dungeon and Lair, using net traps instead of Zot traps with an additional miasma cloud generator before D:14. The net traps are far less lethal than Zot traps, but still trap players, give the worms more opportunities to slurp. The additional miasma generator near the exit chamber door is used when when net traps are used to slow down a player using a blink scroll a bit more than a net trap at that location would. When Zot traps are used, a player doing this must run the risk of blinking onto a Zot trap, so a trap there is appropriate. Loot and additional worm placement is revised to scale better with placement depth. We use trees in Swamp so that this vault better fits in with the surrounding layout. I opted against using trees elsewhere to minimize the use of fire magic to break into the vault. In Swamp we're a bit happier to let fire magic take over the place. -------------------------------------------------------------------------------- 5dd8012253 | Nicholas Feinberg | 2021-07-09 07:41:10 -0700 New Holy Roller title (PF (particleface)) Palentonga Invo 27 with any good god. -------------------------------------------------------------------------------- 2aaa0cc67b | Kate | 2021-07-09 02:32:09 +0100 Adjust randomisation in some kennysheep vaults ks_random_setup is used in a number of vaults to heavily randomise various features, but the randomisation of water in particular could have some extremely strange results in certain vaults, with large pools being replaced with huge numbers of statues. Instead only allow water to be substituted for floor, lava, or trees (this also has the bonus of making the behaviour match how the function's comment claims it works). -------------------------------------------------------------------------------- 99fd57bada | advil | 2021-07-08 17:25:22 -0400 fix: avoid a crash on upgrading randbooks after ca9b790695f0 Randbooks don't have artefact props, and ca9b790695f0 added some explicit checks for this. Most code is careful about this, but there were a bunch of fairly old save compat checks that were not. It probably would be fine to loosen up the artefact_property check, but it's also easy to prevent the call for the save compat cases. I've made the artefact_property check more explicit as well, so that it might be easier to guess what's going on here. -------------------------------------------------------------------------------- 29bd1443cf | Edgar A. Bering IV | 2021-07-08 23:11:33 +0300 docs: update credits -------------------------------------------------------------------------------- 8a69ca93ff | Zhang Kai | 2021-07-08 23:09:16 +0300 Update unident.txt Add translation. 增添翻译。 [ Committer's note: Also removes deck of cards description, as those no longer appear as items in game. Closes #1948. ] -------------------------------------------------------------------------------- bfabb6706f | Zhang Kai | 2021-07-08 23:09:05 +0300 Create clouds.txt Add translation. 增添翻译。 Closes #1945 -------------------------------------------------------------------------------- d2886d99c2 | Zhang Kai | 2021-07-08 23:09:04 +0300 Update species.txt Add translation. 增添翻译。 [ Committer's note: Did not include the kobold translation which references eating so was based on an old version. Closes #1900. ] -------------------------------------------------------------------------------- f492b14eaa | Zhang Kai | 2021-07-08 23:08:21 +0300 Update cards.txt Add translation. 增添翻译。 [ Committer's note: Did not include the Foxfire and Shaft translations, the former was based on an outdated description, the latter has been removed. Closes #1895 ] -------------------------------------------------------------------------------- 6a8ace0863 | advil | 2021-07-08 14:50:40 -0400 feat: clickable game menu access for local tiles (PleasingFungus) This also removes the player tile editor from the system toolbar, and simplifies the save game menu option by using CMD_SAVE_GAME_NOW. -------------------------------------------------------------------------------- 97433f2c34 | advil | 2021-07-08 14:50:40 -0400 feat: add a game menu This commit introduces a serviceable in-game menu of the sort you might expect in games that aren't 20 year old open source roguelikes. It's possible that some people will hate this nod to modernism, but I think it's actually kind of useful, and helpful to new players. Will take suggestions on what should or shouldn't be here. This also may be a useful place to get to a hypothetical future in-games options editor. Unfortunately, I don't think it's a great idea to put this on ESC on the default keybinding, since that has for so long been a noop when at the main game UI. So for now it replaces macro editing on `~` (and hitting `~~` brings you to the macro editor). For tiles, this commit reuses existing tiles (partly drawing on ones for the local tiles system toolbar, which has some functionality overlap with this menu). Some of these might benefit from artist attention. -------------------------------------------------------------------------------- 1715c4e68f | advil | 2021-07-08 09:50:10 -0400 feat: try to map more currency symbols to CMD_LIST_GOLD I am not sure whether this will (a) build on every platform, or (b) work on every build target. When testing on a US keyboard layout on mac, I can consistently get these to work on console, but not on the other two. However, I think this is because I need to enter them as complex chorded keystrokes involving number keys, where local tiles number key processing interferes. Not sure what's happening in webtiles at all, but on a US layout these definitely don't work for me. We'll see what, if anything, happens on other layouts. -------------------------------------------------------------------------------- 3203f140b7 | Edgar Bering | 2021-07-08 03:16:01 -0400 feat: further reduce book spawns They still feel overabundant. A previous commit had pulled them back some, and metioned that further triming could be warranted. -------------------------------------------------------------------------------- 47ed6a6988 | dicedlemming | 2021-07-08 08:54:56 +0300 Update mutation-data.h (#2019) The spell school it improves is Hexes. The Book of Maledictions was the starter Hex book, but Hex is the spell school that gains power. "Power" is also the terminology used on items that do similar things like Staff of Air, ie "increases the power of air spells" -------------------------------------------------------------------------------- 9d6fb14e67 | gammafunk | 2021-07-07 14:39:02 -0500 feat: Rework a monster float vault (again) This commit finishes aspects of gammafunk_indiana_jones I wasn't able to do in the last commit. It reworks the final chamber to feature lindwurms safely protected from fire clouds while still having lava snakes, putting the fire cloud machines on the lava directly. It also adds a Tomb theme for D:14- and Spider featuring death scarabs and spectrals in the final chamber. Loot, monster, and trap placement progression with placement depth is now consistent and should pose a nicely scaling challenge and reward for all levels. Other slight tweaks have been made to the layout to more consistently apply the visual theme, including statues and plant "overgrowth" in the starting area, as well as statues in the final chamber. All doors inside are runed doors, which is the best balance between UI and preventing spoilers. -------------------------------------------------------------------------------- 450c7e4133 | Nicholas Feinberg | 2021-07-06 20:33:37 -0700 Make eleios live in harmony with nature Instead of destroying trees, make them move adjacent. This avoids weird issues caused by terrain destruction, ensures they have a tree nearby to do woodweal magic with, and also feels nicely thematic. -------------------------------------------------------------------------------- f0d5c502f9 | Kate | 2021-07-07 01:43:54 +0100 Let fallback misc acquirement create Xom chesspieces Since every misc item is equally redundant at that point, there's no reason for them not to be included. -------------------------------------------------------------------------------- 2ba4aa32ac | Kate | 2021-07-07 01:26:16 +0100 Fix a compiler warning (geekosaur) -------------------------------------------------------------------------------- f8f22f7954 | Edgar A. Bering IV | 2021-07-07 00:16:14 +0300 fix: correct a typo (#1988) -------------------------------------------------------------------------------- 9ca5906e5d | Edgar A. Bering IV | 2021-07-07 00:12:49 +0300 fix: guarantee all potion petition sets are non-empty Closes #1996 -------------------------------------------------------------------------------- 2c4abef907 | 4Hooves2Appendages | 2021-07-06 23:59:18 +0300 Second Antaeus quote (#1965) Add second Antaeus quote. -------------------------------------------------------------------------------- 8390803364 | Alexei-Barnes | 2021-07-06 23:57:35 +0300 Removed dead code ranged_attack::calc_to_hit (#2001) This method calls the base and then returns the result. This can be achieved by simply not overriding the base method. I believe this was missed during editing because of the conditional in the method, however, since this conditional just returns the same result, it is obsolete. Co-authored-by: root -------------------------------------------------------------------------------- dd09596130 | Edgar A. Bering IV | 2021-07-06 23:48:45 +0300 fix: end engulf upon polymorph Closes #1935. Polymorph is described as the monster evaporating and reforming, so the lore solution to this bug of "you are now engulfed by flesh", while terrifying, doesn't quite fit. -------------------------------------------------------------------------------- 4e304d196c | Edgar A. Bering IV | 2021-07-06 23:24:11 +0300 fix: don't fire fineffs at beam end (12547) In addition to turning monster explosions into fineffs, 0.26-a0-844-g3dd439832f added fire_final_effects to bolt::finish_beam. This broke a long-time assumption in many spells that use the bolt struct creatively and possibly fire several bolts: that final effects (e.g. death channel spawns) were fired only after all beams were complete. The bug in the subject line was one example, similar behaivors could be found with ignition, starburst, imb and maybe more. -------------------------------------------------------------------------------- 57d10ac81f | Edgar A. Bering IV | 2021-07-06 23:24:11 +0300 text: clarify that dream dust is visual (12529) -------------------------------------------------------------------------------- 61de9534bc | Edgar A. Bering IV | 2021-07-06 23:24:11 +0300 fix: patch a tree burning information leak (12548) Resolves an XXX, but it might be better if Fedhas just prevented you from starting forest fires. -------------------------------------------------------------------------------- 763157803f | Kate | 2021-07-06 17:54:59 +0100 Don't allow cancelling hostile Malign Gateways -------------------------------------------------------------------------------- 2674c19aa4 | Edgar A. Bering IV | 2021-07-06 19:47:31 +0300 fix: clear engulf on monster move (12566) -------------------------------------------------------------------------------- 0d460d363a | Edgar A. Bering IV | 2021-07-06 19:37:08 +0300 feat: make autotravel slightly less cautious (12559) 0.27-a0-234-g56efc2da1b made autotravel avoid stepping next to either an unknown square or a currently unseen known non-wall square if possible. The unknown behavior is good, the unseen but known is more debatable in the days of no wandering spawns. -------------------------------------------------------------------------------- 18c06f7514 | Edgar A. Bering IV | 2021-07-06 19:26:11 +0300 fix: guard a teleport closet (12564) -------------------------------------------------------------------------------- 2ff873f930 | Edgar A. Bering IV | 2021-07-06 19:24:39 +0300 fix: don't shatter conjured monsters (12552) -------------------------------------------------------------------------------- 5102b24f49 | Edgar A. Bering IV | 2021-07-06 19:06:50 +0300 fix: adjust spacing in cloud descriptions (12570) -------------------------------------------------------------------------------- 3d396884e3 | Edgar A. Bering IV | 2021-07-06 19:01:00 +0300 fix: prompt for god switching at a faded altar (12580) -------------------------------------------------------------------------------- 0645571d10 | Edgar A. Bering IV | 2021-07-06 18:51:37 +0300 fix: don't trigger the staff of battle in rude situations (kate) -------------------------------------------------------------------------------- f3ba162646 | Edgar A. Bering IV | 2021-07-06 18:42:49 +0300 fix: prevent extraneous commas in an inscription (12612) -------------------------------------------------------------------------------- 7f483be983 | Edgar A. Bering IV | 2021-07-06 18:40:12 +0300 fix: bolt and arrow uselessness checks (kate-, Yermak) -------------------------------------------------------------------------------- d41220b2a5 | Edgar A. Bering IV | 2021-07-06 18:29:17 +0300 text: adjust a command description -------------------------------------------------------------------------------- 2081246efe | Edgar A. Bering IV | 2021-07-06 18:03:10 +0300 fix: process ring unequips when sacrificing hand (12587) This adds a bit of a special case to avoid charging the player a removal penalty if they keep the ring on because of the sacrifice swap hand/tentacle. A simpler solution would be to always impose the swap penalty, but this would come at the cost of adding more prompts to sac hand for special cases. This is cleaner and bothers the player less. -------------------------------------------------------------------------------- 0bd348349d | Edgar A. Bering IV | 2021-07-06 18:03:10 +0300 fix: abort Yred animate dead when useless (12588) -------------------------------------------------------------------------------- 07712775d2 | Edgar A. Bering IV | 2021-07-06 18:03:10 +0300 fix: don't retaliate against your reflection (12596) -------------------------------------------------------------------------------- 51990a9c54 | Edgar A. Bering IV | 2021-07-06 18:03:10 +0300 fix: sequence holy word application (12600) -------------------------------------------------------------------------------- b3c598c8fe | Edgar A. Bering IV | 2021-07-06 18:03:10 +0300 fix: prompt when summoning would be a bad plan (12602) Previously we warned the player about summoning with OTR up, but we should really check for bog and vortex too. If this results in a profusion of prompts rude_stop_summoning prompt can be changed to take an optional pal representative and made a bit smarter, but I expect that this change won't generate very many more prompts, given the non-overlap of spell schools. -------------------------------------------------------------------------------- f13327c4b8 | Edgar A. Bering IV | 2021-07-06 15:17:28 +0300 fix: mark arrows and bolts useless for one-handers (12608) -------------------------------------------------------------------------------- b642d533b8 | Edgar A. Bering IV | 2021-07-06 15:06:35 +0300 fix: don't clua crash on randbooks (12508) Throughout the codebase arterfact_property is only called on items satisfying its opening asserts. With one exception, artprop in the Item metatable in clua. The ticket suggested modifying artefact_property. Since tripping those asserts indicate a possible missuse, this commit makes the clua function appropriately robust. -------------------------------------------------------------------------------- d9270de0a6 | Edgar A. Bering IV | 2021-07-06 15:00:23 +0300 fix: respect use_animations for monster upheavals (12582) -------------------------------------------------------------------------------- 88c68e56d1 | Edgar A. Bering IV | 2021-07-06 14:49:42 +0300 fix: autoexplore over bogs while flying (12553) -------------------------------------------------------------------------------- a6938257b9 | Edgar A. Bering IV | 2021-07-06 14:40:09 +0300 fix: ignore immune allies in cloud tracers (12558) -------------------------------------------------------------------------------- 887aaaf34d | Edgar A. Bering IV | 2021-07-06 14:24:29 +0300 fix: don't consider resisted electricity harmless (12560) For self-targeting beams this warns the player about self damage. A bug for over a decade! -------------------------------------------------------------------------------- 0648b932ec | Edgar A. Bering IV | 2021-07-06 14:02:03 +0300 fix: be more accurate when describing melding (12583) Sorry for leaning harder into the XX advil. -------------------------------------------------------------------------------- e9f228fa16 | Edgar A. Bering IV | 2021-07-06 12:00:22 +0300 fix: actually check battlesphere spell schools -------------------------------------------------------------------------------- 6df09b6f62 | Edgar A. Bering IV | 2021-07-06 11:36:23 +0300 fix: vaults transparency (12591) -------------------------------------------------------------------------------- 3d13938747 | Edgar A. Bering IV | 2021-07-06 11:04:50 +0300 docs: update credits -------------------------------------------------------------------------------- 157b2762af | Edgar A. Bering IV | 2021-07-06 11:00:46 +0300 fix: battlesphere triggering behavior (12598) -------------------------------------------------------------------------------- 4244d9059e | Edgar A. Bering IV | 2021-07-06 10:44:21 +0300 fix: alphashops typo (12613) -------------------------------------------------------------------------------- 426ee5db0f | Edgar A. Bering IV | 2021-07-06 10:43:29 +0300 vaults: remove unnecessary no_monster_gen in ecu vaults -------------------------------------------------------------------------------- 0b0bf74c28 | Edgar A. Bering IV | 2021-07-06 10:43:29 +0300 fix: spacing tweak in ecumenical.des -------------------------------------------------------------------------------- 47bcd709c3 | DreamDustDCSS | 2021-07-06 10:42:00 +0300 vaults: DreamDust faded altar vaults Six new ecumenical altar vaults [ Committer's notes: Overall adjusted tags (allow monsters, rotation). Squashed commits and rebased. Specific vault adjustment notes follow. Closes #1946. hidden_grotto: use delayed decay for the corpse, remove the quarterstaff and butterflies, trim size. angels_and_demons: console aesthetics, trim size. drowned_temple: statuary and console aesthetics, trim size. grove: remove butterflies, guarantee connectivity, console aesthetics. sealed_demon: console aesthetics. ] -------------------------------------------------------------------------------- 28d7adaeb8 | Shapermc | 2021-07-06 10:40:39 +0300 vaults: ShaperMC ecumenical altar ruins Adding 7 new ecumenical altar vaults [ Committer's notes: Adjusted foliage counts and placements (we don't want to overly annoy players making them crush plants). Placed some controls on the Plato randbook. Fixed up the skeleton placement for Pompeii. Cleaned up spacing. Fixed commit history. Closes #1999. ] -------------------------------------------------------------------------------- 2c0bbc4b58 | MainiacJoe | 2021-07-06 10:39:41 +0300 vaults: unaligned overflow altar vaults by ManiacJoe Each of these vaults has a fixed altar count. Seventeen place one altar, six place two altars, and one places four altars. [ Committer's notes: Squashed and rebased. Added transparency tags to all vaults. Corrected typos and removed extraneous headers in boulavard, catwalk, and surrounded_room. Removed borders from large_24_doors, chevrons, and large_starburst. Removed some over-use of clear stone. Made the_wave 2 tiles wide. Tweak alcove_2 and catwalk. Closes #1858. ] -------------------------------------------------------------------------------- f5a116941d | Kate | 2021-07-05 05:05:53 +0100 Reduce the number of bees in wad_woods_minihive It's probably still excessive, but at least slightly less so. -------------------------------------------------------------------------------- 331ba6fa66 | gammafunk | 2021-07-04 21:37:46 -0500 feat: Adjustments to Ice Cave entry vaults Many of these vaults haven't been updated for monster changes over the years. In these vaults, replace ice beasts with simulacra appropriate for placement depth, placing fewer, since simulacra tend to be nastier. Remove some arbitrary down-weights on some normal entry vaults, but keep down-weighting on easy entry vaults that place an out of depth monster. Organize entry vaults into sections based on whether they place for one specific type of ice cave difficulty and clean up syntax. -------------------------------------------------------------------------------- 183a74056d | gammafunk | 2021-07-04 21:37:46 -0500 feat: Adjust hard Ice Cave placement Currently hard ice caves can only place in Elf and Lair branches, but D:14-D:15 is comparable depth to Lair branches, and an easy ice cave will generally be very easy by D:14. This commit extends hard ice caves to the final two levels of Dungeon. -------------------------------------------------------------------------------- cde07775c6 | gammafunk | 2021-07-04 21:37:46 -0500 feat: Have all Ice Cave maps use the same weight Maps currently have a weight of either 5 or 6, making them individual place at nearly the same frequency. The weight of 6 was used for the five "small cave" maps to make them place twice as often as the three "sprawling cave" maps that use weight 5. This isn't necessary, however, since the themes of these maps are strongly overlapping. The two map sets share similar monsters, have similar difficulty as a whole, and nearly all of the "small" maps are in fact quite big. This commit has all maps use the default weight of 10. -------------------------------------------------------------------------------- cc58b11c1d | gammafunk | 2021-07-04 21:37:43 -0500 feat: Rework many aspects of Ice Cave maps (hellmonk) Many ice cave maps don't define variants for the hard difficulty version of the portal that places at later levels, which means less map variety at these locations. Additionally, terrain in many maps includes freezing vapour generators that are randomly placed, leading to annoying gameplay and many out-of-LOS collateral monster kills. Many maps place large deep water areas that are either completely enclosed with rock or lead to spoilery dead ends with no gameplay relevance. Finally, some maps share common functions and data for defining thematic monsters and loot, but these are a patchwork that's not used consistently among all maps. This commit addresses these issues. Partially based on hellmonk's PR #1942, we add hard variant monster and item sets to all ice caves. To help achieve this, the vault functions for items and monsters are generalized and shared to some degree among all maps. As before this commit, there are two thematic sets of monsters, natural and demons+undead, but instead of using the natural set only for easy difficulty and undead+demons only for hard, both sets have definitions for each difficulty. Both sets define eight monster definitions using the same glyphs 1 through 8, with a designated function at each glyph like "statue monster", "miniboss", and "boss". This way any map can use the definitions interchangeably, regardless of monster set or difficulty. All but four maps use these monster sets, and the three "sprawling caverns" can use either set at either difficulty, randomly choosing between the two. The monster lists have been tweaked to be more coherent with more well-defined difficulty progression. For statue monsters, we use ice statue for both sets at easy, orange crystal statue for the natural natural at hard difficulty, and obsidian statue for undead+demon at hard. To allow Shadow Creatures to work for orange crystal statues and the player spell, both monster sets defined appropriate random monster lists at both difficulties. Additionally the simulacrum lists used by the undead+demon set have been expanded to have definitions at both difficulties, rebalanced, and refactored to be more easily reused. Both sets now define two boss monsters, a stronger, but smaller group monsters and a weaker, but larger group monster, and most maps randomly choose one of these two configurations. For the natural monster set at easy difficulty, the player faces either two ironbound frosthearts or a single frost giant. At hard difficulty, this is either two or more frost giants or one to two shard shrikes. For the undead+demons set at easy difficulty, the player faces either two bog bodies or a single reaper. At hard difficulty, this is either two or more blizzard demons or one to two ice fiends. Trivia: the infamous double ice fiend found on ice_cave_small_demon at hard difficulty was due to a bug where the original author misapplied a substitution pattern used in other maps. They meant to give either two blizzard demons or one ice fiend, and gave instead either one blizzard demon or two ice fiends. This double fiend is so universally loved that I made it possible on any map using the undead+necro set at high difficulty, albeit with reduced chance. I also expanded the idea to the natural monster set using shard shrikes. Enjoy! The ice-themed common loot definitions have been improved to have six common classes of items: three tiers of armour (aux+light, medium, and heavy), two tiers of weapons (any weapon and upper-tier weapons), and a magic set (books, enhancers, jewellery, and misc items). Additionally, necromancy-themed maps share a common ice-themed necromancy loot definition. These definitions used to some degree by all maps, replacing the many different and overlapping definitions used previously. Larger maps that place loot items at early or midpoint locations now always place one of the armour class items at these locations, so a player might get access to rC before the map is finished. The tier of armour item at these locations is randomized, so it won't always be light armour, for example. For maps that previously had hidden water caverns, we turns some of these areas on each map into randomized shortcuts that are each open 50% of the time. These shortcuts contain either deep water (encouraging use of flight or amphibiousness) or floor with a freezing vapour generator. These shortcuts are at fixed locations that provide meaningful skips of significant fights and in a way where collateral monster deaths to freezing vapour will be reduced. More randomly placed freezing vapour machines are gone altogether, with the exception for the ones at the end of ice_cave_small_demon. All freezing vapour machines now place with the same power level (cloud duration), but vary by size (number of clouds placed) as appropriate for their map location. Many other aspects of monster placement and composition have changed on a per-map basis. Comments have been updated at the top of each map to summarize types of monsters and loot, and there are comments for each group of SUBST/NSUBST/SHUFFLE. On each map, comments above the conditional check for hard or easy difficulty describe the major differences between the two difficulties. Some additional notes on specific maps: ice_cave_small_demon: Any reaper placed now gets a robe of cold resistance and either a ring of protection from cold or a ring of ice, bringing it to rC+++ and freezing vapour immunity. Gone are the days of the mysterious dead reaper! This map could randomize between reapers and blizzard fiends since it doesn't have an explicit necromancy theme, but for now we're going with reapers only for tier 2 demons. ice_cave_statue_garden_transporter: The final transporter area has been reworked to be small enough so it can be entirely seen by the player before taking the transporter. ice_cave_statue_garden_chambered: The map was created before circlelos became squarelos, when visual range was 8 squares for all characters. Hence its ice statues were all in view of each other before squarelos, but it wasn't updated for the reduction of visual range to 7 squares. I've reduced the map two squares in its longest dimension to bring them back within LOS of each other. Closes #1942. -------------------------------------------------------------------------------- 84e617a3e7 | gammafunk | 2021-07-04 21:32:04 -0500 doc: Update comments in icecave.des Add vault sections with guidelines and instructions for entry vaults and the ice cave maps. Clean up descriptions of ice cave themes and reorganize. -------------------------------------------------------------------------------- e31baa5f3c | gammafunk | 2021-07-04 21:32:04 -0500 feat: Add a vault utility function The lua function dgn.random_entry_arg() can be used to add an argument to each entry in a delimited string. This can be useful when adding weights or terms to strings defined for monster and item definition purposes so that said strings can be re-used without repeating their contents in multiple places. This will be used in a subsequent commit that updates the Ice Cave maps. Also improve and reformat comments for other functions in this file. -------------------------------------------------------------------------------- 282632147b | Kate | 2021-07-05 00:57:38 +0100 Let Poisonous Vapours set ally targets -------------------------------------------------------------------------------- 9c78c815f3 | Kate | 2021-07-04 17:50:25 +0100 Don't expire Coupling/Ramparts etc when flight ends -------------------------------------------------------------------------------- 0fd888774e | wheals | 2021-07-04 18:22:59 +0300 Remove unused spl-pick.{cc,h} -------------------------------------------------------------------------------- 0929e78a5e | wheals | 2021-07-04 18:18:19 +0300 Change random-pick to use vector and c++11 list initialization This removes the need for a terminator entry at the end -------------------------------------------------------------------------------- 4c2704cb36 | wheals | 2021-07-04 16:32:19 +0300 Remove butchering -related option -------------------------------------------------------------------------------- aadcdd2144 | wheals | 2021-07-04 16:32:19 +0300 Move travel_open_doors to the travel section of the options guide. -------------------------------------------------------------------------------- 1844267e3d | wheals | 2021-07-04 16:32:19 +0300 Remove the now-unused spflag::emergency. -------------------------------------------------------------------------------- 87b6fcb595 | Nicholas Feinberg | 2021-07-03 18:10:06 -0700 Make storm form insubstantial (gammafunk) Purely for flavour. -------------------------------------------------------------------------------- 300acc8974 | Nicholas Feinberg | 2021-07-03 16:28:04 -0700 Add a bad storm form tile PF'd again -------------------------------------------------------------------------------- 96bc1138ba | Nicholas Feinberg | 2021-07-03 16:17:24 -0700 One more book freq tweak Per objstat, this gets average spells generated in Lair and D back to the same levels they were at pre-recent-changes. -------------------------------------------------------------------------------- 6853699f2c | Nicholas Feinberg | 2021-07-03 15:15:52 -0700 Remove stab_bypass Previously, stabbing could randomly bypass some of the defender's AC. At 5 stealth skill and 5 shortblades, you'd get on average 1.25 bonus damage out of this, assuming your target had at least 5 AC and they were sleeping, paralysed, or petrified (otherwise, you'd get on average ~0.3 bonus damage). At 18 stealth and 12 shortblades, you'd get on average about 3.75 bonus damage, with the same qualifications (target had at least 15 AC, etc). This seems unecessarily complex. Why add such a tiny bonus specifically against enemies with AC? Stabbing is already good against AC; it does huge damage! Instead, let's just add this tiny little flat bonus directly into damage, pre-AC. This is a small player buff. (We may later want to just cut this flat component entirely and shift other things around if necessary.) -------------------------------------------------------------------------------- 9b7c6745da | Nicholas Feinberg | 2021-07-03 14:38:39 -0700 Pull back on book gen again Drop it by 25% (not counting vaults), since it looks like we overshot a bit. May need to drop it farther. -------------------------------------------------------------------------------- 4b3bd47ff3 | mgdelmonte | 2021-07-03 17:29:06 +0300 feat: add monster.flags Adds a flags function to the Lua monster_info object, which returns the list of flags set for the monster. This allows more script future proofing as compared to the flag method. [ Committer's note: Updated commit message. Closes #1921. ] -------------------------------------------------------------------------------- 66c3ed4545 | mgdelmonte | 2021-07-03 17:17:58 +0300 feat: add travel.is_excluded The travel module in Lua lets you set and remove exclusions, but not test for them. This adds the is_excluded function to that module. [ Committer's note: Edited commit message. Closes #1928. ] -------------------------------------------------------------------------------- b48c9e4e3a | mgdelmonte | 2021-07-03 17:14:09 +0300 fix: check for exclusions in view.is_safe_square Currently view.is_safe_square returns false if a square has clouds or a trap or something known to be nasty, but not if the square is marked excluded. However, a marked exclusion, whether by the player or the game, would seem to be an obvious indicator that the square is unsafe. With the current implementation of view.is_safe_square, hitting TAB to autofight when a monster is within an excluded area, such as that surrounding an ice statue, can result in the question "Are you sure you want to move into that travel-excluded area?" even if non-excluded targets are available. With the advent of the travel_one_unsafe_move option, autofights inconsistent treatment of exclusions is an interface screw. This commit addresses that issue. [ Committer's note: Rewrote commit message. ] -------------------------------------------------------------------------------- 6f15984924 | Edgar A. Bering IV | 2021-07-02 10:46:28 +0300 docs: remove starting books from the manual -------------------------------------------------------------------------------- 9e18931815 | Edgar A. Bering IV | 2021-07-02 10:46:15 +0300 feat: Spell background adjustments part I (kate-, hellmonk) Book backgrounds have for a long time presented friction with the notion that a background should be a starting kit, and not completely determine a character's arc. With many books containing L5 spells many could carry comfortably to the midgame. In part this was necessary to make them fun: with spell books being large and somewhat rare, finding "the right book" could take some time and without the level of progression found in current books they would be sunk cost traps. The recent changes to book items smooth out spell drops, giving more opportunity for characters to adapt. This opens up space to make spell backgrounds more of a starting kit and less of a complete package. Some of the backgrounds would be awkward with a blunt delete all L5 spells from spell starts, so this commit starts the process incrementally. This is also a good opportunity to reduce the number of schools in each start and the total number of spells even if there are no L5 spells, also in support of this goal. Ne, FE, and Wr are untouched, as chopping off their L5 spells leave the books a bit too thin. They will be visited in future commits (possibly in 0.28). AE loses lightning bolt. There's a bit of an aesthetic loss in that lbolt is quite iconic, but the start still has a strong collection of spells that can support developing in various directions based on the dungeon. Indeed, there are many players who already ignore lbolt in the book. AM loses Leda's. The AM book had four (4) schools for a background that notionally also wants to train a weapon. At level 4 dual school Leda's was the hardest to reach of these spells, so its absence won't be too felt. EE loses LRD. People kill OOFs with an acid wand and LRD, come on. Without it the "jank stabber", "pick up some kind of tmut either form or otherwise", and "be a blaster" possibilities invited by the book have more equal appeal. IE loses Metabolic Englaciation. The loss makes repeated Hailstorm harder to set-up from the book alone, but it remains very strong. Su loses Summon Ice Beast. Still very strong but reduces the book to a three school book. VM loses Ignite Poison. This reduces the number of schools in the book to 4 (still high) and returns VM to an era of needing to branch out sooner, especially to deal with resistant threats. This is much like VM's past, but with the new opportunities provided by more frequent spell drops it should be less of a "VM sucks" vibe. -------------------------------------------------------------------------------- 4eff083807 | Edgar A. Bering IV | 2021-07-02 10:01:39 +0300 docs: changelog typos (geekosaur) -------------------------------------------------------------------------------- cffa5a9b16 | Kate | 2021-07-02 06:58:28 +0100 Fix book names in vaults -------------------------------------------------------------------------------- 28b6d0f915 | Nicholas Feinberg | 2021-07-01 22:13:03 -0700 Depluralize (ardl) Avoid "an inescapable atlases" (now "...atlas") or "an unrestrained analects" (now "the unrestrained analects", fairly hackily). -------------------------------------------------------------------------------- 4113b66390 | Nicholas Feinberg | 2021-07-01 22:07:09 -0700 Fix book of stone desc (hellmonk) oops -------------------------------------------------------------------------------- 2e30c3664c | hellmonk3 | 2021-07-01 23:47:02 -0400 Fix book of the spheres description -------------------------------------------------------------------------------- c0e7b40ece | Kate | 2021-07-02 01:34:05 +0100 Don't crash on examining ponderous artifacts Extend the available space in descriptions so that "ponderous" fits, and add handling so that future egos with long names will just be cut off rather than crashing. -------------------------------------------------------------------------------- 6348b4e45d | Kate | 2021-07-01 23:11:04 +0100 Cap the number of spells Djinn can start with Giving Djinn more than 8 spells caused them to hit the cap on known spells as they levelled up. This could only happen rarely for Wanderers, but handle it generally for all new characters Just In Case. -------------------------------------------------------------------------------- 2b061281b7 | Kate | 2021-07-01 23:11:04 +0100 Fix a crash when Djinn learn too many spells In rare cases, Djinn Wanderers could start off with 9 or 10 spells, which would cause them to hit the cap of known spells at level 25 or 27, and crash when trying to learn their next spell. To rescue any games trapped in this situation, make them forget spells from the start of their innate set to make room for the later ones. A later commit should adjust Wanderer starts to prevent Djinn from giving out so many spells and causing the issue in the first place. -------------------------------------------------------------------------------- 2d92212324 | Edgar A. Bering IV | 2021-07-02 01:00:20 +0300 docs: changelog through 0.27-a0-1423-ge5d6b6a -------------------------------------------------------------------------------- e5d6b6ab6a | Nicholas Feinberg | 2021-07-01 14:19:07 -0700 Fix Book of Weapons desc (Ge0ff) -------------------------------------------------------------------------------- a6f8dd0138 | Kate | 2021-07-01 18:56:48 +0100 Shuffle around some high-level spells Since the spells that were previously rarebook-only can now appear in randart books, adjust book contents so that each L9 spell is only in one fixed book. -------------------------------------------------------------------------------- 8daf88dee0 | Kate | 2021-07-01 18:56:40 +0100 Remove special handling for "rare" spellbooks Previously, the book of Annihilations, Grand Grimoire, and the Necronomicon had special behaviour - they couldn't be gifted by Sif, and their spells never appeared in randart books (but could appear in Sif randart gifts). The book reworks moved many of the affected spells out of the rare books and into normal books, so rather than keeping the special behaviour around for a very narrow remaining set of spells, just treat them and their contents the same as any other books. -------------------------------------------------------------------------------- 4d0b0a1ddf | Edgar A. Bering IV | 2021-07-01 19:22:27 +0300 fix: Give capacitive coupling and searing ray identical ending behavior -------------------------------------------------------------------------------- c69eb68267 | advil | 2021-07-01 11:59:02 -0400 fix: move newchar quiver setup later (dang3rdave) It turns out that _setup_generic happens before the player's init file is read for real, and so anything that is waiting on early setup calls or lua isn't reliable at this point in character creation. This includes the new fire order options, because there's an overly elaborate spell name cache thing that isn't in place for the first rc read (and some maybe-related but not fully identified issues for abilities). To solve this I have moved new character quiver setup later in the sequence. It might eventually be better to simplify spell/ability startup so it's more reliable. -------------------------------------------------------------------------------- 5cd3f1290e | Nicholas Feinberg | 2021-07-01 08:47:52 -0700 Rework monster CBL Give it actual damage (not the sad 3x3d6 it did before - now 3x3d25 on Lom Lobon) and describe it in xv. I think spellforged servitor doesn't work properly with it before or after this change. Not sure why. -------------------------------------------------------------------------------- 4c841f645e | Edgar Bering | 2021-07-01 09:54:26 -0400 fix: Harmonize spell distributions In the process of preparing branch reading_rainbow for merging, Confusing Touch and Vampiric Draining ended up in one book each, with Petrify and Animate Dead appearing in three. This commit balances the book apperances of these four spells to match the design spreadsheet. -------------------------------------------------------------------------------- 941b2bd30b | Nicholas Feinberg | 2021-06-30 22:51:31 -0700 Fix book weights? (wheals, others) -------------------------------------------------------------------------------- 413ade4df3 | Nicholas Feinberg | 2021-06-30 22:19:26 -0700 Fix chain lightning no-hostiles check Correctly check to see whether there are any targetable enemies in range. -------------------------------------------------------------------------------- 2fbb07c8a5 | Nicholas Feinberg | 2021-06-30 22:12:47 -0700 Fix chain lightning + statues (ardl) Don't attempt to arc through them. -------------------------------------------------------------------------------- ded080b69b | Nicholas Feinberg | 2021-06-30 22:05:35 -0700 Fix creeping frost death message No more killed by 'a frost'. This code is awful and makes me sad :( -------------------------------------------------------------------------------- b7b94b6bbb | Nicholas Feinberg | 2021-06-30 21:59:04 -0700 Fix chain lightning death message No more just 'killed from afar'! -------------------------------------------------------------------------------- 987ffbb14b | Nicholas Feinberg | 2021-06-30 21:41:23 -0700 Tweak ar description (dinky) Like magic, a wand has become a chess piece. -------------------------------------------------------------------------------- a306adf81e | Nicholas Feinberg | 2021-06-30 21:35:22 -0700 Fix curare death message (7+ year bug) Don't claim to be killed by "kobold brigand's curare-tipped dart". Instead, let's just be killed by *a* brigand. This bug dates to at *least* 51a3c3daa54 and probably farther back. -------------------------------------------------------------------------------- ea6a400864 | Nicholas Feinberg | 2021-06-30 21:24:14 -0700 Update book background descriptions Don't claim they start with books. They don't! -------------------------------------------------------------------------------- a93db79ee8 | Edgar A. Bering IV | 2021-06-30 21:08:18 -0700 vaults: Adjust explicit book placement floats, shops, and portals -------------------------- This adjusts explicit books placed by shops, floats, portal vaults, and mini vaults in light of the new book shuffle. Some book placement weights are moved upward in portal loot, as new books have fewer spells this seems ok from a loot point of view. arena sprint ------------ Add some more books to the arena sprint shop, since each book has fewer spells. The pricing still probably makes this a tougher deal for heavy spell users even with the increased selection. Hard cheese. -------------------------------------------------------------------------------- e29514b5c3 | Nicholas Feinberg | 2021-06-30 21:08:18 -0700 Increase book generation rates Move them from weight 30 to 100, slightly more than doubling the number of books generated. This is in preparation for a future change that will shrink books. All other item generation drops by about 2%, which I'm not currently compensating. This keep total spells more in line with what we saw before. -------------------------------------------------------------------------------- b47a77b0f7 | Nicholas Feinberg | 2021-06-30 21:08:14 -0700 Adjust book costs -------------------------------------------------------------------------------- c126db5c3d | Nicholas Feinberg | 2021-06-30 21:07:25 -0700 Split fixed books into smaller sizes To smooth out the vagaries of randomness and make it more viable for players to adapt to what books they find, shrink most fixed books to contain exactly 3 spells and add about 30 new books to compensate. These books are designed to be relevant to a wide variety of character levels and types, to increase the chance that they'll have at least one spell that the finder will be able to use, even if it's less likely that every spell in there will be useful. They're also supposed to have fun, evocative themes. -------------------------------------------------------------------------------- 69d6a04d60 | Nicholas Feinberg | 2021-06-30 21:05:58 -0700 Adjust randbook sizes Roughly halve the sizes of most randbooks. Exempt Sif gifts, but make her gift timeout scale based on the size of the books gifted. -------------------------------------------------------------------------------- 60a263dd95 | Nicholas Feinberg | 2021-06-30 20:49:26 -0700 Fix artefact description formatting Format armour ego descriptions in the same way as randart properties when on a randart (or unrand). -------------------------------------------------------------------------------- b235c8b66b | Nicholas Feinberg | 2021-06-30 20:49:26 -0700 Remove unused (?) armour desc code This covered the case in which you knew that a piece of armour was magic, but it didn't have an ego, but you didn't know what its plus was. That almost certainly can no longer happen. -------------------------------------------------------------------------------- 8c83a1b76d | hellmonk | 2021-06-30 23:29:40 -0400 Noise dampening good mutation A rare good mut that halves noise from all sources within the player's los. -------------------------------------------------------------------------------- fb4300f5bb | Kate | 2021-07-01 03:55:27 +0100 Improve some unrand descriptions Add DESCRIP lines for the Wrath of Trog, necklace of Bloodlust, ring of Shadows and amulet of the Air. Unrands generally could probably use a full pass to put pure mechanics information in DESCRIP lines, free up the actual unrand description portions to be primarily flavourful, and possibly to use the new ARTP syntax of showing the inscription alongside the description (such as "SInv: It lets you see invisible"). Also fixes a typo in the cloak of the Thief description (via geekosaur, thanks!). -------------------------------------------------------------------------------- 22e92bf66e | Kate | 2021-07-01 03:55:27 +0100 Fix artefact and jewellery desc spacing/linebreaks Fixes a large number of inconsistencies in linebreaks across randarts, unrands, and some mundane jewellery. These hopefully all now consistently have a single empty line in between each of the base item description, any special unrand-only brands and/or descriptions, any randart properties, and the remainder of the descriptions. Also fixes a missing space for +Stealth items. -------------------------------------------------------------------------------- 8a2cd6d854 | Kate | 2021-07-01 03:55:27 +0100 Mention berserk extension in Trog's description It's probably not a detail that needs a full entry on the overview page, but should at least be mentioned in the extended description. -------------------------------------------------------------------------------- 85a84b9822 | Kate | 2021-07-01 03:55:27 +0100 Give Trog berserk a small piety-based failure rate To compensate for the removed chance of paralysis (since although Trog reliably prevents it later, it could very occasionally happen early on), and in general just to slightly weaken the ability in the extremely early game where it's incredibly powerful. -------------------------------------------------------------------------------- 0ac0241410 | Kate | 2021-07-01 03:55:27 +0100 Remove the chance of paralysis when ending berserk Paralysis was a rare occurence on ending berserk, and under Trog was particularly unlikely to happen except very early on, due to the piety-based chance to prevent it. It was slightly more relevant for non-Trog berserk, but since that's much less reliably repeatable (and weaker due to not being extended on kill), remove the chance of paralysis to simplify the effect overall. -------------------------------------------------------------------------------- c49bf3aad3 | Kate | 2021-07-01 03:55:27 +0100 Fix Trog being unable to burn an altar vault book (Goratrix) The vault was looking for an unidentified book - instead check for the book by its vault-defined title. -------------------------------------------------------------------------------- a6dc6547e3 | Nicholas Feinberg | 2021-06-30 19:19:46 -0700 Revert "Revert "Adjustments to book generation"" With some fixes to shopping.cc and book gen. -------------------------------------------------------------------------------- 6e7fd8c9ca | Nicholas Feinberg | 2021-06-30 19:00:38 -0700 Remove fun (buff felids/blade hands) RIP one of the greats. -------------------------------------------------------------------------------- 778c2f8729 | Nicholas Feinberg | 2021-06-30 18:56:10 -0700 Wereblood: only heal on adj kills A duration spell has to be balanced very carefully, to encourage it to be used situationally, rather than on all the time (since spells in DCSS do not work well for 'always-on' effects). Adding healing to Wereblood was intended to make it more useful in the early game, so that characters would have the 'sustain' needed to keep fighting multiple enemies and to make use of the slaying, but it seems to have made it too generally applicable. Let's limit it a bit. -------------------------------------------------------------------------------- 48c30b3128 | advil | 2021-06-30 15:26:09 -0400 fix: adjust early processing of fire order options (Goratrix) This will hopefully fix a crash on windows, that seems to result from some ability code being called too early in the initialization process on the first read of the rc file. Though I'm not sure why `all` works while `berserk` crashes, but Goratrix has kindly done some bisection to isolate that particular line. This commit also just prevents user-rc fire order options from being processed on this initial pass. -------------------------------------------------------------------------------- 8d3c4a4866 | MainiacJoe | 2021-06-30 22:09:57 +0300 Make the Wrath of Trog angrier This adds two new behaviors intended to make the weapon more appealing for characters who can go berserk without making it too powerful for those who can circumvent the *Rage. The first is berserk duration extension identical to that of the Necklace of Bloodlust. The second is Rampage: rampaging doesn't incur berserk penalties if it is used to take a swing. This is an overlap of effect, but the Wrath of Trog offers no optional berserk and the ``extras'' are cleaner. Bloodlust might need some design work, but that's out of scope for this commit. To prevent using the weapon to go berserk on demand and otherwise not deal with berserking in every fight, this also adds an on-wield penalty: the berserk cool down. [ Committer's note: Closes #1890. Did some commit re-ordering and editing. Added the wield penalty. ] -------------------------------------------------------------------------------- 3b62c0300e | MainiacJoe | 2021-06-30 21:47:38 +0300 Enable rampage on unrands Creates RAMPAGE as a bool in util/art-text.pl -------------------------------------------------------------------------------- e902cdc63c | advil | 2021-06-30 10:44:13 -0400 feat: enable arrow keys on quiver menu Would like this feature to get more testing before general use, and the quiver menu seems like a reasonable place for it to get that. -------------------------------------------------------------------------------- b8d40accb6 | advil | 2021-06-30 09:55:49 -0400 feat: uselessness check for forest space (dinky) This disables summon forest in the quiver when there isn't enough space for it. -------------------------------------------------------------------------------- 365887799b | Edgar A. Bering IV | 2021-06-30 09:24:45 +0300 fix: Tweak Capacitive Coupling's quiver name to fit -------------------------------------------------------------------------------- c2e3725628 | Edgar A. Bering IV | 2021-06-30 09:18:03 +0300 feat: Animate the status light for Maxwell's We could use plusses but the number of turns waiting isn't easily available unless we leak the charge time which is intentionally randomized and hidden. So instead, a little twirly dash to give some feedback that something is happening. -------------------------------------------------------------------------------- 1422d76b99 | advil | 2021-06-29 22:23:21 -0400 feat: autofight for wait spells The need to specifically hit `.` is a bit of an interface screw more than anything; this commit enables just triggering autofight (`p` etc) if the wait spell is quivered to continue casting it. This has been on my list for a while but now that there are two of them it became more important. As part of this commit, I also made it clearer in the targeter that casting it that way would restart the spell. Possibly should be included in `z` as well for people who have the Maxwell's targeter disabled. -------------------------------------------------------------------------------- bd6db1e6d9 | Kate | 2021-06-29 23:46:59 +0100 Adjust spacing in spellbook descriptions So that "Maxwell's Capacitive Coupling" will fit. -------------------------------------------------------------------------------- a7dfd5ec23 | advil | 2021-06-29 18:10:42 -0400 feat: options for controlling spell/ability quivering Long-requested quiver features: These options let you control what appears in the cycle order (and autoquiver on game start) in a much finer-grained way. Ideally this would have some sort of in-game UI but that's a much bigger project, so these fairly brute-force options will do for now. These options do not affect what is shown in the Q menu, if there is demand for that I could consider a further tweak along those lines. Since some people seem convinced that quivers are for attacking only, I have provided some shortcuts to set your spell/ability fire order lists that way; probably most useful with autofight_throw=true since the notion of "attack" this uses is exactly identical to that one. Also by popular demand, this commit excludes berserk by default from fire_order_ability, keeping it out of cycle order and autoquiver. I could still be convinced to revert this part, though I do agree that berserk is very different from everything else that this option is relevant to at game start. This can of course be overridden with: fire_order_ability += berserk As part of this commit I also made `fire_items_start` be respected for all quiverable item types, not just ammo. -------------------------------------------------------------------------------- 81fdcbfb23 | advil | 2021-06-29 14:42:58 -0400 fix: update quiver on item adjustment This is a long-missing behavior for newquivers. Spells and abilities already handled adjustment correctly, because they didn't rely on anything tied to letter position, but inventory items need to manually have the quiver slot changed. -------------------------------------------------------------------------------- f508b8f851 | advil | 2021-06-29 13:09:37 -0400 feat: range checks for various scrolls The main goal of this was to improve the enabled check when a scroll is quivered (e.g. fear is now disabled with no susceptible enemies), but I also added a double-check prompt when reading the scroll. If this is too annoying it can be removed. It's possible these checks are a bit slow when a scroll is quivered, and need a cache mechanism like `spell_action`s have. However, I'm not sure how much consumables will really be quivered in practice, so I'll wait and see. -------------------------------------------------------------------------------- e6a161afd2 | advil | 2021-06-29 13:09:37 -0400 refactor: consolidate some reading code Only scrolls are readable, so this commit removes the distinction between `read` and `read_scroll` and restructures reading checks accordingly. The reading checks are reordered and cleaned up in the process, so this commit should fix https://crawl.develz.org/mantis/view.php?id=12610. -------------------------------------------------------------------------------- defffd1ff6 | Kate | 2021-06-29 04:49:37 +0100 Staticify a function -------------------------------------------------------------------------------- 9e2faccc22 | Kate | 2021-06-29 04:49:18 +0100 Don't crash when cancelling a Searing Ray -------------------------------------------------------------------------------- 3820e56076 | Kate | 2021-06-29 01:20:33 +0100 Don't allow activating the Sceptre of Asmodeus with Sac Love Previously it would spend a turn but do nothing, so just print the failure reason without costing a turn. -------------------------------------------------------------------------------- 4b199c8bd3 | Edgar A. Bering IV | 2021-06-29 01:01:59 +0300 feat: New Spell: Maxwell's Capacitive Coupling Commit 64d35965e29 removed Absolute Zero because the memorable, spectacular instant kill effect didn't have good playfeel. It often felt cheap, with the monster getting no chance to react. The result was that boss fights felt like anticlimaxes. This re-introduces the guaranteed kill effect, but it is no longer instant. Instead, the spell has a (random, not revealed) aut charging time between cast and effect. In this time the player must wait (like searing ray). At the end of the time a random closest monster is killed. Any action other than waiting causes the spell to fizzle (with no MP refund). The flavour is currently Air: a reference to capacitive coupling. The effect (especially with the time lag) fits the "bouncy, pointy, or hard to direct" archetype that we went for with Air in positional magic much better than Ice (I will admit a bit of contortion in calling A0 "subtle".) With Chain Lightning moved up to L9 Conj/Air, Air magic has space for a L7 or 8 attack spell. This reverts commit 64d35965e295382a687bd14c17aadd49688b771d. -------------------------------------------------------------------------------- c14e5d3922 | advil | 2021-06-28 17:51:34 -0400 fix: missing header? -------------------------------------------------------------------------------- ea054b796d | advil | 2021-06-28 17:26:16 -0400 feat: add static targeters for several scrolls Another niche feature, somewhat more involved than I had hoped. The trick here is that even where scrolls correspond to spells, the call that does the effect is always pretty low-level and so it wasn't easy to reuse all the your_spells scaffolding. This commit adds targeters for fear, summoning, vulnerability, immolation, holy word, silence, and reuses the existing blink targeting code. (In implementing this, I slightly refactored how hop is called because of needing to change shared code.) Most of these aren't very exciting unless you aren't used to the effect, but fear seems useful. It would be nice if there were a nicer interface for getting to these targeters besides quivering the scroll and using `f`, but I'm not sure what that would be. This commit also prevents quivering unid'd spells and scrolls, for the sake of simplicity. -------------------------------------------------------------------------------- a08111df00 | advil | 2021-06-28 17:18:34 -0400 refactor: generalize and unify some quiver boilerplate This combines a bunch of shared / repeated code for actions involving items. There's some hackiness here to do with hard coding class names for serialization + equality purposes, but it's still probably better than repeating this code so many times. (Not aware of a cleaner c++ approach to this, though perhaps there is something.) -------------------------------------------------------------------------------- 6e4aca1174 | advil | 2021-06-28 17:18:34 -0400 feat: quivering spells/potions This is a pretty niche feature so I haven't included these in the default `Q` list. However, it was easy to implement, requested, and this is one step closer to a complete generic trigger api for item effects. E.g. eventually I'd like to use actions for local tiles buttons so that the item activation api is not distinct. One noticeable gap is targeters for scrolls, to be added in a future commit. Another is that scroll actions don't have a very good enabled check. -------------------------------------------------------------------------------- 58471f690d | Kate | 2021-06-28 19:18:34 +0100 Remove Pakellas ability tiles and descriptions Since their functionality has been removed. -------------------------------------------------------------------------------- 1ea419760f | Kate | 2021-06-28 17:49:01 +0100 Remove obsolete code for Pakellas' Device Surge It had lots of dead code and resulted in a large number of TAG_MAJOR_VERSION checks in any place that calculated evocations power. There's no save compatibility requirement to keep it around and any future re-implementation of Pakellas would need a full redesign, so fully remove the ability to clean up evoker code around it. Also fixes some overzealous TAG_MAJOR_VERSION checks which had scheduled surge_power() and surge_power_wand() for removal - these handle messaging for normal enhancers and still function without Pakellas. -------------------------------------------------------------------------------- 229a95b9f4 | Kate | 2021-06-28 16:14:18 +0100 Make Archmagi affect randart pricing -------------------------------------------------------------------------------- c7843cd938 | Kate | 2021-06-28 16:13:20 +0100 Fix spacing -------------------------------------------------------------------------------- d924e931ac | Kate | 2021-06-28 16:11:05 +0100 Fix Archmagi and +MP randarts never generating -------------------------------------------------------------------------------- e71e8f7681 | dilly | 2021-06-28 10:31:10 +0300 Add Wr and AM for Ba recommends (#1994) Four weren't enough. Let players do something else more. [ Committer's note: Ba make good hybrids, we use recommendations both for things that play well and things that build lore. These backgrounds meet both criteria. ] -------------------------------------------------------------------------------- 9667eb783e | Skrybe | 2021-06-28 10:29:59 +0300 Update special_room_magic_class (#1961) Some adjustments to the magic classroom special room I submitted a while back. Added necromancers to the monster set, and adjusted weights in general. Vampire knights and deep troll earth mages get the biggest drop in weight, and deep elf sorcerers and deep elf death mages get the biggest increase. Depths:5 draconian annihilators are more common now as well. This should make the room generate a more varied monster set. Boss monsters are untouched. -------------------------------------------------------------------------------- e0d888d967 | Alexei-Barnes | 2021-06-28 10:06:43 +0300 Corrects the description of Tin of Tremorstones The description states that the power scales with your evocations skill. This is not the case since 6f112fb28d. -------------------------------------------------------------------------------- e7c6b5271d | Goratrix | 2021-06-28 10:03:55 +0300 Add Archmagi as a randart property This adds Archmagi as a randart property and enables it to generate on robes only (for now). Also added are equip/unequip messages, same as for the Archmagi ego, and an indicator in the character overview screen. -------------------------------------------------------------------------------- 234f4a1dcd | Nikolai Lavsky | 2021-06-28 09:59:29 +0300 Fix Dj's hair on the species selection menu The newgame doll was missing red hair, which is the default according to `tilepick-p.cc:tilep_race_default()`. -------------------------------------------------------------------------------- 4cf9878b8b | robertxgray | 2021-06-28 09:49:34 +0300 Allow zoom in via ctrl-'+' The key combination ctrl-'=' doesn't work in some European keyboards like Spanish or German. -------------------------------------------------------------------------------- a2a4dfd6fd | Nicholas Feinberg | 2021-06-27 19:09:28 -0700 Maybe fix a book crash (kate) -------------------------------------------------------------------------------- a0a28fc8c3 | Nicholas Feinberg | 2021-06-27 14:45:43 -0700 Revert "Maybe fix a book crash" This reverts commit b88236dc16387cae4b30a5264a106c4c44de900a. -------------------------------------------------------------------------------- 5d287be605 | Nicholas Feinberg | 2021-06-27 14:41:53 -0700 Revert "Adjustments to book generation" This reverts commit caca448e221395f958a5f12a07e8ffd255cb755f. -------------------------------------------------------------------------------- b88236dc16 | Nicholas Feinberg | 2021-06-27 14:24:13 -0700 Maybe fix a book crash -------------------------------------------------------------------------------- 1158a0e862 | Nicholas Feinberg | 2021-06-27 13:57:10 -0700 Don't list the books a spell can be found in This was never particularly useful, and would break when we added more book types. -------------------------------------------------------------------------------- caca448e22 | Nicholas Feinberg | 2021-06-27 13:56:54 -0700 Adjustments to book generation - Support future books beyond the current limit of 60. - Remove the concepts of 'book rarity' and 'spell rarity'. Instead, try to generate books with spells that will be potentially interesting to players at the corresponding absdepth. - Price books by total spell level, not by rarity. -------------------------------------------------------------------------------- 14994ecaaf | Kate | 2021-06-27 20:31:32 +0100 Adjust Slime floor zig scaling To replace some of the azure jelly weight with rockslimes and quicksilver oozes. They're unlikely to be especially worrying threats, but they do probably at least deserve some additional weight as the new top-end Slime monsters. -------------------------------------------------------------------------------- bb9dc7d752 | Kate | 2021-06-27 20:21:16 +0100 Remove some obsolete Djinn code (From their previous implementation.) -------------------------------------------------------------------------------- 47152c58aa | Nicholas Feinberg | 2021-06-27 12:00:44 -0700 Remove book ID Books being unknown had almost no impact on the game. They were a little fun in antique shops, but that was fairly rare and not worth keeping the feature given the limitations it presents (max 60 book types), let's scrap it. -------------------------------------------------------------------------------- f014654284 | Nicholas Feinberg | 2021-06-27 12:00:00 -0700 Remove known book tracking Extremely little point to it now that libraries exist. -------------------------------------------------------------------------------- 4272520434 | Nicholas Feinberg | 2021-06-27 11:59:18 -0700 Make Damnation bolts only mulch on hit Seems polite. -------------------------------------------------------------------------------- 58f33c6695 | Nicholas Feinberg | 2021-06-27 08:33:55 -0700 Maybe fix dform steam res (advil, 2tousent) -------------------------------------------------------------------------------- d8886f0a89 | Nicholas Feinberg | 2021-06-26 22:06:02 -0700 Title armour properties To help clarify for newer players who get lost in the sea that is our very long item descriptions. (We need more organization, formatting, sections, etc... but instead I'm doing this.) Example output: 'Of rampaging': It allows the wearer to take one free step toward enemies. (Or however that goes...) -------------------------------------------------------------------------------- 60794d8430 | Nicholas Feinberg | 2021-06-26 22:06:02 -0700 Title artefact properties Explain what inscription each artp corresponds to in item descriptions. (E.g.: "rPois: It confers resistance to poison", or something like that.) Formatting could use some work. -------------------------------------------------------------------------------- b432ad73d2 | hellmonk | 2021-06-26 20:59:13 -0400 Buff Wucad-Mu Reworked Wucad-Mu felt a bit underwhelming. Increase the chance of a refund, and refund the MP on success even if a side effect is rolled. Can be tweaked further if this ends up being too much. -------------------------------------------------------------------------------- 9fd5ee6ec5 | hellmonk | 2021-06-26 20:37:33 -0400 Add salamander tyrants to snake themed zig floors -------------------------------------------------------------------------------- 643e45de12 | hellmonk | 2021-06-26 20:13:02 -0400 Don't unbribe monsters that haven't been bribed yet Whatever jank this causes is probably less bad than turning monsters hostile because the player hit a monster that, unknown to them, would receive a bribe when it entered their line of sight. -------------------------------------------------------------------------------- a99462a43c | Nicholas Feinberg | 2021-06-26 11:48:01 -0700 Only explode Damnation on hit When fired from the unrand Damnation, bolts should only explode if they actually hit the target. (Thus, firing with '.' is no longer very silly secret tech.) -------------------------------------------------------------------------------- dcd0597939 | Nicholas Feinberg | 2021-06-26 10:47:33 -0700 Remove a redundant yesno (advil) -------------------------------------------------------------------------------- 561ffd6492 | Nicholas Feinberg | 2021-06-26 10:43:52 -0700 Allow monsters to wand each other The prophecy is fulfilled. -------------------------------------------------------------------------------- 81ec99bee2 | Nicholas Feinberg | 2021-06-26 10:40:55 -0700 Break monster AI (greenscarf) Allow berserk monsters to launch reaching attacks, as with players. In principle allow monsters to reach, swoop, or use wands while offscreen. (But wands still don't quite work.) -------------------------------------------------------------------------------- 1e49fe14ad | Nicholas Feinberg | 2021-06-26 10:10:57 -0700 Remove superfluous parens -------------------------------------------------------------------------------- bddd1c10ba | Nicholas Feinberg | 2021-06-26 09:48:30 -0700 Allow Poisonous Vapours on empty space To allow people to cast it on invisible enemies (which seems fairly intuitive). Now that vapours doesn't create clouds, this should be unproblematic. (Kate, if I've misunderstood your intent, please let me know.) This probably needs some way to bypass the yesno prompt but I'm not sure what. Partially reverts d1c2c16caae861bf6d9ccddd45d859ddfa191991 . -------------------------------------------------------------------------------- c13eec7c8e | Aliscans | 2021-06-26 18:57:23 +0300 Add a help option for the wizard mode create monster command. Entering ? as the monster name causes some help text to appear. This is derived from the MONS section of docs/develop/levels/syntax.txt, but with a few changes. 1. Use colour - yellow for headings, white for keywords which can be entered as part of the command, and cyan for other things such as text the game produces in response to a command, or file references. 2. Remove quotation marks from around keywords. I haven't done this with cyan text, as this contains longer phrases which may be harder to separate. 3. Don't give advice on how the command should be used (such as "use this sparingly"). 4. Rearrange the paragraphs a bit, and add a new opening paragraph. 5. Add lists of valid characteristics for mutant beasts and ugly things. -------------------------------------------------------------------------------- 23b85b8d87 | Edgar A. Bering IV | 2021-06-26 12:04:23 +0300 docs: changelog typo -------------------------------------------------------------------------------- 2746e35aca | Edgar A. Bering IV | 2021-06-25 22:18:29 +0300 docs: changelog through 0.27-a0-1333-gcdc07c3a8f -------------------------------------------------------------------------------- cdc07c3a8f | Nicholas Feinberg | 2021-06-25 11:18:36 -0700 Unlock dangerous quantities of punny vaults Add nicolae to the dev team! Well deserved and welcome :) -------------------------------------------------------------------------------- 84bddb5ca7 | advil | 2021-06-24 19:41:31 -0400 fix: proper range check for poisonous vapours Also, move it into spl-damage.cc since as of 3f0e5c0cca2eb01 there are no clouds involved. Possibly this can just be zappified to simplify it further? This fixes https://crawl.develz.org/mantis/view.php?id=12502 -------------------------------------------------------------------------------- 60ef6b6952 | advil | 2021-06-24 17:41:10 -0400 fix: better BVC auto-targeting This keeps BVC from repeatedly targeting already-clutched enemies. Resolves #1956 -------------------------------------------------------------------------------- c68dd95e36 | advil | 2021-06-24 17:28:41 -0400 feat: handle @Qn inscriptions directly in quiver menu Before (after newquivers) these were only usable by going into the item submenu. This will work even for items that don't show up in this menu by default, though as of yet there is no way to inscribe non-items. (This was reported somewhere by someone, but I can't figure out who or where to credit, sorry.) -------------------------------------------------------------------------------- 14410a1de8 | advil | 2021-06-24 14:02:36 -0400 feat: hide dj MP bar in webtiles -------------------------------------------------------------------------------- a61f464a61 | advil | 2021-06-24 13:48:10 -0400 feat: hide dj MP bar in console/local tiles This is kind of ugly because as it stands, y positions for certain hud elements are calculated in multiple places. (In fact, this calculation was already buggy.) But doing this "right" involves a lot of high-effort refactoring and testing, or at least more than I'm going to do right now. However, I have at least renamed the infamous yhack to something more interpretable and changed its logic accordingly. -------------------------------------------------------------------------------- 9601c94f4e | advil | 2021-06-24 12:48:51 -0400 feat: arrow key navigation for macros menu More incremental improvements for the macro menu. The immediate goal of this is to allow more easily selecting existing macros for editing that have hotkeys that menu code would otherwise intercept. Despite the limited application of this change, the commit is a fairly comprehensive rewrite of hover code that is tested to work on any single-selection menu. I may activate it more generally in the future as I think it's a net usability improvement in all sorts of menus (though I expect a certain amount of grumbling because it is *change*). However, it needs to be extended to handle multiselection before this is fully viable. As part of this change, I needed to rewrite webtiles hover code to use a regular css class rather than the :hover pseudo-class; unfortunately one cannot interact programmatically with :hover. There *should* be no user-visible change resulting from this but this was more complicated than I had hoped, so we'll see. The webtiles client-server communication about hover is still somewhat dubious here. -------------------------------------------------------------------------------- 66ddcf376d | advil | 2021-06-24 12:48:51 -0400 fix: set last_visible correctly in webtiles menus The for-loop here for setting last visible only checks the case where i-1 is the last visible element, so when the last element is visible, it didn't do anything, leaving last_visible set to 0. Instead, make the fallthrough case already the last element in the list. As far as I can tell this should work even on very strange bounding boxes. As a practical matter, this will prevent menus from wrapping to the beginning on pgdn in webtiles, which they apparently have been doing for a while. We'll see how used to this players are. Other clients have a MF_WRAP setting for when menus are supposed to have this behavior, but this doesn't seem to be implemented in webtiles. This commit also fixes a bunch of js exceptions on corner cases with empty menus. -------------------------------------------------------------------------------- 58a489ad9e | Nicholas Feinberg | 2021-06-23 08:45:34 -0700 Remove local dj mp display Webtiles is harder so I'm leaving that to someone else, sorry! -------------------------------------------------------------------------------- e0d8e047f6 | advil | 2021-06-22 10:08:50 -0400 feat: better integrate the macro menu Before, there was a pre-menu to select the kind of binding to edit before entering the edit menu. After this change you are dropped directly into macro edit mode, and can use `!` to switch to keybind editing. This is one fewer keystroke for macros, the same number of keystrokes for regular keybinds, and extra keystrokes for the obscure keybind modes. I've also slightly hidden the details of keybinds from the first view, because in almost all circumstances I don't think players want to edit these in-game, and in almost all circumstances, macros are a better choice than keybinds for people who don't know what they are doing. Still lots of further improvements to be made here. The editing itself should be moved onto the same screen as the menu, and I think this menu would also be more convenient if arrows selected (but unfortunately the Menu class doesn't support this at all, as far as I know). -------------------------------------------------------------------------------- 4214377f51 | gammafunk | 2021-06-22 03:50:54 -0500 Adjust spawns in a vault (dilly) The vault nicolae_shoals_spring_well_temple places about 7.5 water nymphs on average, in addition to two well springs, which is pretty extreme. The upper-limit of what vaults can place given extreme and rare RNG results is allowed to be ridiculous, sometimes worse than branch endings and potentially leading the player to abandon a level. However unless the vault is intended to be an extreme challenge, which often means down-weighting or runed door/transporter vault, the average case should be more reasonable. This commit adjusts the vault to only place 3 water nymphs on-average and adjust the well spring placement from guaranteed 2 to place 1 to 3 with an average of two. -------------------------------------------------------------------------------- fdffb62a71 | Nicholas Feinberg | 2021-06-21 22:30:07 -0700 Mostly remove resilience This basically just confused a lot of people over the years. It's OK, you can say 'health' when you mean 'health'. We already use it in a few places! It's more flavourful for stuff like Borg's anyway - very Raistlin Majere. Skeletons and zombies are a bit beyond the whole 'health' thing, and I think resilience is less confusing for them anyway, so they can keep it. Ditto the reference on the amulet of vitality - that one's very straightforward. -------------------------------------------------------------------------------- d358eaa319 | Kate | 2021-06-21 21:18:35 +0100 Prevent repeating Nemelex Stack Five and Triple Draw (#12607) Repeating abilities with submenus causes weird behaviour. -------------------------------------------------------------------------------- a591dbc05d | Kate | 2021-06-21 21:16:34 +0100 Fix command repeat handling for some unrepeatable actions Various actions couldn't be repeated with 0, but could be with `. Prevent these more consistently, and fix a case where aborting out of an attempt to repeat rampaging movement would result in a partial move still taking place. -------------------------------------------------------------------------------- eec4fb4e21 | Kate | 2021-06-21 04:12:14 +0100 Refactor Kiku's Necronomicon gift, re-add Haunt With Haunt being moved out of the Necronomicon it had become impossible for Kiku to gift knowledge of it. Instead of gifting a physical Necronomicon, make Kiku add its spells directly to the library as with the earlier spell gifts, and add Haunt back to the list of included spells. -------------------------------------------------------------------------------- 0c770c2c28 | Kate | 2021-06-21 04:12:02 +0100 Refactor Kiku book gifts Instead of gifting randbooks, just gift the spell knowledge directly, since the spell library now supports this. Saves some weirdness with not being able to receive spell gifts over water/lava. -------------------------------------------------------------------------------- d1140b374c | Kate | 2021-06-20 19:58:53 +0100 Fix braces -------------------------------------------------------------------------------- 0783df26cf | Kate | 2021-06-20 19:58:12 +0100 Fix a newly-introduced melee crash Don't bail out of combat and crash after a fire vortex attacks and destroys itself. -------------------------------------------------------------------------------- b2afe90b7e | Kate | 2021-06-20 18:17:23 +0100 Clean up monsters that die due to acid retaliation damage Fixes an issue with invalid dead spectral weapons when they die to acid retaliation damage, hopefully fixes a related crash, and probably doesn't break anything else? -------------------------------------------------------------------------------- dfdbaa49b7 | Kate | 2021-06-20 18:06:43 +0100 Don't allow GDR below 0% (For wizmode display purposes.) -------------------------------------------------------------------------------- 2e558cd5dc | Kate | 2021-06-20 17:04:22 +0100 Fix an information leak with LOS attack spells (#12605) Don't consider invisible creatures as valid affected targets if you can't see them. -------------------------------------------------------------------------------- 5cdb2b3542 | Kate | 2021-06-18 22:20:48 +0100 Fix tag_upgrade compilation -------------------------------------------------------------------------------- 670f4b6da9 | Kate | 2021-06-18 22:17:03 +0100 Don't try and place djinn corpses in nicolae_arrival_memento_mori But do place palentonga corpses since those do exist. -------------------------------------------------------------------------------- 4af0e254da | Kate | 2021-06-18 21:38:09 +0100 Update some monsters-behind-glass vaults To use accurate lists of player species monsters. -------------------------------------------------------------------------------- 830f50283a | Kate | 2021-06-18 21:22:54 +0100 Add dummy monsters for player djinn -------------------------------------------------------------------------------- c08437e49b | Kate | 2021-06-18 04:25:08 +0100 Replace Animate Skeleton with Call Imp in the tutorial Since summons should function better than raised undead due to the relatively quick expiry timer on the skeletons. -------------------------------------------------------------------------------- 1b31d702ef | Kate | 2021-06-18 04:12:36 +0100 Update tutorial some more (CanOfWorms) -------------------------------------------------------------------------------- fa6c21d646 | Kate | 2021-06-18 01:32:07 +0100 Fix Poisonous Vapours not working on rPois- monsters (Ham) -------------------------------------------------------------------------------- f33ce2d7c7 | Kate | 2021-06-17 22:54:45 +0100 Fix a tutorial/hints mode crash -------------------------------------------------------------------------------- 0d0f3e58c5 | Kate | 2021-06-17 22:49:50 +0100 Update tutorial Remove some more unused tutorial pads, replace a redefined monster with a real one, and replace the ratskin cloak so as not to give the player allies in an early lesson before allies are deliberately introduced in the later spellcasting tutorial. -------------------------------------------------------------------------------- 3f0e5c0cca | Kate | 2021-06-17 20:00:08 +0100 Rework Poisonous Vapours not to create clouds Mechanically, Poisonous Vapours is intended to apply a small amount of smite-targeted poison, but the fact that it was implemented by using a cloud ended up making it unnecessarily complicated. Almost all of the time the cloud would dissipate immediately, but at particularly high power it would stick around for a brief while, and using a cloud also prevented using it against targets that were already in clouds. Instead make it just directly apply poison, with the number of stacks applied scaling up at high power (to compensate for the fact that the cloud itself could previously deal some direct damage). -------------------------------------------------------------------------------- 7736ffe575 | Kate | 2021-06-17 17:27:55 +0100 Remove an unused tutorial pad -------------------------------------------------------------------------------- 128193abf8 | advil | 2021-06-16 10:19:54 -0400 fix: don't mark ash-cursed items as useless In various cases the player can put on items whose base ego is useless (e.g. faith), and then curse them, in which case they are no longer useless. The melding logic here relies on the rest of the code being right, which it probably isn't, but it looked ok in the cases I tested. -------------------------------------------------------------------------------- 08e866c54a | advil | 2021-06-16 10:19:54 -0400 fix: fully inactivate faith for ashenzari (u/Imaginationably) c9f47ef48ce0 disabled the piety gain effect of faith and marked it useless, but did not turn of the on-remove effect or messaging. (Possibly this code would be cleaner if all of these things were tied to uselessness, but I'm not sure enough how the other gods work to change that.) It's still possible to wear useless items (and in this case, even curse them -- in fact this maybe means that ash followers should collect useless amulets until they have something better to curse? Haven't played enough newash to know if this is a good idea.) -------------------------------------------------------------------------------- 1ab19c6527 | Nicholas Feinberg | 2021-06-15 22:22:12 -0700 Partially fix chain lightning death messages Still broken in a couple of ways, but this is all I've got in me for tonight. -------------------------------------------------------------------------------- 003aadc33b | Nicholas Feinberg | 2021-06-15 22:13:48 -0700 Display chain lightning damage in monster (again) -------------------------------------------------------------------------------- 5c463d0a3f | Nicholas Feinberg | 2021-06-15 22:09:42 -0700 Fix monster Oops -------------------------------------------------------------------------------- 8ece459b43 | Nicholas Feinberg | 2021-06-15 14:50:06 -0700 Add a fairly silly splash (ArbitUHHH) Much debate over this one, but the chicken won out in the end. -------------------------------------------------------------------------------- 0306a414db | advil | 2021-06-15 13:55:18 -0400 fix: remove chain lightning delays with no animations (Yermak) This extends the refresh option introduced in e645bd13c135 to be usable as a beam option, for callers who are not separating drawing and damage. It then applies it to chain lightning, fixing the lag when animations are off; this commit should also reduce the number of redraws with animations on (which is a factor in lag online). As one of the TODO notes says, I am still not entirely sure why there should still by default be an update per cell when draw_delay == 0, but this is preserving old behavior from before e645bd13c135, and I would need to do more investigation before simplifying. -------------------------------------------------------------------------------- 42bb9d4d07 | gammafunk | 2021-06-15 09:30:55 -0500 Fix a shop vault depth (nicolae) -------------------------------------------------------------------------------- 4180522d9c | gammafunk | 2021-06-15 09:19:36 -0500 Some shop vaults from nicolae (12593) No real changes from the original submission aside from a couple very minor bug fixes. -------------------------------------------------------------------------------- 165cb48cdd | gammafunk | 2021-06-15 09:14:06 -0500 Refactor and expand objstat statistics This commit reworks most of the internal data handling of objstat to be more consistent and to allow tracking of additional data. All item categories now track additional categories of whether the item was in a vault, held by a monster, or in a shop. Aspects like enchant/charges and brands are likewise tracked within these new categories. We also now track statistics for spells, as described further below. Artefact books are moved over to the spellbook tracking file, treating level artefact books and theme artefact books as two distinct book types. Additionally manuals now track by their associated skill instead of all together. Finally, objstat no longer produces redundant listings for "All Levels" when only one branch is tabulated, since that data is already in the branch summary. For items, the tracking categories of artefact, vault, shop, and held by monster are independent of each other. So one can't determine the number of items both held by a monster and in a vault, for example; tracking all combinations of these aspects would lead to too many statistics of marginal interest. Exception to this are the fact that an item can't be both held by a monster and in a shop and that all shop items are vault items, since shops place through vaults. Subtracting the values in these categories from the overall value will always give the count for the negation of that category. For example, subtracting NumArte from Num gives the number of non-artefact items. I've removed fields like "NumOrd" that can be calculated in this way to reduce the number of output statistics; these calculations can be easily made by a spreadsheet, once the data is imported. For spell tracking, we track overall counts by spell and within the new categories mentioned above, including artefact for spells in artefact spellbooks. Additionally we have "Chance" fields for spells in all categories. The Chance field gives the percentage of the time the spell was seen on a given level. This can be useful for determining the chance a spell would be seen by some depth, for example. Calculation of Chance fields could be extended to other item categories like Misc, Staves, or even all items, if that's later deemed useful. Internally it now uses map<> instead of vector<> for indexing statistics, which simplifies statistical initialization, since we can rely on default initialization of zero for most statistics. I've made these maps use enum types keys where that's possible, but in some cases like item sub_type we still need to use int keys, since item sub_types don't share a common enum type. -------------------------------------------------------------------------------- eefcff550b | Nicholas Feinberg | 2021-06-14 17:31:47 -0700 Rewrite new game spell setup In preparation for future changes, don't give new characters a spellbook and then immediately destroy it. Instead, give them a specific list of spells. -------------------------------------------------------------------------------- 15d3ce7508 | advil | 2021-06-14 09:54:04 -0400 fix: guaranteed source of digging in sprint_mu slime (Nivim) There is no code to remove the walls on TRJ death, and it is not easy to port the regular game code over. I'm guessing the intent was to break these walls somehow (they are rock, not stone). The sprint does place a source of digging, just not in slime, possibly because it would have been eaten. However, that is no longer an issue, so I'm just adding a guaranteed digging wand on the altar. If someone ever implements wall destruction here, remove this. -------------------------------------------------------------------------------- e5723c67b8 | advil | 2021-06-14 09:20:01 -0400 fix: prevent closets in `heliophobic_arrival_ceremonial_halls` Extends the fix in #1984. The biggest thing this vault needed was a `transparent` tag; I've also added the pathing from #1981 as it will help it place, and in addition to that added explicit @ tags. It could be good to randomize the outer pathing a bit, but let's keep it simple for now. Resolves #1973 Resolves #1984 -------------------------------------------------------------------------------- 0782e7eb64 | DreamDust | 2021-06-14 09:20:01 -0400 Fix: lemuel_upstairs_altar [Committer's note: ensure that this places where a downstairs can place] Resolves #1981 -------------------------------------------------------------------------------- ca74d27db6 | hellmonk3 | 2021-06-13 22:16:23 -0400 Merge pull request #1972 from hellmonk3/rollingrocks New spider minivault -------------------------------------------------------------------------------- fa2398d640 | hellmonk3 | 2021-06-13 21:39:57 -0400 Merge pull request #1971 from hellmonk3/zotshop New Zot:5 shop vault -------------------------------------------------------------------------------- 992921d2c4 | hellmonk | 2021-06-13 21:28:55 -0400 Return blade hands to level 5 While it's unlikely to return to the TM start book, blade hands works best at a lower level, where the option to cast it in heavy armour is more appealing. -------------------------------------------------------------------------------- 6cae3acc97 | Kate | 2021-06-14 00:22:28 +0100 Adjust Wereblood description -------------------------------------------------------------------------------- e233d83751 | Nicholas Feinberg | 2021-06-12 15:39:18 -0700 Add a Werewolf quote (Ge0ff, 12601) -------------------------------------------------------------------------------- 9d2d252d84 | Kate | 2021-06-12 19:33:39 +0100 Fix pluralisation Apparently both are valid, but "vortices" is what's currently used elsewhere. -------------------------------------------------------------------------------- 1a68546ab8 | advil | 2021-06-12 13:59:59 -0400 fix: remove some ancient mac debugging code This code originates from pre-version-controlled dcss or earlier. I can only imagine that at some point <2005 things were weird with intentional crash signals in MacOS to the point where accessing *nullptr seemed like a good idea, but on a modern mac this has been increasingly unreliable, and on an M1 / big sur device, it freezes with 100% cpu before timing out or needing kill -9, at least 2/3 of the time. As far as I can tell, sending abort works fine and doesn't do this. We'll see if this generalizes to other devices. -------------------------------------------------------------------------------- 6cbc8dfb29 | Nicholas Feinberg | 2021-06-11 21:26:29 -0700 Send DCSS straight to hell Welcome to the dev team, hellmonk! :) -------------------------------------------------------------------------------- 3808f8b1c9 | advil | 2021-06-11 15:42:53 -0400 fix: enable autofight for blinkbolt -------------------------------------------------------------------------------- 4e44252f3f | advil | 2021-06-11 14:55:34 -0400 refactor: better organization for animated objects take 2 These are still a bit all over the place, but this at least gives a slightly more unified API and uses it; small UI cleanups happened as a consequence, e.g. better labeling in ctrl-x, animated armour gets the dancing icon (I realize it isn't technically "dancing" but it's still useful I think). Hopefully haven't missed too much here. This reverts commit f925c23bd1a27674721db3c623a4d332f2cfaff7. -------------------------------------------------------------------------------- f925c23bd1 | advil | 2021-06-11 14:17:03 -0400 Revert "refactor: slightly better organization for animated objects" (fails to build on tiles, oops) This reverts commit 201ea1cf866eb8e85181b8f30b0fa74a58a99de0. -------------------------------------------------------------------------------- 201ea1cf86 | advil | 2021-06-11 13:55:32 -0400 refactor: slightly better organization for animated objects These are still a bit all over the place, but this at least gives a slightly more unified API and uses it; small UI cleanups happened as a consequence. Hopefully haven't missed too much here. -------------------------------------------------------------------------------- ec92ba881d | nlavsky | 2021-06-11 01:50:31 +0100 Don't put Refrigeration users under penance for tracer checks (#1978) After 73eefd5d, Ozocubu's Refrigeration users can get under penance for opening the z? or Q menus or just for having the spell on the quiver. It happens if they worship a god who cares about allies and if there are allies nearby. Fix this by skipping conducts when doing tracer checks. -------------------------------------------------------------------------------- 7c8ad2e407 | advil | 2021-06-10 17:09:11 -0400 fix: remove accidental debug messaging -------------------------------------------------------------------------------- 5a9c36edca | advil | 2021-06-10 17:05:35 -0400 build: reduce iterations for uniques testing This is one of the slower tests, and for something testing a basically unchanging mechanism, doing all of these iterations every time on CI doesn't seem to accomplish much to me. -------------------------------------------------------------------------------- 10283c2238 | advil | 2021-06-10 15:13:23 -0400 feat: tweak polar vortex glyph colours It's possible this is overcomplicating things, as it may make it slightly harder to identify terrain. However, the glyph colours were inconsistent with the tile colours, and also not very on-theme for how ice is usually depicted on console. (Of course, if Tornado had never existed, this might be less of an issue.) I ended up deciding that e.g. just using glaciate glyph colours didn't really work, it was too ugly, so this uses a bit more randomness for one of the phases to add some more subtle console ice colouring in. One phase is always stable, to prevent complete chaos. -------------------------------------------------------------------------------- 5d3a65c723 | advil | 2021-06-10 14:23:25 -0400 fix: more vortex removal for CI -------------------------------------------------------------------------------- dcd9d5d9b8 | advil | 2021-06-10 14:12:34 -0400 fix: remove an ENCH_VORTEX reference for CI Looks like it is safe to just remove this? -------------------------------------------------------------------------------- 90a9cae496 | advil | 2021-06-10 13:54:04 -0400 fix: get rid of "unable to find exits" error in bounce.lua test Tagging this with no_exits simply skips the placement code that generates this error. -------------------------------------------------------------------------------- 85dd5f356d | advil | 2021-06-10 13:54:04 -0400 build: shorten mut_species.lua test This is one of the slowest tests, and it has been a long time since it actually found anything; I think we can do with fewer iterations. -------------------------------------------------------------------------------- 738ad7bf98 | advil | 2021-06-10 13:54:04 -0400 fix: revert a debugging change This was for debugging itemspecs, but accidentally got committed in 1d930f0793d61. -------------------------------------------------------------------------------- e710ad149d | advil | 2021-06-10 13:54:04 -0400 fix: improve crashes for unrecoverable builder lua errors This isn't intended to be a full solution for lua errors at levelgen time, but tries to make the crash process smoother, both in terms of messaging, and efficiency. The builder for each map tries to run vault lua 25 times, and tries to build a level 50 times before bailing entirely with a crash. So if a vault has e.g. a broken itemspec that produces a lua error during levelgen, this can be repeated at least 25 times, and for wizmode force generation (&P), 25 * 50 times. The vast majority of errors of this category (though not all) will be deterministic, so there's no point to retries. In cases like this, on a debug build the lag for the crash is also pretty noticeable. So, implement some stuff to immediately bail (for &P) or veto (for regular levelgen). In addition, percolate the actual lua error up the messaging chain a bit better, so the it now is actuall visible directly from the command line. (It's probably a bit *too* redundantly printed now, though.) Implementation: this commit adds a state variable to signal that an error was fatal, and handling for it to improve the messaging and skip all these retries. This may be something that would be more naturally done with exceptions, but it's entirely possible that these exceptions would need to dance around the lua layer (which can't have exceptions thrown across it, see 091e5a1), and I don't want to mess with this. For regular levelgen, this does throw a veto exception, but from a place where that should be safe to do. -------------------------------------------------------------------------------- 6f2aa7e302 | Nicholas Feinberg | 2021-06-10 10:14:22 -0700 Let Storm Form go mano-e-mano (engine, Reeces) Oversight! Also sneakily revert the EV bonus from the last change. -------------------------------------------------------------------------------- 1b1a975c3d | Nicholas Feinberg | 2021-06-10 09:08:21 -0700 Rework Air Elementals Air elementals' use of Twister (a lesser Tornado/Polar Vortex) was intended to give them a more interesting gimmick than their old ones (submerging in air). However, it was quite complex, and tended to cause quite a lot of collateral damage to their own allies. That could be fun sometimes, but it could also result in victories that felt unearned. Instead, let's try a new spell: Stunning Burst, a weak electrical beam attack that can inflict a very brief (1 turn) paralysis on hit. rElec can resist it, as can dodging, stasis, or controlling line of fire, but Will has no effect. Let's see how higher-frequency, lower-impact Para feels. -------------------------------------------------------------------------------- 534494da46 | advil | 2021-06-10 09:30:55 -0400 fix: prevent save corruption on &P crashes This fixes a couple of ways that a save could become unloadable when it crashes with &P: (i) the force props didn't get cleared, so the game would try to regenerate exactly the failing levelgen process all over again (which might be ok for some crashes, but not e.g. a bad itemspec), and (ii) placeinfo would get corrupted in a way that doesn't get fixed up (now it gets corrupted in a way that does). -------------------------------------------------------------------------------- 27faaac778 | gammafunk | 2021-06-10 04:14:35 -0500 Checkwhite -------------------------------------------------------------------------------- de6c002c37 | gammafunk | 2021-06-10 04:13:51 -0500 Some Shoals vaults from nicolae (12593) A set of 7 decor vaults and a set of 18 monster vaults. Minor edits have been made to the original submissions to follow syntax ordering style and to reglyph monsters to use number glyphs where possible. Remove patrolling tag for vaults that use in-branch monsters and add it in other cases where out-of-branch monsters are placed in vaults with special themes. More substantive edits to a couple vaults described below: nicolae_shoals_hidden_pirate_stash: Make the possible rapier weapon loot be good_item and make the scroll 50/50 for magic mapping or any scroll, instead of having a weight of 4 for the latter. nicolae_shoals_pincushion_passage: Thin out the monster a count, turning a 2/3 chance into a 1/3 chance, since otherwise it's a bit high for placing so many upper tier monsters. Could go either way on this change, but a bit fewer monsters felt right. nicolae_shoals_raging_river: Use elemental wellsprings instead of a custom vault define, which was a permanently berserk water elemental. A cute idea, but ultimately not quite interesting enough to warrant a custom definition, and I think what wellsprings can do is ultimately more interesting. -------------------------------------------------------------------------------- a7538b3203 | gammafunk | 2021-06-10 04:13:51 -0500 Some cleanups for Shoals.des Fix a section header and reindent and reorder a bunch of lines in some vaults. -------------------------------------------------------------------------------- c40782c2da | gammafunk | 2021-06-10 04:13:51 -0500 A quote for scrolls of identification (nicolae, 12593) -------------------------------------------------------------------------------- ced786f65e | Nicholas Feinberg | 2021-06-09 19:24:13 -0700 Don't claim Okawaru cares about your friends (Ge0ff) Since, as of 08c3841fb2f98d06ca037a69b54f3ed05b193e84, Oka doesn't. -------------------------------------------------------------------------------- 0aef527cbc | Nicholas Feinberg | 2021-06-09 19:20:16 -0700 Storm Form tweaks Make it nonliving (not having this was an oversight) and double the EV bonus to improve defenses a bit. -------------------------------------------------------------------------------- 64d35965e2 | Nicholas Feinberg | 2021-06-09 19:20:16 -0700 Remove Absolute Zero Absolute Zero was a spectacular, memorable effect: instantly turn the closest enemy into a block of ice! Unfortunately, in play, it ended up feeling worse than it sounded. The targeting constraints were a bit less limiting than had been intended, and many otherwise dramatic fights against powerful foes felt like anticlimaxes. It's still not entirely clear whether the spell was "too powerful" relative to the investment required to cast it, but it didn't *feel* good. There have been many suggestions for improving Absolute Zero - for example, adding a delay to the effect and making it a L9 Poison (!!) spell. When we want to experiment with those, we can revert this commit. For now, though, let's toss it. (A small part of this change [targeter removal] is in the previous commit - sorry! Don't miss that if you revert this.) -------------------------------------------------------------------------------- ff5298d5c3 | Nicholas Feinberg | 2021-06-09 19:20:16 -0700 Move Chain Lightning to level 9 After moving Tornado to Ice as Polar Vortex, Air needed a new level 9 spell. Chain Lightning is a spectacular and fun effect, but the current version is a bit messy and hard to understand - recursive arcs result in notoriously mysterious damage numbers ("4-264"). This seemed like a great opportunity to fix both. The new, level 9 Chain Lightning is intended to be an extremely powerful, but situation-dependent, effect. It does massive damage to the nearest target (partially ignoring both rElec and AC), and then arcs from that target outward, dealing somewhat reduced damage on subsequent arcs. With the right setup, it can spread across the entire screen, or it can just hit a few enemies on one side, depending on how you're positioned. It's intended to be competitive with Fire Storm (and thus keeps the Conjuration school), but to play very differently. Monster Chain Lightning is also changed to match. Nikola now does 3d17 at max range and 3d45 at point blank (again, partially ignoring AC and rElec), which should make him a more comprehensible and interesting encounter about managing distance, rather than just quaffing a resist potion or tricking him into walking near a plant. We'll see how that works out! -------------------------------------------------------------------------------- 7141f643d0 | Nicholas Feinberg | 2021-06-09 19:20:10 -0700 Shift: Tornado (L9 Air) -> Polar Vortex (L9 Ice) Ice, as a school, is intended to be 'diffuse' and 'subtle', With a few exceptions (i.e. Freeze), it tends to be best at dealing damage gradually to many enemies. That provides it with a distinctive playstyle, and Tornado fits that playstyle perfectly. As such, we'll shift Tornado to be the new level 9 Ice spell. Subsequent commits will discuss the removal of Absolute Zero and the new level 9 Air spell further. Functionally, the main change here is that Polar Vortex does 33% more damage (3 more dice) but is 40% resistable by rC, as with Hailstorm. Otherwise, it's the same spell. -------------------------------------------------------------------------------- 4220d81b6a | Nicholas Feinberg | 2021-06-09 18:41:10 -0700 Move Freezing Cloud to level 5 Since clouds now dissipate out of LOS and Ozocubu's Refrigeration now deals heavy damae, it's hard to justify the investment in Freezing Cloud as a 3-school spell. Move it to level 5 to make it a bit more viable, and to add symmetry with Bolt of Magma as a L5 Fire/Earth/Cj. -------------------------------------------------------------------------------- a17f9a2f5c | advil | 2021-06-09 20:43:40 -0400 feat: add basic tele closet detection to placement.lua This code tries to find spaces that are isolated, contain no stairs or hatches, and aren't marked with the no_tele_into KPROP. There are some things where it gets false positives, e.g. spaces completely filled by monsters, feature mimics, probably more. Reuses existing connectivity checking code. -------------------------------------------------------------------------------- 1d930f0793 | advil | 2021-06-09 20:42:27 -0400 fix: a batch of tele closet fixes Many of these are false positives, in the sense that they are tele closets filled by monsters (skipped by the tele code except for wizard teleport). But, they quiet the scripts. -------------------------------------------------------------------------------- 57ac2eb73c | advil | 2021-06-09 12:25:28 -0400 feat: options for resuming placement.lua in the middle This lets you choose where to start by vault name, which is convenient for running large batches of placement checks. I also added an option to limit the number of vaults tested. -------------------------------------------------------------------------------- 7e0d850643 | advil | 2021-06-09 12:24:02 -0400 fix: a batch of vault opacity fixes Detected via the placement.lua script. Not all of these are perfect fixes, and several of these vaults will still trigger vetos under some circumstances. -------------------------------------------------------------------------------- 9baf572ecc | advil | 2021-06-09 11:52:01 -0400 fix: some vault opacity fixes from nicolae This fixes several vaults that could generate isolated regions, including merging the change in snakefix.des in https://crawl.develz.org/mantis/view.php?id=12590 . -------------------------------------------------------------------------------- 940ed4fa31 | advil | 2021-06-08 22:18:09 -0400 fix: expand opaque mask skipping for vault exits Since 080276f, the `@` glyph is never automatically masked as opaque, leading to some connectivity checks for non-transparent vaults that do have exits. However, many vaults with only one exit rely on `+`, `=`, or even ` ` (in the case of floats with no marked exits) being interpreted as an exit as well. Example: library_closet in https://crawl.develz.org/mantis/view.php?id=12591. This commit expands things so that anything that counts as an exit for a vault will not receive an opaque mask unless that glyph is explicitly masked, which will expand connectivity checks by quite a bit. This may over-veto, we'll see, but in my testing seems to work and fixes the issue in 12591 without otherwise disrupting the seed (will need to do some more automated testing). -------------------------------------------------------------------------------- cb30e825f4 | advil | 2021-06-08 22:14:22 -0400 fix: avoid vetoing islands in pf_hell_entry_tar_river Because any `w` tile could turn into `.`, this vault can often generate islands in the corners, which will veto. This tweak adjusts the corners to never convert to land; two of the optional spectral shrikes may place only in the corners. -------------------------------------------------------------------------------- 2a5033c031 | advil | 2021-06-08 21:55:49 -0400 fix: various vault transparency fixes Mostly for new-ish vaults; I'm a bit surprised if these placed. In most cases this is just adjusting the masking. For nemelex_altar_shiori the removal of the transparent tag may be awkward, as it means this will veto unless *both* doors link up, but masking this one would be a pain. -------------------------------------------------------------------------------- e70438ac7b | advil | 2021-06-08 17:02:09 -0400 fix: let `sword_in_stone` not choke on dancing singing sword e7febcc0c011a added singing sword to `sword_in_stone`. However, the dancing weapon spec parsing couldn't handle providing an unrand here, and so the 1/50 condition would just produce a lua error (even if the vault is placing at a depth where the non-dancing one would be used). This commit implements correct spec parsing for unrands, and so lets this vault work as intended. If singing sword is already placed, it places a dancing fallback unrand (which seems to work correctly). -------------------------------------------------------------------------------- 418a8ee560 | Nicholas Feinberg | 2021-06-08 12:36:48 -0700 Make Wereblood heal 1d3 on kill Wereblood is dangerous to use because it draws in more enemies, That's a good tradeoff to discourage players from using it all the time, but to encourage player to use it for some fights, give a small amount of healing on kills so that the player is more likely to be at high enough health to face later enemies. -------------------------------------------------------------------------------- 26df433047 | Nicholas Feinberg | 2021-06-08 12:16:40 -0700 Don't put a level 7 spell in a starting book ??oops -------------------------------------------------------------------------------- 59ac6f31e6 | advil | 2021-06-08 15:00:54 -0400 fix: fix fixes -------------------------------------------------------------------------------- e6c32ae999 | advil | 2021-06-08 14:57:15 -0400 fix: yet more hydraform removal I'm not sure if a straight replacement with storm form in changes is what was intended, but hydra form's presence there was causing crashes. Also removed it from the enum on upgrade. -------------------------------------------------------------------------------- b079ea8264 | advil | 2021-06-08 14:37:09 -0400 build: more fully remove hydraform and hopefully fix CI -------------------------------------------------------------------------------- c590d4a5df | Nicholas Feinberg | 2021-06-08 10:14:49 -0700 Storm Form to level 7 Discourage using it at low spellpower (where it's much less useful) and communicate that it's meant to be a top-tier tmut, comparable to Dragon Form. It becomes castable around 60-70 power now, which feels like a reasonable starting point. -------------------------------------------------------------------------------- 47a774193f | hellmonk | 2021-06-08 09:46:48 -0700 Replace hydra form with storm form Hydra form was intended to be a heavily power-scaling form that made up for its bad defenses with cleaving melee and heal on kill. In practice, it was hard to obtain enough power for hydra form to outdamage to other forms, let alone find situations in which its benefits made up for poor ac and awful evasion. Storm form will attempt to fill the same niche as a lategame form that rewards high spellpower, but hopefully do it a bit better. Storm form melds non-jewelery slots, provides 2 + power / 2.5 base damage elec branded cleaving melee (breakeven post-brand damage with dragon form at 90ish power), 10 + power / 10 AC, retains player size and adds a power / 10 ev bonus, provides flight and relec, and has an activatable "blinkbolt" ability that deals elec damage and blinks the player to the end of its path, but must target a monster and has a cooldown. The new spell is level 6 transmutation/air, which makes spellpower more expensive in terms of exp but does allow easier enhancement. It is probably still very niche, but should be better in its niche. Numbers are open to adjustment. Additionally, it needs cool tiles for the form and ability. -------------------------------------------------------------------------------- 85643e0b18 | hellmonk | 2021-06-08 09:46:48 -0700 Increase ice form's ac power scaling. Ice form became comparatively unattractive due to blade hands buffs in 0.20 and was somewhat niche. Combined with the blade hands nerf, buffing ice form ac somewhat should make it more appealing. AC is unchanged at 0 power and 5 higher at maximum (100) power. -------------------------------------------------------------------------------- ec9bb07eb8 | advil | 2021-06-08 10:07:59 -0400 build: update ci irc information -------------------------------------------------------------------------------- c6a4cbde82 | Nicholas Feinberg | 2021-06-07 20:57:37 -0700 Remove wandering mushroom/toadstool magic Wandering mushrooms were able to path through toadstools so that it wouldn't be annoying when you created a wandering mushroom, prayed on a corpse to get a toadstool, and then got stuck. That logic really isn't need anymore. Reverts b5de9b17133aa . (Sorry, Sage.) -------------------------------------------------------------------------------- 6c7882eca4 | Nicholas Feinberg | 2021-06-07 20:38:23 -0700 Allow silencing rolling charge (engine) Alternative solution would have made 'the rumble of your scales through the stone' (or whatever) alert victims. If this is the next high-level stabbing tech then maybe I'll do something about it, who knows. -------------------------------------------------------------------------------- fc7c993222 | Kate | 2021-06-07 17:02:01 +0100 Adjust elemental wellsprings Their self-damage on cast caused them to abjure their own summons, as well as being poorly documented as a special-case on top of a spell that doesn't normally create summons. Instead give them Summon Water Elementals as a normal spell and remove their self-damage on cast as well as their fast regen. Also give them a radius 1 water aura like water nymphs, rather than just affecting the tile underneath them. -------------------------------------------------------------------------------- 819d820658 | Kate | 2021-06-07 16:11:45 +0100 Shorten Gozag's distraction message It was a lot wordier than necessary for something that's often displayed multiple times a turn. The "dreaming of imaginary riches" part was intended to clarify that it doesn't require actual gold to be present on the floor or in inventory, but the new "golden aura" wording now covers that anyway. -------------------------------------------------------------------------------- fd60fd639a | Aliscans | 2021-06-06 18:33:09 -0700 Fix an error message when creating a malformed dancing/spectral weapon. Previously, if you using the wizard mode create monster command with "dancing weapon; stone" on a build with asserts compiled in, the game crashed with "ASSERT(wpn) in 'dungeon.cc' at line 5159 failed.". The same happens for any non-weapon, or even "nothing", and the same if a vault was created which included such a monster. With this change, it prints "Monster 'dancing weapon' requires a weapon." instead in wizard mode, and the game cannot start if any vault contains a monster like that. -------------------------------------------------------------------------------- 90fd9eff7f | l33t-d00d | 2021-06-06 18:31:04 -0700 Modify Grammar Sceptre of Torment Minor grammatical modification to the message when wielding the Sceptre of Torment. "Terribly searing pain" (adverb modifying adjective describing noun) becomes "Terrible, searing pain" (compound adjective describing noun). Both are correct, however, the latter flows and sounds better. -------------------------------------------------------------------------------- a8cc5da48b | Nikolai Lavsky | 2021-06-06 18:29:52 -0700 Tweak Ozocubu's Refrigeration usefulness check Currently, the UI incorrectly tells the player that the spell has valid targets when there are only plants, butterflies, or player allies nearby. This commit changes Refrigeration's usefulness check, so the spell is grayed out on the quiver if there are no hostile monsters in LOS. [Committer's note: I rewrote this to be a bit simpler.] Closes #1968. -------------------------------------------------------------------------------- 8976fa19b5 | dilly | 2021-06-06 18:16:24 -0700 WJC Sifu names change Deng Ai, Jiang Wei, Zhang Bao, Sun Luban(especially this one) are not appropriate for the masters of martial arts council. -------------------------------------------------------------------------------- 5437b2cd39 | hellmonk | 2021-06-06 18:15:50 -0700 Change the gozag gold distraction message. The previous messages implied that nearby gold piles or the player's carried gold caused the effect, which was confusing. -------------------------------------------------------------------------------- e8f9bb252e | Nicholas Feinberg | 2021-06-06 18:13:04 -0700 Don't let animated armour open doors They have no hands! -------------------------------------------------------------------------------- 8da17f8a6b | Nicholas Feinberg | 2021-06-06 18:12:31 -0700 Remove unrand animated armour crash Don't crash when saving if an animated armour drawn from an unrand is walking around. -------------------------------------------------------------------------------- ef78505d0f | Nicholas Feinberg | 2021-06-06 17:45:59 -0700 Fix Vampiric Drain messaging (Yermak, 12597) And do a bit of refactoring while I'm in the area. -------------------------------------------------------------------------------- 54dba09ff7 | Nicholas Feinberg | 2021-06-06 10:23:26 -0700 Remove Invis range listing (Undo) Misleading since 6385558a29ec6c . -------------------------------------------------------------------------------- 958d993ae5 | gammafunk | 2021-06-05 22:33:28 -0500 Update the history section of the manual I've rewritten the history section to hopefully better capture the origins of Linley's Dungeon Crawl and its progression to DCSS. Mention Moria instead of Angband, as the former is what Linley actually gave as his inspiration: "Crawl started out in about 1995 when, having played PCHack and Moria, I managed to get hold of NetHack 3.1.3. Although I liked the randomness and the humour of it, there were some things I really wanted to fix - the targetting system, for example - and I thought parts of it, like spellcasting, could be made much more interesting (NetHack still has very few spells which weren't wand/potion/scroll effects in Rogue). So I dusted off my old Turbo C++ box and set about teaching myself C, with only a rudimentary knowledge of Commodore 64 BASIC to get me started (I wasn't connected to the internet in those days)." (From https://web.archive.org/web/20060424060820/http://tvilsom.org/roguelike/50.html) Mention Hack instead of PCHack as the latter is a direct port of Hack, and curious readers will have an easier time finding info on the original game; I certainly did! The mention of traditional RPGs, specifically Ultima IV, is hopefully interesting to people who didn't realize that PC RPGs were also an direct inspiration, particularly the limited LOS/play area of a large map seen in games like Ultima IV. Moria does already have a similar play area compared to Crawl, but Linley highlighted the influence of PC RPGs aesthetics like of Ultima in a couple of interviews. Sadly I'm only able to find one online reference where he directly mentions them: httpe://quote-un-quote.tumblr.com/post/2178789666/interview-with-shmup-legend-li nley-henzell Hopefully this addition to the narrative won't be seen as unreliable original research! Internet archaeologists reading this who find additional sources, please send them my way. I've also moved the bit about Wizard's Castle and the Orb of Zot into this first paragraph. For describing the transition from Linley as lead developer to Brent Ross, to the founding of DCSS, I've cleaned up the timeline and mentioned the two project founders, Darshan Shaligram (aka greensnark) and Erik Piper, by name. I feel it's important to highlight their very important efforts in getting DCSS started and include some basic details about that from greensnark's excellent writeup, which I've also linked. Hopefully this new history section gives a clearer picture of how the project progressed. It's possible that we could describe the subsequent "eras" of DCSS development in this section, but that's arguably even more difficult to sort out. We could highlight the addition of major features like Tiles and WebTiles, perhaps some content milestones and notable fundamental changes. I'll leave that for a future writer, after further discussion. -------------------------------------------------------------------------------- 3745823196 | gammafunk | 2021-06-05 22:33:28 -0500 Update IRC and community information Now that we've completed the move to Libera IRC from Freenode, update all references to that network and the appropriate channels. I took the liberty of updating two very minor source comments in cc/DES files to refer to conversations as being on "IRC" instead of "##crawl", so anyone reading them without pior knowledge of the old channel won't be confused. I've also updated the Overview and section of the manual to refer primarily to the community resource listing on http://crawl.develz.org instead of just listing IRC. I've added a "Contact and community information" heading to the "License, contact, history" section and put the existing community info under this heading. I've also added the DCSS subreddit to the list of community resources and adjusted the language to be applicable to both it and Discord. I've updated the IRC info to mention #crawl-dev for development. History is moved to its its own heading and will be updated in a subsequent commit. For Hints and FAQs, again refer to the website for community resources instead of just listing IRC, and update IRC listing for hints in other languages. Ideally these hints would instead refer to the website, but that would need work by translators. I've also referenced the github issue tracker over mantis in a couple places where only mantis was mentioned and referring to both would be awkward. Possibly we need to consistently mention only the github tracker and only put information about mantis in somewhere like the contributor's guide. -------------------------------------------------------------------------------- 8a41f320e8 | Nicholas Feinberg | 2021-06-04 20:09:06 -0700 Nerf peacekeeper bands in Vaults Drop them from 2-3 pals to 1-2. Peacekeepers are supposed to be top-tier Vaults threats, but not mega-top-tier. -------------------------------------------------------------------------------- e08c5e17fd | Nicholas Feinberg | 2021-06-04 18:12:16 -0700 Make the Amulet of the Air enhance air (hellmonk) Why not? Remove the +5 EV to avoid clutter. (Isn't rMsl enough?) -------------------------------------------------------------------------------- 08c3841fb2 | Nicholas Feinberg | 2021-06-04 18:04:39 -0700 Remove Okawaru's friend conduct It had little actual impact on gameplay and little flavour - mostly it was an occasional surprising annoyance. I think there's room here for a much more interesting, stronger anti-ally conduct, but I don't know when we'll get to it, and there's no good reason to leave this around in the meanwhile. -------------------------------------------------------------------------------- 373bd8bca1 | Nicholas Feinberg | 2021-06-04 18:00:23 -0700 Fix more Lear/merfolk/form bugs Don't unmeld boots when in a form that melds boots if you exit the water as a merfolk, or if you exit the form while in the water. Lear's is a kind of large boot. -------------------------------------------------------------------------------- d0ff78f834 | Nicholas Feinberg | 2021-06-04 17:36:56 -0700 Don't allow wearing items over Lear's Previously, if Lear's Hauberk was melded, you could wear aux armour that Lear's normally blocks. Don't allow that. -------------------------------------------------------------------------------- 5b7f72125b | Nicholas Feinberg | 2021-06-04 17:28:20 -0700 Warn for a rare Ash/holy/necromut issue If casting Necromutation would cause you to shatter a cursed holy wrath weapon, prompt first. This is probably buggy in some other way. -------------------------------------------------------------------------------- 8faf1edda1 | Nicholas Feinberg | 2021-06-04 17:14:23 -0700 Add message for manual for maxed skill (Yermak) -------------------------------------------------------------------------------- c6d2f85da4 | Nicholas Feinberg | 2021-06-04 17:04:34 -0700 Rewrite cause fear code (vt) Don't let the Cause Fear targeter claim to affect undead. This was a weird rabbithole and I'm not very happy with the resulting code! -------------------------------------------------------------------------------- d1902e2d21 | Nicholas Feinberg | 2021-06-04 16:32:16 -0700 Fix missing dancing weapon / gozag death message (split) There was no message at all for dancing weapons being destroyed if you followed Gozag. -------------------------------------------------------------------------------- 6385558a29 | Nicholas Feinberg | 2021-06-04 16:21:15 -0700 Simplifiy Invisibility (Yermak) Make it self-targeted only, to reduce the number of keystrokes while casting. It was possible to use Invisibility on other targets, e.g. on allies as a buff or on enemies to trick enemies into shooting them, but in practice this happened fairly rarely. In future, we might add some other effect (perhaps an evocable or unrand) that encourages those fun interactions. -------------------------------------------------------------------------------- 72385e2e4b | Nicholas Feinberg | 2021-06-04 16:10:11 -0700 Fix pet AI / non-beam spells (ardl, dang3rdave) Airstrike, LRD and Freeze will now all set pet target correctly. Possibly Irradiate and Chain Lightning should too? I'm unsure. -------------------------------------------------------------------------------- 6342a01c75 | gammafunk | 2021-06-04 09:30:45 -0500 Update some guarded unrand vaults The guarded unrand vaults are a set of minivaults that place specific unrandarts. This commit updates many vaults in this set to use a common weight, to extend placement ranges to cover later Dungeon, where applicable, and to fix other issues, especially for the recently merged ones. The common weight of 3 will ensure that these vaults don't place too frequently, and there's generally no need to have certain vaults with higher or lower weight. Remove unnecessary transparent tags where a vault doesn't have multiple exits and a few other tags like no_item_gen where that's not necessary. Update the section comments to mention the common weight and that the motivation for this is balance; we generally don't weight vaults by subjective interest, as the old comment implied. Keep the suggestion for out-of-depth monsters that are escapable, but mention that runed doors or transporters are an option if nastier out-of-depth monsters are used. Don't mention not using overpowered/useless unrands since we're always reworking unrands to make sure none are useless, and even the more overpowered ones deserve a fun vault! For specific content changes, some details are described below: minmay_guarded_unrand_tortoise: Allow this vault to actually place in Vaults as intended by making it a hard room, applying the necessary substitution to make its walls general. minmay_guarded_unrand_staff_of_olgreb: Extend placement from D:5-10 to D:5- and have three sets monsters, scaling up the three spider/insect/snake monster definitions with placement depth. minmay_guarded_unrand_finisher: Extend placement from D:7-13 to D:7-, using two sets of monsters in two tiers. Have wraiths and a skeletal warrior before D:13 and skeletal warriors and a reaper afterwards. minmay_guarded_unrand_resistance: Extend placement from D:9-D:14 to D:9 without modifications, since the monsters it places are fine for D:15. chequers_guarded_unrand_ignorance: For Dungeon, extend placement from D:7-12 to D:7- (leaving Orc unchanged). This vault is certainly dangerous enough for late Dungeon without any changes. chequers_guarded_unrand_mask_of_the_dragon: Remove the no_tele_into markers. This is a Zot vault, so players can handle being teleported inside. hellmonk_guarded_unrand_starlight: Add placement for D:13- in addition to the existing Depths placement by using cherubs instead of angels and daevas. hellmonk_guarded_unrand_salamander: Add scaling for Dungeon that uses mystics and no tyrants before D:13 and adds tyrants after. hellmonk_guarded_unrand_cigotuvi: Extend placement from D:9-D:14 to D:9-. Make the skeletons/zombies pull monster types from later depths, and for D:13- use soul eaters instead of hellwings. hellmonk_guarded_unrand_staff_of_battle: Extend placement from D:8-13, to D:8-, adding a Tengu Reaver for D:13 onwards. hellmonk_guarded_unrand_dark_maul: For Dungeon, extend placement from D:8-12 to D:8-. Revamp the monster set to use less trivial monsters holding the maul and a better set for the accompanying threats. Scale monster count with depth of placement. hellmonk_guarded_unrand_gong: Extend placement to Vaults by adding logic to place the vault as a vault room. Add 9 spawns after D:13. hellmonk_guarded_unrand_night: Extend placement from D:7-12 to D:7- by introducing satyrs along with the dream sheep after from D:13 onwards. hellmonk_guarded_unrand_gyre_and_gimble: Extend Dungeon placement from D:6-D:10 to D:7- by making the 2-handed monster be an ettin and the spriggan be a spriggan berserker with a rapier. hellmonk_guarded_unrand_vines: Extend placement from D:7-11 and Lair:1-3 to D:7- and all of Lair. Have both a regenerating monsters as well as plant monsters, using Trolls and a single Hydra before D:13, introducing oklob plants in Lair and replacing trolls with hydra, scaled with depth of placement, before replacing oklobs with a single Swamp plant monster, either a shambling mangrove or a thorn hunter. hellmonk_guarded_unrand_frostbite: Extend placement from D:7-12 to D:7-, adding nastier ice demons for D:13 onwards. hellmonk_guarded_unrand_zhor: Extend placement from D:7-12 and Lair:1-3 to D:7- and all of Lair. Scale monster counts better with depth, adding an ice dragon for D:13 onward. Use a single runed door instead of clear doors, since the latter are still pretty confusing to players, especially in terms of auto explore. hellmonk_guarded_unrand_vitality_bloodlust: Extend placement from D:7-11 to D:7-, randomizing monster counts more and adding a deep troll shaman and higher deep troll count for D:13 onwards. Closes #1937. -------------------------------------------------------------------------------- 8ece3b8c5a | gammafunk | 2021-06-04 09:30:45 -0500 Some tweaks to a few large themed vaults Several god-themed vaults in large_themed.des had never been properly updates for the creation of Depths, having absdepth conditions that never applied or just didn't make sense. Other aspects of these vaults needed updating, including more appropriate monster selection and some generalization to let them place in late Dungeon, where they're also a good fit. Some content changes for four vaults are described below. All but evilmike_library_of_no_secrets now additionally place on D:13- as well as Depths: evilmike_library_of_no_secrets: Placement is unchanged at D:11- and Depths, but adjust monster lists in both branches. Use both summoning direct damage spellcasting monsters, but using only normal and out-of-depth branch monsters. Add and place an additional monster glyph for the top-end threats rather than using a set of weights with only two glyphs. evilmike_makhleb_hellhole: For Dungeon, use common demons, kobold demonologists, and a milder selection of tier 2 "greater servant" demons. Thin out monster placement relative to Depths. For Depths, remove the now-trivial common demons and kobold demonologist, fully replacing these with hell knights and deep elf demonologists, respectively. Use a brimstone fiend as the "boss" guarding the altar instead of another hell knight. Update the "prisoner" area to not not reveal itself head of time and to contain actual loot with a more appropriate set of guards. The prisoner loot as a demon weapon and some nice potions. Make the prisoner area have a grate instead of a runed door, so as not to clutter ctrl-o. Compassionate players may elect to free them with a dig charge if they wish! evilmike_halls_of_destruction: For Dungeon, use appropriate spellcasters for the two tiers, with the second including deep elf zephyrmancers as the top end. Make the unique spellcaster boss alternate between Nikola and Jorgrun, with a deep elf annihilator backup should the chosen unique be already generated. For Depths, likewise updates the spellcasters, going up to liches for the second tier, and alternating between Frederick and Boris with an ancient lich as backup. Replace the harmless fire vortexes with salamander tyrants. Scale monster placement by branch, placing fewer iood statues and tyrants in Dungeon compared to Depths. evilmike_negative_zone: Update the monster list to be a more appropriate set of necromancy-themed monsters. Don't use ancient/dread liches, as those have no actual necromancy spells. Place different loot types in a nice arrangement instead of using a heavily random SUBST. This commit also cleans various aspects of syntax for the above vaults and a couple other vaults in larged_themed.des. -------------------------------------------------------------------------------- 4ce4c228df | gammafunk | 2021-06-04 08:44:03 -0500 Clean up lua depth checks Use you.in_branch() instead of a comparison to the you.depth() string in order to check branch location, since the latter is error-prone. This batch of changes only caught one such error, but the string comparison is case-sensitive, and you.in_branch() correctly generates an error if the argument given is an invalid branch name. Also prefer use of you.depth() to you.absdepth() when only one branch is involved, as this is clearer. It would probably be best to just always use a combination of you.in_branch() and you.depth(), since its more clear and doesn't require DES readers to look up branch absdepth values. However this requires rewriting a lot of conditionals, and I've mostly only modified one related to the first part of this patch. -------------------------------------------------------------------------------- 6ab302a81b | hellmonk | 2021-06-03 06:02:40 -0500 New guarded unrand vaults. Guarded unrand vaults for amulets of vitality and bloodlust, cloak of starlight, seven league boots, salamander hide, robe of vines, robe of night, cigotuvi's embrace, skin of zhor, lear's hauberk, shield of the gong, damnation, staff of battle, dark maul, gyre and gimble, frostbite, and rift. Comitter's Note: Merged several commits into one and updated commit comment with a full list of unrands covered. -------------------------------------------------------------------------------- bc2d63fdf1 | hellmonk | 2021-06-02 23:10:12 -0400 New spider minivault Now you, too, can collect a star_item in 0.5 a presses -------------------------------------------------------------------------------- 74d5156d8b | hellmonk | 2021-06-01 13:07:00 -0400 New Zot:5 shop vault Idea in conjunction with nicolae; a shop that sells great gear for 1 gold, appearing only on Zot:5. -------------------------------------------------------------------------------- e72e49191c | Nicholas Feinberg | 2021-06-01 07:55:36 -0700 Fix mindburst/2h ogre lore (Also ettins and maybe a few others.) -------------------------------------------------------------------------------- cae1a64fa4 | Nicholas Feinberg | 2021-06-01 07:50:33 -0700 Improve Mindburst lore (dinky) You are huge! That means you have multiple heads! Burst those minds! -------------------------------------------------------------------------------- 94dc6ad4cf | gammafunk | 2021-05-29 06:01:34 -0500 Some cleanups for a Snake rune vault Minor DES cleanups and checkwhite. Closes #1963. -------------------------------------------------------------------------------- 6ea3bcaf3c | hellmonk | 2021-05-29 06:01:34 -0500 New snake end: quicksilver temple This snake end takes its monster theme from snake ziggurat floors, which eventually place quicksilver dragons. Two of them serve as the boss. Since those are rather dangerous compared to normal snake spawns, I tried to keep the total number of monsters relatively low compared to other endings. -------------------------------------------------------------------------------- 427f276c44 | gammafunk | 2021-05-29 06:01:28 -0500 A batch of Snake vaults from nicolae (12590) A set of decor vaults and a set of monster-placing vaults. Most changes are minor, with a few substantive changes to the monster-placing vaults described below: nicolae_snake_attic_fulla_snakes: Thin out snakes in the attic a bit. It still has a lot of snakes, just not quite so many. nicolae_snake_dead_anacondas: Combine the inner derived undead anacondas into one definition and favor the more interesting/stronger types of skeletons and zombies. Use a simpler distribution for monster placement. nicolae_snake_magic_snake_eye: Don't place loot in piles on the same square, using three loot glyphs for any that need to place multiple item. nicolae_snake_naga_rites: Thin out monster placement somewhat. One can take only so many ritualists. nicolae_snake_snakewalk: Used fixed loot classes. There are only 4 loot items here, so we can just put 4 higher quality items. Thin out the monster placement slightly. I elected to not thin out monsters in a similar vault using out-of-depth monsters in this batch, nicolae_snake_storage_room, since it places far richer loot. -------------------------------------------------------------------------------- 423d0e134b | gammafunk | 2021-05-29 00:49:39 -0500 Some DES file cleanups Move a multi-branch snake-themed vault to mini_monsters.des, move another vault in this file to the appropriate file section, and update the file header comments. -------------------------------------------------------------------------------- 3e9cee4cb2 | gammafunk | 2021-05-26 16:08:34 -0500 Reduce monster count in a vault (Ge0ff) The vault nzn_swamp_stair_ambush places 8 guaranteed monsters near stairs in a small area. While this is within acceptable bounds, it's on the hard side of things, and additionally there's no monster count randomization, which we like to have for monster-placing vaults. Remove three monsters on-average by adding appropriate chances for shallow water or floor instead of a monster in some places. -------------------------------------------------------------------------------- cd1846a45e | advil | 2021-05-26 16:11:58 -0400 fix: use correct quiver for lua items.fired_item() This was getting the item behind the primary action, which is either the wielded weapon or ammo used by the wielded weapon, but not in general what the quivered item is. The doc string was also only correct for an intermediate implementation of quivering. -------------------------------------------------------------------------------- 35abcb988c | gammafunk | 2021-05-26 02:05:59 -0500 Make a loot vault diggable (Mels) The vault minivault_21 is an old vault that places loot behind fully undiggable walls, but with escape hatches should the player land inside. The loot is inaccessible for a large majority of players, since they'd have no way to break stone walls. This commit makes the vault rock so that most players can eventually access the interior eventually (e.g. with digging). Also remove the allow_dup tag, since it places a good deal of high quality loot. There's not need to give such nice things more than once per game! -------------------------------------------------------------------------------- 8631133539 | advil | 2021-05-24 10:39:48 -0400 fix: don't overwrite (jobbed) draconian breath spells A draconian with a job usually has a spellbook, and this code would overwrite their breath weapon with that spellbook. This appears to be unintentional, and is pretty old. The bug was not apparent because the describe code doesn't actually use the monster spell list to show the breath weapon; see mon-util.cc `get_unique_spells` and describe-spells.cc `_monster_spellbooks`. (In general, this code is not what I expected and is probably ripe for bugs like this...) -------------------------------------------------------------------------------- 20e75d603b | Nicholas Feinberg | 2021-05-24 07:32:41 -0700 Fix quicksilver ooze AF desc (dinky) -------------------------------------------------------------------------------- 601b473118 | Nicholas Feinberg | 2021-05-22 20:03:37 -0700 Merfolk Long Blades title: Swordfish (hellmonk) -------------------------------------------------------------------------------- 813e06a757 | advil | 2021-05-22 18:11:55 -0400 fix: remove a likely unapropos weapon name Because "banish" has a specific meaning in crawl, "Banisher" as a weapon name is very likely to be inconsistent with the weapon flavor. (I spotted this while looking at learndb unapropos names, specifically, `+1 trident "Banisher" {holy, +Blink rPois MP+9}`.) -------------------------------------------------------------------------------- b8eb6cee8e | Kate | 2021-05-22 01:12:21 +0100 Simplify flaying Make it closer to torment-lite, dealing a fixed 25% of current HP instead of its previous fairly complicated damage calculation. -------------------------------------------------------------------------------- 73eefd5def | gammafunk | 2021-05-19 22:19:46 -0500 More cleanups for Ozocubu's Refrigeration The check for whether a target was vulnerable used some outdated logic, and the UI for players casting this spell didn't even perform the check in the first place. Hence players casting the spell with only rC+++ monsters in LOS would not get the usually prompt about a useless cast, even though all visible targets are immune. This commit fixes this logic, adds a tracer check, and refactors the LOS attack spell code slightly. -------------------------------------------------------------------------------- e80a49f48c | gammafunk | 2021-05-19 14:26:12 -0500 Fix spell -Potion application (AliasTheSpectator) If the player had rC+++ and cast Ozocubu's Refrigeration, their immunity to its damage accidentally prevented application of -Potion. The player spell doesn't damage the player even without the immunity granted by rC+++, but this bug emerged as a holdover from when the spell did self-damage. This commit applies the debuff unconditionally. -------------------------------------------------------------------------------- 8b4daa1eef | Nicholas Feinberg | 2021-05-18 17:18:53 -0700 Dart slug: nerf damage, buff cast rate (hellmonk) To have mercy on poor felids, decrease damage to 2d3 (from 2d4) and increase cast rate to 30% (from 20%). Given the existence of AC, this should more or less balance out. -------------------------------------------------------------------------------- a233589e6f | advil | 2021-05-18 13:03:34 -0400 refactor: clean up some vaults monspec code, document No behavior changes, but fix up a 9 year old stylistic choice I'm not a fan of and make the documentation/comments a bit clearer for people looking at this for the first time. -------------------------------------------------------------------------------- e86db4a01e | Nicholas Feinberg | 2021-05-17 20:15:30 -0700 Weaken early D vault OODs Cap 8s and 9s to only spawning monsters up to (depth * 2) until D:9. This roughly corresponds to the range for which chaff was removed in dd57cda9ea3d35 . -------------------------------------------------------------------------------- 18a14b5c60 | Nicholas Feinberg | 2021-05-17 20:15:29 -0700 Weaken early D OODs Removal of chaff from the D spawn pool made OODs much nastier than they were in the past. Let's have no more D:2 water mocassins or steam dragons. -------------------------------------------------------------------------------- ee19b5822f | Nicholas Feinberg | 2021-05-17 09:08:07 -0700 Revert Sacrifice Hand piety change Back to 65 piety, from 60. Sacrificing your hand is an iconic and very cool Ru experience - it's fine for it to be a little stronger than other sacs, since it's fun! -------------------------------------------------------------------------------- 5f64966fcc | Kate | 2021-05-17 00:31:58 +0100 Fix Yred/Beogh recall cancelling Ozocubu's Armour Recalling offlevel allies moved the player to 0,0 in order to silence messages about expiring enchantments on them. However, this movement also resulted in Ozocubu's Armour and Frozen Ramparts being cancelled. Use msg::suppress to silence any such messages instead. Cheibriados Time Step and Temporal Distortion do still move the player to 0,0 so have the same problem (and would need a different approach to fix it). -------------------------------------------------------------------------------- 7fc4abc71e | Kate | 2021-05-16 20:07:03 +0100 Give Chuck some more exciting rocks Since the returning brand doesn't do anything special for him with monsters getting infinite ammo. -------------------------------------------------------------------------------- d55d32fc2f | Kate | 2021-05-16 20:04:26 +0100 Adjust some monster ammo quantities Since monsters now have infinite ammo, remove some cases where they were given additional ammo to make them less likely to run out. Also reduce some quantities of rarer ammo (such as curare and branded javelins) to reduce the amounts handed out to the player. -------------------------------------------------------------------------------- 41d2c3503b | Kate | 2021-05-16 18:48:41 +0100 Remove unused cloud immunity mutations But leave their functionality intact for transferred games, rather than add more save compatibility hacks for old demonspawn. -------------------------------------------------------------------------------- 245c70e1c0 | Aliscans | 2021-05-15 11:35:43 -0700 Let a Kikubaaqudgha-worshipping wizard create endless gifts. The wizard mode "get a god gift" command now creates one first level spellbook (if you have had no gifts from Kikubaaqudgha yet), followed by any number of second level ones. -------------------------------------------------------------------------------- 81437c0335 | Aliscans | 2021-05-15 11:35:43 -0700 Simplify _give_kiku_gift(). Rather than have the game use variables such as "gift" and "success" to track whether to return true, return false as soon as something fails. Make the items() call always create a book of Necromancy. This should have no effect as make_book_kiku_gift() overwrites it. Return immediately if items() fails, rather than calling make_book_kiku_gift() on env.item[NON_ITEM] first. -------------------------------------------------------------------------------- b0971d1698 | Aliscans | 2021-05-15 11:35:43 -0700 Simplify _give_sif_gift(). Rather than have the game use the "success" variable to track whether to return true, return false as soon as something fails. -------------------------------------------------------------------------------- bc5ded6cda | Aliscans | 2021-05-15 11:35:43 -0700 Split _gift_sif_kiku_gift() into a function for each god. There wasn't much common code, and this makes the flow easier to follow. -------------------------------------------------------------------------------- 7b0c17a4f7 | Aliscans | 2021-05-15 11:27:28 -0700 Fix what happens when you try to read a spellbook. Make the game give a "You aren't carrying any scrolls." message if you try to read() when you have no scrolls in your inventory or on the floor, but there is a spellbook on the floor. The game had given an inventory prompt with no items on it instead. -------------------------------------------------------------------------------- 7c134c3035 | Nikolai Lavsky | 2021-05-15 10:09:15 -0700 Highlight Curl's AC boost on webtiles HUD (12567) Highlight boosted AC when palentongas curl up. -------------------------------------------------------------------------------- 5e56b55837 | Nicholas Feinberg | 2021-05-15 10:04:01 -0700 Fixup sac validity logic We already check whether a mutation is at max level; no need to double-check it. (This logic also turned off a bunch of other validity checks for skill/xp, probably unintentionally.) Closes #1916. -------------------------------------------------------------------------------- 3ec4c25e8c | Nicholas Feinberg | 2021-05-15 10:03:28 -0700 Checkwhite -------------------------------------------------------------------------------- 145365d198 | hellmonk | 2021-05-15 10:03:28 -0700 slightly increase ru sacrifice timer -------------------------------------------------------------------------------- 41ace87d0d | hellmonk | 2021-05-15 10:03:28 -0700 Account for spellcasting skill when sacrificing wizardry. Instead of just looking at int, account for any spellcasting training when calculating piety, since that's a good indicator the player is casting things. -------------------------------------------------------------------------------- eccaff0f4d | hellmonk | 2021-05-15 10:03:28 -0700 Allow multiple levels of sacrifice experience. Much like sacrifice skill, the mutation already allowed this but additional validity checks forbid it. Sac experience may now be taken up to three times for a total of -6 xl and the piety gain has been decreased somewhat. It would be ideal to make sacrifice experience directly reduce the player's level rather than stepping through xp (so that it's a relevant sacrifice at all stages of the game rather than only relevant briefly upon taking and very lategame) but that seems rather complicated to implement. -------------------------------------------------------------------------------- 4e7b9e3c90 | hellmonk | 2021-05-15 10:03:28 -0700 Adjust sacrifice skill. Allow the player to take it up to three times. The mutation already supported this, but a check in _sacrifice_is_possible prevented ru from offering it again once it was taken. I am not sure if this was intentional or not. This commit also adjusts the piety downward somewhat for the first sacrifice, but more piety is given if the player elects to take it multiple times. -------------------------------------------------------------------------------- 7f30ced503 | hellmonk | 2021-05-15 10:03:28 -0700 Adjust some sacrifice piety values. Nerf sacrifice resistance somewhat and sac hand slightly. Buff sacrificing willpower and love; those are more serious drawbacks than the old values indicated, especially when comparing sac willpower to sac resistance. -------------------------------------------------------------------------------- e960553459 | hellmonk | 2021-05-15 10:03:28 -0700 Add a piety bonus for sacrificing words and drink together. Taking this combination shuts down a lot of options, so award a little piety bonus. Mummies will also get a bonus for sac words now for the same reason. -------------------------------------------------------------------------------- 834f9addc8 | hellmonk | 2021-05-15 10:03:28 -0700 Don't give piety for evo skill when sacrificing mp. -------------------------------------------------------------------------------- c5a3f79286 | Nicholas Feinberg | 2021-05-15 09:20:46 -0700 Devilishly good new tiles (Sastreii) Makhleb altar and the Hellbinder. -------------------------------------------------------------------------------- 56a4fb2168 | Nicholas Feinberg | 2021-05-15 09:03:51 -0700 Deduplicate excommunication XP -------------------------------------------------------------------------------- c127bba4f6 | Nicholas Feinberg | 2021-05-15 09:00:55 -0700 Make Sac XP pricier Rather than just costing the player two XLs of XP, actually increase the cost for all future XLs as if the player was still at their original XL. This should make it a much more consistently meaningful sacrifice, rather than one which becomes mostly irrelevant for most of the game (due to how XP cost scaling works). No adjustment to piety right now, though I can imagine it going up slightly. (It was fairly over-valued before.) -------------------------------------------------------------------------------- fb435604d7 | Nicholas Feinberg | 2021-05-15 08:09:38 -0700 Fix GDR comment typo (nlavsky, goratrix) -------------------------------------------------------------------------------- aa87e14f67 | Nicholas Feinberg | 2021-05-14 11:19:34 -0700 DRR AC GDR (hellmonk) Remove weird breakpoints for GDR effectiveness at even-numbered AC values. This does not matter. -------------------------------------------------------------------------------- 40ce562a0f | Nicholas Feinberg | 2021-05-14 08:44:32 -0700 New wizlab tiles (Sastreii) Zonguldrok (antique lich + shrine), Moon Base (walls), and also a tweak to the new Murray tile. That's not a wizlab thing but no one told Murray. -------------------------------------------------------------------------------- c4ce80cea6 | Nicholas Feinberg | 2021-05-14 08:32:15 -0700 WIP -------------------------------------------------------------------------------- ff078d554e | Nicholas Feinberg | 2021-05-14 08:16:48 -0700 Simplify GDR Guaranteed damage reduction is intended to smooth out some of the nastiness in Crawl combat. It guarantees that your AC will never roll below some % of its max value when defending against melee attacks and mundane projectiles (not against spells, etc). This is a mostly reasonable idea, but it's implemented bafflingly: it uses your base AC OR a hodge-podge of special cases based on your species and/or form, meaning that it's both spoilery and weird. Some AC is effectively worth more than others. Not great! Instead, simplify it to be based purely on the player's current AC. (Specifically, AC^(1/4) * 16.) Previous example values: Robe: 0% Scale mail (ie Fi): 28% Plate: 39% New values: AC 6 (ie Fi): 25% AC 20: 34% AC 50: 43% This is a buff to some things (anything that didn't have GDR before) and a nerf to other things (early plate). It's all over the place. Chaos reigns. (But in practice I suspect the difference will be mostly unnoticable.) -------------------------------------------------------------------------------- fdeffcb720 | Kate | 2021-05-13 19:27:43 +0100 Fix meph chance display -------------------------------------------------------------------------------- 9a643b30eb | gammafunk | 2021-05-13 05:44:09 -0500 Adjustments to two volcano maps For hellmonk_zot_springs, thin out the upper-tier monsters in the main chamber, since it felt a bit too fierce in play-testing. The middle-tier molten gargoyles are pretty tough at this depth as it is, so multiple salamander mystics and the other higher tier threats compound the difficulty of this map with each additional placement. Make the upper-tier set not include molten gargoyles, so we won't place too many of those, since the middle-tier placement already places four on-average. For syntax, reglyph to use consistent glyphs for monsters and items and to use a linear glyph progression. Fix the middle-tier monster NSUBST of 3 to not use ':' when placing the next tier on 4, since this would place either six of such monsters or zero, which seems unintentional (and undesirable). Clean up water tile placement and reorganize statements. For hellmonk_pyromancer_palace, reglyph decorative lava so we can mark it no_tele_into without marking the non-decorative lava. Closes #1949. -------------------------------------------------------------------------------- 7c0e23aee5 | hellmonk | 2021-05-12 22:53:31 -0500 Fix an incorrect glyph in hellmonk_smoking_crater -------------------------------------------------------------------------------- 5e02258609 | hellmonk | 2021-05-12 22:53:31 -0500 Deep elf pyromancer volcano. Pyromancers galore; deep elf archer serves as the boss. -------------------------------------------------------------------------------- 58c629d5e2 | hellmonk | 2021-05-12 22:53:31 -0500 New volcano map: zot springs Based on the legendary zot vault. Places humanoids, steam clouds. No eruptions. -------------------------------------------------------------------------------- 4505690ab0 | Nicholas Feinberg | 2021-05-11 21:41:46 -0700 New monster tiles (Sastreii) Boulder beetle, black bear, polar bear, zombie dragon, and Mnoleg. -------------------------------------------------------------------------------- a92136e5f8 | Nicholas Feinberg | 2021-05-11 21:17:10 -0700 Tweak Dj apts (pubby) Increase XP apt by 1 (0 -> +1) and drop spcast 1 (-2 -> -3). The goal here is to increase the odds that new spells will require some investment by the time you get them, rather than being immediately castable. This could encourage strategic decisionmaking (is this new spell worth investing in?). It's also intended to make =wiz more useful for Dj. -------------------------------------------------------------------------------- b3d8e82157 | advil | 2021-05-10 14:54:44 -0400 feat: add a way to reset the !a warning without swapping (Yermak) This is a very minimal change to allow this, it resets the warning as a side effect of rewielding. This is not great UI and it's a bit of a hidden feature, but as Yermak pointed out, there are corner cases where you really want something like this (e.g. Ash, + accidentally hitting y or using it one-off for something like rampaging). I've at least documented the behavior. This flag is used for ranged weapons as well as !a-inscribed weapons. -------------------------------------------------------------------------------- e0cfffa631 | Kate | 2021-05-10 14:52:30 +0100 Update manual entry for grey draconians -------------------------------------------------------------------------------- 3f2173a928 | gammafunk | 2021-05-10 03:11:45 -0500 Fix dart descriptions (Goratrix) 0b7d3b79 updated the descriptions, but incorrectly changed the entry to one for needles. -------------------------------------------------------------------------------- 0b7d3b79db | Kate | 2021-05-10 02:52:05 +0100 Update needle descriptions -------------------------------------------------------------------------------- e7c6dc9676 | Kate | 2021-05-10 02:28:38 +0100 Let classed monster grey draconians swim Previously only base grey draconians could travel through water. -------------------------------------------------------------------------------- a3e552604e | Kate | 2021-05-10 02:21:07 +0100 Remove unbreathing (mostly) Unbreathing had a number of niche effects but was mostly redundant with rPois and undead/nonliving/plant holiness. Instead make the things that checked it just check holiness and rPois directly as appropriate. Affected mechanics are mephitic cloud confusion and curare damage (both now only check rPois, since all undead/nonliving/plant holiness creatures have rPois anyway), and spore confusion and water drowning damage (both now just check undead/nonliving/plant holiness). Very few monsters/species behave differently as a result - grey draconians, iron dragons, slimes, smoke demons and ophans are now fully affected by the above mechanics (unless their rPois grants them immunity in the cases of meph and curare). Grey draconians gain regular amphibiousness instead of the unbreathing flavour, removing the need for special-casing them in water. -------------------------------------------------------------------------------- a67198749c | Kate | 2021-05-09 18:45:20 +0100 Don't allow Wu Jian attacks or ripostes with nonweapons -------------------------------------------------------------------------------- 099f9bb0e8 | Nicholas Feinberg | 2021-05-07 15:58:35 -0700 New Sastreii tiles Mundane boots, Murray, Nergalle and Snorg, in that order. -------------------------------------------------------------------------------- 28e009f8a6 | gammafunk | 2021-05-06 12:36:34 -0500 Unrename a vault This vault was apparently intentionally renamed in 2394d0fb to change "ooze" to "endoplasm", but the vault never placed a monster that got renamed to endoplasm. It did place a death ooze, which got replaced with a quicksilver ooze, so the original name is still appropriate. In any case, renames should be avoided unless the old name would somehow generate confusion or a new naming format is used for a set of related vaults, neither of which is the case here. -------------------------------------------------------------------------------- 6ee8fce0c9 | gammafunk | 2021-05-06 06:37:52 -0500 Update a digging-themed vault (Lightli) The vault wad_dig_loot had a hidden diggable area with a nasty monster spawn and loot. We've moved away from having completely hidden spoilers like these, prefer our spoilery vaults to at least broadcast their uniqueness to some degree. This vault didn't do anything special with its secret area, so instead update the chamber to be visible, but introduce digging monsters at later depths. Also add Elf to the placement list, since we have a unique digging monster there, and scale the monster and loot count with depth. Now it places two 8 spawns from D:12-15, three 8 spawns in Elf, and four in Depths, with each new monster also generating another loot item. Also fix its teleport closet by marking the loot chamber no_tele_into. -------------------------------------------------------------------------------- 3ef0f4ec91 | Kate | 2021-05-05 18:47:26 +0100 Fix Ignite Blood mutation description -------------------------------------------------------------------------------- 0b992a5a9d | advil | 2021-05-03 19:40:49 -0400 fix: remove a duplicate BREATHE_POISON (12579) This led to cosmetic duplicates of this ability on the `a` screen. -------------------------------------------------------------------------------- 81dfa19a63 | dilly | 2021-05-03 17:12:53 -0400 Minor fix for gnrine It wasn't green enough. -------------------------------------------------------------------------------- 0b80122b6a | advil | 2021-05-03 15:23:26 -0400 Update sdl2-image for android builds Per #1892. -------------------------------------------------------------------------------- 0a9fa4a780 | advil | 2021-05-03 15:23:26 -0400 Update sdl2-mixer for android builds Per #1892. -------------------------------------------------------------------------------- a4d602e826 | advil | 2021-05-03 15:23:26 -0400 Bump lua contrib for android builds This updates lua and fixes some issues with android builds, per PR #1892. I'm merging this slightly differently than in that PR just to be a little more careful, these changes since other builds depend on these contribs as well. -------------------------------------------------------------------------------- 2a531a4d09 | Kate | 2021-05-03 15:52:38 +0100 Add some missing cloud descriptions -------------------------------------------------------------------------------- 715e165ca6 | Kate | 2021-05-03 15:52:38 +0100 Fix spelling -------------------------------------------------------------------------------- a7b940fc0e | Kate | 2021-05-03 15:52:38 +0100 Tweak portal timer wording They were fairly misleading - "nearby" portals were extremely close, and "distant" ones were also still quite close. Add an extra level of distinction, and use multiples of default LOS range for the differences between ranges. -------------------------------------------------------------------------------- 9b0c66ea95 | Kate | 2021-05-03 15:52:38 +0100 Make poison and miasma clouds affect unbreathing creatures again This was considered a bug when it was changed previously, however it was actually intended behaviour (and only mephitic clouds explicitly mention in their description that unbreathing creatures are immune). Unbreathing is a fairly complicated mechanic so reducing the number of things it effects is probably better, and the change also had some strange knock-on effects like making grey draconians immune to sickness, which doesn't fit flavour-wise. Revert to the original behaviour, and update some descriptions to hopefully make it clearer. This reverts commits e1f20c3b445d4e6f4d869a2e080ec252b498914c and 368d90fffdfadd77c1e5298e59cdf97a51697a67. -------------------------------------------------------------------------------- 564068e7f7 | Kate | 2021-05-03 15:52:11 +0100 Adjust potion of mutation probabilities It was very easy to reliably remove bad mutations with just a few potions of mutation due to them removing 2-4 mutations as their first effect, and to acquire a mostly or entirely positive mutation set due to the guaranteed good mutation at the end. While they should still be useful for clearing out bad mutations, the consistency was a little too high, so reduce the number of mutations removed to 2-3, and reduce the chance of adding a good mutation at the end from 100% to 50% (so that the overall number of mutations added/removed on average also remains the same). -------------------------------------------------------------------------------- 97766e7410 | Kate | 2021-05-03 12:56:04 +0100 Remove wispform's blinkitis and extra speed Random blinking was an especially annoying feature even for a form that's intended to be dangerous. The monster that the form was based on also no longer exists, so instead just make wispform standard speed (distinct from bat/pig badforms which are fast), keeping the existing downsides of most other badforms of melding equipment and preventing weapon or spell use. -------------------------------------------------------------------------------- 131cd56ac5 | gammafunk | 2021-05-03 03:40:42 -0500 Some tweaks to an ice cave map For ice_cave_azure_passage, some tweaks to the monster set and placement, and some DES syntax cleanups. For the monster set, remove shapeshifter simulacra, which are far too weak. Leave in the somewhat stronger glowing shapeshifter simulacra, and add in demonic crawler simulacra. The latter make decent lower-tier threats and fit the "aberration" theme. Also add in very ugly thing simulacra, but at half weight. These are somewhat nasty, but characters with some rC shouldn't find them too difficult. For the slime creature placement, the seven bands currently placed is excessive. Reduce this number by about half, replacing them with 2/3 chance for simulacra and 1/3 chance for quicksilver oozes. For DES syntax, reorganize to use normal monster slot glyphs where possible. Use a simpler SHUFFLE+SUBST instead of a more verbose lua conditional. Reindent statements and reorganize to have a consistent order. I've also renamed the map to ice_cave_hellmonk_azure_passage. Keeping the ice_cave prefix is good for consistency with other maps in this file, but we should include the vault author's name when possible. Closes #1933. -------------------------------------------------------------------------------- fa0a1138f8 | hellmonk | 2021-05-03 03:40:42 -0500 Slime themed ice cave. Places various Jiyva-adjacent simulacra, a few ice statues, slime creatures, and various high level slimes as the boss monsters (including a guaranteed azure jelly). -------------------------------------------------------------------------------- 2f9bb313c0 | Nicholas Feinberg | 2021-05-02 20:13:27 -0700 Zappify dispel undead (ardl) This removes a cap on damage that was added all the way back when dispel undead was first added in 0c7d47c22ef, but that, afaik, could never actually be hit except by very high HD panlords or player ghosts. -------------------------------------------------------------------------------- 2a214b436d | advil | 2021-05-02 12:09:58 -0400 fix: blanket no_tele_into for gammafunk_dig_for_victory We really need a better way to write no_tele_into KPROPs; in this case I think what probably happened is that the KPROP got out of sync with later changes to the vault, though I stopped trying to debug the details. Looking at the vault it seemed simpler to just blanket prevent teleporting into the whole thing. (Perfectly fine with me if someone wants to go back and fix the KPROP though.) I've also applied a similar tweak to passability as that in 3a4c58a182d1; while working on the tele fix I noticed that this vault would likely lead to similar connectivity issues as seen in #1909, because of the conditional CLEAR. Resolves #1812 -------------------------------------------------------------------------------- 4d8f0be3d4 | advil | 2021-05-02 11:41:47 -0400 feat: allow setting tiles window width by ratio On the previous defaults, the tiles window width was screen edge - 90 in both dimensions. This works fine on many screen ratios, but is kind of annoying (in my opinion) on an ultrawide screen. This commit provides an option to override the width setting using a ratio of the height, and makes it activated by default. When activated, the width setting is instead used as a maximum value. This has no impact on full screen mode. This can be disabled by just setting `tile_window_ratio` to 0 or a negative value, in which case the behavior is the same as before (including if you had custom values set here). I've used the golden ratio as the default value, so on a 4:3 screen you'd typically have the same default results as before, but on a wider screen the window default width will be capped. This looks (again, IMO) a lot better on an ultrawide ratio like 2:1 or greater. It would be ideal, eventually, to actually remember positioning and size. -------------------------------------------------------------------------------- 673ba79eab | advil | 2021-05-02 10:44:53 -0400 fix: cap Ashenzari scry radius at los A kobold with a scarf of shadows has a los of 3, but the ash scry radius would go up to 4 at full piety. This commit fixes at least two bugs for this case: * in all build targets, the "comes into view" messages would happen at los 4 instead of 3, even though the monster would not be fully visible (e.g. shown as a sensed monster) * in local tiles, radius 4 would be highlighted as if it were in los, but only the background tile would be drawn, not even monster memory or sensed monster icons. Resolves #1844 -------------------------------------------------------------------------------- bf574a6a6b | Kate | 2021-05-02 00:06:28 +0100 Don't allow cancelling forced blinks with Ozo's Armour (Psymania) -------------------------------------------------------------------------------- a84896973d | advil | 2021-05-01 17:17:33 -0400 fix: do hepl ancestor setup when receiving ancestor Before 9dc9f58f1f8, setting up the name prop and generating the ancestor itself were done together in _join_hepliaklqana, ensuring correct sequencing. After this commit, they were separated; this becomes an issue for monks, who get their piety bonus when joining (triggering the ancestor generation code) before the on_join function is called, leading to an empty name and crashes. Instead, ensure that the name and gender are set up any time the monster is instantiated, including the first, rather than in an on_join function. -------------------------------------------------------------------------------- 62a2e9f2fb | advil | 2021-05-01 13:04:27 -0400 fix: swap a mutation check for felids This doesn't really matter, because felids have both mutations and nothing else does, but it's good to be correct. (Also, a minor unrelated whitespace fix.) -------------------------------------------------------------------------------- 91b3acb402 | Neil Moore | 2021-05-01 01:19:45 -0400 Don't crash when the first of two ancestors dies Actually fixing up the second ancestor in tags.cc would be better, but that is tricky because one or both ancestors might be off-level, and the daction to handle that case would destroy them both. Instead, let the extra ancestor die normally, but without triggering DUR_ANCESTOR_DELAY. -------------------------------------------------------------------------------- 00726eb06d | Nicholas Feinberg | 2021-04-30 16:34:33 -0700 Fix: don't spawn hep ancestor until 1* Overlooked the code to respawn dead ancestors over time. Oops! -------------------------------------------------------------------------------- 6f521eb9b9 | Nicholas Feinberg | 2021-04-30 15:15:41 -0700 Only trigger spectral on melee (kingbuddyboy) Don't allow ranged attacks to re-trigger existing spectral weapons. -------------------------------------------------------------------------------- b2b6fe9c5e | Nicholas Feinberg | 2021-04-30 08:41:47 -0700 Show actual attack delay on @ It's not a secret! We display it in the inventory and every time that you swing your weapon - no need to add secret mystery adjectives. -------------------------------------------------------------------------------- e39799b483 | Nicholas Feinberg | 2021-04-30 08:34:29 -0700 Remove sInv from axes Pretty good targeter bug. I think ardl or dilly or someone reported this but I couldn't find the message when I looked for it again, sorry! -------------------------------------------------------------------------------- 9dc9f58f1f | Nicholas Feinberg | 2021-04-30 08:24:56 -0700 Move Hep frailty & ancestor to 1* Hepliaklqana was one of the last gods that provided a benefit at 1*. In general, the tension of having to worship for a little while before actually getting an upside from your god (assuming you haven't taken some other tradeoff, e.g. an ecumenical altar or a Monk start) tends to produce more interesting gameplay. Along with recent major Hep buffs, it seemed like it was finally time to make this change. -------------------------------------------------------------------------------- 4f6a661ab4 | Nicholas Feinberg | 2021-04-30 08:24:56 -0700 WIP hep nerf -------------------------------------------------------------------------------- 3e6434628b | advil | 2021-04-30 11:14:09 -0400 fix: reorder messaging for irradiate No need to give the blasting message for protected allies. -------------------------------------------------------------------------------- 4302cc2033 | advil | 2021-04-30 11:06:54 -0400 lint -------------------------------------------------------------------------------- 276f4da11a | advil | 2021-04-30 10:37:56 -0400 refactor: unify hepl and fedhas ally protection Historically, these allies were treated quite differently, but ab74d117c10 put them closer together by allowing some attacks to pass through ancestors. However, like the original fedhas protection implementation, this check is sprinkled all over the place leading to inconsistent behavior between special cases and reports like #1925 (deja vu for those who did the original fedhas bugfixing). This commit continues the trend by doing the checks in exactly the same places, leading to cleaner code and a more consistent set of religious ally protections. Unlike the previous commit that refactors fedhas, this commit is an expansion: hepl ally protections now cover a whole bunch of cases (various spells, clouds, etc) that weren't considered in previous commits, and hep allies should now be immune to all sorts of area spells like refrigeration. But it is much cleaner from the player's perspective, and code perspective, to give these two cases exactly the same protection, once shoot-through is allowed for ancestors in the first place. One awkward case I am still aware of is OoD behavior, where the ancestor is protected from damage but seems to block the orbs (with or without a shield). In the long run it would be nice to continue generalizing this code to cover demonic guardians, conj projectiles, etc., but the more general it is, the harder it is to get the messaging right for all cases, so I aborted trying to do that for now. Resolves #1925 -------------------------------------------------------------------------------- 7b2b3e46e3 | advil | 2021-04-29 18:13:46 -0400 refactor: abstract some common fedhas code The code to check whether Fedhas protects an ally is repeated in a number of places in a way that is a bit error-prone (in fact, most cases seem to not be handling all the attitude possibilities). This commit abstracts this into a common location with some relatively simple way to call it. This could be even more abstracted into something that covers non-god cases that often show up nearby fedhas checks (e.g. demonic guardian). I actually started to do this and it's trickier than it seems, though. -------------------------------------------------------------------------------- 946c659c87 | advil | 2021-04-28 11:35:29 -0400 fix: disable cleaving during fsim I'm not sure if this is new or old (but I'm surprised to see no reports about it if the latter), but right now, if you fsim with a cleaving weapon while adjacent to a real monster, the real monster takes damage (and may die, grant xp, etc). Probably it would be nice to somehow have a way to factor in cleaving to fsim, but this isn't it. So, simply disable it for now. -------------------------------------------------------------------------------- bc3fc7707e | advil | 2021-04-28 11:09:56 -0400 fix: disable decapitation during fsim 910b67f9770a fixed the main case for #1917, but it was still possible to trigger a crash by fsimming directly against a one-headed hydra. To handle this, disable decapitation insta-kills for simulated attacks. (Arguably, it might be better to accurately represent the damage involved in an insta-kill, but this is a lot simpler.) -------------------------------------------------------------------------------- 910b67f977 | advil | 2021-04-28 10:23:24 -0400 fix: save head count across fsim rounds This restores the head count after a single fsim round. It's possible that some people were using the simulation of head growth, but allowing head growth or cauterization makes the calculation across rounds against hydras pretty unreliable (and leads to crashes). It's of course possible to specify head count in the monster spec for people who want to test particular cases. Resolves #1917 -------------------------------------------------------------------------------- 38810cc1a4 | advil | 2021-04-28 10:12:12 -0400 fix: handle tab at weapon select menu This was simply missing a `break` in the custom menu code for handling the case; focus cycling was being correctly overridden. Resolves #1339. -------------------------------------------------------------------------------- e311f74bc8 | gammafunk | 2021-04-27 20:19:57 -0500 Some cleanups for a volcano map For hellmonk_smoking_crater, slightly increase the number of upper-tier monsters, adding one more on average over two locations. This map feels on the easier side unless you rush in quite recklessly, and it doesn't have the usual cloud gimmicks to try to "force" players to a particular area. Increase the chance of cloak of the thief to be something a player might actually see over the course of many games. Reglyph the vault to not override pre-defined glyphs, and clean up syntax and spacing. Closes #1929. -------------------------------------------------------------------------------- e4e9b07c1e | hellmonk | 2021-04-27 19:42:56 -0500 New volcano map with a smoke/steam theme. Places a highly variable number of monsters; lots of steam dragons. Loot includes a couple of fog scrolls or cloak of the thief (rarely). No eruptions. -------------------------------------------------------------------------------- 7f87ac42b0 | Kate | 2021-04-27 21:52:28 +0100 Remove some duplicated artefact checks Elyvilon being prevented from being named on */+Rage items was redundant since weapons aren't eligible to be named after Ely, and -Cast conflicting with rings of fire/ice/wizardry/MP was also redundant since -Cast can only appear on armour and amulets. Moves a couple of other checks back to _artp_can_go_on_item rather than _randart_is_conflicting. -------------------------------------------------------------------------------- f2daf0da32 | Kate | 2021-04-27 21:52:19 +0100 Adjust some more artefact restrictions Prevents -Cast and +MP on the same artefact, and prevents Trog from gifting items with +Int. Also adjusts which item types can be named after which gods - quick blades can now be named after Chei (since they're no longer a hated item), and non-weapons can't be named after Trog. -------------------------------------------------------------------------------- 71c9e0f10e | Kate | 2021-04-27 21:47:49 +0100 Mark a teleport closet as no_tele_into In onia_ninara_dug_in_and_dangerous. -------------------------------------------------------------------------------- 7bfb9e8c44 | advil | 2021-04-27 12:27:26 -0400 fix: correctly check antimagic brand conflicts for randarts The `get_weapon_brand` call here simply doesn't work, returning SPWPN_NORMAL. I think this is because the brand prop is not yet set up on `item` (past a point I stopped trying to figure out exactly what the problem was). Possibly this check should be in `_is_randart_conflicting` anyways? I was able to replicate this in 0.25.1 with the seed from @Goratrix in the issue: resolves #1322. -------------------------------------------------------------------------------- 7ea0e0ed02 | advil | 2021-04-27 12:04:48 -0400 fix: remove "Power" from rand_wpn.txt This is generally confusing with the unrand sword of Power, and can actually in rare circumstances generate e.g. "the great sword of Power" (I just saw this in a test game). -------------------------------------------------------------------------------- fbe13134a7 | advil | 2021-04-27 10:25:08 -0400 fix: always announce xom chaos branding The message ordering when Xom granted an item and "upgraded" it to chaos was confusing, because the item was announced before the brand took effect. (I suspect this changed at some point.) Rather than try to work out how to fix the message ordering, this commit leans into this effect and just announces the change after the item generates (still letting the player know what they would have gotten). It's still not very explicit about removing the old brand, but hopefully this will be clear enough. Also: * Standardize Xom's chaos upgrade using the same message as in regular branding. Possibly more boring, but also more predictable. * Clean up some code for Xom upgrading ally weapons. Resolves #1865 -------------------------------------------------------------------------------- 3287b30435 | advil | 2021-04-27 10:25:08 -0400 fix: check form in player::could_wield Other checks (e.g. size, handedness) mostly conspire to cover this case already, but this fixes some UI issues for giant forms when the player normally can't wield giant weapons. As a side effect, it does mark all weapons as useless when in a non-wielding form, but if this is a problem, the fix would be to adjust the ignore_transform parameter from the caller. (This might lead to other issues though if any forms narrow the wield restrictions. But I'm not sure they do.) Resolves #1889 -------------------------------------------------------------------------------- 6e592c6ea3 | advil | 2021-04-27 10:25:08 -0400 fix: annotate staves with {weapon} These are not technically weapons, which is why this has to be done manually, but from the player's perspective that distinction is not particularly helpful -- I think the player will expect anything that can be wielded, used in attacks, etc to show up when doing a stash search for "weapon". Resolves #1907 -------------------------------------------------------------------------------- 986d5f5408 | gammafunk | 2021-04-27 04:55:24 -0500 Rework the Jungle Book Lair ending The map due_jungle_book is memorable, but uses a spoilery lua death trigger. Killing the sole anaconda found on the map causes random green elephant statues to "come alive" as dire elephants. We do have lua spoiler vaults at various places in crawl, but it's best to not feature these in a common Lair ending. Furthermore this effect doesn't result in very interesting gameplay relative to how much of a spoiler it is. One of the most common tactics is grabbing loot, teleporting out, and ignoring most of the spawned monsters. This commit reworks the vault to have a strong undead theme, adding in the relatively underused necromancer monster and its Bind Soul ability to pull off "on death" effects with better gameplay and less spoilers. Necromancers get a band of living beasts, mostly elephants but with death yaks and cane toads mixed in. We also mix in bands of thematic skeleton, zombie, and spectral monsters throughout the vault, including a spectral version of the old "Kaa" anaconda. Monster encounters are now spread out so that none of the various vault chambers are empty, which was a problem with the old vault. Overall there are fewer dire elephants, since the previous vault placed too many, but they still feature prominently in the largest loot chamber and can appear in their derived undead forms elsewhere in the map. The guaranteed piece of loot that previously required burning trees is now guarded by an obsidian statue. This loot has a necromancy theme, being one of such items as a high quality pain or draining weapon, shadow dragon scales, an artefact ring of positive energy, an artefact amulet of regeneration, or a necromancy themed book. The necromancy-themed unrands Sceptre of Torment, Morg, Cigotuvi's Embrace, Sword of Zonguldruk, and Majin-Bo all have a chance to appear as this loot item, although each with low chance. -------------------------------------------------------------------------------- b115f176c6 | Nicholas Feinberg | 2021-04-26 17:47:03 -0700 Truly unique new tiles (Sastreii) Rupert gettin ripped and Frederick gettin mean. -------------------------------------------------------------------------------- 09c2292e34 | advil | 2021-04-26 19:26:14 -0400 fix: prevent -cast and +int (kate) This also seems like a case where these properties should conflict. Also, move the conflict check from a8074f5 to a more natural place. -------------------------------------------------------------------------------- a8074f570f | advil | 2021-04-26 18:02:10 -0400 fix: prevent RegenMP with -cast Inspired by: https://www.reddit.com/r/dcss/comments/myz00g/my_candidate_for_the_most_useless_ artifact_ever/ This combo is amusing but also pointless enough that I think it is worth filtering out, similar to antimagic + MP. -------------------------------------------------------------------------------- f39c287674 | Kate | 2021-04-26 21:00:15 +0100 Redraw agrid on gaining the silence aura mut (#12577) -------------------------------------------------------------------------------- 3a4c58a182 | advil | 2021-04-26 11:30:35 -0400 fix: adjust connectivity for gammafunk_its_a_trap This should only be marked `passable` in vaults; because of the conditional SUBST for - it is potentially one-way outside of vaults and can generate connectivity traps as well as actual traps. I replicated this behavior using seed 12239598491091230555 at version 407484c in Snake:3, from the game shown in #1909. Resolves #1909. -------------------------------------------------------------------------------- f0060e8222 | Kate | 2021-04-26 08:47:18 +0100 Make Repel Missiles unablatable Repel Missiles having a power-dependent chance of ending after repelling something was an important feature for the player spell, but not relevant on on the few monsters with rMsl (and would only trigger rarely even for them). With the player spell gone, remove that extra layer of complication. -------------------------------------------------------------------------------- 78b3836a5f | Kate | 2021-04-26 02:30:25 +0100 Refactor disease to be a standard duration Disease is no longer a widespread status effect and only shows up in the Abyss from ancient zymes, so doesn't need so much special handling. Turn it into a normal duration (with recovery rate no longer affected by the player's regeneration rate), and make it dispellable instead of being healable with potions of curing. -------------------------------------------------------------------------------- cf8293e1eb | Kate | 2021-04-25 22:55:09 +0100 Fix pluralisation of pieces from Xom's chessboard And any future things from other things. -------------------------------------------------------------------------------- 8197cbaaf9 | advil | 2021-04-25 13:37:03 -0400 fix: correctly handle hand names ending in `e` (celly00) Prevent "It is a one-tentacleed weapon". -------------------------------------------------------------------------------- e8a0a9c698 | gammafunk | 2021-04-24 21:31:59 -0500 Fix a typo (Yermak) -------------------------------------------------------------------------------- 99ddfe5caa | gammafunk | 2021-04-24 21:17:56 -0500 Don't have burned demonic trees release demons This behaviour creates a disincentive problem similar to the one that orcish idols had when destroying those caused smiting: it would practically never be worth it to intentionally burn a demonic tree. Although creating a chaos cloud doesn't do much in terms of gameplay, having that alone is better than creating destruction disincentives. This commit removes the demon summoning part, but keeps the chaos cloud aspect. There might be room for more monster-activated behaviour, similar to how Awaken Forest works (and that effect does work normally on demonic trees). The challenge with monster-activated behaviour will be that demonic trees have limited distribution, even in the abyss. -------------------------------------------------------------------------------- a652b1bed6 | gammafunk | 2021-04-24 21:17:56 -0500 Update visuals of an Abyss-themed ghost vault For gammafunk_ghost_abyssal_escape, incorporate the new demonic trees into the the vault border. Also randomize the border walls more, incorporating crystal and metal, similar to how Abyss wall ranomization happens. Add a "ruined" floor tiling around the vault for some nice visual effect and to help the glass and demonic trees have floor tiles that seem a bit more logical. Choose a floor color that blends with the the branch-specific floor tile color, when that's possible. The effect is subtle in most branches, but it's especially nice for Shoals, where the sand tile is somewhat bright, so we'd like to use a more matching color. Somewhat increase the trees used in walls for Swamp, since they're still pretty sparse for spriggan druids' purposes even though we replace some of the interior rock with trees. -------------------------------------------------------------------------------- 0d77da13b5 | Nicholas Feinberg | 2021-04-24 08:26:24 -0700 Salamander tweaks (Sastreii) - New tiles for base Salamanders, Mystics and Tyrants. - Remove tyrant weapon use; this wasn't used and wasn't displayed on tiles. -------------------------------------------------------------------------------- 246ed28529 | gammafunk | 2021-04-24 03:40:15 -0500 Fix up a Lugonu altar vault For the altar vault amcnicky_altar_lugonu_corruption, use rock instead of stone, since we're using Abyss rock tiles and recolouring stone stends to be more problematic. Don't use console colours that would confuse the features with other types of walls. Also, when the vault places in Swamp, use the newly introduced demonic trees instead of rock, for a more Abyss-themed feel. -------------------------------------------------------------------------------- ec5411427b | gammafunk | 2021-04-24 03:40:15 -0500 Add demonic trees (Sastreii) A new type of tree appropriate for the Abyss and Pan. When ignited, it releases a durably summoned hostile demon and leaves a clouds of chaos. The demon has a chance to be a greater demon based on the depth of tree placement. The chaos clouds are single tile chaos clouds with somewhat long duration, but don't spread like forest fires. We now place these as the default tree type in both Abyss and Pan. These trees work normally in terms of being awoken and susceptibility to fire/lightning bolts. They have a set of very creative tiles, courtesy of Sastreii, a description, as well as a description of their unique burning behaviour. -------------------------------------------------------------------------------- 6f9b4697ca | gammafunk | 2021-04-24 03:40:15 -0500 Describe burning mechanics in tree descriptions Put basic details about tree and mangrove burning in their descriptions, using a common entry for both types. -------------------------------------------------------------------------------- f074c5909a | gammafunk | 2021-04-24 03:39:39 -0500 Refactor descriptions of terrain modifiers Currently the awoken status for trees is handled as a pseudo terrain type in terms of descriptions by adding an "awoken" prefix to the feature name. This means each possible type of awoken tree needs its own unique description entry. This commit handles awoken and summoned (temporary terrain) descriptors similarly to how we handle icy walls. Now they print as descriptors after the main feature name, and can pull in a common entry for the detailed description show under x-v. -------------------------------------------------------------------------------- 76f056063d | gammafunk | 2021-04-24 03:38:09 -0500 Move mangroves back to their own feature type Mangroves were made normal trees in 7a9dbbb8 when trees were made fully opaque, instead of requiring two to break LOS. However multiple gameplay differences remain between trees and mangroves, namely they don't spread forest fires and they leave shallow water after destruction. Having them be normal tree features but with the behaviour conditioned on location complicates documenting these differences for the player. It also complicates their usage in other areas, since they'll be mangroves in appearance only, and will not do any of the usual mangrove things. It's far more straightforward to have features with gameplay differences be properly distinct feature types, hence this commit restores mangroves to their own type. The handling for flame clouds and leaving water is conditioned on the original feature being a mangrove, not its being a tree in Swamp. I've also added a mangrove feature description that mentions mangrove differences. This change does bring some complications. For vaults, we condition the default meaning of the 't' glyph by branch, so that mangroves are the default definition for any vault placing in Swamp. Vault authors can still use a KFEAT to get whichever type of tree they need. For save compat, we add a minor version that converts all normal trees to mangroves in Swamp. For vaults, I've gone through and modified the few vaults using mangrove tree tiles outside of Swamps to use proper mangrove trees. -------------------------------------------------------------------------------- c0a873f3f4 | gammafunk | 2021-04-24 02:03:48 -0500 Fix grammar handling of Zot trap descriptions Zot traps having an upper-case first character broke the description database lookup and gave inconsistency with other feature descriptions, showing "Zot trap" instead of "a Zot trap". Update the grammar function to have an option to ignore case, allowing articles to be added for upper-case phrases and use this for Zot traps. Also refactor some feature description code to no longer have special cases for mechanical traps and abandoned shops that are properly converted to distinct feature types. -------------------------------------------------------------------------------- a85bd9520d | advil | 2021-04-23 19:13:31 -0400 docs: Document force_more_message vs runrest_stop_message These work completely independently, but this was not a very obvious fact from the documentation. I think in the long run I'd prefer to change this, but it's non-trivial to do, so for now at least make the situation clear. -------------------------------------------------------------------------------- e4650c3cbe | advil | 2021-04-23 19:05:12 -0400 refactor: remove some more hunger references -------------------------------------------------------------------------------- 97754add85 | advil | 2021-04-23 18:28:02 -0400 Add portal alerts to default runrest_ignore These not being here is almost certainly one reason for reports of people missing these. -------------------------------------------------------------------------------- 1d5596e97f | advil | 2021-04-23 18:26:05 -0400 Add zot clock alerts to default runrest_ignore It seems that this is entirely independent of force_more_messages, so these need to be in both places. -------------------------------------------------------------------------------- 8b38eeb0f3 | advil | 2021-04-23 17:50:05 -0400 Force-interrupt all delays on zot clock messages One factor in the death in 12569 is that when you have `explore_auto_rest = true`, and start autotravel, it uses the delay interrupt options for `interrupt_travel` rather than `interrupt_run`, which does not include messages. It seems pretty reasonable that the zot clock alerts should just interrupt anything, regardless of configuration, which sidesteps this issue. -------------------------------------------------------------------------------- 29160eaed2 | advil | 2021-04-23 16:08:33 -0400 Mark diamond obelisks as not a threat The only effect of this should be allow ghouls / bloodless vp to heal with obelisks in sight. Their effect is via clouds, which should still prevent autotravel etc. Also, remove some tornado dprf spam. Easy enough for someone adding tornado to put in temporarily if needed later. Possibly resolves mantis 12569, but not any hepl bug (such as #1747). That is, I suspect 12569 was not actually hepl related, but that there is another similar hep bug. -------------------------------------------------------------------------------- e809cff456 | Edgar A. Bering IV | 2021-04-21 21:32:36 +0300 update CREDITS.txt -------------------------------------------------------------------------------- 0c245655db | Edgar A. Bering IV | 2021-04-21 20:55:09 +0300 Remove food(.des) food.des housed the guaranteed food vaults, which after the removal of food simply became a part of the minivault pool. This moves most of them to mini_monsters.des. The spriggan baker becomes the spriggan hatter, placing hats and occasionally a skinned spriggan corpse (yikes!). The "fruiting plant" subvaults are removed (they had a TODO asking for flavour without food). Vaults that use them are adjusted. One vault that was a notorious and spoilery autoexplore trap is removed. Another, with jelly flavour, is removed. The flavour wasn't strong without being able to place royal jellies, and without players eating at all the side-by-side jellies eating the door and a ration for the player is also lost. -------------------------------------------------------------------------------- a35ceff83e | Edgar A. Bering IV | 2021-04-21 19:59:13 +0300 Fixup some Nemelex overflows (Yermak) -------------------------------------------------------------------------------- 9982866e19 | Edgar A. Bering IV | 2021-04-21 17:01:56 +0300 Revert "Prevent bounced bolts from escaping LOS" This reverts commit 4a294289ab1eb94c2edadeffdf97aeacee0a300f. This approach to clamping had some weird unintended consequences for the fire/steam/water interaction. Addressing them correctly and consistently seems rather challenging from the current way the beam code is written. For now I'll roll this back, perhaps in the future a better solution to prevent out of LOS attacks will be found. -------------------------------------------------------------------------------- 781257ad05 | Edgar A. Bering IV | 2021-04-21 16:51:51 +0300 Reword Vampire regeneration (Shummie) -------------------------------------------------------------------------------- cb85b5eba1 | Edgar A. Bering IV | 2021-04-21 00:06:50 +0300 Don't crash when aimed_at_spot the player can't see -------------------------------------------------------------------------------- 88d13c5596 | Kate | 2021-04-20 21:31:45 +0100 Free Hepliaklqana ancestors from the gender binary And allow them to start out as GENDER_NEUTRAL in addition to it being selectable when recalling identity. -------------------------------------------------------------------------------- 079d617196 | Edgar A. Bering IV | 2021-04-20 23:14:54 +0300 Fix a Hepliaklqana message (12568) -------------------------------------------------------------------------------- 151369d6e4 | Nikolai Lavsky | 2021-04-20 22:58:36 +0300 Further fix webtiles display of defense boosts After fc3203cb, defense boosts provided by the "acrobat and divine shield are no longer coloured blue. This is because unlike other boosts, these two are handled separately in `tileweb.cc:_update_statuses()` and don't use `short_text` strings from duration-data.h. Fix this by updating `short_text`s in `_update_statuses()`. Also, fix colouring of corroded AC and weapons on the HUD. -------------------------------------------------------------------------------- 4a294289ab | Edgar A. Bering IV | 2021-04-20 22:31:56 +0300 Prevent bounced bolts from escaping LOS The targeter does a good job of guaranteeing player bolts don't have an initial target out of LOS, but bounced bolts can escape. Explosions can also explode in order to reach outside of LOS; clamping down on those would need to be done elsewhere. -------------------------------------------------------------------------------- 3be03a2e56 | AlexanderPosch | 2021-04-20 10:34:38 +0300 Don't reduce the bounce range of spells with items Resolves #1800. The code checks how long a bounced spell would have been if los had not been restricted and then increases the range of bounced the spell. (Kobolds nightstalker mutation does not count as a los restriction). [ Committer's note: Closes #1885. Squashed and rebased. Re-wrote some checks based on the change to how mutations interact with normal vision. Changed the range display to always display the normal-vision range (the symbol strings are rather cryptic, and the UI communicates things well enough with beam path highlighting). Re-wrote the commit message; adjusted style to fit our style guidelines. ] -------------------------------------------------------------------------------- 8b510267b1 | Edgar A. Bering IV | 2021-04-20 10:34:38 +0300 Reduce explicit species checks: barachi Create a MUT_DAYSTALKER as a + counterpart to MUT_NIGHTSTALKER to replace Ba's LOS fakemut. -------------------------------------------------------------------------------- 5a55d11bb6 | Edgar A. Bering IV | 2021-04-20 10:34:38 +0300 Make Nightstalker adjust base LOS This affects halo and umbra scaling only; everywhere else current_vision is used (which already applied nightstalker). These have always been species mutations but predate the concept of a variable base los. -------------------------------------------------------------------------------- 1420032b4b | Kate | 2021-04-20 07:41:44 +0100 Refactor immunity display on % Adds generalised handling for immunity to replace the current rPois special-casing, and uses it to also display infinite willpower (in shadow form) and infinite rampaging (with the seven-league boots). Closes #1920. -------------------------------------------------------------------------------- 288ea87c7c | Kate | 2021-04-20 06:59:06 +0100 Mark scarves of invisibility as useless with Sac Artifice (#12486) -------------------------------------------------------------------------------- 551b87177e | gammafunk | 2021-04-20 00:57:46 -0500 Have soul bound monsters always create simulacra The monster Bind Souls spell currently only creates simulacra if the monster rolled successfully for the chance to leave a corpse. This is an aspect of how the old version of the spell directly consumed corpses, which closely mirrored the player Simulacrum spell. However Bind Souls isn't trying to have symmetry with the player spell; in fact the two spells don't have same name. The corpse requirement only serves to weaken the most distinctive ability of the necromancer monster, which isn't very dangerous at the depths in which it appears. This commit has a simulacra always be created when a monster dies with the Bind Souls enchantment active, giving Bind Souls and by extension necromancers a buff. -------------------------------------------------------------------------------- 450f9b2e0d | gammafunk | 2021-04-19 19:14:50 -0500 Fix an artefact amulet equip crash (Skunz) Now that Regen+ can appear on amulets as of bf8bb431, the artefact equipment code needs an update to not assume an artefact with the regen artp must be armour, which results in a crash. This code is to prevent double messaging in cases of e.g. moon troll leather armour that also has a regen property. This currently can only happen for unrands, since the regen artp doesn't allow multiple levels for randarts. While there currently is no unrand regen amulet with regen++, this commit adds the relevant check for amulets in order to future-proof things. -------------------------------------------------------------------------------- 7ee7857c10 | Edgar A. Bering IV | 2021-04-19 19:09:15 +0300 docs: changelog through 0.27-a0-1047 -------------------------------------------------------------------------------- c940c042cb | advil | 2021-04-19 10:28:14 -0400 fix: check is_stationary in _can_movement_ability (alex1729) The practical effect is that this commit applies DUR_LOCKED_DOWN to rolling charge and hop, where before they were exempt despite being movement-like. I think this was just an oversight, rather than intentional? Before this duration existed, is_stationary just checked treeform, which would have disabled these abilities anyways. -------------------------------------------------------------------------------- 98bf31544f | Nicholas Feinberg | 2021-04-18 11:48:46 -0700 Make guardian golem inner flame trigger consistently Moderate buff to a spell generally considered weak. -------------------------------------------------------------------------------- 1e905a0851 | Nicholas Feinberg | 2021-04-18 11:48:46 -0700 Properly credit guardian golem explosions They were being attributed to the dead monster, not to the hexer, which resulted in the player not getting XP for kills from the explosion damage itself (though they did get credit for any cloud kills, oddly). -------------------------------------------------------------------------------- 2b6ed4f61c | RojjaCebolla | 2021-04-18 21:15:58 +0300 Add Poisonous Vapours to Veh's spell gifts table This helps ensure Ignite Poison can be put to use, and helps with the fact that there are extremely few 2nd-level spells for Vehumet to choose from. [ Committer's note: Closes #1880. This also gives Veh's wizardry bonus to the spell, which is fine because it is destructive! ] -------------------------------------------------------------------------------- c275e32347 | Edgar A. Bering IV | 2021-04-18 21:15:37 +0300 Nerf Makhleb heal-on-kill (cebolla, kate-) This passive is runaway strong and outshines Makhs shiny actives. On every kill that passes the piety threshold (random2(you.piety) >= 30) (at high piety more than 80% of the time) give up to 2 * monshd, on average 3/2 * monshd. In lair, when characters are often around 100 hp a death yak heals for an average of approximately 20% health(!). This commit halves the value of each heal replacing hd + random2(hd) with (1 + hd) / 2 + random2(hd / 2); rounding up always for the base so that something happens when the effect is triggered. [ Resolves #1878 ] -------------------------------------------------------------------------------- 1f2d7d2970 | RojjaCebolla | 2021-04-18 21:15:37 +0300 Improve Makhleb's Major Destruction Remove the non-bolt targeted zaps: the explosions (orb of electricity and fireball) could be unfortunate surprises not previewed by the targeter; the projectiles (sticky flame and iron shot) likewise could be surprises, though of a more subtle kind. In their place, in a parallel with minor destruction, add magma bolt and corrosive bolt zaps. Unlike minor destruction, where acid breath requires special power scaling, each of these zaps has a reasonably close damage averages (though the variances are all over the place; fine for a chaos spell). Major Destruction's power computation was exactly the same as Minor Destruction, topping out at a paltry 81 power on a max roll. Comparing the dice definitions for zaps, this meant Major Destruction was on average only approximately twice the damage of Minor Destruction. With the high variance (power randomization, zap randomization, then damage roll) it didn't feel worthy of the significantly higher cost in training, hp, and piety. This commit doubles the spell-power for Major Destruction zaps. With the exception of lightning bolt the Major Destruction zaps are all lower variance than the Minor Destruction counterparts, so this should feel much stronger at high Invocations. [ Committer's note: Re-wrote commit message; tweaked power formula and zap list. Closes #1879. ] -------------------------------------------------------------------------------- 8915be9327 | Edgar A. Bering IV | 2021-04-18 21:15:37 +0300 Describe the ancestor's special shoot through properties. -------------------------------------------------------------------------------- ccdeed5ca2 | Edgar A. Bering IV | 2021-04-18 21:15:37 +0300 Remember friendship (PleasingFungus) Allow the Hepliaklqana ancestor to shoot through the player, symmetric with the player's ability. -------------------------------------------------------------------------------- ab74d117c1 | sdynet | 2021-04-18 21:15:36 +0300 Allow projectiles to pass through ancestors This change will slightly break Hep's balance, but instead I expect that the player's management QoL will be much better. [ Committer's note: tweaked where the check goes. Closes #1835. ] -------------------------------------------------------------------------------- 2e39039ceb | Edgar A. Bering IV | 2021-04-18 21:15:36 +0300 Adjust demonic guardian protections Allow firing enchantments through them and protect them from chain lightning. Fedhas plants have (unintentionally) had these protections for 6 years without trouble, so it's better to extend them to guardians as well instead of changing the Fedhas behavior. -------------------------------------------------------------------------------- 74cc72d83b | Nicholas Feinberg | 2021-04-18 08:45:31 -0700 Don't give djinni stone/bone legs New tiles for lichform/statue form, irrespectively. -------------------------------------------------------------------------------- 8e1b44f6bd | Kate | 2021-04-18 04:48:17 +0100 Remove an unused ability description -------------------------------------------------------------------------------- c9ac73bf2f | Kate | 2021-04-18 04:48:17 +0100 Tweak Palentonga charge ability description To match wording of other abilities. -------------------------------------------------------------------------------- b38debd254 | Kate | 2021-04-18 04:48:17 +0100 Refactor Word of Chaos Fixes word of chaos being usable while silenced (via the quiver), and improves the timing for ability failure. Also improves behaviour around invisible monsters and monsters that would always be unaffected. -------------------------------------------------------------------------------- 943f6fbcab | Kate | 2021-04-18 04:48:17 +0100 Adjust descriptions for some DS mutations -------------------------------------------------------------------------------- 21ed115f35 | Kate | 2021-04-18 04:48:11 +0100 Simplify player torment immunity checks -------------------------------------------------------------------------------- 4f73a2ec51 | Kate | 2021-04-18 04:47:31 +0100 Simplify Demonic Will handling -------------------------------------------------------------------------------- 0ecb5ae1e9 | Kate | 2021-04-18 02:27:54 +0100 Fix Pan lord pronouns Currently the unique Pan lords all use they/them - the rune announcement messaging will need some extra handling if any of them are changed. -------------------------------------------------------------------------------- eef1433cc0 | Kate | 2021-04-18 02:27:54 +0100 Announce Pan floors with a guaranteed demonic rune The guaranteed demonic rune vaults are all easily recognised for spoiled players, and it's also a lot more fun to encourage getting the rune from one of them compared to a standard random pan lord, so add a message announcing their presence similar to the one that already exists for holy Pan. -------------------------------------------------------------------------------- 0ab3ac089c | advil | 2021-04-17 18:22:59 -0400 fix: extra qualifier for mutation check in 3cb69ffe5362 Shouldn't matter, just adds a bit of safety. -------------------------------------------------------------------------------- 3cb69ffe53 | advil | 2021-04-17 18:18:28 -0400 fix: more general code for species mutation fixup This will more consistently remove species mutations fixed up this way if they shouldn't be there, as well as add them if they should. This code is still not very general (in principle this should be readable off of the species def, but it's tricky to get that right for all cases), and doesn't handle ds muts. -------------------------------------------------------------------------------- bab068f60c | advil | 2021-04-17 17:35:15 -0400 fix: Add generic fixups for four dj innate mutations These are dj-specific so it should be safe to have these fixups. These mutations may be affected on a small number of games on cko impacted by the recent ds mutation bug. -------------------------------------------------------------------------------- c56cccb18a | advil | 2021-04-17 16:28:18 -0400 fix!: reorder demonspawn mutations added in #1852 Commits in that PR added new mutations to the middle of the enum; this has save compat consequences because this enum is serialized as an int. This is a bit of an emergency fix to prevent further breakage; the commit has already gone live on cko, and save compat will get even worse for impacted games, but we really need to keep this from impacting other servers. -------------------------------------------------------------------------------- 5bb4860596 | Neil Moore | 2021-04-17 15:48:53 -0400 Clarify that whitespace fixes should be separate from real changes [skip ci] -------------------------------------------------------------------------------- 72157e4a48 | Neil Moore | 2021-04-17 15:20:49 -0400 Link to coding conventions from contribution-process.md [skip ci] -------------------------------------------------------------------------------- fe178dfb49 | hellmonk | 2021-04-17 19:52:18 +0300 Clean up some facet selection checks. It would be nice to remove the gotos here. Alas, [ Committer's note: Closes #1852. Rebased, squashed some things, fixed up whitespace and braces. Used MUT_TORMENT_RESISTANCE instead of altering the behavior of STOCHASTIC and having a separate mutation. Tweaked the verb for word of chaos to not suggest divinity. ] -------------------------------------------------------------------------------- cd13395478 | hellmonk | 2021-04-17 19:52:15 +0300 New "Demonic Will" mutation for the damnation facet. This mutation provides Will+ and additionally deals a small amount of retaliatory damage whenever the player beats a monster's will check. This replaces rF+ as the first rank of the hurl damnation facet; the facet is now will/res torment/hurl damnation. The theme is something like becoming a brimstone fiend. -------------------------------------------------------------------------------- 496972007f | hellmonk | 2021-04-17 19:52:15 +0300 New corruption/chaos themed demonspawn tier 3 facet. The facet begins with two stages of MUT_CORRUPTING_PRESENCE, which has a small chance to apply corrosion (at either rank) or malmutate (at rank 2 only) any monster dealt damage by the player. It does not require the player to use melee to get the effect, but triggers less frequently than black mark. At rank 3, grants MUT_WORD_OF_CHAOS, an active ability that forcibly blinks away every monster in los and additionally may ensnare, slow, or fear them at the cost of medium draining and a cooldown. -------------------------------------------------------------------------------- 02609334a0 | Edgar A. Bering IV | 2021-04-17 19:52:14 +0300 Give torment resistance at level 2 of the damnation facet -------------------------------------------------------------------------------- 1916af9b50 | Edgar A. Bering IV | 2021-04-17 19:52:14 +0300 Remove the stochastic torment resistance mutation It's removed from the black mark facet and not slated to be added to any of the demonspawn facet re-works. hellmonk suggested making this mutation deterministic and give 50% resistance, to be used in future demonspawn. This is already done by MUT_TORMENT_RESISTANCE level 1 so there's no need to re-create the effect. For save compatibility the old mutation applies the new effect. -------------------------------------------------------------------------------- 7767df9f8c | hellmonk | 2021-04-17 19:04:58 +0300 Rework the black mark facet. Formerly negative energy themed, this facet was relatively weak. This rework keeps the most interesting mutation and tries to build something new around it. The new facet is debuff oriented and provides a hex enhancer, followed by black mark, then a permanent 1 tile silence "donut" aura, providing a wide variety of debilitating effects for the player. -------------------------------------------------------------------------------- aeb4ca5a24 | hellmonk | 2021-04-17 19:04:58 +0300 Rework the hurl damnation ability's power scaling. Previously, hurl damnation used experience level * 10 to determine power. Power is capped at 200, which was reached at xl 20 - frequently before the player had the mutation. The new formula is 40 + experience level * 6, which reaches 200 power at max level and is otherwise weaker unless received implausibly early. -------------------------------------------------------------------------------- fc7557d7ac | hellmonk | 2021-04-17 19:04:58 +0300 Add passive freeze to the generic mutation pool. Perhaps it would be interesting here, where it's not a facet payoff. I think it's worth a try, at least. -------------------------------------------------------------------------------- 53199a3a11 | hellmonk | 2021-04-17 19:04:58 +0300 Remove passive freeze facet. It was notoriously bad and had significant mechanical overlap with spiny. Not worth saving. -------------------------------------------------------------------------------- 066d056d8b | Goratrix | 2021-04-17 08:00:24 -0700 Add variety to boots tiles This adds back the boots tiles which were replaced in b2ee965 and enables variation between the tiles, same as already exists for robes and helmets. -------------------------------------------------------------------------------- 15b55ab828 | advil | 2021-04-17 10:59:39 -0400 docs: fix a typo -------------------------------------------------------------------------------- 9a371d6b8d | advil | 2021-04-17 10:57:51 -0400 docs: Document some commit conventions There's a bunch of pitfalls that I see coming up in PRs again and again to do with commit messages, and this tries to make them explicit. My aim here is to document conventions that we do have, but that are often unstated or only stated in chat / PR feedback -- but if anyone feels that I got things wrong or too prescriptive here I'm happy to be corrected! -------------------------------------------------------------------------------- ae19ba6e15 | advil | 2021-04-17 10:35:05 -0400 docs: convert coding conventions to markdown This is much more readable as markdown because of the many code blocks, and it also lets the document have a working table of contents. There were a number of minor formatting changes throughout, with some small content changes, including (i) adding a brief why/TLDR version towards the beginning, (ii) mentioning the checkwhite/unbrace scripts explcitly, (iii) documenting some of the more mechanical spacing rules. -------------------------------------------------------------------------------- f0a3ee54a8 | advil | 2021-04-17 09:30:34 -0400 fix(tiles): Skip pre-layout message rendering This is basically a followup to 5a74e75d8f72. Those crashes in local tiles revealed that the message window is getting rendered before tiles has a layout, so the message window is width 0; this is basically harmless but triggers pathological linebreaking behavior that it's better to skip (and has the potential to trigger rendering glitches, though I don't think it will currently). Re the removed comment there: I have verified that the current wrapcprint behavior should prevent infinite loops even with width 0, as long as linebreaks are correctly added; the loop will always abort if it runs out of y space. The bug in cfdca905f5 involved failing to correctly add a linebreak. So restoring the wrapcol ASSERT should be unnecessary. -------------------------------------------------------------------------------- 407484c6a7 | gammafunk | 2021-04-17 03:25:12 -0500 Rework monsters in a lemuel castle vault The vault lemuel_castle_with_subvaults has monster placement that's not much been updated, and still has logic based on Dungeon having 27 levels. This commit reworks the monster and loot placement, giving it better scaling with depth, with appropriately themed monsters at each location. It also cleans up the tagging and supporting lua code, organizing it similarly to our current DES standards. For monsters in Dungeon, we use the same scaling as ghost vaults, since this vault places over the same range. Previously it had a specific theme for each depth (e.g. gnolls then later orcs), but something so specific is more difficult to scale. Instead we use a mix of gnolls, orcs, kobolds, and other Bailey-loving humanoid monsters to give us good variety of monster classes. We introduce different types "guard dogs" as the depth changes, using hounds after jackals, and also adding in some howler monkeys, since those are great at rousing the castle army. In the late dungeon hell hounds and even raiju make an appearance at the back of the castle. For Depths, we keep the "giant" theme, since there are enough such monsters to choose from, and use mostly dragons as the guardian beasts instead of hound genus monsters, however one may found a shrike or X at the back of the castle moat. On Depths:5 it places the Zot entrance and draconian and dragon monsters as before, but with some tweaks to the composition of those. Keep the death drakes, but use real dragons instead of a bunch of low-level drakes. Don't thin out the number of "1" monsters drastically only for Depths:5, rather removing about 8 of these from the original lemuel subvault, since that one places so many more than the other subvaults. It still places the most monsters (and the most loot), just not so many more compared to the other subvaults. For loot, scale up the type and quality with depth instead of the thining out numbers earlier. We don't change the monster count with depths, so the overall loot count should likewise remain constant. -------------------------------------------------------------------------------- be84625216 | Kate | 2021-04-17 08:47:24 +0100 Don't allow Manifold Assault to attack projectiles -------------------------------------------------------------------------------- 1fd4cec11e | Kate | 2021-04-17 02:50:03 +0100 Simplify Cleansing Flame description (Yermak) -------------------------------------------------------------------------------- b2ee965f6f | Nicholas Feinberg | 2021-04-16 18:48:42 -0700 New Sastreii tiles Hydras + normal & randart boots. -------------------------------------------------------------------------------- 9da5d22180 | Kate | 2021-04-17 01:57:41 +0100 Update MUT_PAWS description (advil) -------------------------------------------------------------------------------- eb3bcc3169 | Kate | 2021-04-17 01:44:30 +0100 Adjust some stealth handling Fixes Merfolk and Octopodes not getting their bonus stealth when flying over water, makes the Jiyva-only translucent skin mutation always give a full pip of stealth, and removes the marginal stealth penalty and bonus from hooves and paws respectively. -------------------------------------------------------------------------------- 57dfabebf2 | Kate | 2021-04-17 01:40:43 +0100 Improve known/unknown staircase descriptions (#1621) Closes #1621. -------------------------------------------------------------------------------- b18e172e69 | Kate | 2021-04-17 01:40:25 +0100 Adjust Barachi mutation description -------------------------------------------------------------------------------- e6159548ff | Kate | 2021-04-16 23:37:54 +0100 Update Cleansing Flame description (#12200) -------------------------------------------------------------------------------- 3ad0f943fe | Kate | 2021-04-16 04:06:41 +0100 Remove the Random Bolt spell It was used only by Mnoleg, whose spellset is focused around spamming lots of summons so was unlikely to be notable there. -------------------------------------------------------------------------------- 4cfe56dd59 | Kate | 2021-04-16 01:18:13 +0100 Use ancestor pronouns in a transference message -------------------------------------------------------------------------------- b18131059d | Kate | 2021-04-16 01:18:10 +0100 Simplify a transference message (#1906) Since the grammar for correctly specifying different types of terrain would be very fiddly to handle. Closes #1906. -------------------------------------------------------------------------------- cdb93c67d5 | Kate | 2021-04-16 00:58:36 +0100 Make Serpent's Lash movement take priority over rampaging It's intentional that rampaging generally takes priority over Wu Jian attacks, but with Serpent's Lash active the expected behaviour is for movement to not take any time, so make the instant movements take priority over rampaging. -------------------------------------------------------------------------------- 31948d8415 | Kate | 2021-04-15 23:10:00 +0100 Shorten the shopping list header slightly To handle edge cases with very large and expensive shopping lists (10 or more items costing a total of 10000 gold or more would have slightly cut off the header message on an 80x24 terminal). -------------------------------------------------------------------------------- 5030419646 | Neil Moore | 2021-04-15 17:58:27 -0400 Be more clear about shopping-list total cost (Nivim) -------------------------------------------------------------------------------- 818bb6d2ef | Neil Moore | 2021-04-15 16:51:36 -0400 Add tests for uppercase and friends. Including a check (using the Turkish locale) that they handle ASCII as though we were in the C locale. -------------------------------------------------------------------------------- 3fb6992e63 | Neil Moore | 2021-04-15 16:20:11 -0400 Expand on comma_separated_* tests 1. Also test arrays of strings and arrays of const strings. 2. Also test comma_separated_fn with a non-trivial stringification function. 3. Also test alternative values of comma and andc. 4. Also (in a separate TEST_CASE) test comma_separated_fn with stringification functions that take a non-string parameter: both an actual function pointer, and a std::function. -------------------------------------------------------------------------------- bc1d1ccee9 | Aliscans | 2021-04-15 11:53:54 +0300 Let the arena create an ironbound beastmasters on request. Previously, the game terminated (with game_ended_with_error()) if the user attempted to create an arena with a M_REQUIRE_BAND monster which didn't create a band in the same dgn_place_monster() call. This change means that the monster is created as if the M_REQUIRE_BAND flag wasn't there. -------------------------------------------------------------------------------- 778c41be60 | Aliscans | 2021-04-15 11:53:54 +0300 Explain why wizard mode create monster fails for ironbound beastmasters. If the user tries to create a M_REQUIRE_BAND monster without a band, say "That monster can only be created with a band." instead of "Unable to place monster.". The request is still denied. -------------------------------------------------------------------------------- dafb6c8885 | RojjaCebolla | 2021-04-15 10:38:30 +0300 Create artefact_creation.md Basic documentation for artefact creation. Can be expounded on later if needed. [skip ci] -------------------------------------------------------------------------------- 25969acef8 | Nicholas Feinberg | 2021-04-14 18:48:11 -0700 Display chance to hit with spells (split) Not chance to miss. This is simpler and consistent with the behaviour of ranged attacks. -------------------------------------------------------------------------------- e9c4887cf0 | Nicholas Feinberg | 2021-04-14 18:43:23 -0700 Many many new tiles (Sastreii) Naga body tiles, ironbound frostheart & beastmaster, and Kryia's mail coat. -------------------------------------------------------------------------------- d4db56bea9 | CanOfWorms | 2021-04-14 21:38:33 -0400 Minor death yak tile edit (Sastreii) -------------------------------------------------------------------------------- 3ebc474583 | gammafunk | 2021-04-14 20:19:05 -0500 Adjust an overflow altar and fix syntax For beargit_hepliaklqana_dungeon_heroes, the spawns at Depth D:7-9 were a bit too nasty, since, starting at that depth, we both introduced potential gargoyle and vampire ancestor monsters and placed two ancestor monsters instead of one. Adjust this vault to only place one ancestor monster at that depth, placing two spawns on D:10-D:12, and placing all three starting with D:13. Also mix the spriggan "hexer" ancestor on D:7-9, as this is easier than the vampire. Down-weight the molten gargoyle at the earliest depth it can appear. Also fix the use of backup monster syntax for KMONS. The backup separator `,` is split first, meaning my `/` alternates were getting parsed incorrectly, instead being treated as duplicate alternates. -------------------------------------------------------------------------------- 00e00afbbc | gammafunk | 2021-04-14 14:56:40 -0500 Toke up the bong cloud Add a checkerboard pattern to the vault floor in console and tiles and make the xom's chess piece always appear in the spot of the bong cloud king. Also disallow traps, vault rotations, and vault mirroring. -------------------------------------------------------------------------------- 402bc293fc | hellmonk | 2021-04-14 20:54:44 +0300 Very important vault. -------------------------------------------------------------------------------- a1f0d90d03 | advil | 2021-04-14 11:14:16 -0400 Fix a missed .ico reference for windows installer builds -------------------------------------------------------------------------------- 64c96e512b | advil | 2021-04-14 10:43:11 -0400 Standardize app icon location/naming These were a bit scattered, leading to potential confusion for downstream packagers (and me!). I'm not sure if dat/tiles is really the best place for this, because that will get copied into installs, but it is at least a place where the most icons already existed. As a convenience, this pulls in the (currently unused) 48x48 icon from #464. The svg in that PR was identical to the one that was in util/ so no need for an additional copy (possible that the copy in util was simply missed, it was far from an obvious location). For downstream packagers in the future: rather than adding duplicate icons to the repo, the preferred process would be to copy them out of `dat/tiles` similar to how the mac and windows builds now work, and to add any new icons to this location -- though I think at this point we might have enough to cover every base! (Commit caveat: not tested yet on windows, I'm going to let CI do that...) -------------------------------------------------------------------------------- 931a06d827 | advil | 2021-04-14 09:57:53 -0400 Allow specifying GAME at the make command line This is sometimes requested by downstream packagers in one way or another, e.g. as in #464. That PR hardcodes a change for tiles, which would be pretty reasonable if one were writing this from scratch. But, there are many secondary build processes that assume the binary is named `crawl`, so it's a bit tricky to make that change as requested without a lot of followup pain. Instead, this allows e.g. packagers to invoke the build process as: `make TILES=y GAME=crawl-tiles` to have a one-step build process that produces a differently-named binary without touching `crawl`. -------------------------------------------------------------------------------- 9df88ad596 | mgdelmonte | 2021-04-14 09:29:28 -0400 Added lua item.description Similar to the recently added `spells.describe` function, this adds the string `description` to the Lua item object. The description is the same text one sees in the UI. Helpful for players using scripts to evaluate relative item values for damage, noise, etc. [Committer's note: fixed submodules, imported commit description from PR. Resolves #1894.] -------------------------------------------------------------------------------- 2aa4ecdaef | CanOfWorms | 2021-04-14 01:42:01 -0400 Improve readability of some new tiles The new yak and wolf tiles suffer from a lack of contrast, which can make it difficult to make out against specific floor tiles. They also have an added problem of looking suspiciously similar to zombies due to their colours. Similarly, the new death yak, catoblepas and hound tiles have contrast issues. The following edits attempts to fix this issue by adding some bright areas to each tile to improve visibility against any floor tiles, as well as tweaking their colours to look less like derived undead. There are also some silhouette tweaks to help differentiate similar monsters, e.g. hounds have a smaller tail compared to wolves, and death yaks have larger and spikier fur compared to regular yaks. -------------------------------------------------------------------------------- ec49774fc9 | Nicholas Feinberg | 2021-04-13 20:24:33 -0700 Swap Static Discharge and Swiftness (hellmonk) Static Discharge to level 2, Swiftness to level 3. The former should help AE early game and give Vehumet more options for L2 gifts. The latter seems fine for an already strong spell. No tweaks to either spell at present. We can adjust damage and duration respectively as we see fit, but it felt fine in playtesting. -------------------------------------------------------------------------------- b56dff0882 | Nicholas Feinberg | 2021-04-13 20:12:31 -0700 Fix Freeze death messages Instead of being blasted by endoplasms, you're now properly frozen. This may cause horrible bugs with very old high score files, since I'm re-using the death type from when you could commit suicide with Ozo's Fridge. I hope not! -------------------------------------------------------------------------------- 3d650569c9 | Nicholas Feinberg | 2021-04-13 19:59:00 -0700 Increase early D book variety Reduce the rarity threshold for books to spawn on D:1. This allows the following set to be chosen (without passing an additional 1% chance) BOOK_MINOR_MAGIC BOOK_MISFORTUNE BOOK_CANTRIPS BOOK_CHANGES BOOK_MALEDICT BOOK_CONJURATIONS BOOK_NECROMANCY BOOK_CALLINGS Previously, only minor magic, misfortune, and cantrips could spawn on D:1. (Previous to that, no books could spawn until D:3.) -------------------------------------------------------------------------------- 750d543db3 | Nicholas Feinberg | 2021-04-13 19:22:59 -0700 New Djinni title: Weightless Champion They're clearly not middleweights! They hover! -------------------------------------------------------------------------------- 30011c25a7 | Nicholas Feinberg | 2021-04-13 19:19:28 -0700 Don't let fleeing monsters aggress (sahdkjhfkaj) Check the escape flag, not emergency, and add it to a few more spells that are appropriate to use in a pinch. -------------------------------------------------------------------------------- d1521fd518 | Kate | 2021-04-12 19:59:01 +0100 Update a comment -------------------------------------------------------------------------------- 133ce1e8f8 | Kate | 2021-04-12 19:59:01 +0100 Fix handling of ARTP_REGEN on amulets (#12561) -------------------------------------------------------------------------------- e5e4f5c7a4 | advil | 2021-04-12 13:13:52 -0400 Fix sacrifice validity issues + document A number of crucial checks for sacrifice validity were being done in `_random_valid_sacrifice`, which it turns out is not used for all sacrifices (only for ones that involve multiple possible mutations). This commit abstracts those checks into a static function and also applies them to all the other sacrifice possibilities in _sacrifice_is_possible directly. In addition, I've tried to add a few commenting hints throughout to help this code be more easily understood. Probably this could use a more thorough refactor. I've also added another check to ensure that piety is always 0 for useless skills; I don't think this should do anything on top of the other checks but it does seem like a useful sanitizer. Fixes mantis 12545 as well as a similar bug on felids. This happened when c3fac4b18bf removed a sac armour-specific check into _random_valid_sacrifice. I'm not sure if anything else would have been affected, because some or all of the other checks maybe were only relevant to health/essence/arcana mutations? But this will future-proof the code a bit as well. -------------------------------------------------------------------------------- a1c40ef19e | Nicholas Feinberg | 2021-04-12 08:16:13 -0700 New Lich tile (Sastreii) It's ready to make friends. -------------------------------------------------------------------------------- 39e2d67666 | advil | 2021-04-12 10:41:55 -0400 Try to fix homebrew for mac CI runner Homebrew is migrating to github for storage, because their previous provider is shutting off service May 1. There's a brownout right now "to warn users about May 1st as sunset date for Bintray" (where the warning takes the form to downstream users of a completely uninterpretable 502 error, but ok). This has revealed that the default mac runner uses a version of homebrew that is not updated with the correct download location. There's various plausible ways to fix this but in absence of any official guidance I'm starting with just inserting the official homebrew setup action in hopes that this fixes things up. -------------------------------------------------------------------------------- d8b25303e3 | advil | 2021-04-12 09:52:02 -0400 Tweak mac universal build targets The x86 binary seems to build just fine with an earlier min version even on an OS 11 arm device, so keep it consistent with our previous build process. I've only tested actually opening the resulting app down to 10.13 though. -------------------------------------------------------------------------------- 4a88dd77dc | Kate | 2021-04-12 09:27:13 +0100 Update starting screen and manual species descriptions The manual entries in particular could probably use a larger rework, but this should at least correct most of the outdated information for that section. -------------------------------------------------------------------------------- bf8bb431c4 | Kate | 2021-04-12 06:30:48 +0100 Tweak randart property availability Attempts to simplify which properties can appear on which types of equipment. Some properties which shouldn't appear on quick-swappable items can now generate on amulets as well as armour (in particular Rampage, Harm, Regen, -Cast and -Tele). rCorr can now appear on any item that doesn't have *Corrode. +Invis can now only appear on armour and amulets, to limit swapping to activate it. Some handling for *Tele is removed since it doesn't generate randomly. -------------------------------------------------------------------------------- bca1fa7cf8 | Kate | 2021-04-12 06:30:48 +0100 Don't consider flight an active ability For the purposes of enabling evocations training. -------------------------------------------------------------------------------- 37fc20d06e | Kate | 2021-04-12 06:30:48 +0100 Don't cancel evoked invisibility on unequip Since evoked invisibility now has a maxHP cost and is only available on scarves and artefacts, make it just behave consistently with invisibility from the potion or spell. -------------------------------------------------------------------------------- d37565c9fb | Kate | 2021-04-12 06:29:49 +0100 Remove the ability to cancel Portal Projectile There's not really any reason to allow micromanaging it in this way. -------------------------------------------------------------------------------- 825125a692 | advil | 2021-04-11 22:22:55 -0400 Fix mac tiles packaging Also, restructure mac crosscompilation to use submake, so that parallelizing helps without creating a mess. (Otherwise, the previous scheme parallelized across targets, leading to arch incompatibilities.) -------------------------------------------------------------------------------- 86988a4770 | advil | 2021-04-11 22:22:55 -0400 Disable universal CI builds for now These will need an 11.0 runner, which should come sooner or later. Until then, disable. -------------------------------------------------------------------------------- 8de5b75ad1 | advil | 2021-04-11 22:22:55 -0400 Attempt to add mac universal builds to CI Not sure if this will work at all (tbd if github CI runners support cross-compilation with an arm64 target). But it would be nice if it does! -------------------------------------------------------------------------------- 62f9e41276 | advil | 2021-04-11 22:22:55 -0400 Fix mac console releases in 10.15+ The location of Terminal.app changed, meaning that the launcher script didn't work at all. (Guess the lack of reports says something about how much this release build is used?) -------------------------------------------------------------------------------- 50225284d2 | advil | 2021-04-11 22:22:55 -0400 Support for mac universal builds targeting apple ARM It turns out that apple clang supports cross-compiling in an extremely straightforward way for arm64 vs x86_64; building a universal binary amounts to cross-compiling and then merging binaries with the `lipo` utility. This also means that producing a universal build on an up-to-date x86 device should also be possible (perhaps even in CI?). However, one caveat is that this forces our back-compatibility hand a bit -- I'm not exactly sure how much since I don't have the devices to test, but the choice of 10.12 is based on apple docs. I haven't removed the non-universal app building scheme so we would have the option of distributing multiple builds. Because of the somewhat baroque Makefile setup that exists for mac builds (possibly in combination with my limited knowledge of what the best way to accomplish this build might be) this is a relatively ugly patch. I've also found rebuilds to be a bit flaky for reasons I don't fully grasp, e.g. sometimes a full clean or clean-contrib is needed when changing targets. Some other minor cleanups, removing files that (as far as I can tell) are no longer used. -------------------------------------------------------------------------------- e866cc41d3 | Nicholas Feinberg | 2021-04-11 17:20:19 -0700 New dread lich tile (Sastreii) -------------------------------------------------------------------------------- b57c80000f | Kate | 2021-04-11 22:24:10 +0100 Fix tag_upgrade builds Also fixes Xom chesspieces not displaying on \. -------------------------------------------------------------------------------- e33e995840 | Kate | 2021-04-11 21:41:22 +0100 Add tiles for the seven-league boots (CanOfWorms) -------------------------------------------------------------------------------- 496ac5bf5d | CanOfWorms | 2021-04-11 02:20:13 -0400 Fix typo -------------------------------------------------------------------------------- 395adb26f7 | Edgar A. Bering IV | 2021-04-11 09:00:56 +0300 Replace wands of random effects with Xom's chesspieces This commit moves random effects to an XP evoker, and makes it non-targeted. This is partly for flavour (in order to re-use the amazing chesspiece tiles), and partly for mechanical distinction. Random Effects' effect is not something that would be good to teach monsters (turning random goblins into possible malmutators/paralysis checks etc.); and random effects was the only remaining wand that monsters didn't know how to use. This gives a clear distinction between misc evockers (monsters don't know how to use) and wands (monsters do know how to use). The change is also an experiment in high-charge misc evokers, to get a broader feel for how they play. This is a warm-up for possibly converting all wands to xp-charging. -------------------------------------------------------------------------------- ae3e1deef5 | Edgar A. Bering IV | 2021-04-11 08:43:04 +0300 Movement-adjust Palentonga roll Apply Chei, swiftness, leda's, ponderousness, water, lightning scales, and frozen movespeed modifiers to the roll time. -------------------------------------------------------------------------------- 78274972cd | Kate | 2021-04-11 06:13:51 +0100 Consider rampaging attacks to be hasty with Chei Rampaging movement was already considered hasty, but not if it was a step that resulted in an attack (which meant that the seven-league boots were never considered hasty). -------------------------------------------------------------------------------- d1b44281ea | Kate | 2021-04-11 05:47:04 +0100 New unrand: the seven-league boots Inspired by discussion on mainiacjoe's Wrath of Trog PR and sdynet's suggestion of giving it infinite-range rampaging, add a new pair of unrand boots with the full-LOS rampaging property. To prevent full-LOS stabbing they also wake monsters up when arriving next to them. -------------------------------------------------------------------------------- ec3affb84e | gammafunk | 2021-04-10 18:25:23 -0500 Some Snake vault revamps Remove weak snakes genus monsters from older vaults, bringing in the relatively newer Snake branch serpents in their place and adjusting monster counts where appropriate. Below are notes on additional changes beyond this for specific vaults: minmay_snake_entry_six_corridors: For this entry we use only mambas and moccasins, since it places in Lair. Concentrate the density of mambas a bit more towards the center, but allow them to also place down the corridors. Simplify the placement substitutions. minmay_snake_pond: Also add in sea snakes, placing only amphibious snakes in deep water. minmay_snake_river: Use only anacondas and sea snakes, so the snakes aren't trapped. Also add loot, so the reward of exploring this long water cavern isn't just some snakes and empty space. nicolae_snake_lava_pool: Also and replace lava snakes with salamanders. Also add more types of salamander genus monsters to vaults that have a salamander theme: nicolae_snake_salamander_stairs: Bring in one monster that can either be a salamander mystic or a tyrant, with chance of the latter increasing by depth. Simplify the monster placement to use a more typical if blocks conditioned on depth instead of calculating based on depth. Balance the salamander placement so that it scales better with depth; the old setup was very conservative about number of extra salamanders placed. In addition to the guaranteed salamander "boss", place 2 extra salamanders on average on Snake:1, 3 extra on average on Snake:2, and 4 extra on average on Snake:3. cheibrodos_snake_lava_hold: Buff monster placement so it better reflects the amount of loot rewarded, which is substantial. Incorporate a guaranteed tyrant and mix in a few additional mystics. -------------------------------------------------------------------------------- 57c748b47e | gammafunk | 2021-04-10 18:24:58 -0500 Cleanups for snake.des Add sectioning like we have for other des files, moving decorative vaults to their own section, and use default-depth instead of having all vaults specify depth. Clean up some glyph usage and statement alignment, as well. -------------------------------------------------------------------------------- 0e2820b0bf | gammafunk | 2021-04-10 18:21:55 -0500 Cleanups for spider.des Remove decor tags that I added to vaults, since we currently have no mechanism to place vaults according to this tag. Might be nice to adapt, improve, and generalize logic in swamp.des to place these in other lair branches. -------------------------------------------------------------------------------- 5e7b979315 | gammafunk | 2021-04-10 18:21:55 -0500 Reorganize shoals.des Add sections like we have for other des files, moving decorative vaults to their own section, and using default-depth, so vaults don't have to specify Shoals depth. Some light syntax cleanup as well. -------------------------------------------------------------------------------- f450e38dac | Kate | 2021-04-10 23:46:25 +0100 Update Shadow form status description (Mintice) To match the updated ability description. Closes #1893 PR. -------------------------------------------------------------------------------- 91442b771c | Kate | 2021-04-10 23:46:25 +0100 Tweak Cigotuvi's embrace description -------------------------------------------------------------------------------- 7a51355724 | Kate | 2021-04-10 23:46:25 +0100 Make Hailstorm affect icy creatures It mainly had this exception so that player IE could use it alongside Summon Ice Beast without damaging their allies, but with ice beast no longer in the starting book it's more consistent to have it just deal its icicle-flavoured damage across the board. -------------------------------------------------------------------------------- 386ccf399c | Neil Moore | 2021-04-10 17:15:02 -0400 Checkwhite (doh) -------------------------------------------------------------------------------- 8df42ad0ea | Neil Moore | 2021-04-10 16:57:41 -0400 Add basic unit tests for comma_separated_line and join_strings It would be nice to also test comma_separated_line's optional parameters, as well as comma_separated_fn, but that can come later. -------------------------------------------------------------------------------- 8328ce2b06 | Neil Moore | 2021-04-10 16:57:41 -0400 Avoid a "no previous declaration" warning when building tests -------------------------------------------------------------------------------- 1b49dfe8c2 | Edgar A. Bering IV | 2021-04-10 23:10:39 +0300 Trade Ice Beast for Metabolic Englaciation in the IE Start (Nomi) Summons have a way of defining a book, especially the mid-level options like Summon Ice Beast. Lighting Spire was briefly considered and then removed from the Air Elementalist start for just this reason. While the positional-magic changes to the book of Frost have made the book a bit less "the book of SIB" the background still very much ends up leaning on the spell. Metabolic Englaciation is an interesting spell and a good fit for the starting background. AOE slow interacts well with the other starting spells, but the price is sufficiently high and there's no direct damage, so it shouldn't outshine in the way SIB does. -------------------------------------------------------------------------------- 420bc2496c | Nicholas Feinberg | 2021-04-10 10:55:46 -0700 Re-tweak dead tree description Remove a double period. -------------------------------------------------------------------------------- a5483dda36 | Edgar A. Bering IV | 2021-04-10 20:48:40 +0300 Some petrified tree ruins for the desolation When the realm was turned to salt some of the trees became petrified with sediment instead of dying outright. Heartier plants were also stoned, while weaker ones were reduced to pillars of salt. Practically petrified trees are added two ways, first a chance to place scattered petrified trees among the ruins (just as the statues). Second a few petrified forest ruins as well as a temple to the twin gods vaguely suggesting a duality between them using trees. Each places desolation normal monsters and loot. -------------------------------------------------------------------------------- 97c99b9d80 | Edgar A. Bering IV | 2021-04-10 20:48:40 +0300 A petrified tree ecumenical altar -------------------------------------------------------------------------------- 68d955cad3 | Edgar A. Bering IV | 2021-04-10 20:48:40 +0300 Generalize the dead tree description They slowly migrated out of crypt since the days of evilmike's Crypt:5 ending. -------------------------------------------------------------------------------- 9aecc562e6 | Edgar A. Bering IV | 2021-04-10 20:48:40 +0300 Implement petrified trees Instead of a vault recolour, let's make petrified trees a first class feature. The name implies that they should behave like rock in some ways (be valid LRD targets, be diggable). Implementing them as vault re-tiles and re-names of statues does this, at the expense of clarity for console players. The expense is even higher for screen-reader players, who might go looking for 't' with a reading cursor only to find '8' instead. As a first class feature, petrified trees can behave like their woody bretheren in some ways, be vulnerable to LRD instead of fire, and interact properly with our feature naming/colouring/glyphing systems. On the vault decorating side, tree_dead is now the variant tile for the brown colour of trees, and no living tree is assigned darkgrey in console. There are also vague future plans that might use such a feature: i-x's Elven Crypt sketch or expanding Desolation into a (rune?) branch. This feature is implemented in the spirit of "if you build it they will come". -------------------------------------------------------------------------------- 94b7631ddb | advil | 2021-04-10 12:33:29 -0400 Fix a Na mutation physiology check In https://crawl.develz.org/tavern/viewtopic.php?f=17&t=27105 a player reported a naga getting hooves. I think this could have happened because MUT_CONSTRICTING_TAIL can be suppressed by forms, and the physiology code only checked the current status of that mutation. So, change the foot check to check innate status (i.e. constricting tail = no feet under any circumstances). The other two mutations here aren't suppressed, but it is still safer to do the check this way. -------------------------------------------------------------------------------- 5a74e75d8f | Nicholas Feinberg | 2021-04-09 21:07:57 -0700 Remove a hairtrigger assert Too aggressive and caused consistent crashes in local dev. -------------------------------------------------------------------------------- f56c19cca7 | Nicholas Feinberg | 2021-04-09 20:44:12 -0700 New dead tree tiles (Sastreii) -------------------------------------------------------------------------------- 3b3f0a9232 | Kate | 2021-04-10 02:30:09 +0100 Update draconian knight description They haven't specialised in necromancy for a while. -------------------------------------------------------------------------------- 86d13463b7 | Kate | 2021-04-10 02:23:34 +0100 Remove monster Ozocubu's armour Giving a couple of monsters extra AC that's meltable by fire damage isn't really worth the extra complexity, especially as it now behaves significantly differently from the player spell since it persists through movement. Instead just give the two monsters that had it (Fannar and draconian knights) a slight boost to their base AC (4 and 6 respectively, a slight reduction from the meltable 7 and 9 that they had previously). -------------------------------------------------------------------------------- e2a9cca30b | Kate | 2021-04-09 23:29:57 +0100 Give monster purple draconians an extra point of AC For some reason they had 1 less than other colours. -------------------------------------------------------------------------------- 0e6d9124c6 | RojjaCebolla | 2021-04-09 10:40:54 +0300 Unmeld statueform merfolk boots when leaving water Changing the check for temporary forms to "true" when leaving water keeps the boots from falling off. Closes #1875. -------------------------------------------------------------------------------- 80ed8d6641 | RojjaCebolla | 2021-04-09 10:40:27 +0300 Allow detransforming over water if flying Even if you're [de]transforming into a non-flyer over dangerous terrain, that's okay if you're currently in flight form. Closes #1881. -------------------------------------------------------------------------------- 638403bedd | Edgar A. Bering IV | 2021-04-09 10:34:01 +0300 Further tweaks to the IRC doc Closes #1867 -------------------------------------------------------------------------------- 9b11d684df | RojjaCebolla | 2021-04-09 10:30:55 +0300 Remove reference to bugzilla ...which is no longer a thing. -------------------------------------------------------------------------------- d9e0fce532 | Edgar A. Bering IV | 2021-04-09 10:29:44 +0300 Correct a typo (Yermak) -------------------------------------------------------------------------------- 5a49628fc9 | hellmonk | 2021-04-09 10:19:34 +0300 A couple ecumenical altar vaults with monsters [ Committer's notes: Closes #1872. Toned down monster and item placement. ] -------------------------------------------------------------------------------- b2bd10914a | gammafunk | 2021-04-08 23:41:12 -0500 Add salamander genus monsters to Snake rune vaults Now that we have salamander tyrants as top-tier Snake threats and thus a full set of salamander genus monsters at differing strengths, this commit incorporate these monster types into all Snake rune vaults. At the low and middle tiers, salamanders replace some plain naga and salamander mystics replace some naga mages so there's a 3:1 ratio of nagas to salamanders of the corresponding types. At the high end, tyrants replace some nagaraja with a 2:1 ratio. These ratios are similar to those in the population lists, although we're using more salamander mystics relative to naga mages than the population list does, which is more like 6:1. So nagas will still get most of the attention, especially since there are other types like warriors, sharpshooters, and ritualists where we make no corresponding replacement, but salamander monsters now play a more significant part in guarding the rune. I've done some reglyphing, statement reorganization, and syntax cleanup for these vaults. Some content notes on specific vaults: snake_pit_salamanders_mu: I've reversed the ratios to place more of the salamander monsters than their direct naga counterparts, although plenty of naga still generate in this vault. grunt_snake_rune_pools: This is a water-themed vault, so I've added a fire theme that gets chosen 1/3 of the time. For the original water theme, no salamander monsters place. For the fire theme, it places salamander monsters with a ratio like snake_pit_salamanders_mu, places salamanders instead of sea snakes, and replaces deep water with lava. johnstein_snake_rune_scales: This had a simple nagaraja as an alternate of Vashnia or as a backup monster if Vashnia has already placed. Hence I made the alternate and replacement have a 1/3 chance to be a tyrant instead of a nagaraja. -------------------------------------------------------------------------------- 64c4f523a5 | Kate | 2021-04-09 02:45:20 +0100 Fix a missing TAG_MAJOR_VERSION check -------------------------------------------------------------------------------- cfdca905f5 | advil | 2021-04-08 21:26:16 -0400 Fix line_reader wide char wrapping (dilly) If the line_reader wrapping code hit a wide character on the wrap column, the wrapping code would go into an infinite loop, and the process would need to be killed. This could be triggered in search as well when the previous search was the exact right length to put the cursor for a following search (since it repeats the previous search) at the wrap column, and the first character of the new search was a wide character, then the bug would trigger. Because webtiles still uses the line_reader console ui behind the scenes, the bug was triggerable in webtiles this way by just having strings of the right length. This probably didn't come up for normal usage, but apparently people use the search box to chat to spectators. (Even worse, a webtiles game killed by the server in this state doesn't save, so the bug can be used to roll back a game on demand.) This commit fixes the infinite loop bug in a pretty straightforward way (and also tries to better guard against infinite loops there). It also fixes some fiddly issues with cursor positioning in the case where the last character of a line is a wide char. -------------------------------------------------------------------------------- 8836bdb7d9 | Kate | 2021-04-09 01:41:22 +0100 Update dispellable monster enchantments Makes lots of monster enchantments dispellable that weren't previously. Some could be dispelled on the player but not on monsters, and some were monster-only magical effects that didn't have any particular reason to not be dispellable. Also makes some effects non-dispellable: the frenzy effect from darts (for consistency with other darts), and silver corona, pain bond and idealise (for consistency with other player god abilities). In a rare case of favouring the player over monsters, this also makes monster priestly buffs generally be dispellable - on the player, god-granted buffs can't be dispelled, but on monsters this isn't feasible to do consistently, since spells can be either wizardly or priestly in origin. The previous implementation was very arbitrary (for example, the regeneration portion of Trog's Hand could be dispelled but not the willpower; Donald's priestly might and haste could be dispelled, but deep elf high priests' brilliance aura couldn't be). -------------------------------------------------------------------------------- e92a7396d4 | Kate | 2021-04-09 00:56:22 +0100 Adjust monster fear display So that the "scary" descriptor doesn't fall out of sync with whether a monster is actually causing the player to be afraid. -------------------------------------------------------------------------------- 23531dd7ba | Kate | 2021-04-09 00:26:09 +0100 Allow activating flight while on liquefied ground It was already possible to fly out of liquefied ground by equipping flight equipment, so allow it for potions and batform as well. -------------------------------------------------------------------------------- ce7b1123cd | Kate | 2021-04-08 22:58:22 +0100 Adjust more !cancellation status descriptions Fixes mesmerisation not displaying in !cancellation's description when it would be dispelled, and special-cases transformations (which had buggy descriptions such as "you will no longer be appendages") and flight (which incorrectly claimed flight would be cancelled when the player had permaflight). -------------------------------------------------------------------------------- c46935d415 | Kate | 2021-04-08 22:58:22 +0100 Adjust dispellability of some durations Flash freeze and sticky flame are now dispellable, and the hidden "sickening" duration (applied by ancient zymes) is no longer dispellable. -------------------------------------------------------------------------------- c738167b05 | Kate | 2021-04-08 22:58:22 +0100 Fix protection brand status light (sim) -------------------------------------------------------------------------------- facc31910f | Edgar A. Bering IV | 2021-04-08 23:24:43 +0300 Remove some weight from the dummy faded altar vault -------------------------------------------------------------------------------- b020930490 | hellmonk | 2021-04-08 23:09:51 +0300 Several more ecumenical altar vaults Includes some very small vaults as well as a couple larger ones. [ Committer's note: small tweaks to code layout and tagging, trimmed a few size-wize and some minor tweaks to randomizations. This is all of the non-monster placing submissions from #1872 ] -------------------------------------------------------------------------------- 0721f309d1 | Shapermc | 2021-04-07 23:58:08 +0300 New ecumenical altar vaults The ruins of Machu Picchu inspired these sites for ecumenical altars. I am aiming to make them feel attractive on the outside to explore, and unique and random on the inside. [ Committer's note: Closes #1868. Tweaked some NSUBST lines and ensured connectivity. ] -------------------------------------------------------------------------------- 3444a674c5 | ukdong90 | 2021-04-07 23:58:08 +0300 Just one Gnrine [ Committer's note: Closes #1874. Tweaked and added some tagging. ] -------------------------------------------------------------------------------- 9722c47da7 | Aliscans | 2021-04-07 21:31:45 +0300 Remove Maud from montitle.txt. Maud has gone, and her ghost cannot use this title, so it's just clutter. -------------------------------------------------------------------------------- 0a00ce863d | Kate | 2021-04-06 02:36:33 +0100 Update SPWPN_PROTECTION's duration short_name To be more descriptive and to prevent other statuses (like "protected from fire") matching the webtiles check for increasing AC. -------------------------------------------------------------------------------- fc3203cb9b | Kate | 2021-04-06 02:21:55 +0100 Fix webtiles display of defense boosts Some of them had fallen out of date with duration-data.h changes. Closes #1832. -------------------------------------------------------------------------------- 6cd11ba223 | Kate | 2021-04-06 02:21:55 +0100 Update and extend some duration descriptions To make them more consistently use an adjective form for the short_text, and to add long_text for some durations without it. -------------------------------------------------------------------------------- c0143cd162 | Kate | 2021-04-06 02:21:55 +0100 Adjust some descriptions -------------------------------------------------------------------------------- 22995d6073 | gammafunk | 2021-04-05 18:36:20 -0500 Hilbert curve vaults for Spider by nicolae (12539) Moved these to their own file, since it's a large series of vaults and subvaults. I removed the placement down-weighting, since it's not an extreme vault in any way, and it has a uniq tag to prevent it from placing more than once. These vaults can create large rectilinear areas when the layout embeds them in large areas of rock. To some extend this might be helped by adding a "fuzzed" CLEAR border to the map, but that would apparently introduce potential closet areas, and it wouldn't fully solve the issue. Seems to be a problem all larger vaults have with the cave-like layouts especially, and I'm not sure if there's an easy solution to that. -------------------------------------------------------------------------------- 8736458e1e | advil | 2021-04-05 11:32:25 -0400 CI: pin a pip version that will work with py27 Pip support for py27 has been dropped entirely in pip 21, so we can't unconditionally upgrade. This invocation that I found on the internet somewhere may help. -------------------------------------------------------------------------------- 263514a223 | Nicholas Feinberg | 2021-04-05 08:02:43 -0700 Revert guardgolem dj restrictions (Yermak) Per request, let players experience the joy of the walking bomb. -------------------------------------------------------------------------------- e2d0b17c59 | gammafunk | 2021-04-05 00:59:50 -0500 A watery jumping spider vault by nicolae (12539) Uses subvaults for randomizing the terrain layout. I put this in its own file as there are over a dozen subvaults. No significant edits other using of MONS instead of KMONS and statement rearrangement. -------------------------------------------------------------------------------- 810843a28d | Nicholas Feinberg | 2021-04-04 22:39:50 -0700 Add petrified trees (Sastrei) And a vault to use em. -------------------------------------------------------------------------------- 5cb13e721e | Nicholas Feinberg | 2021-04-04 22:39:50 -0700 Replace trees (Sastreii) Spring has sprung! -------------------------------------------------------------------------------- f01432ee17 | Nicholas Feinberg | 2021-04-04 22:39:50 -0700 Make the Axe of Woe blow stuff up (Don't leave as many corpses around, mostly since they don't have tiles matching the living versions.) -------------------------------------------------------------------------------- f93f10960d | Nicholas Feinberg | 2021-04-04 22:39:50 -0700 Improve useless manual messaging -------------------------------------------------------------------------------- 88e0368d9b | Nicholas Feinberg | 2021-04-04 22:39:50 -0700 Tweak sac XL bonus piety Give ds a little less and give dj the same bonus, since they tragically lose their l9 spell. Mu lose their second necro enhancer but their existence is always suffering, so it's hard to tell the difference. -------------------------------------------------------------------------------- 6585edb262 | Nicholas Feinberg | 2021-04-04 22:39:50 -0700 Ban guardian golem for dj w/o summons This means guardian golem will very rarely show up in dj spell pools, since they'd have to get one of the few low-level summons before it. Seems OK. -------------------------------------------------------------------------------- d1b0476733 | gammafunk | 2021-04-04 23:28:24 -0500 Some monster vaults for Spider by nicolae (12539) Changes from the submission were minor. Removing some chaff monsters and introducing some randomizations. Also some of the usual syntax cleanup and the removal of DEPTH Spider, since we use a default depth now. Substantive changes described below: nicolae_spider_acid_house: Use acid dragons instead of harmless jellies. Don't place as many of these as the vault had placed jellies, but randomize placement numbers. nicolae_spider_baby_got_redback: Use a simple binomial for placement here, trimming the randomized edge placement glyphs so that the average is about the same. This allows for greater variation in the number of spiders placed. nicolae_spider_bzzzt: Randomize monster counts. nicolae_spider_not_touching_you: Change the SHUFFLE that sometimes mixes in orb spiders to a subst roughly giving the same average. The shuffle has hard to parse in terms of what average monster numbers ended up being. nicolae_spider_paper_wasps: Don't place junk scrolls, instead placing any scroll for all item placement, which is less spoilery. Adjust scroll placement so that we're not giving too many relative to monsters we place. Also randomize monster placement counts. nicolae_spider_scorpion_nest: Don't place ordinary scorpions, as those are far too weak. Place only emperor scorpions, thinning out numbers of monsters, and introducing randomization of monster count. nicolae_spider_swamp_cousins: Randomize monster counts. Mark the vault patrolling, so the non-branch monsters tend to stay in the vault. -------------------------------------------------------------------------------- e335657cc0 | gammafunk | 2021-04-04 23:28:05 -0500 Some decorative Spider vaults from nicolae (12539) No major edits to this set, only removing the Swamp DEPTH, as that's now covered by a default depth. This commit also updates the existing nicolae_spider_cling_ruins to use better glyphs and cleans up some syntax. -------------------------------------------------------------------------------- ed2907cb04 | Kate | 2021-04-04 22:05:56 +0100 Display when boulder beetles are rolling in the monster list And on examining them, since the information wasn't displayed very clearly in console in console. -------------------------------------------------------------------------------- 13725f1865 | Kate | 2021-04-04 21:07:13 +0100 Adjust a canned message for Djinn (#12556) -------------------------------------------------------------------------------- 5e6d803879 | Kate | 2021-04-04 19:40:46 +0100 Refactor handling for convoker recall (#8839) Fixes convokers being immune to cloud damage while reciting recall, but should behave the same otherwise. -------------------------------------------------------------------------------- cab673c142 | sdynet | 2021-04-03 08:45:01 +0300 Simplify and rename the Foxfire card This card had a complicated function. There are many different types of monsters that appear on this card, but there was no reason to do so. And some of the summoned monsters appeared hostile. The name was also not intuitive, making it difficult for users to understand what the card was doing. The user had too many considerations to make this card useful. So I'm going to simply trim this card. The basic feature of this card is that it summons many fast monsters. Therefore, I want to emphasize this characteristic clearly. Now this card summons a very large swarm of bees. In addition, I will change the name to the Swarm to make it easier to understand what this card is summoning. If this change is not enough for cards to be useful, I think we can mix one or two queen bees. [ Committer's note: Closes #1864. Squashed, rebased, tweaked commit message. ] Update crawl-ref/source/decks.h Co-authored-by: Edgar A. Bering IV -------------------------------------------------------------------------------- bd7d8addc9 | Edgar A. Bering IV | 2021-04-03 08:44:35 +0300 Update Yred's description -------------------------------------------------------------------------------- 35c287b088 | Kate | 2021-04-03 02:34:42 +0100 Update a check for whether a monster has a body Used for miscast messages and seemingly nothing else, but this check had fallen out of date with death cobs no longer being on '%'. Ideally these kinds of checks shouldn't be based on monster glyph at all since it makes them very prone to breaking. Also add animated armours, tentacles, and Murray to the list of monsters without a body. -------------------------------------------------------------------------------- 2be9358107 | Kate | 2021-04-03 02:34:42 +0100 Rebrace -------------------------------------------------------------------------------- 39567a0c06 | Kate | 2021-04-02 22:47:00 +0100 Give player ghosts the correct hands and feet Since the hand/foot names were based on glyph, they were buggy for player ghosts. Also give non-classed draconians hands instead of claws. -------------------------------------------------------------------------------- 955cc887ef | Nicholas Feinberg | 2021-04-02 14:17:36 -0700 Gnerf gweapons (split) oops -------------------------------------------------------------------------------- 90918d6062 | Kate | 2021-04-02 21:01:39 +0100 Don't make Yredelemnul forbid statue form Since the nonliving conduct is supposed to be gone. -------------------------------------------------------------------------------- bac1ddba90 | Kate | 2021-04-02 21:01:39 +0100 Adjust some artefact autoinscriptions Use Fly instead of +Fly since it's now a passive effect rather than an evocable one. Also adjust *Contam and *Drain to be just Contam and Drain, so that * consistently indicates an effect that triggers randomly while equipped (*Noise, *Corrode, *Slow, *Tele etc). -------------------------------------------------------------------------------- cbadc6d218 | Edgar A. Bering IV | 2021-04-02 19:56:42 +0300 One more credit -------------------------------------------------------------------------------- 0090c0f15f | Edgar A. Bering IV | 2021-04-02 19:29:45 +0300 Update the changelog through 0.27-a0-877 -------------------------------------------------------------------------------- f2a7138e7e | Edgar A. Bering IV | 2021-04-02 19:28:47 +0300 Another credits update -------------------------------------------------------------------------------- 71947af8c7 | Nicholas Feinberg | 2021-04-02 08:56:29 -0700 Fixup _is_damage_threatening (vt) Correct some old comments and fix an inverted conditional. The previous logic made damage more likely to be considered threatening the *higher* your hp was, which was not intended. -------------------------------------------------------------------------------- fdfa2cc8df | Edgar A. Bering IV | 2021-04-02 18:39:42 +0300 Update the credits -------------------------------------------------------------------------------- 80d416ef6e | kippig | 2021-04-02 18:24:12 +0300 Remove d:1 adder in vault -------------------------------------------------------------------------------- 64e2b160fe | kippig | 2021-04-02 17:08:30 +0300 Add diablo chruch arrival vault adds a church based on the tristram cathedral from the first diablo game. To the sides of the church there is a crypt and through the windows the player can see the lust forest they leave behind. There's also a baptism font (usually dry) because why not. -------------------------------------------------------------------------------- 695312e83b | stahara | 2021-04-02 17:03:27 +0300 RST manual: escape the vertical bar key for layer toggle -------------------------------------------------------------------------------- 6d840ccb4b | Edgar A. Bering IV | 2021-04-02 16:40:36 +0300 New ecumenical altar vaults from ShaperMC -------------------------------------------------------------------------------- c4bfac4c02 | Edgar A. Bering IV | 2021-04-02 10:46:33 +0300 Correct exaggerated poison displays This is a 7 year old edge case that was being hit significantly more often and more dramatically by the acceleration of poison. -------------------------------------------------------------------------------- 165b36e3f0 | Kate | 2021-04-02 02:24:03 +0100 Make WJC Heavenly Storm grant bonus EV For such an expensive active ability, it was fairly difficult to use effectively, since it tries to encourage staying in combat against multiple foes for an extended time (while making a lot of noise) to gain its benefits. Grant it a defensive bonus alongside the offensive one to encourage that use, and slightly reduce the noise to the level of normal shouts. -------------------------------------------------------------------------------- f81f37f261 | Kate | 2021-04-02 01:36:49 +0100 Add a Jiyva mutation to engulf monsters in ooze Applies the engulf effect to applicable monsters (which is approximately "living/demonic/holy monsters which are the same size as the player or smaller") when dealing them damage in melee. As long as they remain adjacent to the player, engulfed monsters take asphyxiation damage over time and are silenced. -------------------------------------------------------------------------------- 4f44552337 | Kate | 2021-04-02 01:25:15 +0100 Allow engulfing constricted targets Engulf uses similar checks to constrict but should be able to be applied independently. Also allow actors which are already constricting something to engulf as well (not relevant for any existing monsters, but relevant for player engulfing in an upcoming commit). -------------------------------------------------------------------------------- 7aa06ce512 | Kate | 2021-04-02 01:25:15 +0100 Don't increase engulf damage against water-vulnerable creatures Since the damage is from being unable to breathe while engulfed (rather than than being explicitly water-flavoured damage like a Primal Wave for example), make it deal the same damage to any target that needs to breathe air. Also add a message when the damage is dealt. -------------------------------------------------------------------------------- 357e685177 | Kate | 2021-04-02 01:25:15 +0100 Improve some engulf handling Improve some messaging to apply more generally to both water and slime, and fix some checks being wrong for water-vulnerable creatures. -------------------------------------------------------------------------------- 801a00d0d6 | Kate | 2021-04-02 01:14:43 +0100 Adjust a potion message -------------------------------------------------------------------------------- ea5aba7016 | Kate | 2021-04-01 22:32:00 +0100 Add some mutation comments -------------------------------------------------------------------------------- b963882b24 | Kate | 2021-04-01 22:32:00 +0100 Reduce shoutitis and no potion heal from 3 to 2 levels Both of these are fairly noticeable bad mutations, but they don't gain much from having so many distinct levels. Reduce them both to 2 level mutations. Shoutitis 1 has the frequency of old level 1 (and the volume of old level 2), and level 2 is equivalent to old level 3. No potion heal now reduces healing by 50% per level instead of 33%. -------------------------------------------------------------------------------- 9529aa9bf3 | gammafunk | 2021-04-01 01:59:26 -0500 Reorganize and fix up Spider and Swamp DES Add sections to spider.des for entr/decor/monster/rune vaults, moving vaults to their appropriate sections. Set a default depth of Spider for non-entry vaults, removing this before the rune vaults, which use PLACE instead of depth. Remove DEPTH: Swamp from vaults that now no longer need this. Reglyph and clean up syntax in a few decorative vaults; others need this as well, but I've just done these few for now. Fix the section description for decorative vaults in swamp.des -------------------------------------------------------------------------------- af99fae3ca | Edgar A. Bering IV | 2021-03-31 21:20:45 +0300 Disable ood fuzzing for 8 and 9 spawns. 8 and 9 are specific requests by vaults for an out-of-depth monster with a certain depth modification. Fuzzing can, early on, turn a 9 into an 8. This was previously less noticable in early D because of the non-monster weight in the spawn table. With that removed a D:4 9 can get fuzzed into something worse than an 8 on a more frequent basis. 0 is not adjusted since it is supposed to be a "typical" spawn, so should behave just as if the dungeon builder is placing the monster. -------------------------------------------------------------------------------- 6cdc3c0863 | Edgar A. Bering IV | 2021-03-31 20:01:04 +0300 Check explosions separately from pathing for danger (12477) -------------------------------------------------------------------------------- 7f24984a57 | Edgar A. Bering IV | 2021-03-31 19:51:09 +0300 Trigger location effects after a wind blast (12474) -------------------------------------------------------------------------------- 37602865fa | Edgar A. Bering IV | 2021-03-31 18:50:38 +0300 Interrupt travel when blinked by a dispersal trap (12491) -------------------------------------------------------------------------------- dfebced566 | Edgar A. Bering IV | 2021-03-31 18:42:20 +0300 Don't prompt with a silenced singing sword (12549) -------------------------------------------------------------------------------- d46e367e5e | Edgar A. Bering IV | 2021-03-31 17:01:21 +0300 Grant wereblood bonuses in agreement with the description (12546) -------------------------------------------------------------------------------- 62f096ca86 | Edgar A. Bering IV | 2021-03-31 16:52:25 +0300 Add some transparency tags to ice cave entries (12503) -------------------------------------------------------------------------------- 031e6c2d63 | Edgar A. Bering IV | 2021-03-31 16:06:48 +0300 Remove a duplicate entry in zap-data -------------------------------------------------------------------------------- 6be897d7e5 | Implojin | 2021-03-31 13:48:14 +0300 Add some missiles to default autopickup Curare, atropa, dispersal, and throwing nets are all highly useful items that can save characters. This commit adds them to autopickup by default. (9 years ago, curare was removed from autopickup in e11df56, for reasons that have since been obviated. Everything old is new again!) Closes #1849 -------------------------------------------------------------------------------- b79eb4bb99 | gammafunk | 2021-03-31 04:04:04 -0500 More Swamp vaults from nicolae (12518) A set of decor vaults missed from the last round of merging nicolae's Swamp vaults, and a set of vaults that place monsters. There are some usual edits to syntax, but nicolae kindly reglyphed and made various other requested changes already, so these were not extensive. Below is a description of content changes to the monster vaults: nicolae_swamp_necromancer_hut: Remove the trivial zombies, such as swamp drake and water moccasin. nicolae_swamp_catching_bugs: For the bugs, replace the hornets with a small chance for spark wasps. nicolae_swamp_flooded_prison: Replace the trivial spectres with branch appropriate spriggan rider and spriggan berserker ones. Remove shadows and wraiths, opting for freezing wraiths and will-o-the-wisps, but placing fewer of them. nicolae_swamp_husk_halls: Randomize the number of husks so that we guarantee two but might place one in all four hallways, and put randomized 0 spawns in each hallway, a bit closer than the husk, so we the player can try to use the husk to their advantage. nicolae_swamp_necromancy_gone_wrong: Don't mark the hydra chamber as no_tele, since this is not a teleport closet, just a nasty area. Rework item placement to use more good_item and mix in better loot potions/scrolls in the relevant items, but make all but the necromancy book have a 50% chance to place. Spread any generated items out over the chamber instead of placing them in a big pile. nicolae_swamp_standing_stones: Make potions and scrolls loot of better types and spread out loot items instead of placing in a pile. nicolae_swamp_super_fun_site: Place miasma clouds over water instead of using toxic bog features, which players won't have seen outside of the spell. nicolae_swamp_spooky_pond: Mix in some spooky bog bodies to go with the spooky wisps. -------------------------------------------------------------------------------- 91c9f2ae56 | gammafunk | 2021-03-31 04:03:15 -0500 Remove unnecessary DEPTH statements These swamp vaults can use the default depth, which is Swamp, instead of setting it on their own. -------------------------------------------------------------------------------- 3f109eccf5 | Aliscans | 2021-03-31 11:55:46 +0300 Make acid walls "melt" icy monsters instead of burning them. Change the message when slime_wall_damage() affects an icy monster from (e.g.) "The wall burns the fire elemental shaped block of ice!" to "The wall melts ...". Ice doesn't burn. Remove the message for when acid walls affect the player, as you.splash_with_acid() hasn't used custom messages since 91b40731d1. -------------------------------------------------------------------------------- 9fcfa7f03e | Edgar A. Bering IV | 2021-03-31 11:18:58 +0300 Update altar vault guidelines -------------------------------------------------------------------------------- b608904985 | Edgar A. Bering IV | 2021-03-31 10:52:28 +0300 New ecumenical altar vaults We still need more of these, but this is a start. A collection of small vaults placing the faded altar plus a bit of decor, some of which suggests an old temple (webs, ruins, etc.) or place of worship. There still aren't enough, so to keep them fresh the weight of the basic vault is increased. Hopefully by the next release we'll have plenty of vaults. -------------------------------------------------------------------------------- 9d1eab6076 | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Adjust existing ecumenical altar vaults Add a bit more randomization, fix global header style. -------------------------------------------------------------------------------- 634789ea28 | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Move ecumenical altars to their own des file -------------------------------------------------------------------------------- b7e72e7e12 | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Enforce overflow temple depth restrictions in the builder Overflow temples can place one of two ways: via the overflow temple placement mechanism and as depth-selected minivaults with the uniq_altar_FOO tag. This commit constrains overflow temples to be eligible for minivault placement only after the end of overflow temple depth. On the des side this makes vault specification cleaner and future robust; overflow vaults no longer need to know the specific overflow temple range. Not all overflow vaults could place as minivaults, and a minivault placement would override the later overflow placement, which meant some downweighted special vaults were extra rare (sad!). Now they work together a bit better For dungeon geography and gameplay, the combination of this change with the preceeding sequence adjusting altar placement means that each temple god gets exactly one guaranteed altar in the overflow range. This should give a bit more verve to the milestone of finding a god in the early game as well as equalize the chances of finding a given god by D:10, and make the chance early altar and early ecumenical altar feel more stand-out. -------------------------------------------------------------------------------- 594c3d14ea | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Shift overflow temples deeper, increase ecumenical altars Ecumenical altars suffer from the fact that they don't always show up before identified altars; the choice becomes more about a conduct than the chance to gamble for a serious advantage. This commit moves all overflow altars to D:3-. Combined with the previous commits, this means that the only way for an altar to appear on D:1-2 is via the basic_altar vault, which is given an explicit chance of 33% on D:2. Ecumenical altars are given a 50% chance for each of D:1-3. This makes for an 87.5% chance of seeing one, and a 50% chance of seeing one before any identified altar. There is some concern that placing an ecumenical altar on D:1 will encourage startscumming, but a player who would quit on D:1 because they didn't like their ecumenical roll would probably also quit on D:2. -------------------------------------------------------------------------------- 6dff9fb094 | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Fix some item specs in altar vaults -------------------------------------------------------------------------------- a37c644b7a | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Fade the altars in serial_column_ruins It fits so well with the theme, and also the strict control over identified altar placement in D:1-10. -------------------------------------------------------------------------------- ef54952615 | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Remove decorative altars from early D vaults This either adds conditional placement, simply deletes the altar, moves the depth range out of D, or turns the vault into a proper overflow temple depending on the vault tweaked. This is part of a sequence of commits giving the dungeon builder more control over the placement of early altars where they have a large strategic impact. -------------------------------------------------------------------------------- aef5f389f5 | Edgar A. Bering IV | 2021-03-31 10:51:54 +0300 Move non-overflow altar vaults out of D To give more fine-grained control over altar placement in D. Some generic vaults become overflow temples, the rest have their placement adjusted. This change is not applied to non-temple gods, who are special and can do their own thing. -------------------------------------------------------------------------------- 3f101e3ede | Edgar A. Bering IV | 2021-03-31 10:51:53 +0300 Place fancy overflow temples only as overflow temples Most of these were missing one of the two overflow tags, so could only place as minivaults (sad!). These are flashy, to keep them from getting over-used now that their tags are fixed I've made them all overflow-only for the time being. If they become depth-eligible again then the overflow_depth function in overflow.des will need to be moved into an accessible scope. -------------------------------------------------------------------------------- d615d5975c | Edgar A. Bering IV | 2021-03-31 10:51:53 +0300 Unify and overhaul depth and tags of overflow temples Some old overflow temples were incorrectly tagged, and weren't treated as overflows; or had DEPTH specifiers and interest checks as if they were aimed to place as mini-vaults but lacked the necessary tag to be eligible for placement. This commit adds a section to the vault guidelines explaining how to tag and annotate overflow temples and edits the existing temples to fix up some old ones and bring everything into compliance. It also adds some future proofing for overflow temples that include a DEPTH specifier, by having all of them call `: overflow_depth(_G)`. This allows for easier global changes to overflow altars (coming soon!). -------------------------------------------------------------------------------- fc908b8576 | Nicholas Feinberg | 2021-03-30 20:27:24 -0700 Flip turn dragons rightways (gammafunk) Also brighten up swamps and fires. -------------------------------------------------------------------------------- 365ecc8b8e | Nicholas Feinberg | 2021-03-30 20:13:52 -0700 Many new tiles (Sastrei) Destroyer, Rockslime, Lom Lobon, most dragons, and Crazy Yiuf. Plus a tweak to the hound tile, and I removed fire drakes while I was at it. I made minor cosmetic edits to some tiles. Sorry, Sastreii! -------------------------------------------------------------------------------- cb938e01ab | Nicholas Feinberg | 2021-03-30 19:50:08 -0700 Finish the preceding commit Oops. -------------------------------------------------------------------------------- 0ae26c12d3 | Nicholas Feinberg | 2021-03-30 19:45:59 -0700 Dehydrate quicksilver oozes Don't claim they engulf the player in water. -------------------------------------------------------------------------------- d5c7c66f0a | Nicholas Feinberg | 2021-03-30 12:42:53 -0700 Nerf hobgoblin damage a little bit Pulling back on very early-game lethality again. -------------------------------------------------------------------------------- 39f900b3a3 | Nicholas Feinberg | 2021-03-30 12:42:53 -0700 Remove D:1 halberd gnolls In line with removing d:1 gnoll bands and gnolls with nets, give players a little longer before experiencing the true, unadulterated terror of Gnoll. (Unless they're playing gnollcrawl.) -------------------------------------------------------------------------------- a1c911b16d | advil | 2021-03-30 10:40:16 -0400 Tweak the fsim test This test was using a mifi and is therefore impacted by shield skill in a way that is somewhat orthogonal to the point of the test (e.g. the results changed with 0b64aa269c0). Switch to a migl. -------------------------------------------------------------------------------- 6b54cd8ccd | advil | 2021-03-30 10:20:12 -0400 Fix a warning -------------------------------------------------------------------------------- 8289197e94 | Aliscans | 2021-03-30 08:16:52 +0300 Disable spellcasting skill gain for new berserkers. If automatic training was set, and the skills the player actually used all reached 27, the game would start to train the other skills, including the magic skills. This means that someone could offend Trog by training magic skills without casting a spell or visiting the skill management screen. This change turns magic skills off at the start of the game for a berserker (as already happened when you joined Trog at an altar), and avoids that possibility. -------------------------------------------------------------------------------- bb90f61fe4 | advil | 2021-03-29 19:33:39 -0400 sdl2 contrib: fix the build for ARM macs (12407) Basicaly just a missing include, seems to run fine with this fix. -------------------------------------------------------------------------------- 08ebd167ff | advil | 2021-03-29 19:02:23 -0400 libpng contrib: Force-disable neon optimizations on ARM (12407) This is apparently buggy, and preventing M1 builds from succeeding. -------------------------------------------------------------------------------- dbc16e4eb9 | Kate | 2021-03-29 23:07:23 +0100 Fix randart flight property not granting flight (MarcB) -------------------------------------------------------------------------------- ca8104f8d5 | Kate | 2021-03-29 21:20:09 +0100 Revert "Prevent draconians from getting armour troves" This commit didn't actually properly do the thing it claimed to do (trove_armour_1 could generate for draconians), and it also wasn't really necessary since draconians would still generally get lots of good aux armour from these troves. It also tried to prevent draconians from being asked for enchanted dragon armour as a trove toll, but this only worked on always flying, like Djinni. * Emergency flight and potions should be unchanged. * the abilities to start and stop flying are removed, as is ATTR_FLIGHT_UNCANCELLABLE and ATTR_LAST_FLIGHT_STATUS. The one remaining special case I know of (pointed out by Kate) is that Op and Mf have incentives not to fly; I'll deal with that in a separate commit. The old flying code had so many weird interactions that there may still be special cases that don't work right here... -------------------------------------------------------------------------------- be893936b8 | Edgar A. Bering IV | 2021-03-27 23:35:54 +0300 Another poison correction -------------------------------------------------------------------------------- 029fd2ff89 | Edgar A. Bering IV | 2021-03-27 20:45:29 +0300 Correct some poison magic numbers (12544) -------------------------------------------------------------------------------- 212f9d8316 | Edgar A. Bering IV | 2021-03-27 19:56:08 +0300 Correct static discharge resist message order -------------------------------------------------------------------------------- e6ed7f9ff8 | Edgar A. Bering IV | 2021-03-27 19:56:08 +0300 Correct Freeze messaging Correctly display attack punctuation for players and monsters, and appropriately print resist checking messages when players are hit with monster Freeze. -------------------------------------------------------------------------------- 0f416b50e7 | advil | 2021-03-27 12:41:04 -0400 Rename and document a #define for downstream use Downstream packaging targeting reproducible builds may set file mtimes to a stable value, e.g. 0; see #1702. Unfortunately .des cache invalidation relies on mtime, so this ends up breaking under these build conditions. This commit is aimed to refine and simplify the advice I gave in that issue thread: versioned des cache directories are now our (or at least my) official recommendation for dealing with this situation. This change makes it clearer that this option is not tied to DGL, and provides a hint about the option directly in the Makefile. I've tested this and it seems to work fine on its own. Resolves #1702 -------------------------------------------------------------------------------- 27d10ad80f | Nicholas Feinberg | 2021-03-26 18:35:05 -0700 New Iron Golem tile (Sastrei) Plus, de-rim Manticore. -------------------------------------------------------------------------------- f314fb5061 | Nicholas Feinberg | 2021-03-26 17:32:17 -0700 A bevy of new tiles (Sastrei) Goliath Frog, Manticore and Quicksilver Ooze. Get your mind out of the gutter! -------------------------------------------------------------------------------- e5c3fa52fd | Neil Moore | 2021-03-26 16:45:53 -0400 Use shrunken reencoded molluscs That is, convert the smaller version of title_anon_octopus_wizard.jpg to a .png. Not only does the Makefile assume .png for title screens, but client.html was already referring to the (missing) .png file. Also, remove the larger-resolution copy of the .jpg. -------------------------------------------------------------------------------- 38526b5af1 | Kate | 2021-03-26 20:43:44 +0000 Don't allow force-targeting spells when Xom is casting them Since it'd allow cancelling out of the spell. -------------------------------------------------------------------------------- d86de039f5 | Nicholas Feinberg | 2021-03-26 13:08:46 -0700 New octopus wizard title screen Source: https://crawl.develz.org/tavern/viewtopic.php?f=17&t=23228&p=308883&sid=73a8cc49 84fe0311df8fb40206007884#p308883 CC0'd by artist. Asked not to be credited. -------------------------------------------------------------------------------- 8e0dbb66be | advil | 2021-03-26 12:51:12 -0400 When force-swapping a ring, skip unequip effects (11879) Sacrifice hand, then there is a free ring slot, would apply unequip effects on the move, setting up an odd situation for players wearing only one ring on the sac hand target; they should have taken steps to get the ring on their other hand (e.g. by juggling rings, or setting jewellery_prompt = true). I had previously semi-resolved the most annoying point for this bug by making the default ring hand distinct from the default sac hand, but this led to display issues. This commit resolves the bug in a different way, by basically force-moving a ring in this situation while not applying penalties. It also doesn't prompt the player to rewear the ring if there is a bad inscription. Basically, this is intended to make sac hand have no effect on any scenario where a player is wearing one ring (though there is still some messaging). -------------------------------------------------------------------------------- a16a6a3dab | advil | 2021-03-26 12:51:12 -0400 Refactor some arm order stuff, again This changes how arm order is handled from efe1b4415. There, I tried to make things more consistent by providing the arm to be sacrificed as the last element of a vector. This unfortunately has run up against inconsistencies with display order, where it is better to show the left arm first (when there are two). Instead, localize the missing hand calculation to species.cc. It might be better to change the sac hand target, but I don't want to deal with the save compat involved. This commit is a regression for 11879; the default ring target is now once again the left hand (also the sac target). -------------------------------------------------------------------------------- 8ff0b3a6de | Nicholas Feinberg | 2021-03-26 07:42:44 -0700 Tweak Dj job recs Don't recommend berserker, do recommend transmuter. Might be fun? -------------------------------------------------------------------------------- 6bb3289e1e | gammafunk | 2021-03-26 00:16:58 -0500 checkwhite player.cc -------------------------------------------------------------------------------- dcf64ac7a9 | gammafunk | 2021-03-25 22:25:00 -0500 Updates to Hell entry and vestibule vaults In line with the removal of weaker Depths monsters, update the Hell entry vaults to place nothing worse than a tier 3 demon-wise and to update other monsters where appropriate. Likewise update the vestibule subvaults in a similar fashion, so that players coming from Depths won't be confronted with e.g. white imps. The Hells still place plenty of chaff monsters, but those at least have Hell effects and other much stronger monsters we don't use the in the vestibule. -------------------------------------------------------------------------------- cb5310748e | gammafunk | 2021-03-25 22:25:00 -0500 Updates to monsters in Depths encompass vaults Some changes to three Depths encompass maps in line with updates to vaults in 9d5772c0. This commit only handles encompass maps; future commits will address float and minivaults for Depths. map lemuel_river_lethe This vault has some idiosyncratic monster placement that's definitely due for an update. Replace the arrival hell hounds with spectral monsters, reinforcing the undead theme the map has, and replace weak spectrals and simulacra with spectrals drawn from the Depths monster set, which will generally be strong. Remove weaker monsters such as dancing weapons and skeletal warriors, giving suitable upgrades such is iron dragons, vampire knights, vampire mages, and deep elf death mages. Slightly buff loot in a couple places. Remove the guaranteed potion of brilliance under each orange crystal statue, which is not necessary and also a relic from when that potion granted Int. Reglyph certain symbols that override existing definitions and simplify shuffle/subst/nsubst. box_level_dp Update this map to have more coherent monster sets and loot distribution. For the outside area, instead of four monster themes of elves, tengu, spriggans, and a mashup of giants and humans, make two themes of elves+tengu and spriggans+giants. These new sets use only monsters appropriate for Depths, instead of pulling in lower-HD monsters from previous branches. Also update the bee area to have only meliai and a smattering of spark wasps, since killer and queen bees pose no threat. The meliai run the hive, but some wasps are raiding it! Update the potion loot in this area to not be only ambrosia, but any kind of potion, just with less instances. Also remove the guaranteed reflection amulet and scrolls of teleportation loot items in the central box. Both are vestiges of earlier versions of crawl where the teleport traps worked out of LOS to disperse monsters. I'm not sure that the teleport scrolls ever did anything meaningful, but the reflection amulet was actually stasis at one point, presumably to allow a (single) monster to be immune to the traps. In any case, neither need to be explicitly given as loot; the vault gives a high amount of loot as it is, including 16 superb_item. hangedman_crystal_crosses_colossus Minor updates to monster lists. Replace nagaraja, which didn't meet the flavor text's described theme of elemental magic, with the new salamander tyrant. Also replace lower-level elves with deep elf elementalists. Former can't use their awaken earth gimmick, but they can hit harder with fireball and likewise have freezing cloud. Replace weak simulacra with stronger ones, shock serpents with spark wasps, since we have those for Depths now. Remove mana vipers, since those are relatively weak and don't match the elemental theme. hangedman_spin_cycle Update the Depths and shared Dungeon/Depths monster sets. For the latter, replace boggarts with glowing orange brains, orc knights with spriggan berserkers, and naga mage with salamander tyrant. For the Depths-only sets, replace deep elf knights with deep elf death mages and orc high priests with spriggan air mages. Also replace death knights with liches and merfolk aquamancers with tengu reavers. Finally, move a lua block into braces. -------------------------------------------------------------------------------- a30e6d9879 | gammafunk | 2021-03-25 22:25:00 -0500 Rework an altar vault The vault due_chaos_kobolds placed kobolds with distortion or chaos weapons in late branches for flavor, but we're moving away from chaff monsters in late game areas. This commit reworks the vault to be a runed door vault that places in most of Dungeon, using depth-appropriate Kobolds with ugly thing monsters mixed in for later depths. -------------------------------------------------------------------------------- bcfb333f5d | gammafunk | 2021-03-25 22:25:00 -0500 Make some monster item functions more available The function ghost_monster_weapon() had been previously used only for ghost vaults, but this functionality is useful for any vault that wants to specify thematic monster weapons. This commit moves the function and associated table to dgn.monster_weapon() and fix up documentation of both the table and the function. Also rename random_item_def() to dgn.random_item_def(), to be consistent with use of the dgn namespace. Adapt all the vaults currently using these functions to the new names. -------------------------------------------------------------------------------- a1918b6f54 | kippig | 2021-03-25 22:25:00 -0500 Revamp Depths vaults to match the monster table Committer's Note: This commit updates some Depths vaults to replace relatively trivial monsters with more suitable ones, in line with recent changes to the Depths monster lists. I've cleaned up this commit's title, cleaned up a comment for grunt_enter_depths_giant_problem, and tweaked the monster list in hangedman_depths_entry_civil_slaughter in addition to what was done in the original commit. Subsequent commits make further updates to these vaults and other Depths vaults not covered by this commit. Closes #1791. -------------------------------------------------------------------------------- b2075fc2c6 | Nicholas Feinberg | 2021-03-25 20:04:18 -0700 Simplify Tutorial 2 Devolve the more complex endoplasm into a simpler ooze. -------------------------------------------------------------------------------- 3740f5f239 | Nicholas Feinberg | 2021-03-25 19:55:18 -0700 Improve dj msg order (rydianmorrison) Memorize the spell after telling the player about it, so that associated messages (e.g. rcfile remapping spells to another letter) print after you learn what the spell in question is. -------------------------------------------------------------------------------- d11a64c996 | advil | 2021-03-25 22:20:15 -0400 Don't generate .map files in normal circumstances These don't seem very useful these days; the code predates webtiles and also probably easy modern screenshotting. The underlying code is still used in various debug / crash scenarios. -------------------------------------------------------------------------------- eb8d7bc690 | Kate | 2021-03-25 22:46:58 +0000 Restore Majin-Bo's intended behaviour at low HP (PleasingFungus) Make it reduce HP to 1 if the full cost can't be paid, instead of preventing casting at all if HP is too low. -------------------------------------------------------------------------------- dc96bc62b2 | Kate | 2021-03-25 21:51:14 +0000 Fix compilation Whoops. -------------------------------------------------------------------------------- 3c0359225a | Kate | 2021-03-25 21:49:26 +0000 Don't allow paying more HP than you have with Majin-Bo equipped -------------------------------------------------------------------------------- 7beb378477 | Kate | 2021-03-25 20:28:52 +0000 Update Shadow Form description -------------------------------------------------------------------------------- df32bb633b | Nicholas Feinberg | 2021-03-25 12:22:37 -0700 Remove endoplasms' will Accidentally left in when they were turned into earlier-game monsters. Now Will:20 -> Will:0, matching other D:1 foes. -------------------------------------------------------------------------------- 37402fc473 | Nicholas Feinberg | 2021-03-25 08:57:23 -0700 Add good dogs (Sastrei) New tiles for hound, wolf, gnoll sergeant, gnoll shaman, and Grum. -------------------------------------------------------------------------------- 3e622ea735 | advil | 2021-03-25 08:43:02 -0400 Prevent crashes on unknown score species during death This should fully close the barn door behind the recent Dj score crashes (i.e. prevent these crashes from happening in the future if the old species enum ever again doesn't line up with what's on some server). -------------------------------------------------------------------------------- aaee5cf45b | Nicholas Feinberg | 2021-03-24 20:00:34 -0700 Many meat tiles (Sastrei) Bag of meat, meatzerker, large bag of meat, meat hydra, scourge, aaand... The Meatlord. -------------------------------------------------------------------------------- 49a6215e69 | Nicholas Feinberg | 2021-03-24 19:40:17 -0700 Raise Manifold Assault to level 5 It's a very fun spell and people have been putting it to great use, but it should require a little more investment to cast than it currently does. -------------------------------------------------------------------------------- dbedfec26c | Nicholas Feinberg | 2021-03-24 19:37:13 -0700 Buff gnolls (Sastrei) New tile! -------------------------------------------------------------------------------- 74b304f62e | advil | 2021-03-24 21:46:18 -0400 Improve automagic_stop behavior for Dj This lets this option work for Dj based on hp percentage, allowing players to set a distinct autofight threshold for autocasting vs general autofight on this species. Along the way I did fix automagic for Dj, deprecated though it is. But, automagic may eventually just get removed. Resolves #1851 -------------------------------------------------------------------------------- 2a0442d20d | advil | 2021-03-24 19:19:57 -0400 Save abyss on AK start Before this commit, this abyss was in a precarious state: generated, but not saved to disk. An AK start crash (of the kind that doesn't save the game) could load to a load that put the character in a featureless void, crashing immediately (except in wizmode). A previous commit does fixup for this scenario, but this commit should prevent it from happening for future games altogether. -------------------------------------------------------------------------------- f22881d5bd | advil | 2021-03-24 19:19:57 -0400 Fixup for unsaved abyss crashes If the game crashes without saving before an AK start has saved and while they are in the abyss, the abyss map is not saved, and they reload in an empty featureless void (that crashes). This fixup code simply adds a floor and moves the player to that position, as a very ad-hoc emergency measure so that the game will load. The results look weird but should allow the AK start to get out of the abyss (the position is also one that triggers an abyss shift immediately if they want to stick around). -------------------------------------------------------------------------------- 00efbec225 | Kate | 2021-03-24 20:53:32 +0000 Remove scrolls of random effects Replacing them entirely with scrolls of noise. Noise has a much better ability to do something meaningful when read-identifying, where scrolls of random uselessness would generally just cost a turn once per game. -------------------------------------------------------------------------------- 1b1bd85602 | Kate | 2021-03-24 20:07:01 +0000 Remove ants There are a large number of early-to-mid-game poison monsters, between the many types of snakes, spiders and bees. Ants didn't fill much of a gap and were barely used outside of anthill vaults (which weren't particularly distinct from beehives) and early Dungeon worker ants. Worker ants in D have their weight split between scorpions, hounds and iguanas, and in vaults are mostly replaced with scorpions. Soldier ants in vaults are mostly replaced with water moccasins or vampire mosquitos. -------------------------------------------------------------------------------- e4d627daa3 | Nicholas Feinberg | 2021-03-24 07:26:57 -0700 Unremove removed OLD_SP_DJINNI (kate, Implojin) It turns out this was still needed to avoid a crash. Oops! -------------------------------------------------------------------------------- 9892240997 | Nicholas Feinberg | 2021-03-24 07:10:00 -0700 Remove an insult to Centaurs Since they were removed ;) -------------------------------------------------------------------------------- 7101f7346d | Kate | 2021-03-24 11:30:02 +0000 Remove monster Freeze's ministun against other monsters This effect has long been gone from player freeze. -------------------------------------------------------------------------------- 2da19512c5 | Kate | 2021-03-24 10:21:55 +0000 Adjust some more player species-based vaults heliophobic_arrival_battle_scene tries to place player species skeletons, so Palentonga are fine (as they have a dummy monster), but Djinn caused vault errors. -------------------------------------------------------------------------------- a145f7f72e | Kate | 2021-03-24 10:19:39 +0000 Remove some more halfling remnants From a number of player-species-behind-glass vaults (most of which were also outdated from previous species removals/additions), and other vaults based on player species. -------------------------------------------------------------------------------- c38aae387d | Nicholas Feinberg | 2021-03-23 21:25:44 -0700 Remove irrelevant % lines for Dj Don't show MP or spell levels. -------------------------------------------------------------------------------- 6e9d80e302 | Nicholas Feinberg | 2021-03-23 21:22:30 -0700 Nerf a few more early orcs Still compensating for monster weapon buffs/simplification. Later game monsters can hopefully fend for themselves. -------------------------------------------------------------------------------- dd57cda9ea | Nicholas Feinberg | 2021-03-23 21:03:10 -0700 Make D spawn tables more sane Don't spawn monsters far beyond any depths they'd be relevant in. We'll miss you, D:11 quokka, but... not very much. Overall XP generally pretty close, both level-by-level and overall. Late D (D:10-15) has about 65-75% as many monsters as before. A few monsters now show up earlier than before, such as black bears and jellies. The baby dragons (steam/acid) are a bit more common. Quasits and soldier ants no longer spawn in D, in preparation for upcoming changes. -------------------------------------------------------------------------------- fceadbd91f | Nicholas Feinberg | 2021-03-23 19:11:29 -0700 Clarify !attraction (Pekkekke) -------------------------------------------------------------------------------- 2394d0fbd4 | Nicholas Feinberg | 2021-03-23 18:30:06 -0700 Rename ooze -> endoplasm To reduce confusion wrt their new freezy ways by giving em a new name. Also apply a gentle hint of frosty blue to their tile. -------------------------------------------------------------------------------- d7be90942d | Nicholas Feinberg | 2021-03-23 18:19:31 -0700 Fix Dj/Pa manual species order (|amethyst) -------------------------------------------------------------------------------- 7c41658a71 | Nicholas Feinberg | 2021-03-23 18:03:59 -0700 Ban Dj from Kiku and Veh I was undecided about this, but dev consensus seems to largely be behind the change. The goal is to reduce player confusion and to make ecumenical altars a bit less of a trap for Dj, since the 'spell gods' do extremely little for Dj. -------------------------------------------------------------------------------- 5a20dcc000 | Nicholas Feinberg | 2021-03-23 17:43:57 -0700 Fix monster Freeze damage display It was actually 1d5 but claimed to be 1d7, due to a difference between the monster casting code and the player casting code. -------------------------------------------------------------------------------- c3205288ea | Kate | 2021-03-23 22:03:28 +0000 Skip permanently useless potions with Gozag petition Specifically magic for Djinn, and lignification for Mummies/Ghouls. -------------------------------------------------------------------------------- 82d5626f1f | Aliscans | 2021-03-23 22:53:15 +0200 Sort items in a shop in a more predictable order when using ORDER_DEFAULT. As it was, ORDER_DEFAULT sorted items according to the order in which they were originally created by the game. This seems like an unhelpful default to me, and there is no option to control it. This change means that, when you go into a shop, items are sorted by DESC_DBNAME, and by DESC_PLAIN where this doesn't distinguish them. The exeception is known artefacts, which may not contain their DBNAME in the displayed item name (such as the mask of the Dragon, which is sorted with 'h'), so they use DESC_QUALNAME (which sorts it into 'm'). Similar items are together (all robes, all +0 robes, all wands, etc.), and most things are in alphabetical order. If you switch to "sort by price", this order is used for items which cost the same amount. Delete ORDER_TYPE. Change ORDER_DEFAULT to use its label. [committer's note: squashed all commits in the PR, and did some refactoring. Closes #1826.] -------------------------------------------------------------------------------- 10b8fb2fd0 | Goratrix | 2021-03-23 20:32:28 +0200 Supress a compiler warning on Windows -------------------------------------------------------------------------------- 4f19927427 | Nicholas Feinberg | 2021-03-23 08:39:26 -0700 Drop Dj weapon apts by 1 (nikheizen) Since their Spellcasting speciality means they have fewer things to skill, they have more XP sloshing around for hybrid builds. Make it slightly trickier to 'have it all'. Unarmed combat is untouched for now due to being pretty XP hungry anyway, but I might revise that later. -------------------------------------------------------------------------------- dd9af0c1c5 | Nicholas Feinberg | 2021-03-23 08:27:38 -0700 Fix Veh Dj power display bug Don't claim Veh can give Dj spells. -------------------------------------------------------------------------------- 32f27e8180 | Nicholas Feinberg | 2021-03-23 08:20:49 -0700 Gargoyle Jiyva max Invo title: Rockslime (hellmonk) -------------------------------------------------------------------------------- 1ccb5b4bd3 | Nicholas Feinberg | 2021-03-23 08:19:49 -0700 Dj: guarantee new spells on level up (ardl) Don't allow overlap between the random level-up spells and the starting book spells, if any. -------------------------------------------------------------------------------- fadad42f22 | Nicholas Feinberg | 2021-03-23 08:10:38 -0700 Display ooze freeze damage on xv -------------------------------------------------------------------------------- 2d21d9d4bd | Nicholas Feinberg | 2021-03-23 08:08:24 -0700 HACK: semi-fix Freeze death message Don't claim oozes "invoke" Freeze. -------------------------------------------------------------------------------- 2db2cc2744 | Kate | 2021-03-23 11:55:32 +0000 Add a message when equipping Wucad Mu as a Djinn -------------------------------------------------------------------------------- 8cfd13017f | Kate | 2021-03-23 11:36:11 +0000 Adjust formatting -------------------------------------------------------------------------------- 9bdce53276 | Kate | 2021-03-23 11:31:25 +0000 Don't let the staff of Wucad Mu activate for Djinn Since they'd only get the backfire effects and not the benefits. -------------------------------------------------------------------------------- 4d3ab90b7f | Kate | 2021-03-23 11:06:57 +0000 Let wisp/statueform players worship Yred (Yermak) -------------------------------------------------------------------------------- 640f5e82da | Kate | 2021-03-23 11:06:57 +0000 Don't let Djinn mutate poison resistance Since they're already immune. -------------------------------------------------------------------------------- 6942c2d063 | Edgar A. Bering IV | 2021-03-23 10:41:04 +0200 Changelog through 0.27-a0-737 -------------------------------------------------------------------------------- 0a99b990b4 | WhiteShark | 2021-03-23 09:09:18 +0200 Update to Blade Hands description The old Blade Hands description used the word "hands" regardless of the manipulator type for the species. In addition, it failed to mention that it would meld shields and gloves. A function was added to l-you.cc to get the hand type of the player species, and the Blade Hands description now checks hand type to determine the noun used for the player's manipulators. The description was also changed to say that shields and gloves are also melded. -------------------------------------------------------------------------------- af063e7127 | Aliscans | 2021-03-23 09:05:03 +0200 Change a comment to show the power of the warlock's mirror correctly. A comment in bolt::misses_player() states that a displayed SH of 20 gave a 50% chance of blocking ench-type effects, but the code gave the chance of blocking as SH*2 in SH*2+20; 2/3 for SH=20 and 1/2 for SH=10. Make the comment match. -------------------------------------------------------------------------------- 06f963a177 | Aliscans | 2021-03-23 09:05:03 +0200 Add a relevant debug statement for blocking AUTOMATIC_HIT bolts. Separate the "automatic hit" calculation from the "no automatic hit" check in bolt::misses_player(). Change the debug message for "automatic hit" to one which reflects the calculation it actually makes. -------------------------------------------------------------------------------- 3579b8c60d | Aliscans | 2021-03-23 09:03:58 +0200 Make autoexplore/travel wait for barbs to time out. As things stood, trying to travel with barbs stuck in you would see the game ask for confirmation, move a single square (if you accept) and then stop because of the HP loss. This change makes it so that the game waits for the spikes to time out before moving. You can't remove barbs if you are confused or asleep, but you can't travel then either, and player::is_sufficiently_rested() isn't used for anything else. -------------------------------------------------------------------------------- c3177a88c8 | bstrie | 2021-03-23 08:50:24 +0200 Use https rather than git protocol for submodules Fixes unexplainable breakage with `git submodule update`. As discussed with ebering on IRC. -------------------------------------------------------------------------------- a892ba84f6 | Nicholas Feinberg | 2021-03-22 19:30:46 -0700 Reflavor misleading engulf attacks (dinky) Starcursed masses and tentacled starspawns don't have the 'engulf' effect from e.g. water elementals, so they shouldn't claim to engulf. -------------------------------------------------------------------------------- 03f32850a8 | Neil Moore | 2021-03-22 22:26:30 -0400 Correct syntax in docs. [skip ci] <- supposedly this works now? -------------------------------------------------------------------------------- 9302c29d50 | Kate | 2021-03-23 02:23:50 +0000 Fix tag_upgrade builds -------------------------------------------------------------------------------- 6601e7f8fe | Nicholas Feinberg | 2021-03-22 18:55:04 -0700 Make dj crash less Accidentally deleted their flat HP mut in the merge. -------------------------------------------------------------------------------- 8f833cc6cc | Kate | 2021-03-23 01:44:24 +0000 Make Rupert's Berserker Rage a natural ability So it's no longer affected by antimagic, since that doesn't really fit the flavour. -------------------------------------------------------------------------------- 922fb1cf6a | Kate | 2021-03-23 01:44:24 +0000 Rework spell handling for silencable innate abilities Removes the MON_SPELL_NO_SILENT flag in favour of a new category of spell, MON_SPELL_VOCAL, for natural abilities that cannot be used when silenced. Fixes buggy spellbook display for various monsters (#12516). A few monsters are changed in functionality: Vault wardens' Seal Doors is wizardly instead of magical, so counts for Trog piety. Xtahua's Paralyse, Rupert's Paralyse and Confuse, and Geryon's Summon Hell Beast are vocal instead of magical, so are no longer affected by antimagic. -------------------------------------------------------------------------------- eb20345811 | Kate | 2021-03-23 01:44:24 +0000 Remove an obsolete special-case Natural spells are already silent unless specified otherwise. -------------------------------------------------------------------------------- 30b8c66569 | Nicholas Feinberg | 2021-03-22 18:31:35 -0700 Lizard vault fixes (r-i) -------------------------------------------------------------------------------- 098d8ac6d2 | Nicholas Feinberg | 2021-03-22 18:15:04 -0700 More Sastrei tiles Brighten up the yak and the balrug and add a new catoblep. -------------------------------------------------------------------------------- 53cd4ccad6 | Nicholas Feinberg | 2021-03-22 18:03:23 -0700 Remove Yred's nonliving ban It's neither an interesting gameplay twist nor a fun bit of flavour that Yredremnul bans nonliving players (i.e. gargoyles and djinn) from worship. Are you going to tell me that a 'Gargoyle Death Knight' is not cool? No, you aren't. Let the grdk soar once again! -------------------------------------------------------------------------------- c3fac4b18b | Nicholas Feinberg | 2021-03-22 17:47:19 -0700 New race: Djinni Djinn are intended to create a new and distinct 'caster' experience. Floating spirits formed from smokeless fire, they have no MP, instead casting spells using their HP. They also cannot learn spells from books; they instead get spells randomly and naturally, starting on XL 3 and continuing on every even level. The former mechanic is inspired by a design from kilobyte, who created another 'Djinni' species in 0.13. The latter comes from pubby, who created an 'Oni' race using it in various DCSS forks. I'm indebted to their ideas, though this implementation is somewhat different from both. Let's see if this new race does better than their predecessors! -------------------------------------------------------------------------------- 0520e8ecd4 | Nicholas Feinberg | 2021-03-22 17:47:19 -0700 Remove Halflings DCSS's philosophy on species is that they should provide meaningful choices and interesting, distinct play experiences. We originally had four types of elf, three types of dwarf, and gnomes, among others, but it really wasn't very interesting to try to win all of them, since they were fundamentally so similar to each other. Since then, we've moved towards species with much more distinct features than minor skill apt differences or dietary preferences, and the game has been better for it. Halflings had the following distinguishing features: - Small. (Couldn't use some weapons. Shared with kobolds.) - rMut. (Mostly irrelevant.) - Fantastic slings apt. (But slings are usable at 0 skill and take very little skill to reach mindelay, so how much did this really matter?) - Somewhat more 'fight-y' apts than Kobolds. (But other species do that better.) They weren't a *weak* species, they just weren't a very interesting one. Goodbye, Frodo... may you find happiness, off in that place where Gimli and Legolas went. -------------------------------------------------------------------------------- 3f424a255b | Edgar A. Bering IV | 2021-03-23 00:07:45 +0200 Give salamander tyrants bands -------------------------------------------------------------------------------- 02918e9f87 | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 New Monster: salamander tyrant (i-x) Salamander tyrants are meant to complement nagaraja as a top-tier threat in Snake, so that the latter don't have to do so much heavy lifting in end vaults etc. They're also meant to help depths lava salamanders have a bit more relevance. Snake has lots of melee bruisers, so the tyrant is a damaging spellcaster: flimsier but with some hard hitting spells it likes to cast a lot. The Tyrant is also fine with sitting back behind tougher Naga cousins: its spells don't require line of fire, only line of sight. Two spells play with terrain: Eruption fires the magma-themed upheaval flavour, hitting the player with partially-resistible BOM flavoured damage and creating temporary lava (constraining the player's movement). Pyroclastic Surge strikes foes of a tyrant that are above or adjacent to lava with pure fire damage. The third is a debuff weakening gaze, inflicting DUR_WEAK on the player. As a gaze attack it counts as instant and does not require line of fire, only line of sight. Combined with the terrain constraining attacks the gaze should make tyrants tough to fight in melee, but in a different way than the tankier Naga. -------------------------------------------------------------------------------- 4813a55755 | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Don't give new Naga Magi Haste Other (i-x) It takes away from the distinctiveness of salamander mystics. With the player under a hail of curare-spit and slowed that way, haste other was a bit overboard. -------------------------------------------------------------------------------- 6ecf17fd6c | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Turn Naga Mages into more supportive allies To give Naga better chances of catching a player, Naga Mages drop some of their attack spells (and teleport other) in exchange for haste other and a new spell: concentrate venom. Concentrate Venom enchants a target allied monster (either N or S type) and turns its poison spit or AF_POISON melee into curare. -------------------------------------------------------------------------------- 86023d4c85 | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Tweak Nagaraja spells Remove force lance (which gets the player away from Nagaraja's strong constrict) and replace teleport other with dimension anchor. Nagaraja are the top tier threat in snake and should be hard to escape, but being Naga even hasted most players can get away. -------------------------------------------------------------------------------- 8b94e06931 | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Give Naga Ritualists normal weapons (kate-) -------------------------------------------------------------------------------- db6eed0942 | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Make Naga Ritualists priests, remove force lance from their spellbook The priest change is mostly flavour, since they wrangle mana vipers it doesn't make sense that they'd be vulnerable to antimagic. Every spellcasting enemy except guardian serpents in snake has force lance, which works against getting snakes close to the player, so that's cut from their book. -------------------------------------------------------------------------------- e81c3644fc | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Give Naga Warriors battlecry Nagas are slow, so its easier for the player to avoid being hit by them. Battlecry will increase the consequences of being hit when Warriors are nearby. -------------------------------------------------------------------------------- 43b6169a3e | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Increase Naga and Naga Warrior damage Plain Naga are rather flimsy, don't hit that hard in terms of base dam, and have no fancy things to attack the player with. Naga Warriors are much tankier, but by the lair branches don't have a base dam appropriate to their designed threat level and tankiness, and also lack extra tools. Nagaraja base damage isn't tweaked, since they have spells and stronger constrict. -------------------------------------------------------------------------------- a7b8d12a86 | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Accelerate poison damage Poison damage afflicts the player with a known "damage debt" to be payed out over time. However, it ticks so slowly that the player can usually finish a poison fight and then rest before the poison becomes a serious tactical consideration. Accelerating poison will make it more relevant on shorter timescales; though the large number of curing potions spawned per game might also need to be trimmed. Specific number changes: Increase the speed cap to 5hp/aut, the speed minimum to 0.1hp/aut and the exponential speed from 1/15th of current poison per 10 aut to 1/5th of current poison per 10 aut. -------------------------------------------------------------------------------- e1682847c3 | Edgar A. Bering IV | 2021-03-22 23:58:59 +0200 Pull out some magic numbers in the poison formulas This will make tuning them easier. -------------------------------------------------------------------------------- 48170eeafe | Kate | 2021-03-22 21:44:09 +0000 Fix spelling -------------------------------------------------------------------------------- 265f56af43 | Kate | 2021-03-22 21:44:09 +0000 Remove a duplicated vault check -------------------------------------------------------------------------------- e0bb579ed7 | Kate | 2021-03-22 21:44:08 +0000 Remove antennae from Desolation of Salt humans -------------------------------------------------------------------------------- 780f848edf | advil | 2021-03-22 16:07:46 -0400 Mark manifold assault as a direct attack for autofight This allows CMD_AUTOFIGHT with autofight_throw=true to activate it when quivered, among other cases. -------------------------------------------------------------------------------- a0013940fb | Nicholas Feinberg | 2021-03-21 20:03:08 -0700 Lighten yaks up a bit (hellmonk) -------------------------------------------------------------------------------- c0f43fc05a | Nicholas Feinberg | 2021-03-21 19:53:54 -0700 Unleash a yak attack (Sastrei) New tiles that look less like sheep! Also death yaks. -------------------------------------------------------------------------------- ec79a4c0d2 | Nicholas Feinberg | 2021-03-21 19:48:31 -0700 Make oozes freeze (hellmonk) In the quest to make D:1 a bit more interesting without being enormously deadly or intimidatingly complex, give oozes a new gimmick: 1d7 Freeze at roughly 1/3rd cast freq. Halve their HP, reduce their base damage to 3, and place them in the D:1-3 range. Vaults are unchanged because old oozes didn't do anything anywhere, so there should be no issues with them being replaced by a monster that doesn't do anything after D:3. -------------------------------------------------------------------------------- 0b40708614 | Kate | 2021-03-22 01:31:47 +0000 Staticify some functions -------------------------------------------------------------------------------- c204baa176 | Kate | 2021-03-22 01:28:24 +0000 Fix display of stat rings on known items screen (particleface) -------------------------------------------------------------------------------- 26b8c838cb | Nicholas Feinberg | 2021-03-21 17:33:02 -0700 Unleash the python (hellmonk) Change ball pythons to only spawn in D:1-3 (instead of up to D:8!), and make them 4x as common in their range. Overall XP is unchanged from D:1-4. -------------------------------------------------------------------------------- fe1b84c61a | Nicholas Feinberg | 2021-03-21 17:26:14 -0700 Remove leopard geckos They were identical to quokkas, and the latter have a more entertaingly Australian flavour. https://www.pacificsciencecenter.org/wp-content/uploads/lydia-gecko-1920x1080.jp g -------------------------------------------------------------------------------- a572aaf4d4 | Nicholas Feinberg | 2021-03-21 17:01:04 -0700 Remove hobgoblin weapons, buff base damage (hellmonk) To differentiate them a little more from other early weapon users and also decrease the amount of early junk lying around. Beware the hob that does find a weapon, though! -------------------------------------------------------------------------------- 5910a5bdcb | Nicholas Feinberg | 2021-03-20 22:33:27 -0700 Remove early-game weaponless enemies Since the difference between enemies with weapons and those without is now so significant, stop spawning early-game enemies without weapons. This is a small player buff as well, since there's a greater chance of finding a venom dagger or such. -------------------------------------------------------------------------------- a52386242a | Nicholas Feinberg | 2021-03-20 22:32:32 -0700 Nerf early-game weapon user damage To compensate for the removal of 1d3 weapon damage reduction and also weapon delay removal, cut about 3 damage off many early game enemies. Also, split centaur damage into hit and kick, as a thematic way to nerf their ranged a little bit. -------------------------------------------------------------------------------- b4952372f7 | Nicholas Feinberg | 2021-03-20 22:13:04 -0700 Avoid a divide by zero -------------------------------------------------------------------------------- d01e12f17d | Nicholas Feinberg | 2021-03-20 17:49:47 -0700 Remove the rim of the moon (wheals) -------------------------------------------------------------------------------- fd0ee990f0 | Kate | 2021-03-21 00:45:17 +0000 Make Shatter deal bonus damage to toenails Toenail golems and rockslimes were on LRD's list of monsters that can be directly targeted, but not on Shatter's list of monsters that take bonus damage. Instead use the same list for both spells. -------------------------------------------------------------------------------- 01df23dd3f | Kate | 2021-03-21 00:45:17 +0000 Always consider ring pluses to be known Since they're always the same. Potentially they should no longer use item.plus at all to simplify the code, but currently some Sprint maps do still use redefined rings with different plus values (particularly for slaying in meatsprint). -------------------------------------------------------------------------------- 5d5f89c6df | Nicholas Feinberg | 2021-03-20 17:43:19 -0700 Update skill descriptions Many of these referenced mechanics and spells that have been gone for most of a decade. -------------------------------------------------------------------------------- f5bc2b81cb | Nicholas Feinberg | 2021-03-20 16:22:41 -0700 Show weapons on new Balrug tile ??oops -------------------------------------------------------------------------------- 830a91cb63 | Nicholas Feinberg | 2021-03-20 16:18:35 -0700 New Chei splash (Sastrei) -------------------------------------------------------------------------------- 0ad5b59bb0 | Nicholas Feinberg | 2021-03-20 16:18:21 -0700 New Balrug & Moon Troll tiles (Sastrei) -------------------------------------------------------------------------------- a58904a08d | Nicholas Feinberg | 2021-03-20 16:09:33 -0700 Mark Manifold Assault only temp useless Your currently wielded weapon is a temporary status, not a permanent condition, so it shouldn't prevent e.g. spell memorization. -------------------------------------------------------------------------------- aed091b46b | Nicholas Feinberg | 2021-03-19 19:40:43 -0700 Display Freeze damage in monster -------------------------------------------------------------------------------- d6162235be | Nicholas Feinberg | 2021-03-19 18:30:38 -0700 Remove rocksliem (RoGGa, 12540) -------------------------------------------------------------------------------- 359e429f13 | Edgar A. Bering IV | 2021-03-19 23:28:06 +0200 Describe curse boosts in chardumps (vt) -------------------------------------------------------------------------------- 86f87662fd | Nicholas Feinberg | 2021-03-19 08:32:58 -0700 New Geryon sprite (sastreii) -------------------------------------------------------------------------------- 7530f89582 | Edgar A. Bering IV | 2021-03-19 12:55:13 +0200 Fix ccache clang in CI? -------------------------------------------------------------------------------- 0c81a3c1c3 | Nicholas Feinberg | 2021-03-18 18:49:32 -0700 Swap Dr/Pa in NG (TheMeInTeam) Draconians are a somewhat fragile species with a wide set of different active abilities to learn (depending on which colour of draconian you become.) Palentongas are more durable (even after the nerf) and have a simpler playstyle to learn. Let's try this way out. -------------------------------------------------------------------------------- 3a15de6056 | Nicholas Feinberg | 2021-03-18 18:43:24 -0700 Pull back on Palentongas Think they got overtuned a bit during 0.26-a. Reduce their HP apt to the original +0. -------------------------------------------------------------------------------- 77a6b55cf3 | Kate | 2021-03-17 22:25:07 +0000 Update some item descriptions -------------------------------------------------------------------------------- d1c2c16caa | Kate | 2021-03-17 22:25:07 +0000 Don't allow targeting empty space with Poisonous Vapours Instead of letting it be aimed at empty space (but costing a turn and MP in case there's an invisible monster there), require a visible target for it to work. Also update some messaging and add a use of BASELINE_DELAY. -------------------------------------------------------------------------------- 8fc010af70 | Kate | 2021-03-17 22:25:07 +0000 Fix indentation -------------------------------------------------------------------------------- c1da3516c2 | Nicholas Feinberg | 2021-03-17 13:24:35 -0700 Make vampires mad (ShaperMC) -------------------------------------------------------------------------------- 6a6c47eaed | Nicholas Feinberg | 2021-03-17 08:44:07 -0700 Give hafi/kofi bucklers Since shield penalties are more meaningful now, and small races have higher penalties. -------------------------------------------------------------------------------- f18a54e897 | Nicholas Feinberg | 2021-03-17 07:41:07 -0700 Tune Ironbound Thunderhulk spellpower up slightly Player feedback suggested they weren't scary enough at range. This moves them from 3d18 to 3d21 damage, plus a lil accuracy bump. The buffs will continue until killcounts improve. -------------------------------------------------------------------------------- ea86b47111 | Nicholas Feinberg | 2021-03-17 07:19:13 -0700 New Green Death and Orange Demon tiles (Sastreii) -------------------------------------------------------------------------------- ac1c3f1d60 | Edgar Bering | 2021-03-17 04:14:57 -0400 Checkwhite -------------------------------------------------------------------------------- f435b565c8 | Nick Johnstone | 2021-03-17 09:21:24 +0200 Enable full screen PWA for WebTiles on iOS Currently, adding the webtiles interface to the desktop on iOS or iPadOS creates what is effectively a bookmark. It opens in the browser, with the domain displaying, and tabs available. By adding these meta tags, if a user creates a PWA for WebTiles on iOS, it will launch in full screen as a separate application to the browser, without the standard tabs interface. This should be a fairly low risk change, as users have to opt in to creating a PWA. The biggest issue is that this hides the browser navigation if you’re using a PWA, so you might theoretically be able to navigate to part of the site that you couldn’t easily return from. This might seem like an edge case, but it would be awesome to be able to play DCSS full screen on an iPad with a keyboard. -------------------------------------------------------------------------------- 0c9945aa31 | Edgar A. Bering IV | 2021-03-17 09:10:29 +0200 Elaborate on some clua documentation -------------------------------------------------------------------------------- 330a3fb6b6 | mgdelmonte | 2021-03-17 09:10:29 +0200 New clua function spells.describe Add the spells.describe function, which provides the same description one can find by accessing a particular spell in the memorised spells list. Useful for evaluating a spell's current damage, accuracy, and other attributes, within a script context. [ Committer's note: Rebased, reworded commit message. Closes #1813 ] -------------------------------------------------------------------------------- b5737ff2c0 | hellmonk | 2021-03-16 20:28:56 -0700 Allow quokkas on D:1. They're not that much different from leopard geckos. Slightly lowered their spawn rate overall - I think this is fine but it probably increases early exp a little bit. -------------------------------------------------------------------------------- 87fe7d4a8f | hellmonk | 2021-03-16 20:28:56 -0700 reduce item generation in early dungeon -------------------------------------------------------------------------------- 9dbe4339e4 | hellmonk | 2021-03-16 20:28:56 -0700 increase ball python melee damage by 1 -------------------------------------------------------------------------------- 69cf137300 | hellmonk | 2021-03-16 20:28:56 -0700 Adjust weapon subtype selection. Allow higher basetype weapons to spawn (with low probability) on early floors. Adjust their spawn rate downward overall to compensate. Note: I'm very unsure about the numbers on this, but a quick objstat seemed to indicate that it would be acceptable for D:1. Further adjustment may be required. -------------------------------------------------------------------------------- 0dccfbd8cf | hellmonk | 2021-03-16 20:28:56 -0700 Allow earlier book, manual, and staff generation. Removes a couple checks preventing books, staves, and manuals from generating on early floors. Many of these were replaced with scrolls or potions, so it's probably a nerf overall. -------------------------------------------------------------------------------- c2beb70d14 | hellmonk | 2021-03-16 20:28:56 -0700 Legalize early rare scrolls. This removes the depth_mod check for scrolls of acquirement, summoning, vuln, silence, brand weapon, torment, and holy word. Scroll weights for those scrolls were decreased slightly (except for vuln, which was increased) to compensate and to make the total scroll weight nicer. I could see dropping weight further if needed, and there is some concern about startscumming with ?acq. Coincidentally, this despoilers scroll id; there is no longer a reason to track the floor you found a scroll on. -------------------------------------------------------------------------------- f8ad8ab245 | hellmonk | 2021-03-16 20:28:56 -0700 Allow shop placement on D:1-3 Let the player see some exciting shop items earlier. This is not as much of a power buff as it seems, since the player won't have enough gold to buy things in most cases (though I could see banning consumable shops or raising prices, perhaps). Shop rate per floor of D is nerfed so that the total number of dungeon shops is slightly lower overall. -------------------------------------------------------------------------------- ca034ae587 | Kate | 2021-03-16 19:15:24 +0000 Fix a crash when trying to enslave a Mara clone -------------------------------------------------------------------------------- 90476cec82 | Kate | 2021-03-16 03:45:04 +0000 Give quicksilver oozes acid immunity As with the majority of high-level slimes. Rockslimes are left without it since they're primarily made from rock. -------------------------------------------------------------------------------- 31e422a34a | Kate | 2021-03-16 03:45:04 +0000 Fix grammar in horn of Geryon description -------------------------------------------------------------------------------- 0a03284674 | Nicholas Feinberg | 2021-03-15 20:37:38 -0700 Remove chilling breath from monster white draconians The knockback isn't particularly needed for their design. The implementation in mons-cast is a bit of a hack, alas... -------------------------------------------------------------------------------- 87aa48b03e | Nicholas Feinberg | 2021-03-15 20:25:06 -0700 s/Leech/Vampire's Tooth/ Too many vamp unrands! -------------------------------------------------------------------------------- b8a12bb016 | Nicholas Feinberg | 2021-03-15 20:23:36 -0700 Make Vaults wizards a bit uglier 2-4 ugly thing bands, instead of 1-3. A single ugly thing pal was just sad. -------------------------------------------------------------------------------- 7c350831d9 | Nicholas Feinberg | 2021-03-15 20:23:04 -0700 Gently nerf Leech to +5 Mega-Vamp is an extremely strong property, and with a high enchantment, Leech isn't just good, it's a bit absurd. Tone down its enchantment by 3 points, from +8 to +5. -------------------------------------------------------------------------------- 5244db0575 | Kate | 2021-03-16 02:05:45 +0000 Adjust some reanimation handling Fix messaging for animating skeleton-only monsters with the sword of Zonguldrok, and remove an obsolete autopickup check with Animate Skeleton. -------------------------------------------------------------------------------- f1ce4671d2 | Kate | 2021-03-16 02:05:45 +0000 Reword a monster description To be a little shorter, rather than duplicating the spell description. -------------------------------------------------------------------------------- 2d5cf1dcd3 | advil | 2021-03-15 11:06:05 -0400 Update an outdated file extension in Makefile -------------------------------------------------------------------------------- f7bc8fed1b | Nikolai Lavsky | 2021-03-15 07:25:10 -0700 Fix ?/m entry for rockslimes Because of a missing delimiter, `?/mrockslime` showed the river rat's description. -------------------------------------------------------------------------------- 8dd3ea4f36 | Nicholas Feinberg | 2021-03-14 21:43:00 -0700 Reduce convoker & preserver frequency It's a bit much. Switch out for various other monsters. Lower overall monster count to compensate for the increased XP. -------------------------------------------------------------------------------- 9c408523ab | Nicholas Feinberg | 2021-03-14 21:31:21 -0700 Give frosthearts sInv To balance out various new monsters added to Vaults without sInv, give a wizardy monster a little better vision. Improve their prescription. You know. -------------------------------------------------------------------------------- a011b72ad2 | Nicholas Feinberg | 2021-03-14 21:29:21 -0700 Animate creeping frost -------------------------------------------------------------------------------- 7c5cdd226b | Nicholas Feinberg | 2021-03-14 21:06:01 -0700 Ogreify thunderhulk weapons again Big monsters need big weapons. Rip and tear! -------------------------------------------------------------------------------- 8141940efc | Nicholas Feinberg | 2021-03-14 20:56:31 -0700 Nerf a few other slow weapon-wielding mons Numbers chosen arbitrarily and unscientifically. Closes #1827. -------------------------------------------------------------------------------- b80fe6c15e | hellmonk | 2021-03-14 20:50:04 -0700 Nerf ogre and Sigmund base damage. This partially compensates for the monster weapon damage changes. I'm hitting these guys since they are notorious early game monsters that always spawn with a high base damage, high delay weapon. Other monsters might need to be adjusted later; in particular, club hobgoblins, goblins, (halberd) gnolls, centaurs, and early 2h ogres are worth monitoring. Some later monsters like yaktaurs may also need compensatory damage changes, but with luck this level of player nerf will be acceptable without too much further adjustment. -------------------------------------------------------------------------------- d9c6a3bf67 | hellmonk | 2021-03-14 20:50:04 -0700 Don't decrease monster weapon damage by 1 + random2(3). -------------------------------------------------------------------------------- 09634a79bb | hellmonk | 2021-03-14 20:50:04 -0700 Fix a > 10 year old monster weapon damage bug. Monsters with positively enchanted weapons now roll slaying properly. -------------------------------------------------------------------------------- 581982f5c1 | hellmonk | 2021-03-14 20:50:04 -0700 Rework monster weapon delay. Previously, monsters had weapon delay equal to the average of their weapon base delay and 1.0. This was fairly esoteric knowledge; it wasn't displayed in xv, for example, and also didn't make a whole lot of sense. Even powerful, high hd monsters attacked much slower with a high delay weapon. Additionally, DCSS has a parameter (attack_energy) that adjusts monster attack speed and is displayed. This commit sets monster attack delay to 10 regardless of base weapon type. In the extreme cases, a monster with a quick blade will attack about 10% slower than before, and a monster with a scythe will attack 50% faster. Overall it's a pretty substantial damage buff for monsters with heavy weapons. Particular outliers can be adjusted later through attack_energy or changes to base damage. -------------------------------------------------------------------------------- aabfd21ae0 | Kate | 2021-03-15 01:12:19 +0000 Identify guaranteed ambrosia in bee special rooms -------------------------------------------------------------------------------- 2cd41d7273 | Kate | 2021-03-15 00:59:20 +0000 Consider corpses as useless items for Jiyva piety -------------------------------------------------------------------------------- 337aa9fb86 | Kate | 2021-03-15 00:52:45 +0000 Let Chilling Breath knock back non-fliers And make Wind Blast knockback the same against fliers and non-fliers, so that flight sources can eventually be made permanent without there being places that the player would want to keep toggling it off. -------------------------------------------------------------------------------- 70b080b6ed | Kate | 2021-03-14 21:34:01 +0000 Update a comment -------------------------------------------------------------------------------- 3a9f0a9c12 | Nicholas Feinberg | 2021-03-13 12:54:53 -0800 Flip thunderhulk tile lightning (lici) Try to avoid confusion with Haste status. -------------------------------------------------------------------------------- 56d34f704d | Nicholas Feinberg | 2021-03-13 08:15:08 -0800 Thunderhulks are ogre I just extremely enjoy the ogrish theme. Expect this to be reverted again soon! -------------------------------------------------------------------------------- 7536a348d8 | Nicholas Feinberg | 2021-03-13 07:13:53 -0800 Preemptively tune quicksilver oozes down Let's try em at somewhat lower HP and see what they do. -------------------------------------------------------------------------------- e79d73bdd1 | Nicholas Feinberg | 2021-03-13 07:10:58 -0800 Simplify -------------------------------------------------------------------------------- c6addc0a40 | Edgar A. Bering IV | 2021-03-13 08:19:38 +0200 Reduce Ash skill boost This was still a bit overtuned. Getting to 2 curses in a category got to the same skill boost as "fully bound" under old Ash; early on this could already get ahead of the power curve. In the long run, since the number of curses is uncapped, a player could potentially reach double the boost of old Ash in a particular curse category. Taking the time to craft focused curses is a strategic tradeoff, and players are enjoying it so I don't want to put a hard cap on the boost. -------------------------------------------------------------------------------- 6becf1495a | Edgar A. Bering IV | 2021-03-13 08:13:21 +0200 Text tweaks for beastmasters -------------------------------------------------------------------------------- 2d681adce0 | Nicholas Feinberg | 2021-03-12 21:29:03 -0800 Impart the importance of friendship Make sure beastmasters always come with company. (Ban unbanded vault beastmasters.) -------------------------------------------------------------------------------- df28dd9bf2 | Edgar A. Bering IV | 2021-03-12 21:27:57 -0800 New monster class flag: M_REQUIRE_BAND Some monsters really don't work well without their bands. This flag prevents vaults from placing a monster with this flag (even via 098 and friends) unless the placement calls for a band. -------------------------------------------------------------------------------- cffcca8328 | Nicholas Feinberg | 2021-03-12 21:14:10 -0800 Reduce Vaults spawns Compensate for the removal of chaff & the new monsters. Total XP is essentially unchanged. -------------------------------------------------------------------------------- 0b001bae98 | Nicholas Feinberg | 2021-03-12 21:14:05 -0800 Vaults monsters reworks! Unify ironheart and ironbrands into ironbounds, per request. Hopefully this won't cause too much confusion. Ironbound Frostheart: Spellcasting monsters with a new Creeping Frost spell, which deals cold damage to and flash-freezes all enemies adjacent to walls. They also have an AF_COLD touch attack. Overall, they're intended to be a mid-tier threat which plays with the terrain of Vaults (where there tend to be a lot of walls around!) and which fills a gap in rC-checking monsters there. Ironbound Thunderhulks: Playing around with new targeting constraints, this imposing Vaults foe tosses smite-targeted lightning at its foes. Just one catch - it can't hit the player if they get within 1-2 tiles of it! Seems like a fun way to play with the mobs and spaces of Vaults. Ironwhip Beastmaster Instead of having beasts spawn in the vaults on their own, let's add on a Vaults thematic strength: bigger fights with synergizing bands. The Ironwhip Beastmasters are the ones who have taken the late, rare Lair monsters to the Vaults. Beastmasters come with a "Goad Beasts" natural ability, which gives all beasts in LOS a bonus to energy equal to one EUT_MOVE. This is less pronounced than haste other or a torpor snail aura for basic combat; however they come with bands of trampling dire elephants or fire breathing lindwurms. Here the goad helps the monsters in the band manouver around one another to better get to the player. For trampling monsters this does have a different mechanical impact than a torpor snail aura: after a successful trample that moves the player the remaining goaded elephants have a better chance at getting a hit. Beastmasters also spawn with nets, because what's a good beast master without a net. Move ugly things to wizard bands in Vaults This is more for Lore than for mechanics. Having plain ugly things appear either with wizards in small bands or with very ugly things in larger bands combined with their description is a subtle storyline of "creation killing creator". -------------------------------------------------------------------------------- c5cd5cfaf1 | Nicholas Feinberg | 2021-03-12 21:09:31 -0800 Add dire elephant bands to Vaults Again recontextualizing a late, rare Lair monster and replacing the trampling dragons that have been removed from Vaults, dire elephants should hopefully be a fun threat. I'm very uncertain about where to categorize them in terms of threat tiers. -------------------------------------------------------------------------------- 08f024a8fe | Nicholas Feinberg | 2021-03-12 21:09:31 -0800 Add lindwurm bands to Vaults Replacing the fire dragons that have soared away from Vaults, lindwurms are a weaker threat that spawn in bands of 2-4. It'll be fun to see them in a different context from their rare appearances in Lair, and they should still be able to do some damage. -------------------------------------------------------------------------------- 29c3982eda | Nicholas Feinberg | 2021-03-12 21:09:31 -0800 Remove chaff orcs from Vaults Orc warlords deserve better friends :) A loyal circle of orc knights only! -------------------------------------------------------------------------------- 262705bbc8 | Nicholas Feinberg | 2021-03-12 21:09:31 -0800 Remove basic centaurs from Vaults Far too weak to be relevant. Centaur warriors only here! -------------------------------------------------------------------------------- 1fe5a257b9 | Nicholas Feinberg | 2021-03-12 21:09:31 -0800 Add peacekeepers to Vaults Peacekeepers (manticores that buff nearby golems' damage) are a fun monster that plays well with Vaults' themes. I don't believe sharing these from Desolation will dilute the latter's uniqueness too much, and it's neat to have a monster re-used in a somewhat different context. -------------------------------------------------------------------------------- 2c6b4450c0 | Nicholas Feinberg | 2021-03-12 21:09:31 -0800 First pass on new V:1-4 spawn tables Cut out chaff and monsters that heavily duplicate D/U/E. Focus on monsters that work well with Vaults' terrain: wide-open spaces with frequent door chokepoints, few corridors. (Great for big mobs and ranged enemies.) -------------------------------------------------------------------------------- 48f24ef436 | Nicholas Feinberg | 2021-03-12 21:09:31 -0800 WIP Vaults:5 re-layout Trying to approximate the status quo pretty closely. XP is slightly higher now, but less than a 2% increase. -------------------------------------------------------------------------------- 9a45c12a61 | Edgar A. Bering IV | 2021-03-12 21:09:09 -0800 Move desolation humans to 'a' For "ancients" since they're ancient cultists; this frees up some space on p for the new vaults monsters. They're still human genus and species -------------------------------------------------------------------------------- e6a60533fa | Nicholas Feinberg | 2021-03-12 19:10:08 -0800 More Donald lines -------------------------------------------------------------------------------- 52eb5d5579 | Nicholas Feinberg | 2021-03-12 19:10:08 -0800 Remove death oozes Death oozes are slimes that aren't a great threat almost anywhere they appeared. They're essentially a midpoint between necrophages and ghouls that's slightly faster than either, which isn't an extremely exciting or distinctive monster design. Their best feature, by far, is their sprite. Undead monsters now just get slimified into normal slimes. It's fine! Once you liquify something, it shouldn't really matter that much whether it was alive or dead when you started. -------------------------------------------------------------------------------- a8652a641c | Nicholas Feinberg | 2021-03-12 19:10:08 -0800 Add new slimes to J wrath -------------------------------------------------------------------------------- 049c24a4b6 | Nicholas Feinberg | 2021-03-12 19:10:08 -0800 Remove Eyes of Draining It's very hard for monsters that do nothing without friends to work well in DCSS. Eyes of Draining not only do nothing alone, they have a pretty hard time doing anything even with friends. It's rare that they manage to really 'get' a spellcaster. Ghost moths cover their 'drain magic' gimmick a bit better, and quicksilver oozes cover 'antimagic ooze' in reasonable fashion, so let's clean up some cruft. The Depths ophan added in this commit is pretty weird; possibly there's a better fit for that slot. -------------------------------------------------------------------------------- eda80042b2 | Nicholas Feinberg | 2021-03-12 19:09:57 -0800 Remove Death Oozes from Slime Just not that threatening or interesting there, sadly. Tentatively not removing them from the game, since they do work well in Gauntlet, but they might get axed from there a little later. Also remove them from TRJ's palset. -------------------------------------------------------------------------------- 2cf77163c2 | Nicholas Feinberg | 2021-03-12 19:09:57 -0800 Remove dead weights from Slime gen Overall monster & xp count is roughly similar. -------------------------------------------------------------------------------- d1418992ea | Nicholas Feinberg | 2021-03-12 19:09:57 -0800 Remove azure jelly rElec It has no obvious thematic basis and, with rockslimes' appearance, it seems unecessarily cruel for multiple Slime monsters to be rElec. (Trivia: the rElec on azure jelly is pre-Stone Soup.) -------------------------------------------------------------------------------- 433ef79eb3 | Nicholas Feinberg | 2021-03-12 19:09:57 -0800 New Slime monster: quicksilver ooze Quicksilver oozes are antimagic oozes. They move fast, hit for AF_ENGULF and AF_ANTIMAGIC, and are totally immune to magic. They're intended to be lower threat than azure jellies but higher than death oozes. -------------------------------------------------------------------------------- b0a88528cb | Nicholas Feinberg | 2021-03-12 19:09:57 -0800 New Slime monster: Rockslime Rockslimes are slimes that trample you, perhaps into the nearest slime wall. They have high AC, rF++ and rElec, since they're made of rock, and wallop for a hefty 50 per hit. They're intended to be on par with azure jellies and a bit lower-threat than acid blobs (they have lower HP than either), and to play with the Slime terrain in a fun way. -------------------------------------------------------------------------------- 81e9af5d04 | advil | 2021-03-12 18:28:15 -0500 unbrace -------------------------------------------------------------------------------- 867ec2bfdb | advil | 2021-03-12 18:14:28 -0500 Show form info on the `A` screen A lot of information about forms is the same kind of thing that would already be shown on the `A` screen (I could even imagine reimplementing a big chunk of this as actual mutations, there's already a fair bit of overlap). Some form-based / non-permanent (but non-tempmut) info was already shown here, including Mf/Vp form info, beastly appendage, and a few random religious properties. This commit generalizes this to always show key pieces of info for forms. I haven't tried to be exhaustive here; many things that are already shown in the `%` screen somehow don't get their own entry. This is implemented basically by extending the fakemut concept to forms; there's a mix of programmatically-generated fakemuts and custom ones. As noted above, for at least some of these properties it might be worth considering how to generalize the beastly appendage approach. -------------------------------------------------------------------------------- 2d96b4cbf3 | advil | 2021-03-12 18:14:28 -0500 Refactor mutation listing Previously this was handled in two separate but parallel places: a function in output.cc used for the `%` screen, and a more developed version in mutation.cc that produces the long list for `A` (with a more interpretable order that doesn't just go by the mutation enum). This commit unifies the two by merging in the short-form listing to the existing code in mutation.cc, leading to more consistency across the two displays and less likelihood of them getting out of sync. The order of display for `A` is now used for `%`. I have further tweaked the order to consistently show temporary effects first, and made a few other small changes mainly to terse mutation description special cases. -------------------------------------------------------------------------------- 1ad3dbde53 | gammafunk | 2021-03-12 12:58:09 -0600 Some tweaks to a vault Adjust the threats and "elven" equipment to more appropriately scale with depth of placement. Check for depth in Dungeon, upgrading things for post D:13. Remove the conditional "the elves died" theme that previously happen in any branch. I'm afraid the theme won't be well communicated with just random monsters and some elven skeletons around. The placement in Crypt covers a similar theme, with the elves becoming spectral, and the vault poses a substantial threat in that branch. In the case of Crypt, also add the elven gear as loot underneath the respective spectral elves and fix up the dead trees. Also add transparent, no_trap_gen, and no_monster_gen tags to this vault. Closes #1811. -------------------------------------------------------------------------------- 0ea1dd9b86 | kippig | 2021-03-12 12:55:28 -0600 Add an elvish explorers vault This vault adds an elvish couple exploring the dungeon with their mounts and their pet dog. Sometimes they have starved to death since they can't find enough rat to skewer. In crypt they have succumbed and been raised. Commiter's Note: Clean up commit message and squashed commits. -------------------------------------------------------------------------------- 702cc3688f | Nicholas Feinberg | 2021-03-12 08:32:46 -0800 Refactor mon generation die size Dataify it! (Some argument for making this an enum instead, as with branch noise?) -------------------------------------------------------------------------------- 29a88b33a7 | Neil Moore | 2021-03-11 15:58:07 -0500 Don't consider shafts untraversable for connectivity Stepping on shaft traps hasn't been a thing for quite some time. -------------------------------------------------------------------------------- 95abfb2b7d | advil | 2021-03-11 15:04:26 -0500 Refactor mertails as a mutation Once again I wasn't sure how worth the effort this would end up being and it turned out to be cleaner to use a mutation: standard form suppression handling can be used in various cases that were special-cased. This commit doesn't mess too much with you.fishtail calculation itself though. This commit also fixes emergency_untransform, which was broken for aquatic species. -------------------------------------------------------------------------------- b7d4903799 | advil | 2021-03-11 11:55:49 -0500 Mark nimble swimmer as inactive for merfolk on land This is entirely cosmetic, as the mutation doesn't do anything when not in water, but makes the `A` display more consistent with the merfolk form change. (Op still show this mutation always.) -------------------------------------------------------------------------------- 73614ed2d8 | advil | 2021-03-11 11:40:36 -0500 A few minor SP_NAGA cleanups -------------------------------------------------------------------------------- 8d3ced5a34 | advil | 2021-03-11 10:02:34 -0500 Remove a food reference -------------------------------------------------------------------------------- 164d68d9e5 | advil | 2021-03-11 09:41:48 -0500 Dataify bonelessness, barding-wearing These are implemented as species flags. SPF_BARDING is actually coextensive with SPF_SMALL_TORSO, not sure if that's an accident? -------------------------------------------------------------------------------- 48756fc93d | advil | 2021-03-11 09:22:36 -0500 Remove SPF_ELVEN, SPF_ORCISH These each uniquely identify a species. Also, convert the species generation script to take species flags directly; this extra layer of indirection just makes it harder to do changes like this. -------------------------------------------------------------------------------- 524d869a0f | advil | 2021-03-10 21:47:11 -0500 Refactor vampirism as a mutation This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. This commit refactors vampirism into a two-level mutation; level 1 gives the base set of vampiric abilities that were previously conditioned on species checks, and level 2 gives batform as well. I wasn't sure if this would be worth the effort, but I think in the end it's a much cleaner design than before. There's a few small related cleanups here, including to mutation display and to item annotations. One thing of note is that I marked torment as a good_item when you are torment immune, which may be initially confusing to people, because the only thing that previously got this color is acquirement and they don't exactly form a natural class. (Emergency items are colored yellow, which preempts good_item.) -------------------------------------------------------------------------------- 70eae99092 | advil | 2021-03-10 21:47:10 -0500 Clean up some vampire checks * In some cases is_lifeless_uundead is more appropriate than a direct vampire check. (Minor change: berserkitis will now be suppressed in lichform.) * Formatting * Clean up a json field for the vampire info screen * Comments re the confusing treatment of `temp` for vampires -------------------------------------------------------------------------------- 6a3fe64ed6 | advil | 2021-03-10 21:47:10 -0500 Generalize a ghoul check -------------------------------------------------------------------------------- 2aaa8dbbc2 | kippig | 2021-03-10 17:25:09 +0200 This vault was designed when spiders could cling to walls, updated it so the monsters at the back are more than pincushions -------------------------------------------------------------------------------- 27d45072b4 | Skrybe | 2021-03-10 16:33:43 +0200 Update trove.des Fix a couple of typos on my part. -------------------------------------------------------------------------------- 0306a34022 | Edgar A. Bering IV | 2021-03-10 08:48:01 +0200 Clarify acrobat description Be explicit that stairs don't count as moving. Closes #1816 -------------------------------------------------------------------------------- b9b556f605 | Edgar A. Bering IV | 2021-03-10 08:44:54 +0200 Add transparency/opacity information to poisonous_passages Closes #1818 -------------------------------------------------------------------------------- 94244163b4 | Nicholas Feinberg | 2021-03-09 20:05:48 -0800 Simplify Airstrike damage Remove the effects of empty surrounding spaces on variance. The effects on mean/max damage are unchanged. -------------------------------------------------------------------------------- a811992cb3 | Nicholas Feinberg | 2021-03-09 17:10:29 -0800 Make stealth ego work on any slot Also make it work while flying, heh. Closes #1815. -------------------------------------------------------------------------------- f99593c837 | advil | 2021-03-09 19:23:17 -0500 Swap L/R ring in % display order efe1b44 accidentally changed which finger the first ring goes on. This is actually good, because it resolves 11879 -- the first ring and the sacrifice hand are drawn from a consistent order where they are always different. However, now the order in % with only one ring looks odd. This prints the right ring first. (Sorry lefties..) -------------------------------------------------------------------------------- 3569856083 | advil | 2021-03-09 19:18:52 -0500 Condition a physiology check on bonelessness rather than species This is a minorly substantive change: it prevents formicid from getting thin skeletal structure. (Presumably the mut itself could be reflavored if anyone is bothered by this, it's sort of a weird special case anyways.) -------------------------------------------------------------------------------- 7488d4e55c | advil | 2021-03-09 19:15:00 -0500 Convert octopode tentacles to a real mutation These were a mess of special cases and custom form checks, so it's cleaner to have these as a real mutation. There's a minor loss of info in the % screen as "constrict 8" is replaced by just "tentacles", but this custom status could be readded if it's too missed. This leaves only the Op armour gimmick (restrictions + mantle) as hard-coded for this species. -------------------------------------------------------------------------------- 945025970d | advil | 2021-03-09 16:47:40 -0500 More hand name cleanup This cleans up two issues: * Some @crawlcode-worthy code to get "fist(s)" in some cases for statue form. This gets moved back into core hand name code, similar to how blade hands are done. * Going back on an immediately preceding commit, change again how plurality is handled for octopodes. It turns out that (per the manual) two tentacles are roughly equivalent to one hand, so even "one-handed" attacks with blade hands/statue form up still notionally involve multiple tentacles. -------------------------------------------------------------------------------- 3bd3a8edd8 | advil | 2021-03-09 16:00:22 -0500 Remove some direct conditioning on missing hand For cosmetic cases, use arm_count() instead. This has different behavior for octopodes with sac hand than the direct check, so still don't use it e.g. for form unarmed weapon labeling. Otherwise, MUT_MISSING_HAND is mainly now checked directly only for weapon handedness and shield cases. -------------------------------------------------------------------------------- efe1b44157 | advil | 2021-03-09 15:32:13 -0500 Refactor some eq slot checks This abstracts hard-coded species-based eq slot checks (that don't involve a mutation) to species.cc, and generally tries to clean up various handling of ring/arm counts. There was a lot of special casing around MUT_MISSING_HAND, custom octopus code, etc., that should at least be better now. -------------------------------------------------------------------------------- 4fbd9c9eec | Edgar A. Bering IV | 2021-03-09 10:25:43 +0200 Don't skip inventory items with Ashenzari pack-id Closes #1739 -------------------------------------------------------------------------------- 3872a02503 | Edgar A. Bering IV | 2021-03-09 10:25:43 +0200 Remove the holy word effect from Sanctuary Zin's Sanctuary did two things: 1. blast holy word and 2. create a sanctuary with strict non-agression conduct (even for evil things). Which mean that beyond flavour, the player couldn't take advantage of 1, and in any case this was never mentioned in the description in-game. Sanctuary is a defensive ability, so instead of also doing damage (that if non-lethal can't be followed up on sensibly) just create the sanctuary. As an added benefit, Closes #1703 -------------------------------------------------------------------------------- a093fd074c | Edgar A. Bering IV | 2021-03-09 10:25:43 +0200 Really don't print a resist message when the player casts fridge Closes #1814 -------------------------------------------------------------------------------- 6b246bc234 | Implojin | 2021-03-09 09:33:12 +0200 Document a clua TODO -------------------------------------------------------------------------------- ffa14badcf | Implojin | 2021-03-09 09:33:12 +0200 Replace a magic number in spl-cast.cc -------------------------------------------------------------------------------- e2a43ba0c9 | Edgar A. Bering IV | 2021-03-08 23:36:11 +0200 Adjust some Xom dialog Xom hasn't produced hostile dancing weapons in a very long time now. Closes #1731 -------------------------------------------------------------------------------- e9d3877a2d | Edgar A. Bering IV | 2021-03-08 23:23:39 +0200 Don't aim battlespheres at firewood Closes #1759 -------------------------------------------------------------------------------- 55242dfd9f | Edgar A. Bering IV | 2021-03-08 23:23:39 +0200 Don't leak invisible monster locations with Ignition Closes #1798 -------------------------------------------------------------------------------- ae615a3c3a | Edgar A. Bering IV | 2021-03-08 23:23:39 +0200 Don't prompt for Fedhas protected plants when using IMB Closes #1801 -------------------------------------------------------------------------------- bcb41fda2d | Kate | 2021-03-08 20:23:51 +0000 Adjust some duration short/wizmode names -------------------------------------------------------------------------------- 911d1a7525 | Kate | 2021-03-08 20:23:51 +0000 Add a debug message -------------------------------------------------------------------------------- a35e2b3484 | Kate | 2021-03-08 20:23:29 +0000 Further simplify the Elixir Merge the durations of HP and MP regen so that they expire together. -------------------------------------------------------------------------------- c41e867b77 | Kate | 2021-03-08 19:03:25 +0000 Give black draconians increased breath power in dragon form Other draconian breath weapons already get a breath power boost, and the spell description also claimed that this applied for black draconians too. -------------------------------------------------------------------------------- 328d1db4bd | Implojin | 2021-03-08 19:40:11 +0200 Fix shop purchase potion/scroll stacking This was broken in 83025b5. It turns out that items_stack() has some fairly particular conditions that don't necessarily match ISFLAG_IDENT_MASK, due to a potential lua info leak. For some background on this, see: crawl-dev-20151123.lg If this commit somehow breaks identify again, I apologize in advance. -------------------------------------------------------------------------------- 6f54807a0a | sdynet | 2021-03-08 19:25:44 +0200 Simplify the Elixir Grant both ELIXIR_HEALTH and ELIXIR_MAGIC at each tier, with duration scaling with power_level; no longer heal allies. [ Committer's notes: Closes #1751. Tweaked formulas. Updated card description. Removed ally heal. Edited commit message. ] -------------------------------------------------------------------------------- 36c66b7062 | Edgar A. Bering IV | 2021-03-08 18:47:51 +0200 Clarify Recite's description Recite scales with both piety and Invocations skill, so we should say so in the description. [ Closes #1711. ] -------------------------------------------------------------------------------- dab5b5aff9 | Implojin | 2021-03-08 18:48:07 +0200 Fix a wizmode shop placement crash At present, trying to place a gadget shop or a food shop will cause the game to crash. This commit adds a missing TAG_MAJOR_VERSION == 34 for gadget shops, and adds a guard against placing either gadget or food shops. -------------------------------------------------------------------------------- 089230926e | Nicholas Feinberg | 2021-03-08 08:44:10 -0800 Grant players a bounty of information Explicitly spell out each of Ash's passives. I tested on 80x24 - there's loads of space. Also clear up what exactly a 'cursed item' is and what it does, since that's an Ash-only thing now. -------------------------------------------------------------------------------- 711278a2bf | Nicholas Feinberg | 2021-03-08 08:44:10 -0800 Mark Lear's Hauberk useless for palentongas (Beargit) This was only being cheked with !ignore_temporary set, meaning that players weren't able to wear it (good!) but still showed it marked useful (bad!). -------------------------------------------------------------------------------- 2535176e0c | kippig | 2021-03-08 09:25:36 +0200 New kiku swamp vault Also correct some comments in swamp.des [ Committer's note: Closes #1781. Tweaked some glyphs, dropped some branch guests from the zombie list. Squashed and rebased. ] -------------------------------------------------------------------------------- 0d39f094a4 | gammafunk | 2021-03-07 22:57:41 -0600 Some Swamp decor vaults by nicolae (12518) Changes made by me are mainly to remove DEPTH: Swamp, which isn't necessary due to that being default depth, and to clean up spacing for multiline SHUFFLE. -------------------------------------------------------------------------------- 16b4af076a | gammafunk | 2021-03-07 22:45:25 -0600 Reindent and reglyph some Swamp vaults Reglyph to use undefined glyphs instead of T. -------------------------------------------------------------------------------- 6bc07cd232 | gammafunk | 2021-03-07 22:45:25 -0600 Add some sections to swamp.des -------------------------------------------------------------------------------- 7185523a23 | Kate | 2021-03-08 04:42:17 +0000 Fix fail_severity options The max value was set too low for both, since fail_severity now goes up to 5 for potentially lethal spells. -------------------------------------------------------------------------------- f249a0bc35 | Kate | 2021-03-08 03:33:41 +0000 Update monster for AF_ACID damage Since it was changed just recently in 2553e725d5b8. -------------------------------------------------------------------------------- 132d4964b8 | Kate | 2021-03-08 03:17:54 +0000 Update a default option -------------------------------------------------------------------------------- d03afb0eaa | Kate | 2021-03-08 01:03:00 +0000 Fix typo in a mutation desc -------------------------------------------------------------------------------- 25d98068a6 | Kate | 2021-03-07 23:07:42 +0000 Randomise the duration of scrolls of vulnerability Instead of fixing it at 400 aut for all targets. -------------------------------------------------------------------------------- 6c39d01e8d | Kate | 2021-03-07 23:05:09 +0000 Improve a Zot trap effect Don't allow applying 0 turns of -WL, and change the messaging to match other sources of temporary -WL. -------------------------------------------------------------------------------- e0ab5a2769 | Kate | 2021-03-07 17:41:31 +0000 Adjust some god conduct wording for consistency -------------------------------------------------------------------------------- 843053f431 | MinticePIU | 2021-03-07 18:44:08 +0200 god-conduct.cc trog line doesn't appreciate that you’re training magic -------------------------------------------------------------------------------- 98a349ffca | RojjaCebolla | 2021-03-07 18:43:19 +0200 Remove one of your -------------------------------------------------------------------------------- e92ec0ca06 | Neil Moore | 2021-03-06 22:49:22 -0500 Add a new Jiyva message. Death to Videodrome! -------------------------------------------------------------------------------- 79e8bcd247 | Nicholas Feinberg | 2021-03-06 18:32:57 -0800 Bump Psyche's Willpower Give her a better chance of accomplishing something at the depths she spawns. Her killratio is a piddling 1.3% in recent versions - do better, Psyche! -------------------------------------------------------------------------------- ea54bc4844 | Nicholas Feinberg | 2021-03-06 17:52:57 -0800 Ban quaffing known useless !cancel To save players less familiar with the long and somewhat arbitrary list of which effects are cancellable / not from completely wasting their time. (They can still cancel useful effects while not hitting useless ones, but...) -------------------------------------------------------------------------------- 113d0485ee | Nicholas Feinberg | 2021-03-06 17:45:18 -0800 Don't mark cancel useless Too confusing in the inventory UI. -------------------------------------------------------------------------------- 7bfaeff07b | gammafunk | 2021-03-06 19:26:24 -0600 Some overflow altar vaults by nicolae (12500) Edits on my part are mostly to reindent, simplify syntax, and to remove no_monster_gen and no_item_gen tags when possible. -------------------------------------------------------------------------------- 5ccdf786d2 | gammafunk | 2021-03-06 19:25:44 -0600 Reindent some vaults -------------------------------------------------------------------------------- 0983b4dd01 | gammafunk | 2021-03-06 19:25:28 -0600 Adjust ghost vault allow_dup tagging Previously we marked all ghost vaults as allow_dup, which meant they could all place multiple times. This was mostly a relic of when there were fewer ghost vaults and we didn't want games to be stuck without a ghost vault available. Now we have a wide variety of ghost vaults, including a reasonable set with both wide placement and generic enough theme that we can designate with allow_dup to prevent ghost vault shortages. This commit removes allow_dup as a default ghost vault tag, explicitly giving it to a small number of ghost vaults instead. -------------------------------------------------------------------------------- d81048afd2 | Edgar A. Bering IV | 2021-03-06 19:09:30 +0200 Remove an outdated bribe (dinky) -------------------------------------------------------------------------------- bbbe490cb5 | Nicholas Feinberg | 2021-03-06 09:12:09 -0800 Fix lucy bribe (dilly) It's 2021. Quick blades are on the menu! -------------------------------------------------------------------------------- 8b806e2825 | hellmonk | 2021-03-06 11:52:38 +0200 Allow Chei followers to use quickblades. This was a very silly thematic restriction that eliminated a potentially interesting character choice. The weapon of speed restriction is pretty silly too, but those are at least supposed to be magically fast or something; quickblades are just a weapon type with low attack delay. Chei does not care about the player reducing their attack delay by gaining weapon skill, nor does Chei care about the player taking quick actions like removing a ring or unwielding a weapon, so there is no reason to ban a weapon type merely because it has low delay. -------------------------------------------------------------------------------- de416216be | Edgar A. Bering IV | 2021-03-06 10:54:11 +0200 Dereference the correct pointer -------------------------------------------------------------------------------- 1a53e8493b | Edgar A. Bering IV | 2021-03-06 10:43:05 +0200 Don't shatter nonexistant curses (12534) -------------------------------------------------------------------------------- 15ff5c5295 | Nicholas Feinberg | 2021-03-05 18:14:19 -0800 Quiet husks down Even after raising Swamp ambient noise, they're still very loud. Add a slightly hacky special case for em. -------------------------------------------------------------------------------- 817a5d48fc | Nicholas Feinberg | 2021-03-05 17:53:59 -0800 Make Swamp loud The recent compression of Swamp, along with the addition of noisy bunyips and bloated husks, has meant that fights tend to end up drawing in the entire level at once. That's fun sometimes, but it probably doesn't need to happen all the time. To compensate, increase Swamp's ambient noise. This reduces the distance that noise travels, meaning noise from melee attacks, spells, and the aforementioned noisy enemies won't travel as far. Neither bunyips nor bloated husks were *intended* to call the entire level in on the player. Husks are mostly intended to be a tricky-to-detonate bomb, and bunyips' cry was intended to dilute their actions by making them spend less time rushing towards and pummeling you. So, this should move them closer to their original design purpose. -------------------------------------------------------------------------------- 4bdaa1e8ba | Nicholas Feinberg | 2021-03-05 17:52:58 -0800 Remove a shopless bazaar (beargit) I think that all of these old minmay `? = any shop / T` bazaars should be using NSUBST instead, but I'm too rusty to do the conversion properly. -------------------------------------------------------------------------------- 7eaf864cf9 | advil | 2021-03-05 13:35:29 -0500 Partially revert "Remove some miasma save compat" This commit was too aggressive; restore part of the Vs save compat it removed. This partially reverts commit 1d33414dbe85f26d31a52569107cbe4ec1205d62. -------------------------------------------------------------------------------- 117a7a4151 | advil | 2021-03-05 13:26:56 -0500 Clean up rTorment muts a bit This converts MUT_TORMENT_RESISTANCE to a two-level mutation. Level 1 is 50% damage reduction, previously hard-coded to gargoyles. The Gr fakemut becomes this. Level 2 is previous level 1, and so mummies/ghouls move to level 2. MUT_STOCHASTIC_TORMENT_RESISTANCE independently exists as a somewhat weird and unusual resistance mechanism that on balance seems to me to be a bit worse than just simple level 1 as it now exists, though it allows for getting lucky. I'll leave it alone for now though. -------------------------------------------------------------------------------- 1d33414dbe | advil | 2021-03-05 13:26:56 -0500 Remove some miasma save compat I'm pretty sure all this is unnecessary, and generic removed-mut code should clean up this mutation where it still exists. -------------------------------------------------------------------------------- cc1c95e81f | advil | 2021-03-05 13:26:56 -0500 Clean up miasma immunity * Remove the redundant and now inert (after 7c3aafa790) MUT_MIASMA_IMMUNITY from gargoyles and from the game. * Simplify the way unbreathing interacts with rMiasma, by just moving it straight into that code. (This doesn't affect gargoyles, because they are also non-living, but may affect grey draconians.) The fact that gargoyles are non-living isn't really cued anywhere, but the unbreathing part is shown in `A`, and since this now absolutely entails rMiasma also, it's probably ok to not directly show that effect in `A`. The wording of non-breathing could be tweaked if its cloud immunities aren't clear enough. (It's possible there's not even a need for non-living as such to prevent miasma now?) -------------------------------------------------------------------------------- b72ec1a1b6 | Nikolai Lavsky | 2021-03-04 19:24:15 +0200 Add spell damage info to the `I!` menu and morgues A third of player spells have damage info, but this information is well hidden. This commit adds a quick way to compare spells and to see all the numbers at once. -------------------------------------------------------------------------------- c2e2f7f19a | Nicholas Feinberg | 2021-03-04 09:03:39 -0800 Remove forxfire -------------------------------------------------------------------------------- 46cce82728 | Edgar A. Bering IV | 2021-03-04 18:57:16 +0200 Abort foxfire if it would obviously have no effect (AdamPG) Check if there's a visibly open space and abort the spell if there isn't one. This check happens before spell failure; if foxfire fizzles after this check it reveals an invisible foe, which the player should be charged for. Detected invisible foes currently don't count which is an edge case in a variety of ways in crawl, but a fix out of scope for this small tweak. Closes #1790 -------------------------------------------------------------------------------- 159f12dd07 | Aliscans | 2021-03-04 18:10:57 +0200 Stop explore from reporting a level as explored if there is an object on an excluded square. _explore_find_target_square() now rejects the first pathfind() call if it returns a "hostile" target. check_square_greed() no longer does anything similar. The latter change reverses e99fe26798. This means that an item in/behind an excluded area triggers a "partly explored" message. If an item/space is behind a runed door, explore continues to target it. -------------------------------------------------------------------------------- da5465ab1e | Aliscans | 2021-03-04 18:10:57 +0200 Allow excluded squares in _is_travelsafe_square() if ignore_hostile is set. This means that explore reports the search as being incomplete if an excluded area blocks off the only access to the explore_horizon. -------------------------------------------------------------------------------- 5993a9cae7 | Aliscans | 2021-03-04 18:10:57 +0200 Make _is_reseedable(c, false) return false for walls and trees which are in an exclusion. This stops the game from incorrectly assessing a level as not being completely explored when an excluded area reaches a wall which has an unexplored square beyond. -------------------------------------------------------------------------------- 16523e7f5b | hellmonk | 2021-03-04 17:58:29 +0200 Nerf the dex meta Feedback has made it clear that it's a bit too easy to reach high levels of ev. This commit reduces the dodging*dex factor by 20%. High levels of dex and dodging should remain rewarding, but a little less so, and will be worse until the player gets there. To compensate the very early game, the flat portion of dodge_bonus increases slightly. [ Closes #1784. Committer's note: squashed and rebased. ] -------------------------------------------------------------------------------- 7e0ef7a368 | Skrybe | 2021-03-04 17:12:33 +0200 New Trog-themed weapon trove New trove: an abandoned arena once used by reveling Trog worshipers. Loot is similar to other weapon troves, but some Trog acquirements (lower chance of rare base types, but higher enchantment and increased chance for antimagic) are mixed in with the standard acquirements. The results are distinct from other weapon troves while still providing some solid loot. I took 5 weight from both trove_weapon_1 and 2, to keep the overall weight of weapon-only troves the same. Also noticed that trove_weapons_four_rooms was missing the skill-based veto chance other weapon troves have, which I assumed was an oversight, so I added that as well. -------------------------------------------------------------------------------- 88e10a6b4d | Skrybe | 2021-03-04 17:12:33 +0200 Edit skrybe_vaults_entry_preservation Tweak a Vaults entry of mine to use either stone or metal walls, instead of always metal. Also remove an unused monster definition. -------------------------------------------------------------------------------- 46bbb28828 | advil | 2021-03-03 20:16:20 -0500 Refactor some swimming fakemuts * Standardize printing of an amphibious fakemut based on habitat (each of Ba, Op, and Mf took a different strategy for this). * Add a two-level mutation MUT_NIMBLE_SWIMMER. Level 1 is stealth only (Op), and level 2 is stealth + Mf EV/movespeed bonuses. (This packs a lot into level 2, but I think this design is a bit cleaner than having a distinct mutation for EV/movespeed.) I've removed some fishtail checks here, in way that I'm *pretty* sure is safe. -------------------------------------------------------------------------------- 61e7d874a1 | Neil Moore | 2021-03-03 18:30:31 -0500 Don't make the -Potion light always darkgrey (Yermak) If the inability to drink is temporary, it's because of this duration, so keep the light red in that case. -------------------------------------------------------------------------------- b83adbd1c9 | Edgar A. Bering IV | 2021-03-03 19:43:51 +0200 Add a monster info bit for susceptibility to vampirism Closes #1725 -------------------------------------------------------------------------------- 10c448b48d | Ebonnov | 2021-03-03 19:43:51 +0200 Targeter describes if monster is susceptible to Vampiric Draining Now that susceptibility is determined by rN, the targeter can sanely distinguish if vampiric draining would do nothing to the target or vampiric draining would gain no HP from the target. -------------------------------------------------------------------------------- c0d12b3c5c | Ebonnov | 2021-03-03 19:43:51 +0200 Remove selfench flag from Vampiric Draining This allows the range display to work automatically. _ms_ranged_spell() gains a special case, if monsters gain many more range-1 spells this function will need to check spell range. [ Committer's note: reworded message. ] -------------------------------------------------------------------------------- d5a6684c90 | Ebonnov | 2021-03-03 19:38:43 +0200 Make Vampiric Draining a zap and a beam Creates a zap and an enchantment beam flavor (mimicking Malign Offering among other damage-dealing enchantment beams) for Vampiric Draining, replacing existing separate implementation of player version and monster version. Coming from the technical conversion are the following gameplay changes: - monster version can now deal more damage than caster's missing HP (i.e. getting player version treatment of 4e331d2). - damage formula changed from 2d5+1d(pow/7) to 2d(6+pow/14), with similar expectation and max, and increased chance to roll close to bottom and top ends. And as an immediate gain: - monster version shows damage. - quiver is now enabled only when visible non-susceptible target is in range. One wart: - casting on non-susceptible target no longer aborts the spell. This means that casting with autofight (shift-tab/p) can now fizzle (outside living rN+++ monsters). This is consistent with the behavior for hexes and pain; a solution to this issue would be a wide-reaching improvement to crawl. [ Committer's note: Reworded commit message. Didn't include all of the submitted gameplay changes; the beam only works on vampirism susceptible targets. This specific vulnerability gets revealed to monster_info in a later commit. ] -------------------------------------------------------------------------------- 4ea69e3b24 | advil | 2021-03-03 10:37:40 -0500 Mark steam resistance as suppressed by forms This is for consistency with other draconian types; the breath ability is already suppressed as well. -------------------------------------------------------------------------------- bac44d21f1 | advil | 2021-03-03 10:37:12 -0500 Reduce explicit species checks: gnoll All that was needed for this is to convert distributed training from a fakemut to a real mutation. This was fairly straightforward overall. `_player_is_gnoll` from e00f04a389b562 becomes a direct mutation check; it looks like this helper function was added to make the code overall more readable/systematic (probably to avoid bugs when modifying this code) so I think checking a mutation in a systematic way accomplishes this goal as well. -------------------------------------------------------------------------------- fb3425029c | Edgar A. Bering IV | 2021-03-03 16:05:29 +0200 Mark a vault as transparent -------------------------------------------------------------------------------- 46ec449faf | Aliscans | 2021-03-03 09:17:08 +0200 Don't make a note when the player finds an altar for a god the character can't worship. Add a "temp" parameter to player_can_join_god() and player::undead_or_demonic(). If false, the functions ignore temporary effects from mutations and spells, and only consider permanent barriers such as the player's species and Ru sacrifices. Use this to stop the game from making a note on finding an altar for a god the character will never be able to worship. -------------------------------------------------------------------------------- 57cc695410 | Nicholas Feinberg | 2021-03-02 21:36:03 -0800 Reword Forlorn mut I couldn't resist, sorry. -------------------------------------------------------------------------------- c95325c382 | Nicholas Feinberg | 2021-03-02 21:23:51 -0800 Improve manifold/unrand messaging (dilly) Be clearer about why you can't manifold with singsword right now. -------------------------------------------------------------------------------- 0df57e7cfc | Nicholas Feinberg | 2021-03-02 18:52:03 -0800 Give Wyrmbane a glow up (Wensley) Print a message when a dragon with high enough HD to give Wyrmbane an upgrade comes into view. (This is a semi-despoiler of HD mechanics.) -------------------------------------------------------------------------------- 818f26b0ed | advil | 2021-03-02 20:05:27 -0500 Fix behavior of `species_mutation_level` I had misunderstood how level gains were represented when I first wrote this; fix it to use the total mutation level at an xl rather than the change at an xl. -------------------------------------------------------------------------------- 3920f8e293 | advil | 2021-03-02 19:58:40 -0500 Reduce explicit species checks: naga * MUT_CONSTRICTING_TAIL becomes two level, where the first level is mainly cosmetic and prevents boots. The old boot fakemut is no longer needed. * Some tweaks to how walking verbs are used; Naga is standardized on "slither" (this was hard-coded in one place, but the yaml used "slid"). This will change some lugonu titles. This commit also slightly generalizes species fixup code to handle multiple levels of a mutation. There's some flavor code that I didn't figure out a good way to generalize. -------------------------------------------------------------------------------- 96d86173be | advil | 2021-03-02 19:58:28 -0500 Remove an extraneous function -------------------------------------------------------------------------------- 2188dfaaa0 | advil | 2021-03-02 16:52:43 -0500 Fully unremove forlorn -------------------------------------------------------------------------------- 84b802d940 | advil | 2021-03-02 15:29:46 -0500 Reduce explicit species checks: demigod This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. * Repurpose old MUT_FORLORN to indicate Dg's atheist conduct. (I'm not sure if the short-form "forlorn" flavor quite works?) * Abstract/generalize the stat gain stuff into species.cc a bit. I'm sort of torn about whether it makes sense to even bother doing this except for the principle of the thing. I did decide this was good to add to the ability screen, but it's implemented as a programmatic fakemut based on the stat gain multiplier rather than a realmut. -------------------------------------------------------------------------------- 658772aece | advil | 2021-03-02 12:00:13 -0500 Actually add MUT_MULTILIVED to felid ... tested save compat but not actually making a new character... -------------------------------------------------------------------------------- 39af0f7025 | advil | 2021-03-02 11:56:17 -0500 Reduce explicit species checks: felid part 3 This is the change for felids I'm least sure of (in the sense of, is it worth being principled to this degree): convert the hard-coded life-gaining ability to a species mutation. This does get some minor UI gains in that the ability shows up in the mutation list now. -------------------------------------------------------------------------------- 9f681435c2 | advil | 2021-03-02 11:56:17 -0500 Reduce explicit species checks: felid part 2 This commit covers many things: * no weapons/ammo is converted from a fakemut to MUT_NO_GRASPING. * no armour is converted from a fakemut to MUT_NO_ARMOUR (the Ru sac mut is renamed). For these two changes I alternatively considered lumping them into one mutation, or lumping both of them into MUT_PAWS. However, it seemed cleanest / most readable to keep them distinct, even though these three mutations don't ever appear separately. Also: * Refactor skin flavor some more, add code to get the noun forms, add felid to this. I also tweaked a few flavor messages around this. * A few more misc paw-related tweaks that I had missed. * Refactor species scream verbs; these get moved into species.cc with a few tweaks. (e.g. add growling to gnoll directed 0-level shouts.) -------------------------------------------------------------------------------- e23dd17498 | advil | 2021-03-02 09:15:33 -0500 Fix sac drink preconditions Flipped in 9b28f76f3da3. -------------------------------------------------------------------------------- fc1ad161a1 | advil | 2021-03-02 09:15:33 -0500 Reduce explicit species checks: felid part 1 Refactor some remaining paw-related issues (60a0ea410 addressed some of these already). Mainly: Consolidate MUT_PAWS with the stealth fakemut, and finish conditioning various felid stealth-related checks on this mutation instead of the species. This lightly reflavors MUT_PAWS to mention both stealth and pouncing, and leaves the sharp claw stuff to the co-existing MUT_CLAWS. The fakemut is gone altogether, and some form interactions are more standardized, so the mutation screen will more accurately display with the stealth bonus is suppressed. -------------------------------------------------------------------------------- d4c891490c | Edgar Bering | 2021-03-02 07:40:59 -0500 Changelog through 0.27-a0-498 -------------------------------------------------------------------------------- 7ecbb0a48f | hellmonk | 2021-03-01 20:08:35 -0800 Make *slow stack in the same way as *corrode. Instead of being slightly different for no reason. Closes #1785. -------------------------------------------------------------------------------- 5f1ef305e6 | Aliscans | 2021-03-01 19:54:17 -0800 Rename local variables in spectral_weapon_fineff::fire(). The following compiler warning was given by gcc 10.2.0. Renaming def removes the warning. I also renamed atk, but only for consistency. fineff.cc: In member function ?virtual void spectral_weapon_fineff::fire()?: fineff.cc:721:12: warning: declaration of ?def? shadows a member of ?spectral_weapon_fineff? [-Wshadow] 721 | actor *def = defender(); | ^~~ In file included from fineff.cc:9: fineff.h:30:16: note: shadowed declaration is here 30 | mid_t att, def; Closes #1792. -------------------------------------------------------------------------------- 18f1c7c63f | Nicholas Feinberg | 2021-03-01 19:31:16 -0800 Don't make monster refrig affect the caster Symmetry with the player version. -------------------------------------------------------------------------------- 905266d83c | Nikolai Lavsky | 2021-03-01 18:54:45 -0800 Describe Ozocubu's Refrigeration and Drain Life in monster The spells weren't handled by ``mons_spell_beam()``, so the monster utility wasn't showing their damage. Unlike monster, xv can already show the damage for these spells, since it gets the numbers in a different way. (Committer's note: moved this into the nicer struct.) -------------------------------------------------------------------------------- e178da98d6 | Nicholas Feinberg | 2021-03-01 18:44:21 -0800 Cancellation descr improvements (12531, Yermak) - Don't print empty statuses - Don't print (expiring) - Further clarify when it'll have no effect -------------------------------------------------------------------------------- 85c0b4d56b | Kate | 2021-03-02 02:23:34 +0000 Fix a vault randart Randart armour isn't supposed to be given egos, and doing so can generate buggy items (like boots with double rampaging in this case). -------------------------------------------------------------------------------- a4bb394fd4 | Edgar A. Bering IV | 2021-03-01 22:12:40 +0200 Allow Ash boosts to adjust max hp, mp and spell levels Ashenzari boosts are long-lived and intended to be functionally equivalent to having the extra skill levels. Heroism still does not give a boost to maxhp, partly because it seems like a technical headache because of how heroism is implemented. -------------------------------------------------------------------------------- 2427743e6d | Edgar A. Bering IV | 2021-03-01 22:12:40 +0200 Don't grant curse skill boosts for melded equipment (PleasingFungus) Since the curse boost is an equipment property and the rest of those are suppressed by transmutation, let's be consistent and withdraw transformed bonuses. So players can see what has happened this is reflected in the ^ screen. -------------------------------------------------------------------------------- 656fa3bc60 | advil | 2021-03-01 11:43:49 -0500 Reduce explicit species checks: draconian This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. Red draconians: fix up a manual zap conversion. Pale draconians: convert steam resistance to a real mut (before it wasn't shown at all, perhaps because it seems not-very-important?) Grey draconians: * There's still a hard-coded ac bonus in player::racial_ac, wasn't obvious to me that there is a clean way to abstract this one. * Their relationship to water was very confused; I have (maybe) cleaned this up a bit. Previously, they had MUT_UNBREATHING, a fakemut about walking through water, can_swim=True, and a hard-coded check in player::extra_balanced. The latter, I'm pretty sure, is currently redundant with swimming (it probably wasn't in the past). I have consolidated these by making MUT_UNBREATHING two levels, where the second level is flavored like the old fakemut. The fakemut is gone, they aren't specified as swimming (though the mut is still checked in swimming code), and extra_balanced has been refactored, including some unrelated cleanups. -------------------------------------------------------------------------------- 24c7b1a3ef | Edgar A. Bering IV | 2021-03-01 08:05:44 +0200 Nerf new Ashenzari skill boost Making it easier to get multiple of the same curse and also doubling the boost formula was effective in making it more powerful. Too powerful. Two curses of the same type still give a multiplier equal to the "fully bound" level of old Ashenzari, so hopefully this lands on a good power level. -------------------------------------------------------------------------------- 88baaf19db | Nicholas Feinberg | 2021-02-28 21:12:16 -0800 Preview !cancel in its description List the effects that will be removed. -------------------------------------------------------------------------------- fad94b14d9 | Nicholas Feinberg | 2021-02-28 21:01:22 -0800 Make duration data short text consistent If my next commit is going to work, all of these have to be in adjective form, not just some! -------------------------------------------------------------------------------- ed9a95061b | Nicholas Feinberg | 2021-02-28 20:23:11 -0800 Mark !cancel useless when appropriate (If neither contaminated nor buffed.) -------------------------------------------------------------------------------- 83795c0764 | Nicholas Feinberg | 2021-02-28 19:40:44 -0800 Deduplicate animals Now that our favourite +8 unrand rings have been renamed. -------------------------------------------------------------------------------- 5fc3b572a5 | Kate | 2021-03-01 02:41:27 +0000 Prevent entering pre-existing piety troves under Ashenzari In the weird edge case where you find a piety trove and then convert to Ashenzari, don't allow entry at all, since reducing piety is tied to shattering cursed items (and causes buggy behaviour if reduced normally). -------------------------------------------------------------------------------- 7290ec1f24 | Nicholas Feinberg | 2021-02-28 17:31:16 -0800 Reduce Ash join spam Don't ID things you've already ID'd! -------------------------------------------------------------------------------- 278a1cfa91 | Nicholas Feinberg | 2021-02-28 17:23:13 -0800 Ban piety troves under New Ash They don't work properly (your piety resets once you reload or curse another item) and it's not very clear what making them work properly would even mean. -------------------------------------------------------------------------------- e66e4f1fd0 | Nicholas Feinberg | 2021-02-28 17:10:44 -0800 Simplify spellforged servitor energy (hellmonk) De-randomize them: instead of taking 10-25 energy to cast a spell, take 18 consistently. This appears on their xv, which is nice. Further context: - 3595075b7f7 - f37f6fb1095 -------------------------------------------------------------------------------- 190982bc61 | advil | 2021-02-28 20:04:06 -0500 Reduce explicit species checks: palentonga This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. Only minor things here: * condition MUT_ROLL upgrades on having the mutation innately * refactor/simplify some tail code (no changes to behavior) * move the barding code to species.cc, perhaps for later dataification -------------------------------------------------------------------------------- 11248dd59e | Nicholas Feinberg | 2021-02-28 16:11:00 -0800 Don't trigger spectral weapon on all attacks (particleface) (oops) -------------------------------------------------------------------------------- c496030317 | advil | 2021-02-28 19:00:44 -0500 Reduce explicit species checks: minotaur This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. Minotaurs were in reasonable shape, only two tweaks: * Convert retaliatory headbutt to a real mutation. This allows removing some custom mutation suppression code. * Tweak some hints mode tips to talk about horns, rather than species. (Also, one hopefully cosmetic fix for the mutation data structure..) -------------------------------------------------------------------------------- b294f25f7b | Nicholas Feinberg | 2021-02-28 15:44:08 -0800 Trigger spectral weapon on all attacks Including misses & blocked attacks. This should bring it closer to the design goals/tradeoffs described in e6bb7ee78e63. -------------------------------------------------------------------------------- 757c4c4f7f | Nicholas Feinberg | 2021-02-28 15:34:08 -0800 Drop Depths monsters count again XP down 4% from 0.26, which seems a-ok. Goal is to make overall difficulty closer to what it was before the removal of chaff. -------------------------------------------------------------------------------- 4587593e40 | Edgar A. Bering IV | 2021-02-28 21:28:33 +0200 Don't allow shattering melded items (12528) -------------------------------------------------------------------------------- 60b1cd0c92 | Edgar A. Bering IV | 2021-02-28 21:28:33 +0200 Don't offer Ash monks the second curse too fast Give them a chance to apply the first curse, and just set the progress timer to most of the way to the second curse so it will appear quickly. Closes #1782 -------------------------------------------------------------------------------- 585d864186 | advil | 2021-02-28 14:18:04 -0500 Reduce explicit species checks: vinestalker Vinstalkers are in good shape, this is the only obvious change I found. -------------------------------------------------------------------------------- 9b28f76f3d | advil | 2021-02-28 14:18:04 -0500 Reduce explicit species checks: mummy This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. For mummies: * convert a hardcoded adjustment to rF + fakemut to use MUT_HEAT_VULNERABILITY. I can't find any reason this wasn't done in the past except that it was very old code. There is a minor flavor difference in the wording of the mutation. * add a real mutation for non-drinking. I also did a bunch of cleanup and refactoring of the drinklessness checks (you_drinklessness -> you.can_drink). * for some flavor stuff, use the skin adjective string added in a previous commit. Not sure if this is ultimately the best way, but it seems to me to still be an improvement in that this flavor logic is better consolidated. * clean up player::can_bleed; should have no behavior changes. * Generalize player::can_smell (which is for flavor only): no lifeless undead can smell after this commit. -------------------------------------------------------------------------------- fef436477a | advil | 2021-02-28 14:15:52 -0500 Rename (internally) two Ru mutations No user-facing changes, but the mut names were somewhat misleading. -------------------------------------------------------------------------------- 07dbac4f64 | advil | 2021-02-28 14:15:52 -0500 Reduce explicit species checks: tengu This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. Tengu are easy. A previous commit cleaned up some superficial code, and this one uses the tengu flight mutation for a bunch of cases rather than checking the species directly. -------------------------------------------------------------------------------- 009b781653 | advil | 2021-02-28 14:15:52 -0500 Convert hands to fists for UC forms name Separating this bit out because it is kind of hacky... -------------------------------------------------------------------------------- 60a0ea410a | advil | 2021-02-28 14:15:52 -0500 Consolidate and clean up some body part name code This tries to reduce a bunch of code duplication while making some body part name cases more consistent, and also reduce reliance on species-specific checks. Biggest changes to blade hands code, which is/was fairly involved, but hopefully all changes are improvements. The commit removes the general blade hands name ("scythe-like blade") that was used in various cases, awkwardly, and uses a clean version of the regular hand name. For ice form, we use "Ice paws" (instead of "Ice fists") in the UI -- the form data already used "paws" as the hand name (for e.g. ring wearing), so this improves consistency. For statue form, I used the regular hand name instead of "fists"; maybe this should still be customized for the "hand" case (but it reduces duplication of similar code). This stuff was all complex enough that there may well be corner cases that this commit breaks... -------------------------------------------------------------------------------- b314f132a3 | advil | 2021-02-28 14:15:52 -0500 Reduce explicit species checks: formicid This commit is part of a series that attempts to more cleanly treat species as bundles of traits/behaviors that have their own well-defined semantics, and minimize the use of explicit species checks in the code. For formicids: * use you.stasis() instead of a species check. This might be even better converted from a fakemut to a realmut, but since this call already existed (for actor even) I repurposed it. If anyone ever adds back in non-perma-stasis, that would be a good time to turn this into a mut. * Lump formicid dig in with monster burrowing (since they have the same behavior) and add an actor call. Again, for players this could be turned into a realmut eventually, similar to the monster bit. This ties player self-shaft in with this check too. * Convert four-handedness from a fakemut to a real mutation (MUT_QUADRUMANOUS). * Use innate_sinv() instead of species checks; this may change some semantics for physiology conflicts (but probably in a good way). * For cosmetic reasons add a minor species check for bonelessness (Op and Fo). -------------------------------------------------------------------------------- 171c57d503 | Edgar A. Bering IV | 2021-02-28 20:47:19 +0200 More Ash randnames (nicolae) -------------------------------------------------------------------------------- f192cf5699 | Kate | 2021-02-28 18:01:19 +0000 Reword some Ashenzari curse names -------------------------------------------------------------------------------- f1db142f3a | Kate | 2021-02-28 17:46:43 +0000 Assign Ashenzari abilities to uppercase letters As with Ru sacrifices. They could also potentially just be assigned to 'a' and 'b' like other god invocations, but either way shouldn't use the current assignments of 'f' and 'g' which are for non-invocation abilities. -------------------------------------------------------------------------------- ec7707c53d | Neil Moore | 2021-02-28 01:27:53 -0500 Staticalise a function -------------------------------------------------------------------------------- 2bdad01aa9 | Neil Moore | 2021-02-28 01:25:53 -0500 Refactor into set_artefact_brand() -------------------------------------------------------------------------------- 2a051d674a | Neil Moore | 2021-02-28 01:09:14 -0500 Preserve brands when Ash-cursing items (#12527) -------------------------------------------------------------------------------- 297a19dbdb | Nicholas Feinberg | 2021-02-27 18:15:50 -0800 New Nemelex skill titles (hellmonk) Very cute. -------------------------------------------------------------------------------- 0891b3a2b8 | Nicholas Feinberg | 2021-02-27 17:20:54 -0800 Finish removing Depths chaff As the prelude to Vaults changes, remove some weak monsters present in both Depths and Vaults. Reduce total Depths spawns by roughly 8% to compensate. Total XP remains unchanged. The first part of this commit was inadvertently included in fdd91fc31 . -------------------------------------------------------------------------------- fdd91fc31c | Nicholas Feinberg | 2021-02-27 17:01:21 -0800 Temporarily tweak Tengu Reaver's spells Lightning Spire doesn't quite work yet as a monster spell. I like the idea of it, but don't currently have the time to fix it up. Instead, give reavers a pile of elemental bolt spells to really simulate the classic cj experience. Total spell weight equal to the old MST_TENGU_REAVER_III. -------------------------------------------------------------------------------- ba82baf56e | Edgar A. Bering IV | 2021-02-27 19:39:17 +0200 Fix a crash -------------------------------------------------------------------------------- 8b5a972acc | Edgar A. Bering IV | 2021-02-27 18:42:53 +0200 More Ashenzari artefact names (nicolae) -------------------------------------------------------------------------------- 6169cafb0b | Edgar A. Bering IV | 2021-02-27 18:19:34 +0200 Increase the skill boost contribution of piety Even after consolidating curses into bins, getting three curses of the same type is rare (less than 8% of 10-curse rolls will have any triple at all; less than 1% of 10-curse rolls will have a chosen triple). Over the longer run, if the player is willing to make gear sacrifices or wait for more curse re-rolls these odds can be increased, of course, but at a cost. New skill boosts scale with the number of curses, so it's hard to get the multiplier up to the range of old skill boosts without luck. This commit increases the contribution from piety, which should both make foregoing curses more noticable and the impact of adding "irrelevant" curses. -------------------------------------------------------------------------------- b9714ae4ff | Edgar A. Bering IV | 2021-02-27 17:17:57 +0200 Reforge the Chains VII: Grouped skill bonuses After initial playtesting feedback, completely random skills had some interesting upsides (when the stars aligned and a triply-cursed skill could also be utlized it was a good moment) they were also frustrating and had bad gamefeel: - multiple melee skills when a player is probably only using one (maybe two) - hard to roll relevant magic skills - occasionally taking a "useless" or "not that useful" curse was fun but it was happening too often. This commit changes the skill bonuses to be granted in the following skill groupings, more fine grained than the old ash skill categories but not as broad as totally random skilling: Melee: all melee combat skills Ranged: all ranged combat skills Fortitude: Armour and Shields Cunning: Dodging and Stealth Elements: Air, Earth, Fire, and Ice Magic Alchemy: Transmutations and Poison Magic Beguiling: Conjurations, Hexes, and Translocations Companions: Necromancy and Summonings Self: Fighting and Spellcasting Evocations: Evocations. Each curse offers two out of these ten categories chosen at random and without weight. This will hopefully allieviate some of the bad feelings from totally random skill boosts while retaining the character shaping aspects of the narrower bonus granting. In lieu of save compatibility, since this has only been live on trunk briefly, this commit just switches to a new prop key for the new curses. -------------------------------------------------------------------------------- f5a408906c | Edgar A. Bering IV | 2021-02-27 16:52:52 +0200 Remove a now-unused enum type -------------------------------------------------------------------------------- 9f69345686 | Edgar A. Bering IV | 2021-02-27 11:46:48 +0200 Change weapon abbreviations to match aptitudes.txt -------------------------------------------------------------------------------- c9da168cd4 | Edgar A. Bering IV | 2021-02-27 11:11:24 +0200 Always reset curse progress when shattering Otherwise, the player is incentivized to shatter "just before" the curse timer times out, which means tracking the timer, to minimize the time spent at lower piety. -------------------------------------------------------------------------------- e8ee47db1e | Edgar A. Bering IV | 2021-02-27 11:03:24 +0200 Tweak some Ash god power messaging -------------------------------------------------------------------------------- 68ea36cf6f | Edgar A. Bering IV | 2021-02-27 11:03:07 +0200 Increase curse frequency in various ways This decreases the curse delay from 50 to 20, making curses more plentiful. The curse delay was copied from Ru, but Ru sacrifices offer far more benefit than a single curse. The delay was also re-set upon accepting a curse, this behavior was somewhat opaque; curses now come at the same rate regardless of whether they're accepted or ignored. This commit also arranges for monks to be offered two curses shortly after joining, instead of one. -------------------------------------------------------------------------------- ace5c5693b | Edgar A. Bering IV | 2021-02-27 02:01:24 +0200 Don't offer to shatter the chains uncursed (12524) -------------------------------------------------------------------------------- 443c4d33a9 | Edgar A. Bering IV | 2021-02-27 01:51:14 +0200 Tweak Ash curse randart names (nicolae) -------------------------------------------------------------------------------- 889b946b96 | Edgar A. Bering IV | 2021-02-27 01:50:09 +0200 Fix save compatibility props initialization -------------------------------------------------------------------------------- be96e517c0 | Edgar A. Bering IV | 2021-02-26 23:03:48 +0200 Fix a db lookup regression (PleasingFungus) -------------------------------------------------------------------------------- 40f7080bd1 | Goratrix | 2021-02-26 22:59:20 +0200 Add the AK splash screen to webtiles File was added with 7ddf969 but needs to be added here to appear in webtiles. -------------------------------------------------------------------------------- 85b7f54256 | AdamPG | 2021-02-26 22:58:03 +0200 Fix a typo in geoelf_rooms.lua -------------------------------------------------------------------------------- e386880645 | Nikolai Lavsky | 2021-02-26 22:57:02 +0200 Refactor a conditional in `spell_uselessness_reason` Also, fix a colour tag in `_player_spell_desc`. -------------------------------------------------------------------------------- ed6ad04f2f | Nikolai Lavsky | 2021-02-26 22:57:02 +0200 Don't waste time casting Sublimation of Blood when at max MP After 4502bb1e, the player can cast Sublimation when at max MP. The description still has the "This spell would have no effect right now" warning, and the spell is correctly greyed out on the quiver in this situation, though. Fix this by moving Sublimation's MP check into a function that is called before subtracting the MP cost. This adds a spell-specific check to casting-specific ones, but it's good to have all MP-related checks in one place. Also, it's clearer than temporarily refunding the spell cost, as it was before 4502bb1e. -------------------------------------------------------------------------------- 4d387a3930 | Edgar A. Bering IV | 2021-02-26 22:40:52 +0200 Tweak Ashenzari piety gain Ensure all species get to 1* piety with at most two curses. Save poor little octopus. -------------------------------------------------------------------------------- cc4f045668 | Edgar A. Bering IV | 2021-02-26 22:18:31 +0200 Activate Ash skill boost from 0* (mdonais) The skill boost requires curses to take advantage of; at 0* and only one curse the skill point multiplier is 4. Compared to 24 for one curse at 6* this isn't that noticable. In exchange, the play experience is clearer: all of the messages about curses being tied to skills don't have to have caveats, and a Monk actually gets something immeidate out of using their first curse. -------------------------------------------------------------------------------- 904f624fcb | Edgar A. Bering IV | 2021-02-26 22:17:41 +0200 Mark ?id useless for ash followers (mdonais) -------------------------------------------------------------------------------- edbb297545 | Edgar A. Bering IV | 2021-02-26 22:10:09 +0200 Default force_more for curse offering (mdonais) -------------------------------------------------------------------------------- d758f4ad8f | Edgar A. Bering IV | 2021-02-26 22:01:16 +0200 Describe curse exploration (mdonais) -------------------------------------------------------------------------------- ba0159d6e4 | Nicholas Feinberg | 2021-02-26 08:24:22 -0800 Fix unused variable warning -------------------------------------------------------------------------------- 1c28abb116 | Edgar A. Bering IV | 2021-02-26 17:30:49 +0200 Canonical skill abbreviations for display Currently used for Ru and Ashenzari ability menu display, and Ash curse inscriptions. -------------------------------------------------------------------------------- fcfbbb0451 | Edgar A. Bering IV | 2021-02-26 17:30:49 +0200 Create a new vision_iterator (PleasingFungus) A handful of places in the code performed a radius_iterator iteration over LOS_NONE and then immediately filtered for you.see_cell to respect scrying and wizard xray vision effects. This iterator encapsulates the idiom of iterating over an actor's vision (permitting actor::see_cell to override the considerations of LOS checks). -------------------------------------------------------------------------------- cf6be6ae82 | Edgar A. Bering IV | 2021-02-26 17:29:57 +0200 Reforge the Chains VI: Randartify cursed items To make the curses more permanent, cursed items are made into randarts if possible, locking in their brand and enchantment. No randart props are granted (other than the skill boosts!). Randart names are generated from a special Ashenzari keyword in the database for a thematic name. Thanks to CanOfWorms,hatsuma, Lici_the_Crawler, nicolae, and PleasingFungus for curse name suggestions. -------------------------------------------------------------------------------- 6c61df32c5 | Edgar A. Bering IV | 2021-02-26 17:25:03 +0200 Code cleanup of old curse code -------------------------------------------------------------------------------- b19e37cef9 | Edgar A. Bering IV | 2021-02-26 17:25:03 +0200 Save compatibility for new Ashenzari -------------------------------------------------------------------------------- 6fc834afe4 | Edgar A. Bering IV | 2021-02-26 17:25:03 +0200 Reforge the Chains V: Bind skill knowledge to curses This commit reimagines Ashenzari curses to offer specific knowledge (in exchange for binding the slot). Currently Ash picks two skills and the player can either take the curse and the knowledge, or ignore it. Ash will eventually offer a new curse. This choice can hit the player in a variety of ways: are the skills offered too good to pass up, thus ending up on an otherwise not great item for a long time? Are the skills not ones the player anticipates using but they're desparate for piety so they'll put a not great curse on a great item? Both are good, and occasionally the player will delight in getting the opportunity to put a good curse on a good item they want to keep! With the variety of curses, it remains possible for an Ash character to be a jack of all trades, but also to become highly focused in something that might otherwise be hard for their species! Exciting possibilities abound, that will need some further number tuning. -------------------------------------------------------------------------------- 0b9efa778e | Edgar A. Bering IV | 2021-02-26 17:25:02 +0200 Remove an XXX; startup.cc handles the issue in question -------------------------------------------------------------------------------- da19f9da44 | Edgar A. Bering IV | 2021-02-26 17:24:45 +0200 Reforge the Chains IV: Shatter the Chains To go with the new curse scheme, uncursing becomes available to any cursed Ash worshipper. Uncursing removes and destroys the item (triggering all on remove effects, no secret disto unwield tech). It also forgoes the currently offered curse and re-sets the curse timer (to make sure uncursing is felt). -------------------------------------------------------------------------------- c9f47ef48c | Edgar A. Bering IV | 2021-02-26 17:22:30 +0200 Reforge the Chains III: Curse piety Tying Ashenzari's curses to scrolls was always a bit awkward. With the removal of other curses and the rc scroll this mechanic is untenable. Since Ash's introduction Crawl gained another god: Ru, who periodically offers something which grants piety through an alternate mechanism. As part of an overhaul of Ashenzari, this commit changes Ash piety to scale directly with bondage level: it takes two curses for a Human to reach 1*, and they arrive at 6* when all slots are bound. The exact formula scales with slots, so Felids have a much easier time reaching 6*; the formula is: piety = 2 + ( num_cursed * 160 ) / num_slots This applies to current slots, so if a slot is lost due to mutations the player isn't penalized. Coupled with this: Ashenzari no longer applies curses in exchange for items. Instead, players are occasionally invited to curse an item. Accepting a curse re-starts the curse timer; ignoring it simly lets it sit there. -------------------------------------------------------------------------------- bff98f8d11 | Edgar A. Bering IV | 2021-02-26 17:21:54 +0200 Reforge the Chains II: Adjust Ash passives Grant Ashenzari's passives earlier, with skill boost arriving at 1*, see invisible at 2*, and clarity at 3*. Starting at 4*, also grant perma-scrying with a radius of 2, the radius grows with piety stars until reaching radius 4 at 6*. -------------------------------------------------------------------------------- 0aebcb437f | Edgar A. Bering IV | 2021-02-26 17:21:53 +0200 Reforge the Chains I: Remove old Ash actives Remove Scrying and Skill Transfer, the new Ash will only have passive effects. -------------------------------------------------------------------------------- f312af23e9 | Nicholas Feinberg | 2021-02-25 22:23:13 -0800 Tweak spell descriptions (ShaperMC) Increase clarity, decrease poetry. -------------------------------------------------------------------------------- 642ebbb733 | Nicholas Feinberg | 2021-02-25 22:09:54 -0800 Simplify Make prefer_ranged do something other than 'prefer shooting to attacking with reach weapons' if it's not on a monster with the 'archer' flag. At present, it always *is* on monsters with the archer flag, so this commit does nothing, but it seems like nice future proofing. -------------------------------------------------------------------------------- 7ddf969dea | Nicholas Feinberg | 2021-02-25 17:46:40 -0800 New AK splash screen from E.M. Fields The artist (https://mobile.twitter.com/EMFields_Art) has agreed to license the art under CC0. Many thanks to him for the fantastic piece! The original can be seen here: https://lexiconmegatherium.tumblr.com/image/126515730356 -------------------------------------------------------------------------------- 83025b51d3 | Implojin | 2021-02-25 17:12:23 -0800 Fix equipment identification bb19ded didn't properly identify items that were already in the player's inventory. This commit restores equip identify behavior, to fix this and handle any unforeseen cases of items being placed directly into the player's inventory. Closes #1777. -------------------------------------------------------------------------------- 7a85846853 | Nicholas Feinberg | 2021-02-25 09:23:53 -0800 Fix @player_only@ messages (#9201) When printing monster spell messages, we never checked to see if we they were valid. As a result, unseen ghost moths casting Draining Gaze on other monsters would print the literal string "You feel something watching you. @player_only@". This bug was introduced in e143a0ad5d2 (October 2014) and first reported by johlstei a month later. I managed to reproduce it in March 2015 but was unable to figure out the root cause, because the monster speech code is absolutely insane. But this is it! -------------------------------------------------------------------------------- 5110eb77c4 | Nicholas Feinberg | 2021-02-25 08:34:55 -0800 Fix ID notes (dinky) Broken in bb19ded6d30e696c234aeda7060a468f3fc7a340 . -------------------------------------------------------------------------------- 317cea8a3c | Nicholas Feinberg | 2021-02-24 18:28:27 -0800 Fix more cursed item descs (Nomi) See 52645efa069834ac9ca1066c78a845ef7baba59d . -------------------------------------------------------------------------------- ca2cecf3c0 | Nicholas Feinberg | 2021-02-23 21:56:14 -0800 Tweak animated armour scaling (gammafunk) To avoid confusion between the summoned armour's plus and the worn armour it comes from, buff HD with power instead. -------------------------------------------------------------------------------- e3bbeeb173 | Nicholas Feinberg | 2021-02-23 21:55:35 -0800 Tweak permasummon desc Replace an awkward "and" about stairs. It keeps happening. -------------------------------------------------------------------------------- bb19ded6d3 | Implojin | 2021-02-23 21:43:23 -0800 Turn wear-id into floor-id Following much the same reasoning as in f6d4cf81. Especially now that curses are gone (RIP), there's very little incentive not to wear-ID items. (This was mostly true before too, but it's extra obvious now.) Instead, just identify equippable items when you step on them. This does remove certain categories of surprise from randarts (it's *Contam!), but players will live. No comp for this in terms of ?id drops, since that item was better spent on consumables for the period of the game in which ?id is in finite supply. (So no difference.) Closes #1770. -------------------------------------------------------------------------------- 4a2567b755 | Nicholas Feinberg | 2021-02-23 21:36:06 -0800 Fix monster quiver desc (vt) -------------------------------------------------------------------------------- 8dd771eca2 | Nicholas Feinberg | 2021-02-22 17:55:06 -0800 Simplify ghostly spectral weapon code It was only ever being cast at one power. (dungeon.cc doesn't count, since that code will never be hit.) -------------------------------------------------------------------------------- e6bb7ee78e | Nicholas Feinberg | 2021-02-22 17:29:49 -0800 Simplify spectral weapons Simplify the effect. The weapon pops out when you attack, immediately follows up, and then sticks around until the end of your next turn. If you hit again, everything repeats. Otherwise, it vanishes. The design here is of an ego with great damage but that has some positioning constraints, and that still has the potential drawback of damage sharing. (If the positioning constraints turn out to be enough to make it interesting, we can junk the damage sharing.) I've just removed monster spectral ego for now, but it'd be nice to have it back eventually. -------------------------------------------------------------------------------- 72e693e10d | Nicholas Feinberg | 2021-02-22 17:16:23 -0800 Make spines trigger on manifold assault attacks This is 100% impossible to trigger right now, but it's good to future-proof. -------------------------------------------------------------------------------- d57800a693 | advil | 2021-02-22 17:53:20 -0500 Fix another changelog typo Turns out there were two! -------------------------------------------------------------------------------- d488d78fa8 | Neil Moore | 2021-02-22 16:45:18 -0500 Fix a typo in the changelog skip ci -------------------------------------------------------------------------------- 56c411f157 | Nicholas Feinberg | 2021-02-22 12:04:43 -0800 Manual updates (nicolae) -------------------------------------------------------------------------------- 23f261fbd2 | Nicholas Feinberg | 2021-02-21 16:17:38 -0800 Make zigs grant zot immunity (hellmonk, etc) If you can clear an entire zig, you're well past the point in the game where the zot clock (as it currently exists) is relevant. It's fairly hard to imagine a version of the zot clock that co-exists with ziggurats, really. -------------------------------------------------------------------------------- dc27087bfa | Kate | 2021-02-21 23:01:43 +0000 Fix LRD not hitting monsters standing on open doors (#12515) Caused by reversed logic in e2d8f9cc. -------------------------------------------------------------------------------- 4390dbc5be | Kate | 2021-02-21 19:55:56 +0000 Fix some skill training display interactions (#12514) Make evocations show up as a trainable skill by default with the staff of Wucad Mu carried, make necromancy visible with a pain weapon, and fix evocations being visible with spectral weapons and the salamander hide armour. -------------------------------------------------------------------------------- f2f63bf033 | Kate | 2021-02-21 19:54:39 +0000 Prevent unwielding the obsidian axe while mesmerised To make it more of a real commitment (while still keeping the *Drain penalty to prevent swapping it freely between combats). -------------------------------------------------------------------------------- fadf0348f2 | advil | 2021-02-21 11:40:04 -0500 Fix the build for ancient perl versions? This is breaking CAO (and also PF). -------------------------------------------------------------------------------- ea03ee85fd | Nicholas Feinberg | 2021-02-20 20:10:21 -0800 Revert "Add one more draconian skill title (hellmonk)" This reverts commit d82557afd8e216d667967f927f2beb04dc6b3180. Duplicates a WJC title. -------------------------------------------------------------------------------- d82557afd8 | Nicholas Feinberg | 2021-02-20 19:56:03 -0800 Add one more draconian skill title (hellmonk) Other suggestions I haven't added: - Pearl Dragon (TSO) - Shadow Dragon (Stealth) - Bone Dragon (Necromancy) -------------------------------------------------------------------------------- 57bad1e98f | Nicholas Feinberg | 2021-02-20 19:50:47 -0800 Re-rename KILLED_BY_EXPLOSION It's not just any explosion, it's a death explosion specifically. Fireballs need not apply. Closes #1765. -------------------------------------------------------------------------------- 75c20cf7c0 | Hatsuma | 2021-02-20 19:48:52 -0800 Fix inner flame explosion death messages (Committer's note: Turning death explosions into a fineff broke the messaging for inner flame explosions. This commit should hopefully fix them.) -------------------------------------------------------------------------------- a62f12ae83 | Hatsuma | 2021-02-20 19:48:40 -0800 Rename KILLED_BY_SPORE to KILLED_BY_EXPLOSION -------------------------------------------------------------------------------- 03f4e8edb7 | Aliscans | 2021-02-20 12:45:42 +0200 Make the "1 corona" status message grammatically correct, and other bugfixes. 1. Fix the handling of singulars and plurals in _condition_string(). It had been saying "(1 reflect damage)", where it should have been "reflects". 2. Fix a typo in a flag name in monster_info_flag_names. 3. Fix a copy/paste error in mons_conditions_string() which prevented missile-wielders from being reported correctly in the monster list. -------------------------------------------------------------------------------- 982d447839 | Edgar A. Bering IV | 2021-02-20 12:35:52 +0200 Silence a GCC type warning Closes #1758 -------------------------------------------------------------------------------- 49c82dfaf2 | Kate | 2021-02-20 01:09:42 +0000 Fix monster airstrike messaging (shummie) Closes #1762. -------------------------------------------------------------------------------- ba1aca71f1 | Kate | 2021-02-19 22:18:22 +0000 Fix Ozo's Armour allowing cancellation of dispersal traps Closes #1743. -------------------------------------------------------------------------------- 479c5223a7 | Kate | 2021-02-19 22:18:22 +0000 Rename and staticify a function -------------------------------------------------------------------------------- 8719b9d021 | Kate | 2021-02-19 22:16:16 +0000 Remove Airstrike's bonus damage against fliers Against monsters, it was just another type of elemental vulnerability, but against players, it was almost never tactically interesting and heavily penalised forgetting to toggle permanent sources of flight off. Rather than make it behave inconsistently against monsters, remove the bonus entirely - the increased damage against targets in open space is a more interesting bonus to focus the spell on (although the way it works should probably be adjusted/simplified). -------------------------------------------------------------------------------- c01e420030 | Jeffery Stager | 2021-02-19 17:08:23 -0500 fix typo in crawl_manual.rst -------------------------------------------------------------------------------- 622eac400c | advil | 2021-02-19 16:59:43 -0500 Add a scale to one missed describe call missed in 236002575ef -------------------------------------------------------------------------------- fbcf811447 | advil | 2021-02-19 16:44:35 -0500 Remove a debug call -------------------------------------------------------------------------------- 236002575e | advil | 2021-02-19 16:43:54 -0500 Double-size main tiles in (webtiles) describe popups This is for purely aesthetic reasons, but we'll see if others agree. It gives a nice pixelly look on default settings (though some tiles look better than others). If the ultimate judgment on this is positive, it can be ported to local tiles also. -------------------------------------------------------------------------------- 855979065c | Kate | 2021-02-19 18:32:06 +0000 Adjust wall jump interaction with mesmerise (#12205) Make mesmerise restrict wall jumps based on the landing location instead of the targeted wall, so that jumping away from mesmerising enemies is prevented and jumping towards them is allowed, not the other way around. -------------------------------------------------------------------------------- 3208abaabc | Edgar A. Bering IV | 2021-02-17 22:37:41 +0200 Buff Boris on the orb run Boris has been spawning on the orb run for about a year now and hasn't bagged a player. That simply will not do, so in this commit we give our boy a hand. If Boris sees the player with the orb he gains permanent haste and permanent brilliance aura effect. The former will help him chase players and sling spells at them; the latter will give him Ancient Lich spellcasting HD for greater lethality. -------------------------------------------------------------------------------- 6612197ff9 | Edgar A. Bering IV | 2021-02-17 18:20:57 +0200 Further tweak Lich spell sets By popular demand for more cold threats after the spell overhaul, as well as for liches with OOD and Petrify, this commit splits the Lich/Ancient Lich spell sets. Liches get Bolt of Cold, OOD, Slow, Haste, and Invis. Ancient Liches keep their new spell set but trade Slow for Petrify. -------------------------------------------------------------------------------- 9b90508cd1 | gammafunk | 2021-02-17 09:17:02 -0600 Clean up trove syntax Reorganize statements for consistency with the rest of DES, group ITEM statements, and reindent the veto clause. Closes #1755. -------------------------------------------------------------------------------- 79effa3b09 | Goratrix | 2021-02-17 09:17:02 -0600 Rework evocations-themed trove Since some of the misc evocables have been removed and the remaining six were changed to xp-rechargable, this trove has been often disappointing, placing on average 10 of misc evocables out of the total 14 items, with multiple useless copies of each. This changes the trove to guarantee exactly one of each of the 6 misc evocables, plus 8 wands/staves, weighted as average 6 wands and 2 staves. -------------------------------------------------------------------------------- d70e203ec9 | advil | 2021-02-17 09:00:36 -0500 Fix an ability description typo -------------------------------------------------------------------------------- 150de4c316 | Nikolai Lavsky | 2021-02-16 20:07:03 -0800 Don't assault firewood Also, fix an overlap between ``wont_attack()`` and ``neutral()`` in a condition. The former means ``ATT_FRIENDLY || ATT_GOOD_NEUTRAL || ATT_STRICT_NEUTRAL``, the latter means ``ATT_NEUTRAL || ATT_GOOD_NEUTRAL || ATT_STRICT_NEUTRAL``. -------------------------------------------------------------------------------- 34d631faf5 | advil | 2021-02-16 16:44:23 -0500 Memoize some terrain functions This fixes up a bunch of existing small hotspots by using the built in memoize code; somewhat redundant with the previous commit, which dealt with a stair direction call in a different way already. Really, the consequential change here is the feat_is_altar change, but I've also memoized a few key things that were downstream from this just because it's easy to do. The suppress blood check is heavily called on a webtiles build, so seems to merit converting to a more standard terrain function and memoizing as well (though really it was a hotspot because of the altar check). -------------------------------------------------------------------------------- 3e7e21a061 | advil | 2021-02-16 16:44:23 -0500 Limit stair exclusions to stairs Altars and shops also have stair directions, but stair exclusion semantics doesn't make any sense for them (and regular exclusions should still work if you want that). Also, because this is called a lot in rendering, checking the stair direction of altars was a weird little hotspot because it has to iterate through possible altar features (2% of weight during an early game qw run with a profiler attached, which is comparable to all of console rendering). Is there a use case for stair exclusion semantics acting on transporters? I'm not sure if that even worked but this probably prevents it if it did. If people complain I'll add them back. -------------------------------------------------------------------------------- 184f3a1eb7 | Aliscans | 2021-02-16 21:19:27 +0200 Move some text for some artefacts to art-data.txt. Create DESCRIP and DBRAND fields in art-data.txt. These fields are used in the description of an artefact. DBRAND extends the brand description and should be used for special brands. DESCRIP is used for sundry properties. The staff of Olgreb, Storm Bow, Maxwell's Thermic Engine, salamander hide armour, macabre finger necklace, and the glaive of the Guard are all adjusted to use these new data fields. I've put this in the description below the "excrutiating wounds" description, but this doesn't matter as the spell cannot be used on artefacts. I haven't moved the Warlock's Mirror description, as this field only works if the text to insert is fixed. Add + as a "start of line" character to show that the contents of a line in art-data.txt continues the preceding (string) field. Where, with whitespace, a space is added between the old line and the new one, with +, a newline is added. Add a description of the fields to the top of art-data.txt. [ Committer's note: Squashed and rebased, revised the commit message, tweaked some documentation and moved formatting newlines to describe.cc only (no extra newlines from art-data.pl). Closes #1717 ] -------------------------------------------------------------------------------- accac60908 | Aliscans | 2021-02-16 20:00:27 +0200 Make travel_pathfind::points a local variable. points is only used as the iterator for one loop in travel_pathfind::pathfind(), so it doesn't need a wider scope. -------------------------------------------------------------------------------- b98e92b636 | Aliscans | 2021-02-16 20:00:27 +0200 Delete some unnecessary functions from travel_pathfind. Delete set_annotate_map() and set_distance_grid(), which were never used. Replace travel_move() with travel_move in travel_pathfind. It was only called by pathfind(), which could access both. Move _find_explore_status() into travel_pathfind (now called explore_statu()). As its purpose is to interrogate a travel_pathfind, it seems like a good fit. Replace greedy_square(), unexplored_square() and get_unreachables() with the underlying variables. _find_explore_status() was the only function which read them, and it can now read the variables directly. -------------------------------------------------------------------------------- 5b2ef45498 | Aliscans | 2021-02-16 19:56:53 +0200 Delete the redundant rmode variable from _find_travel_pos(). -------------------------------------------------------------------------------- 76aa1ed959 | Aliscans | 2021-02-16 19:56:53 +0200 Remove a pointless travel_pathfind::pathfind() call. pathfind() always returns (0,0) without a target, so fill_travel_point_distance() no longer checks this. pathfind() clears travel_point_distance as it starts, so fill_travel_point_distance() no longer calls it twice if features hasn't been provided. It changes the order of *features, so I still call it twice if it is set. -------------------------------------------------------------------------------- a84d769ad4 | Aliscans | 2021-02-16 19:56:53 +0200 Split find_travel_pos(). _find_travel_pos() handles the case where move_x and move_y are set. fill_travel_point_distance() handles the cases without them. This change just removes the code which isn't run in each case, and puts _find_travel_pos() above the function which calls it. -------------------------------------------------------------------------------- dae97dfda2 | shummie | 2021-02-16 09:04:31 -0800 Replace running with rampaging in wizlabs Two vaults - Cloud Mages' Chambers and Roulette of Golubria have boots of running as possible rewards. With the removal of boots of running, these were missed. Replace these with boots of rampaging since they still fit the intended theme/reward of the wizlab. -------------------------------------------------------------------------------- 5931744824 | wheals | 2021-02-16 18:36:59 +0200 Fix polearm titles (#12507) -------------------------------------------------------------------------------- 82400c8b53 | advil | 2021-02-16 10:14:12 -0500 Convert traversability memoization to an array a42c0fa56e7 did get noticeable speedups in world_reacts bad cases, but it turns out that lookup time for unordered_map on this scale is still surprisingly bad because (it seems) of weird stdlib implementation constraints that lead to high layers of abstraction surrounding the constant lookup. So, just use an array, like most other member functions for this class. -------------------------------------------------------------------------------- b5b73b6894 | gammafunk | 2021-02-16 05:41:28 -0600 Some fixes for three Swamp vaults cheibrodos_swamp_witchery: Remove the unnecessary downweight, as it's a simple vault that places a single, normal-depth monster. Add some glass to make this not an autoexplore trap, since fenstriders do have paralyse. Make the special loot more appropriate to what the monster is thematically. Also clean up vault syntax. cheibrodos_swamp_pet_leeches: Make the corpse closet have a door; there's no reason for this to be accessible only with dig. Also remove the no_tele_into portions, as it's not necessary. For all three of these vaults, remove unnecessary range restrictions for Swamp:4, as they work just fine on that level. Also remove no_item_gen, as there's no problem with items generating in these. Vault makers tend to use this when they place their own loot, thinking they don't want the layout to place more loot on the level. But this tag doesn't affect the amount of loot generated as level items, just what places are eligible. Likely we'll need to make another pass through swamp.des to fix up other issues related to the Swamp changes. -------------------------------------------------------------------------------- 54d06ca096 | AdamPG | 2021-02-16 09:41:00 +0200 Tweak some Swamp witch vaults to better fit their creators' intentions grunt_witch_cave gets a real witch now that they exist. cheibrodos_swamp_witchery seemingly wanted to place exactly one witch in one of the huts randomly, but actually placed zero to two witches. Replacing SUBST with NSUBST leads to the intended behaviour. -------------------------------------------------------------------------------- 8badd94918 | Edgar A. Bering IV | 2021-02-16 08:54:07 +0200 Update the changelog through 0.27-a0-365 -------------------------------------------------------------------------------- ed15d12607 | Edgar A. Bering IV | 2021-02-16 08:53:32 +0200 Update the changelog for 0.26.1 (cherry picked from commit d7a4d63c155831395aa76a5b27c080510dfb948e) -------------------------------------------------------------------------------- 31b3477d74 | advil | 2021-02-15 22:54:29 -0500 Calm down pathing for lost batty band leaders (12505) When a band leader is inaccessible and far away, what's supposed to happen is that the range check in _band_ok keeps a new path calculation attempt from happening while band members move between random wander targets. However, if the band consists of batty monsters, this logic was being overridden; apparently batty monsters get a new wander target each turn no matter what (??). This was leading to a pretty massive cpu spike when scarab beetles lost their band leader in tomb, as seen in the save in 12505. This commit causes batty band members to use the _band_ok logic rather than blanket recalculating every call. I'm not sure if there will be any weird side effects to this, e.g. they might move around less when wandering. Possibly affects only scarab beetles. -------------------------------------------------------------------------------- a42c0fa56e | advil | 2021-02-15 22:54:29 -0500 Memoize traversability checks in pathfinding In extreme cases, pathfinding with a large range on an open level calls this ~7-8 times per square, so it can be a noticeable speedup to not recalculate traversability constantly. -------------------------------------------------------------------------------- 8331d791d5 | Nikolai Lavsky | 2021-02-15 22:20:20 +0200 Update the des syntax doc This commit updates examples and removes mentions of obsolete/deprecated item types, glyphs, and modifiers. -------------------------------------------------------------------------------- 8f6b0cd894 | advil | 2021-02-15 15:10:51 -0500 Restructure some wizmode help commands I can never find what I'm looking for in this menu, and this commit is an attempt to have slightly easier ordering and sections for level/builder/feature-related commands. -------------------------------------------------------------------------------- aa8612f87b | advil | 2021-02-15 14:25:01 -0500 Improve some divine exegesis menu issues * e12f10fa2d7f24c87a used ' ' as the hotkey for uncastable spells in divine exegesis as a display hack, following code for unmemorizable spells from before that commit. Previously this was the only (maybe even standard?) way to mix hotkeyed and non-hotkeyed MenuEntrys in a menu with reasonable formatting. However, space is a valid hotkey that the menu code will handle as such, and for unrelated reasons dd83002478 changed how this hotkey renders, leading to weird effects for DE in particular. (I'm not actually sure under what conditions the memorise case here gets triggered..) This commit adds a fairly brute-force way of fixing the formatting for actually non-hotkeyed entries. Possibly should be the default on everything, but the way hotkeys are rendered generally needs a bigger refactor. * Fix header spacing in the (Cast) version of the menu. * Show some DE-specific text + current MP in the footer; the fact that the player needed MP for the spell seems to have been tripping people up in combination with the "Space" bug, so showing it explicitly will make clear why some spells are disabled. There's still an issue with this menu when the player has >52 spells memorized. -------------------------------------------------------------------------------- b719701251 | Nicholas Feinberg | 2021-02-15 11:04:24 -0800 Fix tests? -------------------------------------------------------------------------------- 46a10ce11a | Nicholas Feinberg | 2021-02-15 10:51:21 -0800 Let dancing launchers shoot -------------------------------------------------------------------------------- 7e98f454ed | Nicholas Feinberg | 2021-02-15 10:47:17 -0800 Give dancing launchers ammo -------------------------------------------------------------------------------- bf771cdeb5 | Nicholas Feinberg | 2021-02-15 10:23:27 -0800 Make dancing launchers not crash the game -------------------------------------------------------------------------------- 57b6be6a68 | Nicholas Feinberg | 2021-02-15 10:00:12 -0800 New spell: Manifold Assault (L5 Translocations) Manifold Assault launches melee attacks with against 2-4 random enemies in LOS, depending on spellpower. It's themed as warping space so that one attack can, paradoxically, hit many enemies. This spell is intended to give melee-focused characters more reason to consider investing in spellcasting, It's fun to try to skill toward a 'hybrid' build, and a spell that mostly scales off your melee attack, rather than your spellpower, helps encourage that. This being a L5 spell helps avoid it being a truly free 'gimme', and allows it to hit many enemies at once. The lack of targeter should hopefully avoid it being annoying to use, by making it just a single press to cast. It also gives the player more reason to keep normally hitting things in melee sometimes, when it's important to kill a specific target. Cleaving doesn't work with this spell since it seems overly confusing, and since reach and riposte don't work with it either. (Thus, it's 'fair'.) All stabs are also currently banned, though I do wonder if we might want to allow non-sleep stabs. -------------------------------------------------------------------------------- d46515b8de | Nicholas Feinberg | 2021-02-15 09:45:49 -0800 Display monster to-hit percentages in xv Accounting for both EV and SH. These calculations are a bit clunky, but they line up with the underlying rolls and with fsim. -------------------------------------------------------------------------------- b2377c9954 | advil | 2021-02-15 11:58:35 -0500 Partial refactor of throw_item_no_quiver (12488) The end goal is to have this better integrated with quiver code, but this commit only moves a bit towards this. The main target of this commit, convulated though it may seem, is to prevent `F` from updating the global quiver history and avoid the issue in mantis 12488 altogether. This commit does it by using a custom action_cycler for throwing via `F`, which indirectly keeps the history from being updated and minorly improves the interface for `F` targeting (and then most of the commit is restructuring so that this can be done more easily). -------------------------------------------------------------------------------- 3253a67a23 | advil | 2021-02-15 11:58:35 -0500 Rein in some autoswitch logic In particular, don't apply autoswitch logic to ammo gain/loss unless it is an entire stack of ammo. This partially addresses 12488: what is happening there is that because firing changes stack size, the autoswitch code was getting called on any firing event. It's not a complete fix because `F` should still never affect the fire history for autoswitch purposes. -------------------------------------------------------------------------------- 775e467c85 | advil | 2021-02-15 11:58:35 -0500 Update qw copy Possibly this should be removed from the repo, or turned into a submodule, but until that happens, here's a more up-to-date version. -------------------------------------------------------------------------------- db36ff0be9 | Implojin | 2021-02-15 17:15:11 +0200 Add another species title Ashenzari warns you: it is. -------------------------------------------------------------------------------- 77ac2e9d3a | Aliscans | 2021-02-15 09:30:46 +0200 Distinguish between "1 poisoned" and "all poisoned" in the monster list. Previously, if there were 6 sheep, the monster list would show: (poisoned) if 1 had been poisoned; (2 poisoned) if 2 had; and (poisoned) if all had. This changes the first case to (1 poisoned). It displays (poisoned), as now, if only one sheep is left. This makes it easier to see when (in this case) a sheep needs more poison. -------------------------------------------------------------------------------- d820fc0954 | Aliscans | 2021-02-15 09:28:01 +0200 Keep "[Y]es or [N]o only, please" messages out of the log. Move the "[Y]es or [N]o only, please" message from MSGCH_PLAIN to MSGCH_PROMPT in yesno() and yesnoquit(). This has two effects. 1. The message no longer appears in the previous message list. The original yes/no question does not appear here, so this message previously appeared in the log with no context. 2. The message is blue rather than white by default. This could be changed, but it would take more work. -------------------------------------------------------------------------------- 1cc477e9f5 | AdamPG | 2021-02-15 09:25:21 +0200 Make amulets of reflection actually grant monsters SH Currently the SH returned is negative when a monster has an amulet of reflection equipped without a shield. -------------------------------------------------------------------------------- a689d4a613 | Nicholas Feinberg | 2021-02-14 19:41:43 -0800 Restore old Fedhas piety message Purely for flavor, let's appreciate some contributions to the ecosystem. -------------------------------------------------------------------------------- 7370b58738 | advil | 2021-02-14 14:45:45 -0500 Remove an obsolete autopickup exception (12497) Books are now marked as useless if they wouldn't add any spells, so there doesn't need to be a custom autopickup rule for them. In addition, since b8f8a8f698407 and bd089401bb, this rule broke autopickup for ash, because books are all fully ID'd. -------------------------------------------------------------------------------- ae24eb62ac | Kate | 2021-02-14 09:54:31 +0000 Fix some typos Closes #1719 -------------------------------------------------------------------------------- fcad680f63 | Nicholas Feinberg | 2021-02-13 16:24:56 -0800 Partially compensate VS regen Remove their second level of MUT_REGEN, now that each level gives 1 HP/dAut instead of 0.4. This still makes them strictly stronger than before - could perhaps shift the first MUT_REGEN a bit later? Another interesting idea would be to give them another -1 hp, +10% mp, and super regen (hellmonk), but don't feel strongly. -------------------------------------------------------------------------------- 5810d18f4b | Nicholas Feinberg | 2021-02-13 16:20:29 -0800 Make trolls more thin-skinned In compensation for their extra 0.6 hp/turn, turn their tough skin mut down from level 3 to level 1. -------------------------------------------------------------------------------- 40fdf68bc5 | advil | 2021-02-13 17:08:25 -0500 Continue fixing CI -------------------------------------------------------------------------------- 029c345baf | advil | 2021-02-13 16:48:00 -0500 Actually update requirements files for the CI error -------------------------------------------------------------------------------- df26f997a6 | advil | 2021-02-13 16:38:16 -0500 Fix more build issues * one more upgrade issue for the running brand * disable a flake8 package that seems to have stopped working in py27 -------------------------------------------------------------------------------- 9cfa79e74d | advil | 2021-02-13 16:23:24 -0500 Fix an upgrade build issue for running removal -------------------------------------------------------------------------------- c8f691b2cc | Nicholas Feinberg | 2021-02-13 11:15:15 -0800 Buff regen properties (Lici) Items that grant regeneration gave 0.4 HP/turn (0.04/aut), which was not enough to make them a significant tactical factor. Since the vast majority of the game doesn't have enough strategic time pressure to make regen speed outside combat very meaningful, this meant that the regen property was misleadingly weak. Increasing the regen rate by 2.5x to 1 HP/turn (0.1/aut) should give it some chance of being a relevant factor for equipment decisions in a 3-rune game. I don't believe this significantly buffs players overall, since most sources of regeneration still aren't that strong. -------------------------------------------------------------------------------- e8094add7c | Nicholas Feinberg | 2021-02-13 10:52:21 -0800 Remove boots of running Boots of running were extremely strong items, which isn't at all a problem. It's great for the game to have rare and powerful items - it creates exciting variance. However, runboots didn't create fun and exciting gameplay. They drained tension from the game by allowing the wearer to (over ~1-10 turns!) walk away from any normal speed enemy, which is powerful, but not that fun. So, farewell. Lightning scales remain as the last holdout, though maybe they should be restricted for naga only. Maybe we can finally have that scroll of brand armour now...? (: -------------------------------------------------------------------------------- dc303548b9 | Nicholas Feinberg | 2021-02-13 10:52:13 -0800 Rewrite lightning scales' description Be slightly coyer about which species can use them (for aesthetics), and clarify that they improve movement speed, not action speed. -------------------------------------------------------------------------------- 52645efa06 | Nicholas Feinberg | 2021-02-12 14:55:01 -0800 Fix cursed item descriptions (12492) Broken sometime around 8bf7259e65b6b6a6ca . Oops! -------------------------------------------------------------------------------- fa571bf19a | advil | 2021-02-11 15:27:05 -0500 Fix header build -------------------------------------------------------------------------------- d6963574d8 | advil | 2021-02-11 13:16:17 -0500 Explicitly show ally foes This shows ally targeting info: (i) on the ally, (ii) on the target monsters, and (iii) as a mi flag on the short description (without specifics). For simple cases this won't show anything surprising at all to experienced players, but I think it still is useful info to new players. For complex cases, it may be useful to see e.g. that an ally is pathing through a monster that's not what you'd hope it to be targeting. I suspect this hasn't been done before because of information overload issues. And monster descriptions definitely have been accruing information overload for the last few versions! However, I think I have converted to team info, and I do think this specific bit of info is useful for many cases. It also may have not been done before because there are cases where what is shown is weird and confusing. However, this reflects weird and confusing ally *behaviour*, which is still frustrating to players when it is detected. This commit may make it easier to detect, which is perhaps the path towards less confusing ally behavior. I won't be surprised if it turns up some bugs too... It doesn't seem impossible to me that this could turn out to be a bad idea to show after all, but we'll see. -------------------------------------------------------------------------------- 70b395f35d | Nicholas Feinberg | 2021-02-11 09:25:27 -0800 Spelling -------------------------------------------------------------------------------- 75073f8639 | Nicholas Feinberg | 2021-02-11 09:23:55 -0800 Two more titles (hellmonk, ebering) -------------------------------------------------------------------------------- ccc5534d49 | Nicholas Feinberg | 2021-02-11 09:14:21 -0800 Add more per-species titles Seems fun! All of these are intended to be not too annoying to get for folks who like to collect titles, but they're not in general designed as something to steer folks towards a race's strengths - just fun little acknowledgements of something the player's done. I desperately wanted the formicid title to be 'transdimensional tunneler', but it was far too long... -------------------------------------------------------------------------------- 7f782ed93a | Implojin | 2021-02-10 23:31:44 +0200 Update copyright date in LICENSE -------------------------------------------------------------------------------- 433c55acf3 | Nicholas Feinberg | 2021-02-10 12:51:43 -0800 Remove a semicolon -------------------------------------------------------------------------------- 81277dbfc4 | hellmonk | 2021-02-10 12:51:43 -0800 Change demigod stats and exp apt. Lean into the stat gimmick by reducing starting stats by 2 each and doubling stat growth. -------------------------------------------------------------------------------- da14cb0413 | advil | 2021-02-10 15:45:47 -0500 Fix some uselessness grammar (gammafunk) The main point of this commmit is to fix the wording, shown in spell descriptions, "This spell would have no effect right now because you don't have enough magic to cast that spell." It does this by formatting more general casting useless reasons separately from spell-specific uselessness reasons (they are shown in red without any extra text). Along the way: * change "that" to "this" in the low MP uselessness reason -- "this" is used elsewhere and is less awkward in most cases. (Even if it no longer matters here.) * refactor Ru spell bans to all be handled as casting uselessness reasons, not spell-specific uselessness reasons; before they were in multiple places. Hopefully the weird previous ordering didn't cause any side effects that this eliminates. -------------------------------------------------------------------------------- 75ad407e7c | wheals | 2021-02-10 17:40:21 +0200 Remove some extraneous uses of auto_id_inventory Unused since 20b3437a0c1 -------------------------------------------------------------------------------- bd089401bb | advil | 2021-02-10 10:21:36 -0500 Further fix ash id (wheals) cf. b8f8a8f69840 -------------------------------------------------------------------------------- b8f8a8f698 | advil | 2021-02-10 10:01:43 -0500 Quick ash id fix Accommodate the presupposition in fa4e0b4b0e52 that ash identifies all items; otherwise, ash players are a bit out of luck right now. Not well tested for id special cases... Resolves #1735 -------------------------------------------------------------------------------- 42d3f6298c | Edgar A. Bering IV | 2021-02-10 15:58:41 +0200 Weight random effects So that the "bad for the player" effects happen only 15% of the time. -------------------------------------------------------------------------------- 81d27af2d4 | advil | 2021-02-09 22:22:27 -0500 Pre-identify acquirement manuals (12485) This comes up for troves, e.g. trove_library as in the linked save. Regular manual generation has done pre-identification since 2c9a30dacb1b69, but I suspect there was also somewhere a step where an acquired manual was id'd once it was actually picked up. Now that manuals never get picked up, unless the manual is id'd in advance there is an extremely useless message. I've also added (redundant?) id'ing in the new pickup code. This shouldn't be necessary except for games with troves that generated before this fix. -------------------------------------------------------------------------------- b975c0971c | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Remove a mystifying comment from the last millenium -------------------------------------------------------------------------------- a3e463392d | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Remove the extra bad weapon randarts Just because. -------------------------------------------------------------------------------- 9fd62742f6 | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Make jewellery generation more sane -------------------------------------------------------------------------------- 8372c9b158 | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Reduce jewellery generation a bit To compensate for the removal of 3 rings, 1 amulet, and negative enchantment jewellery. No adjustment to overall item generation, since we overshot a little bit with the compensation for ?rc removal. -------------------------------------------------------------------------------- 6b4f085fcf | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Teleport rings of teleportation away Tragically, in their current form, they have little to offer in a curseless world. Farewell! -------------------------------------------------------------------------------- 303758149e | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Re-add useless jewellery -------------------------------------------------------------------------------- d58e3d690f | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Remove more bad things -------------------------------------------------------------------------------- 68f27ed3b0 | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Remove very bad weapons (ebering) These were uncommon enough that I don't we need to comp generation further. -------------------------------------------------------------------------------- 0bbf9b5c7d | Nicholas Feinberg | 2021-02-09 16:36:09 -0800 Remove an inaccurate hint -------------------------------------------------------------------------------- bc12fde1e9 | Nicholas Feinberg | 2021-02-09 16:35:56 -0800 Recolour weapon/armour egos As before, un-id'd glowing weapons/armour are blue. Ego weapons/armour: green. Enchanted but non-ego weapons/armour: green. (Previously used for known-uncursed items.) Un-id'd magical staves: blue. ID'd magical staves: green. I suspect we'll want to tweak some of this, but it's a start. -------------------------------------------------------------------------------- d83380fbf1 | Nicholas Feinberg | 2021-02-09 16:35:42 -0800 Update docs for curse removal -------------------------------------------------------------------------------- 3ce31fd4f6 | Nicholas Feinberg | 2021-02-09 16:35:42 -0800 Reduce non-vault item gen by 5% To compensate for ?rc removal and keep overall item count roughly the same as it was before. -------------------------------------------------------------------------------- 880a64342f | Nicholas Feinberg | 2021-02-09 16:35:28 -0800 Remove remove curse Useless now that random curses no longer exist. -------------------------------------------------------------------------------- f16e07f070 | Nicholas Feinberg | 2021-02-09 16:35:28 -0800 Fix a hint -------------------------------------------------------------------------------- c026bc2f57 | Nicholas Feinberg | 2021-02-09 16:35:21 -0800 Uncurse all items Except for those in the inventory of Ash-worshippers. -------------------------------------------------------------------------------- 583d5e20f2 | Nicholas Feinberg | 2021-02-09 16:35:18 -0800 Don't generate items cursed The future approacheth. -------------------------------------------------------------------------------- 8bf7259e65 | Nicholas Feinberg | 2021-02-09 16:35:18 -0800 Make curse status always known Since Ash will soon be the only source of curses. Don't ever describe items as 'uncursed', since that's trivially true if you're not with Ash. -------------------------------------------------------------------------------- 8bc936e012 | Nicholas Feinberg | 2021-02-09 16:35:18 -0800 Don't glow up cursed items Irrelevant soon. -------------------------------------------------------------------------------- e2017fbedb | Nicholas Feinberg | 2021-02-09 16:35:18 -0800 Remove cursed vault items Begone, gammacurses! -------------------------------------------------------------------------------- c22e62d8df | Nicholas Feinberg | 2021-02-09 16:35:18 -0800 Remove negative-plus jewellery Made no sense with curse removal. This increases the number of real (non-negative) jewellery items by very roughly 5%. (6/26 jewellery types could be generated with a negative plus, and those had a 20% chance of being negative.) No comp is provided. -------------------------------------------------------------------------------- e57382988b | Nicholas Feinberg | 2021-02-09 16:35:18 -0800 Uncurse everything when leaving Ash Again, a placeholder. -------------------------------------------------------------------------------- fa4e0b4b0e | Nicholas Feinberg | 2021-02-09 16:34:57 -0800 Make Ash use ?id instead of ?rc Placeholder for a broader rework. It's sort of elegant, IMO - since ID is pretty useless with Ash otherwise (since the god already IDs everything), it's a reasonable resource. -------------------------------------------------------------------------------- 01f12845e7 | Nicholas Feinberg | 2021-02-09 16:34:54 -0800 Remove amulets of inaccuracy Part 1 of the Curse Removal Saga. -------------------------------------------------------------------------------- a3f61025e6 | Nicholas Feinberg | 2021-02-09 16:31:54 -0800 Fix tloc miscast description -------------------------------------------------------------------------------- e1136d6ca4 | advil | 2021-02-09 16:57:43 -0500 Fix some bitwise operators (geekosaur) -------------------------------------------------------------------------------- ead3b1d052 | advil | 2021-02-09 16:08:45 -0500 Double default dump_message_count In more spectacular endings, 20 is often not nearly enough to see what happened. Let's try a bigger default. -------------------------------------------------------------------------------- ff613de66b | sdynet | 2021-02-09 22:02:58 +0200 Hexify of wand of random effects The immediate effect of damaging the enemy is provided by the other wands. The old effect list was at one point the union of wand effects, but that is long gone and far from true, which makes it a bit of a spoiler trap. The new effect list is entirely buffs and debuffs, and listed in the wand description. If the power level isn't right the effects can be weighted and tuned. [ Committer's note: Closes #1310. Revised the effect list, re-worded the commit message. ] -------------------------------------------------------------------------------- 97e392b7e8 | Nikolai Lavsky | 2021-02-09 20:37:17 +0200 Remove some water from mumra_spider_spiderweb The vault has several spiders trapped behind deep water, as they can no longer cling to walls. This commit frees the spiders and reduces the number of water and deep water tiles in the vault. Also, it removes an escape hatch in the inner area, since the vault is not a teleport closet anymore. -------------------------------------------------------------------------------- d9602db6ee | advil | 2021-02-08 15:38:40 -0500 Skip some unique fineff messaging on turn 0 (12346) This is for the case where a delver lands in los of a pikel/kirke, where it doesn't make sense to do the messaging related to freeing the follower band. I haven't tested this case very directly because the seed in mantis 12346 doesn't place pikel any more (and I haven't tried to go back to a version where it does), so it's possible there's more tweaking needed. In principle, the bands should get zapped too (like dowan and duvessa) but I don't *think* this is happening right now. -------------------------------------------------------------------------------- b28db10d6f | advil | 2021-02-08 15:38:40 -0500 Skip elven twin stuff on dismissal/reset On a delver start, if the los zap wipes out one elven twin, the other is supposed to go too. But, the code in elven_twin_died still ran on the first to go and caused the second one to be woken and berserked etc; depending on the timing this could lead to messaging as in mantis 12480. I'm pretty sure that there's no natural way for these kill types to apply, so this should affect only the delver start case. -------------------------------------------------------------------------------- 715ed11b31 | advil | 2021-02-08 15:38:40 -0500 Don't allow delver-zapped uniques to regenerate Doing this will lead to potential seed differences between delver starts and regular starts on the same seed number. (An alternative option would be to force los uniques somewhere else in the level, after the level has fully generated.) -------------------------------------------------------------------------------- daa8bd6ff3 | Edgar A. Bering IV | 2021-02-08 22:08:00 +0200 Quiet down storm clouds Storm clouds are loud (lightning bolt loud!) because Grunt made them that way in February 2014 and there wasn't much other commentary about it at the time. They're the only cloud that makes noise, and appear in five places: - Around Bai in second form in her cloud ring - Random panlord cloud rings - Robe of Clouds clouds - Condenser vane clouds - Qazlal clouds For monsters, r-i indicated that the loudness of Bai was mildly desired but not a primary part of the design; with randlords the cloud rings are very much a "don't melee me" effect and not for noise. For the two evoked player sources of clouds, the condenser vane has skill training and xp gating to balance it. The Robe of Clouds probably needs another re-work, it does rely on storm cloud noise for balance somewhat. Finally, Qazlal stormclouds have made Q much louder than designed, even very early on, making the noise conduct much harsher than it should be. Q's rumble is min ( piety / 10, 16 ) noise, lightning bolt is 25. 1* Q followers weren't supposed to be so loud. Making all clouds quiet will make it easier to attach appropriate noise (or other cost or drawback) to their source according to mechanical niche, instead of this one cloud type being SO LOUD. -------------------------------------------------------------------------------- d4424db430 | advil | 2021-02-07 19:29:05 -0500 Mark willpower/magical power rings as stackable (12484) 12484 reports this as a recent change, but as far as I can tell MR/willpower has never been marked as stackable in any way; I also noticed that magical power is not marked this way. Any other rings missing here? -------------------------------------------------------------------------------- 37e0bc138e | advil | 2021-02-07 17:31:18 -0500 Fix a bitwise operator used for fire order (12481) This is supposed to keep classes from being added to the vector multiple times, but with & it obviously wouldn't do this correctly, leading to somewhat unpredictable results for custom fire orders. (This whole use of bitmasks for the fire order is one of the last vestiges of oldquivers and could use a complete refactor.) -------------------------------------------------------------------------------- f42357c144 | Kate | 2021-02-07 21:31:54 +0000 Update skill training docs -------------------------------------------------------------------------------- 240d7df7c7 | gammafunk | 2021-02-07 11:09:23 -0600 Some vault adjustments for kobold brigands For vaults that give kobold brigands custom equipment, also give them darts in line with their new "underhanded tactics" theme, unless doing so was counter to the vault's theme somehow. All changes below give brigands darts with a 2/3 chance for poison and 1/3 chance for curare: due_exit_kobolds: An Abyss exit vault. Characters exiting the abyss can handle a dart or two. blue_anna_alchemist: An alchemist would be good at crafting poison! Also pre-identify the guaranteed degeneration and ambrosia potions. cheibrodos_thug_alley: There's only 1-2 brigand "bosses" at the end of this vault, so it won't be anything too nasty. Also clean up NSUBST statements. minmay_goblin_kobold_castle: Perhaps the most significant change, since this vault is pretty iconic. Remove the brigand's custom equipment definition, thus allowing it to have darts, but also mix in gnolls to down-weight brigand placement. This vault describes itself as a castle of kobolds and goblins, but it's actually a castle of kobolds *or* goblins, since you either get a kobold set or a goblin set. The goblin set has (non-throwing) gnolls mixed in, but the kobold set did not. The switch from big kobolds to kobold brigands adds dart throwing jerks, so we upweight ordinary kobolds and add non-throwing gnolls to thin out dart throwers a bit. We now get 2 brigands on-average per map placement for the kobold set, which is reasonable for large, challenging vault on D:3-6. Closes #1709. -------------------------------------------------------------------------------- 7af2214585 | gammafunk | 2021-02-07 08:51:12 -0600 Kobold fixes for a ghost vault Adapt the vault gammafunk_ghost_nasty_kobolds for the change of big kobolds to kobold brigands. Give all brigands darts, simplify weapon setup, remove a definition no longer necessary, since brigands always have darts, and reglyph. Composition-wise, don't mix in special dart-throwing kobolds after we've switch from ordinary kobolds to brigands (post D:5). This vault presents a lot of darts offensively and as loot post D:5, but not to any point that's a concern. -------------------------------------------------------------------------------- 50fcd4f5b3 | Nicholas Feinberg | 2021-02-07 06:20:59 -0600 Turn big kobolds into kobold brigands Big kobolds didn't really have a defined role or any particular threat, and non-big kobolds spawning with curare created some pretty unecessarily vicious difficulty spikes. Remove curare darts from normal kobolds and move them onto big kobolds, which are renamed to 'kobold brigands'. Some vaults are tweaked somewhat; no other changes. This increases the average amount of curare generated in D from about 4 to about 5.5 per game. -------------------------------------------------------------------------------- d22cd1d61d | Edgar A. Bering IV | 2021-02-07 09:48:56 +0200 Apply Gell's gravitas in near-to-far order To the extent that crawl has a coherent physics, players expect gravity to pull everything towards the attraction point, without sorting a further away monster can get pulled first, followed by a closer monster, which is optically a bit weird. The unsorted pull did have an order: internal monster array order, which made the spell hard to reason about and also possibly introduced some weird biases or information leaks. -------------------------------------------------------------------------------- e33754e197 | Hatsuma | 2021-02-07 09:48:03 +0200 Sort potion of attraction pulls [ Committer's note: Closes #1724. Squashed, rebased, tweaked commit message and comments. ] -------------------------------------------------------------------------------- dfb9265905 | advil | 2021-02-06 22:20:13 -0500 Use `catpath` instead of string + for some path combination This should fix 12489, where the use of string concatenation was leading to part of the path without an unterminated directory turning into part of the filename. -------------------------------------------------------------------------------- 7d165411bc | Nicholas Feinberg | 2021-02-06 16:00:09 -0800 Remove a secret accuracy malus (sentei) Added in 7d9c2931b71, 14 years ago (DCSS 0.3). Was not properly displayed in targeters and, also, had no real reason to exist. Clouds do plenty without a secret accuracy penalty! -------------------------------------------------------------------------------- 024f7ef292 | Edgar A. Bering IV | 2021-02-04 23:29:02 +0200 Remove gadget shops In 0.26, all misc evokers became XP gated, so the player only needs one. With wand stacking changes, players still amass a great many wand charges (themselves exacerbated by the reduction in the number of wand types with scattershot and clouds replaced by misc items!). An easy to find and remove source of this heaping pile of riches are gadget shops, which made a lot more sense when gadgets were more consumable (but even then were quite nice shops). Currently wands and evokers can still appear in general stores, perhaps that could also change, there are still a lot of them spawning. Certainly, misc evokers could stand to see further drop reductions. This commit sticks to gadget shops for now. Some specific numbers from a 3-rune 100 iteration objectstat run, compared to the same run for 0.26. Wand | Avg-26 | Avg-new | Min-0.26 | Min-new | Max-0.26 | Max-new ---- | ------ | ------- | -------- | ------- | -------- | ------- flam | 10 | 7.8 | 3 | 3 | 17 | 19 para | 7.7 | 6 | 2 | 2 | 18 | 14 dig | 6.5 | 4 | 1 | 1 | 14 | 13 iceb | 10.5 | 8.3 | 4 | 2 | 22 | 15 poly | 7.8 | 6.1 | 2 | 0 | 15 | 13 char | 4.9 | 3.8 | 1 | 0 | 12 | 10 acid | 8 | 5.9 | 2 | 1 | 18 | 14 rand | 7.8 | 5.9 | 2 | 1 | 20 | 16 mind | 5.7 | 4.6 | 1 | 1 | 13 | 11 Misc | Avg-26 | Avg-new | Min-0.26 | Min-new | Max-0.26 | Max-new ---- | ------ | ------- | -------- | ------- | -------- | ------- box | 7.4 | 4.9 | 1 | 1 | 19 | 12 rod | 7 | 4.6 | 2 | 0 | 14 | 12 phia | 8 | 4.5 | 1 | 0 | 18 | 11 mirr | 7 | 4.4 | 1 | 0 | 17 | 12 tin | 8 | 4.9 | 2 | 0 | 14 | 12 vane | 8 | 4.6 | 1 | 0 | 20 | 11 -------------------------------------------------------------------------------- 67906b0434 | Aliscans | 2021-02-04 20:17:31 +0200 Make _ability_quiver_range_check() static. The following compiler warning was given by gcc 10.2.0. Making _ability_quiver_range_check() static removes the warning. The function is only used in quiver.cc. quiver.cc:1231:10: warning: no previous declaration for ‘bool quiver::_ability_quiver_range_check(ability_type, bool)’ [-Wmissing-declarations] 1231 | bool _ability_quiver_range_check(ability_type abil, bool quiet=true) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ -------------------------------------------------------------------------------- fa7a5ec6c4 | Aliscans | 2021-02-04 20:17:31 +0200 Rename lua_persist::string as lua_persist::text. The following compiler warning was given by gcc 10.2.0. Renaming lua_persist::string removes the warning. The name used is immaterial, and the enum is only used in two functions. l-file.cc:93:5: warning: declaration of ‘string’ shadows a global declaration [-Wshadow] 93 | string, | ^~~~~~ In file included from /usr/include/c++/10/iosfwd:39, from /usr/include/c++/10/memory:74, from externs.h:16, from AppHdr.h:315, from l-file.cc:1: /usr/include/c++/10/bits/stringfwd.h:79:33: note: shadowed declaration is here 79 | typedef basic_string string; | -------------------------------------------------------------------------------- b5755f8d7c | advil | 2021-02-04 12:33:56 -0500 lint -------------------------------------------------------------------------------- dc19187ef5 | advil | 2021-02-04 12:31:39 -0500 One more ring of stealth (fix CI) -------------------------------------------------------------------------------- 40f84a5caa | advil | 2021-02-04 12:27:38 -0500 Update some 13 year old docs with current build info (12482) This text was written probably around 0.3 so isn't very applicable to the way things are currently set up; the implementation of DEBUG_MONSPEAK has drifted quite a bit. If there's actually demand for a monspeak-only build (which was possible before bc841a2a9115e3), then the dprfs in mon-speak.cc should be switched back to mprfs. I made one small change so that DEBUG_MONSPEAK isn't completely inert if defined on its own. Also, remove an obsolete DEBUG def. -------------------------------------------------------------------------------- 03888ab0b0 | wheals | 2021-02-04 19:14:30 +0200 Rule of three fix -------------------------------------------------------------------------------- a82526b2db | Nicholas Feinberg | 2021-02-04 09:13:37 -0800 Enable stealth hats and gloves To compensate for the loss of our late, lamented stealthy rings. -------------------------------------------------------------------------------- ccae488368 | Nicholas Feinberg | 2021-02-04 09:05:25 -0800 Mostly remove rings of stealth (various) Rings' mechanical niche is as a swappable slot: items that provide you with tactical decisions to make about gear loadout within a given combat. Do you want rF or Slaying while fighting the lindwurm? Is it worth the extra half a turn to swap? There's some argument over how often ring swapping creates interesting decisions vs busywork, but if rings should exist, that's why. There's no combat where you want to be wearing =Stealth, You want to wear =stealth *outside* of combat, and something else inside. Essentially, if you care about optimizing, you'd want to swap away from =stealth at the start of each combat, which is... not very exciting! So, rings of stealth will no longer generate. They're still around as a base type for the Ring of Shadows, but should probably be refactored into a 'ring of nothingness' at some point. Octopus King now gets +flight instead, for all those pesky lava moments. -------------------------------------------------------------------------------- fa1d4835b4 | Nicholas Feinberg | 2021-02-04 08:58:18 -0800 Pay more attention to removing rings ??doh -------------------------------------------------------------------------------- 0e4e36e7b5 | Nicholas Feinberg | 2021-02-04 08:37:58 -0800 Remove rings of attention These were added to replace rings of hunger, but like their predecessors, they never really had much impact on the game. The potential downside isn't nearly large enough to discourage players from wear-IDing rings, and if it were larger, the resulting cautious gameplay wouldn't be especially fun in a game of Crawl's scale. -------------------------------------------------------------------------------- e61c0dba20 | Nicholas Feinberg | 2021-02-04 08:11:56 -0800 Remove food and chunks - redux! (from objstat) -------------------------------------------------------------------------------- 4b4afb4849 | Nicholas Feinberg | 2021-02-04 08:07:18 -0800 Reduce husk bloat Don't spawn a vast army of bloated husks in swamp_pestilence. -------------------------------------------------------------------------------- 0178f6a2e2 | Nicholas Feinberg | 2021-02-03 23:15:58 -0800 Remove *Curse Random curses on equip existed on exactly three unrands (and no randarts). It was on Scythe of Curses purely for theme, on Obsidian Axe to make it not a complete no-brainer to swap off the weapon when mesmerized, and on the Necklace of Bloodlust to discourage swaps when you'd rather not be randomly berserked. *Curse wasn't an extremely great mechanism for limiting the latter two. The randomness of how many scrolls of remove curse were generated meant that the restriction was sometimes tight and sometimes irrelevant, and there wasn't any real tactical element to the cost. So, let's remove it. Amulets are now slow to swap, so the Necklace of Bloodlust no longer has a *Drain downside at all. The Scythe of Curses is now {drain, *Drain}, which seems very thematic if not mechanically necessary, and the obsidian axe likewise gets *Drain. (It could be fun to have a 'Compel' or 'Sticky' property that makes these weapons slow to swap, compelling the user like the One Ring... but not right now.) This should hopefully provide a more interesting set of tactical choices. Curses! -------------------------------------------------------------------------------- c8dee61f84 | Nicholas Feinberg | 2021-02-03 22:50:47 -0800 Show melee accuracy on v (vt) Matching the xv EV display. (Is this enough cryptic letters..?) -------------------------------------------------------------------------------- c50aac273e | Edgar A. Bering IV | 2021-02-03 21:15:41 +0200 Defang bunyips (hatsuma) Closes #1705; fixing history with binary files made git rebase angry. -------------------------------------------------------------------------------- b9655bc238 | gammafunk | 2021-02-03 12:41:33 -0600 Rework monster placement in a minivault The vault called simply "pond" places over D:10- and all of Lair, but has pretty unambitious monster placement. Except for the fact that its insubstantial wisps got replaced with will-o-the-wisps! Aside from this unfortunate wisp storm, the monster list didn't scale well with placement. This commit reworks the placement, conditioning it on depth and refining the two Lair and Swamp themes it has. Lair and Swamp monster sets are used for D:10-12 and Lair, but only the Swamp set is used for D:13-, since the amphibious Lair monsters aren't an interesting enough set by that point. The Lair set starts from D:10 mostly easier Lair spawns, but ramps this up through Lair and throws torpor snails into the mix by Lair:4. The Swamp set starts as just vampire mosquitoes with light swamp drakeage on D:10, but as depth increases adds swamp dragons, hydra, and eventually will-o-the-wisps. -------------------------------------------------------------------------------- 2393aa7757 | Edgar A. Bering IV | 2021-02-03 20:03:27 +0200 Revert "Increase broad axe delay" This reverts commit 81720017eba9a398c36b19f0d9c4cbe01de8cb61. In the commit message for 81720017eb, its pointed out that broad axes are too cheap relative to battle axes for their rarity. Part of the issue on later analysis of skill points required, is that *shields* were too cheap to add on in a penalty-free way. Commit 0b64aa26 increased the shield penalty. To swing a 20 skill broad axe at min-delay with a kite shield now takes 21,000 skill points on a human; compared to the 13,950 of a battle axe. For an 18 skill broad axe the cost is 17,850; still more than the battle axe (since the trade is for -2 base damage in exchange for the defenses of a shield, it should cost more), but not 1.5 times more expensive. To repeat some of the discussion from 0b64aa26, prior to that commit the cost to swing an 18 skill borad axe at min-delay was 12,200, cheaper than the broad axe. Addressing the disparity via broad axe delay was one solution, but made broad axes a non-use nobrainer for small species (the same base damage is available 1-handed at 16 skill from a morning star for them!); broad axes are still pretty expensive for a small species, but should be more attractive at 18 delay when the shield changes are also considered. -------------------------------------------------------------------------------- bbe54867f3 | hellmonk | 2021-02-03 20:03:27 +0200 Gently nerf spriggans Since they're the most likely to get out of control with stepdown removals, they lose 1 base dex and 1 dodging apt. [ Comitter's note: Closes #1715. Reformatted commit messages ] -------------------------------------------------------------------------------- 24d3c0a44a | hellmonk | 2021-02-03 20:03:27 +0200 Remove the EV stepdown This was an extremely hidden mechanic and I suspect that most players didn't know about it. No change for "natural" evasion 30 or less, which is everything except high dodging high dex characters and spriggans in practice. -------------------------------------------------------------------------------- 6fe205ebb7 | hellmonk | 2021-02-03 20:03:27 +0200 Remove the dex stepdown This commit removes the hidden stepdown to bonus EV from dodging. No change for characters with 18 dex or less, but high dex characters will receive better returns on dodging skill. -------------------------------------------------------------------------------- cd1b0857f5 | Alex Jurkiewicz | 2021-02-03 20:03:27 +0200 Simplify strength damage modifier Previously, the strength damage modifier had three forms depending on your strength, from 0-9, 10, and 11+. The formulas were almost but not quite the same, damage growth was fastest in the 0-9 range with +7.6% per str compared to +5.12% per str in the 11+ range. (Note: these +% figures are the max increase, since the algorithm includes random2 the average increase is about half the quoted numbers.) The way this formula changes based on strength isn't great because either: 1) If it should affect attribute increase choices, it's a non-continuous breakpoint and therefore spoilery. 2) If it's too subtle to change attribute increase choices it's probably pointless. Change the damage modifier calculation to use a single continuous formula for all strength values. Rather than bothering with randomising the multiplier each attack, use a non-random formula suggested by advil. Strength modification is 100% at 10 strength, with +2.5% for each additional point of strength (-2.5% for each point below). Derandomizing the formula reduces the variance of melee combat slightly (there are plenty of other factors that keep the rolls high variance), and reduces the maximum possible damage at high strength values. The new formula increases damage delt at very low strength slightly in absolute terms, since at low strength the damage for most typical weapons is low enough that percentage changes aren't very noticable. At very high strength the new formula doesn't exactly approximate the average benefit of the old formula (the extra .06 of a percentage point of bonus per strength point over 10 becomes noticable in absolute terms at around 40 strength). For typical strength values the average damage tracks to within the measurement error of fsim, and the reduction in maximum damage (used as a proxy for variance) is small (for example at most 1 point of damage for a war axe at each of 10, 15, 20, and 25 str). In exchange for this slight number shift, derandomization should make the effect of high strength easier to "feel" for players (at least those using high base damage weapons). [ Committer's note: Closes #581. Squashed and rebased, added commentary from fsim analysis. ] -------------------------------------------------------------------------------- 0525f28e48 | advil | 2021-02-03 13:01:41 -0500 Don't let tabbing throw nets with autofight_throw/nomove I'm not sure it's the best path to go down to keep adding small hard-coded exceptions like this, but this change brings nets in line with other quiver actions affected by 006ef2cfcc4; they won't be triggered by autofight commands that may fire the quiver. The biggest case where this matters is on a Gl start with one of the relevant options set. In a very small poll of players it seems like most people have been using autoinscriptions for this and don't want these commands to ever auto-shoot nets anyways. As with that previous commit, CMD_AUTOFIRE itself will still work. It's less clear what to do with other ammo starts where players may not want to tab-fire, e.g. poison darts, dispersal boomerangs. Autoinscribing `!Q` or `!f` is currently an option but that's very fiddly and more for advanced rc file users. -------------------------------------------------------------------------------- 7b68f31d6f | Nicholas Feinberg | 2021-02-03 09:25:33 -0800 Spawn OODs in swamp These were accidentally disabled (by default). Objstat suggests this will increase Swamp XP on average by about 5% (82k -> 86k), and will result in weaker monsters being replaced by an average of: - 0.6 tmons - 0.5 ghouls - 0.5 fenstrider witch - 0.4 spriggan air mage - 0.3 thorn hunter - 0.2 spriggan zerker This seems OK. If players die too much, we can do something else. -------------------------------------------------------------------------------- 486a53e333 | advil | 2021-02-03 09:25:29 -0500 Fix some locale issues with skill targets This commit (i) lets players enter numbers using the locale decimal separator in the skill menu (since atof needs this for parsing unless we were to override the numeric locale), and (ii) uses this separator instead of a hardcoded `.` in skill targets -- this is for consistency with the rest of the menu, which already does this. -------------------------------------------------------------------------------- 2708c90bdf | Nikolai Lavsky | 2021-02-03 13:40:43 +0200 Correct a change log entry The player is notified about the Zot clock when there are 1000 turns left. The notification schedule is in `_bezotting_level_in()`. -------------------------------------------------------------------------------- d447f0f5e7 | Edgar A. Bering IV | 2021-02-03 13:34:37 +0200 Checkwhite -------------------------------------------------------------------------------- a34dcf4e91 | Aliscans | 2021-02-03 13:09:30 +0200 Stop art-data.pl from rewriting files which haven't changed. Before writing to an output file, art-data.pl now reads the file, and only writes it if the new version is different. This should reduce the number of files make rebuilds when art-data.txt is changed. In particular, many files depend on art-enum.h, but this only stores the names and ID numbers of artefacts. -------------------------------------------------------------------------------- 74f53ef629 | advil | 2021-02-02 22:24:48 -0500 Update lightning scale description for Pa (u/tom_yum_soup) This is not a very flavorful description, but at least it's accurate. -------------------------------------------------------------------------------- 4e57ec5eb2 | Nicholas Feinberg | 2021-02-02 18:58:48 -0800 No treeporting into summoned trees (vt) This caused crashes, actually! -------------------------------------------------------------------------------- dc854216a7 | Nicholas Feinberg | 2021-02-02 18:22:45 -0800 Fix eleio tree-a-port (12478, gammafunk, Yermak) Don't let them go through glass. -------------------------------------------------------------------------------- 41607c7541 | Nicholas Feinberg | 2021-02-02 18:14:40 -0800 Fix manual display bug (12476) The relevant skill wouldn't be marked visible in your skills list until you reloaded the game. -------------------------------------------------------------------------------- 075faa5519 | advil | 2021-02-02 15:27:42 -0500 `channel` -> `*channel` on wucad mu to indicate that it is a passive effect. -------------------------------------------------------------------------------- b07c51db7e | advil | 2021-02-02 13:03:36 -0500 Reorder checkwhite and unbrace in CI Also, fix a checkwhite error that was showing up as an unbrace error in CI because of the order. -------------------------------------------------------------------------------- 0dd03a7ff8 | advil | 2021-02-02 12:41:32 -0500 Refactor targeting to minimize console redraws 38af612a8a cleaned up the direction chooser code-wise quite a bit, but it had unintended side-effects for console. In particular, after this commit, the entire window was fully cleared and redrawn on every keypress. This isn't very noticeable on local builds, but it is extremely heavy over ssh and can (especially with lower ping) cause bad flicker when targeting while playing online. (It also is going to have a non-trivial impact, in aggregate, on ttyrec size.) This commit refactors the widget wrapping so that most of the time a full screen redraw is not needed; only the parts of the view that need to be redrawn get redrawn, the message window is only redrawn if there are messages, and the sidebar is only redrawn when a full screen redraw is triggered (e.g. initially, or by opening and closing the help window). This code may or may not be a bit hacky relative to more normal Widget classes. This should involve no change for local tiles. However, as far as I can tell the new OverlayWidget class works fine in local tiles, if doing all this redrawing were to be a problem there. Should also not impact webtiles targeting. -------------------------------------------------------------------------------- e0fc76b88b | Nicholas Feinberg | 2021-02-01 17:37:22 -0800 Don't let phantoms blink away from formicids You can't dance without a partner. -------------------------------------------------------------------------------- ee7b36d103 | Nicholas Feinberg | 2021-02-01 17:34:09 -0800 Display meph chance on targeter Some code duplication here, but whaddya gonna do. -------------------------------------------------------------------------------- 0dbb1cdb06 | Nicholas Feinberg | 2021-02-01 17:18:40 -0800 Refactor targeter desc code -------------------------------------------------------------------------------- d744f4be51 | Nicholas Feinberg | 2021-02-01 17:10:45 -0800 Rename mr to wl In a single variable name. -------------------------------------------------------------------------------- 48b565bfe2 | Nicholas Feinberg | 2021-02-01 17:08:50 -0800 Refactor dazzle chance To avoid drift between the targeter and the effect. -------------------------------------------------------------------------------- 52650a7530 | Edgar A. Bering IV | 2021-02-01 23:51:49 +0200 Correctly describe stair behavior of durable summons These have always been able to use stairs, but at some point describe.cc lost the memo. Closes #1618 -------------------------------------------------------------------------------- 54cb51f372 | Edgar A. Bering IV | 2021-02-01 23:51:49 +0200 Mark monster equipment as "SEEN" after we id it This affects note-taking only, as set_ident_flags doesn't care about seen for item knwoledge. Closes #1580. -------------------------------------------------------------------------------- 3ba7187429 | Edgar A. Bering IV | 2021-02-01 23:51:49 +0200 Defer a terrain check for rampage Only check for passable terrain for cells that don't contain our rampage target, so that monsters in impassible terrain can still be rampaged at if they're adjacent to a safe square for the player. Closes #1632 -------------------------------------------------------------------------------- 56efc2da1b | Edgar A. Bering IV | 2021-02-01 23:51:49 +0200 Restore a bit of smarts to autoexplore (Aliscans) Since possibly a long time (I didn't archaeology) autoexplore has had a non-executing guard against moving adjacent to unknown territory when it doesn't have to. This commit restores the check. Closes #1595 -------------------------------------------------------------------------------- b03138de70 | Edgar A. Bering IV | 2021-02-01 23:51:49 +0200 Properly initialize configurable dirs Options.shared_dir is the storage location for a build-condfigured SHARED_DIR_PATH option, and otherwise is a synonym for Options.save_dir (which has sane defaults and is forced to the configured global default in DGAMELAUNCH builds); However, it only gets correctly set to Options.save_dir after the call to Options.reset_options for the second load of the user's rc file after game start. Consequently, the High Scores display doesn't respect Options.save_dir, even though the main menu otherwise does. This commit implements some custom handling for save_dir to behave correctly on builds without customization. Closes #1694 -------------------------------------------------------------------------------- 9234712022 | Edgar A. Bering IV | 2021-02-01 23:51:49 +0200 Remove ball lightning from arena sprint Closes #1713 -------------------------------------------------------------------------------- 9b2ddefb56 | advil | 2021-02-01 13:57:52 -0500 Restore 0.24 console map scrolling behavior In 2fe5a39f5e4 code that was only used to initialize the map view, prior to the commit, was converted to set the region and cursor position on every render. The result was a change in behavior, where previously scrolling only moved the viewport when it hit the edges of the map, after this commit it effectively scrolled the viewpoint on any movement on big enough maps, keeping the cursor in the center. It's possible this was even intentional, not sure, because the new behavior resembled what happens in local tiles and webtiles in the map view (this would at least make it easy to miss relative to non-console map view). However, this behavior is not a good fit for the console map view; The map changing on any movement of the cursor is (IMO) much harder for the user to process than just changing the cursor position, and the required full-screen redraw every step is slower over ssh. (To be clear, I actually think this first point applies to the other two UIs as well, but one step at a time.) This commit restores the 0.24 behavior with (what I think is) a small improvement: scrolling within a few squares of the edge rather than at the edge will trigger movement of the viewport on the map, always keeping a 3 tile margin. (0.24 and earlier scrolled at the edge.) -------------------------------------------------------------------------------- b15c29f0ac | Nicholas Feinberg | 2021-02-01 08:48:23 -0800 Goldify manuals Move manuals from the inventory to being automatically applied to skills after pickup, somewhat similarly to spellbooks. (There weren't any interesting decisions about holding manuals vs consumables.) This also makes them useful for gnolls again, because the UI hassle is gone and because getting different skill titles is fun. -------------------------------------------------------------------------------- 6b030e5e4e | Nicholas Feinberg | 2021-02-01 07:55:01 -0800 Don't auto-exclude summoned spires -------------------------------------------------------------------------------- 4d1656c070 | Alex Jurkiewicz | 2021-02-01 10:04:33 +0200 Migrate to actions/cache v2 (was v1) No breaking changes. Several minor improvements to performance. Will hopefully reduce incidence of spurious errors. -------------------------------------------------------------------------------- 3bf7917939 | wheals | 2021-02-01 09:18:47 +0200 Fix the prompts on the Q/Q* menus -------------------------------------------------------------------------------- 47d50fa972 | wheals | 2021-02-01 09:18:47 +0200 Don't print the menu prompt in the message port This applies to all auto_list menus (i.e., all of them but the second part of the adjust items prompt). This is more consistent with the q, r, etc. menus which already didn't print a prompt outside the menu itself. -------------------------------------------------------------------------------- 7d305d30b1 | wheals | 2021-02-01 09:18:47 +0200 Add a missing space -------------------------------------------------------------------------------- 95f23adaf7 | wheals | 2021-02-01 09:18:47 +0200 "throw a tremorstone" -> "release a tremorstone" "Throw" seems like an odd term both flavor-wise and mechanically. It made sense when the evokable was targeted, but now is inconsistent with throwing any other item, which lets you target. -------------------------------------------------------------------------------- e082b6e869 | advil | 2021-01-31 12:41:52 -0500 Adjust some empty quiver cycle messaging This gets rid of the vestiges of oldquiver error messages, and rewrites things to use the newquiver code in a more straightforward way. This removes some of the hints that the old errors gave about inscriptions etc, but I think the simplification her targets everything that will be likely to apply to newer players who need the hints in the first place. -------------------------------------------------------------------------------- 967dceb2f5 | Nicholas Feinberg | 2021-01-31 09:05:59 -0800 Fix monster magic 2ee872d4bda only fixed one of the two cases where the magic resistance (now willpower) string appears in monster. -------------------------------------------------------------------------------- 39035a7bb1 | Nicholas Feinberg | 2021-01-31 09:03:24 -0800 Rejigger phantoms Phantoms are well known for being notorious time-wasters. They blink frequently, which makes it very easy to escape them, but very hard to kill them. They're not very fun! This commit removes their Blink spell and replaces their AF_BLINK melee attack with AF_BLINK_WITH, which transports the target along with the victim. Since this interacts very badly with Haunt, phantoms have been removed from that summon set. Along with the recent removal of hungry ghosts, Haunt's monster set has gotten significantly more consistent - someone should probably take a look at that and see if any compensating changes are needed to weaken it. This commit also drops phantom HP by about 30%, to bring their defenses more in line with other threats in the same area like iguanas and ogres. -------------------------------------------------------------------------------- 290af4607b | Nicholas Feinberg | 2021-01-31 09:03:24 -0800 Fix attack flavour descriptions Fix a compiler warning in util/monster and remove support for removed flavours. -------------------------------------------------------------------------------- e4214ee863 | advil | 2021-01-31 10:03:10 -0500 Fix =f,=F,!Q inscriptions The behavior of =f/=F was unintentionally flipped, and also broken for ammo items in another way I think. !Q hasn't been working for a while; I think this was broken by moving quiver selection away from an inventory menu. Here I have slightly changed the behavior, by making !Q entail =f and =F, and therefore be a quick shortcut for "really don't ever quiver this thing". -------------------------------------------------------------------------------- 29c5ad5b46 | advil | 2021-01-31 10:03:10 -0500 Don't use fire_order for Q menu inclusion This affected only ammo, and was more confusing than helpful. A better candidate for the menu itself (tbd) might be something more like the spell library hide/show feature. -------------------------------------------------------------------------------- cee7053d2b | Josh Gelbard | 2021-01-31 11:19:22 +0200 Don't try to spawn spiny frogs in arena sprint -------------------------------------------------------------------------------- 1fbed8a51c | advil | 2021-01-30 22:05:34 -0500 Improve some comments re ability ranges when quivered -------------------------------------------------------------------------------- 68775813e2 | wheals | 2021-01-30 23:56:06 +0200 Remove armour corpses Fixes the mon-data test -------------------------------------------------------------------------------- 539a43b7bd | advil | 2021-01-30 16:10:01 -0500 Add a better UI range check for minor destruction (12451) Minor destruction did not have a range check except on activation, leading to bad behavior with autofight_throw=true when quivered. This commit follows the same strategy in 0579ed41f9 for rolling charge. The background problem is that the ability API is still somewhat impoverished, and we don't want to fully disable the ability with no enemy in range (because there is no way to force-activate it equivalent to casting `Z`). However, for quiver and autofight purposes the quivered ability needs to be marked as disabled in this scenario. Eventually it would be nice if spells and abilities had a more uniform interface for these issues. -------------------------------------------------------------------------------- 610fdbd41d | Nicholas Feinberg | 2021-01-30 12:27:24 -0800 Remove unused params (geekosaur) -------------------------------------------------------------------------------- 7a72b21653 | Nicholas Feinberg | 2021-01-30 12:19:49 -0800 Re-remove hyperactive ballistomycetes (lici) Removed in 7da3b9efa77 the first time. -------------------------------------------------------------------------------- 989026e53a | Nicholas Feinberg | 2021-01-30 12:15:11 -0800 New spell: Animate Armour L4 Earth/Summoning. Call forth the spirit of your armour, bringing forth a slow-moving ally that hits harder the heavier your armour is. Casting this in robes creates a 40 HP, 4 AC ally that hits twice for 4 damage. In plate armour, you get a 40 HP, 20 AC ally that hits twice for 60 damage. Wham, pow! (Summon limit is 1, as with CCF.) The design goal here is to help provide some incentives for heavier armour characters to delve into spellcasting. Historically, spells like Haste and Phase Shift tempted players in this direction. Those spells had their own problems, but the 'hybrid' skilling they encouraged was fun. This spell will still be inappropriate for many characters, but if it brings a few 'melee' characters to dabble in spellcasting or 'caster' characters to put on heavier armour, I think that'll be great. Numbers are very much a first draft. I can easily imagine that the damage should scale differently or that HP should vary by armour type, for example. Many thanks to everyone who helped with this. Special thanks to hellmonk for balance suggestions, ebering for code and balance suggestions, mesh and rojja for German advice, and canine for the final name. -------------------------------------------------------------------------------- 22a811f1fd | Edgar A. Bering IV | 2021-01-30 21:02:08 +0200 Adjust a check for hazardous statuary Closes #1670. The want_move parameter would treat statues as one tile closer in i_feel_safe for travel purposes, even if there was a wall in the way. This resulted in an edge-case where the player would feel unsafe even though no hazard existed, see the related issue for an example. -------------------------------------------------------------------------------- 1a8b9f50bf | Edgar A. Bering IV | 2021-01-30 16:45:58 +0200 A bit more /charming renaming -------------------------------------------------------------------------------- 7879cab74d | Edgar A. Bering IV | 2021-01-30 16:29:03 +0200 Quote and description database cleanup Removing old and oudated translations -------------------------------------------------------------------------------- 2f42aecd5e | Edgar A. Bering IV | 2021-01-30 16:17:50 +0200 Further /charming rename (randomMesh) -------------------------------------------------------------------------------- 7ee54fca44 | Nicholas Feinberg | 2021-01-30 10:35:37 +0200 Remove harpies from Monstrous Menagerie Harpies caused several issues for Menagerie: - They weakened the mechanical identity of the spell. Menagerie stands out among other Summoning spells of a similar level for summoning primarily ranged allies, but harpies, of course, are melee fighters. - They confused players. The summon cap applies per-harpy-band, not per-harpy, but that's not at all obvious from the description or in-game. Plus, the number of harpies per band varies randomly, so how close are you to your summon limit at any given time? It takes some tracking! - They exacerbated weird spellpower behaviours. Harpies were generally the strongest result you could get from the spell, better than the notionally-higher-level sphinxes, so it wasn't really much of a plus to increase your spellpower as you'd hope. Not great incentives! This change should, hopefully, preserve the distinctiveness and power of this lovely classic spell. -------------------------------------------------------------------------------- d326f4184a | Edgar A. Bering IV | 2021-01-30 10:30:17 +0200 Silence a warning -------------------------------------------------------------------------------- 0e2341561c | Nicholas Feinberg | 2021-01-30 09:45:27 +0200 Rename wands of enslavement to charming Now that the charms school is no more, we can re-use that pleasant and classic name (of D&D fame) for this classic wand. -------------------------------------------------------------------------------- d48b2df3c9 | Kate | 2021-01-30 00:37:40 +0000 Reword DS magic regen mutation The old message no longer made sense with it being the first mutation of the facet. -------------------------------------------------------------------------------- dcb3803577 | advil | 2021-01-29 16:39:40 -0500 Halve the impact of map scaling on glyph mode Because the base value (e.g. the text size at 100) is so much smaller than regular tiles, zooming out from 100 has an outsized impact. An alternative to this commit would have been to change the default map mode scale value to something less zoomed out, but doing things this way also correctly handles the case where a glyph mode player is spectating a tiles player at the regular zoom levels. -------------------------------------------------------------------------------- d047dbe480 | Edgar A. Bering IV | 2021-01-29 14:26:02 +0200 Don't crash on randbook Wn start (12470) -------------------------------------------------------------------------------- 8ba017916c | advil | 2021-01-28 19:02:17 -0500 Limit printable keycodes in webtiles to ASCII This was (I think) impacting non-US keyboards, where keycodes corresponding to invalid UTF-8 were causing the webserver to choke, and the macro menu not to get forwarded to the client (keycode 169, which *may* result from a closing paren on AZERTY, is one example). It possibly also affects some unusual keys on certain keyboards. There must be a more elegant solution but for now this will just show the keycode directly in the macro menu. Better would be to somehow figure what keys are involved, and print their names, but this seems a bit of a hopeless task for webtiles. It's possible that console needs a similar fix as well, but there (at least in my testing) the result is not that the menu fails altogether -- though it's not very usable. But this would be better tested by someone with a different locale / keyboard layout. SDL should be handled by SDL code, so if it fails on this stuff, it's at least not a crawl bug. -------------------------------------------------------------------------------- dd83002478 | advil | 2021-01-28 19:02:17 -0500 Use a name for ' ' when a name is called for This is a printable char, but isn't apparent in most circumstances when it would be printed directly, so ' ' is not useful as the character description. Therefore, use "Space". Impacts only menu hotkeys, and probably only in the macro menu. -------------------------------------------------------------------------------- 1307ea1511 | AdamPG | 2021-01-28 23:15:45 +0200 Add prompts to various types of movement This commit adds a prompt to several forms of movement that previously did not end Ozocubu's armour or frozen ramparts. This commit also adds barb damage and a prompt to several physically-flavoured forms of movement (such as barachian hop) that previously did not trigger barb damage, and removes braces that were made unnecessary by a previous commit. -------------------------------------------------------------------------------- 88da7fdab6 | AdamPG | 2021-01-28 23:15:45 +0200 Change the colour of the message displayed when frozen ramparts ends Currently, Ozocubu's armour uses the MSGCH_DURATION colour (blue) and frozen ramparts uses the default colour (white) upon ending. This commit makes these messages consistent. -------------------------------------------------------------------------------- 8403051451 | AdamPG | 2021-01-28 23:15:45 +0200 Make icy spells end whenever the player's position changes Currently, many forms of movement (such as barachian's hop, Uskayaw's line pass and all forms of blinking) do not break frozen ramparts or Ozocubu's armour. Since the location of frozen ramparts is tied to the player's position at the time of casting, any change to the player's position should break the spell. Arguably Ozocubu's armour should break only for voluntary movement, as the effect is not tied to the player's initial position, but for consistency we make it break under the same conditions as frozen ramparts. -------------------------------------------------------------------------------- f34d913ce3 | Kate | 2021-01-28 20:35:44 +0000 Remove unused code -------------------------------------------------------------------------------- da3435bf36 | Kate | 2021-01-28 19:59:30 +0000 Upgrade the sceptre of Asmodeus Considering that it requires killing Asmodeus to get hold of (and the summons always turn hostile with no easy abjuration), it seems fine to just give it a straight upgrade to match Asmodeus's new summon list. -------------------------------------------------------------------------------- ac52ab2824 | Kate | 2021-01-28 19:38:36 +0000 Reword a Wyrmbane message The joke on-equip message for draconians wasn't a very good one. -------------------------------------------------------------------------------- cd1702ac4d | Edgar A. Bering IV | 2021-01-28 21:23:15 +0200 Downweight a Lugonu altar vault This altar vault has a very large place range, and so was appearing quite frequently (I didn't run mapstat, but it was in 1/3rd of my tournament games!). Lower the weight so it doesn't get old. -------------------------------------------------------------------------------- fb5ce4e607 | Edgar A. Bering IV | 2021-01-28 20:02:56 +0200 A tile for dread liches A recolour of ancient liches to give them spiffy magenta robes instead of blue. -------------------------------------------------------------------------------- 3b45c41056 | Edgar A. Bering IV | 2021-01-28 20:02:56 +0200 Tiles for Deep Elf Zephyrmancers and Pyromancers Zephyrmancers just use the mage tile (which already had a blue robe), and Pyromancers are a red robe recolour. -------------------------------------------------------------------------------- 3d1ca0d2d8 | Edgar A. Bering IV | 2021-01-28 20:02:56 +0200 Simplify monster spellbook description code Now that monsters only have one spell book, we no longer need to infer their book from seen spells, which really simplifies a lot of the display. -------------------------------------------------------------------------------- 97bf95f3a4 | Edgar A. Bering IV | 2021-01-28 20:02:56 +0200 Split Deep Elf Mages into two monsters Deep Elf magi had 6 (!) spellbooks, intending to represent the four elemental schools, conjurations, and summonings. The most impactful of these books were the lightning bolt book and the fire book; the other elemental schools are represented in various ways by other elf monsters. This commit creates two new monsters: deep elf pyromancer and deep elf zephyrmancer, to carry the fire and air books repsectively. Both have the same stats. Additionally, this moves the console glyphs around (since 'e') is a bit crowded; knights move to blue (matching naga warriors and Duvessa), pyromancers go on red (matching their elemental colour and Dowan), and zephyrmancers go on cyan (again an elemental colour match). The Dowan/Duvessa collision is a bit unfortunate, but they occur at different depths and with this convention they roughly mimic the behavior of their glyphmates. As with the lich split, I've split up the usage in various vaults, mostly balancing the weight. In the spawn tables I did similarly, except for dungeon, where pyromancers come earlier than zephyrmancers, and for abyss, where these lower elves are removed (they were very rare anyhow). -------------------------------------------------------------------------------- a69ff2a406 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 New Monster: Dread Lich (Name is TBD) To keep some more iconic Lich spells around in this single book world, the Dread Lich is the lich of demon summoning, with a book consisting of Haste, Summon Greater Demon, Paralyze, and Invisibility. Dread liches have the same stats as ancient liches, and appear in the same places. In vaults they either increased the total lich weight (where the vault seemed weak), or split weight with ancient liches, except in those cases when the vault designer seemd to specifically be using ancient liches in their summoner or their conjuror role. -------------------------------------------------------------------------------- 4c84cb8321 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 New Lich spellbook Liches and Ancient Liches have several iconic spells, conjurations, hexes, and summon greater demon (espeically notable on ancient liches who are tough enough to keep their demons around!). So many that making a single book that covers all of the roles leaves a book that steps on its own toes. This commit creates a conjurations focused spellbook for Liches and Ancient Liches consisting of Corrosive Bolt, LCS, Slow, Haste, and Invisibility; this is basically the old LCS book, but with Slow and Invis instead of Petrify. A subsequent commit will introduce a new 'L' monster to take up the summoning Lich role. -------------------------------------------------------------------------------- ff29be1aa7 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Replace Dispater's Summon Greater Demon With Summon Hell Sentinel. For the same reasons that Ereshkigal was changed to summon a specific demon, Dispater's call now goes only to the Hell Sentinels. -------------------------------------------------------------------------------- f4ffc1b5e2 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Replace Ereshkigal's Summon Greater Demon With Summon Tzitzimitl. SGD is a generic spell, and while it's maybe ok for a Pandemonium lord to call up whichever demons, the Hell lords should really only be calling flavorful demons, if any, since they're not lords of all demons! -------------------------------------------------------------------------------- ae91e92f12 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Change Cerbov's summon Summon Greater Demon is of course something a lord of Pandemonium should be able to do, but it seems a bit silly flavour-wise for the firey lord of Pandemonium to summon a blizzard demon. This replaces Cerebov's SGD with the buffed Fire Summon spell of Asmodeus, so he now only calls Balrugs, Hellions, and Brimstone Fiends. It's not completely clear that Cerebov even needs summons, since he's the Fire Storm monster, but summons do prevent a player from isolating the boss monster completely and Cerebov seems to work well with them, so let's try it. -------------------------------------------------------------------------------- 03f7137ab2 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Buff Asmodeus' Fire Summon Effreets and Sun demons aren't good threats at his depth, they're removed from the spawn table for the spell fire summon. -------------------------------------------------------------------------------- 61ce20c919 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Remove some demon summoning Demon summoning is overused on many monsters. Some could still use a summon, but a more flavorful specific summon. For neqoxecs and shadow demons, the summoning spell wasn't that notable. Shadow demons already mostly appear in places with demonic spawn lists, where shadow creatures will fetch plenty of demons; neqoxes demon summoning got in the way of their other line of fire spells and didn't enhance them much. -------------------------------------------------------------------------------- c6c22aa4fb | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Remove Bolt of Cold from tzitzimitls While there is a certain ammount of cold/undead theming, as a "fiend" type monster it'd be better if their spells didn't overlap with Ice Fiends. They still have plenty of tools to threaten a living rN+++ player character, and dispel undead for undead players. -------------------------------------------------------------------------------- fd204b979a | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Remove some Level 1 spells from high level monster books They don't do much other than add to cognitive load. Casting frequencies are a better way to adjust this sort of thing. -------------------------------------------------------------------------------- b39fecbb77 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Remove Twisted Resurrection This spell lived on in a rather meager twilight existence on some high tier elves. However, like other monster necromancy spells, it was rarely impactful: even when there were a large number of corpses they rarely could amalgamate together to make enough large abominations to threaten the player. -------------------------------------------------------------------------------- 760eeed2df | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Give Khufu Scarabs instead of Undead In line with the other Royal Mummy changes. -------------------------------------------------------------------------------- bc7614a589 | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Make most monsters single spellbook Monster spellbook variation was used for a mix of two reasons: flavour and threat variance akin to monster item use. Unlike monster items, which are easy to display in the UI, spell books are potentially long, so tracking which ogre mage on screen is the one with Paralysis was a serious UI screw which can't be quickly addressed by adding a HUD indicator. This UI screw plus cognitive load is not worth it: for most multi-book monsters the book variations lack enough focus to build flavour and are rather balanced in their threat levels. This commit changes every multi-book monster except deep elf mages and (ancient) liches to have a single book. Specific monsters and the reasoning behind their new books follow. The general guiding principle I've followed when assembling the new book is to try to follow the "feel" of the old book sets that a player would get if they weren't checking each monster's book carefully. Faun ---- The old Faun spellbooks were corona + another hex. There are a mix of Will checking threats in shoals, but often players arrive with lots of Will gear stacked up. Fauns show up in packs and their Corona+Hex book was designed to make them amplify other ambient ranged threats. The new book gives them Strip Willpower in place, for helping one another and other ambient monsters hex the player. New Faun book: - Corona - Strip Willpower Deep Elf Knight --------------- Deep Elf Knights had one book with Icicle, Haste, and Invisibility, and a second which had Stone Arrow, Force Lance, and Invisibility. The positional implications of Force Lance are great to keep around, so it's added to the rest of the first book. New Deep Elf Knight book: - Throw Icicle - Force Lance - Haste - Invisibility Orc Wizard ---------- Orc Wizards had three(!) distinct books, but their most iconic behavior was confusing the player and going invisible. This is book II, shared with Sigmund, and this is made into the single Orc Wizard book. New Orc Wizard book: - Magic Dart - Throw Flame - Confuse - Invisibility Blork ----- Blork the Orc used Orc Wizard book III, this is basiclly preserved but emergency invisibility is removed from the book since it was quite long. New Blork book: - Cantrip - Magic Dart - Throw Flame - Throw Frost - Haste Necromancer ----------- Necromancers had two books which differed only in the choice of bolt spell. In a large fight where Bind Souls has produced many simulacra, the player could hide from either bolt by using the simulacra to block LOF. The new book gives Necromancers Bolt of Draining, which works better with their mechanic. New Necromancer book: - Bolt of Draining - Agony Range - Bind Souls - Invisibility Wizard ------ Wizards' book assortment conveyed a mix of magics, to imply a mastery. Based on the D&D class as far as I can tell. To keep that flavor I picked a range of spells from their books that produced the same "mixed magic" feel. They share depth with Ogre Magi but don't come in packs, so I went with fireball and banishment here to differentiate the two spell sets. New Wizard book: - Fireball - Banishment - Blink - Invisibility Hell Knight ----------- Hell Knights are one of a couple of late game monsters that cast Pain, which at their depth isn't much of a threat even when it can beat the player's Will. Bolt of Fire is good for them, they can just use that. Perhaps blink should be made non-emergency, but because Hell Knights come in packs an injured HK blinking away to let a fresh one attack the player is a nice touch. New Hell Knight book: - Bolt of Fire - Blink (emergency) - Haste Ancient Champion ---------------- Another late game monster with Pain. Since they often come in bands with undead, retaining Bolt of Draining might be good but for now I went with short and sweet. New Ancient Champion book: - Iron Shot - Haste Royal Mummy ----------- Each of the four Royal Mummy books had Smite and Torment, the remaining mixed Summon Demon, Summon Undead, Summon Mana Viper, Summon Emperor Scorpions, and Summon Death Scarabs in some combination. Plain Summon Demon doesn't do much for RMs, Vipers are also quite fragile at the time Royal Mummies appear and vulnerable to torment, and Mummy Priests already summon undead. Scorpions are vulnerable to torment, so they're not the best here, but the flavour is good. Perhaps we could give emperor scorps rTorm. This is the old Book IV, which has the strongest Mummy flavour. New Royal Mummy book: - Smite - Symbol of Torment - Summon Emperor Scorpions - Summon Death Scarabs Ogre Mage --------- Ogre Mages typically come in packs with other Ogres and are notable for hasting them. Beyond that they have a sort of wizard flavour to their book set; this consolodation picks Bolt of Magma and Parlayse to round out the set to differentiate them from Wizards which appear at overlapping depth. New Ogre Mage book: - Bolt of Magma - Haste Other - Paralyse - Invisibility Tengu Conjurer -------------- The different Tengu spellcasters have a hodgepodge of "battlemage" spells. Flavour wise Tengu are supposed to be good at Conjurations and Air magic, so I settled on the air book from the four book choices. New Tengu Conjurer book: - Lightning Bolt - Battlesphere - Blink Tengu Reaver ------------ In keeping with the air theme (though less so conjurations), the new Tengu reaver book attempts to give them a pair of spells that force a player trying to melee them to reposition. The monster AI change when it comes to blocking ranged allies means that the reaver won't block its lightning spire if it can step aside, so this should interact well. It might need spell logic to prevent the reaver from summoning 10000 spires since monsters don't have summon caps, let's see how it plays. New Tengu Reaver book: - Freezing Cloud - Summon Lightning Spire -------------------------------------------------------------------------------- e00c81aa3c | Edgar A. Bering IV | 2021-01-28 20:02:55 +0200 Revamp Psyche's spellbook The Orc Wizard III book isn't that exciting. Psyche's defining characteristics as a unique are her dagger brand and chaos theme, so I've leaned into that. The new book is: Cantrip, Polymorph, Chain of Chaos, Invisibility. At Psyche's depth Chain of Chaos is rather scary, but can be mitigated by having other monsters around. Since she arrives at a depth where many characters won't have a ready source of allies, this puts pressure to engage Psyche with other hostiles around. Polymorph is also in the mix, partly to thin out the CoC terror with something chaotic in the casting weight, and partly because polymorph aimed at the player is a rather rare effect and a good "signature spell" for a chaos unique. -------------------------------------------------------------------------------- de412597e9 | Neil Moore | 2021-01-28 12:57:45 -0500 Slightly improve a citation. [skip ci] -------------------------------------------------------------------------------- d2cd6250da | Edgar A. Bering IV | 2021-01-28 11:39:54 +0200 Consistently indent quotes in quotes.txt Closes #1700 -------------------------------------------------------------------------------- 5b54ba61a2 | Edgar A. Bering IV | 2021-01-28 11:05:17 +0200 Fix some KJV citations -------------------------------------------------------------------------------- 8fd39cdef8 | Edgar A. Bering IV | 2021-01-28 10:57:32 +0200 Don't mark unkown books useless for gnolls Closes #1707 -------------------------------------------------------------------------------- 607d9e9d85 | Nicholas Feinberg | 2021-01-27 18:57:25 -0800 Mention diggability on xv (hellmonk) -------------------------------------------------------------------------------- d3d0dda1a4 | AdamPG | 2021-01-28 00:15:29 +0200 Prevent Ozocubu's Armour from breaking when equipping heavier armour -------------------------------------------------------------------------------- a1f732d4ef | Goratrix | 2021-01-28 00:11:00 +0200 Replace travis build badge with github badge in README.md -------------------------------------------------------------------------------- 36043c2b5f | Edgar A. Bering IV | 2021-01-27 23:28:57 +0200 Adjust a misleading description (12374) -------------------------------------------------------------------------------- 13c09b7e0e | Edgar A. Bering IV | 2021-01-27 22:38:39 +0200 Remove an extra space (Yermak) -------------------------------------------------------------------------------- 1f8c70d38d | Edgar A. Bering IV | 2021-01-27 22:37:04 +0200 Remove an unused parameter and simplify -------------------------------------------------------------------------------- f9d094ba99 | Edgar A. Bering IV | 2021-01-27 22:03:50 +0200 Don't leak stash info with Gozag gold detection (12413) This makes gold detection work more like item detection, in that the detected gold does not appear in stash search as it did previously. This is a bit unfortunate, but this is the lone edge-case remaining where a stash pile is revealed partially. It shows that the detected thing is gold versus an item for a gnoll on the map, which suffices. -------------------------------------------------------------------------------- e9b1cf51b5 | Edgar A. Bering IV | 2021-01-27 21:21:54 +0200 Don't hide Bows for one hand-paired ants -------------------------------------------------------------------------------- 78287705fb | Edgar A. Bering IV | 2021-01-27 20:59:54 +0200 Hide Bows when a hand is sacrificed (12398) -------------------------------------------------------------------------------- bd0f0ea6ff | Edgar A. Bering IV | 2021-01-27 20:22:48 +0200 Make manuals useless for gnolls Gnolls inability to focus skills makes manuals last an inordinate amount of time, and also create weird incentives around manipulating acquirement results versus getting technical advantages. The lore says they can't focus, so let's extend that to focusing on whats on the page in a manual and make them useless. -------------------------------------------------------------------------------- 66c4918636 | Edgar A. Bering IV | 2021-01-27 20:03:31 +0200 Remove an inappropriate sanctuary check -------------------------------------------------------------------------------- 0faeb86a01 | Edgar A. Bering IV | 2021-01-27 19:50:05 +0200 Don't look for clouds in the wrong places (12459) -------------------------------------------------------------------------------- 36630e8e57 | Nicholas Feinberg | 2021-01-27 07:42:46 -0800 Partially restore monster ranged AI Due to a misreading, 4e0205b1fca8 removed the chance for monsters with ranged weapons to do something with their turn other than shoot their target. Oops! The new logic is: - Master archers (e.g. deep elf master archers, merfolk javelineers) have a 90% chance to shoot. - Non-master-archers with ranged weapons have an 80% chance to shoot. - Non-master-archers with throwing weapons have a 33% chance to shoot. This should get us back roughly where we were before, but with less throwing than after the infinite ammo change. -------------------------------------------------------------------------------- 832131d6ac | Edgar A. Bering IV | 2021-01-27 09:43:04 +0200 Make trove entries transparent -------------------------------------------------------------------------------- bcd94eb011 | Nicholas Feinberg | 2021-01-26 22:07:12 -0800 Remove banana bunyips (hatsuma) The end of an era... -------------------------------------------------------------------------------- 177a798329 | Nicholas Feinberg | 2021-01-26 21:52:33 -0800 Make monsters less throw-happy Similar to wand logic, make monsters with throwing weapons only use them some of the time. Instead of throwing every single turn while not in melee, now they'll only throw their held item at you 1/3 turns. Master archers (e.g. merfolk javelineers) and enemies with actual launchers (e.g. centaurs) are exempted. -------------------------------------------------------------------------------- 4e0205b1fc | Nicholas Feinberg | 2021-01-26 21:45:30 -0800 Simplify monster throwing/launcher AI Remove very complex and fairly pointless interactions with Leda's Liquefication. That spell is not nearly powerful enough to require making the AI play around it intelligently! The player should be allowed to feel smart and to take advantage of dumb monsters with their expensive situational spell! -------------------------------------------------------------------------------- cb3516073f | Nicholas Feinberg | 2021-01-26 21:37:48 -0800 Don't summon demonic guardians from poison Placeholder until/unless a cleverer approach is found. -------------------------------------------------------------------------------- 6fc33f2424 | advil | 2021-01-26 20:15:49 -0500 Don't do zone filling in the abyss Unlike normal builder scenarios, connectivity checks are only rarely triggered in the abyss, by the placement of a minivault it seems. (I'm surprised they happen at all, and wonder what they accomplish.) In this case, it seems wrong to do any fills, as the abyss is supposed to allow temporarily disconnected zones. In mantis 12442, 12416, as well as #1680, it was reported that this scenario could lead to errors, because the fill code assumed that no items had been placed yet. As far as I know this is mostly true, just not for the abyss, which does most of its building before minivaults have the chance to place. I've also added a guard against filling over items, even though the main fix in this commit prevents the specific case from coming up. Interfering items just get nuked, to prevent vetos. Resolves #1680. -------------------------------------------------------------------------------- 9286b66fa0 | Edgar A. Bering IV | 2021-01-26 22:43:02 +0200 Sort the book of Ice -------------------------------------------------------------------------------- 4a2642d2bd | Edgar A. Bering IV | 2021-01-26 22:25:08 +0200 Don't print resist messages when casting Ozocubu's refridgeration Closes #1693 -------------------------------------------------------------------------------- 562fce5957 | Edgar A. Bering IV | 2021-01-26 22:21:24 +0200 Increase the level of Ozo's fridge to 7 The changes to remove self-damage and the damage formula for Ozo's led to a very strong spell. While nerfing the spell damage is also a possible route here, Ice magic currently has no level 7 or 8 spells, so let's try the level bump as a balance knob. -------------------------------------------------------------------------------- 9515ab555c | Nicholas Feinberg | 2021-01-25 22:25:20 -0800 Fix the build? This code is extremely bad! -------------------------------------------------------------------------------- da0e56a6ef | Nicholas Feinberg | 2021-01-25 20:39:53 -0800 Bring Hellbinding back By popular demand, make evil god-following summoners use the old titles. -------------------------------------------------------------------------------- d3d65450af | Nicholas Feinberg | 2021-01-25 19:15:24 -0800 Integrate palentonga sprites And add new palentonga lichform and 8form sprites. Cloaks look sort of awful here, but not sure what can be done! -------------------------------------------------------------------------------- 2a9d61b3d9 | Hatsuma | 2021-01-25 19:15:22 -0800 donger sprites -------------------------------------------------------------------------------- b7e3dba119 | Nicholas Feinberg | 2021-01-25 17:20:47 -0800 Remove item destruction (minmay) Don't make fleeing enemies use scrolls of teleportation or blinking. It doesn't create interesting tactical situations or decisions, and it does cause annoyances and strange incentives for spoilered players. -------------------------------------------------------------------------------- 7528ca199a | Nicholas Feinberg | 2021-01-25 17:12:58 -0800 Mostly remove stone giants from Orc:2 Way, way, way too nasty compared to literally everything else. Orcs should be the star of the show in Orc, imo, not some silly giants! They can still spawn as OODs or in vaults. It looks like empirically they'll show up about 40% as often as before. At some point I should go over these spawn tables more thoroughly... -------------------------------------------------------------------------------- 6522fa7714 | Nicholas Feinberg | 2021-01-25 17:07:21 -0800 Revert "Add a trunk reminder for the 0.26 tournament" This reverts commit 4bfc8a49e17f9a62c58050e8347afbcd08fc21f7. So long, t0.26! -------------------------------------------------------------------------------- 0b64aa269c | Edgar A. Bering IV | 2021-01-26 00:44:09 +0200 Adjust and derandomize shield delay penalty The old formula was approximately an extra min(1d adjusted shield penalty, 1d adjusted shield penalty) delay. However, this was calculated at a scale of 20 to allow die with penalty less than 1, since for a human-sized player the adjusted shield penalty of a buckler at 0 skill is 1. With scaling, the formula was: min ( 1 d (20 * penalty), 1 d (20 * penalty) ) / 20 randomly rounded. As a result, at 0 skill a buckler did not have a delay penalty of 0.1, but in practice was something that was 0 with a pretty high probability. To get a very good chance of a delay penalty of 0, 7 skill was sufficient for a kite shield, and 12 for a tower shield. 7 skill costs a human 1,400 skill points; 12 skill costs a human 4,200 skill points. 2 hand maces (excluding dire flails), pole arms, and swords, all require 20 skill (or more) for min-delay; at the probability of penalty achieved for the above shield skill values, this is a better comparison point than the skill required for min+0.1 delay. 20 weapon skill costs 13,950 skill points, compared to 9,600 for 16 skill and the 7 shield skill; the difference in base damage is not sufficient compensation for enough skill points to raise a 0-apt skill to 10! This commit changes the formula to something less random and stiffer, namely: random_round(penalty) At 0 skill, a buckler has a flat constant delay penalty of 0.1, eliminated at 4 skill. At 10 skill a kite shield gives a delay penalty of exactly 0.1, and the old probability is achieved at a skill level between 14 and 15. To get a delay penalty of 0.1 with a tower shield, 20 skill is required. With these skill training targets, achieving a delay of min+0.1 for a 16 skill 1-hander while using a kite shield costs 11,000 skill points, compared to the 10,800 skill points for 18 skill to get the same swing speed with a 20 skill 2-hander. For min-delay, the 16 skill 1-hander + kite costs 15,250, compared to 13,950 for a 20 skill 2-hander. This is a better alignment of strategic costs, which will hopefully make the "1h vs 2h" a more interesting strategic decision based on game context. The increase to broad axe delay in 81720017eb when combined with this change might make broad axes too expensive; that is easily fixed if it turns out to be the case. -------------------------------------------------------------------------------- aa1b0a69e5 | wheals | 2021-01-25 12:16:27 +0200 Fix the build (doh) -------------------------------------------------------------------------------- 8898b9ca26 | wheals | 2021-01-25 11:51:24 +0200 Clarify a parameter name -------------------------------------------------------------------------------- a59c3b2a1c | wheals | 2021-01-25 11:51:24 +0200 Clarify that malevolent magic applies only to wands (kate-) -------------------------------------------------------------------------------- ef21787582 | hellmonk | 2021-01-25 11:51:24 +0200 Properly handle elemental and cloud producing facets. These mutations are meant to exclude each other so that the player gets at most one elemental and at most one cloud facet. Formerly, this took advantage of mutations with a single mutlevel to handle the check, but that doesn't work anymore. This is as quick and dirty a fix as I could manage, since I plan on looking at this again for the tier 3 mut pr. -------------------------------------------------------------------------------- b44e02ef28 | hellmonk | 2021-01-25 11:51:24 +0200 New tier 2 demonspawn facet, malevolent magic. When a demonspawn with this facet casts a spell, they also try to paralyze enemies in a radius equal to the mutation level around them. The effect's power increases with spell level and checks magic resistance, and evocables will also trigger the effect once the player reaches the final rank of the facet. With luck, this should encourage some interesting spell positioning and use (without encouraging players to use very low level spells exclusively for the proc chance too much). Rank 3 includes evocables so it isn't a completely worthless facet for berserkers. I think it probably feels too bad to lose an entire T2 facet for a choice made at game start. Aside from that, there are lots of balance knobs that can be tweaked. I'm very unsure of how good the effect ends up being across a full game, but it's very simple to adjust the paralysis power or duration, or the effect radius, if necessary. The flavor's kind of thin, too, so feel free to change that. -------------------------------------------------------------------------------- afa7a0f0fe | hellmonk | 2021-01-25 11:51:24 +0200 Adjust the icemail facet. While the icemail itself was very cool and powerful, the previous two ranks of the facet were relatively boring, and freezing cloud immunity was an especially odd choice given that the facet did not create clouds. This rework splits icemail in half across ranks 2 and 3 of the facet and reduces the total AC to 8. A new mutation, Condensation Shield, is added for the first rank, providing 4 SH that dissipates under the same conditions as icemail. This should keep the facet's role relatively intact without buffing it too much lategame; total defenses provided are 4 SH and 8 AC at rank 3. Because the monster enchantment for icemail also uses ICEMAIL_MAX, I buffed gelid demonspawn base AC by 2 to compensate for their reduced icemail AC. -------------------------------------------------------------------------------- 5cca49f90c | hellmonk | 2021-01-25 11:51:24 +0200 Remove convection. Don't melt icemail or ozocubu's armour when flying over lava. This incredibly niche interaction was, as far as I can tell, the only non-damage source that melted icy enchantments. There's not really a compelling gameplay reason for it to do that. -------------------------------------------------------------------------------- eb50e5d1e3 | hellmonk | 2021-01-25 11:51:24 +0200 Revisit the spiny damage formula. It's not worth making the formula that much more complicated. Here is a simpler one that should still be acceptable earlygame and is slightly worse at high experience levels. -------------------------------------------------------------------------------- 5fc36510a5 | hellmonk | 2021-01-25 11:51:24 +0200 Rework Demonic Guardian. Previously, this facet used an extremely bad tension formula to determine whether or not to summon a guardian. It also had a unique time schedule that practically guaranteed the first rank of the mutation very early and usually pushed the second and third ranks very late. The result was an easily gamed mutation that turbo stomped early dungeon and then kept summoning imps until vaults or later. This rework ignores tension altogether; instead, the mutation has a chance to activate whenever the player takes damage (guaranteed if the damage is greater than half max hp or if the player's health is critically low) and summons a demon whose tier is partially based on experience level. The variety of potential guardians is expanded a bit as well. Finally, the time schedule is brought into line with every other tier two facet in the game. -------------------------------------------------------------------------------- 9e10844823 | hellmonk | 2021-01-25 11:51:24 +0200 Rework Ignite Blood. The third rank of the ignite blood facet is very cool, but the first two ranks are boring. Split the power of the actual blood igniting part over all three ranks of the facet - an increasing chance to ignite blood and longer duration flame clouds with each rank. Any rank of ignite blood also confers flame cloud immunity, since that's kind of necessary to use the mutation. -------------------------------------------------------------------------------- 93b95dc60d | hellmonk | 2021-01-25 11:51:24 +0200 Rework Spiny. The previous spiny rework scaled its damage heavily with xl to reduce earlygame damage. While that change was well-intentioned, it made spiny 2 and 3 feel underwhelming. This commit puts a little power back into the upper mutation levels and reduces the level scaling somewhat, at the expense of making the formula messier. -------------------------------------------------------------------------------- 7c3aafa790 | hellmonk | 2021-01-25 11:49:40 +0200 Rework the foul stench facet. This facet had a notoriously useless-on-receipt rank 1 mutation and some very strange mechanics under the hood. This commit takes the rrot mutation out of the facet. The facet will now provide foul stench at every rank, with activation chances rescaled accordingly. Since the player needs to be immune to their own clouds, any rank of foul stench confers rot immunity. The facet no longer makes attackers sick and can now place miasma on any attack that deals damage, not just ones that hit for more than 4 dam. [committer's note: rrot was removed in the meantime anyway, so substitute "miasma immunity" for "rot immunity/rrot".] -------------------------------------------------------------------------------- 2d7ca500d8 | hellmonk | 2021-01-25 11:43:15 +0200 Reorder the mana link facet. Provide boosted mp regeneration first, when it's most likely to matter, then give spirit shield second. Mp regen earlier might make it more useful as mp regen rather than as pseudo hp-regen, though overall the change should be and is intended to be a nerf. The third rank of this facet still leaves something to be desired and has a bad interaction with posion damage (specifically, can kill the player at "safe" levels of poison by redirecting their hp regen), but cannot be moved before spirit shield for obvious reasons. I hesitate to replace it with either additional mp regen or a mana vamp effect because that gives this facet even more overlap with other regen boosting facets. Someone should make gspirit work on poison damage, but that is out of scope for this rework. -------------------------------------------------------------------------------- 8aa0e2c87f | wheals | 2021-01-25 11:42:59 +0200 The future -------------------------------------------------------------------------------- 405e40da7a | ukdong99 | 2021-01-25 11:09:43 +0200 Mark an assuary enterance as transparet 2 Resolves another vault which has the same issue in #1639 -------------------------------------------------------------------------------- 37ff1ca61a | Nicholas Feinberg | 2021-01-25 09:59:57 +0200 Remove Evocation scaling from Spectral Currently, the spectral brand is the most complex weapon ego in the game. It has two significant drawbacks: 1. It can significantly increase the damage the wielder takes, since the spectral weapon shares damage with the player. 2. It requires Evocations training to use. Both due to the overall complexity and the perceived weakness of this brand, I'm inclined to simplify by removing one of these effects. Pain sharing makes the brand a bit harder to evaluate, since most brands have no downside at all vs an unbranded weapon (chaos being the notable exception). Evocations scaling has several other problems, though: - It confuses players on a regular basis. People miss the subtle messages about 'ineptitude' and fail to understand why the spectral weapon isn't triggering - 'is it broken?' Some of them ask other players and get the confusion sorted out but others, presumably, just continue thinking it's bugged! - It's the only effect where Evocations training gives benefit to a passive effect, rather than an evocable item or ability. This isn't the end of the world, but it is an odd exception. - Evocations skill is currently very useful for most characters even without this - most games present a large number of powerful, Evocations-scaling items that strongly incentivize Evocations training. It's somewhere between unuseful and counterproductive to add one more. It's possible that the damage sharing effect should also go away or be reduced in magnitude - the downsides of "need to mess with positioning" and "don't have another brand" might be enough to balance spectral. We'll see! -------------------------------------------------------------------------------- 19cb506db8 | Nicholas Feinberg | 2021-01-24 18:19:12 -0800 Tweak summoning titles Now that the high-level demon summoning spells are gone, get rid of the summoning titles that referenced them in favor of the agnostic alternatives. -------------------------------------------------------------------------------- eb620a3345 | Nicholas Feinberg | 2021-01-24 18:19:12 -0800 Remove Summon Demon As with Summon Greater Demon (see previous commit, true believers!), there are quite a lot of summoning spells around level 5, and this is the only one that duplicates a Makhleb invocation. For the sake of fun choices and variety between games, let's send this one straight to Hell. -------------------------------------------------------------------------------- 58b3cc3132 | Nicholas Feinberg | 2021-01-24 14:00:43 -0800 Checkwhite -------------------------------------------------------------------------------- ed86a5fd00 | Nicholas Feinberg | 2021-01-24 13:54:03 -0800 Make nets finite again Too brutal to give gnolls infinite nets, probably. -------------------------------------------------------------------------------- d7dd4bcd53 | Nicholas Feinberg | 2021-01-24 13:53:23 -0800 Give monsters infinite ammo Don't allow running monsters out of ammo, and make their projectiles always mulch. Remove extremely spammy 'returning' boomerang animations from monsters. This is a buff to cyclopes and stone giants; we can nerf them again in various ways if it proves to be too much. -------------------------------------------------------------------------------- 68f98bdfd7 | Nicholas Feinberg | 2021-01-24 13:47:09 -0800 Retheme /disintegrate -> /mindburst Disintegration is a fun effect (everyone loves things blowing up), but it's always been a weird exception in certain ways. MR (now Will) was always the stat that resisted debilitating effects "plus Disintegrate", and there was never any real flavour justification for that. Why could you resist Disintegrate but not, say, Energy Bolt? It makes it hard for players to develop intuitions about what affects what. So let's retheme. Instead of an abstract Disintegration, Mindburst specifically launches a psychic attack on the target's brain, attempting to blow them apart from the inside. It should be a bit more intuitive why this is affected by Willpower (since it's a mental attack), and it still preserves all the explosive fun of the original. For the sake of intuition, the new Mindburst does *not* affect mindless creatures. This mostly shouldn't matter - there aren't that many mindless creatures that you wouldn't want to disintegrate anyway. (It might be a bit rough if you're up against an early centaur skeleton, maybe.) Great Orb of Eyes' Disintegrate spell has been changed to use Mindburst as well. -------------------------------------------------------------------------------- b3a650cb6a | Nicholas Feinberg | 2021-01-24 13:44:20 -0800 Increase Stone Arrow damage by 2 Stone Arrow's damage compares very poorly to other spells of the same level or below. Even compared to Sandblast, Stone Arrow (a level 3 spell) does similar or less damage against most monsters. Rocks aren't that high a cost! -------------------------------------------------------------------------------- ab96107f46 | Nicholas Feinberg | 2021-01-24 13:41:49 -0800 Reduce gnolls attributes to human The first several attempts at creating a gnoll species ended up making something that was both weak and unfun. When the modern gnoll was created (see d2df3b7b5 / 8a4a258fa7 ), they were pushed to be significantly stronger - and it worked! A bit too well, in fact. Gnolls are currently powerhouses from D:1 to Z:5. Let's pull them back a bit, reducing their strength, intelligence and dexterity to human baseline. I expect they'll still be quite strong, but perhaps just a notch less ridiculous. I'm not averse to weakening them further in future, but this seems like a simple way to start. -------------------------------------------------------------------------------- 19610a9a0c | Nicholas Feinberg | 2021-01-24 13:40:43 -0800 Un-de-enhance Scarf of Shadows spells Per the original commit (bf280b6766): This gives 1 spell de-enhancer, since reduced LOS is very strong and allows more spells to be in range at the edge of LOS. If that makes this item too weak it can be removed. The scarf of shadows effect is as strong or stronger for non-casting characters as for casters, which made it odd that only the latter were penalized for using it. Overall, after the scarf was changed to only reduce LOS by 1 instead of 2, the effect was usually not strong enough to justify both the loss of several AC (vs an enchanted cloak) *and* a spell de-enhancer. Removing the latter should help make this a more viable equipment choice. -------------------------------------------------------------------------------- ee1497a637 | Nicholas Feinberg | 2021-01-24 13:39:10 -0800 Show cloud damage for player spells This is experimental. It's weird in that it's sort of asymmetric with the monster versions (e.g. fire crab's flaming cloud), since those show the impact damage instead. Maybe it's helpful, though? -------------------------------------------------------------------------------- 3644e03777 | Nicholas Feinberg | 2021-01-24 13:38:18 -0800 Display accuracy on ranged targeters This was an oversight. Oops! -------------------------------------------------------------------------------- d412354acc | Nicholas Feinberg | 2021-01-24 13:37:37 -0800 Reduce net trap trigger chance Since making net traps not run out of ammo, they've become more vicious than was intended. To mitigate this, give them a 2/3 chance of *not* triggering when a monster enters them. It'd be interesting to make them require LoF to hit the player, but that's an experiment for another day. -------------------------------------------------------------------------------- f16e6d0322 | Nicholas Feinberg | 2021-01-24 13:34:21 -0800 Remove Summon Greater Demon There are 6 different level 7 Summoning spells: Summon Hydra, Monstrous Menagerie, Malign Gateway, Haunt, Spellforged Servitor, and Summon Greater Demon. As one might expect, there's considerable overlap between those. In the interest of providing players with meaningful, distinct choices, we generally prefer to limit overlap between spells. Summon Greater Demon closely duplicates a Makhleb invocation, reducing the distinctiveness of both effects. That puts it high on the chop list. In combination with the removal of the old aura of abjuration -> SGD synergy minigame, SGD seems like the best spell to cut. To keep book balance, Haunt moves from the Necronomicon to the Grand Grimoire. Now every high level book has 4 spells, which seems nice. -------------------------------------------------------------------------------- b6a8d6b5b3 | Nicholas Feinberg | 2021-01-24 13:31:28 -0800 Refactor further -------------------------------------------------------------------------------- e2d8f9ccf3 | Nicholas Feinberg | 2021-01-24 13:30:51 -0800 Rewrite LRD setup I believe the only functional change here should be that monsters won't directly LRD non-player enemies they can't see (which they probably couldn't anyway?), but there's lots of room for bugs in a change this big. -------------------------------------------------------------------------------- 416527ed24 | Nicholas Feinberg | 2021-01-23 11:51:41 -0800 No Marshlight out-of-sight messages (Yermak) -------------------------------------------------------------------------------- 4d92ddfd83 | Nicholas Feinberg | 2021-01-23 08:57:48 -0800 Display Glaciate damage on xv And remove support for player-cast Glaciate, since that's long-gone! -------------------------------------------------------------------------------- 2451fdf569 | Nicholas Feinberg | 2021-01-23 08:11:47 -0800 Make fenstriders evil (Snakku) Oversight - I was used to this being auto-set from spells! -------------------------------------------------------------------------------- 0bfbe0ea93 | Nicholas Feinberg | 2021-01-23 08:10:49 -0800 Add missing roll icon (hatsuma) -------------------------------------------------------------------------------- 96f8838c2c | Nicholas Feinberg | 2021-01-23 08:05:21 -0800 Fix death explosion messages Broken by 3dd439832fe0f5fe295caad1a2fe3e479a757cda - we'd claim that players were 'hit from afar by a bloated husk' instead of 'killed by an exploding bloated husk'. Oops! From that commit's final line: > Overall, this code is very bad and probably buggy. I'm sorry. -------------------------------------------------------------------------------- e71ae6e9b5 | gammafunk | 2021-01-23 07:43:00 -0600 Fix the depth of a ghost vault (Mantis 12464) In Dungeon it was only ever placing on D:8, instead of on its intended depth of D:8-D:$. -------------------------------------------------------------------------------- 6cd7b45605 | advil | 2021-01-21 12:41:38 -0500 Fix some error handling for lobby save info This info was collected asynchronously, but the code didn't do anything to handle the case where the socket closed before the save info was fully collected, leading to uncaught exceptions in the logs. -------------------------------------------------------------------------------- 12357ec85a | advil | 2021-01-21 11:29:45 -0500 Remove item_info This type was just a typedef to item_def. It was added in 8f49829c0752, apparently with the idea that item_info would be used for item_defs that represented id info, and item_def otherwise. However, this convention wasn't even documented, let alone enforced by an actual type distinction (and c++ never added a strict typedef), so it has undergone drift and largely now exists to confuse people. I could imagine redoing this so that the type checker will do something, but the id system is also much less important now than it was at the time of the original commit, so it seems cleaner just to simplify. -------------------------------------------------------------------------------- 3cb999cee2 | Andrew O'Neill | 2021-01-20 23:52:11 -0600 remove CMD_EAT from colemak This is no longer needed since eating is out. -------------------------------------------------------------------------------- f312352147 | advil | 2021-01-20 15:40:21 -0500 A bit of 288a49279187 that got lost in editing oops -------------------------------------------------------------------------------- a89a457576 | advil | 2021-01-20 15:26:35 -0500 Clean up logging for full socket buffer When holding down a key in webtiles for something that takes a long enough time to outpace the key repeat (either because it is cpu-intensive or just because it imposes a delay), the buffer used to communicate with the crawl instance can fill up, which triggers an exception (and drops the key). When this happens, it is quite spammy in logs on live servers. Ideally this could be prevented from happening in the first place (e.g. any time this can happen on autofight/autofire is a case that should be better optimized), but it will inevitably happen from time to time, and doesn't need to fill up the logs quite so much when it does; the stack trace is not informative. For future reference, the full stack trace for a single case of this will look something like (with minor differences between OSs): 2021-01-20 14:05:25,059 WARN: #0 Error while handling JSON message (''{"msg":"key","keycode":9}'')! Traceback (most recent call last): File "/Users/advil/repos/crawl/crawl-ref/source/webserver/ws_handler.py", line 869, in on_message self.process.handle_input(message) File "/Users/advil/repos/crawl/crawl-ref/source/webserver/process_handler.py", line 897, in handle_input self.conn.send_message(utf8(msg)) File "/Users/advil/repos/crawl/crawl-ref/source/webserver/connection.py", line 109, in send_message self.socket.sendto(utf8(data), self.crawl_socketpath) OSError: [Errno 55] No buffer space available -------------------------------------------------------------------------------- 288a492791 | advil | 2021-01-20 12:38:37 -0500 Reduce webtiles redraws per key input by 2 The previous behavior stems for a fairly old (729eb1357d24d1d5) decision to send a redraw on each input mode change. Since every keypress swaps between MOUSE_MODE_NORMAL and MOUSE_MODE_COMMAND, holding down a key could trigger a lot of unnecessary redraws, and for example with no ammo could max out the process's cpu usage (at least on a `make profile` build). I'm not actually sure why a webtiles redraw (which mainly send the map and the player) is needed on any case of changing input mode, but for now I'll be conservative -- and this is the case that shows up in profiling. As it happens, there's still at least one webtiles redraw per key input, in getch_ck. But, the profiling with just this one doesn't seem like a problem by itself. It's possible that redraw() itself has some issues that could be addressed -- sending both the player and the map equally eat up a lot of cpu with repeated calls. -------------------------------------------------------------------------------- 66375cd4da | advil | 2021-01-19 16:41:12 -0500 Refactor write_dgl_status_file Just a code cleanup. -------------------------------------------------------------------------------- b51a1d6fd6 | Nicholas Feinberg | 2021-01-18 09:36:51 -0800 Don't auto-drop ?tele in Gauntlet (Yermak) For purposes of auto-selecting items for drop with `d,`, ignore temp conditions such as 'being in Gauntlet'. This should discourage accidents. -------------------------------------------------------------------------------- 5a9077b8ae | Kate | 2021-01-17 03:39:46 +0000 Adjust timing for evoked unrand HP/MP costs As with the Majin-Bo in 0fe236c, reduce HP and MP as a cost before activating the ability, and refund it if the ability is aborted. -------------------------------------------------------------------------------- 65cebae1ba | Nicholas Feinberg | 2021-01-16 16:08:25 -0800 Don't show Fridge accuracy (lici) Since it always hits! -------------------------------------------------------------------------------- 19769c27d7 | Edgar A. Bering IV | 2021-01-15 17:44:33 +0200 Add a missing of (Aliscans) -------------------------------------------------------------------------------- 39ad13b146 | Edgar A. Bering IV | 2021-01-15 07:43:18 +0200 Don't remain curled while delayed (12443) -------------------------------------------------------------------------------- 4f573a835d | Edgar A. Bering IV | 2021-01-14 20:37:32 +0200 Fix a teleport closet (MakMorn) -------------------------------------------------------------------------------- 33242fe616 | Edgar A. Bering IV | 2021-01-14 20:07:06 +0200 Prevent trampling a constricted actor (12432) The other option would be to have constriction broken on trampling. However, I went with this resolution because either: - the player is being trampled and constricted, don't make their life easier - or the player has allies and is trying to do both things to a target, creating an ally-micromanagement encouraging edge case -------------------------------------------------------------------------------- 897d3da516 | Edgar A. Bering IV | 2021-01-14 19:44:25 +0200 Don't update constriction when testing door seals The vault warden AI check to see if it should seal a door was using move_to_pos to evaluate the tension of actor moves, but move_to_pos handles updating constriction information of the constrictor. The result was that if the check needed to test if pushing something through a door in a way that would break constriction was a good idea, the constriction would actually break, even if the monster ultimately decided to not close the door! Closes #1566 -------------------------------------------------------------------------------- ea5d59904d | Edgar A. Bering IV | 2021-01-14 19:22:03 +0200 Fix a tension check for runic seals (8085, 10542) The previous tension check for closing doors had an incorrect conditional, so that if tension were *increased* by the closure, the warden would not decide to close the door! Additionally, this check returned true in situations where the tension was 0 before and after the closure. The result of the latter behavior was often locking the player in with their allies away from the warden. Closes #1534 -------------------------------------------------------------------------------- 0fe236cf81 | Edgar A. Bering IV | 2021-01-14 18:55:36 +0200 Adjust the charging of Majin-Bo's hp cost Don't send it through ouch, it should be treated like an ability hp cost, not damage (so no harm scaling!). Also, dec the hp at the same place as the mp cost of the spell, for appropriate sequencing of the effect and to give the player a preview of the cost while targeting. Closes #1578 -------------------------------------------------------------------------------- f40771be7f | Edgar A. Bering IV | 2021-01-14 17:52:12 +0200 Remove an obsolte comment -------------------------------------------------------------------------------- 28f6fc2273 | Edgar A. Bering IV | 2021-01-14 17:26:14 +0200 Anger monsters who block player attacks Consistent with dodged attacks that the monster is awake to notice. Closes #1612 -------------------------------------------------------------------------------- b0dbf93ca2 | Edgar A. Bering IV | 2021-01-14 17:12:25 +0200 Simplify Tornado interactions with distance movement Prior to this commit, if the player moved by translocating (or Ba hop) multiple tiles while under the effects of tornado, the tornado was cancelled, without requiring cooldown, UNLESS the translocation landed the player in a tornado cloud, in which case the tornado duration was decremented by a translocational penalty. No change to duration was incurred on taking a passage of golubria or transporter. On taking stairs the tornado was cancelled with no cooldown. This commit changes the behavior to: blinknado is ok, but all other long distance changes end tornado and give the cooldown. Closes #1611 -------------------------------------------------------------------------------- 80642e47cc | Edgar A. Bering IV | 2021-01-14 14:40:54 +0200 Don't offer conjured things god blessings Closes #1648 -------------------------------------------------------------------------------- 0c344bb9d3 | Edgar A. Bering IV | 2021-01-14 14:18:25 +0200 Restore Zyme sickness Incorrectly changed an undead state check when rot changes were made in 4cbea82fa3. US_ALIVE is tragically false. Closes #1677 -------------------------------------------------------------------------------- 768c70b9d4 | Edgar A. Bering IV | 2021-01-14 13:57:41 +0200 Fix a teleport closet Closes #1681 -------------------------------------------------------------------------------- 58ad9d9fa3 | wheals | 2021-01-14 10:22:07 +0200 Quiet down Irradiate (#12446) I'm guessing, based on loudness being set to 0, that it was never expected to have the explosion noise. However, explode() reset the loudness anyway, so setting it manually had no effect. -------------------------------------------------------------------------------- caaa221d37 | advil | 2021-01-13 20:36:46 -0500 Fix webtiles rendering of ctrl keys I honestly have no idea how these were displaying in console, but they were, so I assumed they would work in webtiles as well. But something low-level that I haven't found must have been doing the actual rendering in a way that didn't convert them to readable strings in webtiles. This is a quick patch to render them correctly in the macro menus. -------------------------------------------------------------------------------- 75406f0b48 | advil | 2021-01-13 14:10:38 -0500 Suppress DGL clrscr escape code during targeting On a USE_DGAMELAUNCH=yes build, clrscr calls send an escape code that is interpreted by dgamelaunch as a clrscr command, and is also apparently used to synchronize ttyrecs (??). This happens at the same time as regular ncurses clrscr, but it seems that it is likely sent and processed immediately, whereas clrscr has no effect until a refresh(). Since 38af612a8a6b923, while targeting, the entire console display is fully cleared and redrawn on every key (via the call chain UIDirectionChooserView::_render() -> redraw_screen -> draw_border -> clrscr). I have not been able to fully understand either why this does happen or why it needs to happen (the screen is actually cleared by a call to ui.cc::clear_text_region that wipes out everything during the ui render chain, making a full redraw necessary), but the net effect is that this causes a lot of blinking when playing in console through dgamelaunch, especially with a low ping. As an interim solution, in this commit I've simply suppressed all dgl clear codes during targeting. They happen often enough otherwise that hopefully this wouldn't cause any synchronization problems, if anything is even using these codes any more. -------------------------------------------------------------------------------- d04b7445b5 | advil | 2021-01-12 20:03:02 -0500 Remove some console blinkiness in map view As far as I can tell, this update_screen call is guaranteed to force an update on a blank screen, and since it is triggered on every refresh in map view, it is making map view extra blinky (especially over ssh). I can't find any negative consequences of just removing it. -------------------------------------------------------------------------------- a51d4ba9de | Nicholas Feinberg | 2021-01-12 08:24:42 -0800 Fix more net trap bugs Don't allow players to collect infinite nets by either (a) being in dragon/tree form or (b) just being already in a net when another net drops. -------------------------------------------------------------------------------- 9f9dfd16e9 | advil | 2021-01-11 17:25:53 -0500 Fix a console hud issue at high turncounts (gressup) This code used a constant number of spaces to clear the rest of the turncount line, but didn't factor in the fact that cprintf wraps; at high turncounts (6+ digits) on long autoexplore/autotravel spans (>10.0 auts) it could therefore overwrite 1-2 letters of the weapon display. Recent changes reduce how often the weapon redraws, so this has probably become more visible lately. Despite that, this is a vintage bug, originating from ce229f1793ccd. -------------------------------------------------------------------------------- ebd156f8b4 | Edgar A. Bering IV | 2021-01-11 00:00:49 +0200 Fix monster tracers for Call Down Damnation The tracer behavior was inadvertently changed in 2f2a4d8ed992e13 which refactored CALL_DOWN_DAMNATION into a zap. In doing so no longer failed to set the explosion size for the tracer. Closes #1678 -------------------------------------------------------------------------------- da163c7f71 | gammafunk | 2021-01-10 10:02:22 -0600 More insubstantial wisp removal Remove descriptions and quotes in various languages. -------------------------------------------------------------------------------- 3544c24705 | advil | 2021-01-09 22:39:14 -0500 Update keybind.txt for 0.26 changes ...missed this. -------------------------------------------------------------------------------- 838eb4c31e | advil | 2021-01-09 18:35:37 -0500 Fix confused ctrl-attacks The code that handles this case got elided in 6b3f3ad2d24f (possibly I was assuming it was handled elsewhere, but it isn't, because of treeform). -------------------------------------------------------------------------------- 58928b186a | Kate | 2021-01-09 22:41:30 +0000 Update monster disintegrate description -------------------------------------------------------------------------------- f4412e357a | Kate | 2021-01-09 22:41:30 +0000 Fix grammar in miscast descriptions -------------------------------------------------------------------------------- def486af7f | Nicholas Feinberg | 2021-01-09 12:37:37 -0800 Fix various will-o-the-wisp vaults Replacing insubstantial wisps with the much more threatening will-o-the-wisps 1:1 produced some unintententionally deadly results. -------------------------------------------------------------------------------- 4bfc8a49e1 | Edgar A. Bering IV | 2021-01-08 21:31:42 +0200 Add a trunk reminder for the 0.26 tournament -------------------------------------------------------------------------------- 3fd14906f5 | Edgar A. Bering IV | 2021-01-08 18:44:07 +0200 Final credit roll for 0.26 -------------------------------------------------------------------------------- fb268537a3 | gammafunk | 2021-01-08 10:06:50 -0600 Final changelog update for 0.26.0 Oops! Forgot to do this before tagging. -------------------------------------------------------------------------------- e07e2c7cd4 | gammafunk | 2021-01-08 09:45:41 -0600 Update the Debian changelog for 0.26 -------------------------------------------------------------------------------- ee53873d45 | advil | 2021-01-08 10:38:27 -0500 Better handle a webtiles error case I think this probably results from something being misconfigured with socket paths; it's being triggered on CBR2 currently by connecting via ssh. -------------------------------------------------------------------------------- 2af701fde4 | Edgar A. Bering IV | 2021-01-08 11:51:34 +0200 Tweak lua documentation and get it to build The internal ldoc error was not, as had been suspected by me, a version problem, but a lack of good error messages from ldoc! After some tweaks, `make api` now runs again under ldoc 1.4.6-2 in lua5.3 (I'm not going to figure out how to make this work with contribs becuase that would surely require vendorizing ldoc...). Some typos and type-os (misuses of tparam) are also corrected. -------------------------------------------------------------------------------- 21144fbd99 | Nicholas Feinberg | 2021-01-07 22:29:36 -0800 New Fenstrider Witch tile (canofworms) -------------------------------------------------------------------------------- 238fa4abc0 | Nicholas Feinberg | 2021-01-07 22:29:16 -0800 Replace Bloated Husk tile Look familiar? (It's a recolour of the very old Plague Shambler tile.) -------------------------------------------------------------------------------- fbafd837a3 | advil | 2021-01-07 21:14:45 -0500 Attempt to handle WebSocketClosedError in Tornado 6 Under high load conditions (I think, I haven't replicated this) in current versions of Tornado, write_message can return non-trivial Futures. Our code has assumed that these are always trivial, and therefore, did not do any exception handling; a timeout under these conditions causes a *lot* of annoying log messages, coinciding with server lag/thrashing, though I'm not sure of the causal direction. We've been seeing this specifically on CBR2. This commit adds an exception handler for the async part of write_message, using a callback (in a kind of ugly fashion). I haven't locally replicated the exact issue, but I have tested this callback by modifying Tornado. Some day, maybe this code can all be made to use async directly. At worst, this fix will make the log messages a lot cleaner; I do suspect it won't do more than that for the deeper problem, but it will also hopefully provide some clues as to what is going on. -------------------------------------------------------------------------------- 0ec5f8ab93 | advil | 2021-01-07 16:59:46 -0500 Fix some oddnesses with fire order from invalid quivers This isn't a very general fix, and will lead to odd behavior if launchers are not first in the player's fire order, but I don't want to mess with this too deeply given the release timing. -------------------------------------------------------------------------------- 216b6189a3 | advil | 2021-01-07 16:59:46 -0500 Prioritize sandblast over throwing stones for EE start (ardl) This is extremely special-case-y, but EE players will almost certainly want to do this right away anyways, and it better matches other elemental starts. I at least made it check fire order first. -------------------------------------------------------------------------------- e4986e83c0 | advil | 2021-01-07 16:59:46 -0500 Missed hailstorm animations from 64bdb92e382d -------------------------------------------------------------------------------- e8fdfcfcf6 | gammafunk | 2021-01-07 11:25:18 -0600 Remove references to Charms magic (split) In the manual and in the aptitude list templates. -------------------------------------------------------------------------------- 64bdb92e38 | advil | 2021-01-06 17:21:00 -0500 Improve coverage of disabling beam animations (12356) This gets lightning rod, tremorstones, glaciate, ignition, hailstorm, and static discharge. -------------------------------------------------------------------------------- 054287de91 | advil | 2021-01-06 16:07:57 -0500 Don't process click_to_travel minimap clicks in map mode If you left-clicked the minimap while in map (`X`) mode, this would start autotravel, and then "continue" it when exiting map mode in any way including escape. In #1508 it was also reported that this sequence of actions caused a crash on windows; it isn't surprising to me that activating click_to_travel without leaving map mode would crash, though I didn't get it to crash on mac. In any case, this behavior doesn't make sense (escape should abort), so remove it, and hopefully fix the crash on windows as well. -------------------------------------------------------------------------------- 1c918b713c | advil | 2021-01-06 15:28:28 -0500 Don't crash with extreme game_scale values These can lead to bad memory corruption and crashes if they result in regions having size 0. Instead of crashing, print an error message to the player and abort. -------------------------------------------------------------------------------- 23abb52f8e | advil | 2021-01-06 14:02:04 -0500 Fix a glyph size issue (powerbf) I *think* what was happening here is an off-by-one error; if the glyph size is exactly the max advance the stored version was failing to be doubled, and was short one column; this column was getting overwritten by an adjacent glyph. Huge thanks to powerbf in #1482 for doing the bisection + debugging to figure out the source of the problem. I wont' auto-close that PR as I'd like to get this tested on other OSs. -------------------------------------------------------------------------------- 72ac391492 | advil | 2021-01-06 09:47:53 -0500 Revert "Explicitly set window opacity" This commit probably didn't do anything (or so I was convinced by discussion in #1562), and will prevent building against xenial, which we are currently targeting for debs. This reverts commit 613af4b37b82d0001911d91b8d37d4153b36e1ad. -------------------------------------------------------------------------------- 8be3b22871 | Goratrix | 2021-01-06 09:40:03 -0500 Update changelog for 0.25.1 This changelog entry was only commited in 0.25 branch when 0.25.1 was released, not to master, so it's missing now from 0.26 and master changelog file. -------------------------------------------------------------------------------- 54a7bdf380 | advil | 2021-01-06 09:38:56 -0500 Remove travis -------------------------------------------------------------------------------- bd5e5ef833 | advil | 2021-01-06 09:35:25 -0500 Tweak autofire description in key help ... to make clear that untargeted actions are activated. -------------------------------------------------------------------------------- 34d46f0a3f | advil | 2021-01-05 14:27:49 -0500 Changelog updates * More on newquivers * add a bunch of smaller options/lua/ui features mostly from outside contributors * Put all key combos for this version in `` (I realize this isn't md but it's still easier to read that way.) -------------------------------------------------------------------------------- 1ca9eea3f7 | advil | 2021-01-05 10:53:26 -0500 Fix quiver redraw issues on delay interrupt Depending on the exact timing, a stat redraw sometimes wouldn't happen immediately after a delay interrupt, leading to incorrectly showing a quiver as disabled. This commit adds some delay-related checkpoints to ensure that the quiver info is up-to-date, and forces a stat redraw on runrest delay end. (This could come up for other interrupted delays?) This is somewhat delicate to debug/replicate because messaging can force a stat redraw itself. -------------------------------------------------------------------------------- 753e386513 | advil | 2021-01-05 10:28:05 -0500 Fix target check for LRD This spell is LOS range so there's no impact wrt the spell's effect, but this fixes quiver status and messaging. I think the manual special-casing in the range check originates from when this spell could destroy walls. -------------------------------------------------------------------------------- d6d4955b76 | advil | 2021-01-05 10:23:04 -0500 Fix autofight messaging for spells with no target in range Not sure exactly when this got broken, but this commit cleans up a few issues with how this was previously implemented. -------------------------------------------------------------------------------- 021c985bc4 | advil | 2021-01-05 09:07:47 -0500 Remove some debug code -------------------------------------------------------------------------------- bdec46a1ea | nikheizen | 2021-01-05 04:25:14 -0600 Fix nzn_winding_woodlands_15x15_boxy_spiral This subvault was only 14 cells wide instead of 15. This commit fixes it and makes the central vault slightly more resilient to vault burning. -------------------------------------------------------------------------------- 5f2be0e231 | advil | 2021-01-04 16:36:37 -0500 Disallow throwing stones while wielding a sling There's nothing wrong with this per se, but it doesn't have much in the way of benefits that I can come up with and is fairly confusing to the player. This was disallowed before e42c0a68 anyways. -------------------------------------------------------------------------------- bd55b0887b | advil | 2021-01-04 16:26:48 -0500 Restore switch-on-autopickup behavior from pre-0.26 When you ran out of one type of ammo, autoswitched to another, and then picked up the first type, oldquivers would switch you back. It got removed in the quiver rewrite because the code was kind of messy. This commit restores that behavior, by popular demand. I'm not super happy with the implementation (which unfortunately relies on a bunch of weird legacy code) but after thinking about this for a while, I'm not sure there's a clean way to implement this behavior. -------------------------------------------------------------------------------- 1d1f4c8ba3 | advil | 2021-01-04 12:04:26 -0500 Add a note about sub-ordering for fire_order -------------------------------------------------------------------------------- 08524f53dc | advil | 2021-01-04 10:44:11 -0500 Tweak targeting help Make it clearer that the quiver commands are mode-specific, also use correct mapping for `()`. -------------------------------------------------------------------------------- 6ed78dee3f | advil | 2021-01-04 10:36:28 -0500 Add a fallback targeter heading for firing This mostly impacts targeted abilities that don't have any labeling in targeter mode at all (mainly old ones). It would be a good idea to do something more comprehensive / consistent, but ability targeters are implemented in a fairly piecemeal way (unlike e.g. spell_direction). -------------------------------------------------------------------------------- 405e3faaac | advil | 2021-01-04 10:21:34 -0500 Simplify quiver verbs for misc evokables I tried a few times to make these flavorful + non-confusing, but never really got the second part down. Just use "Evoke". -------------------------------------------------------------------------------- c18c9092ac | advil | 2021-01-03 20:40:11 -0500 Clean up + simplify "Powers" tab Invocations info The original form of this message ("piety instead of invoc") was already kind of confusing, because most invoc gods are affected by *both* piety and invoc (and this is described for specific powers on the Overview tab too). In addition, it just left out gods where the "piety" part wasn't appropriate or was too involved. This commit simplifies the skill message to only describe the non-impact of Invocations, and shows this message for all gods that aren't affected by invoc. Contra the now-removed comment, there would be space to describe any additional effects that this doesn't cover, but it's not actually that obvious to me what this comment was talking about that is missing. (For Gozag, the effect of gold is well-described, and the comment about WJC seems outdated?) Resolves #1662 -------------------------------------------------------------------------------- 7ddcfd5ad1 | advil | 2021-01-03 20:18:06 -0500 Set default startup name from -name at command line This lets a name set at the command line persist to the main menu if the player hits esc at character selection. Resolves #1510 -------------------------------------------------------------------------------- 443bf2d2ca | advil | 2021-01-03 15:58:42 -0500 Don't double !f warning for `F` Resolves #1669 -------------------------------------------------------------------------------- 353b9ea00c | advil | 2021-01-03 15:41:42 -0500 Fix launcher autoswitch issues (ardl) launcher_action_cycler autoswitch was broken in some cases (most obviously when picking up a launcher for the first time with none of its ammo in inventory) because its default initialization was with an ammo_action, not a launcher_ammo_action. While debugging this I found a bunch of related issues and cleaned up some of the code slightly. -------------------------------------------------------------------------------- 2edb794d0a | gammafunk | 2021-01-03 11:14:02 -0600 Make player drain fully proportional and buff it I originally made max HP drain split power into two components, one used for a randomized cost and one for a proportional cost. This was to balance the effect between low HP characters and high HP characters. Low HP characters get penalized more an effect based on a fixed value compared to one that's based on a percentage of max HP. Making it fully percentage-based hurts high HP characters more, but elliptic pointed out that this is how other max HP reduction effects like frail work. Based on play-testing, the current drain effect is a bit weak for both monster attacks and ability drain costs, and we'd like to buff it. Making the effect fully proportional will let us do this without harming low HP characters quite so much. Yes, we actually care about the poor felids (no we don't). This commit makes the effect fully based on the player's current max HP and increases its strength by 33%. Now the final HP drained is simply: 1 + div_rand_round(power * max_hp, 750) with the division being randomly rounded in the usual way. Hence we always drain 1 MHP if our power was non-zero. Drain power is still 1 + damage for monster attacks or a fixed cost value for abilities, as before, Some quick play testing has shown early wight packs to be a bit more effective at getting the player into lightred drain and e.g. Ru Apocalypse to be a bit nastier. If this proves to be not enough, it's easy to adjust that 750 divisor. -------------------------------------------------------------------------------- 2d0a2396b0 | advil | 2021-01-02 20:43:43 -0500 Improve tremorstone + summons warning checks (12409) This is a fairly minimal approach, in contrast to the potential for refactoring: there's a lot of related code that could be consolidated here, and it looks to me like shoot_through_monster does a bunch of checks that doesn't need the full beam. Various other cases have the same code duplication issue, see e.g. b68aede. However, I don't want to mess with this stuff in a general way during feature freeze. Partial revert of 105bc0f7bc0538ce0380fe774c2a35860f9f7c17. -------------------------------------------------------------------------------- 0579ed41f9 | advil | 2021-01-02 20:43:29 -0500 Fix a butterfly+charge+quiver interaction (12410) Palentonga charge can target butterflies, but autofight code has its own check that ignores butterflies. With autofight_throw=true, when a butterfly was in charge range the quivered ability would therefore be enabled, but autofight would select movement towards the distant target. However, autofight relies on a quivered ability to be disabled to know when to trigger movement; the net result was that it passed a distant target through to activate the ability and gave an error. On the assumption that players won't usually want to roll towards a butterfly, this commit disables charge with non-threatening monsters in range. However, charge can still be triggered towards a non-threatening monster by using the `a` menu. As noted in the comments this is a somewhat hacky solution, and a more general solution along the lines of spells + non-threatening monsters would be less hacky. -------------------------------------------------------------------------------- 105bc0f7bc | advil | 2021-01-02 18:26:21 -0500 Revert "Improve tremorstone + summons warning checks (12409)" This reverts commit 91735a3152ac1321536d30bc7ca0037caf38fc6b. -------------------------------------------------------------------------------- 91735a3152 | advil | 2021-01-02 18:19:29 -0500 Improve tremorstone + summons warning checks (12409) This is a fairly minimal approach, in contrast to the potential for refactoring: there's a lot of related code that could be consolidated here, and it looks to me like shoot_through_monster does a bunch of checks that doesn't need the full beam. Various other cases have the same code duplication issue, see e.g. b68aede. However, I don't want to mess with this stuff in a general way during feature freeze. -------------------------------------------------------------------------------- 087482e4d5 | Edgar A. Bering IV | 2021-01-02 16:26:37 +0200 Don't perform a range check for Noxious Bog -------------------------------------------------------------------------------- 086eb55de8 | Edgar A. Bering IV | 2021-01-02 15:57:39 +0200 Tone down Ignite Poison's effect on bog The previous interaction was bugged, since place_cloud takes a number of turns, not a number of auts, so a duration 10x as long was being used for the flame clouds created when igniting bogs. Additionally, igniting every tile was left-over from the trail-style bog. New Noxious bog places many more bog tiles instantly, which even with the originally intended cloud duration allows the player to surround themselves with flame-cloud covered bog (and keep the flame clouds for a while after the bog ends at high power). This commit reduces the flame cloud duration to a reasonable length (2-5 dAuts at max power) and only places flame clouds over a bog cell with a one in three chance. -------------------------------------------------------------------------------- 63decd6869 | Edgar A. Bering IV | 2021-01-02 15:15:31 +0200 Clarify a prompt message -------------------------------------------------------------------------------- c91146610e | Edgar A. Bering IV | 2021-01-02 15:15:07 +0200 Describe dazzle chance in the Dazzling Flash targeter -------------------------------------------------------------------------------- 7e5a9cbe55 | Edgar A. Bering IV | 2021-01-02 14:59:06 +0200 Add a static targeter for ignite poison -------------------------------------------------------------------------------- c93d6a9b7e | Edgar A. Bering IV | 2021-01-02 13:44:33 +0200 Re-refactor targeter_multiposition Commit 464169c878 fixed some of the monster checking that targeter_multiposition does, and subsequent commits used targeter_multiposition as a base class for static targeters for various LOS-enchantment effects. The implementation of 0242afd26b had some order-of-execution finesse to ensure that a virtual method called by the targeter_multiposition constructor was correctly initialized. In that commit and the comments in it I remarked there was probably a better way. Indeed, the design smell of the constructor pointed out the following: multiposition and multimonster targeting, while appearing similar in the ui, are semantically different. This commit splits up users of the class: targeter_multiposition is used when the targeted cells depend non-locally on the monster occupying the cell, and a new targeter class targeter_multimonster is introduced for targeting monsters in los on a monster-by-monster basis. The result simplifies targeter_multiposition nicely. -------------------------------------------------------------------------------- 3d81cda750 | Edgar A. Bering IV | 2021-01-02 11:05:32 +0200 Allow static-targeter preview of Confusing Touch By enabling these two spell flags the recently implemented static targeter interface Just Works to allow a preview of Confusing Touch success chances. The highlighting intentionally highlights only the player, which might make this behavior a bit hard to discover, but it feels less misleading than "targeting" all visible monsters. The wording could be improved, but currently the success chance display does not allow verb customization. Because this targeter is a bit of a kludge, I haven't made it a default force targeter. -------------------------------------------------------------------------------- 0242afd26b | Edgar A. Bering IV | 2021-01-02 11:05:31 +0200 Add detailed static targeters for LOS enchantments To round out the new quiver and collection of static targeters, this commit adds detail to the static targeters for: Cause Fear, Discord, Alistair's Intoxication, and Metabolic Englaciation; also added is a static targeter for the pseudo-spell Drain Life. Each now highlights the monsters that will be affected (or at least not outright immune). Additionally, success chance displays have been added, so that the chance of affecting each target is available. In an ideal world these spells would be further re-factored so that the targeter behavior is unified with the casting behavior, the affect logic encapsulated in beam or zap data, and the different targeting classes unified in a single targeter_multiposition_enchantment. For now, I am content with the UI clarity. -------------------------------------------------------------------------------- cc8eda8a42 | Edgar A. Bering IV | 2021-01-02 11:05:31 +0200 Adjust Metabolic Englaciation Simplify the formula slightly to only randomize on power and not also on monster HD. The change uses the midpoint of the previous roll so the power level should stay about the same, with aa slightly narrower distribution of durations. -------------------------------------------------------------------------------- 1589ab1335 | Edgar A. Bering IV | 2021-01-02 11:05:31 +0200 Fix a targeting information leak in Absolute Zero (12415) -------------------------------------------------------------------------------- 464169c878 | Edgar A. Bering IV | 2021-01-02 11:05:31 +0200 Refactor targeter_multiposition Clarify the usage of can_affect_unseen, improve visibility checks, re-name a parameter, and support child class overrides of affects_monster. -------------------------------------------------------------------------------- 0db6f627e1 | Edgar A. Bering IV | 2021-01-02 11:05:31 +0200 Rename a function for clarity desc_success_chance -> desc_wl_success_chance -------------------------------------------------------------------------------- 87abb2d9eb | Neil Moore | 2021-01-02 00:10:24 -0500 Add a quote (that will rarely be seen) Same as it ever was. [skip ci] -------------------------------------------------------------------------------- 5dcdf963e0 | Nicholas Feinberg | 2021-01-01 14:52:07 -0800 Don't spawn 8 will-o-the-wisps in Lair (Goratrix) One will-o-the-wisp is a significant threat in Lair. 8 is death. -------------------------------------------------------------------------------- c4307f12cd | advil | 2021-01-01 16:17:45 -0500 Fix `F`+pproj logic (10804) This was inverted, and I think it also shouldn't ever set MB_TRUE for this code path. -------------------------------------------------------------------------------- fb19f2a25f | advil | 2021-01-01 16:02:23 -0500 Add lua support for targeted CMD_THROW_ITEM_NO_QUIVER This is a partial revert of d0772dbefd; this parameter was waiting for a case to be added in l-crawl.cc. -------------------------------------------------------------------------------- 92626205c4 | advil | 2021-01-01 15:55:01 -0500 Simplify throw_it (PleasingFungus) This code path has become progressively refactored so that it is only ever called from one place, and a quiver::action object provides the full context needed to do throwing/launching; so, use that. -------------------------------------------------------------------------------- 18013ae1f5 | Nicholas Feinberg | 2021-01-01 11:27:32 -0800 Remove unused variable (Mesh) -------------------------------------------------------------------------------- 2922b9e743 | Nicholas Feinberg | 2021-01-01 09:50:02 -0800 More throwing code cleanup Remove a very long-unused return variable and some other unused cases. This whole use of `dist target` is much more complex than it needs to be (we never pass a meaningful target in), but... -------------------------------------------------------------------------------- e5df516c99 | Nicholas Feinberg | 2021-01-01 09:42:40 -0800 Ban shift-dir pproj (12422) Recent quiver changes caused shift-direction aiming (which fires projectiles in a cardinal direction) to crash the game, but it never worked correctly. In older versions, it would aim at the map border, causing fun messages in e.g Shoals of "There is a water there". There's really no situation in which shift-aiming with pproj makes sense, unless some more complex behaviour of 'aiming at the nearest enemy in that direction' was added. Barring that, let's ban it. -------------------------------------------------------------------------------- f342683475 | Nicholas Feinberg | 2021-01-01 09:03:58 -0800 Rename a mysterious 15-year-old variable -------------------------------------------------------------------------------- d0772dbefd | Nicholas Feinberg | 2021-01-01 08:58:02 -0800 Remove an unused parameter -------------------------------------------------------------------------------- cf006a40f5 | Nicholas Feinberg | 2020-12-31 10:17:33 -0800 Don't make Hurl Sludge also cast Blinkbolt (vt) Why are C-style switch/case statements so bad. -------------------------------------------------------------------------------- 135aecce3f | gammafunk | 2020-12-31 11:36:06 -0600 Have Vehumet support Eringya's Toxic Bog (Lici) A direct damage spell, just not one using conjurations, so add it to the special list. -------------------------------------------------------------------------------- 6edc4d6507 | Alan Malloy | 2020-12-31 03:56:09 -0800 Record origin of clouds that petrify the player (Tungsten) -------------------------------------------------------------------------------- b6e4b569e3 | wheals | 2020-12-31 12:44:09 +0200 Remove an unused spellbook -------------------------------------------------------------------------------- 930a39183f | Edgar A. Bering IV | 2020-12-31 12:10:59 +0200 Remove insubstantial wisps Insubstantial wisps aren't great monsters. Mechanically annoying, rarely threatening in their vault usage, and not loreful enough to keep as a rare vault decorating monster (compare toenail golems, which aren't annoying and are very loreful). After the Swamp overhaul these continued to appear in: - assorted vaults (where they were generic electric/translocations theme or a now incorrect Swamp monster) - the Foxfire card's effect list - in the Abyss spawn list (as a Swamp guest) None of these usages were particularly inspiring as the monster is not great, so wisps are finally dissapated by this commit. The tile and glyph info are retained to use as a dummy for player Wisp form. For vaults: - in Swamp and where they are a Swamp guest, they are replaced with will-o-the-wisps, - in places where they are a generic electric threat, they are either removed or replaced with ball lightning (as appropriate), - in places where they are a translocation theme piece, they are removed. The Foxfire card no longer summons wisps, and just has a shorter list. The Abyss spawn has been replaced with will-o-the-wisps. -------------------------------------------------------------------------------- 14533b3512 | Edgar A. Bering IV | 2020-12-30 20:34:31 +0200 Fix some zap glyphs Commits 2f2a4d8, f75564e, and 17de90a zapified more monster spells and abilities, but in moving them to zap data didn't preserve the default DCHAR_FIRED_ZAP beam glyph from mons_spell_beam. This resulted in console animations for the affected abilities using null as the glyph, hiding the beam. -------------------------------------------------------------------------------- 7079f50010 | Goratrix | 2020-12-30 20:10:21 +0200 Clarify annotations in Ctrl+O and in the manual After commit 8436896, any level can be annotated. Update instructions in Ctrl+O and in the manual accordingly. -------------------------------------------------------------------------------- 56d4af09c2 | wheals | 2020-12-30 20:06:53 +0200 Fix the build With the rename, the flavor connection to the vault is more tenuous than ever, but I'll allow it. -------------------------------------------------------------------------------- d7b2425749 | Nicholas Feinberg | 2020-12-30 09:54:36 -0800 Remove Robustness (; -------------------------------------------------------------------------------- adef21051d | Edgar A. Bering IV | 2020-12-30 19:44:13 +0200 Rename two unrand rings (CanOfWorms, hellmonk, PleasingFungus) Robustness -> the Tortoise Phasing -> the Hare 1. Robustness has the same name as the mutation, but a completely different effect. 2. Tortoise / Hare pairing is good Lore that links the two rings. 3. I got to the bikeshed with the paint colour I like before PF did (alternate suggestion was Robustness -> Invincibility). -------------------------------------------------------------------------------- 05fc5f520a | Nicholas Feinberg | 2020-12-30 09:05:55 -0800 Fix gargoyle statue form LRD damage See 25521206441 for reasoning. -------------------------------------------------------------------------------- f2e91f3db1 | Nicholas Feinberg | 2020-12-30 08:55:48 -0800 Warn before entering a bezotted branch To help players notice when they're short on time? -------------------------------------------------------------------------------- 35eea5b30a | Nicholas Feinberg | 2020-12-30 08:44:34 -0800 Refactor stair warnings -------------------------------------------------------------------------------- 220361c043 | Goratrix | 2020-12-30 10:24:53 +0200 Small update in options guide Eringya's Noxious Bog has a default force_targeter now, so update options guide accordingly. Also fix two stray rows which were longer than 80 characters. -------------------------------------------------------------------------------- d52f5182fe | Nicholas Feinberg | 2020-12-29 08:24:35 -0800 Rename art-data MAGIC->WILL MAGIC was always an extremely confusing property name. -------------------------------------------------------------------------------- 0de2e1c0f6 | gammafunk | 2020-12-29 06:58:43 -0600 Fix a changelog entry (ebering) -------------------------------------------------------------------------------- 66cac9c236 | gammafunk | 2020-12-29 06:14:40 -0600 Update the changelog Through 0.26-a0-1210-gada54dbd18. -------------------------------------------------------------------------------- ada54dbd18 | gammafunk | 2020-12-29 06:06:41 -0600 Restore the Glaive of the Guard's enchantment (curatorofearth) Make it +8 again, since its spectral weapon ego is good, but not good enough to also have bad enchantment. This was an apparently unintentional change made when ebering was testing a version with multiple spectral weapons (!!). -------------------------------------------------------------------------------- 49d2223b27 | gammafunk | 2020-12-29 05:11:49 -0600 Tweak boulder beetle rolling AI Boulder beetles currently continue rolling even if they don't have a viable move, which leads to them rolling in-place behind monsters or damaging clouds. This does confer a benefit to the monster should a viable path open up before the roll enchantment expires, but is counter to the player expectation that rolling implies to movement. This commit has boulder beetles stop rolling if they have no viable move, and likewise prevents them from attempting to roll if there is no viable move. Although this is a slight nerf to boulder beetles, they're quite worthy foes already. This implementation uses the monster tracking info use by thorn hunters, specifically tracking what our next viable move is. It would be ideal to have better fidelity about this move information, since it doesn't necessarily contain the move a monster would end up choosing. A later codepath ends up trying a backup move location if current choice proves unviable, but we don't have access to this data. -------------------------------------------------------------------------------- 978f32097b | wheals | 2020-12-29 13:03:34 +0200 Clarify AF_CONFUSE's confusing flavour AF_CONFUSE, when combined with AT_SPORE, represents a cloud of confusing spores that cause confusion when breathed in. Otherwise, it is simply a magical effect that causes confusion. Fixes #1385 -------------------------------------------------------------------------------- dd5fdbaec6 | wheals | 2020-12-29 12:58:38 +0200 Remove a confusingly redundant function. -------------------------------------------------------------------------------- 814068fe0c | wheals | 2020-12-29 12:27:21 +0200 Add some periods. -------------------------------------------------------------------------------- 4083c211ab | advil | 2020-12-28 14:38:29 -0500 Mark an ossuary entrance as transparent Resolves #1639 -------------------------------------------------------------------------------- 6fff606423 | advil | 2020-12-28 14:13:37 -0500 Transparency fixes for a kennysheep vault (12426) It lacks an @, so when marked as opaque could generate with the single door not connected. -------------------------------------------------------------------------------- 3ff7017067 | paul | 2020-12-28 20:27:40 +0200 Add a flashy Wu Jian overflow altar vault This vault is a nod to a classic 70's Kung Fu flick called Five Deadly Venoms. The titular characters of the movie have nicknames and martial arts styles that are reasonably well-represented by existing monsters and tiles in DCSS and thought Wu Jian deserves a fancy Lua'd up altar like some other deities! [ Committer's note: Closes #1660. Set overflow depth appropriately. ] -------------------------------------------------------------------------------- 4dcb31f9f6 | advil | 2020-12-28 13:12:40 -0500 Re-conditionalize quiver redraw (wheals) I'm not sure why this `if` got removed, but it might have just been an accident during testing. -------------------------------------------------------------------------------- b0746d5dc1 | advil | 2020-12-28 13:01:16 -0500 Fix macro menu handling of unprintable keycodes This is an attempt at some minimal fixes for this menu; anything more ambitious will need to happen not during a feature freeze. Keycode munging under the hood is a complete mess; this commit tries to work around what's there with only minimal changes, rather than rewriting everything. Main changes: * Print readable names of many unprintable keycodes as menu hotkeys and in macro editing. * Fix an issue where some ancient numpad handling code would interfere with ncurses handling of F1-F4. This has been wrong for a very long time and was hard to address without knock-on effects; for now webtiles still uses the wrong keycodes (which mistakenly got reified in key-conversion.js) and they are translated internally. There's also fixup code which translates wrong keycodes in a macro file into the correct ones. * Add a macro editing mode where you can enter a keycode by number, as a last resort for console keycode editing. (This menu should be changed to let arrow keys select an item as a better alternative to this.) This is triggered by hitting \ at the entry prompt (so to set a macro for `\` you now need to do this at the menu or by keycode). * More consistently print keycodes along with whatever printable symbol there might be for a keycode. * Add a bunch of comments documenting weirdnesses in this underlying code. Some remaining flaws: no handling for alt in SDL. Keycodes for many keys are inconsistent across build targets and should possibly be normalized. For weird keycodes, SDL sometimes prints surprising character names. The windows code here is a shot in the dark (but I will test before release). The macro menu followup UI is now even more complicated. -------------------------------------------------------------------------------- da768c6ff3 | amcnicky | 2020-12-28 19:50:47 +0200 New mini vaults Vaults in this collection: amcnicky_mini_pool_small A decorative minivault containing a small randomised pool amcnicky_mini_rare_corridor_liquid A rare vault which allows the dungeon generator to, on occasion, produce a corridor surrounded on either side by liquid, perhaps to be read as either a bridge over liquid below, or as a passageway between the liquid's depths. amcnicky_mini_corridor_feature A decorative minivault containing a feature lined corridor amcnicky_mini_pool_medium A slightly larger version of pool_small that can generate monsters, and also appear ruined when generated within Depths. [ Committer's note: Closes #1544. Tweaked and trimmed, dropped the beach vault submitted with this patch, adjusted depths and weights. ] -------------------------------------------------------------------------------- 2f95e4c8fc | amcnicky | 2020-12-28 19:50:47 +0200 New simple and small arrival vaults Vaults in this collection: amcnicky_arrival_double_pillar A medium sized arrival vault featuring two highly randomised pillars and a selection of entrance/exit possibilities amcnicky_arrival_single_pillar As above, but on a smaller scale amcnicky_arrival_feature_with_door A double-entrance arrival vault with the potential for many different hints of flavour in the feature tile amcnicky_arrival_flooded_fountain The player enters the dungeon through an entry room containing a number of fountains. The downstairs of an abandonned bath house? A door in the back of an ancient fountain temple? One of the fountains is broken, and the player sees a corresponding pool of water amcnicky_arrival_choice A vault intended to off the chance for an interesting tactical choice. Should the player be chased back into this room by an early enemy, there are no pillars to dance around. Instead, the player must either stand and fight, or take a risk with the shaft to escape. amcnicky_arrival_underground_garden A more decorative vault, the player enters the dungeon by passing through an underground garden. Was the dungeon entrance hidden within a forbidden forest? amcnicky_arrival_blooded_trapdoor The player is presented with a randomised pillar, two possible connections to the dungeon, and large smears of blood surrounding a solitary trapdoor. What became of the last player who tried to use that trapdoor? amcnicky_gap_in_the_tavern_cellar The player enters the dungeon via a secret room behind one of the water features in an unspecified room. The vault tiles make this connection through to the dungeon of zot appear almost intentional? amcnicky_arrival_wind_blow Which entrance to choose to the great dungeon of Zot? Which way does the wind blow? amcnicky_arrival_abandoned_market The player enters the dungeon of zot through a mysterious back alleyway amongst an abandonned marketplace. [ Committer's note: Closes #1542. Small tweaks to shrink some sizes, get the "story" of the vault in view on spawn, tactical checks, redundant doors. ] -------------------------------------------------------------------------------- 58195e7017 | amcnicky | 2020-12-28 19:50:47 +0200 Two new altar vaults The vaults added are as follows: amcnicky_altar_gilded A simple altar layout with (the potential for) a nice monetary surprise. amcnicky_altar_lugonu_corruption Lugonu has entered the dungeon! This vault iterates on the initial submission idea of 'dungeon corruption' which could generate in many branches and represents the fist of Lugonu smashing into the terrain. Current monster spawns use Lurking Horrors to bring their fairly novel tactical implications beyond just the abyss. [ Committer's note: Closes #1538. inner_sanctum not taken as altar vaults are meant to place altars. It might be ok as a float/mini monsters type vault since the altar is more decorative. Tweaked lugonu_corruption to tone down the number of lurking horrors, have more variability in its 'corruption', and be approachable and connected from all sides. ] -------------------------------------------------------------------------------- d68fa41eda | wheals | 2020-12-28 13:14:11 +0200 Defer redrawing the wield display if travel_delay = -1 (#1626) Rather than cancelling the redraws entirely. Does the same thing with the other displays as well, in case similar bugs happen in the future. Fixes #1626 -------------------------------------------------------------------------------- d8756d56bc | Aliscans | 2020-12-28 13:04:26 +0200 Forbid DEBUG_TRAVEL without DEBUG_DIAGNOSTICS Put a "#ifdef DEBUG_DIAGNOSTICS" statement around the #define for DEBUG_TRAVEL, as this only does anything useful when DEBUG_DIAGNOSTICS is set. [ Committer's note: Split up code-review revisions and squashed them into the relevant commits. Made a few small tweaks also. Closes #1608 ] -------------------------------------------------------------------------------- fec9e0e4c5 | Aliscans | 2020-12-28 13:04:26 +0200 Don't set greedy_place for items in hostile areas As things stood, if autopickup was off and there was an unexplored space behind a runed door, _explore_find_target_square() called pathfind() once to no avail, called it a second time with try_fallback set, and made that the target. If autopickup was on, it called pathfind() once, cleared it (because it had a negative travel_point_distance[] value), and printed a "Partly explored" message. This patch prevents greedy_place from being set if travel_point_distance[x][y] is negative, so the square containing the item can become the target. -------------------------------------------------------------------------------- e99fe26798 | Aliscans | 2020-12-28 13:04:26 +0200 Expand the behavior of travel_open_doors Add a value for the travel_open_doors option which means that autoexplore & travel plan routes which don't go through closed doors where possible (in the same way it always does for runed doors). The "actually stop travelling" code has moved from movement.cc to travel.cc. travel-open-doors-type.h lists the values, with "true" and "false" mapped to more descriptive words for the previous behaavior. A new template MultipleChoiceGameOption is implemented to support this behavior, old multiple choice options should consider being ported to it. -------------------------------------------------------------------------------- 8d272cd76c | wheals | 2020-12-28 12:20:23 +0200 Fix a stray text cursor showing up on local tiles The root cause of most of these problems is using the same construct both for text prompts and for highlighting squares on the map. Untangling the uses, however, is not simple. -------------------------------------------------------------------------------- 224bf8e84e | wheals | 2020-12-28 12:20:23 +0200 Unify the two cursors on local tiles X somewhat. Clicking on a place on the map will move the map cursor to there. Clicking on the map cursor will travel to there. It would be nice to unify them entirely, but the problem is that X automatically centers the map around the map cursor, so moving the mouse will shake around the view erratically. -------------------------------------------------------------------------------- e2a0e31ab3 | Nicholas Feinberg | 2020-12-27 16:51:13 -0800 Show LRD damage -------------------------------------------------------------------------------- d4ea5fece3 | Nicholas Feinberg | 2020-12-27 16:42:15 -0800 Hackily fix Zot status description (vt) Don't claim Zot is about to consume you when it's 15k turns away. -------------------------------------------------------------------------------- 2022570bc9 | nikheizen | 2020-12-27 18:05:51 -0600 Slightly increase density of winding_woodlands Increase the density of 5x5 rooms from averaging slightly less than one 0 per room, to 1.5. Increase the density of 5x15 rooms from averaging two 0 per room to three. winding_woodlands vaults would often spawn with very few monsters in the connector rooms, and most of the threat would be spilling out from the center subvaults. This makes them a little denser, while still allowing the possibility of empty connector rooms occasionally. -------------------------------------------------------------------------------- d90998e373 | nikheizen | 2020-12-27 18:05:51 -0600 Fix a couple subvault errors The 5x15_jagged subvault was 5x14, and thus could create some vaults where part of the vault was only accessible by stairs, if the whole vault wouldn't be vetoed. The 15x15_boxy_spiral subvault had one of its exits misaligned by 1, causing it to have buggy placement occasionally. -------------------------------------------------------------------------------- c6dd0926df | gammafunk | 2020-12-27 16:53:23 -0600 Reimagine Eringya's Noxious Bog (hellmonk,ebering) The combined damage and movement/combat debuff of the bog is interesting, but the spell's current approach of applying it in the caster's wake makes the spell ineffective and somewhat difficult to use. The additional turns spent moving to set up the effect incurs another cost for a spell that's already damage over time. Obviously we could increase the strength of the effect, but an alternative was proposed by hellmonk: have the spell affect many cells, but only those not adjacent to solid features. Being next to a lot of walls is generally helpful for the player, so this requirement adds a different kind of cost, which is that the player has to be near comparatively open areas. This is positional, giving the spell a natural power scaling based on how open the player's position is, and doesn't require kiting-like movement. This commit changes the spell to transform all areas into bog that are within a range of 4 and not adjacent to solid features, also excluding the player's position. The transformation happens instantly and reverts when the duration expires, with recasting not allowed until then. The requirement that the feature have a solid floor remains (e.g. no deep water or lava, but shallow water is fine). Additionally, only cells visible via not-translocation-blocking LOS can be transformed, and likewise we require that any transformed cell have all its adjacent cells be visible. The second requirement is to prevent an information leak by either using the targeter or casting the spell, either of which would be a tedious exploit. The duration is unchanged from before, as it seems reasonable for a damage-over-time spell like this, but both this and the range of effect of four will be reevaluated after more play-testing. If we want to incorporate spell-power more, we one possible change is to increase the range with spell-power, starting from a lower range at low power. We have to strike a balance between the high level of the spell and its need to be sufficiently strong and the fact that it can affect so many more cells as we increase the range. The spell has a static targeter showing potentially affected cells. I've updated the casting noise from 2 to 6, which I assume was unintentional, since we generally always have this noise value be the spell level. The spell description is also updated. I've moved the spell from spl-selfench.cc to spl-damage.cc, since this spell is really a damage spell at its core, is similar to spells like Frozen Ramparts or Summon Forest that not in spl-selfench.cc. -------------------------------------------------------------------------------- 055914a7a2 | wheals | 2020-12-27 21:16:43 +0200 Make X on local tiles slightly more useful Make the cursor automatically move around with your mouse. Also, show descriptions of features that are outside LOS_RADIUS but in your map knowledge. -------------------------------------------------------------------------------- 98a0ced166 | wheals | 2020-12-27 21:16:43 +0200 Restore the cursor on offline windows tiles targeting (#12424) -------------------------------------------------------------------------------- 95e395e029 | Nicholas Feinberg | 2020-12-26 07:59:20 -0800 Don't blink after death (nee) God bless Felids. -------------------------------------------------------------------------------- 447262cd64 | gammafunk | 2020-12-26 09:33:48 -0600 Fix a typo (Renan) -------------------------------------------------------------------------------- 197f7f9d65 | Neil Moore | 2020-12-26 09:15:08 -0500 Fix no longer fix grammar (realallion) -------------------------------------------------------------------------------- d376ed14c5 | advil | 2020-12-24 16:26:56 -0500 Add a bit more control to fire_order This is a bit of a filler commit; I think fire_order needs to be restructured in a more general way, but for now at least provide some coarse control over the order of action types when cycling the quiver. This commit also lets players remove an entire type from the cycle order (which has been particularly requested for abilities). Because game start autoquivering uses `cycle()`, this commit also affects that, so for the people who find it objectionable that Berserk autoquivers on a Be start, this gives them a way to prevent that. Eventually I think this would be *much* better as an in-game interface along the lines of spellbook hide/show. -------------------------------------------------------------------------------- 510840ca0f | Nicholas Feinberg | 2020-12-24 10:02:05 -0800 Make Irradiate check AC and bump damage Not checking AC was an oversight in the initial implementation that slowly transmuted into a feature. Well, let's transmute it back. I've made the damage a bit higher to compensate. Per a suggestion from hellmonk, I've also reduced the number of dice that are rolled, which reduces the predictability of the spell a bit. -------------------------------------------------------------------------------- 5ef3bed4d9 | advil | 2020-12-24 12:45:34 -0500 Add an action inventory selector for Q* Now, only the the non-tossing actions are shown on Q*, with an extra * to toggle the full inventory. This commit also: * handles a bunch of corner cases with few or no actions better, especially for felids * adds % as a secondary shortcut for items. This is because macroing Q* can lead to weird cases when there are no quiverable items, because * doubles ctrl; in the worst case if you macro Q to Q* and press QQ you get a quit prompt. -------------------------------------------------------------------------------- ab5e8f747a | advil | 2020-12-24 11:29:29 -0500 More eating remove -------------------------------------------------------------------------------- 1209ec82b9 | nikheizen | 2020-12-24 00:31:24 -0600 Don't guarantee nzn_prometheus_bound The map was a PLACE: instead of a DEPTH:, fix this, and move the vault to shoals.des, since it only appears there anyhow. -------------------------------------------------------------------------------- 060ceda6a5 | wheals | 2020-12-23 17:49:54 +0200 Unify movement checks for barbs/ice spells Incidentally fixes #1647 by putting them in the same code path as checks for traps/dangerous terrain/etc. -------------------------------------------------------------------------------- ad6db7abb9 | wheals | 2020-12-23 16:59:29 +0200 Give centaur enemies their bardings back (#12420) Now that barding is adaptable enough for two species, why not three? -------------------------------------------------------------------------------- 32fcee6e61 | wheals | 2020-12-23 16:53:53 +0200 Fix Zin wrath Accidentally broken when the hunger effect was removed. The situation remains where you get slightly less bad wrath by having only bad mutations. This seems like its own punishment. Fixes #1643 -------------------------------------------------------------------------------- 09726b21b3 | wheals | 2020-12-23 16:39:38 +0200 Show correct cast messages when a spell is redirected against the caster The second clause didn't seem to be doing anything, and I tested a bunch of different monsters and didn't notice issues. Still, it's worth keeping an eye out to make sure this doesn't cause other monspeak issues. Fixes #1652 -------------------------------------------------------------------------------- 792193eb12 | wheals | 2020-12-23 16:11:11 +0200 Grammatrise a Frozen Ramparts message Fixes #1635 -------------------------------------------------------------------------------- 895fbd4b88 | Nikolai Lavsky | 2020-12-23 16:07:02 +0200 Display threat levels on the /polymorph targeter As a followup to 6ee96136, this commit colourizes the names of monsters on the /polymorph targeter to show their potential threat level. This gives the player a quick way to see if polymorphing a monster is a good idea. -------------------------------------------------------------------------------- ae853a1889 | wheals | 2020-12-23 15:46:08 +0200 Even more food removal (#1654) Featuring bonus rod removal and carrying corpses removal! Fixes #1654 -------------------------------------------------------------------------------- 311257cc98 | wheals | 2020-12-23 15:39:20 +0200 Checkwhite -------------------------------------------------------------------------------- 1cd98bb67f | wheals | 2020-12-23 15:39:20 +0200 Put the cursor back in the X menu on Windows (#1536) See the comments on the PR. As aidanh mentions, cursor_control is a blunt force instrument that needs to be manually turned on and off here, but my naive attempts to enable the cursor only when the map cursor is being drawn didn't work -- it seems that it gets redrawn at odd moments, and that ends up wiping the cursor away. I didn't bother to make use_fake_cursor work here, because it already was broken for the direction chooser anyway. If we ever hear about someone using it on Windows, we can fix it, but it seems like it only fixes a Unix-specific problem. I'd wait for a more thorough fix, but this is a game-breaking bug on Windows console and we have a release coming up. Fixes #1536 This also incidentally fixes a related problem where the cursor appeared when opening up sub-menus from the direction chooser. -------------------------------------------------------------------------------- f5cede1358 | wheals | 2020-12-23 15:39:20 +0200 Fix a warning when compiling for Windows -------------------------------------------------------------------------------- b26aebe080 | Nikolai Lavsky | 2020-12-23 14:05:50 +0200 Update Drain status description After 4cbea82f, Drain temporarily reduces max HP instead of skills. -------------------------------------------------------------------------------- d3bf34ba6f | Quipyowert2 | 2020-12-23 11:00:08 +0200 Pass some parameters by reference According to Cppcheck, this is "usually faster" than passing by value and "recommended in C++." -------------------------------------------------------------------------------- 1a551d6a14 | advil | 2020-12-22 19:05:21 -0500 lint -------------------------------------------------------------------------------- bed68805ea | advil | 2020-12-22 18:45:59 -0500 Refactor quiver redraw state This fixes some bugs where the launcher quiver wasn't getting properly redrawn, but also provides some abstraction over the raw booleans stored on `you`. -------------------------------------------------------------------------------- 4a6b093f05 | advil | 2020-12-22 18:45:59 -0500 Add a basic menu to macro/keybind editing Especially for online play, it's extremely annoying that there's no way to view current macro/keymap mappings without going key by key. This commit solves that by putting a real submenu behind the `~` options, letting you see all current macros/keybinds (of the same type) at once. It also does some light refactoring of how some of the options are chosen, and will involve an extra keypress for new macros (or more for keys that are used in the menu ui). This menu is very much at the minimal viable ui state: I didn't widgetify anything except the key/macro selection part, and there's a *lot* more one could do with this to give it a real ui. However, for now it's a net improvement. -------------------------------------------------------------------------------- 0398aca569 | gammafunk | 2020-12-22 11:23:57 -0600 Some fixes and cleanups for winding_woodlands Fix the glyphing for nzn_winding_woodlands_large and nzn_winding_woodlands_stair_trap, which had some incorrect subvault glyphs that would never let the maps successfully place. Empty the default-depth before the subvaults are defined so they won't inherit the prior default depth used by the parent vaults. Parent vaults that tried to place in Swamp weren't able to find viable subvaults, since the default depth doesn't include the Swamp branch. Having an empty depth will allow the subvaults to place anywhere the parent map requires, and the parent map will still be subject to the restrictions of the previous default depth at the beginning of the file. Finally, clean up some NSUBST and SUBST syntax. Closes #1610. -------------------------------------------------------------------------------- 0da4609bc0 | gammafunk | 2020-12-22 11:22:51 -0600 Some minivault adjustments For nzn_sisyphean_effort and nzn_prometheus_bound, have the placed corpse on a delayed decay instead of never decaying. For the Prometheus vault, place a Book of Fire instead of a Book of Flames, since the former is a more appropriate reward in Shoals and just as thematically appropriate. For nzn_life_drinkers, simply clean up some SUBST. This vault could place as an overflow altar with low weight for D:8-9. In Vaults, ideally it would be tagged as a vaults room so that it could place successfully more often. It works fine as a standalone altar vault altar and can successfully place in Vaults per wizmode tests, so I can save both potential changes for some time before the 0.26 release. -------------------------------------------------------------------------------- 7ffe4a26f1 | gammafunk | 2020-12-22 11:18:06 -0600 Some adjustments to new overflow altars For nzn_hepliaklqana_mist_gate and nzn_wu_jian_contemplation some minor simplifications and spacing cleanups. For nzn_makhleb_speed_demon, replace the executioner with a sixfirhy, since an executioner is basically worse than any possible 8 spawn for D:7-D:11. A sixfirhy is quite fast and dangerous for these same depths, but not so much that no character would reasonably open the vault to get to the Makhleb altar. For nzn_overflow_gifts_of_might_and_magic, revamp the Trog-themed weapon to add enchant at the earliest depth and have Trog-themed brands (so vorpal, flaming, or antimagic) but no enchant at subsequent depths. This way the Trog item offering isn't so meagre compared to the Sif item, which gifts a small number of low-level spells. -------------------------------------------------------------------------------- 03f78f3749 | gammafunk | 2020-12-22 11:18:06 -0600 Some changes to the new Swamp end vault For nzn_swamp_witches_coven, add deep elf mages to the "wizard" set and reduce the weighting for spriggan druids, giving their previously double weight to the mages and to the wizards that previously had half weight. Druids have a somewhat harder time in this vault since there are so few trees, so it's best to not place so many of them. For the inner areas that randomly get shallow water, land, or monsters, increase the amount of land by 50% and decrease the amount of water. This vault previously placed an awful lot of water without very much land. Some tests with the new weight shows that there is still mostly water with relatively few tiles safe from trees, but it's not going to be quite so hard to find an area to fight inside the vault. Otherwise the incentive is to clear nearly all of the vault from outside. Also, make the inner pentagram walls use special dark stone wall tiles that more strongly suggest a demonic theme, using magenta for these walls in console. This is purely a cosmetic change with no affect on gameplay. Finally, make the central granite statue always use a demonic-themed tile. -------------------------------------------------------------------------------- 0369a3af90 | gammafunk | 2020-12-22 11:18:06 -0600 Some Swamp vault fixes and cleanups Make vault statements in a number of vaults have aligned spacing, and remove no_item_gen where not necessary. Although placing additional level monsters in a vault can make it harder and dilute its theme in some cases, no_item_gen doesn't generally affect these aspects. It's better to allow level item generation to be natural when possible and have fewer spoilers. For nzn_swamp_weyward_sisters, expand its placement from Swamp:3- to Swamp:2 and give it normal weight. Although a few fenstrider witches is scary, these monsters place with decent weight from Swamp:1 as it is. Put the peaceful human behind a runed door, since otherwise it will open the door and probably die while attacking one of the witches. Make the placed corpses and skeletons all have a delayed decay like we usually do for these vault corpses. Finally make some slight syntax cleanups. For nzn_swamp_blast_mining, reglyph to use no predefined glyphs and simplify the monster placement logic. The previous logic was more complicated didn't quite agree with the stated averages in the comments. Use two NSUBST to simplify the logic instead of a SHUFFLE and two SUBST. For nzn_swamp_dancing_lights, remove the down-weighting, as this is not a particularly nasty vault, and simplify syntax. -------------------------------------------------------------------------------- 52eb5f666a | gammafunk | 2020-12-22 11:17:59 -0600 Some cleanups to a ghost vault For nzn_ghosts_randoct, rename it to nzn_ghost_randoct for consistency with our other vaults and reglyph it to not use any predefined glyphs. Simplify some shuffles into substs, then combine related statements into one line. -------------------------------------------------------------------------------- 645eec8e50 | nikheizen | 2020-12-22 11:09:47 -0600 Add one (1) ghost vault Per request of gammafunk, a nasty ghost/transporter vault which becomes nastier and deeper depending on branch/depth. -------------------------------------------------------------------------------- 23317d3c2e | nikheizen | 2020-12-22 11:09:47 -0600 Adjust the weight of a couple nzn vaults speed_demon should be vanishingly rare since most folks won't be opening it. the swamp exclusive winding_woodlands center vault has been made twice as likely to accomodate for how rarely a valid vault for it to be selected in will even place. -------------------------------------------------------------------------------- 11aabd67dd | nikheizen | 2020-12-22 11:09:47 -0600 Add 4 swamp vaults and one new swamp endvault weyward_sisters: A trio of witches. One captures the men, one cooks them, and one gives their bones so that the mushrooms may grow. stair_ambush: Does what it says on the tin. blast_mining: Bloated husks have some practical applications. dancing_lights: A trio of will-o-the-wisps with accompanying fog machines for that spooky swamp feeling. All of these aside stair_ambush are weighted 5 either because they are gimmicky (blast_mining) or are quite deadly. witches_coven: A standard coven (or baker's dozen) of witches, congregating around the decaying rune and summoning demons in an inverted pentagram-shaped facility. -------------------------------------------------------------------------------- 3f1a12a7b5 | nikheizen | 2020-12-22 11:09:47 -0600 Winding Woodlands: forest-themed subvault maps Winding Woodlands are a set of maps which heavily utilize subvaults and have a woodland/forest theme (when the subvaults aren't simple geometric shapes). As of this commit there are 8 maps with 41 subvaults for said maps to draw from. -------------------------------------------------------------------------------- 5f9ebbf6ab | nikheizen | 2020-12-22 11:09:47 -0600 Add two vaults based off of Greek Myth (Silurio) The two myths referenced are Prometheus Bound and Sisyphus. Even if the intention of the flavour misses, these still have enough "anonymous" flavour to be somewhat interesting. -------------------------------------------------------------------------------- d5a4c4202e | nikheizen | 2020-12-22 11:09:47 -0600 Add 7 altar vaults - hepliaklqana_mist_gate: simple thematic hep vault where the player must peer into the past - makhleb_speed_demon: only the quickest warriors deserve makhleb's favour. bit of a meta reference to speedrunning the game. idea stolen from hellmonk - wu_jian_council_hall: simple wjc vault where the likeness of the council members look down upon their altar - wu_jian_contemplation: an idyllic shrine whose maintainer is now absent - overflow_gifts_of_might_and_magic: dual trog/sif overflow lightly themed on their shared attribute of gifting - overflow_masters_of_martial_movement: dual WJC/uskayaw mini. prove your worthiness by dancing around this boulder beetle - life_drinkers: vampiric philosophers have long pondered on makhleb and the shining ones penchant for healing devout worshippers when they kill -------------------------------------------------------------------------------- 1e22815bdb | gammafunk | 2020-12-22 11:09:47 -0600 Make a lua vault function more widely available Move random_item_def() to dungeon.lua, so it can be used by vaults other than ghost vaults. A subsequent commit will use this function for an overflow altar vault. -------------------------------------------------------------------------------- 660b328956 | gammafunk | 2020-12-22 11:09:37 -0600 Don't let Gauntlet room monsters pickup loot (Yermak) Now that all monsters generate awake in Gauntlet, certain intelligent monsters might pick up the loot they find before the player first sees it. This was also possible before they generated awake, for example if noise from combat woke up monsters in other rooms, but now it's especially common. In any case, it was always intentional that players would get full information about the loot in rooms for decision-making purposes and that they'd get access to those rewards without e.g. monsters using consumables. This commit marks all room loot as no_pickup. The minotaur's loot pile does not have this tag, so this monster still has its access to some choice gear. It would be ideal if no_pickup could be set vault-wide for items and possibly also using KMASK. For now, I've modified all item statement to programmatically add "no_pickup" in a way that should be pretty resistant to breakage. I had to redefine * and | as "star_item no_pickup" and "superb_item no_pickup" using KITEM, and have likewise done this for the % and $ glyphs, even those are not currently used. -------------------------------------------------------------------------------- 3780a7a11b | advil | 2020-12-21 21:45:05 -0500 Remove an island from due_jungle_book (12364) This island is kind of pointless as far as I can tell, because the anaconda can travel through water. Is it possible that this vault precedes b98e291e80b1? -------------------------------------------------------------------------------- 0dbc5c1aff | advil | 2020-12-21 20:39:43 -0500 Don't feel safe on hexers trapped in grates (12371, #1651) If a monster had only non-damaging ranged spells and was trapped in grates (or water, etc), this code would register that the monster could not hurt the player. This is narrowly true, but because this function is used for i_feel_safe, the monster would not count as a threat for the player under various broader conditions, notably, autotravel. The specific buggy case that has come up in several reports is draining eyes, which don't damage the player but do of course drain mp; in other circumstances they register as dangerous by having a foe path to the player. In 0.25, `explore_auto_rest` became default true, and so if the player autotraveled into los of a trapped draining eye, they would enter a perpetual rest + drain cycle because i_feel_safe returned true, running up the clock until they interrupted it. This is even worse for players who have a force_more on the drain message (e.g. ones using HDA's rc as in #1651) because it is hard to interrupt the loop. It's also compounded by the lack of hunger: in 12371 the player got out of the autoexplore loop when they became hungry, which can't happen any more. The change is to construe "hurt" for this function's purposes more broadly, to include any dangerous ranged spells regardless of whether they are attacks; it's used only for autoexplore and as a minor check on tension. It's possible this will stop autoexplore incorrectly in some cases I haven't thought of, but it can be fine-tuned from here. Resolves #1651 -------------------------------------------------------------------------------- f5f8a83f67 | advil | 2020-12-21 14:46:09 -0500 Change the quiver verb for tremorstones "Throw" was more consistent with a previous version of tremorstones' flavor, and also confusing together with actual throwing. -------------------------------------------------------------------------------- 0927c67384 | advil | 2020-12-21 14:46:09 -0500 Allow quivering evokables from inventory -------------------------------------------------------------------------------- d6649fcddf | advil | 2020-12-21 14:46:09 -0500 Fix some ammo_to_action logic (12414) -------------------------------------------------------------------------------- fb7421ae72 | wheals | 2020-12-21 21:16:06 +0200 Avoid a crash when using OTR and worshipping Beogh -------------------------------------------------------------------------------- 244d27527d | advil | 2020-12-21 13:31:14 -0500 Remove some broken local tiles clicking stuff This has been broken in an unusable way since c3daa31c0c (about two years) because of the incorrect use of testbits, and even fixing that these features are still pretty unusable in my testing. They are also now somewhat redundant with the quiver features. I think something like the previous behavior of ctrl-click and alt-click could be a good thing to have, but it needs to be rewritten (perhaps using the actions api) and restructured to be less redundant. One idea in the long run might be to have these extra click combos access more quivers, or quivers that are spell and evocable specific (similar to the launcher quiver). Given how broken this has been, I'm just removing for now, the main place to notice a difference will be that ctrl-click on the player will now not lead to broken/confusing behavior with targeted spells. There's shift-click to cast/evoke from the new quiver, and also still a click-to-cast interface in the sidebar for local tiles. -------------------------------------------------------------------------------- 5068850a46 | advil | 2020-12-21 13:20:18 -0500 Fix a bunch of local tiles clicking stuff We got a report that e42c0a684a0 broke click-to-throw. I'm still not sure what this report was about, but on looking into this, I found any number of things broken about clicking-related stuff. Some of this is related to quivers, some is older. This commit fixes at least the following bugs: * The tooltip info was a mess and often wrong * Some of the conditions for whether to report "Travel" tooltips were out of sync with the travel code * open door tooltips were being calculated wrong * quivers were being triggered, but by passing key commands to the fire interface, rather tha by setting a target directly * On shift-click to cast with too low mana, a bunch of key errors were printed * primary attacks with launchers weren't handled correctly, and only triggered movement -------------------------------------------------------------------------------- 7d2dc893a1 | advil | 2020-12-20 19:49:18 -0500 Do basic deduplication when rendering tile overlays This is very minimal: it just prevents stacking completely adjacent identical overlays. This is intended to handle cases with large numbers of bennus (e.g. in a zig) where many, many explosions can get stacked on top of each other; in these cases, the number of overlays was easily reaching the cap (20) which causes a crash. Since layering these overlays does nothing, simply prevent it. If this system is ever used to layer overlays with alpha values, this may have unexpected effects, but to my knowledge it isn't. -------------------------------------------------------------------------------- ef23d1325b | gammafunk | 2020-12-20 13:51:32 -0600 Incredibly, another food removal cleanup Need a TAG_MAJORed removal of the food glyph for the other character set. -------------------------------------------------------------------------------- 35d1ec1c0b | gammafunk | 2020-12-20 12:36:32 -0600 More food removal cleanups The previous commits missed food items in header files needing removal or TAG_MAJOR. Comments related to chunks cleaned up to avoid implying that the chunk item still exists, however leave in terminology using "chunks" for calculations based on monster size for purposes of blood and gozag gold splatter. I've updated MSVC, Xcode, and Android project files to remove references to food-related source files that no longer exist. Hopefully these have been done correctly, but that will need confirmation from people who use these files. -------------------------------------------------------------------------------- b172a1b426 | gammafunk | 2020-12-20 07:44:43 -0600 Add a TAG_MAJOR for a food-related enum value -------------------------------------------------------------------------------- 8e97bb7ff4 | gammafunk | 2020-12-20 07:02:48 -0600 Make a function static -------------------------------------------------------------------------------- bb79e0bfc8 | gammafunk | 2020-12-20 06:53:18 -0600 Some cleanup related to food removal Remove food as a choice for the &o command, update comments to remove references to food, and add TAG_MAJOR to various bits of food code. -------------------------------------------------------------------------------- e73896bf99 | randomMesh | 2020-12-20 03:52:37 -0800 Fix link to quickstart.md -------------------------------------------------------------------------------- e9770dfcb6 | Nicholas Feinberg | 2020-12-18 21:46:06 -0800 Show wand damage in item descriptions -------------------------------------------------------------------------------- 5f66e2dd50 | advil | 2020-12-18 13:37:49 -0500 Skip `cancel_ice_move` prompt with no monsters in los This simplifies one case where this prompt is a bit annoying; I guess these prompts could alternatively be made configurable. -------------------------------------------------------------------------------- 3ccbe7bdff | Nicholas Feinberg | 2020-12-18 09:51:50 -0800 Fix Chei's Zot slowing (Ge0ff) -------------------------------------------------------------------------------- c5df7fbe6a | Edgar A. Bering IV | 2020-12-17 11:31:41 +0200 Revise the sword of Power (kate-) The variable plus of the old SoP encouraged swapping at low health, and while getting a giant plus (+27!) could be fun with berserk or Ely, the lack of a brand and declining plus at lower health made it not that attractive. Instead, the sword becomes a fixed plus +5 vorpal greatsword that fires a "sword beam" reminiscient of the old bolt of inaccuracy on a chance depending on the wielder's current health. While this still falls off at low HP, ones HP must be very low indeed for this to become a bad weapon. The numbers could probably use some further tweaking. -------------------------------------------------------------------------------- ff409d549a | Edgar A. Bering IV | 2020-12-17 11:31:41 +0200 Tweak some use of second person -------------------------------------------------------------------------------- 3270b6ecf3 | Edgar A. Bering IV | 2020-12-17 11:31:41 +0200 End the glaive of the Guard's specter on unwield -------------------------------------------------------------------------------- 3318b609a0 | Goratrix | 2020-12-17 07:19:20 +0200 Small corrections in the manual Replace Centaurs with Palentongas in size description, change WL to Will, remove note about ghosts not using stairs, clarify traps, add max hp to monster description. -------------------------------------------------------------------------------- 8117e51712 | advil | 2020-12-16 22:08:42 -0500 Improve a corner case for `F` When `F` is pressed with no throwables, the game opens the full inventory. This seems (maybe) sensible, but it doesn't really cue that it's done anything out of the ordinary, so this commit removes the special case from invent.cc and changes the menu prompt to try to indicate this. -------------------------------------------------------------------------------- e42c0a684a | advil | 2020-12-16 22:08:42 -0500 Separate launcher from throwing actions The main reason for this is so to differentiate throwing stones from launching stones, leading to better behavior on switching between a sling and melee weapon. It has the slightly odd result that you can quiver stones for throwing while wielding a launcher, which used to be impsosible, but this seems mostly harmless? This commit also removes the ranged side of auto_switch. As far as I can tell, this only ever worked when the quiver was empty, making it almost entirely useless even before the quiver improvements to launching. Now, there's always a way to fire a wielded launcher regardless of quiver state. If someone can tell me there's a use case I am missing I can try to restore it. This option still works as before for melee weapons. -------------------------------------------------------------------------------- 46f0d4f399 | Nicholas Feinberg | 2020-12-16 17:32:09 -0800 Tweak a Ru message again (Dug) Probably someone else will come by in a moment and change this again. -------------------------------------------------------------------------------- 92de7bf30a | Nicholas Feinberg | 2020-12-16 17:21:27 -0800 Remove Ru's will (gressup) Rephrase a Ru message to avoid confusion with the Will stat. Missed this one in ebc406137e . -------------------------------------------------------------------------------- e913e73dd2 | Nicholas Feinberg | 2020-12-16 16:57:50 -0800 Add power_perc to lua table (advil) -------------------------------------------------------------------------------- a1b6d6fda9 | advil | 2020-12-16 17:29:20 -0500 Handle lack of quiverable actions better Don't let submenus work if they would be empty, and in the extreme limiting case, don't let the main Q menu work either. -------------------------------------------------------------------------------- b8f0b9b9d7 | advil | 2020-12-16 17:29:20 -0500 Allow quivering usk abilities with low piety This is very special case-y, but otherwise the non-stomp ones might as well not be quiverable. Possibly most religious abilities should work like this? -------------------------------------------------------------------------------- 624b3b4e76 | Edgar A. Bering IV | 2020-12-16 22:55:23 +0200 Give the cloak of Starlight a dazzling effect (amcnicky) This is a different take on the submission in #1572 to make the cloak of Starlight more interesting than a cloak with a few artefact properties and a nice tile. This commit removes the resist stack, but keeps the stealth malus and EV. In exchange it now grants a passive "Dazzle" effect: on one out of 5 dodges it attempts to blind the attacker, using the same code path and roll as dazzling flash at power 100. This puts it in contrast to the other unrand cloaks which grant their passive effect on hit. Closes #1572 -------------------------------------------------------------------------------- f92616641d | sdynet | 2020-12-16 22:55:23 +0200 Add spectral to the glaive of the Guard and adjust There are already two dual-brand unrands, but spectral is a mechanically distinct enough brand that a spectral+brand weapon doesn't crowd the space too much. Additionally, it's a nice throwback to old spectral weapon which worked on just about everything. This commit also strips the extra properties (other than AC) from the Glaive and lowers its plus. [ Committer's note: Closes #1598. Revised the patch to do the dual-brand and re-wrote the commit message. ] -------------------------------------------------------------------------------- d46cc9e92b | advil | 2020-12-16 14:07:03 -0500 Refactor your_talents somewhat Previously, to check if the player had an ability, you needed to construct the entire talents list and see if the ability is there. This separates out code that checks whether a player has an ability from your_talents so that it can be directly called in a less overkill fashion. There's further refactoring along these lines that would be possible, for god abilities in particular. This commit also tweaks some flight logic in a way that hopefully doesn't break it, but it seemed to be subtly wrong before. -------------------------------------------------------------------------------- c8f2f48a6c | advil | 2020-12-16 14:07:03 -0500 Add a hint about `f` for untargeted direction choosers I think it's otherwise not entirely obvious that you trigger these in the same way as targeted direction choosers. (Especially unclear for abilities that don't have a targeter yet.) -------------------------------------------------------------------------------- 80e58933c0 | Nicholas Feinberg | 2020-12-16 09:45:53 -0800 Display Frozen Ramparts damage Since this doesn't check AC, I think the delay scaling doesn't matter much. The displayed number being low hopefully won't mislead people too much... -------------------------------------------------------------------------------- faeb9f6368 | Nicholas Feinberg | 2020-12-16 09:45:44 -0800 Remove an unused function -------------------------------------------------------------------------------- 1040278a39 | Nicholas Feinberg | 2020-12-16 09:21:05 -0800 Replace spellpower bars with %s Spellpower bars are notoriously complex and unintuitive. They follow a hand-calibrated, strongly nonlinear scale (0, 10, 15, 25...?), which isn't particularly helpful to players. Why should anyone expect that going from .... ..... to #### ###.. would have the same effect on a spell's, well, power as going from #### ###.. to #### #####? One big reason for the nonlinear scale is to allow players to see progress at low spellpower without blowing up to a huge number of bars at high power, but there's a much simpler way to represent that. Let's just show the % of max spellpower instead. -------------------------------------------------------------------------------- be8bfa9c7c | Nicholas Feinberg | 2020-12-16 09:21:05 -0800 Remove rotten meat Farewell, obsolete message channels! -------------------------------------------------------------------------------- e48705eb17 | Edgar A. Bering IV | 2020-12-16 11:38:44 +0200 Make frozen ramparts end on movement Frozen Ramparts' combination of damage over time and area of effect made it one of the most powerful single school L3 spells. On its own, this isn't necessarily a bad thing as it is not overpowered as a L3 spell. However, FR encourages motion, which is an anti-synergy with another low level Ice spell: Ozocubu's Armour. This tension combined with FR's high power-level and the average overall high power-level of Ice spells motivates changing FR to end on movement (the exact rules are the same as Ozocubu's armour: blinking and getting trampled don't end it). -------------------------------------------------------------------------------- 01e01ebfeb | Edgar A. Bering IV | 2020-12-16 11:22:37 +0200 Make shaft self consistent with '>' on a shaft Formicids could shaft themselves with the ability and not apply barbs or break Ozocubu's armour, even though the ability description states they should be equivalent. This commit also re-orders barbs application and ice armour breaking for any floor_transition that triggers them, so that messaging is consistent with the message order when moving. -------------------------------------------------------------------------------- b90401cf1a | Edgar A. Bering IV | 2020-12-16 10:48:22 +0200 Prompt before ending Ozocubu's Armour (gammafunk) From conversations with gammafunk and also other players and my own experience, my cancellation of Ozo's armour by movement is more often inadvertent than an intentional decision. Add some ui ergonomics for this. I didn't add an rc option for whether or not to prompt: we already have the answer prompt lua callback, and from that players who want the prompt auto-answered one way or the other (or in a context-sensitive way) can configure the behavior to their hearts delight. -------------------------------------------------------------------------------- 6118521029 | advil | 2020-12-15 19:24:26 -0500 Cache quiver spell colors This is fixing the same issue as 64875d052978. Like enabled status, quiver color indirectly calls spell_uselessness_reason, which for beam spells, can have weird side effects if triggered at the wrong time. In the particular crashes I was looking at it appears that there was a fairly complex sequence of side effects roughly like, explosion -> redraw -> quiver description -> quiver color -> tracer -> messaging (??) -> more -> quiver description -> tracer -> crash on an invalid monster. (https://crawl.kelbi.org/crawl/morgue/AlmondAAA/crash-AlmondAAA-20201215-234651. txt) -------------------------------------------------------------------------------- 6dfc622489 | advil | 2020-12-15 15:28:34 -0500 Fix LO/Djinn upgrade prompt Broken since 2ba9a4ce9b5bfb, I think. `yes_or_no` no longer will work before game start, so reimplemented as a yesno popup. -------------------------------------------------------------------------------- 4387980181 | advil | 2020-12-15 15:05:20 -0500 Fix a bunch of static targeter + invis issues This also fixes an earlier bug where absolute zero could be used to reveal whether there were invisible monsters, just not their location. Resolves #1641 -------------------------------------------------------------------------------- f3604ea6ed | advil | 2020-12-15 09:57:06 -0500 Fix launcher ammo starts (12405) Something about the ng-setup order is causing this that I still don't quite understand, but explicitly setting the launcher quiver works. -------------------------------------------------------------------------------- 6f3817b27c | advil | 2020-12-15 09:57:06 -0500 Make some zot messages less flavorful but more direct -------------------------------------------------------------------------------- 347fe5baa7 | Edgar A. Bering IV | 2020-12-15 08:32:48 +0200 Update the credits -------------------------------------------------------------------------------- 8f9f7f7418 | advil | 2020-12-14 11:55:28 -0500 Fix webtiles tooltips for statuses with counts Statuses like "Flay (-7)" and "Zot (999)" had their tooltips broken, because the lookup was using this full string. Instead, split at the space. This commit also adds some text when there is no description so that it is more apparent that there should be a tooltip (before, a tiny empty box was displayed). -------------------------------------------------------------------------------- 5cc43298a2 | Nicholas Feinberg | 2020-12-14 08:23:46 -0800 More WL -> Will (Goratrix) Consistent terminology for player-facing messaging. I'm intentionally leaving the player -> monster hex targeter with a different message ('chance to affect') than the monster -> hex messaging ('chance to defeat your Will'). The latter feels quite awkward in the targeter, and I think it's maybe OK to be a little less specific on what's going on under the hood. We'll see! -------------------------------------------------------------------------------- 76350e28a0 | gammafunk | 2020-12-14 09:00:01 -0600 Some ghoul updates for the manual -------------------------------------------------------------------------------- aeb50157f9 | Edgar A. Bering IV | 2020-12-14 16:59:46 +0200 Update credits -------------------------------------------------------------------------------- 2a23cb0dbd | AdamPG | 2020-12-14 16:57:03 +0200 Update species creation documentation to remove hungry undead [ Committer's note: Closes #1642. Remainder of the PR was handled in earlier commits. ] -------------------------------------------------------------------------------- 3b44033db3 | gammafunk | 2020-12-14 08:46:18 -0600 Fix some outdated references to hungry ghouls In source comments, our species code generation script, and in objstat. -------------------------------------------------------------------------------- 0998834371 | gammafunk | 2020-12-14 08:35:00 -0600 Fix ghouls not being able to use potions (PR 1642) The removal of the notion of "hungry undead" didn't update the logic that assumed all "pure" undead can't use potions. Such undead were previously only mummies or temporary lich form, but now it includes ghouls. This commit fixes the logic in the obvious way for now, but the undead-state-type likely enum needs a refactor, as its not doing a great job of giving proper undead knowledge at present. I'm not working with the referenced PR given the source, but will leave it open should anyone else wish to. -------------------------------------------------------------------------------- db0aba6efe | gammafunk | 2020-12-14 07:41:52 -0600 Hopefully fix an HP display bug (elliptic) A bug in the HUD display of HP can occur when restoring maximum HP from drain by gaining XP. I couldn't recreate this bug, but it can be seen at frame 2125 of this ttyrec: https://crawl.kelbi.org/crawl/ttyrec/elliptic/2020-12-13.23:29:18.ttyrec.bz2 It likely happens because the code to handle restoring drained MHP from XP gain first calls calc_hp() to recalculate max HP but then only zeros the max HP adjustment after this recalculation. Hence max hit points will have an incorrect value until it is recalculated again. This commit moves the recalculation after any change to the drain mhp adjustment, which should fix the bug. -------------------------------------------------------------------------------- 8436896e56 | Peter Gerlagh | 2020-12-14 14:41:16 +0200 Allow any floor to be annotated with ! Improve the Annotate interface such that any dungeon floor can be annotated from anywhere. From the main view and the dungeon-overview, pressing ! will bring up a menu allowing you to choose which floor to annotate. From the control-X view, ! will cause you to annotate the level you are currently looking at. ! has a functional help menu. The shortcuts are . and Enter for the current level, < and > for the level above and below respectively, and control-P in annalogy with inter-level travel. The list of dungeon branches (with abreviations) is only shown when the player presses ! a second time. You can only annotate dungeon branches of which you have found the entrance, to prevent information leaking. do_annotate(level_id) has been renamed annotate_level, and annotate_level() has been renamed do_annotate. [ Committer's note: Closes #1369. Squashed and rebased, tweaked some assert logic. ] -------------------------------------------------------------------------------- f5ace97b37 | paul | 2020-12-14 12:49:57 +0200 A new overflow vault for Gozag and Zin This vault is an idea inspired by zin_treasury that I thought could be an amusing play on the contrast between Zin and Gozag. Gozag tempts the player with a single-charged wand of digging to steal a negligible amount of gold from Zin's treasury just for the sake of it. [ Committer's note: Closes #1627. Tweaked commit message. ] -------------------------------------------------------------------------------- 195573c5ca | Marcelo Henrique Cerri | 2020-12-14 10:15:58 +0200 Add options to control display of the message window overlay Add two new options, tile_overlay_col and tile_overlay_alpha_percent, to control the background of the message window overlay. The default color follows the same hard coded value used before while alpha was rounded to the closest round percentage number. The previous alpha value was 100 (in the 0-255 range), while the 40% new default should be equivalent to 102. [ Committer's note: Closes #1557 ] -------------------------------------------------------------------------------- b926618e39 | mgdelmonte | 2020-12-14 10:06:03 +0200 Add c_message lua hook This hook is called for each message sent to the message window, as an alternative to fetching the last n messages (where n is a guess) with `crawl.message`. [ Committer's note: Closes #1563. Tweaked commit message and elaborated documentation. ] -------------------------------------------------------------------------------- 9a8e32e9ec | Nikolai Lavsky | 2020-12-14 09:41:38 +0200 Correct some typos -------------------------------------------------------------------------------- 7ac5835353 | Nikolai Lavsky | 2020-12-14 09:41:38 +0200 Remove obsolete ability and status descriptions -------------------------------------------------------------------------------- 129ca1ddcb | Nikolai Lavsky | 2020-12-14 09:41:05 +0200 Remove obsolete stash search prefixes -------------------------------------------------------------------------------- 9010512d90 | Nikolai Lavsky | 2020-12-14 09:08:44 +0200 Fix Shaft Self description Shaft Self has an equal chance of taking the player 1, 2, or 3 levels down. -------------------------------------------------------------------------------- 18a83ce318 | Nikolai Lavsky | 2020-12-14 09:06:22 +0200 Fix autofight not prioritizing petrified enemies After 9c76b8a6, there are only two stabbing tiers. Also, the player gets a top-tier stab bonus when attacking petrified enemies. This commit updates autofight rules so petrified enemies get the same priority as sleeping or paralysed ones. -------------------------------------------------------------------------------- fb05d25666 | Heinrich Ody | 2020-12-14 09:02:36 +0200 Add details for playing sounds via regular expressions Clarify sound documentation. [ Closes #1630 ] -------------------------------------------------------------------------------- ce247c04e0 | Nikolai Lavsky | 2020-12-14 08:59:30 +0200 Actually stop the Zot clock when it should be paused or stopped The Zot clock ticks even when in the Abyss, during the orb run, and in Sprint mode. It cannot kill the player, but `turns_until_zot()` showing a negative number of turns left in `E` looks like a bug. Also, this commits tweaks the messaging about the Zot clock in `E`. [ Committer's note: Closes #1634. Tweaked some style. ] -------------------------------------------------------------------------------- 0a719521bf | Nikolai Lavsky | 2020-12-14 08:59:02 +0200 Add a wizard command to set the Zot clock Even though it is already possible to get more Zot time using the `&H` command, a wizard command to set the number of remaining turns still might be useful. -------------------------------------------------------------------------------- a2fc0b5f9f | Edgar A. Bering IV | 2020-12-14 08:44:16 +0200 Use references in some ranged fors This silences a clang warning and also prevents unneccessary copying of coord_defs in ranged for constructions. -------------------------------------------------------------------------------- 4c0aae810e | Nicholas Feinberg | 2020-12-13 18:26:57 -0800 Fix Irradiate damage (Midn8) Broken in 4140fda2ff28. -------------------------------------------------------------------------------- 3a4175ecf3 | gammafunk | 2020-12-13 15:09:05 -0600 Some more changelog updates -------------------------------------------------------------------------------- d9a99272a7 | gammafunk | 2020-12-13 15:02:17 -0600 Remove unused hint code instead of using TAG MAJOR The enums aren't marshalled and these hints can't be triggered (and hints mode would ignore them even if they could be triggered). -------------------------------------------------------------------------------- 4cbea82fa3 | gammafunk | 2020-12-13 15:02:02 -0600 Rework player drain to temporary max HP reduction The UI cost of player drain is high, since not only might you need to check your skills after each drain and restoration of drain, you might also have to check spellcasting and ability fail rates. It's also relatively complex for the player to reason about the impact of draining all skills some fixed amount of skill levels, since the effects of level changes vary widely by skill and there are so many skills. This isn't a great design for a player debuff that's frequently applied and restored over fairly short numbers of turns. Max HP reduction has a natural spot on the HUD, requires no menu checks, is much easier for the player to reason about, and is a universally effective cost. Hence this commit reworks player drain to temporarily reduce max HP instead of skills. The drained max HP is restored as the player gains experience, just as before with the old system. Drain applied to monsters is unchanged, with that effect remaining as a stackable HD reduction applied in the same fixed amount regardless of damage. For player drain from melee or beams, I've made the formula more directly use damage done, but still applying at least one point of MHP drain for any non-zero drain power. These attacks always apply a drain power of one even if no damage is dealt. Other drain costs use the same cost values as before (e.g. Ru Apocalypse is still 100), since the formulas scale such values appropriately. The formula for converting drain power to max hp reduction divides the power by six (using random rounding), then splits the resulting power into into two equal parts (up to rounding), one of which is used for a fuzzed component and the other for a component based on the player's current max HP. This is a balance between having a cost that doesn't consider MHP, which would be relatively stronger versus low MHP players and one that only uses MHP, which would be relatively stronger versus high MHP players. In my tests of melee, beam, and fixed costs abilities, the MHP reduction rates seem reasonable, but further play-testing might lead us to tweak the relevant formulas or ability drain costs. The new drain effect replaces the old rotting mechanic, and that mechanic is removed. Curing and heal wounds potions no longer have a secondary rot restoration effect. Miasma clouds lose the rotting portion of their effect, with the poison and slowing remaining unchanged. Monsters and players that permanently or temporarily had rot resistance now have miasma resistance instead. One exception to this is vinestalkers, which simply lose the rot resistance with no replacement, since they were only given it due their potion limitations. Monsters that had rotting melee attacks now have draining attacks instead. The cases of this are not notable aside from necrophages, which might need a rethink since they are not very effective monsters and we have so many monsters with af_drain. Zin Recite can no longer rot monsters, with the weight for that effect appropriately spread to other effects. I've updated all descriptions, references, and source comments to no longer reference rot, but as usual some may have been missed. -------------------------------------------------------------------------------- 1fec4fe3f8 | gammafunk | 2020-12-13 14:51:37 -0600 Remove the hungry dead undead type This was previously used for player ghouls when those rotted over time and required chunks to cure this. Now ghouls no longer rot, nor do they eat to restore HP, gaining XP from kills instead. Hence we reclassify ghouls as normal undead and remove their special undead subtype. -------------------------------------------------------------------------------- 7ab0d7dac8 | gammafunk | 2020-12-13 14:51:37 -0600 Remove an unused actor method argument -------------------------------------------------------------------------------- 89b3258002 | advil | 2020-12-13 11:36:45 -0500 Mention seeds in the issue template -------------------------------------------------------------------------------- 61de54256c | advil | 2020-12-13 10:56:56 -0500 Provide a way to use pkg-config on mac This commit adds a build setting `FORCE_PKGCONFIG` that if defined, overrides the default `NO_PKGCONFIG` setting for mac builds. Previously, doing something like this required editing the Makefile. This setting should be useful for things like homebrew that repackage crawl and patch the Makefile (see #1367). It may also be helpful for people trying to build on new apple ARM devices where our contrib version can't be updated far enough to provide direct support (though this is a bit speculative). A commit in #1367 suggests just always using pkg-config if available, but I don't think this is yet a good idea on mac. Because Apple doesn't itself provide it, there are at least 4 distinct ways that I know of to (often accidentally) get pkg-config installed, none of them are very standard or compatible, it is possible to get more than one version which interact badly (e.g. if you have both macports and anaconda, or homebrew and anaconda), and in my past testing they are just quite unreliable overall, probably exactly because they aren't widely used. In testing this current commit, I do seem to have succeeded in getting a succesful pkg-config build, but this is the first time. The contribs for mac builds, on the other hand, are extremely well-tested and reliable, and not at all sensitive to the various package managers that a mac user could have installed. So I think until this situation becomes a bit more stable (if ever), it is better to default to NO_PKGCONFIG and require the user to be aware that they are taking action to override using contribs. -------------------------------------------------------------------------------- cd3bf97d0b | Edgar A. Bering IV | 2020-12-13 17:27:06 +0200 Remove no_submerge from docs and des syntax highlighting -------------------------------------------------------------------------------- c6392dc34d | Edgar A. Bering IV | 2020-12-13 17:06:32 +0200 Remove the anti-cannibalism conduct (12368) With eating gone it looks weird and out of place. It still had an effect in what one could devour with hydra form while worshipping a good god. A lot of code for a small effect. Beoghites still don't eat fellow orcs, on accounnt of the corpse violation conduct and also the practical desire of preserving an orc corpse to resurrect them. -------------------------------------------------------------------------------- 320aac65f4 | Edgar A. Bering IV | 2020-12-13 16:52:39 +0200 Remove a reference to food (12368) -------------------------------------------------------------------------------- 0e109d3507 | Edgar A. Bering IV | 2020-12-13 16:30:25 +0200 Fix the organization of dc-mon.txt (12306) -------------------------------------------------------------------------------- 6b7d0433bc | Edgar A. Bering IV | 2020-12-13 16:30:25 +0200 Preserve Erica's custom scimitar (12199) Erica's tile has a custom firey scimitar, keep it even if she's managed to get an artefact. -------------------------------------------------------------------------------- 7c2e7382c0 | Edgar A. Bering IV | 2020-12-13 16:30:25 +0200 Source code cleanup (bcadren) Addresses mantis tickets: 12280 12281 12301 12358 12400 12404 removing dead or redundant code, simplifying execution, and correcting comments. -------------------------------------------------------------------------------- 2c94d5e1d5 | Edgar A. Bering IV | 2020-12-13 16:30:15 +0200 Vault cleanup (bcadren) Closes mantis tickets: 12251 12252 12253 12263 12271 12272 12369 These vaults had conditions on depth that no longer made sense, missing tags, or in one case the syntax suggested an altar placement that was missing. -------------------------------------------------------------------------------- 58b0234282 | Edgar A. Bering IV | 2020-12-13 16:25:46 +0200 Use feat_eliminates_items appropriately (12258, 12402) -------------------------------------------------------------------------------- b609fa9e76 | Edgar A. Bering IV | 2020-12-13 16:20:03 +0200 Remove the no_submerge fprop (12309) The only remaining submerging monster is the Kraken tentacle segment. This could also be removed but this batch of commits is collecting only small source cleanups. -------------------------------------------------------------------------------- ed47246d56 | Edgar A. Bering IV | 2020-12-13 16:20:03 +0200 Ground out retaliatory shocks (10990) -------------------------------------------------------------------------------- 00aba192f2 | Edgar A. Bering IV | 2020-12-13 13:20:34 +0200 Update the credits -------------------------------------------------------------------------------- d2882a9c4f | Edgar A. Bering IV | 2020-12-13 13:20:08 +0200 Update the changelog -------------------------------------------------------------------------------- 086102a3f0 | Nicholas Feinberg | 2020-12-12 18:38:56 -0800 Remove a redundant QSDA line Don't note that it can be enchanted to +0, because that's not very useful. -------------------------------------------------------------------------------- 78becf55bb | advil | 2020-12-12 18:34:09 -0500 Various tweaks to monster and spell descriptions This fixes a few apparent mistakes, and more cleanly aligns fields in both of these description popups. (The unifying factor is the internal use of `_print_bar`.) This commit involves a rather alarming nbsp replace on the javascript side to get these tweaks to render in webtiles, but on the other hand it does seem very plausible to me that any leading spaces in one of these popups will be intentional. -------------------------------------------------------------------------------- 8dc6ce00ff | advil | 2020-12-12 16:21:14 -0500 Implement -= for force_targeter (elliptic), consolidate options -= simply wasn't implemented before (and I didn't realize that unless you explicitly check for it it calls the += code). This commit also removes the `always_use_static_targeters` and replaces it with the possibility of passing `all` to `force_targeter`. For reasons of simplification I didn't for now implement -= working to whittle down spells after `all`. -------------------------------------------------------------------------------- 5b34608550 | advil | 2020-12-12 14:06:21 -0500 Try to fix the renounce to `X` mapping (10637) This can happen because `your_talents` is extremely side-effect-y, and if it can get called before `set_god_ability_slots`, it will actually set lettering for whatever god abilities appear to be available at 0 piety. There are various ways that this might happen, centering around the messaging on join. I suspect the original version of 10637 involved local tiles (where the ability buttons are constructed by calling `your_talents`), but the modern version of this is triggered by having an ability quivered when joining the god; a redraw on the messaging also calls `your_talents` when checking quiver enabled status. The best fix would be a more sane refactoring of how to check if the player has an ability, but this quick fix should prevent this particular problem. I won't be too shocked if this leads to crashes, because of weird join religion ordering effects; this is not unrelated to the crash fixed by ca8e9911413a. -------------------------------------------------------------------------------- 60470c10af | advil | 2020-12-12 13:26:52 -0500 Fix/improve programmatic spell memorisation Spell memorisation from lua has been semi-broken since the spell library, because it didn't correctly handle hidden spells or libraries greater than 52 elements. In addition, you previously needed to use sendkeys to memorise spells going by letter. This commit fixes you.mem_spells to just return a list of memorisable spells, no letters involved, and adds a lua function to memorise spells by name. Not sure whether this should be under `spells` or `you`, but I chose the latter. Resolves #1360 Resolves #1602 -------------------------------------------------------------------------------- 2c461ccb5f | Nicholas Feinberg | 2020-12-12 09:00:57 -0800 Clarify damage dice I'm not sure how helpful this is to people who aren't familiar with summing dice for damage, but maybe it's better than nothing...? Might be better to show mean/max, but we'd need a new format for that. -------------------------------------------------------------------------------- 95e0c7ddb8 | Nicholas Feinberg | 2020-12-12 08:25:08 -0800 New Swamp tiles, pt 1 (CanOfWorms) -------------------------------------------------------------------------------- aff5f71418 | Nicholas Feinberg | 2020-12-11 20:32:52 -0800 Display Mara's weapon in tiles (lici) This will probably cause some graphical glitches, but it seems better than nothing. -------------------------------------------------------------------------------- 4140fda2ff | Nicholas Feinberg | 2020-12-11 20:22:15 -0800 Make described spell damage deterministic (Midn8) For player and monster spells. -------------------------------------------------------------------------------- e0427eb064 | Nicholas Feinberg | 2020-12-11 19:57:07 -0800 Don't claim invis scarf makes you hungry (ParallaxScroll) -------------------------------------------------------------------------------- fd6a22a7ff | Nicholas Feinberg | 2020-12-11 15:17:28 -0800 Partially uncap displayed stealth (hellmonk, etc) Previously, displayed stealth was capped at 500, regardless of the player's actual stealth. It now displays much higher values, using this insanely and senselessly cryptic system: +......... = 1-50 ++........ = 51-100 ... ++++++++++ = 451-500 *+++++++++ = 501-550 **++++++++ = 551-600 ... ********** = 951-1000 ... ... !!!!!!!!!! = 1951+ With 27 armour + stealth, 120 SID, shadow dragon armour, full Dithmenos piety, and Shadow Form, I was able to hit the full !!!!!!!!!! stealth. Can you? -------------------------------------------------------------------------------- 242049e08c | Nicholas Feinberg | 2020-12-11 14:52:37 -0800 Add Woodweal synergy (canofworms) It seems very funny for them to be able to heal while adjacent to any tree, including shambling mangroves. Not *useful*, not particularly exciting game design, but funny! -------------------------------------------------------------------------------- e81342393e | Nicholas Feinberg | 2020-12-11 14:43:02 -0800 Add back-compat for MR search -------------------------------------------------------------------------------- 00712748bd | advil | 2020-12-11 17:06:58 -0500 Use bigger long brackets for lua rc parsing After parsing lua, it seems that this code just wraps non-lua code in long brackets. This causes problems when someone tries to use a keybind with `]` following some rc lua code, which involves writing `[]]`, which will close any long brackets in play. Using `[==[` should make it less likely that the closing bracket accidentally shows up. Resolves #971 -------------------------------------------------------------------------------- 368d90fffd | advil | 2020-12-11 15:50:47 -0500 Also protect unbreathing creatures from miasma (following e1f20c3b445d4e) -------------------------------------------------------------------------------- e1f20c3b44 | Heinrich Ody | 2020-12-11 15:48:13 -0500 Fix unbreathing bug Now, when it is checked whether an actor is immune to a cloud, for poison cloud we check for unbreathing. [Committer's note: resolves #1564] -------------------------------------------------------------------------------- 361d76ed6f | advil | 2020-12-11 15:32:15 -0500 Remove jiyva_slurp_result::food This was entirely cosmetic at this point. passive_t::slime_feed remains also for cosmetic reasons, it is used to color the powers display once the player's piety increases a bit. But this could perhaps be simplified... Resolves #1555 -------------------------------------------------------------------------------- 5006177544 | advil | 2020-12-11 13:18:34 -0500 Never mulch tossed items This specifically comes up for launcher ammo, which has a mulch rate, so it could previously get destroyed even when being tossed. I do think this could go either way per discussion in #1505, but i ended up deciding to change it because I think it's overwhelmingly likely that (barring weird speedrun things I haven't though of) the only reason anyone would ever toss launcher-only ammo is by accident, in which case it's pretty annoying to see it mulch. Resolves #1505 -------------------------------------------------------------------------------- 613af4b37b | advil | 2020-12-11 12:22:55 -0500 Explicitly set window opacity May or may not help with #1562 -------------------------------------------------------------------------------- 775ca3dcd3 | advil | 2020-12-11 10:14:49 -0500 Improve error messaging for int options * handle color tag escaping correctly * make the error message slightly more interpretable Resolves #1623 -------------------------------------------------------------------------------- be3abf3417 | advil | 2020-12-10 20:58:12 -0500 Don't do a weapon check on autofight movement for launchers When an enemy was visible but fire was blocked, a wielded launcher would trigger a "really attack while wielding" message before allowing movement towards the enemy. This old behavior was strictly in keeping with the documentation for autofight_prompt_range, but I think still unexpected, and with confusing messaging (referencing attacking) on top of that. So just skip the wielded weapon check altogether if wielding a launcher. This does obscure corner cases where a launcher has an inscription, but since all launchers have full range, it's pretty restricted. Resolves #1614 -------------------------------------------------------------------------------- 5722f2f28d | advil | 2020-12-10 19:45:25 -0500 Copy .md files on install I think that before bf3a5c7, this is what was causing various crashes in circumstances that aren't what we usually test. This commit isn't strictly necessary after bf3a5c7, but it paves the way for converting other docs to md, and also heads off this gotcha for the future. Resolves #1609 -------------------------------------------------------------------------------- fb849e850a | advil | 2020-12-10 17:05:16 -0500 Fix a thunderbolt crash Thunderbolt was not correctly handling the case where a player moved instantaneously or during the firing turn into the position that they had just targeted, resulting in a ray crash on a length 0 ray. This could happen easily in wizmode but also in a few ways during a game, including mesmerise, serpent's lash, and probably knockback. This commit guards against the specific case, though not for non-crashing cases of the player moving in one of these ways (which might lead to bizarre thunderbolt shapes). For fully correct behavior, it should probably check not just the turncount of the previous firing, but the position the actor was at at the previous time of firing. -------------------------------------------------------------------------------- 6118fa9711 | advil | 2020-12-10 15:03:07 -0500 Add some sanity checks to IMB The effect of this spell when one of the actors was knocked into a dispersal trap was fairly odd, and these changes make it slightly less odd. (They may or may not interact with crashes we've been seeing.) It's possible that for knockback specifically, dispersal should act as a fineff, but this isn't a good approach for dispersal in general. -------------------------------------------------------------------------------- bf79f71511 | advil | 2020-12-10 12:30:41 -0500 Add another test monster and generalize some references to MONS_TEST_STATUE. -------------------------------------------------------------------------------- 76280ab330 | advil | 2020-12-10 11:38:52 -0500 Fix grammar error for misc evokables -------------------------------------------------------------------------------- 34db2bcb1b | advil | 2020-12-10 11:36:11 -0500 De-futurize various descriptions I realize this is in principle a ridiculous solution to searches for "will" over-accepting, but when I went through these cases I realized a lot of them are clearer as non-future anyways, and nothing I changed reads worse to me. -------------------------------------------------------------------------------- d598b01645 | Nicholas Feinberg | 2020-12-09 08:34:38 -0800 Add a note of poignancy (12401) To avoid players being trapped in a side area in lost_world, add an exit... just behind a plant... so close for the poor skeleton there, but so far...! -------------------------------------------------------------------------------- 581f5be5db | advil | 2020-12-09 09:08:58 -0500 Improve tossing non-evokable unrands (vt) Also, better handling messaging for trying to quiver equipped items for tossing. -------------------------------------------------------------------------------- 4787bd3075 | wheals | 2020-12-09 14:18:31 +0200 Fix infinite gold exploit (#12395) -------------------------------------------------------------------------------- f6fec0c0d4 | wheals | 2020-12-09 14:18:31 +0200 Don't let Maurice steal stuff being worn See https://crawl.kelbi.org/crawl/morgue/Prakerore/crash-Prakerore-20201124-060246.t xt for a crash caused by this. -------------------------------------------------------------------------------- 83fea8793d | wheals | 2020-12-09 14:18:30 +0200 Fix _actor_apply_cloud_side_effects return value for miasma (#12399) May cause the clouds to (correctly) anger monsters that they hurt. -------------------------------------------------------------------------------- 26f530f025 | wheals | 2020-12-09 14:18:30 +0200 Refactor Hailstorm's range handling a bit -------------------------------------------------------------------------------- d1b18c6681 | wheals | 2020-12-09 14:18:30 +0200 Fix typo -------------------------------------------------------------------------------- 544776af23 | advil | 2020-12-08 19:44:11 -0500 Mark minmay_two_paths as transparent (u/yigaxab397) It's possible that other vaults lacking @ will have similar issues. -------------------------------------------------------------------------------- 006ef2cfcc | advil | 2020-12-08 14:17:17 -0500 Improve autofight_throw and CMD_AUTOFIGHT_NOMOVE The main content of this change is to allow autofight commands (as opposed to CMD_AUTOFIRE) to only trigger actions that do direct damage of some kind. Several people have pointed out to me that their behavior with something like Berserk quivered, vs. how players used them before quivers, was not very coherent. Now, any autofight command will act as if the quiver is empty when an action that doesn't do direct damage is quivered. This will also hopefully make the quiver more usable when CMD_AUTOFIGHT_NOMOVE is used as the Tab binding. As a bonus, autofight_throw=true now correctly handles the case where a spell is out of range, moving towards the nearest target or falling back to melee depending on range. This is fairly useful for many spells, but especially for something like hailstorm. There was no existing code to make this distinction, so I mostly ended up hardcoding it. Unfortunately this may mean that there are missed cases. -------------------------------------------------------------------------------- 72e26ac4d7 | advil | 2020-12-08 14:17:17 -0500 More manual updates for quivers * Add a section on combat, which was missing entirely * Refactor the key commands to group attacking and firing together, as well as move a few other things around -------------------------------------------------------------------------------- 48550f608a | Nicholas Feinberg | 2020-12-08 07:47:51 -0800 De-invert the hex success targeter Probably nicer to show success chance when possible, not failure chance. -------------------------------------------------------------------------------- 0dd55e01dc | gammafunk | 2020-12-08 06:21:37 -0600 Mark a function as static -------------------------------------------------------------------------------- da264ca44c | Nicholas Feinberg | 2020-12-07 17:17:11 -0800 Rephrase Shadow Form description Use a consistent tense and tweak the phrasing around willpower. -------------------------------------------------------------------------------- e47f559bc5 | Nikolai Lavsky | 2020-12-07 17:16:40 -0500 Don't show a bigger targeter for Hailstorm when worshipping Vehumet `spell_range()` can return 4 instead of 3 for Hailstorm, because Vehumet supports the use of this spell. But Hailstorm's range never changes, since it's hardcoded as 3 in `cast_hailstorm()`. -------------------------------------------------------------------------------- d92d85930f | Nicholas Feinberg | 2020-12-07 12:31:47 -0800 Fix conjured friends' damage (bhauth) maybe_random_div and div_rand_round are very different. Fixes displayed and dealt damage by Fulminant Prism, Battlesphere and Conjure Ball Lightning, all broken in recent commits. -------------------------------------------------------------------------------- 185e2d3a23 | advil | 2020-12-07 12:43:29 -0500 Fix the header build -------------------------------------------------------------------------------- c50dc45249 | advil | 2020-12-07 11:16:28 -0500 Add icons to the revamped quiver menu -------------------------------------------------------------------------------- 29ed428ae2 | advil | 2020-12-07 11:16:28 -0500 Improve marking of quivered items in a few menus -------------------------------------------------------------------------------- c70d32b774 | advil | 2020-12-07 11:16:28 -0500 Fix inventory marking of invalid quiver items -------------------------------------------------------------------------------- 6dfd076335 | Nicholas Feinberg | 2020-12-07 07:42:27 -0800 Yet another WL -> Will -------------------------------------------------------------------------------- f6ffb0d6bd | Nicholas Feinberg | 2020-12-06 17:39:53 -0800 Remove William To disambiguate and shorten the hex targeter, refer to the resist chance rather than the "chance to beat". -------------------------------------------------------------------------------- edcf9b2963 | Nicholas Feinberg | 2020-12-06 14:22:02 -0800 More willpower wording tweaks Describe MR-immune enemies as having infinite will, matching the display on xv (not 'invulnerable'), and replace a few more WL references. -------------------------------------------------------------------------------- 390cb15686 | Nicholas Feinberg | 2020-12-06 14:10:26 -0800 Update more missed MR -> WL conversions -------------------------------------------------------------------------------- ffdf6f7e0c | Nicholas Feinberg | 2020-12-06 14:10:26 -0800 WL -> Will (dinky, advil) Reads a bit more clearly. -------------------------------------------------------------------------------- 0a7728c5f8 | advil | 2020-12-06 15:54:18 -0500 Improve weapons check wording for roll/rampage Helps with the scenario where a hypothetical player (*cough*) cannot figure out why there might be attacking going on and spends time trying to diagnose quiver bugs instead. -------------------------------------------------------------------------------- 2e65f7e828 | advil | 2020-12-06 15:34:51 -0500 Fix some ways of skipping the autofight hp check (dinky) This check was being skipped in some cases because at the time of calling, it was possible for the dist object to not be fully set up for automatic targeting. -------------------------------------------------------------------------------- 803384b024 | advil | 2020-12-06 15:19:59 -0500 Fix autofight_fire_stop Broken because the lua code was using the wrong variable name. This commit restores the previous default behavior of shift-tab/p acting like `ff` instead of `f.`, lets this be configured again in the rc via `autofight_fire_stop = true`, and also has all quiver actions consistently respect this option. I've gotten some feedback from players suggesting that this might actually be better with a default of false (from players interpreting the bug as a new default), but for now I'll leave it as it was before the quiver rewrite. -------------------------------------------------------------------------------- e62661cac4 | advil | 2020-12-06 14:41:03 -0500 Improve handling of some weapons checks * on `v`, do weapons checks before targeting instead of after * fix a bug with out-of-ammo launchers and `V` pointed our here: https://www.reddit.com/r/dcss/comments/k7qypb/cannot_open_evoke_menu_if_i_have_a _ranged_weapon/ * don't allow melee attacks via `v` with out-of-ammo launchers. This isn't because it is disallowed, you can still do it with bump attacks, but in testing allowing this seemed more confusing than not. * standardize some checks of whether the player is wielding a launcher -------------------------------------------------------------------------------- 7af7f965e9 | Nicholas Feinberg | 2020-12-06 08:09:39 -0800 Display battlesphere damage For some reason I thought this wasn't still a player spell? -------------------------------------------------------------------------------- d31957873b | Nicholas Feinberg | 2020-12-06 08:06:39 -0800 Rephrase Ru stunned message again (Lici) Punch it up a bit. Thanks to all who voted in the poll! -------------------------------------------------------------------------------- 165cf102c4 | advil | 2020-12-06 10:39:38 -0500 Darken out of range tile The range distinction was extremely subtle on many dungeon backgrounds, because tiles shows both range and los in the targeter. This makes the range distinction much sharper, at the cost of making the oor vs oos distinction fairly subtle. However, this isn't very important in the targeter, so I think this is probably an improvement. True confessions: I couldn't find a good free sprite editor that could correctly handle the alpha channel in this file, so this is actually just the old out_of_sight.png from before 010c0ec4c0e. I kept the lighter version around in thee repo in case someone wants to play around with this in more detail. However, we really should be doing this kind of darkening programmatically. -------------------------------------------------------------------------------- 7355149c4d | Nicholas Feinberg | 2020-12-05 21:29:09 -0800 Fix the build Oops! -------------------------------------------------------------------------------- 55990c9dca | Nicholas Feinberg | 2020-12-05 21:09:15 -0800 Make Hailstorm always hit It effectively did anyway - its accuracy was accidentally made very very high. The accuracy could be nerfed, but it seemed better to simplify the spell. -------------------------------------------------------------------------------- ebc406137e | Nicholas Feinberg | 2020-12-05 21:05:59 -0800 Rephrase Ru's 'stunned by your will' To avoid confusion with the new willpower stat, use 'power' instead. (Per "You now exude an aura of power that intimidates your foes".) I'm not entirely happy with this - perhaps "by your aura" would be better, or something else? -------------------------------------------------------------------------------- 2ee872d4bd | Nicholas Feinberg | 2020-12-05 21:03:58 -0800 Rename magic resistance to willpower Magic resistance is a stat that covers a very wide gamut of effects, from hexes (Slow, Confuse) to vaguely hex-like things (Teleport Other, Siren Song) to things that very clearly aren't hexes at all (Disintegrate). Of course, it doesn't cover other hexes, like Metabolic Englaciation and Dazzling Flash, and it definitely doesn't cover all 'magic' - it provides no resistance to a magical fireball or a magic sword. In short, it's a name that's both unspecific and *too* specific. It actively misleads players. It has negative value! It's impractical and undesireable to change the game's systems to match the literal meaning of 'magic resistance', and there's no more precise term that matches the actual function. You could say something like 'hex resistance', but again, you run into the issue of hexes that aren't resisted by hex resistance and non-hexes that are resisted by hex resistance. So, instead, let's rename magic resistance to 'willpower'. This is a vaguer term, which means that it shouldn't mislead players in the same way, but it's entertainingly flavourful - it's fun to talk about Trog's influence making you strong-willed or Ru's sacrifices making you weak-willed. (Credit to Midn8 for "force of will" inspiring this.) One weird note about this name is that Disintegrate will be willpower-resisted. I've added a cute little bit of flavour to the item description as justification, and that wand might not be long for this world in any case, so it seems fine. There's no save compat code here, so this is easy to revert or tweak further as needed. -------------------------------------------------------------------------------- 1f2658d0d0 | Nicholas Feinberg | 2020-12-05 16:16:56 -0800 Reduce !attraction duration (dinky) Formerly: 35-75 turns. Now: 20-40 turns. -------------------------------------------------------------------------------- 71edfde6b2 | Nicholas Feinberg | 2020-12-05 16:02:13 -0800 Attract monsters later While under the effects of a potion of attraction, pull monsters toward the player after their turn and before the player's next turn, rather than the other way around. This should make the potion more powerful in various circumstances. -------------------------------------------------------------------------------- 6b303dbc09 | Nicholas Feinberg | 2020-12-05 12:05:34 -0800 Display Mystic Blast damage The spell still had 'accuracy' but never checked it. -------------------------------------------------------------------------------- e22e22b3db | Nicholas Feinberg | 2020-12-05 12:04:15 -0800 Refactor zap_to_hit -------------------------------------------------------------------------------- bc0167d404 | Nicholas Feinberg | 2020-12-05 11:39:01 -0800 Remove redundant origin spells They should be initialized in zappy now. -------------------------------------------------------------------------------- 65c7e3695e | Nicholas Feinberg | 2020-12-05 11:26:38 -0800 DIsplay Vampiric Draining damage Boy, what a weird formula. -------------------------------------------------------------------------------- 5781f4c211 | Nicholas Feinberg | 2020-12-05 11:18:48 -0800 Display Hailstorm damage and accuracy Boy, this is very accurate... -------------------------------------------------------------------------------- 72e8e842c1 | Nicholas Feinberg | 2020-12-05 10:44:32 -0800 Show ball lightning damage -------------------------------------------------------------------------------- a60655dfc3 | Nicholas Feinberg | 2020-12-05 10:39:02 -0800 Show Fulminant Prism damage -------------------------------------------------------------------------------- ebe0143811 | Nicholas Feinberg | 2020-12-05 10:20:09 -0800 Show Searing Ray damage & unbrace -------------------------------------------------------------------------------- 789247db7f | Nicholas Feinberg | 2020-12-05 09:39:13 -0800 Show Freeze and Absolute Zero damage -------------------------------------------------------------------------------- 5d12d2fb9f | Nicholas Feinberg | 2020-12-05 09:33:07 -0800 Show Shatter and Fire Storm damage -------------------------------------------------------------------------------- 026c722f6f | Nicholas Feinberg | 2020-12-05 09:10:04 -0800 Display Yara's Unravelling damage Very unsure whether this will cause bugs or not. Life is exciting! -------------------------------------------------------------------------------- 7deb57bc63 | Nicholas Feinberg | 2020-12-05 09:04:34 -0800 Display Irradiate damage -------------------------------------------------------------------------------- c9bf407737 | Nicholas Feinberg | 2020-12-05 08:54:34 -0800 Describe Ignition damage -------------------------------------------------------------------------------- 82ca2f83e3 | Nicholas Feinberg | 2020-12-05 08:40:00 -0800 Describe Starburst damage & accuracy -------------------------------------------------------------------------------- 8c6fb62fe6 | Nicholas Feinberg | 2020-12-05 08:34:48 -0800 Tweak Lightning Bolt description RIP "other similar bolts". -------------------------------------------------------------------------------- 488e41826d | Nicholas Feinberg | 2020-12-05 08:30:42 -0800 Show player spell accuracy As + pips, since a raw accuracy number means very little. Ranges from about 2 pips for some 0-power spells to 7 pips for max-power LCS. Should be a nice complement to the damage numbers. -------------------------------------------------------------------------------- 0fe3eaa9ac | Nicholas Feinberg | 2020-12-04 22:35:34 -0800 Remove an accidental newline Classic copy-paste error. -------------------------------------------------------------------------------- 392c82fb87 | Nicholas Feinberg | 2020-12-04 21:27:19 -0800 Show player spell damage In spell descriptions, similar to monster spell damage, weapon damage, etc. -------------------------------------------------------------------------------- f74a8dc463 | advil | 2020-12-04 21:31:13 -0500 Don't recalculate quiver on autotravel, again -------------------------------------------------------------------------------- 1a1fd2e980 | advil | 2020-12-04 18:14:31 -0500 Initialize sockaddr_un before initial recvfrom This is a weird one. Under some circumstances that I cannot fully determine, the socket address in srcaddr after the recvfrom call is not getting 0-terminated, leading to an invalid pathname (with garbage characters after the end of the actual file name) and ENOENT on the first sendto immediately after the attach message. This leaves the crawl process with no listening clients; the way this appears from the user's end is that webtiles just hangs on the loading screen. Memsetting the structure before recvfrom fixes it, and is good practice anyways. *However*, this seems to be Tornado version specific: I get this issue almost deterministically on Tornado 6.1.0, often on Tornado 6.0.4, and sporadically on 6.0.3 (but I have seen it happen). This makes me suspect that there is some kind of race condition where the socket may not be set up on the client end quite in time for the recvfrom call, and this weird behavior is just a symptom of the race condition. However, it isn't at all obvious why this could happen on the python side, and there's no async code I can detect that would be interfering. So I'm not really sure what is going on here. It's also possible this issue, or at least the particular symptom I'm fixing here, is mac specific, since I think we would have heard about this if one of the tornado 6 servers were having this problem. -------------------------------------------------------------------------------- d3b5134375 | advil | 2020-12-04 11:43:55 -0500 Forward compatibility for tornado 6.1.0 This gets it to run. (There are still some issues that I haven't fully tracked down.) -------------------------------------------------------------------------------- f0e3ce9185 | advil | 2020-12-04 11:03:32 -0500 Simplify some direction targeter messaging As far as I can tell, this extra messaging as a side-effect of `select` is currently redundant, just leading to extra duplicates of whatever error message is also printed in `print_target_description`. Possibly this wasn't true in the past before the direction chooser was widgetified? -------------------------------------------------------------------------------- f98bc5018b | advil | 2020-12-04 10:21:44 -0500 Improve tracer behavior for melee targeting (dinky) Two fixes: * don't show tracers for regular melee weapons * for reaching, don't show the tracer when the attack point is beyond range. I'm not sure if this was intentional but right now to me it seems more confusing than not. -------------------------------------------------------------------------------- 5dabc5fedb | advil | 2020-12-04 10:21:44 -0500 Let `launcher_autoquiver` affect evokable artefacts And make them autoquiver their effect like launchers. This is a slightly different case since they can't be evoked via `v` (any more) but this behavior makes them more consistent and predictable at least. These items, when wielded, can still always be evoked with `V` even if autoquivering is off. -------------------------------------------------------------------------------- e3d1176a8d | advil | 2020-12-04 10:21:44 -0500 Make some messaging more consistent (dinky) -------------------------------------------------------------------------------- 1d9d62bb61 | Nicholas Feinberg | 2020-12-03 17:11:26 -0800 Remove entropy weavers' arms The weapons, that is. It's not important to their design and the tiles didn't support them. -------------------------------------------------------------------------------- 9442c5bf0f | Nicholas Feinberg | 2020-12-03 17:09:47 -0800 Don't drain with "invisibility Fix sprint 4, sort of. -------------------------------------------------------------------------------- 2c58977ddd | advil | 2020-12-03 17:27:04 -0500 Re-simplify quivering effect of wielding a launcher b220303a8 tried to improve autoquivering on wield but instead (for most people) just made it more confusing. After this commit, by default wielding a launcher will always change the main quiver as well, regardless of what is quivered. This works reasonably well with the other change in b220303a8 that switches to the last used quiver on quiver invalidation, so switching away from the launcher (except for slings+stones) usually does something intuitive. This behavior (in contrast to the behavior before b220303a8) can now be disabled entirely; if you set `launcher_autoquiver = false` wielding a launcher will never set the quiver. This will be useful at least for characters that are using both launchers and spells. -------------------------------------------------------------------------------- d330659c95 | advil | 2020-12-03 13:58:36 -0500 Add a quiver swap command This new command swaps between the current quiver action and the most recent valid quiver action. Default bound to `]`. Since quiver actions don't have stable lettering, it's a bit hard to see exactly how to do this, but I wonder if something more controllable along the lines of `'` for weapons might eventually be in order? -------------------------------------------------------------------------------- 64875d0529 | advil | 2020-12-03 09:55:25 -0500 Do some caching for spell quiver enabled checks For beams (and especially explosions) this is a pretty heavy call, because it checks if there are enemies in range, and it isn't ideal that it gets called every time the quiver gets redrawn; I've already fixed some cases where this call was leading to noticeable slowdowns. Moreover, this call has been revealing a lot of cases where a redraw (or webtiles _send_player) happens as a side effect at a time where there is some invalid state for calculating nearby enemies, causing crashes. I've been able to fix up some of these on a case by case basis, but others I haven't even been able to replicate (e.g. https://webzook.net/soup/morgue/trunk/eld/crash-eld-20201128-170107.txt, which seems to involve a more() triggered in the middle of monster_die on vehumet MP gain, where there is a partially dead monster at that point in the call, triggered by some kind of complex fireball+inner flame scenario). So, for both of these reasons, this commit changes things so that the spell quivered enabled status is only updated once per input cycle. This could be extended to other quiver actions needed but right now as far as I know (beam) spells are the ones that are causing issues. -------------------------------------------------------------------------------- d078a86f14 | advil | 2020-12-02 10:51:20 -0500 Better handle invalid lockfiles After CBR2 lost power the other day, it left a bunch of empty lockfiles, which aren't being handled very well. This will simply clear a lockfile if it is empty or otherwise contains something not convertable to an int. (The case where it contains a stale process number is already handled.) -------------------------------------------------------------------------------- 4c2be1ac84 | advil | 2020-12-02 10:15:08 -0500 CLI for setting password reset tokens I had qualms about enabling the admin panel version of this on a server with a very long admin list, so in lieu of adding a second DGL permissions tier (for now) I'm adding a CLI version of this to simplify password resets a little bit. Not yet tested in a chroot setting. This change enables servers accepting reset tokens unconditionally; but unless one of the other two options is enabled they can still only be set via the command line. -------------------------------------------------------------------------------- 69f9a3b9e2 | advil | 2020-12-01 20:48:56 -0500 Set you.on_current_level to false during load This has the effect of suppressing certain UI things, and keeping quivers from crashing in case UI updates during load force webtiles to call send_player early. This was in particular happening for skill menu on load cases. I've also adjusted where the skill menu is called from in these early game cases; this didn't prevent the crash or anything but it seemed wildly odd to open the skill menu when the game is in the middle of restoring. -------------------------------------------------------------------------------- 701b36d813 | advil | 2020-12-01 18:23:03 -0500 Add an admin panel tool for password resets For servers that can't set up password resets by email, this allows admins to manually generate reset tokens. I implemented it because handling manual password resets on CAO is extremely annoying, but setting up the email mode is unlikely to happen. This feature is very much off by default because it's a drastic increase in privileges for the way admin users are set up on many servers -- right now, the admin flag is mainly for identifying who can do rebuilds / use wizmode, i.e. almost nothing that can affect other users. So I don't think server owners will obviously want to enable a way of changing arbitrary passwords (if you have the reset link, you can change the password) for anyone who can rebuild. Really this calls for multiple tiers of permissions, but that's pretty involved to figure out how to do. TBD. -------------------------------------------------------------------------------- 9b92081034 | advil | 2020-12-01 16:13:55 -0500 Prevent unnecessary redraws during autotravel (Goratrix) This gets quivers and a few other things that shouldn't be updated in fast autotravel modes. (In testing this I noticed that console, but not tiles, still prints messages with these modes, should maybe be fixed too.) -------------------------------------------------------------------------------- f5feefdc77 | advil | 2020-12-01 15:47:11 -0500 Exclude userdb.py from lint -------------------------------------------------------------------------------- fcd0102f59 | advil | 2020-12-01 15:38:56 -0500 Better document a tiles option (u/Social_Knight) This tab names are set in a slightly odd way so it's possible I missed a few here. -------------------------------------------------------------------------------- 1ef1181187 | advil | 2020-12-01 15:32:07 -0500 Add webtiles password change I'm not sure if there's some good reason that I'm missing why this was never implemented, but here it is. Previously the player needed to log in to ssh to do this on most servers, and it may even have required an admin on others. -------------------------------------------------------------------------------- f3041fb45f | advil | 2020-11-29 15:05:57 -0500 Show quiver for felids in webtiles -------------------------------------------------------------------------------- 201e65fd49 | advil | 2020-11-29 13:27:30 -0500 Improve flavor of explosions after death -------------------------------------------------------------------------------- f9a3951816 | Nicholas Feinberg | 2020-11-29 08:57:11 -0800 Shift nrook's guardian serpents deeper D:9 is a bit earlier for guardian serpents. So is d:11, really, but what's life without a *little* excitement? nrook_guardian_serpent_double might be too spoilery to exist (unrelatedly) but I don't have the heart to change it. (And as spoilery vaults go, the trick in this one is pretty obvious.) -------------------------------------------------------------------------------- f919d8e910 | Nicholas Feinberg | 2020-11-29 08:57:11 -0800 Adjust worldbinder Swamp set (12391) Since insubstantial wasps no longer spawn in Swamp, replace them with bog bodies. (We don't want any of the really nasty creatures in this set!) Planerend set still seems fine. -------------------------------------------------------------------------------- 1642dc5553 | Nicholas Feinberg | 2020-11-29 08:57:11 -0800 Make evokable invisibility drain skills Evocable invisibility is a very powerful and potentially quite fun effect. It has a correspondingly high Evocations skill requirement to remove its failure chance. However, that failure chance rarely mattered in practice. There was no real cost to repeatedly evoking invisibility at 70% failure while around the corner from enemies. That was strong, but not particularly fun. Evoking invisibility now applies moderate skill drain to the player, regardless of whether the evocation succeeds. This both discourages high-failure-rate evocation and makes the ability *slightly* weaker in general. (Of course, as Ru shows, one mustn't overestimate the impact of drain!) The current drain value is a first pass - it should be adjusted as appropriate per player experience. -------------------------------------------------------------------------------- f18ecd8a5b | advil | 2020-11-29 11:54:56 -0500 Support backslash notation in rc keybinds This is handled correctly in macros.txt, but there was no way to do this that I can identify in rc files, making it impossible to bind keys like tab or shift-tab. Now you can type things like: bindkey = [\{9}] CMD_AUTOFIGHT_NOMOVE directly into an rc file. -------------------------------------------------------------------------------- 76694b35de | advil | 2020-11-28 19:35:02 -0500 Prevent most quiver autofilling This commit effectively restores oldquiver behavior: running out of ammo will autoquiver other ammo using the settings in fire_order, but nothing else. The only other action type that can run out is wands, and these result in an empty quiver. Dropping items will also lead to an empty quiver, which I'm less sure of. This commit is likely not the last word on quiver autofilling, but it does solve one of the more annoying sets of interactions, which is when running out of ammo and hitting autofire triggers something extremely different, such as invoking berserk. Because wands can no longer be accidentally triggered by running out of ammo (see f7e0b5f77) I've added them back in to the cycle order. -------------------------------------------------------------------------------- b220303a8a | advil | 2020-11-28 17:52:46 -0500 Tweak quiver on wield behavior * If the player wields a launcher, and the current quivered action involves ammo, the main quiver will switch to the appropriate ammo for the launcher (the last used of the relevant type). This is an exact match for 0.25 behavior. I'm not sure whether it's really the best in the end, but it's at least consistent. * If the player wields a launcher, and the current quivered action is valid and non-ammo, no autoswitch will be triggered. The player can still fire the launcher via tab/`v`. This smooths out a lot of switching cases that were annoying (e.g. spell+launcher+melee combos). * If the player wields a non-launcher that results in an invalid quiver action, instead of emptying the quiver, the game will try to find a valid recently used action. This should cover at least some use cases I've discussed with players, but needs some testing in practice. All this is slightly more complicated that what was happening before, so it may need more tweaking. In principle I could add options for some of this as well, but I need to have a better sense of the use cases. -------------------------------------------------------------------------------- 52035dc9a5 | advil | 2020-11-28 11:20:35 -0500 Guard against crashes in god_hates_killing Also, standardize some indentation. -------------------------------------------------------------------------------- a0cc1ef5f6 | Kate | 2020-11-28 04:26:34 +0000 Improve stairs documentation -------------------------------------------------------------------------------- 5126ae9156 | Kate | 2020-11-28 04:19:17 +0000 Remove some semicolons -------------------------------------------------------------------------------- 687c0233df | Midn8 | 2020-11-28 04:19:08 +0000 Fix "The Exile" Description (#1617) The card is no longer capable of banishing the user (and hasn't been for quite some time). -------------------------------------------------------------------------------- 9485abf61d | advil | 2020-11-27 17:04:27 -0500 Fix autofire targeted abilities with no enemies (yesno) This change prevents the yesno (ha) dialogue from happening when the direction chooser is opened non-interactively, simply failing silently. This is immediately targeting some abilities that were targeted but use spell_direction (e.g. naga spit), we'll see if it has bigger side effects. Most spells should handle this before getting to the direction chooser. -------------------------------------------------------------------------------- 36fc42b6d5 | advil | 2020-11-27 17:04:09 -0500 Standard indentation in ability.cc -------------------------------------------------------------------------------- 2bc0b21477 | advil | 2020-11-27 15:02:40 -0500 Add fine-grained rc control over static targeters I've gotten a variety of feedback on this now; some people find them extremely useful, some people find them confusing or unnecessary, and some people find them useful only for certain spells. This new option lets you force a targeter on named spells when casting, allowing full customization. The default list is relatively short and includes only a few of the more unique targeters; there are some others that could be useful here (e.g. raise dead spells that show corpses, etc), but I'll wait on more feedback to see how this goes. This supports the usual "+=" and "=" syntax for list options. -------------------------------------------------------------------------------- 49005422be | advil | 2020-11-27 13:10:25 -0500 Don't show static targeters for `Z` People seemed confused by this, so I'm removing them for now. I can't tell whether this confusion is because of change or intrinsic confusion. It's true that many static targeters are extremely boring (e.g. self-targeted ones and summon ones that just show range 2). I'm leaving them for the fire interface, because even though I've also seen this described as "weird" it's pretty important for consistency, and if you want to skip the targeter you can just use `p` or shift-tab in this mode. (Also, I do really think these targeters are extremely useful for new players.) What might be best is if z/Z both had a toggle that let you choose to see the static targeter if you want to check range. -------------------------------------------------------------------------------- ccb988d4e7 | Nicholas Feinberg | 2020-11-27 07:57:31 -0800 Give meliai a weapon offset -------------------------------------------------------------------------------- d41f7fe8a7 | Goratrix | 2020-11-27 07:57:31 -0800 Give atropa and datura darts distinct color tiles Currently both atropa and datura are using default branded dart tile, which is dark blue. This gives them distinct colors, orange for datura and lighter blue for atropa. The default branded tile (not used) is changed to grey/silver instead of blue. -------------------------------------------------------------------------------- f7e0b5f775 | advil | 2020-11-26 21:58:41 -0500 Don't include wands in quiver autofill/cycling This seems like it should eventually be configurable, but remove this for now: it seems like it makes it too easy to waste wand charges. (Possibly applies to misc evokers, abilities, as well?) -------------------------------------------------------------------------------- 1c1f9fb145 | advil | 2020-11-26 20:07:56 -0500 Let throwing ammo be quivered with a launcher -------------------------------------------------------------------------------- 3f418897a6 | advil | 2020-11-26 20:03:24 -0500 Fix a build issue for cao `set::emplace` is not available on this compiler, apparently. -------------------------------------------------------------------------------- 67df3f2acb | Nikolai Lavsky | 2020-11-26 12:33:30 -0800 Colourize beam damage descriptions in WebTiles As a followup to 930a2b7a, this commit colourizes beam damage descriptions on the xv screen. -------------------------------------------------------------------------------- 5c0f344105 | advil | 2020-11-26 13:19:17 -0500 Show inert evokers in `V` menu (Lici) This restores previous behavior, and marks inert evokers as dark grey in inventory menus in general (basically so that they'll show up that way in `V`). Not sure if there are other things that could be marked dark grey following this, or if there's a convenient way to do that. But this makes the appearance of `V` match the quiver menu. -------------------------------------------------------------------------------- 3624241d3c | advil | 2020-11-26 12:57:01 -0500 Remove a debug message -------------------------------------------------------------------------------- 35fe432003 | advil | 2020-11-26 12:54:23 -0500 Fix a bunch of inscription logic errors These were keeping every ammo not inscribed with =F from getting quivered -------------------------------------------------------------------------------- 9503ff51b6 | advil | 2020-11-26 12:45:51 -0500 Fix cleave+reaching I had assumed this wasn't possible, but it is via Xom. This fix prioritizes the reaching targeter over the cleave targeter. -------------------------------------------------------------------------------- bf3a5c7d0a | advil | 2020-11-26 11:04:28 -0500 Generate a quickstart.txt 23cac7494c converted the quickstart guide to markdown, but at the time of merge I don't think anyone fully realized that this was loaded in-game. This fact has caused a bunch of havoc. This commit generates a .txt by simply copying the md file, which should eventually be substituted for better rendering. Two reasons for doing this: (i) for in-game use, a .txt version would be better since we don't have any markdown rendering in-game, and (ii) on some servers (perhaps just CWZ) the .md file is not getting copied into the game data directory, which is causing a ton of crashes. This could be fixed on the server, but given (i) it also seems reasonable to fix it on our end. -------------------------------------------------------------------------------- 326f72de0d | advil | 2020-11-25 22:48:50 -0500 Fix an autofight / throw interaction (vt) This simplifies this code path to only use the targeting in throw_it, rather than adding an extra layer of targeting around CMD_THROW_ITEM_NO_QUIVER. This layer was here for historical reasons and everything seems to work fine without it. The specific bug this is targeting is that because the action treated this as a case of non-interactive targeting it would apply the autofight threshold. This commit also fixes a bug where you could use `f` to fire ammo into walls with portal projectile, probably causing a crash. -------------------------------------------------------------------------------- a1d07f6d9d | advil | 2020-11-25 22:48:50 -0500 Improve handling of =f inscriptions This commit allows =f to work beyond ammo, and still shows =f items in the `Q`uiver menu (following previous behavior). Some cases of +f still don't work. -------------------------------------------------------------------------------- c4484e65ce | Nicholas Feinberg | 2020-11-25 19:04:36 -0800 Ban missed net farming (Misc) I'd forgotten about the case where nets miss you. Oops! -------------------------------------------------------------------------------- ca8e991141 | advil | 2020-11-25 20:30:28 -0500 Fix a potential crash while joining ru This is a quick fix that I'm not sure is ideal, but what seems to be happening is that your_talents can be triggered as a side effect of messaging while joining a god, which then trips a Ru ASSERT before the god is fully set up. Changing the order of calls in join_religion might be better, but that sequence looks very delicate. -------------------------------------------------------------------------------- 1b567f25a9 | advil | 2020-11-25 18:54:22 -0500 Don't mark newgame spells as useless The player is not yet placed when they receive their initial spells, so spell_uselessness_reason needs to be able to work in that case. -------------------------------------------------------------------------------- 43279f1ce9 | advil | 2020-11-25 16:16:20 -0500 Fix !f inscription checks (vt) This moves inscription checks to triggering; the earlier implementation was only tested on a much older version of newquivers. This commit also lets !f inscriptions work on any item that can be fired from quivers. -------------------------------------------------------------------------------- 62de122f19 | advil | 2020-11-25 13:59:00 -0500 More spell quivering fixes, this time for excursions 81e999faa9 was specifically triggered by checking spell uselessness of a quivered spell while doing levelgen. Crashes can also happen if this is checked during an excursion. Before, none of this code would have a way of being called, but when a spell is quivered on newquivers, this code is used to figure out whether to gray out the spell, so it is triggered by ui redraws as well as sending player info in webtiles. I've added another sanity check to `spell_no_hostile_in_range`, but also just headed this off at the outset in `spell_uselessness_reason`. -------------------------------------------------------------------------------- 81e999faa9 | advil | 2020-11-25 12:53:58 -0500 Don't crash on a spell uselessness check when entering zigs I'm still not sure of why exactly this is called when the player is out of bounds while entering zigs, but it is, so handle this case a bit more gracefully in general. -------------------------------------------------------------------------------- 0a1e5404e9 | advil | 2020-11-25 09:11:01 -0500 Handle randomization correctly in absolute zero targeter Before, I had assumed that this wasn't randomized. However, it is, inside distance_iterator. So, this commit changes the targeter to show AFF_MAYBE on the closest targets when there is more than one at the same distance. The visual difference is a bit subtle, so it may be that this will be confusing, but this still seems the best way to handle it. -------------------------------------------------------------------------------- a5061f1e94 | advil | 2020-11-25 09:11:01 -0500 Lua api for targeted fire of spells, items, abilities Before, these needed to be triggered by sending keys; this change uses the actions API to directly trigger actions and supply a target where necessary. This code is not extremely well tested... -------------------------------------------------------------------------------- c7d50104ff | advil | 2020-11-25 09:11:01 -0500 Simplify and document the actions/quiver API somewhat Mixing shared_ptr and references was too confusing, with some awkward pitfalls. Given that the whole point of action_cycler is to ensure non-null, this commit just switches things over to use only shared_ptrs, and makes explicit this (and cases where nullptr may be returned) in the doc comments. Also, a few other tweaks/fixes that I noticed along the way. -------------------------------------------------------------------------------- 568033eebc | advil | 2020-11-25 09:11:01 -0500 Name some special numbers in autofight (PleasingFungus) -------------------------------------------------------------------------------- 6b3f3ad2d2 | advil | 2020-11-25 09:11:01 -0500 Refactor and consolidate melee attacks This commit refactors melee attacks, including CMD_ATTACK_... and reaching attacks, into a single action type. This action supports targeting not just for reaching attacks but for regular melee attacks, leading to a more uniform behavior (as well as allowing you to examine enemies directly from an attack interface for all attack types). This class supports all the bells and whistles of other action commands, e.g. it will do noninteractive attacking if a target is pre-chosen. It's currently not used in a quiver at all, but created on the fly as part of an attack. For backwards compatibility I have left the behavior of CMD_EVOKE_WIELDED intact, but `v` is now bound to a new CMD_PRIMARY_ATTACK that activates targeting for any wielded weapon, be it regular, reaching, or ranged. Historically, there were various types of things triggered with this key while wielded, but more recently `v` is used almost entirely for reaching except for some special cases: two artefacts (staff of olgreb and staff of dispater) as well as unusual techniques like wielding a wand. Since all of these special cases now can be accomplished via the quiver, it doesn't seem so necessary to keep to the old scheme as a default. There's still unfortunately a bit of scaffolding in the evoke code because of this compatibility issue, but it's at least less intrusive. Additional notes: * targeter_cleave is upgraded to support changing aim, and used for `v` on axes. * Rift targeting is simplified and now correctly shows range. * Bump attacking is unchanged, i.e. doesn't use this code path. * If someone's really bothered by having to quiver staff of olgreb's OTR ability to trigger it, they can rebind `v` back to CMD_EVOKE_WIELDED. `V` will also continue to work. * It is still possible to use `V` to evoke a reaching weapon. -------------------------------------------------------------------------------- ab14b95593 | advil | 2020-11-25 09:11:01 -0500 Change/improve some default quiver filling cases A bunch of issues that showed up in testing * use invalid, rather than just empty, quivers for initialization cases. This autofills early game quivers more appropriately. * on memorising a spell, fill an invalid quiver. * when wielding a launcher, if that launcher has ammo fill the main quiver unconditionally. Previously I had only done this on an invalid quiver, but on testing I'm not sure that this would be the best general behavior. (And in tutorial 2, it definitely complicates things in a case that would be confusing for newer players.) The main case where this could be annoying is if a player wants to swap between ranged and melee weapons, but keep a spell or ability quivered. -------------------------------------------------------------------------------- 1040668b95 | advil | 2020-11-25 09:11:01 -0500 Documentation, tutorial updates -------------------------------------------------------------------------------- 69e7df3edd | advil | 2020-11-25 09:11:01 -0500 Refactor and improve some autofight checks This commit slightly restructures how autofight is called, cleaning up the code in main.cc and moving the hp/mp checks at least partly into quiver::action (though still using clua bindings to perform the checks). The main substantive change here is that the `automagic_stop` option now works for quivered actions that consume mp similarly to how it worked on old automagic. -------------------------------------------------------------------------------- 1112c698d6 | advil | 2020-11-25 09:11:01 -0500 Change the behavior of the CLUA_BINDINGS #define This commit changes things so that what gets compiled out by removing this define is only the ability to run clua from the rc file and macros. Default clua bindings in dat/clua are called, as are all hooks etc. (Most will be unable to do anything, but this would allow someone to set a default value for any hooks in dat/clua code.) *Motivation.* The main use case for this that I can think of is security: a security-conscious server admin may prefer their users to not be able to run clua in their rc file. However, this use case has been severely broken for some time, because the following were also disabled by undefining this variable: autofight, stash tracker annotation, delay interruption, kill annotation, and a few other minor things. Realistically no one is going to want to play modern crawl without at least the first two of these. Because of the (potential) security application, I don't want to remove it entirely, but if it is going to be usable for that, it needed some work. In addition, the existence of this #define required anyone implementing a clua binding to get the preprocessor setup right, and if they really wanted to do that, to test on two builds (one of which required editing the Makefile). Nearly every dev comment I can find about CLUA_BINDINGS going back to 2011 is basically asking why it exists. So this commit is an attempt to provide some value. One awkwardness: there is a bunch of lua code in dat/defaults/autopickup_exceptions.txt. Because this is treated as an rc file, it will error (and not work) on a non-user-clua build. This is all a bit hypothetical now but possibly it would be better for this code to be implemented in a dat/clua file rather than a default rc include. -------------------------------------------------------------------------------- 4c303a47fc | advil | 2020-11-25 09:11:01 -0500 Don't show item letters for actions in quiver I had these in as an extension of previous behavior for ammo, but in practice I've found the letters more confusing than helpful. If people do want these, it could go back in. -------------------------------------------------------------------------------- aeda7b1d4a | advil | 2020-11-25 09:11:01 -0500 add CMD_AUTOFIRE to `p` I'm not sure `p` is the best choice, and it really doesn't stand for anything relevant, but there was some consensus that people wanted a thing besides shift-tab. So try this for now. -------------------------------------------------------------------------------- 562f6ed73d | advil | 2020-11-25 09:11:01 -0500 Fix a tag upgrade issue -------------------------------------------------------------------------------- 281963b6d2 | advil | 2020-11-25 09:11:01 -0500 Let staff of olgreb use the static targeter when needed -------------------------------------------------------------------------------- bb0a9072ea | advil | 2020-11-25 09:11:01 -0500 First-pass implementation for quivering abilities There's a lot of idiosyncracy in the ability list, but this commit gets the main points and works for everything I've tested directly. Probably further tweaking is required for some special cases, and this may require some iteration with actual player testing to really shake out the use cases. (And the ability code is a mess, a lot more stuff could be dataified...) Main TODO: non-targeted abilities use the "untargeted cast" interface when [f]iring from the quiver, but several of these would benefit from a static targeter. (For the ones that affect the player, which is most of them, there's not much difference, but these could still use the self-targeted static targeter when firing.) -------------------------------------------------------------------------------- f0f3f8f090 | advil | 2020-11-25 09:11:01 -0500 Update some options text for quivering-related changes -------------------------------------------------------------------------------- 351bd4327b | advil | 2020-11-25 09:11:01 -0500 Allow quivering evokable unrands There are only three of these, and two are not common at all, but it's actually pretty useful for olgreb. Because of the unrand API, this implementation is a bit hacky, but with only a few items I'm not currently excited about writing a more general API for some of this stuff. -------------------------------------------------------------------------------- 1bb892847f | advil | 2020-11-25 09:11:01 -0500 Implement target preselection for artefacts There is only one artefact that currently needs this, the staff of dispater. This finishes out the API for allowing target preselection for everything that can be triggered via `evoke_item`. -------------------------------------------------------------------------------- 1f324f914e | advil | 2020-11-25 09:11:01 -0500 Implement quivering/firing misc evocables I'm not entirely sure how useful this will be, because you usually want to intersperse firing these with doing other things that also might be in the quiver. But, it is straightforward to implement, and the targeted ones needed to handle target selection anyways. -------------------------------------------------------------------------------- bee9178c8b | advil | 2020-11-25 09:11:01 -0500 Some tweaks around quiver mp usage This is mostly scaffolding; to get this to work well needs another refactor I think. -------------------------------------------------------------------------------- 44f2c8cc77 | advil | 2020-11-25 09:11:01 -0500 Fix a bunch of shadow warnings -------------------------------------------------------------------------------- dfb12c3783 | advil | 2020-11-25 09:11:01 -0500 Fix some lingering grd instances, other issues (following a rebase against master) -------------------------------------------------------------------------------- bde5eff12d | advil | 2020-11-25 09:11:01 -0500 Tweak autofight_throw behavior and clarify comments This is an incremental improvement that more closely matches previous behavior for this option; it lets hit_closest move the player with a disabled quiver. However, I do think that many autofight options need a rethink for generalized quivering that I haven't yet done, so there may be further changes. (One obvious issue: autofight_throw=true and hit_closest_nomove have pretty weird behavior if what is quivered is not an attack.) Holding off on full documentation updates until the fate of these options is more settled. -------------------------------------------------------------------------------- 361857bee0 | advil | 2020-11-25 09:11:01 -0500 Improve target selection for explosions/clouds For spells like fireball, this lets shift-tab use indirect targeting at the edge of range. (Similar to how automagic behaved.) -------------------------------------------------------------------------------- 71d5f92254 | advil | 2020-11-25 09:11:00 -0500 Improve messaging for confused ammo firing This prints an error message, similar to spell uselessness reasons. -------------------------------------------------------------------------------- 4502bb1e84 | advil | 2020-11-25 09:11:00 -0500 Refactor a few casting checks Because MP is decremented before your_spells is called for regular casting, the error messaging in the targeter was showing low MP messages in wrong cases. This handles some casting-general checks differently than other uselessness checks so that they can be consistently performed in cast_a_spell, and therefore ignored within your_spells. It also removes one existing messy unwind case that worked around this. The situation is still a bit of a mess though. -------------------------------------------------------------------------------- aae50c702f | advil | 2020-11-25 09:11:00 -0500 Fix temp on several uselessness checks Also switch capitalization so it conforms to everything else. -------------------------------------------------------------------------------- 19a61ae6e1 | advil | 2020-11-25 09:11:00 -0500 Add a simplified uselessness check for passwall Doing the real thing is not practical, but we can at least check if the player is adjacent to something that could be passed. -------------------------------------------------------------------------------- 6056049701 | advil | 2020-11-25 09:11:00 -0500 Improve uselessness checks for corpse rot Success was previously only checked after the fact; this refactors things so that the spell is correctly marked as currently useless if there are no nearby corpses. (It might be nice to also mark corpses that would be affected in the targeter, but I won't get to that right now.) -------------------------------------------------------------------------------- 798577c133 | advil | 2020-11-25 09:11:00 -0500 Clean up some necromancy preconditions This adds actual uselessness checks for animate skeleton, animate dead, and simulacrum, as well as improves code reuse for their static targeters. This commit also changes the behavior of static targeters so that they always start on the player. Not sure this is generally right... -------------------------------------------------------------------------------- 75ba72c780 | advil | 2020-11-25 09:11:00 -0500 Remove some debug code -------------------------------------------------------------------------------- b1a65e9133 | advil | 2020-11-25 09:11:00 -0500 Simplify launching? This gives launchers their own quiver that stably retains the last quivered ammo for that launcher, so that the main quiver slot can hold something else. tldr: tab(/v) always attacks with the main weapon if possible (/aims with the main weapon for non-melee). Shift-tab(/f) always fires the quivered action (/aims the quivered action). You still use the main quiver to change the launcher ammo where relevant. (Which is pretty much only for slings.) Associated changes in detail: * tab always fires a wielded launcher (as long as its quiver is not empty). After this change, tab is much closer to a "primary attack" button triggering whatever is wielded, and you have to work at it to get tab (as opposed to shift-tab) to fire the main quiver. (This can still happen if you wield a non-weapon, probably, or by messing with autofight settings.) * launchers can be fired using v even if the main quiver has something else, similar to reaching weapons. This is kind of odd, but doing this as another case of CMD_EVOKE_WIELDED allowed me to reuse a bunch of code and also allowed me not to complicate the lua interface beyond what was already there for reaching. * quivering relevant ammo in the main quiver sets it for the launcher. This currently the only way to change the launcher quiver. Quivering nothing also force-clears the launcher quiver. * wielding a launcher autoswitches only the launcher quiver to the correct ammo. (Vestiges of old quiver code still track what was last used and select that, but this matters only for slings. More of the old quiver code has been removed.) * if the quivers are different, the launcher ammo is displayed to the right of the wielded weapon name (potentially overwriting some of it). If they are the same, only the main quiver version is shown. (In this case, tab and shift-tab have identical results -- but shift-tab will only fire a launcher if that launcher's ammo is showing in the main quiver.) This is, perhaps, a step to having a full "primary action" slot (associated by default with whatever is wielded, but where anything could be quivered) and a secondary action slot corresponding to the current regular quiver. -------------------------------------------------------------------------------- f6c6f4e90c | advil | 2020-11-25 09:11:00 -0500 Fix various issues with firing disabled spells This fixes an initialization bug that affected quiver cycling with disabled spells, and smooths out a number of UI issues: * For spells that can trigger the targeter while disabled, it generally prints the spell_uselessness_reason error message in the initial targeting prompt, which makes the situation much clearer. (There are still many spells that can't trigger the targeter while disabled under at least some circumstances, e.g. sandblast with 0 stones.) * Currently useless spells are shown in dark grey in the targeter. * Currently useless spells never try to find a default target if they can get to the targeter. (Instead the cursor starts positioned on the player.) * When autofiring disabled spells, it now prints the disabling reason rather than the default autofight error (which is sometimes fairly underinformative). -------------------------------------------------------------------------------- 7216dc4718 | advil | 2020-11-25 09:11:00 -0500 Don't wipe out top_prompt in UIDirectionChooserView This looks like it would have handled fire_target_behaviour correctly, but it always cleared the prompt for the stock behaviour object that is used in places besides throwing. -------------------------------------------------------------------------------- c796653dd0 | advil | 2020-11-25 09:11:00 -0500 Tweak static targeting for a bunch of self-targeted spells This could possibly be simplified by adding a spflag for these? I decided against reusing selfench for all these cases because its meaning is a bit overloaded. Though I am not entirely sure why transmutation spells that are self-targeted are never marked as selfench. -------------------------------------------------------------------------------- 955d01e223 | advil | 2020-11-25 09:11:00 -0500 Add a (static) targeter for frozen ramparts This was the main missing complex positional targeter, unless I've missed something. A little tricky to get exactly right. -------------------------------------------------------------------------------- 8aebc96f93 | advil | 2020-11-25 09:11:00 -0500 Improved confused throwing from quiver This treats confused throwing as untargeted in the UI, so you get a chance to abort from `f`, and it works with quiver cycling. Also, explicitly indicate that it is different in the quiver description. -------------------------------------------------------------------------------- 0fdd853446 | advil | 2020-11-25 09:11:00 -0500 Add static targeters for most untargeted spells Targeters serve two roles: aiming, and telling the player what will happen once they trigger the action. This is especially brought out with the revamped fire interface, which shows a targeter for any action, with a default empty looking-around targeter as a fallback -- this UI works a lot better if it's actually showing what to do. For many spells this is exceedingly boring, but for some of the more exotic positional spells I think it's actually a huge improvement for new players to be able to see these. In some cases these targeters provide information that was previously hard to calculate despite being deterministic, with two standouts being the absolute zero target, and the animate skeleton target. (If this is bad, then these spells should be randomized when there are multiple enemies/corpses at the same distance, not deterministic.) By default static targeters are not shown for `z`, but there's an option that lets you force them even there. No doubt they'd be kind of annoying to long-time players but this is pretty useful information for someone who doesn't have every spell memorized. They are always used for `Z` casting, and in the fire interface. Still some cases missing. -------------------------------------------------------------------------------- fe2187900e | advil | 2020-11-25 09:11:00 -0500 Improve handling of disabled actions when cycling fire In some cases, depending on the details of the action, disabled actions can't get to a direction chooser at all (case: sandblast with 0 stones), and so cycling to them in the fire prompt would exit the prompt. This just skips them for UI consistency. You can still force quiver them, and they may still exit the prompt when doing so (depends on the action). -------------------------------------------------------------------------------- 631ad8ecb3 | advil | 2020-11-25 09:11:00 -0500 Re-implement tossing Tossing was temporarily impossible after throwing get refactored entirely into the fire system. This adds an action type for tossing that is not used unless items are force-quivered. It is currently not possible to toss items that can be otherwise quivered, including wands. This allows quivering items for tossing. There was some discussion in ##crawl-dev on whether this was a good idea, and I'm not sure it is; but as long as there is tossing at all, there is no reason to make it impossible to do via the quiver (and in fact with the current API, that would be more work rather than less). I don't particularly want to take a stand on whether tossing is a good idea in the first place as part of this commit series, so I leave things as they were. -------------------------------------------------------------------------------- 3b221d4c60 | advil | 2020-11-25 09:11:00 -0500 Revamp fire interface to fully handle fire actions This commit wraps the various ways of triggering a direction chooser in yet another layer of api that handles cycling between and selection of arbitrary actions. The challenge here is that there are many ways to trigger a direction chooser, which may involve extremely idiosyncratic setup that is not controlled internal to the direction chooser. So, to switch from e.g. a firestorm targeter to an iceblast wand targer is something that simply can't be done inside the direction chooser UI without some kind of extremely major rewrite. Instead, what this does is rebuild the custom targeter for each action while cycling in a way that looks like a seamless UI to the player. In the long run, there may be ways of gradually refactoring bits and pieces of code to make this less painful. For example, if every action were only called via the quiver::action api, then the intervening could could be slimmed down quite a bit, with most messaging etc refactored into actions. But, this is not practical to do all at once. I have however done this for throwing as a kind of prototype, since this was basically the simplest case. (But, there's still more refactoring/simplification to do even there.) For untargeted spells, right now in the fire interface you basically just get a variant of the "just looking" targeter. However, I think there are better things to do for many of these spells that will come in a future commit. -------------------------------------------------------------------------------- 01ffde2ee0 | advil | 2020-11-25 09:11:00 -0500 Quiet beam messages by default I should have done this years ago. -------------------------------------------------------------------------------- c499aaac4f | advil | 2020-11-25 09:11:00 -0500 Remove "quiver unavailable" Now, just show the quivered element grayed out. -------------------------------------------------------------------------------- 39fea7d47b | advil | 2020-11-25 09:11:00 -0500 Adjust newquiver save compat behavior Now loads the previously quivered ammo. -------------------------------------------------------------------------------- cd8006399c | advil | 2020-11-25 09:11:00 -0500 Add a custom quiver display for sandblast Also, generalize some sandblast code, and only show item count in the message window if the spell is not quivered. -------------------------------------------------------------------------------- 98f1491d44 | advil | 2020-11-25 09:11:00 -0500 First-pass menu for generalized quivering This is probably still missing all sorts of bells and whistles, but it provides a quiver selection menu that covers the basics for the `Q` menu, as well as selecting items from the fire interface. -------------------------------------------------------------------------------- f2fa652baf | advil | 2020-11-25 09:11:00 -0500 Clean up evoke checks a bit Move more checks into evoke_check, and use it more widely (including for quivering wands). This handles zigfigs and reaching slightly differently than in the past; while berserk (etc) V is now possible if either of these are in play, but will only show the currently enabled items in the menu. -------------------------------------------------------------------------------- 2d68e64195 | advil | 2020-11-25 09:11:00 -0500 Improvements to fire order and display Refactored the initial implementation of find_next to be more general and clean, and improved a bunch of is_enabled checks and messaging. -------------------------------------------------------------------------------- 413aeb54f4 | advil | 2020-11-25 09:11:00 -0500 Improve autotargeting for various quivered spells This is the direction chooser's smart autotargeting for most spells on top of (or in some cases instead of) autofight target selection. There are a few cases where it is necessary to drop to manual targeting, but for the most part this allows sensible shift-tab behavior for various complicated spells like LRD, cloud spells, etc. The simple_targeting option applies if set. There's still a somewhat involved division of labor between autofight target selection and the direction chooser, where afaict the main difference is that the former prioritizes closer targets, and the latter prioritizes previous targets if there any, and then closest targets. Possibly this could all be simplified into one thing? But for now autofight handles messaging in a useful way for all sorts of error cases. -------------------------------------------------------------------------------- 4bf0199a49 | advil | 2020-11-25 09:11:00 -0500 Skip digging for quiver There's no use for this that I can think of, and it has a bad interaction with default autotargeting. -------------------------------------------------------------------------------- 48ffb1d3d0 | advil | 2020-11-25 09:11:00 -0500 Trigger untargeted actions directly on autofire That is, bypass all the convoluted lua stuff when a target is not needed. Some of these may do better with an error if there is no foe, but this new blanket behavior behavior matches the regular cast behavior so it's a bit closer to what you would expect. Some interesting cases to think about: blink, berserk (not yet implemented), foxfire, conjure flame, irradiate. More fine-grained logic needed.. -------------------------------------------------------------------------------- 604836d2a6 | advil | 2020-11-25 09:11:00 -0500 Simplify default shift-tab behavior The previous behavior was to use the quiver only when not in melee range (and not wielding a launcher). This new behavior seems more appropriate for the wider range of quiver options now available, including actions that are untargeted: it simply always triggers the action on shift-tab. The previous behavior is still present and bindable. It might be nice to have better in-game customization of this because I'm not sure there's one default that really does make sense across all action types. This is bolted on in a somewhat hacky way to existing autotarget code. A better refactor might be to extract only the targeting code from autofight, and have actions use that directly to find a target only when needed. -------------------------------------------------------------------------------- 5840989f9b | advil | 2020-11-25 09:11:00 -0500 Allow quivering wands This was relatively straightforward to implement, given all the previous infrastructure. However, it is once again ui-incomplete; you can quiver wands from the Q menu but only using *. Another obvious issue (that will apply to some spells as well) is that the fire targeter doesn't handle custom hitfuncs, e.g. for iceblast. -------------------------------------------------------------------------------- c08bbfc749 | advil | 2020-11-25 09:11:00 -0500 Update docs for quiver miscast severity option -------------------------------------------------------------------------------- efa02f9678 | advil | 2020-11-25 09:11:00 -0500 Don't quiver dangerous spells by default This adds an option to let you control the miscast severity threshold for this check, defaulting to no dangerous spells. (I'm not sure if any book starts might have their starting spell excluded with this default, so it may need some tweaking.) Also, removes an annoying dprf. -------------------------------------------------------------------------------- 640fc51a6f | advil | 2020-11-25 09:11:00 -0500 Implement quivering spells This provides a much better interface to spell firing than automagic. This commit is *not* ui-complete: while quivering spells via cycle and cycle under `f` should be fully implemented, I have not yet worked on the `Q` menu or the menus from `f`, which both still only let you quiver items. Some notes * book starts will autoquiver a spell if that's first in the fire order. * there's still a lot of legacy code that I don't understand well enough to have fully removed. TBD. * I've left in the legacy serialization code for the ammo history, which definitely needs some revisiting. Actions are now serialized as a prop though, in a much simpler way. * some polishing TODOs remain, and this is a complicated enough change that this commit may still lead to unexpected behavior. (E.g. I'm 80% certain there's no tricky way for felids to fire ammo with this new API...) * no options yet affect this, it may be desirable to tweak fire_order. -------------------------------------------------------------------------------- ca729177e3 | advil | 2020-11-25 09:11:00 -0500 Let beam spells target test statues without Z -------------------------------------------------------------------------------- e642e6e074 | advil | 2020-11-25 09:11:00 -0500 Don't let browser eat shift-tab in webtiles -------------------------------------------------------------------------------- e6153d18e9 | advil | 2020-11-25 09:11:00 -0500 Refactor and generalize quivering This commit rewrites the quiver to be both more usable and more general, cleaning up a lot of ncient and hard-to-understand logic. The basic idea is that what gets quivered is a quiver::action, and this is stored directly. This class abstracts over many of the details of what kind of action it is, paving the way for some interesting future commits. Right now, though, the system just reimplements the old quiver functionality involving ammo. I was not able to fully eliminate the old player_quiver, but the descendent class (quiver::history) is much simpler and used basically for tracking what was last quivered of any ammo type. Right now, it still handles serialization as well, and inventory changes. Most of the weirdest stuff is cleaned up, hopefully. There may be some logic changes (because old quiver logic was quite convoluted and I don't necessarily understand everything it did). One that I do know of is that throwing ammo won't auto-quiver when you run out of launcher ammo. -------------------------------------------------------------------------------- 99b756640e | advil | 2020-11-25 09:10:59 -0500 Rename a quiver enum -------------------------------------------------------------------------------- 31eddc3830 | advil | 2020-11-25 09:10:59 -0500 Rudimentary API for programmatic targeting Many commands implicitly take a target as an argument, and collect that argument only via the interactive direction chooser. Because of this, the only way to script these commands (e.g. in autofight.lua) is to send commands to the interactive direction chooser interface. As the direction chooser has become more widgetified, this has become heavier and heavier to do, leading to noticeable lag in autofire. At the same time, interacting with this UI programmatically has long been a source of hard-to-solve bugs and brittleness. For these reasons, this commit adds a first pass implementation of supplying a target directly to such commands, and uses it for autofire and autoreach. On the c++ side, there is now a non-interactive way of calling the direction chooser that still uses all the error checking and messaging. On the lua side, there is a way of supplying (so far, just a few) commands directly with a player-relative coordinate. This commit leaves automagic untouched (and regular melee combat doesn't use the direction chooser). -------------------------------------------------------------------------------- 3bff4b215c | Nicholas Feinberg | 2020-11-24 18:44:03 -0800 Improve net traps Prior to this commit, net traps would fire exactly once, launching a net that the player could use. After this, they'd be destroyed. This encouraged the player to intentionally and methodically step on net traps to 'disarm' them and to get net traps for their own use. Not particularly interesting or fun gameplay! Instead, make net traps permanent, and make their nets always mulch. This will make life a bit harder for players in some places (Zot, Tomb), but we can always adjust trap frequency as appropriate. -------------------------------------------------------------------------------- 8d2f3042de | Nicholas Feinberg | 2020-11-24 18:44:03 -0800 Rework player spell accuracy display It didn't work - the approximation was too crude. We pretended we were only rolling a random number once (for to-hit), but we actually rolled target EV 3 times as well - and more rolls if the target had rMsl! We now try to simulate most of that (though not rMsl). It seems like even in the worst likely cases (high-accuracy spells against a haloed high-EV target), we only run about 150k iterations, which is very fast locally. This produces much more accurate results. The correct solution is to simplify the beam accuracy calculations, as we have with melee/ranged attack accuracy, but that's a larger task than I want to attempt this close to feature freeze. -------------------------------------------------------------------------------- 513ac319d2 | Nicholas Feinberg | 2020-11-24 18:44:03 -0800 Rename greater mummies to royal mummies (gressup) The great crusade against greatness continues. 'Greater' is a pretty vague and generic descriptor when the existing lore (the monster description) already calls these terrifying creatures 'ancient pharoahs'. It's also annoyingly close to the name of 'guardian mummies', which shows up in the same place! Let's differentiate a bit. You may call these "mummyrajas" if you prefer. -------------------------------------------------------------------------------- 261a1d5db6 | Nicholas Feinberg | 2020-11-24 18:44:03 -0800 Don't show the zot clock in Abyss Or on the orb run or wherever else it might be disabled, even if always_show_zot is on. -------------------------------------------------------------------------------- f57989e088 | advil | 2020-11-24 13:04:59 -0500 Fix for hep games that get soft-locked in abyss Under some poorly understood circumstances, hep ancestors can drop weapons in the abyss, and when they do, sometimes (???) these items can form a stack. The former just causes annoying errors, but the latter will trigger a crash any time `abyss_morph` is triggered. With relatively deterministic rng these days, that will soft-lock the game in the abyss; I think in the past when this happened you could just reload and end up with a different rng state by doing some stuff in the ui, and then if you were lucky the crash wouldn't replicate). This commit fixes the symptoms by clearing the buggy items during abyss_morph. More crashlogs won't really help at this point, there are plenty and still no one has figured out how to replicate this crash. https://crawl.develz.org/mantis/view.php?id=11756 -------------------------------------------------------------------------------- bf766624f9 | Nicholas Feinberg | 2020-11-23 17:14:34 -0800 Add a killer klown kast message (zipskins) -------------------------------------------------------------------------------- 47dfa6ee30 | Nicholas Feinberg | 2020-11-23 17:10:55 -0800 Describe marshlight in monster (vt) -------------------------------------------------------------------------------- 4463a752a4 | Nicholas Feinberg | 2020-11-23 17:06:58 -0800 Don't claim fireballs can miss (lici) -------------------------------------------------------------------------------- a9d2d7650c | Nicholas Feinberg | 2020-11-23 17:04:51 -0800 Remove an unused function -------------------------------------------------------------------------------- dc81c2f471 | Nicholas Feinberg | 2020-11-21 13:46:25 -0800 Show spell to-hit % in the targeter This is a fairly crude approximation, but I think it should be relatively correct. It's nice to have a basic sense of how likely you are to hit, for both players and devs - balance is a lot harder without real accuracy numbers! -------------------------------------------------------------------------------- e5b14bf77e | Nicholas Feinberg | 2020-11-21 13:37:28 -0800 Make lighting affects beams more like attacks Lighting effects (accuracy bonuses from haloes and penalties from umbrae) were applied before the to-hit roll for beams and before the roll for melee & ranged attacks, meaning that they had roughly half the effect on beams that they did on attacks. This doubles their effect on beams to be more consistent with attacks. Players will see better results with wands and spells under TSO and worse results trying to hit anything near a profane servitor with spells. -------------------------------------------------------------------------------- 6321bf7485 | Nicholas Feinberg | 2020-11-20 17:17:27 -0800 Halve distortion banish weight (hellmonk) From 14964f1db53dd4 : ...if the new distortion becomes too strong with a 10% banish these numbers can be further adjusted. -------------------------------------------------------------------------------- 735459dd53 | advil | 2020-11-20 16:22:17 -0500 Remove invocation removal on switching gods. Also remove some vestigial code. -------------------------------------------------------------------------------- 97a50ab700 | Nicholas Feinberg | 2020-11-19 21:40:35 -0800 Replace tloc -Tele with -Move -Tele was a cute downside for translocation spells, which are often about escape. However, it was sometimes quite advantageous: players faced with an undesirable teleport trap could memorize a tloc spell and miscast it to pass through. Funny, but not very entertaining gameplay. So, replace -Tele with -Move, completely preventing the player from moving (ala treeform + dimensional anchor) for a short period. Seems much more commonly relevant, and significantly less likely to encourage boring play patterns. -------------------------------------------------------------------------------- f1512cd430 | Nicholas Feinberg | 2020-11-19 08:13:57 -0800 Increase marshlight cast frequency Since it's really the only thing will-o-the-wisps do, they can afford to cast their spell closer to 1/4 times instead of 1/6. -------------------------------------------------------------------------------- 902a77ae82 | Nicholas Feinberg | 2020-11-19 08:12:21 -0800 Slow goliath frogs down a bit They've been consistently more lethal than intended. Going from speed 14 to speed 12 should reduce damage & corrosion, as wel as giving players more ways to escape their terrifying anuran wrath. -------------------------------------------------------------------------------- d8113324d5 | gammafunk | 2020-11-19 06:14:42 -0600 Fix spriggan druids not casting Awaken Forest (Lici) Broken in c03f2b59, the original logic inverted in that batch of fixes was in fact correct. Spriggan druids had the spell, but would never try to cast it before this fix. -------------------------------------------------------------------------------- cc8f1ee719 | advil | 2020-11-18 20:20:25 -0500 Reword the demigod description (monkeytor) wow, yeah. -------------------------------------------------------------------------------- facbca91cf | gammafunk | 2020-11-18 11:18:10 -0600 Fix some problems in a vault The newly introduced gammafunk_indiana_jones was fairly spoilery, since you couldn't see much into the vault. Vaults that don't fully reveal their contents to the outside will always have some amount of spoilers, but this vault didn't telegraph what the player would face, which includes Zot traps at later depths. Allow peering well into the vault from outside the runed door by turning some strategically chosen walls into floor (or possibly Zot traps at the right depth). Additionally the internal layout was very closed, making it very easy to fighting the first wave of monsters 1v1. Add some randomized floor to the switchback walls. Also turn the last door into a clear one so the player can see the full contents of the treasure room before deciding to fight any boulder beetles. Finally, use an inner wall of rock that we can decorate with thematic wall tiles, behind which we use stone to prevent easy digging. Also use decorative floor tiles to match the walls. -------------------------------------------------------------------------------- 3dd439832f | Nicholas Feinberg | 2020-11-17 22:35:09 -0800 Turn monster explosions into fineffs Explosions firing immediately causes a pretty classic set of issues - we're invalidating the old state of the world in surprising ways. For example, if a ball lightning explodes and kills an attacker midway through the resolution of a multi-target attack (e.g. a javelin toss), the game just has no way to figure out how to resolve the rest of the attack afterward - it can't generate new ranged_attacks without the original attacker, so it just crashes. Instead, let's wait until the *end* of any ongoing melee attacks or beams before triggering death explosions. The timing here is slightly different for attack-triggered fineffs - we trigger them a little later now melee attacks, in fight.cc - but hopefully that's ok. Overall, this code is very bad and probably buggy. I'm sorry. -------------------------------------------------------------------------------- e40b904635 | Nicholas Feinberg | 2020-11-17 21:25:41 -0800 Constify torment_player agent -------------------------------------------------------------------------------- c41a8854c2 | Nicholas Feinberg | 2020-11-17 21:25:40 -0800 Constify petrify agent -------------------------------------------------------------------------------- b6d1a298b2 | Nicholas Feinberg | 2020-11-17 21:25:40 -0800 Constify banish agent -------------------------------------------------------------------------------- 1d16244ef9 | Nicholas Feinberg | 2020-11-17 21:25:40 -0800 Constify paralyse agent -------------------------------------------------------------------------------- ea2d263aa7 | Nicholas Feinberg | 2020-11-17 21:25:40 -0800 Remove unused params -------------------------------------------------------------------------------- cb17a628a6 | Nicholas Feinberg | 2020-11-17 20:58:17 -0800 Constify drain_exp agent -------------------------------------------------------------------------------- 5a8a614f01 | Nicholas Feinberg | 2020-11-17 08:34:27 -0800 Add rolling charge ability icon -------------------------------------------------------------------------------- aa9f5d3e14 | Nicholas Feinberg | 2020-11-17 08:06:38 -0800 Make boulder beetles jumpier (yesno) Better messaging and cloud sfx, matching the intended flavour. -------------------------------------------------------------------------------- 8259106e14 | Nicholas Feinberg | 2020-11-16 08:25:12 -0800 Partially fix skill menu (dinky) Still a little strange when useless skills are de-focused, but OK. -------------------------------------------------------------------------------- 69557b85cc | Nicholas Feinberg | 2020-11-15 22:00:17 -0800 Remove skill training restrictions (hellmonk) After the old XP pool system was removed and the current skill training system was added, one odd edge case was that you had to have an item, spell, or god ability somehow relevant to a skill to be able to train it. This was not particularly consistent. For example, training got special-cased to be always allowed to avoid annoyance when you'd thrown everything you had, and pain brand, though depending on necromancy, did not allow you to train it. In general, it's better to have less complexity and fewer special cases, so by default it seems good to remove these rather complex restrictions. The argument against has been that training these skills is rarely useful (true, but so are many things players do!), and that a massive skill screen would intimidate new players. Thankfully, to avoid the latter case, we can retain much of the old code to hide many skills by default, while still allowing experienced players to use them, in the same way that they can use manual training instead of automatic. In fact, since we no longer need to special case Throwing, new players will often see a smaller skill screen than before! -------------------------------------------------------------------------------- 7262b39652 | Kyle Rawlins | 2020-11-15 12:09:00 -0500 Tweaks to quickstart.md This is shown in game, so needs to look reasonable as text. Adjust the headers and a few other details. It still uses a bit too much formatting for this, so it would be ideal if we had a way of stripping out the md and generated a .txt. Also, remove food, and a few other minor wording tweaks. -------------------------------------------------------------------------------- 78611b2a4a | advil | 2020-11-15 09:43:47 -0500 Reorder a Makefile rule for backwards compatibility Prior to gnu make 3.82, when there were multiple pattern matches, the earlier rule was preferred, so the .h.o rule needs to precede the regular .o rule for these versions. -------------------------------------------------------------------------------- 7192265339 | advil | 2020-11-14 21:18:31 -0500 Clean up plants in post-placement fills (Lightli) Regular monsters (and items) shouldn't appear outside of vaults at this point in the level generation process, but plants are entirely possible in some layouts. This commit allows plants to be cleaned up, and prevents post-placement filling of squares with non-firewood. (The fill code itself will wipe out anything, beware.) -------------------------------------------------------------------------------- 2a559e7be2 | advil | 2020-11-14 15:33:47 -0500 lint -------------------------------------------------------------------------------- 581e7e17b6 | advil | 2020-11-14 15:20:56 -0500 Improvements to placement.lua Main change: allow outputting the builder log along with the map. Other tweaks to documentation and comments. -------------------------------------------------------------------------------- e73a099111 | advil | 2020-11-14 15:16:02 -0500 Mark des_cache_test as unrand It already can't place in at least two ways, but this further cements things. -------------------------------------------------------------------------------- 940fe7d004 | advil | 2020-11-14 15:07:47 -0500 Fix a typo in chequers_temple_overflow_minitemple -------------------------------------------------------------------------------- ddd851d81b | advil | 2020-11-14 14:39:58 -0500 Initialize a variable May or may not avoid crashes that I can't replicate. -------------------------------------------------------------------------------- 110d042ebb | advil | 2020-11-14 13:18:19 -0500 Add more doc comments to placement.lua Since in 06017ff571 I messed up the pasting of the example output, I thought it might be useful to duplicate this text in comments on the script itself, with the correct output. -------------------------------------------------------------------------------- 73b9a89994 | advil | 2020-11-14 11:03:34 -0500 Large batch of connectivity / placement fixes These fall into three categories: 1. Fixes that are oriented towards getting automated testing to pass. - e.g. cleanups around CLEAR tiles that may be non-issues in practice; example: for compass oriented vaults I've added explicit wall tiles in the appropriate direction so that the vault is not making assumptions about the underlying tiles. - clarifying `unrand` tags for pure subvaults where needed (in some cases these relied on lack of depth marking to not place). Added the `removed` tag for a few special cases. - lua fixes that cleaned up background assumptions 2. Genuine fixes for many vaults. Examples: - actual CLEAR issues were relatively common: these can cause a veto if the vault overlays in a way that puts a floor tile under this kind of position. - varied closets, often involving water, often only under some circumstances. Fix some KMASK mistakes where the writer probably was assuming it applied immediately. - Some cleanups for opaque masking / transparency. This script isn't really geared towards testing fully opaque vaults, but it is good at finding incorrectly done opaque masking on transparent vaults. (However, there are a bunch of transparency fixes from veto testing that are rolled into here that I should have committed first.) 3. Comments for a few vaults that I didn't fix. (See also the force overrides in placement.lua.) -------------------------------------------------------------------------------- 6f5aefb819 | advil | 2020-11-14 11:03:34 -0500 Tweaks to minmay_the_grid for occasional closets These closets are of the veto-triggering kind, not the tele closet kind. I'm not very confident that these are the ultimately best fixes, but they are fixes. They target an issue with a specific style of subvault that relied on the surrounding tiles for connectivity: these subvaults assume external passable squares that lined up with the internal gaps, but it's possible for those external squares to become walls, leading to closets. Otherwise I've done a lot of bulk testing of minmay_the_grid vaults, and haven't found other connectivity issues. (Right now my script can't place the ultimate one, though, so that could use some followup.) -------------------------------------------------------------------------------- 06017ff571 | advil | 2020-11-14 11:03:34 -0500 Add a script for automated placement and connectivity testing This repurposes an ancient, and dormant, test that placed a single vault and adds a bunch of features to make it useful for bulk testing vaults, targeting basic placement issues and connectivity. This is extremely useful for finding rare connectivity issues, and for doing a pass through all vaults to find obvious veto-triggering closets. Unfortunately I suspect it takes to long to be viable as a CI test (though I may still try this out), and is better interactively. Initial fixes as a result of developing this script will come in separate commits. Use case: ``` $ util/fake_pty ./crawl -script placement.lua minmay_nonomino_d4 -count 10 -dump Testing map 'minmay_nonomino_d4' Failing vault output to: placement-minmay_nonomino_d4.10.txt script error: ./scripts/placement.lua:184: Isolated area in vault minmay_nonomino_d4 (2 zones) ``` This generates this vault on a blank level 10 times and outputs each map to a file. In this case, it failed on try 10 (which aborts) and so it stops then and points out the specific failing file to you. This file shows the whole level, but here's an excerpt illustrating the vault itself: ``` ``` In this case the problem is pretty visible, though sometimes connectivity issues do not pop out in the test output (e.g. ones involving water, or CLEAR tiles, etc.) and need further debugging. Currently this script is geared towards finding isolated areas that will trigger vetoes, though it might be extendable to do other related things that it doesn't know (e.g. find tele closets in opaque maps). The script skips various kinds of maps, and is hard-coded to skip certain specific maps that either are ones I haven't yet figured out how to solve, or illustrate some other unusual circumstance that can't be detected from tags. The two biggest skipped categories are encompass maps, and unrand maps. The latter are usually pure subvaults, so testing the map that places them exercises them. (Though in practice, you need to manually test these vaults with large -count arguments. I've done this in a few cases, e.g. minmay_the_grid maps, but not generally.) -------------------------------------------------------------------------------- e7e87f2ff1 | advil | 2020-11-14 11:03:34 -0500 Update explorer.lua for temple pregen change -------------------------------------------------------------------------------- 6a63ac1ee2 | advil | 2020-11-14 11:03:34 -0500 Skip input on tiles loading screen in test mode Possibly should be skipped for other cases too. -------------------------------------------------------------------------------- 6cf8f86288 | Nicholas Feinberg | 2020-11-14 07:49:09 -0800 Split out mon-explode It makes sense to me, and also it's a very funny name. -------------------------------------------------------------------------------- 75db068ed4 | Nicholas Feinberg | 2020-11-13 21:06:17 -0800 Let palentonga mutate to roll farther (dinky) Seems fun. Damage is still capped at 2x, since getting even more damage seems excessive. -------------------------------------------------------------------------------- dbf270a2a2 | Nicholas Feinberg | 2020-11-13 20:16:33 -0800 Remove dead code -------------------------------------------------------------------------------- 42129fe79a | Nicholas Feinberg | 2020-11-13 19:13:41 -0800 Revert "Revert "Don't crash in the skills menu (advil)"" This reverts commit 3d2bcdb4e9ce18204ec63b67a5d23613e6c4f2db. -------------------------------------------------------------------------------- 3d2bcdb4e9 | Nicholas Feinberg | 2020-11-13 18:31:19 -0800 Revert "Don't crash in the skills menu (advil)" Caused a different crash that I don't understand. This reverts commit e0c665c49dfa321371ae9ab94611a89d5c067a8e. -------------------------------------------------------------------------------- e366a860e6 | Nicholas Feinberg | 2020-11-13 17:59:00 -0800 Stop forcing Swamp We've gotten a few weeks of guaranteed Swamp testing and it seems to be in decent shape (if perhaps slightly too froggy and slightly not wispy enough), so let's set things back to normal. -------------------------------------------------------------------------------- e0c665c49d | Nicholas Feinberg | 2020-11-13 17:53:17 -0800 Don't crash in the skills menu (advil) I'm not confident in this use of save_game, but maybe it's OK? -------------------------------------------------------------------------------- 31a745ddcd | Nicholas Feinberg | 2020-11-12 07:54:14 -0800 Describe chain lightning damage in xv -------------------------------------------------------------------------------- ec22e641d3 | Nicholas Feinberg | 2020-11-12 07:53:37 -0800 Fix monster -------------------------------------------------------------------------------- e1a9524b62 | Nicholas Feinberg | 2020-11-11 18:26:14 -0800 Show IOOD damage in xv -------------------------------------------------------------------------------- 70ddbb00c7 | Nicholas Feinberg | 2020-11-11 18:25:56 -0800 Don't print hex %s in black on black -------------------------------------------------------------------------------- 930a2b7adc | Nicholas Feinberg | 2020-11-11 13:50:26 -0800 Colourize beam damage descriptions This is fairly useless but looks cool. -------------------------------------------------------------------------------- 6cde5fae71 | Nicholas Feinberg | 2020-11-11 13:08:12 -0800 Display marshlight damage in xv -------------------------------------------------------------------------------- 1df0a6b31e | Nicholas Feinberg | 2020-11-11 12:44:53 -0800 Make wall-border dig behaviour consistent (12380) Honestly not sure whether it makes more sense to stop digging or keep going, but it looks like more thought was put into the behaviour for non-border non-diggable walls (which causes the player to stop digging), so let's do that. -------------------------------------------------------------------------------- 17de90a3c3 | Nicholas Feinberg | 2020-11-11 10:16:58 -0800 Zappify natural spells At least, we can see Xtahua's magnificent damage in the wild. -------------------------------------------------------------------------------- f75564ed3b | Nicholas Feinberg | 2020-11-11 08:59:56 -0800 Zappify more monster beams -------------------------------------------------------------------------------- 70055ddf73 | Nicholas Feinberg | 2020-11-11 08:24:52 -0800 Display waterstrike damage on xv -------------------------------------------------------------------------------- 7b6e01e074 | Nicholas Feinberg | 2020-11-11 08:15:15 -0800 Deduplicate monster explosion methods -------------------------------------------------------------------------------- 84887b7506 | Nicholas Feinberg | 2020-11-11 08:15:15 -0800 Refactor monster explosions a bit -------------------------------------------------------------------------------- 517d6fe721 | CrawlCycle | 2020-11-10 19:44:21 +0200 docs: Document artp_value_type This commit documents artp_value_type, which is an enum for defining the type of a value of an artefact property. -------------------------------------------------------------------------------- 433cdae047 | CrawlCycle | 2020-11-10 19:44:05 +0200 docs: Document invalidate_agrid (#1588) * docs: Document invalidate_agrid The invalidate_agrid function invaldiates the area effect cache. The function has about 40 usages in the codebase. This commit adds doxygen comments to explain its effect. * docs: Revise docs as suggested by Pleasing Fungus Co-authored-by: CrawlCycle <66185335+CrawlCycle@users.noreply.github.com> -------------------------------------------------------------------------------- 743b41319e | Kieron Dunbar | 2020-11-10 19:16:24 +0200 Rename the "center_on_scroll" option as "centre_on_scroll", but let the user use either spelling. various functions: Rename the "center_on_scroll" option as "centre_on_scroll". read_init_file(): game_options::read_options(): Add "center_on_scroll := centre_on_scroll" as an alias, so that either version is accepted by the game. I added this in two places because the game clears the alias list three times while loading a saved game. 1. before reading start-ns.prf 2. before reading -extra-opts-first options. 3. before reading the settings file. start-ns.prf should not contain centre_on_scroll, but the others may do. -------------------------------------------------------------------------------- a5bd08485e | Kieron Dunbar | 2020-11-10 19:16:16 +0200 Change the spelling of some words to Australian English. This changes a few words which are either displayed by the game, or are in documentation for it. I haven't changed the changelog, however, or anything in source/contrib. The words I've changed are: Canceled -> Cancelled (arena.cc) center -> centre (arena.txt options_guide.txt) centered -> centred (options_guide.txt) centers -> centres (options_guide.txt) Cudgeler -> Cudgeller (skills.cc) labeled -> labelled (english.cc item-name.cc) reveler -> reveller (god-abil.cc) Reveler -> Reveller (features.txt, godname.txt, gods.txt) traveled -> travelled (shout.cc) -------------------------------------------------------------------------------- a991c35b56 | Nicholas Feinberg | 2020-11-10 09:10:40 -0800 Mention zot clock in E (nikheizen) -------------------------------------------------------------------------------- cbe7412673 | Nicholas Feinberg | 2020-11-10 09:10:40 -0800 Partially unify mons explosion logic This should really be unified with mons-death::_explode_monster as well. -------------------------------------------------------------------------------- 2f2a4d8ed9 | Nicholas Feinberg | 2020-11-10 09:10:40 -0800 Turn more monster spells into zaps So that they show up in xv. (Still many left to do...) -------------------------------------------------------------------------------- 00c8f0b8f8 | wheals | 2020-11-10 19:04:18 +0200 Fix the path for quickstart.md [closes #1599] -------------------------------------------------------------------------------- 42995fd38d | wheals | 2020-11-10 19:03:56 +0200 Re-wrap quickstart.md to 80 columns -------------------------------------------------------------------------------- 310f398bab | Sebastian Łużyński | 2020-11-10 18:56:06 +0200 Update quickstart.md -------------------------------------------------------------------------------- cdce9d9c90 | Sebastian Łużyński | 2020-11-10 18:56:06 +0200 Update quickstart.md -------------------------------------------------------------------------------- 23cac7494c | Sebastian Łużyński | 2020-11-10 18:56:06 +0200 Update and rename quickstart.txt to quickstart.md Just because this doc has been made long time ago, doesn't mean it has to be rudimentary :D -------------------------------------------------------------------------------- 897f35e60b | Midn8 | 2020-11-10 18:31:05 +0200 Properly Punctuate small damage distortion I don't even know how long this was broken, attack.cc has had a comment claiming that it was fine since disto can't do more than 7 damage, but 7 damage is one ! already. Ideally someone will also fix harm to work properly with attack_strength_punctuation, but that's above my pay grade. [dev note: properly punctuated code --wheals] -------------------------------------------------------------------------------- f67cdfb8ac | Nicholas Feinberg | 2020-11-09 20:42:22 -0800 Make an obvious removal This field was used to determine whether enchantments should print 'nothing happened', but it was always false for enchantments. It did nothing. -------------------------------------------------------------------------------- 888258f25a | Nicholas Feinberg | 2020-11-09 17:26:40 -0800 Make !attraction ignore friends Pulling friends in spams messages when following an ally god (e.g. Yred) and doesn't really do much interesting, either helpfully or harmfully. I haven't changed the duration start/end messages because I enjoy them, though maybe I should. -------------------------------------------------------------------------------- 1f3e2359fb | Nicholas Feinberg | 2020-11-09 17:19:51 -0800 Accept that Swamp and Shoals can coexist (#1606) For now, at least! -------------------------------------------------------------------------------- 51bffae0b1 | Nicholas Feinberg | 2020-11-09 09:48:42 -0800 Make witches less prehensile (RandomCharacter) -------------------------------------------------------------------------------- ba241ef417 | Aidan Holm | 2020-11-09 20:08:51 +0800 IWYU part 3 -------------------------------------------------------------------------------- bcc0732031 | Aidan Holm | 2020-11-09 20:08:51 +0800 Even more IWYU -------------------------------------------------------------------------------- 32d1081ec2 | Aidan Holm | 2020-11-09 20:08:51 +0800 More IWYU and header dependency cycle breaking The primary intent of this commit was to remove options.h from the dependencies of beam.h, since it was only ever used to set a single struct field's default value. That can be done perfectly well with a constructor in a cc file. Of course, removing options.h from beam.h broke all kinds of other things that had come to depend on options.h being included from their dependencies, or, to be precise, on *dependencies* of options.h (mostly mpr.h in practice). What a mess. This change also adds five more headers to the set of headers that are buildable: i.e. they (transitively) include all their own dependencies. -------------------------------------------------------------------------------- 8c909bcb30 | Aidan Holm | 2020-11-09 19:54:22 +0800 Remove dead code (#12379) -------------------------------------------------------------------------------- b8432710ee | wheals | 2020-11-09 12:15:57 +0200 Zap Duvessa if Dowan gets zapped and vice-versa (Lightli) Plus let them generate again later. -------------------------------------------------------------------------------- 3fe0686644 | gammafunk | 2020-11-09 00:26:48 -0600 Revamp a Shoals ghost vault The vault ebering_ghost_davey_jones places a kraken (or two derived undead krakens) and a ghost, but it's trivial to separate the ghost-kraken alliance. Even with these two monsters together, the vault would be pretty easy. This commit revamps the vault to have a transporter, adds some extra critters, and reworks the themeing. Now only one kraken is ever placed, either normal or spectral, and there are accompanying monsters that match the normal/spectral themes. We now have deep sea creatures that an unfortunate seagoer who ended up in Davey Jones' locker might find, such as sea snakes, snapping turtles, and, rarely alligator snapping turtles (we'll pretend the turtles are sea turtles). There's also a merfolk with a nice weapon and a monster band. For the natural theme, this is an aquamancer and water elementals. For the spectral theme, this is a merfolk impaler where the impaler and its band all have draining weapons. The critters for the spectral theme are spectral versions of their natural counterparts. The loot has been somewhat buffed, and the internal layout is now symmetrical, but with some added walls that have a couple pattern variants. This new version of the vault should be nasty enough to get a few kills while hopefully offering some enticing rewards. -------------------------------------------------------------------------------- 671c95df35 | gammafunk | 2020-11-08 23:54:36 -0600 Adjust Trog-themed gifts in a ghost vault For gammafunk_ghost_wrathful_warriors, adjust the egos of the fancy monster weapon to be antimagic, flaming, and vorpal, the only three egos that Trog currently uses for weapon gifts. -------------------------------------------------------------------------------- 8b94a72193 | Nicholas Feinberg | 2020-11-08 20:19:00 -0800 Checkwhite -------------------------------------------------------------------------------- 3b90a50a07 | Nikolai Lavsky | 2020-11-08 20:05:02 -0800 Show monster spell damage on xv in WebTiles Commit 9d7e6eef added this functionality to console and Local Tiles. Also, since _effect_string() already returns a hex chance, deduplicate some code. -------------------------------------------------------------------------------- 1415c89e12 | advil | 2020-11-08 17:20:27 -0500 Fix some missed .s These don't matter for connectivity, but might confuse someone eventually if left. -------------------------------------------------------------------------------- 80fa9cfeba | advil | 2020-11-08 16:10:42 -0500 More transparency fixes This includes a complete pass over large_themed_abstract.des, providing explicit opacity masking for a bunch of these vaults. -------------------------------------------------------------------------------- 3149ed9209 | Nicholas Feinberg | 2020-11-08 07:58:44 -0800 Increase Hydra Form duration (Lici) The low duration was meant to make spellpower more relevant, but the headcount has the same effect with fewer keypresses. -------------------------------------------------------------------------------- 060e6a62af | Nicholas Feinberg | 2020-11-07 09:51:39 -0800 Allow rebranding weapons to spectral (hellmonk) Seems fun. Weights chosen fairly arbitrarily. I also considered allowing SPWPN_ACID, but it'd be a bit dicey code-wise. -------------------------------------------------------------------------------- 7bd0395729 | Nicholas Feinberg | 2020-11-07 08:35:38 -0800 Reorder the Necronomicon (Lightli) Fix spell level order. -------------------------------------------------------------------------------- 44ed55eb59 | advil | 2020-11-07 11:04:09 -0500 Isolate poly set rng This should keep the randomization here from having any impact on the builder. -------------------------------------------------------------------------------- c1cdef59ac | advil | 2020-11-07 10:52:55 -0500 lint -------------------------------------------------------------------------------- 1beca9d668 | advil | 2020-11-07 10:49:26 -0500 Isolate monster rng There's lots of reasons to do this already, but after the recent poly changes, the resulting rng state after every monster is dependent on the global set of what monsters are valid, meaning that adding or removing monsters would be highly likely to change every seed. So, isolate each monster roll entirely so that stuff like this does not affect level seeds. Needless to say, this commit itself breaks seed stability for every seed. -------------------------------------------------------------------------------- 000a8cebd8 | Nicholas Feinberg | 2020-11-07 07:43:46 -0800 Fix a dumb and pointless joke (advil) -------------------------------------------------------------------------------- 3ce79ab3db | Nicholas Feinberg | 2020-11-07 07:42:05 -0800 Fix polymorphing band members (advil) Ringo, look out! -------------------------------------------------------------------------------- 7121cf9b01 | Nicholas Feinberg | 2020-11-07 07:38:21 -0800 Add poly save compat for removed mons (advil) Very unsure about this code tbh... -------------------------------------------------------------------------------- a131f226cc | Nicholas Feinberg | 2020-11-07 07:38:21 -0800 Remove boomers What is it, 1963 in here? -------------------------------------------------------------------------------- 27f3346928 | Nikolai Lavsky | 2020-11-07 07:17:17 -0800 Fix display of hex chances on the xv screen After 424c9a47, xv displays hex chances only for spells of friendly monsters. -------------------------------------------------------------------------------- 3d92047569 | advil | 2020-11-07 09:54:24 -0500 Reorder, fix checks in _valid_type_morph Fix some old issues exposed by recent poly changes. It's possible that one of the many things in this disjunction would have checked for MONS_NO_MONSTER, but there was no direct check for it. In addition, checking holiness first is generally a recipe for crashes because it is a complicated check that presupposes valid monster data. In this case, this call guaranteed to crash on MONS_NO_MONSTER, so firing newpoly on such a monster would crash instead of show the "momentary change" message. -------------------------------------------------------------------------------- 5c39ac4411 | advil | 2020-11-07 09:37:52 -0500 More transparency fixes Mostly uninteresting, except for the aquarium fix, where I attempted to provide the correct explicit masking. This serial probably still needs some work in terms of decreasing veto likelihood. -------------------------------------------------------------------------------- 9cc10c1154 | advil | 2020-11-07 09:37:52 -0500 Skip portals for incomplete levels in veto debug mode Otherwise, pregen would lead to immediate generation of the portal level, out of sync with the order that it should actually be generated in in the seed. -------------------------------------------------------------------------------- 956f22bcb3 | advil | 2020-11-07 09:37:52 -0500 Let post-place fill heuristics remove doors This does occasionally come up in practice, usually for a layout that uses lots of doors; for the cases I've seen there's nothing close to worth vetoing about when a door is trapped in a small isolated area. -------------------------------------------------------------------------------- 626ac9e51a | Nicholas Feinberg | 2020-11-06 19:37:02 -0800 Update the changelog Reorganize sections by maximum interest, trim out many items that are not important enough to include in the changelog, fix style, and add new entries. -------------------------------------------------------------------------------- 10fd84bd02 | Nicholas Feinberg | 2020-11-06 18:19:58 -0800 Remove a dubious assert -------------------------------------------------------------------------------- 9e3f510199 | Nicholas Feinberg | 2020-11-06 17:18:10 -0800 Remove devouring swarms (again) Oops. -------------------------------------------------------------------------------- 6ee961360c | Nicholas Feinberg | 2020-11-06 17:14:52 -0800 Despoiler /poly (gammafunk) Pre-choose a set of 3 monsters that any given monster can turn into (filtering by holiness & habitat and weighting by HD and demon tier), and display them on the /polymorph targeter. This should make it much more possible to make tactical choices about the use of /polymorph. This does not affect other sources of polymorphing, such as Xom or Nem. -------------------------------------------------------------------------------- 4680b4fa2e | Nicholas Feinberg | 2020-11-06 07:36:07 -0800 util/monster brand fixes Mention goliath froges' acid and fix an unhandled case warning. -------------------------------------------------------------------------------- cff87cac9a | advil | 2020-11-05 16:57:42 -0500 Fix args for map_by_tag (12370) Nothing ever uses this argument for the non-default value, not sure why it exists. -------------------------------------------------------------------------------- e9cb82248d | advil | 2020-11-05 15:49:35 -0500 Fill disconnected zones more aggressively But, only fill floor tiles (in contrast to the initial implementation). -------------------------------------------------------------------------------- 16e837b731 | advil | 2020-11-05 15:49:35 -0500 A few more transparent tags where opacity seems more likely to lead to vetoes. -------------------------------------------------------------------------------- f8554c3447 | advil | 2020-11-05 15:49:35 -0500 Improve layout_gridlike's handling of water/lava (Skrybe) This fixes a couple of bugs at once: * layout_gridlike was forcing vetos if it generated shallow water closed rooms, because they registered as disconnected areas. * closed rooms acted as tele closets for species that could inhabit the terrain. It might be better to do this on a bit more of a case-by-case basis to avoid placing no_tele_into in some corner cases (outer material plants, inner material shallow water). However, I think that overkill is better than underkill, and a comment by @Skrybe in the issue thread provided a ready-made solution. Resolves #1234. Also mantis 7563. -------------------------------------------------------------------------------- 080276ff0c | advil | 2020-11-05 15:49:35 -0500 Don't by default mask vault exits as opaque The problem this commit is solving is that opaque vaults rely on their exits being connected to some non-vault squares in order to properly test for connectivity, and I want to apply post-placement heuristics that do things like fill small disconnected areas (as in preceding commit). This change allows an opaque vault to veto correctly if its exit ends up leading to a wall because of such heuristics. It would be possible to explicitly mask exits as opaque in order to add optional exits; this commit effectively forces all exits to participate in connectivity by default. For a completely internally-connected vault with multiple exits, this commit may make placement harder. However, the solution for such vaults is simply to mark that vault as transparent. (Possibly, all vaults should be transparent by default.) -------------------------------------------------------------------------------- f05d8d7428 | advil | 2020-11-05 15:49:35 -0500 Fill small boring disconnected areas in the builder Often, when vault placement doesn't happen to align well with the level layout, small bits of the level might get cut off and isolated. This will trigger a veto, making hard-to-place vaults even rarer. This is a reasonably common source of vetoes in depths, in particular, in my testing. This commit adds a post-place heuristic that attempts to fill in small disconnected regions with no stairs. This is effective in many cases, but while vaults default to non-transparent, it is risky: the builder relies on an opaque vault's exit being connected to something that is not masked as opaque, and uses that something as a proxy for level connectivity in general. So if an opaque vault is connected to a small space that this change would fill in, that vault gets disconnected from the rest of the world. A future commit will deal with this issue by making exits transparent even on opaque vaults. -------------------------------------------------------------------------------- 6599e89576 | Nicholas Feinberg | 2020-11-05 11:32:18 -0800 Tweak new swamp monsters Turn goliath frogs down a bit across the board; they've been killing more than expected. (This might need further adjustments; we'll see how this first pass goes.) Tune up fenstrider witches very slightly, partially because I thought of a funny number joke. -------------------------------------------------------------------------------- ca8acebb32 | Nicholas Feinberg | 2020-11-05 11:29:11 -0800 Adjust XP evocable prices Since they recharge now, they should be significantly more valuable than when they only had one use. Condenser Vane never had a price set at all, and was using default pricing, which seems like an error. Lightning Rod is currently a bit weaker than the others; until/unless we want to change that, price it accordingly. -------------------------------------------------------------------------------- e31f27f013 | Nicholas Feinberg | 2020-11-05 11:26:19 -0800 Adjust XP evoker charges Some of the new XP evokers were substantially stronger than anticipated, and were available too often, making it hard for players to end up in truly dangerous situations. Turn down the maximum charges and up the XP required to recharge. -------------------------------------------------------------------------------- dd1942f9f2 | Nicholas Feinberg | 2020-11-05 10:53:27 -0800 Fix compilation -------------------------------------------------------------------------------- 46561c67a8 | Nicholas Feinberg | 2020-11-05 10:42:51 -0800 Remove the Cool S Hand-truncate LCS. -------------------------------------------------------------------------------- 9d7e6eefc7 | Nicholas Feinberg | 2020-11-05 10:29:25 -0800 Show monster spell damage on xv It seems quite easy for the player to interpret, since they know their own HP and AC - we show monster melee damage with the same reasoning - and it's nice to have ready to hand. Doesn't support some weird spells (yet!). Accuracy would also be good to have but I'd need to think about formatting. -------------------------------------------------------------------------------- 424c9a4717 | Nicholas Feinberg | 2020-11-05 10:08:16 -0800 Refactor some beam/spell code -------------------------------------------------------------------------------- f55cbd344a | Nicholas Feinberg | 2020-11-04 21:28:14 -0800 Replace potions of stabbing with attraction Potions of stabbing didn't quite hit the mark as a design. They weren't particularly popular with players, perhaps because their niche wasn't just narrow but *extremely* narrow. So, let's try another idea. Potions of attraction cause the player to magically pull nearby monsters toward them while the duration lasts, a bit like Mass Lesser Beckoning. (Greater Beckoning?). It currently pulls 3 tiles per turn, though I could see 2 tiles or full LOS also being reasonable. The idea here is for melee characters to have something to help them with ranged enemies, though quite situationally! I also considered making this pull items, as a sort of very silly apportation variant. Maybe it should? Right now this doesn't wake up sleeping enemies, since it seemed fun to have it help with stabs, too. If that's too strong, we can make it more annoying (to enemies, waking them). -------------------------------------------------------------------------------- 91b530ce93 | Nicholas Feinberg | 2020-11-04 08:18:02 -0800 Make !brilliance halve mp costs Make it a bit more impactful for more spells while still encouraging players to plan their consumable use in advance, rather than using them as last-second emergency buttons. -------------------------------------------------------------------------------- 4e9f4955e2 | Nicholas Feinberg | 2020-11-03 08:49:10 -0800 Add Curl status Maybe should be Uncurl? -------------------------------------------------------------------------------- 81720017eb | Nicholas Feinberg | 2020-11-03 08:10:00 -0800 Increase broad axe delay It's a little too easy to get this rather strong weapon online. Comparing to, for example, a battleaxe, the broad axe gave the ability to use a shield for only -2 base damage and *less* skill required to reach mindelay! That sort of dynamic is fine when we're comparing rare weapons to common ones (e.g. double sword vs great sword, eveningstar vs great mace), but broad axes are quite common. Per objstat, there are about 13 broad axes in the average 3 rune game, with perhaps 1 appearing in D, 1 in Lair, etc. That's over 13 times as common as the rare 1h weapon types, and appearing much earlier. It's possible that there should be a comparable split for axes, with a 'common' and 'rare' 1h axe in the same way that we have scimitars and double swords or morningstars and eveningstars. For now, though, increasing the skill requirement for broad axes seems like the best way to keep them a viable endgame weapon while making other weapons a bit more competitive. -------------------------------------------------------------------------------- 747a3e5df7 | Nicholas Feinberg | 2020-11-03 07:56:24 -0800 Remove devouring swarms The insect egg gimmick was quite complex and was surprisingly hard to trigger in practice. We might bring these back at some point, maybe with tweaks (let them egg uninjured monsters too? Do a starcursed-style splitting thing?), but they aren't needed for now. -------------------------------------------------------------------------------- c4ff5c6fff | Nicholas Feinberg | 2020-11-03 07:56:24 -0800 Add unused Kitsune art (amcnicky) -------------------------------------------------------------------------------- a43efd798e | Nicholas Feinberg | 2020-11-03 07:56:24 -0800 Force Swamp generation for testing -------------------------------------------------------------------------------- 4a85d98726 | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 Adjust swamp level generation - Don't generate deep water, for gameplay & to differentiate further from Shoals. - Reduce monster count by about 20% to keep XP balanced after removing chaff from spawn tables. - Shrink the playable area by about 20% to compensate and encourage wandering monster fights. Enlargen the old swamp layout (though still smaller than it was before the changes) and shrink the falls layout. Total number of open floor tiles is similar to the old one, though with fewer floor tiles and more shallow water. -------------------------------------------------------------------------------- fbaea20957 | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 Rework Swamp vault spawns Remove unused or overly weak monsters and add in a few of the new ones. (Another pass could easily be done.) -------------------------------------------------------------------------------- c718ee2908 | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 Rework Swamp spawns Remove excessively weak and/or over-used enemies, add new enemy types to replace them. See https://bit.ly/37EnXHw for details on the original plan. -------------------------------------------------------------------------------- 16a901b091 | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 Adjust Swamp monster XP multipliers Get their XP a bit closer in line with their threat. -------------------------------------------------------------------------------- 4e600ef69d | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 Buff bog bodies - Merge the 4-damage AF_COLD touch attack (which did essentially nothing against any player with nonzero AC) into the main attack. (Drop damage to 20, for parity with lich touch attack.) - Increase HD so that the Slow has a better chance of affecting the player. No change to HP, AC, etc. Bolt of Cold goes from 3d14 to 3d18, which should be a fun time for players. I checked through vaults and didn't see anything obviously in need of adjustment. -------------------------------------------------------------------------------- e66032fabe | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 New monster: bunyip Bunyips are an Australian cryptid of unclear description. This implementation of them treats them as a sort of lesser juggernaut, hitting for 40 three times. (Their defenses are substantially weaker than the real juggernaut.) They also have howler monkeys' warning cry, which they can waste some time with to give players more of a chance to kill them or flee. -------------------------------------------------------------------------------- c768f44cc1 | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 New monster: bloated husk Intended for use as an early Swamp enemy, bloated husks charge at the player at 14 speed and explode, dealing 8d8 physical damage to everything in radius 2. They're a bit similar to lurking horrors (but much simpler and easier to deal with) or to ballistomycetes (but with actual HP and without the very complex spore mechanics). -------------------------------------------------------------------------------- fe851a36d1 | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 New monster: will-o-the-wisp A mid-tier swamp threat, will-o-the-wisps blink around and toss very high power Foxfires at the player. Formerly known as kitsune. -------------------------------------------------------------------------------- 311c5d996d | Nicholas Feinberg | 2020-11-03 07:56:21 -0800 New monster: fenstrider witch Like Baba Yaga, but instead of putting chicken legs on her hut, she just wears em straight up. Wanders around tossing paralyse and melee agony and Toxic Bog attacks at the player. Intended as a top-tier Swamp threat. -------------------------------------------------------------------------------- 1c73956973 | Nicholas Feinberg | 2020-11-03 07:56:09 -0800 New monster: devouring swarm Intended as a top-tier threat for Swamp, devouring swarms are fast batty melee attackers that spawn with friends. Any monster unfortunate enough to be wounded while near a swarm will find its wounds filled with insect eggs, which, if the monster dies before getting a chance to pick the eggs out, will burst out into a new durably summoned swarm. -------------------------------------------------------------------------------- 575ee1b540 | Nicholas Feinberg | 2020-11-03 07:55:40 -0800 New monster: eleionoma Like water nymphs, but for swamp trees. Can teleport into trees near their target, toss out a nasty 'wooden splinters' BEAM_FRAG 3-range spell (shorter-range, weaker metal splinters), and heal themselves if adjacent to trees. Incentivizes the player to move away from trees and into the shallow water, which usually has its own downsides! -------------------------------------------------------------------------------- bc92e201c8 | Nicholas Feinberg | 2020-11-03 07:55:40 -0800 New monster: goliath frog A low-tier Swamp threat with a reaching acid tongue attack. Real-life monster! -------------------------------------------------------------------------------- 2a1d101370 | advil | 2020-11-01 16:14:25 -0500 Add vault info to local tiles wizmode dungeon tooltips Same formatting as vault info in `x`. -------------------------------------------------------------------------------- 873d9191df | advil | 2020-11-01 16:13:22 -0500 Disable dungeon scan in veto debug mode This is so that save/reload is possible while on vetoed levels, otherwise they may break all sorts of checks. -------------------------------------------------------------------------------- e0bddc962e | advil | 2020-11-01 15:31:43 -0500 Fix some veto-triggering issues This is mostly a matter of adding `transparent` to more vaults, but in some cases I found issues with the vaults themselves that led to disconnected areas needing a tweak to some cells or some explicit opaque masking. Hopefully the additional `transparent` tags don't lead to further issues, but as long as the vault genuinely lacks disconnected regions, as far as I can tell it is always better to have it be tagged transparent, even for vaults with a small number of exits. -------------------------------------------------------------------------------- 38e0a6d103 | advil | 2020-11-01 15:26:18 -0500 Add a rudimentary veto debugging mode This mode modifies the builder so that, after a wizmode travel command or &ctrl-r (reload level), instead of retrying on a veto, it exits immediately. The effect is that you can look at the partially completed level, and together with the builder log (&ctrl-l on a fulldebug build), get a sense for why the veto happened. This is implemented with stable seeding, so that level reload should resume exactly where the builder left off. This is implemented via an #ifdef because the game isn't good for much else in this mode and anyone who is using this is running a fulldebug build and so can rebuild anyways, but it could in principle be implemented with a more user-friendly interface as an option or something like that. -------------------------------------------------------------------------------- 525c905980 | advil | 2020-11-01 13:23:00 -0500 Fix a bad hex multiplication in a bitfield This was probably a decimal multiplication by accident. This bug should have led to all passable squares being counted as past door mimics (at least inside the relevant door check, maybe most squares would have been filtered before that), and all no_mimic squares being passable, but these interactions don't seem to have mattered much. I'm pretty sure this change is innocuous for save compat... -------------------------------------------------------------------------------- 33af53a816 | advil | 2020-11-01 12:37:26 -0500 Fix another slowdown in wrapping large strings The problem here seems to be that formatted_string::operator[] does not scale well with string length. This may be relatively unavoidable, but for strings that are already mostly wrapped in a reasonable way, we can avoid the penalty by only inserting linebreaks when they aren't already there. -------------------------------------------------------------------------------- 10d74db38b | advil | 2020-11-01 12:18:55 -0500 Lower a polynomial for linewrapping in local tiles When looking for lines that exceeded the wrap width, this code, for each line, unnecessarily scanned through the entire remaining string, doing glyph width calculations the whole way. Needless to say this made linewrapping (and therefore Text rendering) quite a bit slower for very large text boxes in tiles. This change only checks for this case on the current line. (Even with this change, Text rendering speed is not acceptably fast for large textboxes in tiles, e.g. from builder output in a debug build, so something else is still going on.) -------------------------------------------------------------------------------- a1a73b7a55 | advil | 2020-11-01 11:19:54 -0500 Improve Text wrap recalculation checks This function is *extremely* slow for large text boxes on local tiles, and this check eliminates some level of re-calling when doing initial widget sizing. I think there's still something wrong with this call somewhere deeper in that I haven't figured out, but this helps somewhat at a global level. -------------------------------------------------------------------------------- a5a9c9c9d0 | advil | 2020-10-30 18:04:53 -0400 Fix catch2 mock player setup The code that needs this check seems ... not ideal? -------------------------------------------------------------------------------- daff8a7cd0 | advil | 2020-10-30 14:54:52 -0400 Generate temple before dungeon This moves Temple before D in the pregen order, and pregens it during setup for normal games. The level is fully decided at this point, and it shouldn't interact with the rng for any other level, so order effectively doesn't matter anyways. This is a long-requested feature to avoid the popup where entering temple forced pregeneration of the rest of the dungeon. -------------------------------------------------------------------------------- 95a0c6c400 | advil | 2020-10-29 14:47:48 -0400 Attempt to fix contrib zlib on mac gha builds This adds a missing header file that is now triggering errors instead of warnings on this build. The crawl-zlib repository is in a somewhat confusing state, so while it might be nice to update the zlib version, I was not able to figure out how to do that. -------------------------------------------------------------------------------- fed77ec54f | advil | 2020-10-29 12:30:40 -0400 Improve handling of builder failures with pregen Before pregen, a builder failure would lead to a force save, and a new attempt to generate the failed level on load. After pregen, something similar would have most likely happened, but on load the player would (I think) be teleported to the failed level and pregen would break. At some point I added an ASSERT to the save code for other reasons that would trigger on this case, so most recently the builder would crash without saving, leading to a broken save (but that could be played up to a point). This commit restores a version of the original behavior. If the builder fails, the game will force-save and then crash. The save step discards the builder's attempts, but keeps the effect on the rng, so that the level seed will be different on the next attempt, and most likely succeed. The end result is still deterministic overall given a starting seed. When the player loads the save, the builder picks up where it died. I have been testing this in trunk with seed 17783394655777042589, which triggers a builder failure (50 vetoes in a row) on depths 3. This commit also contains a small improvement to the messages API which didn't end up being needed for the final implementation, but is still a useful addition. -------------------------------------------------------------------------------- 17f3b190f9 | Nicholas Feinberg | 2020-10-26 17:20:20 -0700 Bring back the Black Knight's barding It doesn't really do anything particularly thematic, but it does let you get extremely slow nagas, which is pretty funny. This commit also fixes a CRITICAL bug with nagas and any source of ponderousness. -------------------------------------------------------------------------------- 31817bcca1 | Aidan Holm | 2020-10-26 00:15:59 +0800 Add GitHub Actions CI check for header-build-tests This should prevent accidental backsliding as we work towards fixing our header file mess. -------------------------------------------------------------------------------- fd3871438b | Aidan Holm | 2020-10-26 00:11:56 +0800 Add build test for headers with fixed includes This helps verify that headers are including everything they use (IWYU), since if they are not, compilation will fail. We don't actually do anything with the compiled objects. This complements implicit checks for cc files, which must include their dependencies because they could not successfully compile otherwise. This commit only includes a subset of all header files. Header files can be appended to this list as they are fixed. -------------------------------------------------------------------------------- 37461d386a | Aidan Holm | 2020-10-26 00:11:56 +0800 Split debug defines out of AppHdr.h These defines sync DEBUG and NDEBUG. Normally, I'd do this in the Makefile, which would ensure that all compilations have only one of these defined, but unfortunately different compilers provide different options. Instead, we can move this to its own header file. This allows it to be included from debug.h, which depends on these rules to verify that they are not out of sync. Really, all .h and .cc files should include this, as header files may define static functions which contain asserts, which would otherwise invoke the assert macro before possibly defining NDEBUG. Probably the ideal solution in the general case is to have a single header file that all other headers must include. This should be extremely minimal, containing only definitions that are vital for correctness, such as this DEBUG/NDEBUG syncing. Specifically, convenience definitions should not be included: AppHdr.h is already a mess in this regard. -------------------------------------------------------------------------------- 35ab6135f1 | Aidan Holm | 2020-10-26 00:11:56 +0800 Fix includes for some commonly used header files -------------------------------------------------------------------------------- 5745fe7e1e | Aidan Holm | 2020-10-26 00:11:56 +0800 Add includes, using statements for std::vector -------------------------------------------------------------------------------- e1b933468a | Aidan Holm | 2020-10-26 00:11:56 +0800 Fix includes for all foo-type.h headers -------------------------------------------------------------------------------- d4e364d7e7 | Aidan Holm | 2020-10-26 00:11:56 +0800 Split kill_method_type enum into its own header file Going full IWYU is difficult doe to tangled dependencies between different files. Breaking this enum into its own file will break one of these cycles. -------------------------------------------------------------------------------- a620742f1a | Aidan Holm | 2020-10-26 00:11:56 +0800 Make some mon-ench methods private -------------------------------------------------------------------------------- 1d075126af | Aidan Holm | 2020-10-26 00:11:17 +0800 Add BUILD_ALL=1 build tests to GHA CI These are only run for TILES builds for clang/gcc, since they have the widest set of dependencies and will therefore likely catch issues with webtiles/console builds. -------------------------------------------------------------------------------- a618de3f7c | Nicholas Feinberg | 2020-10-25 08:44:30 -0700 Appreciate the great tradition of curling To make palentongas a bit more interesting, and to synergize with their 'roll into a bunch of enemies' power, give palentongas a passive 'defensive curl' mutation at XL 7. This gives them +7 AC after they've been hit, lasting until the *start* of their next turn. In short, it makes them tougher against multiple enemies or against multi-hit enemies like hydras, somewhat like the inverse of how shields work. The main issue here is communication. I'm not sure how best to demonstrate to the player that this is happening on subsequent hits without spamming 'you curl/you uncurl' messages after every hit. The behaviour in this PR has no spam but is also super easy to miss entirely. Suggestions welcomed! -------------------------------------------------------------------------------- 110436ef5a | Aidan Holm | 2020-10-25 21:18:14 +0800 Fix ccache not working on GitHub Actions CI ccache was not working for a number of reasons. First, the compiler was not being invoked through ccache: this requires invoking the compiler via a symlink named after the compiler binary that points to the ccache binary.. An alternative method is to add a directory containing preprepared symlinks to the PATH. alexjurkiewicz/setup-ccache does this, but it seems the path it prepends is incorrect. Next, GHA will not actually *update* the cache contents if the cache was restored with a direct key match! In order to fool GHA into doing so, we append the SHA1 of the commit being tested, ensuring that each cache save is saved with a unique key (jobs with the same SHA are disambiguated by matrix parameters). Cache restoring therefore relies on partial matches, and will restore the most recently saved cache snapshot. However, GHA cache restore prefix matching apparently requires a dash at the end of each pattern in order to match. This isn't documented explicitly (of course), but all their examples use this format, and adjusting this caused GHA to correctly restore the most recent cache. This commit also zeroes the ccache stats before running, so that the stats printed at the end reflect only the current compilation job. If ccache breaks in the future, this will ensure that we aren't fooled by the cache being restored, but never used, and showing old stats. With high hit rates, this roughly halves runtime, from ~15 minutes to ~6 minutes. Major remaining sources of latency: - ~3 min: collecting coverage with lcov. - Install requirements/dependencies: ~1.5min for gcc, 2min for clang. - actions/checkout: ~40sec. Of these, installing requirements/dependencies can probably be optimized by caching the package manager cache directories. -------------------------------------------------------------------------------- f6cc0c2728 | gammafunk | 2020-10-25 02:28:12 -0500 Add a missing wall (n1000) A bottom-right corner square was missing, thus making the vault accessible from outside without use of transporter (if you could get past the statue). -------------------------------------------------------------------------------- 987792ac36 | wheals | 2020-10-24 20:09:20 -0400 Don't crash when a monster kills itself with Primal Wave. Could happen with Ru retargeting. -------------------------------------------------------------------------------- 74916bafe0 | Aidan Holm | 2020-10-24 23:29:10 +0800 Add missing std:: in enum.h Since this is a header file (and the most widely used one at that), I'd like to avoid adding 'use namespace std;' here. -------------------------------------------------------------------------------- 8259087177 | Aidan Holm | 2020-10-24 23:29:10 +0800 Add missing '#pragma once' lines to headers -------------------------------------------------------------------------------- 3815df7bac | Aidan Holm | 2020-10-24 23:29:10 +0800 Move a bunch of preprocessor macros out of AppHdr.h Currently, most headers are not self-contained; they often refer to symbols that they do not themselves import. This is pretty awful and tends to flummox code analysis tools, as well as making automated refactoring quite challenging (since you cannot simply include a header). This commit splits a bunch of widely used macros out of AppHdr.h, which is the pre-compiled header for DCSS. Unfortunately it's accumulated a bunch of other cruft which really doesn't belong there; these macros are commonly used in headers as well, but it's unwise for headers to import AppHdr.h, since it has many dependencies by design. We're keeping the 'using namespace std' for now, but it'd really be better if we can slowly remove this... it's especially bad to include in headers, since it extends to anything that includes them. -------------------------------------------------------------------------------- 3f4b01202a | Aidan Holm | 2020-10-24 23:28:31 +0800 Add tag-version.h includes These files all use TAG_MAJOR_VERSION, and so should all include the header which defines that: tag-version.h -------------------------------------------------------------------------------- cb57259078 | Nicholas Feinberg | 2020-10-22 19:51:38 -0700 Fix always_show_zot (vt) Don't claim you're always bezotted while the option is on. -------------------------------------------------------------------------------- c93c913f66 | Nicholas Feinberg | 2020-10-22 14:53:20 -0700 Don't let rolling boulder beetles push (ardl) It's bad boulderfeel. -------------------------------------------------------------------------------- 3ec5dac9c6 | Nicholas Feinberg | 2020-10-22 14:53:20 -0700 Randomize roll duration more precisely Don't round to integer player turns. (This mostly doesn't matter, but it's nice.) -------------------------------------------------------------------------------- c79dab02b1 | Nicholas Feinberg | 2020-10-22 14:53:20 -0700 Decay rolling over time It would (essentially) never expire before, despite having a duration. -------------------------------------------------------------------------------- cdb31674f6 | Nicholas Feinberg | 2020-10-22 14:53:20 -0700 Make boulder beetles slower than speed 100 The original commit claims they roll at speed 20. Let's do that. -------------------------------------------------------------------------------- 974c44d4c8 | Aidan Holm | 2020-10-22 20:12:51 +0800 Split env.tile_* fields into a separate global Currently a lot of widely used objects are grouped together into the env global. While env thankfully doesn't have any behaviour itself, this has the unpleasant effect of obscuring the actual dependencies between objects: everything depends on env because everything is in env, and since it's already widely used, it can easily accrete more stuff, causing a snowballing effect. This commit breaks a subset of tile drawing related fields into their own separate global "tile env" object. The presence of this global isn't great, but it's much better than lumping everything together: env.h is included 119 times, while the newly-added tile-env.h is now included only 23 times: around a sixth of the users. This not only clarifies the dependencies involved, but will also aid compilation time: if this file needs to be changed, recompilation will be six times faster. Of course, ideally none of the functions involved need to pass around data in global mutable state. With smaller globals with a smaller number of users, analyzing the structure of data transfer is now tractable, and hopefully this "tile env" global can be pulled apart and refactored further. -------------------------------------------------------------------------------- cf72488783 | Aidan Holm | 2020-10-22 20:12:12 +0800 Add some test cases for coordit.cc -------------------------------------------------------------------------------- 5206c1d7ac | Nicholas Feinberg | 2020-10-21 12:10:56 -0700 Note aux armour in stash search -------------------------------------------------------------------------------- 294304f6e8 | Aidan Holm | 2020-10-19 23:44:45 +0800 Remove igrd() helper macro -------------------------------------------------------------------------------- f84b0316f6 | Aidan Holm | 2020-10-19 23:44:45 +0800 Remove mgrd() helper macro -------------------------------------------------------------------------------- e1d8dbde34 | Aidan Holm | 2020-10-19 23:44:45 +0800 Remove grd() helper macro -------------------------------------------------------------------------------- 4c0a3a5005 | Aidan Holm | 2020-10-19 23:44:45 +0800 Remove mitm() helper macro -------------------------------------------------------------------------------- 4ee14324bd | Aidan Holm | 2020-10-19 23:44:45 +0800 Remove menv() helper macro Rationale: these helper macros allow slightly briefer references to the same object, but are more obscure: they hide the fact that a single global object is being referenced, and have inconsistent spelling. They also make it somewhat harder to use IDE/text editor tools to jump to definitions and find references. Simply referring to these objects via the env global is much clearer and more user-friendly. -------------------------------------------------------------------------------- 3c51cfd513 | amcnicky | 2020-10-19 22:41:23 +0800 Give Edmund a weaponless tile, fixing #1453 -------------------------------------------------------------------------------- 62c44f1a97 | gammafunk | 2020-10-19 07:37:47 -0500 Adjust doors in a runed door vault Make the entire entrance to gammafunk_indiana_jones runed to avoid autoexploring into a Zot trap, and to generally improve the structure of the vault. Keep the "trap" gate as a (non-runed) clear door, but the final door normal, since the glass around it takes care of visibility. Also make the glass stone instead of rock. -------------------------------------------------------------------------------- 30791e7224 | gammafunk | 2020-10-19 07:37:45 -0500 Some transporter vault adjustments Some placement adjustment for various transporter vaults to make their placement more appropriate. gammafunk_its_a_trap: Remove placement from Shoals, where the vault is generally too large for the islands generated by the layout, and Swamp, where a large stone structure doesn't fit in as well thematically. I've left them in Snake, which has a more dungeony layout that fits and spider, where the stone structure meshes well with the cave-like layout enveloping it. There is a theme issue that's similar to Swamp, but it's nice to have transporter vaults in half of our Lair branches. For later branches with relatively shallow or just absent out-of-depth monster sets, supplement the 8-tier monsters with some specially selected ones, using the same choices as gammafunk_dig_for_victory. emtedronai_trogs_sanctum: Add placement to Orc, since this is certainly a suitable place for this vault, but using more of the "ogreish' monsters over too many orc knights. gammafunk_sealed_arena: Add to all four non-Slime S branches, taking a bit of care to use the right statue Shoals and wall types for Swamp and Spider. Also add to Orc and Pan. -------------------------------------------------------------------------------- 18554e4600 | gammafunk | 2020-10-19 07:32:14 -0500 Add transporter vaults to Vaults With c7717499, we can now place transporter vaults in Vaults. This commit adds such vaults to this branch as "hard" vault rooms. The structure of Vaults branch room vaults is such that vaults often need substantial internal changes in order to be suitable. That usually requires a separate vault definition, but these transporter vaults work directly as vault rooms, so I've just given them the necessary tags. For some vaults, I've added a border of floor around the vault that is removed when not placing in Vaults branch. I experimented with simply not having this, which would have allowed the vaults to connect two otherwise disconnected areas, as they can do when placing outside Vaults, but the vaults sometimes placed in rooms so that one side was disconnected from the rest of the map. The necessary "passable" tag disables checks against this that would otherwise normally generate a veto, so I'm forced to add this path border. Ideally the zone validation would know how to path through transporters so we wouldn't need "passable" at all, but mumra's approach works for now. For vaults with thematic monsters, I made appropriate choices that are usually a mix between late Dungeon and Depths, since Vaults shares a lot in common with both areas. Generally all monsters used can already place in Vaults, since this is a stipulation these vaults already use for each branch. -------------------------------------------------------------------------------- 44785f12d5 | Peter Hurst | 2020-10-19 03:34:53 -0500 Add a tag to set vaults as passable In Vaults layouts, rooms are tagged 'transparent' by default in order to check the whole level connects up properly. Some vaults may contain enclosed areas, e.g. transporter vaults, so an escape hatch is needed to prevent the builder from seeing these as disconnected zones. Commiter's Note: Removed a linebreak from dungeon.cc and rewrapped commit message body. -------------------------------------------------------------------------------- 1df16c3386 | Nicholas Feinberg | 2020-10-18 22:08:24 -0700 Rephrase lifesaving desc "Watches over you" is poetic but very vague. "Guards your life" might be at least a little clearer as to what it does. Probably there's a better phrasing yet... -------------------------------------------------------------------------------- ab205098cb | Umer Shaikh | 2020-10-18 22:08:24 -0700 Check right god for life-saving in god description Currently describing a god checks your passives when deciding whether to print something for the protect_from_harm passive. This leads to errors in both directions: the passive is spuriously indicated when describing gods that don't give it if you happen to be worshipping a god that gives it, and is not printed for gods that do give it if you're not worshipping them. After this commit the god description checks whether the god being described gives that passive. (Committer's note: did a bit of refactoring.) -------------------------------------------------------------------------------- 578ab304f5 | Aidan Holm | 2020-10-19 00:15:38 +0800 Fix out-of-bounds access (wheals) This bug was introduced in b5bd653, which changed some code to use an adjacent_iterator in passing, but neglected to adjust the expression used to derive the adjacent coord_def. -------------------------------------------------------------------------------- b5bd6537f4 | Aidan Holm | 2020-10-18 16:37:39 +0800 Remove references to globals across files I found three separate instances of functions reusing a global variable exposed by travel.cc for their own scratch space, all for mild variations on the same BFS algorithm. This commit replaces that with a local variable, and one of a more sensible type as well; only a boolean visited / not visited state needs to be tracked. I don't quite have the energy to properly extract these right now, but these would possibly be a good candidate for unit testing. -------------------------------------------------------------------------------- d58323b419 | Nicholas Feinberg | 2020-10-17 22:21:32 -0700 Make bats less anthrosolipsistic Batty monsters' behaviour depended on player turns, not monster turns, which created strange and counterintuitive incentives. If you wanted batty monsters (e.g. summoned harpies from Monstrous Menagerie) to attack more often, attack the air with a short blade. If you wanted them to attack less often, use a slower weapon. This commit changes batty monsters to move randomly for exactly 3 turns after attacking (for most monsters - harpies and thrashing horrors a little less, spatial maelstroms a little less yet). It ends up looking pretty similar, in my limited testing. -------------------------------------------------------------------------------- 92642533e4 | Nicholas Feinberg | 2020-10-15 08:04:34 -0700 Make pacified monsters visible (hellmonk) To avoid accidental penance with Ely and to make it a bit more consistent with friendly monsters. This mostly, but not exclusively, affects Ely worshippers. -------------------------------------------------------------------------------- ee0ae89446 | Nicholas Feinberg | 2020-10-15 07:27:42 -0700 Mark ratskin as evil (12373) Since its hell rats will trigger ely wrath, apparently? -------------------------------------------------------------------------------- efeb406119 | gammafunk | 2020-10-12 18:12:00 -0500 A boulder beetle transporter vault In gammafunk_boulding_lane, the player transports into the far side of the vault with one to three boulder beetles at the far side. If you can manage to get in before the boulder beetles all see you, you might avoid their rolling down the lanes as they look to mark a strike. The loot always contains a pre-identified pair of boots of rampaging (which can be barding). The number of beetles and loot quality and quantity scales with depth, with up to 3 beetles appearing along with an eventual torpor snail. The loot scales up to artefact quality boots and another star_item. -------------------------------------------------------------------------------- c8b27b8fc1 | gammafunk | 2020-10-12 06:57:06 -0500 A themed vault with boulder beetles In gammafunk_indiana_jones, you find the corpse of adventurer in a narrow, spider-filled corridor leading to a "trap" room with a boulder beetle (or two or three), that further leads to a trapped treasure room. In earlier depths, this is flame clouds in front of lava snakes (snakes...why did it have to be snakes...), and later on this becomes a room with fast moving spiders and Zot traps. If the player fights the beetle(s) in the long corridor, they're fairly likely to get flattened by a rolling bug. The loot consists of the characteristic whip and hat near the corpse, which scales in quality and with the whip eventually becoming a demon whip, along with jewellery plus possible gold in the treasure room. The monsters and traps likewise scale in number and dangerousness with depth, increasing the number and dangerousness of spiders as well as the number of boulder beetles. It'd be nice to better decorate this vault in Tiles with a more forest temple theme, but there aren't very appropriate stone wall tiles for this purpose. -------------------------------------------------------------------------------- 36e8fdb655 | Nicholas Feinberg | 2020-10-09 12:02:22 -0700 Shrink hell sentinels back down I'd misunderstood the context of a request. -------------------------------------------------------------------------------- 8b9c6dab81 | Nicholas Feinberg | 2020-10-08 19:27:10 -0700 Make demons truly spineless Remove M_SPINY from Hell Sentinels and torturous demonspawn. This mechanic had approximately no impact on the game - 4d5 AC-resisted damage is just not meaningful against extended-capable characters. We could increase the damage or not make it AC-resisted, but the effect isn't very interesting here. There's no particular reason we'd want melee characters to be somewhat worse at fighting these enemies, and if we did want that, we could just strengthen their melee attack. Hell Sentinels are now giant so as to be net immune. This will also let them waltz through deep water, which probably doesn't matter? -------------------------------------------------------------------------------- 406de6ba63 | wheals | 2020-10-07 21:17:52 -0400 Don't splash yellow draconian spit onto the spitter. -------------------------------------------------------------------------------- c07710193c | Nicholas Feinberg | 2020-10-04 16:56:05 -0700 Streamline the Zot Clock (Alternate commit title: Zot Around The Clock) The Zot clock has been working OK as a time limit, but it has a major shortcoming: it's not explained to players at all. The reasoning there was that we didn't want to stress players out or to make it easier to sneak around the clock, but the very loose time limits on the current clock make it easy to sneak around regardless for a spoiled player, and unexplained mystery deaths are more stressful than occasional messages. (Also, if players don't know that the clock exists, it doesn't serve its intended role of discouraging very slow play!) So, derandomize the Zot Clock, remove the drain penalty, display remaining turns when there are <1k left, and add an option (off by default) to display remaining turns at all time. Also, take another pass on the messaging. That should hopefully leave the whole thing in good enough shape for release. -------------------------------------------------------------------------------- d791e6c4ce | Nicholas Feinberg | 2020-10-04 15:28:56 -0700 Remove an antique and redundant status list Sage, really? -------------------------------------------------------------------------------- bdda728c12 | gammafunk | 2020-10-04 07:51:47 -0500 Fix the TAG MAJOR upgrade script The pakellas experiments des file has already been removed. -------------------------------------------------------------------------------- 645a0caaaf | gammafunk | 2020-10-04 07:16:51 -0500 Remove unused Pakellas vaults These vaults where sitting in a des file with 0 weight mostly due to accompanying lua triggers that need to be defined for save compatibilty. I've moved the required functions to a designated save compat lua file with the function definitions emptied out to the extent possible. This should cover save compatibilty, but even if there is a problem, the odds of there being an affected save out there with the vaults actually generated are quite small at this point. -------------------------------------------------------------------------------- fc2450931f | gammafunk | 2020-10-04 07:16:48 -0500 Remove some boring beasts With the re-introduction of boulder beetles to Lair and Dungeon, it's a good time to remove some of the redundant beasts we have in these branches. This commit removes hippogriffs, crocodiles, and porcupines. The first two are simple speed 10 beasts that have little to differentiate themselves from other melee-only monsters of similar difficultly at mid-Dungeon and Lair depths. Porcupines are fast and have a spine mechanic, so they're arguably the most interesting of the three removed monsters. However their spines are an "anti-melee" trait that works poorly in terms of influencing the player's decision to melee or not. Culling the monster list down to a set that all work well design-wise is a good long-term goal, and neither branch lacks for good fast melee monsters. Level spawn weights of each of the three removed monsters has been giving to respective similar monsters in both branches, with adjustments so that the impact of removal is minimal. The new weights and changes in level spawn chance are described in this google spreadsheet: https://docs.google.com/spreadsheets/d/16lBJeSFqxFsy8MPFUBcjV0ZnvU172e2G-8WWO1ly xpU/edit?usp=sharing See the "Chance (Modified)" and "Increase in chance" sections of each sheet. Dungeon has such a large monster set that the largest increase in any affected monster placement on any level is a fraction of 1%. For Lair, the largest increase is less than 3%. I increased placement range of the few more interesting beasts such as polar bears, hell rats, stream dragons. Additionally, a few weights for rarer Lair beasts are now doubled, but these monsters are already quite rare and have a placement chance of 1% or less throughout their range. -------------------------------------------------------------------------------- 3d26443778 | gammafunk | 2020-10-04 07:09:05 -0500 Re-implement boulder beetles Boulder beetles return as a speed 10, 12 HD monster with good AC, melee slightly better than a death yak, and a rolling attack that doubles their movement speed and melee damage (1d32->1d64). They will only self-enchant with the rolling debuff when not already adjacent to their foe, hence either killing them at range or getting them into melee range is a priority to avoid their 1d64 rolling damage. After performing a melee attack in the rolling state, the beetle always debuffs, returning to its unrolled state. One of the advantages of having the roll attack be normal melee is that it uses normal melee mechanics, checking SH and EV, and their modified attack damage is shown under x-v when in the rolling state. Boulder beetles also have a blink ability in order to eventually reset their positioning and allow a subsequent roll, although they cast this with low frequency. While rolling, they never use either of their abilities. Possible TODO items: 1) "Missing" the player. In my original proposal, I wanted a missed roll to allow them to "roll past" the player, giving the player a chance for additional punishment but also allowing the beetle to set up another roll. Currently this is not implemented, since this aspect was mostly to the old trivially avoidable (but comedic) roll attack. They already can reset their position using blink, and with the profile of this monster, giving the player additional opportunities to damage it would likely just make it too easy. Still, it remains an option if `??meme rule` is being ignored. 2) Rolling duration. Right now it's 10 to 15 turns, giving faster players a fighting small chance at outrunning a rolling beetle that starts rolling many tiles away, but for normal speed players, even being 7 tiles away means they will not outrun the roll. 3) AI changes while rolling. Should beetles ignore damaging terrain like traps and clouds while rolling? Currently they don't change their damage consideration compared to their normal state. This would lead to them "hover-rolling" before damaging clouds in some cases. 4) Theme of "blink". This is done as the usual translocations effect, although I had originally planned for this to be themed as a "flip" to make more thematic sense as a natural ability. Jumping spiders likewise have no special translocations theme and do the same kind of blink, so maybe leaving the normal blink is best. 5) Placement and vaults. I mostly re-added them to the spawn lists with sensible weights and to vaults and Sprint in the appropriate places. I'll likely make some special boulder beetle transporter or runed door vaults that get at the theme of the old boulder beetle trap vaults, just without the spoilers. -------------------------------------------------------------------------------- 0cdd606a97 | gammafunk | 2020-10-04 04:23:58 -0500 Insect glyph reorganization Insects were using 'a' (ants), 's' (mostly arachnids), and 'y' (flying insects. With the re-introduction of boulder beetles in a forthcoming commit, I'm re-introducing the 'B' glyph and moving all ants, beetles, and other non-flying insects here. Now 's' is reserved for arachnids, and we won't have a new mostly unused insect glyph on 'B'. Alternatively we could have beetles and non-flying insects on 'a', thus not moving ants from their ideal home, but kate- was more in favor of the 'B' glyph. There are only two prominent monsters that are bona fide ants and that actually appear in level spawn lists: worker and soldier ants. There are perhaps more prominent non-ant insects that likewise appear in spawn lists: giant cockroaches, boulder beetles, and death scarabs. Entropy weavers aren't truly insects, although legends say they are truly formicids, hence ant-like. In any case, it's possible to move non-flying insects all from 'B' to 'a' if the 5% of the player-base that uses console raises an ant army in revolt. -------------------------------------------------------------------------------- 6669bab64c | Nicholas Feinberg | 2020-10-03 20:45:04 -0700 Update the manual -------------------------------------------------------------------------------- afc20e3620 | Nicholas Feinberg | 2020-09-30 10:06:31 -0700 Extremely vane tiles (canofworms) TO DO -------------------------------------------------------------------------------- b41185065b | Nikolai Lavsky | 2020-09-27 11:42:01 -0700 Cancel Heroism and Finesse on angering or abandoning Okawaru Currently, only Heroism, Finesse, and Elyvilon's Divine Protection don't expire immediately when the player is placed under penance. It seems thematically appropriate for Divine Protection, but even Elyvilon removes all divine effects on abandonment. This commit puts Okawaru in line with other gods. -------------------------------------------------------------------------------- 1bad37f382 | Petri Salminen | 2020-09-27 11:41:28 -0700 Update INSTALL.md Instructions for Void Linux were removed in f485615. The table of contents should not have dead links. -------------------------------------------------------------------------------- f8c6c3aab7 | Nicholas Feinberg | 2020-09-25 13:41:36 -0700 Remove qw support for dragon hides -------------------------------------------------------------------------------- 87339cca5e | advil | 2020-09-24 12:29:16 -0400 Update an advanced_optioneering example I'm not sure how useful this really is in and of itself, but it's useful as an example userfunc macro at least. -------------------------------------------------------------------------------- 31898f1a13 | advil | 2020-09-24 12:29:16 -0400 Set an error on invalid fn argument to c_macro Entirely possible that this will start popping up errors all over the place for something I'm not expecting... -------------------------------------------------------------------------------- 5d7718319a | Nicholas Feinberg | 2020-09-22 19:27:05 -0700 Adjust gold acquirement Now that the player can see all acquirement options before choosing one, gold became too often a very easy choice. The massive swings of the old gold acquirement formula made sense when the player was gambling on an unseen outcome, but now that the player can see the result before choosing, all it does is produce random windfalls and unsatisfyingly simple acqs. Simplify the formula to range nonlinearly between 200 (a disappointing but nonzero consolation prize) and 1400 (a solid chunk of change, enough to buy many small things or one very big important thing). Mean of 800, which is only a bit lower than the old mean and is reasonably competitive with many items, but generally less exciting than anything really good. (Which it should be, because getting items from acq is fun!) I considered removing the guaranteed gold acq, but I think it is good to have a decent fallback case to acquirement. It just shouldn't be the pick quite so often. -------------------------------------------------------------------------------- fe262e0a26 | Nicholas Feinberg | 2020-09-22 18:58:01 -0700 Remove guaranteed early Nemelex deck As with Gozag, Nemelex granting a guaranteed early deck (before the player even reached 1* of piety!) was part of what made them remarkably strong. Shift that early guaranteed deck and all other deck gifting to after the player reaches 1* of piety, to require a little work by the player before they get their reward. (This decreases deck gifting somewhat in general, though less so at higher piety.) -------------------------------------------------------------------------------- 27c59cc0ac | Nicholas Feinberg | 2020-09-22 18:39:06 -0700 Remove free gozag potion petition Few gods give anything to their followers on initial worship. One of Gozag's strongest traits is the instant on-worship get-out-of-jail card that the free intro potion petition grants. Let's dial that back. -------------------------------------------------------------------------------- de13210b43 | Nicholas Feinberg | 2020-09-22 18:34:50 -0700 Remove hat (hellmonk) From the name of the Ashenzari altar, to avoid false name matches. -------------------------------------------------------------------------------- 67e99244d3 | Nicholas Feinberg | 2020-09-20 08:06:55 -0700 Merge Hell zot clocks Avoid some corner case issues involving the Vestibule, maybe. -------------------------------------------------------------------------------- ca5d07dbe9 | Nicholas Feinberg | 2020-09-20 08:05:31 -0700 Simplify some hellishly buggy travel code Obviously, don't fix the bug. -------------------------------------------------------------------------------- 7269bf8ee0 | Nicholas Feinberg | 2020-09-20 07:57:38 -0700 Raise Zot Clock bank cap 15k -> 27k The goal of the zot clock bank cap is to prevent players from having truly tremendous amounts of time to spend to do tedious things on specific floors. In practice, I haven't seen reports of anyone really doing anything unpleasant with the current limit, and the 15k cap caused issues with shaft traps on rare occasions. Let's raise it to 27k (meaning it approximately doesn't exist outside D) and see what happens. It might vanish entirely in future, or it might drop again, depending on the results of this experiment. -------------------------------------------------------------------------------- 72c4674329 | wheals | 2020-09-14 13:03:46 +0300 Fix a crash on describing an unid'd wand. -------------------------------------------------------------------------------- cca6ad1b57 | Nicholas Feinberg | 2020-09-13 13:34:13 -0700 Remove Traps and Doors This comment was added along with the vault 10 years ago (in c2102b4) and referred to a long NSUBST sequence that has long ceased to be. -------------------------------------------------------------------------------- 383da0171f | Nicholas Feinberg | 2020-09-13 13:34:11 -0700 Refactor monster self-destruct code -------------------------------------------------------------------------------- fd52b7e0f3 | Nicholas Feinberg | 2020-09-13 13:34:11 -0700 Remove unused M_HYBRID flag Obsolete since f67d6e41dd8a7dce658198c42247ac2f8df114a4 , back in 2015, hah! -------------------------------------------------------------------------------- 9520f50b25 | Nicholas Feinberg | 2020-09-13 13:34:11 -0700 Refactor monster death effects -------------------------------------------------------------------------------- b8a88fe62b | wheals | 2020-09-13 16:58:05 +0300 Update the Place: on the sidebar when leaving X. There was a bug that left it showing the last place you had looked at, rather than your current location. -------------------------------------------------------------------------------- b3e73fbb7a | wheals | 2020-09-13 14:29:51 +0300 Always abort charge targeter with no valid targets (#12355). -------------------------------------------------------------------------------- 926a82b99e | wjchen | 2020-09-12 21:35:11 -0400 Handle dynamic DPI in webtiles glyphs mode This commit fixes handling of dynamic DPI situations in webtiles glyphs mode that was accidentlly broken in 4531bab. -------------------------------------------------------------------------------- ed93497179 | Umer Shaikh | 2020-09-11 17:58:24 -0400 Give x-v a selection menu when there are many describable things This commit creates a selection menu when you x-v a tile with multiple monsters, items, or notable features (following the ^x screen's notion of notability), whether or not they are of the same type. As of 2a96157, when there is an item stack on a tile you can x-v the stash to describe any item in the stash by selecting the desired item from a menu. However, if a monster is on that stash, then x-v describes the monster and ignores the items. Similiarly, a monster or items stop you from seeing the description of an interesting feature. After this commit a selection menu will pop up in any of those cases, so you won't be stopped from examining underlying things of a different type. This commit adapts the menu in _full_describe_menu, which is already designed for displaying a selection menu with these three types of things. Therefore I've removed the function describe_items, added recently by 2a96157 to allow selection from a stack of items. -------------------------------------------------------------------------------- 60e059b9e0 | Skrybe | 2020-09-11 17:42:45 -0400 Distort layout_cave_pods when in Snake Give a wavy structure to the corridors and walls of layout_cave_pods when generated in Snake. This is the same effect that is already used for onion and onion_interference in Snake. [ Committer's note: checkwhite. Closes #1561 ] -------------------------------------------------------------------------------- f2846fb106 | Skrybe | 2020-09-11 17:42:29 -0400 Update layout_loops.des Along the same thinking as chaotic_city, remove an uncommon chance to create a layout entirely of stone or metal in Lair. This function is used in all of the loops layouts, but only layout_loops_ring is currently used in Lair. -------------------------------------------------------------------------------- 3778a07750 | Skrybe | 2020-09-11 17:42:21 -0400 Edit layout_chaotic_city The layout now only places rock walls when generated in Lair, per a TODO note. The result does look far better, IMO. -------------------------------------------------------------------------------- bc31f999d5 | mgdelmonte | 2020-09-11 17:32:21 -0400 Fix item.subtype() in CLua [ Committer's note: reworded. Closes #1451. Closes #1551 ] -------------------------------------------------------------------------------- c8f5442073 | Nikolai Lavsky | 2020-09-11 17:32:21 -0400 Actually let randarts generate with the spectral brand As a followup to 65aa84ea, this commit adds the spectral ego to the list of possible artefact brands for melee weapons. [ Closes #1541 ] -------------------------------------------------------------------------------- 25d4643a78 | Naruni | 2020-09-11 17:32:21 -0400 Describe wand noise levels Inspecting a wand will tell the player how much noise is generated when evoking the wand. [ Committer's note: squash + reword. Closes #1539 ] -------------------------------------------------------------------------------- b68aede52e | Implojin | 2020-09-11 17:30:49 -0400 Fix Hailstorm ally warning prompt (12362) This commit silences the hailstorm ally warning prompt for battlesphere, spectral weapon, orb of destruction, and demonic guardians. Monsters with M_PROJECTILE, (allied) M_AVATAR, or MF_DEMONIC_GUARDIAN flags are bypassed in bolt targeting by bolt::ignores_monster, and hailstorm cannot actually deal damage to them. -------------------------------------------------------------------------------- 6fb13256a3 | Edgar A. Bering IV | 2020-09-11 17:27:20 -0400 Merge pull request #1558 from nlavsky/add-rampage-to-overview Display Rampage on the % screen -------------------------------------------------------------------------------- 3497ee646f | Marcelo Henrique Cerri | 2020-09-11 17:23:02 -0400 Fix the divider position when tile_force_overlay is set When tile_force_overlay is set the divider should always be set to the end of the of the screen. Move the code that sets that to later in the code so it doesn't get overwritten. Without this fix, the space reserved for the message window is still left unused at the bottom of the screen while the message overlay is moved to the top of the screen. -------------------------------------------------------------------------------- fda0128422 | Alex Jurkiewicz | 2020-09-11 17:16:35 -0400 Expand macOS install instructions further (erf) -------------------------------------------------------------------------------- b025daac67 | Alex Jurkiewicz | 2020-09-11 17:16:35 -0400 Improve docs for running DCSS after compilation -------------------------------------------------------------------------------- e606b53fed | Umer Shaikh | 2020-09-11 17:12:04 -0400 Remove bad position clamp for peeking through stairs Using X and [ or ] to peek through stairs at different floors is supposed to deposit the cursor on the other end of the staircase. Lately the cursor has been frequently deposited in incorrect locations. It appears that 08ff59a6b inadvertently clamped the destination position according to the known map bounds of the floor being peeked from, which tends to move the cursor to an incorrect spot on the floor being peeked into. I have simply removed the clamping: if mstate's position was on the same level then the clamping after the conditional call to goto_level will serve the same purpose, and if not then clamping before that call is an error. -------------------------------------------------------------------------------- 0cdeefecac | Umer Shaikh | 2020-09-11 17:08:56 -0400 Stop acquirement of +4 stat rings These rings aren't supposed to exist anymore as of 2607d5cfa1. However acquirement was making them by producing -4 bad stat rings and then setting the rings' plus value to abs(the old plus). This commit has acquirement directly set the plus for acquired rings to the "good" value for that base type. This does not affect unrandarts but may modify randarts. -------------------------------------------------------------------------------- 6fa6d65a89 | Roderick Schertler | 2020-09-11 17:04:29 -0400 Add missing "info" command to --edit-save help -------------------------------------------------------------------------------- 0e99e02c7f | Implojin | 2020-09-11 16:49:24 -0400 Fix a rampaging bug (12353, Flugkiller) This fixes a rampage interaction with deep water / lava. Previously, the rampaging tracer wasn't properly failing on dangerous terrain. This was causing the rampage to abort at its moveto check instead, which erroneously blocked the second half of the move. -------------------------------------------------------------------------------- 457a34ca9c | Nicholas Feinberg | 2020-09-10 19:28:38 -0700 Update an antique comment Obsoleted in 87348de860b6d4e (2016). -------------------------------------------------------------------------------- 4f23886233 | advil | 2020-09-09 21:18:21 -0400 Don't crash when putting on non-jewellery You can try to do this via the * menu, as long as you have jewellery at all. This looks like it was broken when the call order was rearranged in b2248e6a10f6; the problem is that jewellery_is_amulet will crash if it is handed non-jewellery (because it is a subtype check, and is only meaningful in that case), whereas this code assumes it would return false. Just adding in the item type check is inelegant, but I don't want to mess with the ASSERT. -------------------------------------------------------------------------------- f7241eeb75 | Nikolai Lavsky | 2020-09-08 21:49:38 +0300 Display Rampage on the % screen It's often hard to see all properties of equipped artefacts on the overview screen, especially when the artefacts have long names. The Rampage ego, which can appear on any randart armour, dramatically changes the player's movement. So it's worth having a quick way to see if equipped items have this ego. -------------------------------------------------------------------------------- d4d190f45e | Nicholas Feinberg | 2020-09-07 13:45:07 -0700 Squash extra SAC_LOVE messages (wheals) 2951c229262b0cf5f incorrectly removed the !mons.wont_attack() check, resulting in a lot of extra messaging for monsters that already hated the player. -------------------------------------------------------------------------------- 354ed81502 | Kate | 2020-09-03 15:57:12 +0100 Rebrace -------------------------------------------------------------------------------- 3e9335bbc7 | Nicholas Feinberg | 2020-09-01 20:33:33 -0700 Re-remove the black knight's barding Vaults are my passion -------------------------------------------------------------------------------- 2bb1e3ea85 | Nicholas Feinberg | 2020-09-01 17:41:38 -0700 Withered plant fixes Display 'withering' in the name line, don't call withered plants 'withering' (crumble them instead), and don't show the withering icon on other slowly dying things. -------------------------------------------------------------------------------- b552214b31 | Nicholas Feinberg | 2020-09-01 17:25:10 -0700 Don't show withering on non-plants -------------------------------------------------------------------------------- 4e331d26ce | Nicholas Feinberg | 2020-09-01 17:21:19 -0700 Simplify Vampiric Draining Don't limit damage done by the healing the player can receive. Allow the player to heal more than half the difference between their max HP and their current HP. -------------------------------------------------------------------------------- 3c8f2f65f7 | Neil Moore | 2020-08-30 20:31:05 -0400 Un-downgrade sdl2 submodule (doh) -------------------------------------------------------------------------------- 8898e5d847 | Neil Moore | 2020-08-30 19:42:48 -0400 Avoid ODR violations in mon-ai-action.h With -Wmissing-declarations, gcc warns "no previous declaration for" each of these functions. Even worse, it violates the one definition rule to define an extern non-inline function in more than one translation unit, as would happen if we were to include this header from anywhere other than mon-cast.cc. Practically, it would work with most compilers, since they are not required to flag ODR violations across compilation units, but it would still be undefined behaviour, and the warnings are annoying anyway. -------------------------------------------------------------------------------- 9cd6e92bd5 | Neil Moore | 2020-08-30 19:30:39 -0400 Allow wizardry to stack again (Yermak) Introduced in 0.26-a0-593-g36fcd6fac6. The ternary operator has very low precedence (tied with assignment), so should almost always be parenthesized when used in a larger expression. -------------------------------------------------------------------------------- 2e982bf181 | Neil Moore | 2020-08-30 19:27:22 -0400 Allow offensive drowning of giants (Yermak) Though they're big enough to walk through water, and therefore fake- amphibious, they are, unlike truly amphibious creatures, still not happy having their heads submerged. This affects primal wave, AF_DROWN, and AF_ENGULF. It may appear that this change would affect grey draconian monsters too, but they're unbreathing independently of their fake amphibiousness. -------------------------------------------------------------------------------- d42a14c23b | Kate | 2020-08-29 19:41:42 +0100 Remove some unnecessary breaks -------------------------------------------------------------------------------- 4a4847f518 | Kate | 2020-08-29 19:41:00 +0100 Don't crash when trying to enslave soul on empty space (wheals) -------------------------------------------------------------------------------- 0e591452db | Kate | 2020-08-29 19:40:39 +0100 Fix spacing in some mutation descriptions -------------------------------------------------------------------------------- c8f6553d2c | ukdong99 | 2020-08-27 22:38:46 -0700 Unmute Donald for WJC followers (#1540) Donald has accidentally been saying nothing to followers of the Wu Jian Council. -------------------------------------------------------------------------------- 61e6210cf4 | Implojin | 2020-08-26 22:17:31 -0400 Prevent slimy shafting (/u/zeunysos) In some circumstances, it was possible to be shafted adjacent to a slime wall, and take damage before having a chance to act. This commit adds a slime wall adjacency check to shaft destinations. -------------------------------------------------------------------------------- b535b0901c | Edgar A. Bering IV | 2020-08-24 09:28:12 -0400 Clarify Serpent's Lash description to exclude fancy movement Helps with #1531 -------------------------------------------------------------------------------- 00aaa63842 | Edgar A. Bering IV | 2020-08-24 09:27:37 -0400 Don't allow Searing Ray to track invis monsters (12350, Naruni) -------------------------------------------------------------------------------- 366c5f69ff | Edgar A. Bering IV | 2020-08-24 09:07:05 -0400 Lint -------------------------------------------------------------------------------- 44661e4d24 | hellmonk | 2020-08-24 08:45:04 -0400 New scales facet, sharp scales. Provides 1/2/3 AC and slaying. Slightly pushed but slayscales are cool. [ Committer's note: squashed and rebased. Closes #1499 ] -------------------------------------------------------------------------------- 36fcd6fac6 | hellmonk | 2020-08-24 08:44:55 -0400 New "scales" facet, Big Brain. Expanding brain demonspawn get +2/4/6 int, plus wizardry at mutation level 3, in lieu of scales. Relative to other scales facets, this is weak at ranks 1 and 2 but pretty good at rank 3. Could change the int gain to 4/5/6, perhaps. -------------------------------------------------------------------------------- fa8599eb46 | hellmonk | 2020-08-24 08:43:12 -0400 Double the stealth bonus of thin skeletal structure -------------------------------------------------------------------------------- 04f19ec95a | wheals | 2020-08-24 00:26:11 +0300 Improvements to the charge targeter. Cancel immediately if there are no nearby monsters, show the landing site differently, and clarify the messages. -------------------------------------------------------------------------------- 0a1b7681ed | wheals | 2020-08-23 22:57:26 +0300 Don't pop up a menu for self-targetting. It looks bad on webtiles and terrible on console. -------------------------------------------------------------------------------- 25b58072bd | wheals | 2020-08-23 22:36:25 +0300 Fix bennu blazing into flame when they get banished. This sets MF_BANISHED on all monsters that get banished, even if they aren't being moved to the Abyss. This seems right to me, since specifying which ones you can encounter later is done by the transit list, but there may be edge cases I've missed. -------------------------------------------------------------------------------- 7d0f55a901 | Naruni | 2020-08-23 10:51:59 -0400 Tweak enslave soul when used on clones (12340) Using enslave soul on a clone results in an info leak at no cost to the player. Change the behavior to provide a message that the target is a clone and player loses MP, piety, and a turn. [ Committer's note: reword and squash. Closes #1530 ] -------------------------------------------------------------------------------- 905d6fb3df | Roderick Schertler | 2020-08-23 10:22:33 -0400 Try to break a net holding you when moving up/down stairs When you are trapped in a net and try to move you instead try to break the net. Currently trying to use stairs while you are netted gives "You can't do that while held in a net."; change this to behave like a lateral move. Rationale: I was netted while on the stairs and I definitely did not want to step off of them. I expected "<" to try to break it. I actually could have used a lateral move because when you break the net you don't also do the move, but that isn't obvious. -------------------------------------------------------------------------------- 790e954c4a | wheals | 2020-08-23 11:29:52 +0300 Don't reset the unarmed prompt after weapon-wielding forms expire (FIQ). -------------------------------------------------------------------------------- 58d91cd255 | wheals | 2020-08-23 11:29:52 +0300 Remove an unused function. -------------------------------------------------------------------------------- b771c2ac19 | wheals | 2020-08-23 11:29:52 +0300 Update Beastly Appendage description for the changes in 34f0fc0. -------------------------------------------------------------------------------- 0021074b2a | wheals | 2020-08-23 11:29:52 +0300 Don't allow upgrading (or downgrading!) muts with Beastly Appendage. This also fixes a crash when looking at the mutation screen after downgrading a mutation. -------------------------------------------------------------------------------- ec200485ca | wheals | 2020-08-23 11:29:52 +0300 Let Palentongas get poisonous tails. -------------------------------------------------------------------------------- afce7a58c0 | wheals | 2020-08-23 11:29:52 +0300 Hide Charms aptitude on ?%. -------------------------------------------------------------------------------- 4860111d27 | Nicholas Feinberg | 2020-08-22 16:34:01 -0700 Don't show removed branches in &~ It made it impossible to see the lair branches in local tiles, and also wasn't very useful. I still can't see Lair, Dungeon, Temple, or one other branch, but I'm not sure what else to do to improve it... -------------------------------------------------------------------------------- 3afe4966bf | Nicholas Feinberg | 2020-08-22 14:48:50 -0700 Fix objstat -------------------------------------------------------------------------------- c4b6802de3 | Edgar A. Bering IV | 2020-08-22 07:59:27 -0400 Update the changelog -------------------------------------------------------------------------------- ba4b82f8d2 | Implojin | 2020-08-22 07:50:06 -0400 Fix plant wither duration This commit fixes a bug with plant withering: Previously, the duration of ENCH_SLOWLY_DYING was being incremented each time a plant took damage, which led to plants dying very slowly indeed if the player attacked them repeatedly. -------------------------------------------------------------------------------- cfaa98f945 | advil | 2020-08-21 12:02:55 -0400 Better handle db descriptions for removed item types Now, this will only print an error for removed item types if the item doesn't correctly have its identity in item_type_removed. -------------------------------------------------------------------------------- 594f5502de | advil | 2020-08-21 11:57:59 -0400 Handle removed staff names correctly (twelwe) -------------------------------------------------------------------------------- f2b0f13339 | Nicholas Feinberg | 2020-08-20 18:46:52 -0700 Tweak Maggie description The old version was a bit plodding. It also didn't even try to explain how Maggie was apprenticing with the Hell Knights (which are clearly in the Dungeon) *before* she entered. This version is playing with hellmonk's parallel-timelines idea by hinting that Maggie comes from 'a distant time', though I think that's still probably too subtle... -------------------------------------------------------------------------------- c8662c180d | Alex Jurkiewicz | 2020-08-20 20:26:55 -0400 Update a Github action source -------------------------------------------------------------------------------- 753d7e3450 | wheals | 2020-08-20 18:42:44 +0300 Update displayed level immediately in ctrl-f (#12349). -------------------------------------------------------------------------------- 03ef8e7d85 | wheals | 2020-08-20 18:42:44 +0300 Describe status lights in a tooltip on webtiles. -------------------------------------------------------------------------------- 227e388fe2 | wheals | 2020-08-20 18:42:44 +0300 C++11-ify aptitudes.h. -------------------------------------------------------------------------------- 805dbbf8dc | wheals | 2020-08-20 18:42:44 +0300 Barding/centaur removal refactoring. -------------------------------------------------------------------------------- 17e6ae78ce | wheals | 2020-08-20 18:42:44 +0300 Remove Centaurs from ?% (#12348). -------------------------------------------------------------------------------- 63576e9172 | Goratrix | 2020-08-20 09:37:03 -0400 Correct phantom mirror message Phantom mirror no longer shatters after use with 1d127b8. -------------------------------------------------------------------------------- bc9326e332 | Nicholas Feinberg | 2020-08-19 18:33:15 -0700 Remove unused Death's Door icon Nergalle is travelling a different channel now. -------------------------------------------------------------------------------- 0f5d254872 | Nicholas Feinberg | 2020-08-19 18:33:15 -0700 Make plants wither away Plants can create fun tactical situations. When they form single-tile spaces in an otherwise-wider corridor, the player can exploit that for a short-term advantage. That's fun. What's not fun is getting a javelin stuck underneath a plant and feeling obliged to slowly batter it to death with the cheapest means at your disposal. So, refocus plants (and withered plants, demonic plants, fungi... but not bushes) on this goal. When hit, they now get ENCH_SLOWLY_DYING, killing them in 3-5 turns. Much cleaner -------------------------------------------------------------------------------- 24140f3627 | advil | 2020-08-19 21:21:28 -0400 Revert "Revert "Disable travis notifications"" This reverts commit 2efb32689600fe5ae5b07696f704697b4c948d8d. -------------------------------------------------------------------------------- cef94a71c8 | Kate | 2020-08-20 01:48:32 +0100 Fix CBlink failing a removedness test -------------------------------------------------------------------------------- a34f0b0a04 | Kate | 2020-08-20 01:15:58 +0100 Fix TAG_MAJOR_VERSION 35 compilation for real -------------------------------------------------------------------------------- a6120bd145 | Kate | 2020-08-20 00:56:02 +0100 Fix compilation on TAG_MAJOR_VERSION 35 -------------------------------------------------------------------------------- 3d35ca6c31 | Kate | 2020-08-20 00:11:04 +0100 Adjust Passage of Golubria expiration Base it on time spent instead of actions taken, so that making multiple quicker or slower actions doesn't affect how long it takes for a passage to expire. -------------------------------------------------------------------------------- d03d243d0e | Kate | 2020-08-20 00:11:04 +0100 Rework the Orb's translocation interference The translocation restrictions in Zot are very spoilery, and with controlled blink no longer existing as a spell it should be fine to allow using scrolls of blinking to work as normal instead of degrading them to uncontrolled. They're supposed to be a powerful limited resource, so making them suddenly near-useless at the end of the game doesn't feel great, and they're also more valuable used early to prevent death when the character is weak. If hoarding them until Zot turns out to be a problem, the generation rate could be adjusted. In addition, don't disable Passage of Golubria, but instead increase the fuzzing of the portal placement substantially and make it time out more quickly. -------------------------------------------------------------------------------- 48d619f095 | Emily | 2020-08-20 00:11:04 +0100 Don't contaminate the player on controlled blink It desn't seem necessary to have another limiting cost when it's only available on a scroll, and the amount of contamination is basically irrelevant (e.g. invisibility gives ~5000 contamination, unwielding *Contam gives 7000). Contamination is also generally the domain of spells, clouds, and traps rather than items, so it fits less well with controlled blink now that it's a scroll-only effect. If scrolls of blinking end up need nerfing (e.g. because of Orb status removal), then a value like 1000 + random2(750) would be reasonable. -------------------------------------------------------------------------------- 380b3ec697 | Emily | 2020-08-20 00:11:04 +0100 Refactor controlled blinking code cast_controlled_blink is now only called for scrolls of blinking, so fold it into controlled_blink and remove some redundant logic. -------------------------------------------------------------------------------- 84ee57af90 | Emily | 2020-08-20 00:11:04 +0100 Remove the Controlled Blink spell It was already bumped to level 8 in 75a41fec5b260e3405678e92336f8d186af7b559 for balance reasons; while it's not much of a balance concern at that level, it's still perhaps the most boring and predictable of the high-level escape option spells, allowing easy escape from many situations without the tactical or strategic concerns of spells like Death's Door and Borgnjor's Revivification, as well as wholly duplicating a consumable, unlike similar spells like Passage of Golubria and Disjunction that have their own unique mechanics. In addition, its relative spammability and complete lack of permanent costs compared to the scroll also encourages the existence of arbitrary and undiscoverable mechanics like the Zot/Orb translocation restrictions. (Passage of Golubria is probably still too good on the orb run to just remove those outright even after this change, but hopefully future adjustments to that spell could make it possible.) [Committer's note: adjusted to leave the book of the Warp as a 4-spell book instead of adding Passage of Golubria to it. Closes #1366.] -------------------------------------------------------------------------------- b647427698 | Emily | 2020-08-20 00:11:04 +0100 Remove unused monster Controlled Blink code ghost_demon::translate_spell explicitly replaces this with SPELL_BLINK and no monsters have it, so as far as I can tell there's no way for these code paths to ever be reached. -------------------------------------------------------------------------------- 4286e081e0 | Emily | 2020-08-20 00:11:04 +0100 Remove redundant -Tele logic from tiles This is already handled by spell_is_useless. -------------------------------------------------------------------------------- 6adcc438ac | Kate | 2020-08-19 23:23:19 +0100 Adjust and update a hints mode check This was wildly out of date due to its enum range checks, and also fairly vague in its definition. The hints mode text specifies that it's for items that provide "protection from certain sources", so make the list match that more closely and not return true for other effects that can't really be described as "resistances" (Faith, Harm etc). -------------------------------------------------------------------------------- 6c97de2657 | Kate | 2020-08-19 23:20:04 +0100 Remove an unused function -------------------------------------------------------------------------------- deff538b99 | Kate | 2020-08-19 23:20:03 +0100 Rework staff acquirement Instead of only checking the highest spell school, take weights from any applicable trained skills, with a chance of falling back to a random staff. -------------------------------------------------------------------------------- 0e794bb6f8 | Kate | 2020-08-19 23:20:03 +0100 Remove staves of wizardry As with the staff of power, it just duplicated a ring effect, and was also the last remaining staff with no melee effect. -------------------------------------------------------------------------------- 447559da06 | Kate | 2020-08-19 23:20:03 +0100 Remove staves of summoning To narrow down the number of types of staves and allow them to all have a relevant effect in melee as well as their spell school enhancer. -------------------------------------------------------------------------------- 3579fdeafc | Kate | 2020-08-19 23:20:03 +0100 Give staves of conjuration and earth new melee effects Staves of conjuration gain the effect that staves of earth used to have, of irresistible damage that's reduced by AC. Staves of earth are changed to deal higher base damage, but with the shrapnel effect of being affected 3 times by AC. -------------------------------------------------------------------------------- 695e311587 | Nicholas Feinberg | 2020-08-18 19:28:18 -0700 Give Palentonga +1 HP (apt) Two major reasons: - Palentonga were a little more fragile than was intended, which made it harder to justify having fun with their roll attack. - 117% HP is clearly much more aesthetic than a piddly 107% HP. I'm still interested in the idea of adding something more complex, perhaps along the style of a 'curl' defensive mechanism, but I haven't yet found anything that I'm confident in. -------------------------------------------------------------------------------- 3c2127501a | Edgar A. Bering IV | 2020-08-18 17:17:53 -0400 Unbutcher wjchen's patch -------------------------------------------------------------------------------- 4531babe98 | wjchen | 2020-08-18 16:35:42 -0400 Add glyph mode customization options for webtiles This commit adds two options `glyph_mode_font` and `glyph_mode_font_size` that allow customization of the font and its size used to render the dungeon view in the webtiles glyph mode. If set to monospace (default) or the font is not available, the browser's default monospaced font will be used. While implementing these options, this commit also follows the glyph metrics exactly as prescribed by the font. With the change, the dungeon view of the console version and the webtiles glyph mode should be more similar and the box-drawing characters will no longer appears to be unconnected, provided that the monospaced font used by the browser is properly authored in the first place. [ Committer's note: Tweaked, squashed, and rebased. Closes #1512 ] -------------------------------------------------------------------------------- 9bfc6bcd2e | wjchen | 2020-08-18 16:34:30 -0400 Adjust the display of the monster list in webtiles glyphs mode This change vertically center aligns the health status (colour box) in the monster list in webtiles glyphs mode and makes it looks more similar to that of the console version. The glyphs rendered in the monster list in webtiles glyphs/hybrid modes were not scaled accordingly to the crawl-internal zooming (rc options or {} in X), which looks pretty weird and is not consistent with how this is handled in normal tile mode (i.e., icons rendered in the monster list are correctly scaled). This change improves the aesthetics and the consistency between normal tiles mode and glyphs/hybrid mode in webtiles. -------------------------------------------------------------------------------- e420d36534 | Nicholas Feinberg | 2020-08-17 17:53:24 -0700 Remove Ru penance (FIQ) Since Ru has no wrath, this penance had no effect *except* to mark Ru magenta in the ^o dungeon overview, as if Ru was a good god that you'd thoughtlessly abandoned. This was false - Ru is a GREAT god. -------------------------------------------------------------------------------- baa144ba5c | Aidan Holm | 2020-08-16 17:49:26 +0800 Improve viewwindow performance when rendering animations (advil) Profiling viewwindow while spamming Disaster Area at 200 piety indicated that 65% of time spent inside viewwindow was spent packing cell overlays from the tile_overlays array into each vbuf cell's overlays array. I didn't test console, but I suspect it exhibits similar behaviour. This is due to the fact that the tile_overlays array was scanned once for each cell in the view buffer. Time spent on this step therefore scaled linearly with the total number of cells on the screen, and with the number of overlays added from animations such as Disaster Area: i.e. O(n * m), where n is the number of visible cells, and m is the number of overlay tiles from animations. This commit pre-sorts the overlay cells in O(m log m) with the same sort order as the cell draw order; this allows cell drawing to step through the tile_overlays array once only. After this change, around 4% of time within viewwindow is spent sorting and packing, down from 65%: a significant improvement. Note that this API is only a stop-gap measure; ideally, the remaining uses (mostly beam animations) would instead use a view_renderer, for more precise control over animations. In particular, this API will clear all overlays at the next full redraw (show_updates = true). -------------------------------------------------------------------------------- 3b3d21e777 | advil | 2020-08-15 10:07:58 -0400 Prevent sac love from affecting no-xp monsters Tentacles of all types were triggering the sac love "feels only hate" message as they are generated, including out of LoS. (Reported in love from applying to any no xp monster, which covers tentacles, but heads off a whole set of potential bugs involving other fake monsters, and other things that will be pointless for sac love to affect. I don't *think* that this changes any actual gameplay, and I've gone through the monster list pretty carefully, but we will see. Resolves #1501. -------------------------------------------------------------------------------- 8a0c9464d7 | advil | 2020-08-14 15:38:20 -0400 Fix a seed explorer bug involving portals in branch ends If a portal is in a branch end, and that branch end immediately precedes a branch that does not generate, then the seed explorer would repeatedly regenerate the portal for each following level of a non-generating branch. This could lead to crashes if the builder ran out of usable layouts, for example if it tried to build 9 ice caves in a row. It probably also messed up the seeding for following levels. -------------------------------------------------------------------------------- d391190cd6 | Edgar A. Bering IV | 2020-08-14 11:43:56 -0400 Add condenser vane checks and messaging (12344) Provide an MSG_OK and add a confusion check. The evoke code needs a bit of a refactor, this commit only provides the bugfix. -------------------------------------------------------------------------------- e4b5d95287 | Kate | 2020-08-13 23:17:13 +0100 Rebrace -------------------------------------------------------------------------------- 96b2eae49b | Edgar A. Bering IV | 2020-08-13 17:38:36 -0400 Update the credits -------------------------------------------------------------------------------- c04d6aab65 | RojjaCebolla | 2020-08-13 17:34:40 -0400 Update the changelog -------------------------------------------------------------------------------- b1a4fe45b9 | Edgar A. Bering IV | 2020-08-13 15:14:31 -0400 Resequence spell vampirism to prevent crashes (kate-) -------------------------------------------------------------------------------- ab5551255e | Edgar A. Bering IV | 2020-08-13 14:32:56 -0400 Update the changelog -------------------------------------------------------------------------------- f6d3885723 | amcnicky | 2020-08-13 14:08:58 -0400 Add new panlord text and art This commit adds new sprites: 2 heads and 1 body, and some new descriptions. [ Committer's note: Squashed + rebased + reworded. Closes #1520 ] -------------------------------------------------------------------------------- 5d1283fb80 | Implojin | 2020-08-13 14:03:34 -0400 Allow Rampaging on randart armour Rampaging is currently pretty rare in practice: * Ego boots are extremely rare spawns at itemgen. * Many species cannot equip boots. * Some characters end up with melded boots due to build choices. * The positioning choices and skilling choices offered by rampaging are more impactful when presented earlier in the game. This commit aims to make rampaging available to a wider range of characters, by adding it as a potential randart armour property. ARTP_RAMPAGING generates as 'potentially_good', similar to Harm. This commit also updates the rampage descriptions slightly, to remove a minor spoiler for players. -------------------------------------------------------------------------------- 98b154e084 | Edgar A. Bering IV | 2020-08-13 13:58:06 -0400 Buff the shield of Resistance With one pip each of rF, rC, and MR and a fixed enchant of +2 the Shield of Resistance wasn't that exciting, since SPARM_RESISTANCE can (rarely) spawn on shields, and a plain ego plus a pip of MR doesn't compete well with a +5 protection shield. The extra pips of rF and rC are more style than substance in practice, but receiving them along with two pips of MR makes the shield stand out a bit more. -------------------------------------------------------------------------------- 9982ef6611 | Edgar A. Bering IV | 2020-08-13 13:19:37 -0400 Give the Majin-Bo spell vampirism instead of Archmagi Archmagi for HP was kind of neat, but in practice it was very much a "get archmagi in not the body slot in exchange for a shield"; it was rare that you'd be so desparate for the enhancer that the Majin Bo was your best shot. Much cooler is to have the Majin Bo make your spells vampiric. All of the damaging spells. (Note that since Absolute Zero directly kills the monser bypassing the usual damage code this doesn't interact). The effect is very powerful, and can be nerfed by reducing the healing chance or increasing the HP cost if needed. -------------------------------------------------------------------------------- c1cf53ab4c | Edgar A. Bering IV | 2020-08-13 12:52:19 -0400 Fix up setting beam.origin_spell in several places -------------------------------------------------------------------------------- c37208646a | Edgar A. Bering IV | 2020-08-13 11:42:19 -0400 Remove the concept of a channeling item This only really mattered for Pakellas conduct interacting with Wucad Mu, which after its revision is borderline a channeling item. -------------------------------------------------------------------------------- 604fddcf5d | Edgar A. Bering IV | 2020-08-13 11:41:41 -0400 Remove some unused parameters -------------------------------------------------------------------------------- a375d073a1 | Edgar A. Bering IV | 2020-08-13 11:40:14 -0400 Remove the Evoke Fog Icon -------------------------------------------------------------------------------- baf80d05f7 | Edgar A. Bering IV | 2020-08-13 11:10:51 -0400 Turn +Fog into *Fog The cloak of the Thief, like the ratskin cloak, is an overpowered item to use optimally, providing an effect otherwise locked behind a god passive or a finite consumable in unlimited quantities for a minimal tradeoff. This commit gives the cloak a fixed chance (currently a coinflip) to generate fog on hit a sufficiently hard hit (> 10% mhp). This is to give it a different feel from Dithmenos' passive which scales with the hit magnitude and piety. The sufficiently hard threshold is to prevent keeping a trivial monster around for free fog on 0 damage hits. -------------------------------------------------------------------------------- 073066f631 | Nicholas Feinberg | 2020-08-11 21:52:57 -0700 Don't call sleeping monsters frenzy immune Datura darts will wake em right up. -------------------------------------------------------------------------------- 137458415d | Nicholas Feinberg | 2020-08-11 21:42:09 -0700 Generate Gauntlet monsters awake Let players explore around and see all the options without feeling bad about waking monsters up. (You'll still make monsters notice you, but there's less downside to that.) -------------------------------------------------------------------------------- 642869fea1 | Edgar A. Bering IV | 2020-08-11 18:11:10 -0400 Revise Wucad Mu Wucad Mu's channeling is the last vestige of evoked channeling. This commit changes the staff of Wucad Mu to be a passive effect, occasionaly refunding the MP cost of a spell (chance depending on evocations) and occasionally backfiring when this happens (backfiring less often at higher evo and more often for higher cost spells). While the stat drain did put somewhat of a brake on Wucad Mu's channeling, unlimited out of combat MP restoration leads to tedious optimality incentives to use the staff while resting. A passive effect plays similarly but without the unfortunate incentives. -------------------------------------------------------------------------------- 694ee37b36 | Edgar A. Bering IV | 2020-08-11 17:54:36 -0400 Remove staves of energy Without a hunger mechanic to interact with, staves of energy became a trade-actions-for-mp-regen item. This is not particularly interesting in combat as it removes the impact of MP management on a battle and allows the MP mechanic to be subverted for almost no cost, and full of tedious incentives out of combat. If rapid sources of MP are desired, the regen rate of MPRegen amulets can be increased. -------------------------------------------------------------------------------- 952f204493 | Edgar A. Bering IV | 2020-08-11 10:12:39 -0400 Don't repeat the item name in the item describe popup (12341) Doing so could cause a spillover of greater than 80 characters in the item actions line for little benefit. -------------------------------------------------------------------------------- b2f46efeda | gammafunk | 2020-08-09 12:02:26 -0500 Don't give pan lords rings of fog These clouds are more likely to help the player block harmful effects from a pan lord or its friends than they are to help the pan lord trap the player. There are some problems with the other cloud types: specifically fire/ice clouds are too weak with any level of rF/rC, and acid and negative energy are completely negated by one level of the appropriate resistance. It would be good to consider making rCorr/rN only grant limited resistance to the relevant cloud types. Perhaps fire/ice clouds could see some kind of "enhanced" version of these clouds types deployed for pan lords where damage values were not so low, making higher levels of the resistance relevant. I'm leaving these clouds in for now, but future commits can address these aspects. -------------------------------------------------------------------------------- acb219a522 | Edgar A. Bering IV | 2020-08-09 12:48:08 -0400 Remove Ring of Thunder from player save compat code -------------------------------------------------------------------------------- 7a7cdb68e6 | Edgar A. Bering IV | 2020-08-09 12:48:08 -0400 Adjust cloud ring mon_info descriptions Add a HUD display term (just the simple "clouds") and shorten the targeting "long name". -------------------------------------------------------------------------------- fc961c28a4 | Alex Jurkiewicz | 2020-08-09 12:48:08 -0400 Fix some typos -------------------------------------------------------------------------------- 26a69325be | Alex Jurkiewicz | 2020-08-09 12:48:08 -0400 Re-add cloud rings for Asmodeus and Bai Suzhen Monster flags for the other ring types can be added as required. -------------------------------------------------------------------------------- 4e85e5fcb6 | Alex Jurkiewicz | 2020-08-09 12:48:08 -0400 Add cloud rings to (some) random Pandemonium Lords This effect already exists in the game, but only for Asmodeus and Bai Suzhen (in dragon form). Let random pan lords have a chance at getting one too. The chance of a pan lord generating with a cloud ring is about 1 in 12, which might have to be adjusted upwards or downwards in future. The chance for each cloud type is a little more complex to calculate given the dependency on pan lord brand / attack flavour, but the rarest brands roll about 1 in 12 times. Depending on the cloud type, these cloud rings can be terrifying or ignorable. For example, chaotic clouds can instantly paralyse the player and negative energy clouds can heavily drain them within a few turns. On the other hand, clouds of fog and mutation do no direct damage. Pan lords with cloud rings should feel qualitatively different to fight than those without. Mostly this comes from increased danger being in melee range, but also from the impact on battlefield terrain that dropping clouds everywhere provides. In some cases, this can even work to the benefit of the player. One aspect of pandemonium lords I hope this change emphasises is that they should be considered the "apex predator" of DCSS. They should always be a scary fight, no matter how prepared you are. This is especially true since they spawn only in either the optional branch of Pandemonium (where it's even possible to collect the demonic rune without fighting one) and on the orb run (where running is already encouraged). This change should increase the number of cases where players run (in careful ways!) from pan lords. -------------------------------------------------------------------------------- e3ac2ca022 | Alex Jurkiewicz | 2020-08-09 12:48:08 -0400 Add Ring of X monster enchantments * Ring of Flames * Ring of Thunder * Ring of Chaos * Ring of Mutation * Ring of Fog * Ring of Ice * Ring of Draining * Ring of Acid * Ring of Miasma These enchantments, when added to a monster, surround them with the appropriate cloud ring. -------------------------------------------------------------------------------- 836a950c60 | Alex Jurkiewicz | 2020-08-09 12:48:08 -0400 Remove Ring of Thunder/Flames spells -------------------------------------------------------------------------------- 8b4922b904 | Alex Jurkiewicz | 2020-08-09 12:48:08 -0400 Add surround_actor_with_cloud -------------------------------------------------------------------------------- 79d515981d | Edgar A. Bering IV | 2020-08-09 11:51:41 -0400 Nerf condenser vane charges Player feedback is that the vane recharges too fast and holds too many charges, so this commit reduces the charges to two and increases the XP cost of a charge. I went with two charges instead of one because while a single cloud blast is typically enough in a fight, sometimes a player might like to reroll their clouds after repositioning, and I want that option to remain available for the item's use. -------------------------------------------------------------------------------- b65249eddd | Edgar A. Bering IV | 2020-08-09 11:49:19 -0400 Thaw orbs of destruction Prevent Absolute Zero from targeting conjured "monsters" which are not really monsters but monster-type actors behaving as spell proxies. -------------------------------------------------------------------------------- bdb2cd30f2 | Goratrix | 2020-08-09 11:41:15 -0400 Don't repeat acquirement identification message (dinky) Currently the message sequence when reading un-id acquirement is: This is a scroll of acquirement! _Something appears at your feet! It was a scroll of acquirement. The second message is not necessary as it only applies to scrolls which produce an immediate effect without a prompt/menu. -------------------------------------------------------------------------------- 0ae597662a | gammafunk | 2020-08-08 18:14:49 -0500 Actually fix lair.des (steves) The fix in 0cf64709 didn't change the glyph on the map to match the new one in the SHUFFLE. Fix this, and tidy up some other syntax in this vault, as well. -------------------------------------------------------------------------------- 7d7832473c | Nicholas Feinberg | 2020-08-08 16:06:07 -0700 End the endless hopping (Goratrix) -------------------------------------------------------------------------------- 732bf3b8d2 | Goratrix | 2020-08-08 08:59:53 -0400 Don't crumble acquirement scrolls (12336) Unidentified acquirements scrolls are now cancellable after they are read, so they should not crumble to dust. -------------------------------------------------------------------------------- 0cf647090d | Alan Malloy | 2020-08-07 13:41:47 -0700 Unbreak lair des from 22768bd Apparently you can't use / as a glyph that's involved in a shuffle -------------------------------------------------------------------------------- 9192ace2d8 | Goratrix | 2020-08-07 13:23:06 -0700 Move book of Hexes from E to H alphashop (#1514) Book was renamed from Enchantments to Hexes in d415a3f. -------------------------------------------------------------------------------- 22768bdd36 | Alan Malloy | 2020-08-07 13:20:43 -0700 Don't generate two Lair entrances (/u/ezmonkey, /u/zeunysos) 0550c0020cea914692a accidentally broke this vault while removing rations. -------------------------------------------------------------------------------- 57170428f2 | Naruni | 2020-08-06 16:12:27 -0400 Door reachability fine tuning Tornado was going through runed translucent doors, and could pull a mob through the door. In terrain.cc the function feat_is_reachable_past was not looking for these doors. Add a check referencing the existing feat_is_closed_door which includes doors. Bug report: https://crawl.develz.org/mantis/view.php?id=12330 Committer's note: resolves #1511 -------------------------------------------------------------------------------- 60e829e2c0 | Edgar A. Bering IV | 2020-08-06 10:23:37 -0400 Fix an unmarshalling bug (12337) -------------------------------------------------------------------------------- c405a18ee9 | Edgar A. Bering IV | 2020-08-06 09:15:22 -0400 Move the ai_action namespace to its own header For now this is to silence compiler warnings, but also to provide some future-proofing refactor to make it easy to use the ai_action::goodness type in other parts of monster AI. -------------------------------------------------------------------------------- 0fdccc9209 | Implojin | 2020-08-05 20:56:27 -0400 Update monster creation documentation monster_creation.txt had previously contained several references to enum.h, which was split into several files in 895272c. This commit updates the documentation accordingly. -------------------------------------------------------------------------------- 0187308201 | advil | 2020-08-05 14:09:43 -0400 Fix seed explorer handling of multiple portals Because the origin level wasn't restored after cataloguing a portal, only the first portal would be found (and probably the rest of the seed would be messed up). Thanks to Lici_the_Crawler for the test seed for fixing this bug. -------------------------------------------------------------------------------- d769fb5ce2 | Edgar A. Bering IV | 2020-08-05 08:59:37 -0400 Update the changelog -------------------------------------------------------------------------------- 20a46bdb45 | Edgar A. Bering IV | 2020-08-04 18:00:25 -0400 Give the full buffet of misc evokers to Wanderers Previously this list had been pared down to only box of beasts or phial of floods, only because those were the only evokers remaining from when this wanderer possibility was added. -------------------------------------------------------------------------------- 60031c9986 | Edgar A. Bering IV | 2020-08-04 16:24:14 -0400 Remove Wand of Clouds As discussed in the previous commit, the cloud-evoker-effect is better as a misc evoker without cone targeting. This removes the old wand. -------------------------------------------------------------------------------- a1987e683f | Edgar A. Bering IV | 2020-08-04 16:24:14 -0400 New Misc Item: Condenser Vane The condenser vane is inteded as a misc-evocable replacement for the wand of clouds. Wand of clouds used a cone targeter, and targeting cones really don't fit well with crawl's grid geometry. The new misc evoker places clouds in a 3x3 arrangement centered on each monster in LOS, using a similar random pick table to the old wand of clouds, but permitting high tier clouds all the way from 0 power, just with low chance, to avoid breakpoints. This is put on a misc item instead of a wand as a part of larger changes to evocations with the goal of dividing wands/misc items by monster-usability. Monsters using wand of clouds tended to only hurt themselves and not get the player well, and this effect would have similar issues. -------------------------------------------------------------------------------- 1d127b8e98 | Edgar A. Bering IV | 2020-08-04 16:24:14 -0400 Make Phantom Mirrors and Boxes of Beasts XP Charged Stacking consumables that scale with skill to very high power create a power spiral issue. Strong characters can hoard these items and then either spam their masses, or simply finish the game with a giant stack. Weak characters who lean on them early fall behind and never establish a hoard, remaining hobbled. Offering unlimited stacks also encourages hoarding psychologically, which is an unfun behavior: the effects of these items are cool and we'd like players to use and enjoy them. For these two reasons, I'd like to move away from the consumable model of evocables. Wands have separate complications before they can move to this model, but Mirrors and Boxes are easy. -------------------------------------------------------------------------------- 70697cc071 | Ryan McNeive | 2020-08-04 15:16:31 -0400 Add Grinder taunt "Make like a tree!" 0.01% of players will quaff !lig right after they get this, and they'll think they made the joke up. Devilry revelry— Grinder the shadow imp came 'round the corner with "Make like a tree!" Who would have known that my lignificational beverage wasn't quite his cup of tea? -------------------------------------------------------------------------------- f8362a0c98 | wheals | 2020-08-03 03:34:51 -0400 Fix draconian acid breath. It only ever splashed onto monsters that were adjacent to both the spitter and the target. I believe this was a holdover from when the code was used for mottled draconian breath, which had a range of 1 anyway. The targeter always claimed that the splash would hit every monster adjacent to the target, so let's make that true. Also stop the breath from splashing the target twice, which doesn't look intentional either. -------------------------------------------------------------------------------- 112e8ad46e | advil | 2020-08-02 15:24:32 -0400 Add github issue tracker links in a few key places It doesn't seem like mantis is going to be generally usable any time soon, so this makes sure that github issue tracker is linked both in the manual and in crash messages. I didn't go through all the mentions of mantis in the dev-oriented docs. This isn't intended to deprecate mantis, because we do use it and accept bug reports there for anyone who has an account (and there's a *ton* of history as well). Resolves #1506. -------------------------------------------------------------------------------- 5c46762673 | advil | 2020-08-02 15:09:54 -0400 Item menu improvements (fixes 12331) 12331 is that (since cc164c81d) a double esc is required to exit from various item menu prompts, because of a bad continue. When fixing this, I made several other improvements, namely letting `*` and `?` act as toggles ra