2 months agoI don't understand what this does, but hopefully it fixes things pull/1671 1671/head
Peter Gerlagh [Mon, 4 Jan 2021 16:01:12 +0000]
I don't understand what this does, but hopefully it fixes things

2 months agospelling fix
Peter Gerlagh [Wed, 8 Apr 2020 22:29:05 +0000]
spelling fix

2 months agoEly (permanently) grants XP on sight, rather than on kills.
Peter Gerlagh [Wed, 8 Apr 2020 20:18:19 +0000]
Ely (permanently) grants XP on sight, rather than on kills.

Elyvilon grants the player a mutation which makes the player gain
xp when he sees new creatures rather than when he kills them. The
mutation can never be lost, not even when Ely is abandoned. The
player only receives 50% xp, which will usually make this a disadvantage.

In future commits Elyvilon will grant piety for leaving living creatures
alive, and Ely's wrath will be removed. (The persistent mutation will be
Ely's wrath.)

2 months 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

2 months 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

2 months 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

2 months 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.

2 months 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.

2 months 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.

2 months 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.

2 months agoRevert "Improve tremorstone + summons warning checks (12409)"
advil [Sat, 2 Jan 2021 23:26:21 +0000]
Revert "Improve tremorstone + summons warning checks (12409)"

This reverts commit 91735a3152ac1321536d30bc7ca0037caf38fc6b.

2 months agoImprove tremorstone + summons warning checks (12409)
advil [Sat, 2 Jan 2021 23:15:54 +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.

2 months 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

2 months 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.

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

2 months 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

2 months 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

2 months 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.

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.

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.

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.

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)

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.

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

2 months 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]

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.

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

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.

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.

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 0.27-a0
wheals [Thu, 31 Dec 2020 10:44:09 +0000]
Remove an unused spellbook

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

2 months agoRestore the cursor on offline windows tiles targeting (#12424)
wheals [Sun, 27 Dec 2020 18:23:38 +0000]
Restore the cursor on offline windows tiles targeting (#12424)

2 months agoDon't blink after death (nee)
Nicholas Feinberg [Sat, 26 Dec 2020 15:58:33 +0000]
Don't blink after death (nee)

God bless Felids.

2 months agoFix a typo (Renan)
gammafunk [Sat, 26 Dec 2020 15:33:41 +0000]
Fix a typo (Renan)

2 months agoFix no longer fix grammar (realallion)
Neil Moore [Sat, 26 Dec 2020 14:15:08 +0000]
Fix no longer fix grammar (realallion)

2 months agoAdd a bit more control to fire_order
advil [Thu, 24 Dec 2020 21:23:41 +0000]
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.

2 months agoMake Irradiate check AC and bump damage
Nicholas Feinberg [Thu, 24 Dec 2020 18:00:33 +0000]
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.

2 months agoAdd an action inventory selector for Q*
advil [Thu, 24 Dec 2020 17:45:34 +0000]
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.

2 months agoMore eating remove
advil [Thu, 24 Dec 2020 16:29:29 +0000]
More eating remove

2 months agoDon't guarantee nzn_prometheus_bound
nikheizen [Thu, 24 Dec 2020 06:27:13 +0000]
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

2 months agoUnify movement checks for barbs/ice spells
wheals [Wed, 23 Dec 2020 15:49:54 +0000]
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.

2 months agoGive centaur enemies their bardings back (#12420)
wheals [Wed, 23 Dec 2020 14:59:29 +0000]
Give centaur enemies their bardings back (#12420)

Now that barding is adaptable enough for two species, why not three?

2 months agoFix Zin wrath
wheals [Wed, 23 Dec 2020 14:47:14 +0000]
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

2 months agoShow correct cast messages when a spell is redirected against the caster
wheals [Wed, 23 Dec 2020 14:39:38 +0000]
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

Fixes #1652

2 months agoGrammatrise a Frozen Ramparts message
wheals [Wed, 23 Dec 2020 14:10:22 +0000]
Grammatrise a Frozen Ramparts message

Fixes #1635

2 months agoDisplay threat levels on the /polymorph targeter
Nikolai Lavsky [Wed, 23 Dec 2020 10:25:51 +0000]
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.

2 months agoEven more food removal (#1654)
wheals [Wed, 23 Dec 2020 13:46:08 +0000]
Even more food removal (#1654)

Featuring bonus rod removal and carrying corpses removal!

Fixes #1654

2 months agoCheckwhite
wheals [Wed, 23 Dec 2020 13:36:21 +0000]

2 months agoPut the cursor back in the X menu on Windows (#1536)
wheals [Wed, 23 Dec 2020 13:26:42 +0000]
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.

2 months agoFix a warning when compiling for Windows
wheals [Wed, 23 Dec 2020 10:08:08 +0000]
Fix a warning when compiling for Windows

2 months agoUpdate Drain status description
Nikolai Lavsky [Wed, 23 Dec 2020 10:49:55 +0000]
Update Drain status description

After 4cbea82f, Drain temporarily reduces max HP instead of skills.

2 months agoPass some parameters by reference
Quipyowert2 [Wed, 20 May 2020 01:22:20 +0000]
Pass some parameters by reference

According to Cppcheck, this is "usually faster" than passing by value
and "recommended in C++."

2 months agolint
advil [Wed, 23 Dec 2020 00:05:21 +0000]

2 months agoRefactor quiver redraw state
advil [Tue, 22 Dec 2020 23:43:34 +0000]
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`.

2 months agoAdd a basic menu to macro/keybind editing
advil [Tue, 22 Dec 2020 23:38:53 +0000]
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.