7 weeks agoUpdate the Debian changelog for 0.26 0.26.0
gammafunk [Fri, 8 Jan 2021 15:41:53 +0000]
Update the Debian changelog for 0.26

(cherry picked from commit e07e2c7cd4e6bc373bbe76930529f26b6bc13802)

7 weeks agoBetter handle a webtiles error case
advil [Fri, 8 Jan 2021 15:37:01 +0000]
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

(cherry picked from commit ee53873d450f85d552c16b52f2d27ba741cb8275)

7 weeks agoTweak lua documentation and get it to build
Edgar A. Bering IV [Fri, 8 Jan 2021 09:51:34 +0000]
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.

(cherry picked from commit 2af701fde44537931cb57e72e0a90b406b6ea3b3)

7 weeks agoNew Fenstrider Witch tile (canofworms)
Nicholas Feinberg [Fri, 8 Jan 2021 06:29:36 +0000]
New Fenstrider Witch tile (canofworms)

7 weeks agoReplace Bloated Husk tile
Nicholas Feinberg [Fri, 8 Jan 2021 06:29:16 +0000]
Replace Bloated Husk tile

Look familiar? (It's a recolour of the very old Plague Shambler tile.)

7 weeks agoImprove coverage of disabling beam animations (12356)
advil [Wed, 6 Jan 2021 22:21:00 +0000]
Improve coverage of disabling beam animations (12356)

This gets lightning rod, tremorstones, glaciate, ignition, hailstorm,
and static discharge.

(cherry picked from commit 64bdb92e382d5de1242db939e67a75caff87bdfc)

7 weeks agoFix some oddnesses with fire order from invalid quivers
advil [Thu, 7 Jan 2021 21:58:18 +0000]
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.

(cherry picked from commit 0ec5f8ab93512b3b5b6c9c0f0044b0dcef77f87a)

7 weeks agoPrioritize sandblast over throwing stones for EE start (ardl)
advil [Thu, 7 Jan 2021 21:47:39 +0000]
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.

(cherry picked from commit 216b6189a382a76d155b032147e27450c4f4ac4d)

7 weeks agoMissed hailstorm animations from 64bdb92e382d
advil [Thu, 7 Jan 2021 21:46:32 +0000]
Missed hailstorm animations from 64bdb92e382d

(cherry picked from commit e4986e83c084574e1c2a2edbbc3075749bf7f4b6)

7 weeks agoRemove references to Charms magic (split)
gammafunk [Thu, 7 Jan 2021 16:57:41 +0000]
Remove references to Charms magic (split)

In the manual and in the aptitude list templates.

(cherry picked from commit e8fdfcfcf69b108beade6a6c463b4d5ab0000049)

8 weeks agoDon't process click_to_travel minimap clicks in map mode
advil [Wed, 6 Jan 2021 21:07:57 +0000]
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.

(cherry picked from commit 054287de9191f04924fe65286497f9bd1e5c4729)

8 weeks agoDon't crash with extreme game_scale values
advil [Wed, 6 Jan 2021 20:28:28 +0000]
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.

(cherry picked from commit 1c918b713c6a7939a5d12e6ff1e0719345c682bc)

8 weeks agoFix a glyph size issue (powerbf)
advil [Wed, 6 Jan 2021 19:02:04 +0000]
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.

(cherry picked from commit 23abb52f8e93ab2ff2fc1d199ef82df03e8b5545)

8 weeks agoRevert "Explicitly set window opacity"
advil [Wed, 6 Jan 2021 14:46:30 +0000]
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.

(cherry picked from commit 72ac391492d40ea4fc5b03c4b83718128972d906)

8 weeks agoUpdate changelog for 0.25.1
Goratrix [Wed, 6 Jan 2021 11:13:14 +0000]
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.

(cherry picked from commit 8be3b2287175e0f920b6db4208c4cd91d6761750)

8 weeks agoRemove travis
advil [Wed, 6 Jan 2021 14:38:56 +0000]
Remove travis

(cherry picked from commit 54a7bdf3805292d843aa3ac60a65a9c44a94fea5)

8 weeks agoTweak autofire description in key help
advil [Wed, 6 Jan 2021 14:35:25 +0000]
Tweak autofire description in key help

... to make clear that untargeted actions are activated.

(cherry picked from commit bd5e5ef8333c340f2b7022d35cf1af5ab564c5ff)

8 weeks agoChangelog updates
advil [Tue, 5 Jan 2021 19:27:49 +0000]
Changelog updates

* More on newquivers
* add a bunch of smaller options/lua/ui features mostly from outside
* Put all key combos for this version in `` (I realize this isn't md
  but it's still easier to read that way.)

(cherry picked from commit 34d46f0a3f470faa64d9fabc500c9ac16f5a74a6)

8 weeks agoAdd a quote (that will rarely be seen)
Neil Moore [Sat, 2 Jan 2021 05:10:24 +0000]
Add a quote (that will rarely be seen)

Same as it ever was.

[skip ci]

(cherry picked from commit 87abb2d9eb41d3d4c8815d695caa88ed6fba5e22)

8 weeks agoFix quiver redraw issues on delay interrupt
advil [Tue, 5 Jan 2021 15:53:26 +0000]
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.

(cherry picked from commit 1ca9eea3f73af89781be6cd241ed5430b124e10a)

8 weeks agoFix target check for LRD
advil [Tue, 5 Jan 2021 15:28:05 +0000]
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.

(cherry picked from commit 753e38651362f8187ae13244e500a47bfb49212c)

8 weeks agoFix autofight messaging for spells with no target in range
advil [Tue, 5 Jan 2021 15:23:04 +0000]
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.

(cherry picked from commit d6d4955b76a5213aef66ffbcd77128eaa36cac92)

8 weeks agoRemove some debug code
advil [Tue, 5 Jan 2021 14:07:30 +0000]
Remove some debug code

(cherry picked from commit 021c985bc43ce592e656dab5e1484811bb32521e)

8 weeks agoFix nzn_winding_woodlands_15x15_boxy_spiral
nikheizen [Tue, 5 Jan 2021 07:09:18 +0000]
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.

(cherry picked from commit bdec46a1ea34c710cf1c22ed5880c8ffe249f06e)

8 weeks agoDisallow throwing stones while wielding a sling
advil [Mon, 4 Jan 2021 21:36:37 +0000]
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.

(cherry picked from commit 5f2be0e231e6ddf6ba4ac710562c19ddc39fb9b1)

8 weeks agoRestore switch-on-autopickup behavior from pre-0.26
advil [Mon, 4 Jan 2021 21:26:48 +0000]
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.

(cherry picked from commit bd55b0887b59281757b96ef1c3a321a374cbf3d6)

8 weeks agoAdd a note about sub-ordering for fire_order
advil [Mon, 4 Jan 2021 17:04:26 +0000]
Add a note about sub-ordering for fire_order

(cherry picked from commit 1d1f4c8ba36276bbf6d27660c73fbfd39fa3ffae)

8 weeks agoTweak targeting help
advil [Mon, 4 Jan 2021 15:44:11 +0000]
Tweak targeting help

Make it clearer that the quiver commands are mode-specific, also use
correct mapping for `()`.

(cherry picked from commit 08524f53dcbf4a01803477ef3843a95db06f1468)

8 weeks agoAdd a fallback targeter heading for firing
advil [Mon, 4 Jan 2021 15:36:28 +0000]
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).

(cherry picked from commit 6ed78dee3f1fc0e49cd15fc998081e29adbe6a85)

8 weeks agoSimplify quiver verbs for misc evokables
advil [Mon, 4 Jan 2021 15:21:34 +0000]
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".

(cherry picked from commit 405e3faaac44e53240ab5d6d278ac48ebf93fef5)

8 weeks agoClean up + simplify "Powers" tab Invocations info
advil [Mon, 4 Jan 2021 01:40:11 +0000]
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

Resolves #1662

(cherry picked from commit c18c9092ac65e4306219b2c8d675610b0e127db0)

8 weeks agoSet default startup name from -name at command line
advil [Mon, 4 Jan 2021 01:18:06 +0000]
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

(cherry picked from commit 7ddcfd5ad1b8b63574d59987095f5a49ba911362)

8 weeks agoDon't double !f warning for `F`
advil [Sun, 3 Jan 2021 20:58:42 +0000]
Don't double !f warning for `F`

Resolves #1669

(cherry picked from commit 443bf2d2ca0a22266ed99ec1fe2ed328c48fe870)

8 weeks agoFix launcher autoswitch issues (ardl)
advil [Sun, 3 Jan 2021 20:39:34 +0000]
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.

(cherry picked from commit 353b9ea00c7b14bf6847f53241c4b5bb292f56d1)

8 weeks agoImprove tremorstone + summons warning checks (12409)
advil [Sun, 3 Jan 2021 01:24:04 +0000]
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.

(cherry picked from commit 2d0a2396b0bb7f533f3fc247a98c9ac037ebd7f5)

8 weeks agoFix a butterfly+charge+quiver interaction (12410)
advil [Sun, 3 Jan 2021 01:17:21 +0000]
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.

(cherry picked from commit 0579ed41f9d64b479daaf7113cba1f18442edc0d)

8 weeks agoMake player drain fully proportional and buff it
gammafunk [Sun, 3 Jan 2021 16:42:22 +0000]
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

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.

(cherry picked from commit 2edb794d0a80d401f29c503fcd4b62124d97fce3)

8 weeks agoDon't perform a range check for Noxious Bog
Edgar A. Bering IV [Sat, 2 Jan 2021 14:26:37 +0000]
Don't perform a range check for Noxious Bog

(cherry picked from commit 087482e4d5030d368d76fd252b3c537cda000e33)

8 weeks agoTone down Ignite Poison's effect on bog
Edgar A. Bering IV [Sat, 2 Jan 2021 13:57:39 +0000]
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.

(cherry picked from commit 086eb55de8368692f0c09de48d02dc36d2b0cd9f)

8 weeks agoClarify a prompt message
Edgar A. Bering IV [Sat, 2 Jan 2021 13:15:31 +0000]
Clarify a prompt message

(cherry picked from commit 63decd6869a8cb7c8efbe749d6b62a906ae5b986)

8 weeks agoDescribe dazzle chance in the Dazzling Flash targeter
Edgar A. Bering IV [Sat, 2 Jan 2021 13:15:07 +0000]
Describe dazzle chance in the Dazzling Flash targeter

(cherry picked from commit c91146610e51c8269339b75062fa8e4441d57b9d)

8 weeks agoAdd a static targeter for ignite poison
Edgar A. Bering IV [Sat, 2 Jan 2021 12:59:06 +0000]
Add a static targeter for ignite poison

(cherry picked from commit 7e5a9cbe55bfe88bd08184e3affbbb23446f7960)

8 weeks agoRe-refactor targeter_multiposition
Edgar A. Bering IV [Sat, 2 Jan 2021 11:29:07 +0000]
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.

(cherry picked from commit c93d6a9b7e9bc1da86250cc014ddeb2c1b67b408)

2 months agoAllow static-targeter preview of Confusing Touch
Edgar A. Bering IV [Fri, 1 Jan 2021 23:45:20 +0000]
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.

(cherry picked from commit 3d81cda7506312f9667dd49e7b4b085cebc2a5bc)

2 months agoAdd detailed static targeters for LOS enchantments
Edgar A. Bering IV [Fri, 1 Jan 2021 23:36:06 +0000]
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.

(cherry picked from commit 0242afd26bf9376273c4c6e1360da3d732b2287f)

2 months agoAdjust Metabolic Englaciation
Edgar A. Bering IV [Fri, 1 Jan 2021 23:34:21 +0000]
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.

(cherry picked from commit cc8eda8a4292665adabd8d37a0fdd73828d42a7b)

2 months agoFix a targeting information leak in Absolute Zero (12415)
Edgar A. Bering IV [Fri, 1 Jan 2021 23:31:49 +0000]
Fix a targeting information leak in Absolute Zero (12415)

(cherry picked from commit 1589ab1335907c4d0a62c779d024550b2aed54d4)

2 months agoRefactor targeter_multiposition
Edgar A. Bering IV [Fri, 1 Jan 2021 23:26:38 +0000]
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.

(cherry picked from commit 464169c878e352d8ceec69654c6f32d6b7a94ed6)

2 months agoRename a function for clarity
Edgar A. Bering IV [Fri, 1 Jan 2021 23:21:03 +0000]
Rename a function for clarity

desc_success_chance -> desc_wl_success_chance

(cherry picked from commit 0db6f627e19a4995d0a16a56cd6b3565863a7580)

2 months agoDon't spawn 8 will-o-the-wisps in Lair (Goratrix)
Nicholas Feinberg [Fri, 1 Jan 2021 22:51:43 +0000]
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.

2 months agoFix `F`+pproj logic (10804)
advil [Fri, 1 Jan 2021 21:17:45 +0000]
Fix `F`+pproj logic (10804)

This was inverted, and I think it also shouldn't ever set MB_TRUE for
this code path.

(cherry picked from commit c4307f12cd2b92787a6e239a81ddf867dfb5f6a0)

2 months agoAdd lua support for targeted CMD_THROW_ITEM_NO_QUIVER
advil [Fri, 1 Jan 2021 20:58:11 +0000]
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

(cherry picked from commit fb19f2a25f3a088cabecfd83f4f9bb082c7e2a66)

2 months agoSimplify throw_it (PleasingFungus)
advil [Fri, 1 Jan 2021 20:55:01 +0000]
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.

(cherry picked from commit 92626205c41e8e0a8b0e3207d5ee910693ab94ab)

2 months agoRemove unused variable (Mesh)
Nicholas Feinberg [Fri, 1 Jan 2021 19:27:32 +0000]
Remove unused variable (Mesh)

2 months agoMore throwing code cleanup
Nicholas Feinberg [Fri, 1 Jan 2021 17:50:02 +0000]
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...

2 months agoBan shift-dir pproj (12422)
Nicholas Feinberg [Fri, 1 Jan 2021 17:42:40 +0000]
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.

2 months agoRename a mysterious 15-year-old variable
Nicholas Feinberg [Fri, 1 Jan 2021 17:03:58 +0000]
Rename a mysterious 15-year-old variable

2 months agoRemove an unused parameter
Nicholas Feinberg [Fri, 1 Jan 2021 16:58:02 +0000]
Remove an unused parameter

2 months agoDon't make Hurl Sludge also cast Blinkbolt (vt)
Nicholas Feinberg [Thu, 31 Dec 2020 18:17:33 +0000]
Don't make Hurl Sludge also cast Blinkbolt (vt)

Why are C-style switch/case statements so bad.

2 months agoHave Vehumet support Eringya's Toxic Bog (Lici)
gammafunk [Thu, 31 Dec 2020 17:36:06 +0000]
Have Vehumet support Eringya's Toxic Bog (Lici)

A direct damage spell, just not one using conjurations, so add it to the
special list.

(cherry picked from commit 135aecce3fcecdc38b97589ca5fa460274e0c4c8)

2 months agoRecord origin of clouds that petrify the player (Tungsten)
Alan Malloy [Thu, 31 Dec 2020 11:55:28 +0000]
Record origin of clouds that petrify the player (Tungsten)

2 months agoRemove an unused spellbook
wheals [Thu, 31 Dec 2020 10:44:09 +0000]
Remove an unused spellbook

(cherry picked from commit b6e4b569e3bd283547d70220cb563e55936381ef)

2 months agoRemove insubstantial wisps 0.26-b1
Edgar A. Bering IV [Thu, 31 Dec 2020 08:17:28 +0000]
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
- 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

The Foxfire card no longer summons wisps, and just has a shorter list.

The Abyss spawn has been replaced with will-o-the-wisps.

2 months agoFix some zap glyphs
Edgar A. Bering IV [Wed, 30 Dec 2020 18:30:41 +0000]
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.

2 months agoClarify annotations in Ctrl+O and in the manual
Goratrix [Wed, 30 Dec 2020 14:13:58 +0000]
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.

2 months agoFix the build
wheals [Wed, 30 Dec 2020 18:06:53 +0000]
Fix the build

With the rename, the flavor connection to the vault is more tenuous than
ever, but I'll allow it.

2 months agoRemove Robustness (;
Nicholas Feinberg [Wed, 30 Dec 2020 17:54:36 +0000]
Remove Robustness (;

2 months agoRename two unrand rings (CanOfWorms, hellmonk, PleasingFungus)
Edgar A. Bering IV [Wed, 30 Dec 2020 17:44:13 +0000]
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
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).

2 months agoFix gargoyle statue form LRD damage
Nicholas Feinberg [Wed, 30 Dec 2020 17:05:55 +0000]
Fix gargoyle statue form LRD damage

See 25521206441 for reasoning.

2 months agoWarn before entering a bezotted branch
Nicholas Feinberg [Wed, 30 Dec 2020 16:55:48 +0000]
Warn before entering a bezotted branch

To help players notice when they're short on time?

2 months agoRefactor stair warnings
Nicholas Feinberg [Wed, 30 Dec 2020 16:44:34 +0000]
Refactor stair warnings

2 months agoSmall update in options guide
Goratrix [Tue, 29 Dec 2020 20:47:48 +0000]
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.

2 months agoRename art-data MAGIC->WILL
Nicholas Feinberg [Tue, 29 Dec 2020 16:23:47 +0000]
Rename art-data MAGIC->WILL

MAGIC was always an extremely confusing property name.

2 months agoFix a changelog entry (ebering)
gammafunk [Tue, 29 Dec 2020 12:47:03 +0000]
Fix a changelog entry (ebering)

2 months agoUpdate the changelog
gammafunk [Tue, 29 Dec 2020 12:12:41 +0000]
Update the changelog

Through 0.26-a0-1210-gada54dbd18.

2 months agoRestore the Glaive of the Guard's enchantment (curatorofearth)
gammafunk [Tue, 29 Dec 2020 12:06:41 +0000]
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 (!!).

2 months agoTweak boulder beetle rolling AI
gammafunk [Tue, 29 Dec 2020 10:01:49 +0000]
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.

2 months agoClarify AF_CONFUSE's confusing flavour
wheals [Tue, 29 Dec 2020 10:52:50 +0000]
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

2 months agoRemove a confusingly redundant function.
wheals [Tue, 29 Dec 2020 10:58:17 +0000]
Remove a confusingly redundant function.

2 months agoAdd some periods.
wheals [Tue, 29 Dec 2020 10:27:14 +0000]
Add some periods.

2 months agoMark an ossuary entrance as transparent
advil [Mon, 28 Dec 2020 19:38:29 +0000]
Mark an ossuary entrance as transparent

Resolves #1639

2 months agoTransparency fixes for a kennysheep vault (12426)
advil [Mon, 28 Dec 2020 19:11:12 +0000]
Transparency fixes for a kennysheep vault (12426)

It lacks an @, so when marked as opaque could generate with the single
door not connected.

2 months agoAdd a flashy Wu Jian overflow altar vault
paul [Sun, 27 Dec 2020 23:42:53 +0000]
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. ]

2 months agoRe-conditionalize quiver redraw (wheals)
advil [Mon, 28 Dec 2020 18:12:40 +0000]
Re-conditionalize quiver redraw (wheals)

I'm not sure why this `if` got removed, but it might have just been an
accident during testing.

2 months agoFix macro menu handling of unprintable keycodes
advil [Mon, 28 Dec 2020 17:49:40 +0000]
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

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.

2 months agoNew mini vaults
amcnicky [Thu, 27 Aug 2020 15:48:12 +0000]
New mini vaults

Vaults in this collection:

A decorative minivault containing a small randomised pool

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.

A decorative minivault containing a feature lined corridor

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. ]

2 months agoNew simple and small arrival vaults
amcnicky [Thu, 27 Aug 2020 15:32:08 +0000]
New simple and small arrival vaults

Vaults in this collection:

A medium sized arrival vault featuring two highly randomised pillars and
a selection of entrance/exit possibilities

As above, but on a smaller scale

A double-entrance arrival vault with the potential for many different
hints of flavour in the feature tile

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

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.

A more decorative vault, the player enters the dungeon by passing
through an underground garden. Was the dungeon entrance hidden within a
forbidden forest?

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

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?

Which entrance to choose to the great dungeon of Zot? Which way does the
wind blow?

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. ]

2 months agoTwo new altar vaults
amcnicky [Thu, 27 Aug 2020 15:41:26 +0000]
Two new altar vaults

The vaults added are as follows:

A simple altar layout with (the potential for) a nice monetary surprise.

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. ]

2 months agoDefer redrawing the wield display if travel_delay = -1 (#1626)
wheals [Mon, 28 Dec 2020 11:07:42 +0000]
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

2 months agoForbid DEBUG_TRAVEL without DEBUG_DIAGNOSTICS
Aliscans [Tue, 10 Nov 2020 02:01:50 +0000]

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 ]

2 months agoDon't set greedy_place for items in hostile areas
Aliscans [Tue, 10 Nov 2020 01:35:02 +0000]
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.

2 months agoExpand the behavior of travel_open_doors
Aliscans [Tue, 10 Nov 2020 01:15:07 +0000]
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 to

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

2 months agoFix a stray text cursor showing up on local tiles
wheals [Mon, 28 Dec 2020 10:17:31 +0000]
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.

2 months agoUnify the two cursors on local tiles X somewhat.
wheals [Mon, 28 Dec 2020 10:11:49 +0000]
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.

2 months agoShow LRD damage
Nicholas Feinberg [Mon, 28 Dec 2020 00:51:13 +0000]
Show LRD damage

2 months agoHackily fix Zot status description (vt)
Nicholas Feinberg [Mon, 28 Dec 2020 00:41:54 +0000]
Hackily fix Zot status description (vt)

Don't claim Zot is about to consume you when it's 15k turns away.

2 months agoSlightly increase density of winding_woodlands
nikheizen [Sun, 27 Dec 2020 19:11:03 +0000]
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.

2 months agoFix a couple subvault errors
nikheizen [Sun, 27 Dec 2020 18:59:28 +0000]
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.

2 months agoReimagine Eringya's Noxious Bog (hellmonk,ebering)
gammafunk [Sun, 27 Dec 2020 11:58:14 +0000]
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 to, since this spell is really a damage
spell at its core, is similar to spells like Frozen Ramparts or Summon
Forest that not in

2 months agoMake X on local tiles slightly more useful
wheals [Sun, 27 Dec 2020 19:07:21 +0000]
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