7 weeks agoYet more guarded unrands. pull/1937 1937/head
hellmonk [Mon, 3 May 2021 20:51:10 +0000]
Yet more guarded unrands.

7 weeks agoYet more guarded unrands
hellmonk [Mon, 3 May 2021 04:44:20 +0000]
Yet more guarded unrands

7 weeks agoSome more guarded unrand vaults.
hellmonk [Mon, 3 May 2021 02:52:52 +0000]
Some more guarded unrand vaults.

7 weeks agoFive new guarded unrand vaults.
hellmonk [Sun, 2 May 2021 22:17:53 +0000]
Five new guarded unrand vaults.

Guarded unrands for starlight, salamander hide, damnation, staff of battle, and
cigotuvi's embrace.

7 weeks agofix: blanket no_tele_into for gammafunk_dig_for_victory
advil [Sun, 2 May 2021 16:09:58 +0000]
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

7 weeks agofeat: allow setting tiles window width by ratio
advil [Sun, 2 May 2021 15:41:47 +0000]
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

7 weeks agofix: cap Ashenzari scry radius at los
advil [Sun, 2 May 2021 14:40:20 +0000]
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

7 weeks agoDon't allow cancelling forced blinks with Ozo's Armour (Psymania)
Kate [Sat, 1 May 2021 22:58:35 +0000]
Don't allow cancelling forced blinks with Ozo's Armour (Psymania)

7 weeks agofix: do hepl ancestor setup when receiving ancestor
advil [Sat, 1 May 2021 21:17:33 +0000]
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.

7 weeks agofix: swap a mutation check for felids
advil [Sat, 1 May 2021 17:03:40 +0000]
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.)

7 weeks agoDon't crash when the first of two ancestors dies
Neil Moore [Sat, 1 May 2021 05:19:45 +0000]
Don't crash when the first of two ancestors dies

Actually fixing up the second ancestor in 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

7 weeks agoFix: don't spawn hep ancestor until 1*
Nicholas Feinberg [Fri, 30 Apr 2021 23:34:33 +0000]
Fix: don't spawn hep ancestor until 1*

Overlooked the code to respawn dead ancestors over time. Oops!

7 weeks agoOnly trigger spectral on melee (kingbuddyboy)
Nicholas Feinberg [Fri, 30 Apr 2021 22:15:41 +0000]
Only trigger spectral on melee (kingbuddyboy)

Don't allow ranged attacks to re-trigger existing spectral weapons.

7 weeks agoShow actual attack delay on @
Nicholas Feinberg [Fri, 30 Apr 2021 15:41:47 +0000]
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.

7 weeks agoRemove sInv from axes
Nicholas Feinberg [Fri, 30 Apr 2021 15:34:29 +0000]
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!

7 weeks agoMove Hep frailty & ancestor to 1*
Nicholas Feinberg [Fri, 30 Apr 2021 15:22:40 +0000]
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.

7 weeks agoWIP hep nerf
Nicholas Feinberg [Tue, 16 Mar 2021 03:28:00 +0000]
WIP hep nerf

7 weeks agofix: reorder messaging for irradiate
advil [Fri, 30 Apr 2021 15:14:09 +0000]
fix: reorder messaging for irradiate

No need to give the blasting message for protected allies.

7 weeks agolint
advil [Fri, 30 Apr 2021 15:06:54 +0000]

7 weeks agorefactor: unify hepl and fedhas ally protection
advil [Fri, 30 Apr 2021 14:37:56 +0000]
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

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

7 weeks agorefactor: abstract some common fedhas code
advil [Thu, 29 Apr 2021 20:43:44 +0000]
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.

8 weeks agofix: disable cleaving during fsim
advil [Wed, 28 Apr 2021 15:35:29 +0000]
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.

8 weeks agofix: disable decapitation during fsim
advil [Wed, 28 Apr 2021 15:09:56 +0000]
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.)

8 weeks agofix: save head count across fsim rounds
advil [Wed, 28 Apr 2021 14:23:24 +0000]
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

8 weeks agofix: handle tab at weapon select menu
advil [Wed, 28 Apr 2021 14:10:28 +0000]
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.

8 weeks agoSome cleanups for a volcano map
gammafunk [Wed, 28 Apr 2021 00:05:53 +0000]
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.

8 weeks agoNew volcano map with a smoke/steam theme.
hellmonk [Mon, 26 Apr 2021 00:34:59 +0000]
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.

8 weeks agoRemove some duplicated artefact checks
Kate [Tue, 27 Apr 2021 20:32:28 +0000]
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.

8 weeks agoAdjust some more artefact restrictions
Kate [Tue, 27 Apr 2021 20:19:49 +0000]
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.

8 weeks agoMark a teleport closet as no_tele_into
Kate [Tue, 27 Apr 2021 20:07:31 +0000]
Mark a teleport closet as no_tele_into

In onia_ninara_dug_in_and_dangerous.

8 weeks agofix: correctly check antimagic brand conflicts for randarts
advil [Tue, 27 Apr 2021 16:27:26 +0000]
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.

8 weeks agofix: remove "Power" from rand_wpn.txt
advil [Tue, 27 Apr 2021 16:04:48 +0000]
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).

8 weeks agofix: always announce xom chaos branding
advil [Tue, 27 Apr 2021 14:20:07 +0000]
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

 * 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

8 weeks agofix: check form in player::could_wield
advil [Tue, 27 Apr 2021 13:10:28 +0000]
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

8 weeks agofix: annotate staves with {weapon}
advil [Tue, 27 Apr 2021 12:48:13 +0000]
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

8 weeks agoRework the Jungle Book Lair ending
gammafunk [Tue, 20 Apr 2021 03:22:34 +0000]
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.

8 weeks agoTruly unique new tiles (Sastreii)
Nicholas Feinberg [Tue, 27 Apr 2021 00:46:46 +0000]
Truly unique new tiles (Sastreii)

Rupert gettin ripped and Frederick gettin mean.

8 weeks agofix: prevent -cast and +int (kate)
advil [Mon, 26 Apr 2021 23:26:14 +0000]
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.

8 weeks agofix: prevent RegenMP with -cast
advil [Mon, 26 Apr 2021 22:01:28 +0000]
fix: prevent RegenMP with -cast

Inspired by:

This combo is amusing but also pointless enough that I think it is worth
filtering out, similar to antimagic + MP.

8 weeks agoRedraw agrid on gaining the silence aura mut (#12577)
Kate [Mon, 26 Apr 2021 19:46:38 +0000]
Redraw agrid on gaining the silence aura mut (#12577)

8 weeks agofix: adjust connectivity for gammafunk_its_a_trap
advil [Mon, 26 Apr 2021 15:25:20 +0000]
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.

8 weeks agoMake Repel Missiles unablatable
Kate [Wed, 14 Apr 2021 22:03:38 +0000]
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.

8 weeks agoRefactor disease to be a standard duration
Kate [Sat, 24 Apr 2021 20:15:39 +0000]
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.

8 weeks agoFix pluralisation of pieces from Xom's chessboard
Kate [Sun, 25 Apr 2021 21:53:53 +0000]
Fix pluralisation of pieces from Xom's chessboard

And any future things from other things.

8 weeks agofix: correctly handle hand names ending in `e` (celly00)
advil [Sun, 25 Apr 2021 17:37:03 +0000]
fix: correctly handle hand names ending in `e` (celly00)

Prevent "It is a one-tentacleed weapon".

8 weeks agoFix a typo (Yermak)
gammafunk [Sun, 25 Apr 2021 02:31:59 +0000]
Fix a typo (Yermak)

8 weeks agoDon't have burned demonic trees release demons
gammafunk [Sun, 25 Apr 2021 01:42:40 +0000]
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

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.

8 weeks agoUpdate visuals of an Abyss-themed ghost vault
gammafunk [Sun, 25 Apr 2021 01:02:44 +0000]
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.

8 weeks agoSalamander tweaks (Sastreii)
Nicholas Feinberg [Sat, 24 Apr 2021 15:26:24 +0000]
Salamander tweaks (Sastreii)

- New tiles for base Salamanders, Mystics and Tyrants.
- Remove tyrant weapon use; this wasn't used and wasn't displayed on

8 weeks agoFix up a Lugonu altar vault
gammafunk [Fri, 23 Apr 2021 08:00:51 +0000]
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.

8 weeks agoAdd demonic trees (Sastreii)
gammafunk [Fri, 23 Apr 2021 06:25:08 +0000]
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.

8 weeks agoDescribe burning mechanics in tree descriptions
gammafunk [Fri, 23 Apr 2021 06:09:04 +0000]
Describe burning mechanics in tree descriptions

Put basic details about tree and mangrove burning in their descriptions,
using a common entry for both types.

8 weeks agoRefactor descriptions of terrain modifiers
gammafunk [Fri, 23 Apr 2021 06:05:22 +0000]
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.

8 weeks agoMove mangroves back to their own feature type
gammafunk [Thu, 22 Apr 2021 19:24:15 +0000]
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.

8 weeks agoFix grammar handling of Zot trap descriptions
gammafunk [Sat, 24 Apr 2021 01:15:26 +0000]
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.

8 weeks agodocs: Document force_more_message vs runrest_stop_message
advil [Fri, 23 Apr 2021 23:13:31 +0000]
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.

8 weeks agorefactor: remove some more hunger references
advil [Fri, 23 Apr 2021 23:05:12 +0000]
refactor: remove some more hunger references

8 weeks agoAdd portal alerts to default runrest_ignore
advil [Fri, 23 Apr 2021 22:28:02 +0000]
Add portal alerts to default runrest_ignore

These not being here is almost certainly one reason for reports of
people missing these.

8 weeks agoAdd zot clock alerts to default runrest_ignore
advil [Fri, 23 Apr 2021 22:26:05 +0000]
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.

8 weeks agoForce-interrupt all delays on zot clock messages
advil [Fri, 23 Apr 2021 21:50:05 +0000]
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.

2 months agoMark diamond obelisks as not a threat
advil [Fri, 23 Apr 2021 20:01:17 +0000]
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.

2 months agoupdate CREDITS.txt
Edgar A. Bering IV [Wed, 21 Apr 2021 18:32:36 +0000]
update CREDITS.txt

2 months agoRemove food(.des)
Edgar A. Bering IV [Wed, 21 Apr 2021 17:48:44 +0000]
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.

2 months agoFixup some Nemelex overflows (Yermak)
Edgar A. Bering IV [Wed, 21 Apr 2021 16:59:13 +0000]
Fixup some Nemelex overflows (Yermak)

2 months agoRevert "Prevent bounced bolts from escaping LOS"
Edgar A. Bering IV [Wed, 21 Apr 2021 14:01:56 +0000]
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.

2 months agoReword Vampire regeneration (Shummie)
Edgar A. Bering IV [Wed, 21 Apr 2021 13:51:51 +0000]
Reword Vampire regeneration (Shummie)

2 months agoDon't crash when aimed_at_spot the player can't see
Edgar A. Bering IV [Tue, 20 Apr 2021 21:04:14 +0000]
Don't crash when aimed_at_spot the player can't see

2 months agoFree Hepliaklqana ancestors from the gender binary
Kate [Tue, 20 Apr 2021 20:13:20 +0000]
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.

2 months agoFix a Hepliaklqana message (12568)
Edgar A. Bering IV [Tue, 20 Apr 2021 20:14:54 +0000]
Fix a Hepliaklqana message (12568)

2 months agoFurther fix webtiles display of defense boosts
Nikolai Lavsky [Sun, 18 Apr 2021 18:55:08 +0000]
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 `` 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.

2 months agoPrevent bounced bolts from escaping LOS
Edgar A. Bering IV [Tue, 20 Apr 2021 19:06:36 +0000]
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.

2 months agoDon't reduce the bounce range of spells with items
AlexanderPosch [Thu, 8 Apr 2021 17:22:29 +0000]
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

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

2 months agoReduce explicit species checks: barachi
Edgar A. Bering IV [Mon, 19 Apr 2021 20:29:20 +0000]
Reduce explicit species checks: barachi

Create a MUT_DAYSTALKER as a + counterpart to MUT_NIGHTSTALKER to
replace Ba's LOS fakemut.

2 months agoMake Nightstalker adjust base LOS
Edgar A. Bering IV [Mon, 19 Apr 2021 20:03:26 +0000]
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.

2 months agoRefactor immunity display on %
Kate [Tue, 20 Apr 2021 06:41:44 +0000]
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.

2 months agoMark scarves of invisibility as useless with Sac Artifice (#12486)
Kate [Tue, 20 Apr 2021 05:58:19 +0000]
Mark scarves of invisibility as useless with Sac Artifice (#12486)

2 months agoHave soul bound monsters always create simulacra
gammafunk [Tue, 20 Apr 2021 05:24:02 +0000]
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.

2 months agoFix an artefact amulet equip crash (Skunz)
gammafunk [Mon, 19 Apr 2021 22:32:21 +0000]
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.

2 months agodocs: changelog through 0.27-a0-1047
Edgar A. Bering IV [Mon, 19 Apr 2021 16:09:15 +0000]
docs: changelog through 0.27-a0-1047

2 months agofix: check is_stationary in _can_movement_ability (alex1729)
advil [Mon, 19 Apr 2021 14:21:51 +0000]
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.

2 months agoMake guardian golem inner flame trigger consistently
Nicholas Feinberg [Sun, 18 Apr 2021 18:48:18 +0000]
Make guardian golem inner flame trigger consistently

Moderate buff to a spell generally considered weak.

2 months agoProperly credit guardian golem explosions
Nicholas Feinberg [Sun, 18 Apr 2021 18:47:25 +0000]
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).

2 months agoAdd Poisonous Vapours to Veh's spell gifts table
RojjaCebolla [Wed, 7 Apr 2021 00:53:34 +0000]
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! ]

2 months agoNerf Makhleb heal-on-kill (cebolla, kate-)
Edgar A. Bering IV [Sun, 18 Apr 2021 17:57:01 +0000]
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

[ Resolves #1878 ]

2 months agoImprove Makhleb's Major Destruction
RojjaCebolla [Tue, 6 Apr 2021 07:33:32 +0000]
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. ]

2 months agoDescribe the ancestor's special shoot through properties.
Edgar A. Bering IV [Sun, 18 Apr 2021 15:16:21 +0000]
Describe the ancestor's special shoot through properties.

2 months agoRemember friendship (PleasingFungus)
Edgar A. Bering IV [Sun, 18 Apr 2021 14:52:17 +0000]
Remember friendship (PleasingFungus)

Allow the Hepliaklqana ancestor to shoot through the player, symmetric
with the player's ability.

2 months agoAllow projectiles to pass through ancestors
sdynet [Wed, 17 Mar 2021 15:42:20 +0000]
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. ]

2 months agoAdjust demonic guardian protections
Edgar A. Bering IV [Sat, 17 Apr 2021 17:34:19 +0000]
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.

2 months agoDon't give djinni stone/bone legs
Nicholas Feinberg [Sun, 18 Apr 2021 15:12:17 +0000]
Don't give djinni stone/bone legs

New tiles for lichform/statue form, irrespectively.

2 months agoRemove an unused ability description
Kate [Sun, 18 Apr 2021 03:37:55 +0000]
Remove an unused ability description

2 months agoTweak Palentonga charge ability description
Kate [Sun, 18 Apr 2021 03:34:08 +0000]
Tweak Palentonga charge ability description

To match wording of other abilities.

2 months agoRefactor Word of Chaos
Kate [Sun, 18 Apr 2021 03:18:35 +0000]
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.

2 months agoAdjust descriptions for some DS mutations
Kate [Sun, 18 Apr 2021 03:09:18 +0000]
Adjust descriptions for some DS mutations

2 months agoSimplify player torment immunity checks
Kate [Sun, 18 Apr 2021 03:08:31 +0000]
Simplify player torment immunity checks

2 months agoSimplify Demonic Will handling
Kate [Sun, 18 Apr 2021 03:07:36 +0000]
Simplify Demonic Will handling

2 months agoFix Pan lord pronouns
Kate [Sun, 18 Apr 2021 01:25:45 +0000]
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.

2 months agoAnnounce Pan floors with a guaranteed demonic rune
Kate [Sun, 18 Apr 2021 01:16:01 +0000]
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

2 months agofix: extra qualifier for mutation check in 3cb69ffe5362
advil [Sat, 17 Apr 2021 22:22:59 +0000]
fix: extra qualifier for mutation check in 3cb69ffe5362

Shouldn't matter, just adds a bit of safety.

2 months agofix: more general code for species mutation fixup
advil [Sat, 17 Apr 2021 22:18:28 +0000]
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.