7 weeks agolower Necromutation to level 7 pull/1931 1931/head
sdynet [Wed, 28 Apr 2021 09:33:17 +0000]
lower Necromutation to level 7

Main reason:
1. This spell has many advantages, but at the same time, it has many dangerous disadvantages.

2. In addition, you must train Transmutation deeply to use this spell, but after using it, you will not be able to use multiple Transmutation spell. For this reason, I thought about excluding Transmutation from this magical school, but I decided to put this idea on hold because it seemed a little extreme.

3. Transmutation and Necromancy are schools that are deeply related to hybrid jobs. The Statue Form and Dragon Form do not wear armor, so hybrid players can access them in mid-game, but Necromutation is too high spell level for them to use. To allow trainees to use this spell at the right moment, you need to mitigate the difficulty of using it to their level.

Based on these reasons, I'm going to lower this spell level by one. (I wanted to give lich form a 'Sturdy Frame 1' for hybrid players, but this would be too much, right?)

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

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

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

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

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

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

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

7 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

7 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

7 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

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

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

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

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

7 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)

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

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

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

8 weeks 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.

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

8 weeks 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.

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

8 weeks 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.

8 weeks 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.

2 months agofix: Add generic fixups for four dj innate mutations
advil [Sat, 17 Apr 2021 21:35:15 +0000]
fix: Add generic fixups for four dj innate mutations

These are dj-specific so it should be safe to have these fixups. These
mutations may be affected on a small number of games on cko impacted by
the recent ds mutation bug.

2 months agofix!: reorder demonspawn mutations added in #1852
advil [Sat, 17 Apr 2021 20:28:18 +0000]
fix!: reorder demonspawn mutations added in #1852

Commits in that PR added new mutations to the middle of the enum; this
has save compat consequences because this enum is serialized as an int.
This is a bit of an emergency fix to prevent further breakage; the
commit has already gone live on cko, and save compat will get even worse
for impacted games, but we really need to keep this from impacting other

2 months agoClarify that whitespace fixes should be separate from real changes
Neil Moore [Sat, 17 Apr 2021 19:48:53 +0000]
Clarify that whitespace fixes should be separate from real changes

[skip ci]

2 months agoLink to coding conventions from
Neil Moore [Sat, 17 Apr 2021 19:20:30 +0000]
Link to coding conventions from

[skip ci]

2 months agoClean up some facet selection checks.
hellmonk [Fri, 26 Mar 2021 02:00:18 +0000]
Clean up some facet selection checks.

It would be nice to remove the gotos here. Alas,

[ Committer's note: Closes #1852. Rebased, squashed some things, fixed
  up whitespace and braces. Used MUT_TORMENT_RESISTANCE instead of
  altering the behavior of STOCHASTIC and having a separate mutation.
  Tweaked the verb for word of chaos to not suggest divinity. ]

2 months agoNew "Demonic Will" mutation for the damnation facet.
hellmonk [Fri, 26 Mar 2021 01:50:29 +0000]
New "Demonic Will" mutation for the damnation facet.

This mutation provides Will+ and additionally deals a small amount of
retaliatory damage whenever the player beats a monster's will check. This
replaces rF+ as the first rank of the hurl damnation facet; the facet is now
will/res torment/hurl damnation. The theme is something like becoming a
brimstone fiend.

2 months agoNew corruption/chaos themed demonspawn tier 3 facet.
hellmonk [Fri, 26 Mar 2021 00:50:30 +0000]
New corruption/chaos themed demonspawn tier 3 facet.

The facet begins with two stages of MUT_CORRUPTING_PRESENCE, which has a small
chance to apply corrosion (at either rank) or malmutate (at rank 2 only) any
monster dealt damage by the player. It does not require the player to use melee
to get the effect, but triggers less frequently than black mark. At rank 3,
grants MUT_WORD_OF_CHAOS, an active ability that forcibly blinks away every
monster in los and additionally may ensnare, slow, or fear them at the cost of
medium draining and a cooldown.

2 months agoGive torment resistance at level 2 of the damnation facet
Edgar A. Bering IV [Sat, 17 Apr 2021 15:17:45 +0000]
Give torment resistance at level 2 of the damnation facet

2 months agoRemove the stochastic torment resistance mutation
Edgar A. Bering IV [Sat, 17 Apr 2021 15:00:40 +0000]
Remove the stochastic torment resistance mutation

It's removed from the black mark facet and not slated to be added to any
of the demonspawn facet re-works. hellmonk suggested making this
mutation deterministic and give 50% resistance, to be
used in future demonspawn. This is already done by MUT_TORMENT_RESISTANCE
level 1 so there's no need to re-create the effect.

For save compatibility the old mutation applies the new effect.

2 months agoRework the black mark facet.
hellmonk [Mon, 1 Mar 2021 04:21:54 +0000]
Rework the black mark facet.

Formerly negative energy themed, this facet was relatively weak. This rework
keeps the most interesting mutation and tries to build something new around it.
The new facet is debuff oriented and provides a hex enhancer, followed by black
mark, then a permanent 1 tile silence "donut" aura, providing a wide variety
of debilitating effects for the player.

2 months agoRework the hurl damnation ability's power scaling.
hellmonk [Mon, 1 Mar 2021 02:18:46 +0000]
Rework the hurl damnation ability's power scaling.

Previously, hurl damnation used experience level * 10 to determine power.
Power is capped at 200, which was reached at xl 20 - frequently before the
player had the mutation. The new formula is 40 + experience level * 6, which
reaches 200 power at max level and is otherwise weaker unless received
implausibly early.

2 months agoAdd passive freeze to the generic mutation pool.
hellmonk [Mon, 1 Mar 2021 01:52:27 +0000]
Add passive freeze to the generic mutation pool.

Perhaps it would be interesting here, where it's not a facet payoff.
I think it's worth a try, at least.

2 months agoRemove passive freeze facet.
hellmonk [Mon, 1 Mar 2021 01:42:44 +0000]
Remove passive freeze facet.

It was notoriously bad and had significant mechanical overlap with spiny.
Not worth saving.

2 months agoAdd variety to boots tiles
Goratrix [Sat, 17 Apr 2021 14:06:10 +0000]
Add variety to boots tiles

This adds back the boots tiles which were replaced in b2ee965 and
enables variation between the tiles, same as already exists for robes
and helmets.

2 months agodocs: fix a typo
advil [Sat, 17 Apr 2021 14:59:39 +0000]
docs: fix a typo

2 months agodocs: Document some commit conventions
advil [Sat, 17 Apr 2021 14:57:51 +0000]
docs: Document some commit conventions

There's a bunch of pitfalls that I see coming up in PRs again and again
to do with commit messages, and this tries to make them explicit. My aim
here is to document conventions that we do have, but that are often
unstated or only stated in chat / PR feedback -- but if anyone feels
that I got things wrong or too prescriptive here I'm happy to be

2 months agodocs: convert coding conventions to markdown
advil [Sat, 17 Apr 2021 14:35:05 +0000]
docs: convert coding conventions to markdown

This is much more readable as markdown because of the many code blocks,
and it also lets the document have a working table of contents. There
were a number of minor formatting changes throughout, with some small
content changes, including (i) adding a brief why/TLDR version towards
the beginning, (ii) mentioning the checkwhite/unbrace scripts explcitly,
(iii) documenting some of the more mechanical spacing rules.

2 months agofix(tiles): Skip pre-layout message rendering
advil [Sat, 17 Apr 2021 13:18:01 +0000]
fix(tiles): Skip pre-layout message rendering

This is basically a followup to 5a74e75d8f72.  Those crashes in local
tiles revealed that the message window is getting rendered before tiles
has a layout, so the message window is width 0; this is basically
harmless but triggers pathological linebreaking behavior that it's
better to skip (and has the potential to trigger rendering glitches,
though I don't think it will currently). Re the removed comment there: I
have verified that the current wrapcprint behavior should prevent
infinite loops even with width 0, as long as linebreaks are correctly
added; the loop will always abort if it runs out of y space. The bug in
cfdca905f5 involved failing to correctly add a linebreak. So restoring
the wrapcol ASSERT should be unnecessary.

2 months agoRework monsters in a lemuel castle vault
gammafunk [Mon, 12 Apr 2021 09:38:44 +0000]
Rework monsters in a lemuel castle vault

The vault lemuel_castle_with_subvaults has monster placement that's not
much been updated, and still has logic based on Dungeon having 27
levels. This commit reworks the monster and loot placement, giving it
better scaling with depth, with appropriately themed monsters at each
location. It also cleans up the tagging and supporting lua code,
organizing it similarly to our current DES standards.

For monsters in Dungeon, we use the same scaling as ghost vaults, since
this vault places over the same range. Previously it had a specific
theme for each depth (e.g. gnolls then later orcs), but something so
specific is more difficult to scale. Instead we use a mix of gnolls,
orcs, kobolds, and other Bailey-loving humanoid monsters to give us good
variety of monster classes. We introduce different types "guard dogs" as
the depth changes, using hounds after jackals, and also adding in some
howler monkeys, since those are great at rousing the castle army. In the
late dungeon hell hounds and even raiju make an appearance at the back
of the castle.

For Depths, we keep the "giant" theme, since there are enough such
monsters to choose from, and use mostly dragons as the guardian beasts
instead of hound genus monsters, however one may found a shrike or X at
the back of the castle moat. On Depths:5 it places the Zot entrance and
draconian and dragon monsters as before, but with some tweaks to the
composition of those. Keep the death drakes, but use real dragons
instead of a bunch of low-level drakes. Don't thin out the number of "1"
monsters drastically only for Depths:5, rather removing about 8 of these
from the original lemuel subvault, since that one places so many more
than the other subvaults. It still places the most monsters (and the
most loot), just not so many more compared to the other subvaults.

For loot, scale up the type and quality with depth instead of the
thining out numbers earlier. We don't change the monster count  with
depths, so the overall loot count should likewise remain constant.

2 months agoDon't allow Manifold Assault to attack projectiles
Kate [Sat, 17 Apr 2021 07:47:24 +0000]
Don't allow Manifold Assault to attack projectiles

2 months agoSimplify Cleansing Flame description (Yermak)
Kate [Sat, 17 Apr 2021 01:49:42 +0000]
Simplify Cleansing Flame description (Yermak)

2 months agoNew Sastreii tiles
Nicholas Feinberg [Sat, 17 Apr 2021 01:48:24 +0000]
New Sastreii tiles

Hydras + normal & randart boots.

2 months agoUpdate MUT_PAWS description (advil)
Kate [Sat, 17 Apr 2021 00:57:41 +0000]
Update MUT_PAWS description (advil)

2 months agoAdjust some stealth handling
Kate [Sat, 17 Apr 2021 00:42:44 +0000]
Adjust some stealth handling

Fixes Merfolk and Octopodes not getting their bonus stealth when flying
over water, makes the Jiyva-only translucent skin mutation always give a
full pip of stealth, and removes the marginal stealth penalty and bonus
from hooves and paws respectively.