3 hours agoFix braces master
Kate [Sun, 20 Jun 2021 18:58:39 +0000]
Fix braces

3 hours agoFix a newly-introduced melee crash
Kate [Sun, 20 Jun 2021 18:58:12 +0000]
Fix a newly-introduced melee crash

Don't bail out of combat and crash after a fire vortex attacks and destroys

5 hours agoClean up monsters that die due to acid retaliation damage
Kate [Sun, 20 Jun 2021 17:17:23 +0000]
Clean up monsters that die due to acid retaliation damage

Fixes an issue with invalid dead spectral weapons when they die to acid
retaliation damage, hopefully fixes a related crash, and probably doesn't
break anything else?

5 hours agoDon't allow GDR below 0%
Kate [Sun, 20 Jun 2021 17:06:43 +0000]
Don't allow GDR below 0%

(For wizmode display purposes.)

6 hours agoFix an information leak with LOS attack spells (#12605)
Kate [Sun, 20 Jun 2021 16:04:22 +0000]
Fix an information leak with LOS attack spells (#12605)

Don't consider invisible creatures as valid affected targets if you can't
see them.

2 days agoFix tag_upgrade compilation
Kate [Fri, 18 Jun 2021 21:19:46 +0000]
Fix tag_upgrade compilation

2 days agoDon't try and place djinn corpses in nicolae_arrival_memento_mori
Kate [Fri, 18 Jun 2021 21:16:25 +0000]
Don't try and place djinn corpses in nicolae_arrival_memento_mori

But do place palentonga corpses since those do exist.

2 days agoUpdate some monsters-behind-glass vaults
Kate [Fri, 18 Jun 2021 20:18:47 +0000]
Update some monsters-behind-glass vaults

To use accurate lists of player species monsters.

2 days agoAdd dummy monsters for player djinn
Kate [Fri, 18 Jun 2021 20:17:44 +0000]
Add dummy monsters for player djinn

2 days agoReplace Animate Skeleton with Call Imp in the tutorial
Kate [Fri, 18 Jun 2021 03:24:30 +0000]
Replace Animate Skeleton with Call Imp in the tutorial

Since summons should function better than raised undead due to the
relatively quick expiry timer on the skeletons.

2 days agoUpdate tutorial some more (CanOfWorms)
Kate [Fri, 18 Jun 2021 03:12:36 +0000]
Update tutorial some more (CanOfWorms)

2 days agoFix Poisonous Vapours not working on rPois- monsters (Ham)
Kate [Fri, 18 Jun 2021 00:32:07 +0000]
Fix Poisonous Vapours not working on rPois- monsters (Ham)

3 days agoFix a tutorial/hints mode crash
Kate [Thu, 17 Jun 2021 21:54:45 +0000]
Fix a tutorial/hints mode crash

3 days agoUpdate tutorial
Kate [Thu, 17 Jun 2021 21:33:33 +0000]
Update tutorial

Remove some more unused tutorial pads, replace a redefined monster with a
real one, and replace the ratskin cloak so as not to give the player allies
in an early lesson before allies are deliberately introduced in the later
spellcasting tutorial.

3 days agoRework Poisonous Vapours not to create clouds
Kate [Mon, 14 Jun 2021 22:38:32 +0000]
Rework Poisonous Vapours not to create clouds

Mechanically, Poisonous Vapours is intended to apply a small amount of
smite-targeted poison, but the fact that it was implemented by using a
cloud ended up making it unnecessarily complicated. Almost all of the time
the cloud would dissipate immediately, but at particularly high power it
would stick around for a brief while, and using a cloud also prevented
using it against targets that were already in clouds.

Instead make it just directly apply poison, with the number of stacks
applied scaling up at high power (to compensate for the fact that the cloud
itself could previously deal some direct damage).

3 days agoRemove an unused tutorial pad
Kate [Thu, 17 Jun 2021 16:27:55 +0000]
Remove an unused tutorial pad

4 days agofix: don't mark ash-cursed items as useless
advil [Wed, 16 Jun 2021 14:17:00 +0000]
fix: don't mark ash-cursed items as useless

In various cases the player can put on items whose base ego is useless
(e.g. faith), and then curse them, in which case they are no longer
useless. The melding logic here relies on the rest of the code being
right, which it probably isn't, but it looked ok in the cases I tested.

4 days agofix: fully inactivate faith for ashenzari (u/Imaginationably)
advil [Wed, 16 Jun 2021 13:56:37 +0000]
fix: fully inactivate faith for ashenzari (u/Imaginationably)

c9f47ef48ce0 disabled the piety gain effect of faith and marked it
useless, but did not turn of the on-remove effect or messaging.
(Possibly this code would be cleaner if all of these things were tied to
uselessness, but I'm not sure enough how the other gods work to change
that.) It's still possible to wear useless items (and in this case, even
curse them -- in fact this maybe means that ash followers should collect
useless amulets until they have something better to curse? Haven't
played enough newash to know if this is a good idea.)

4 days agoPartially fix chain lightning death messages
Nicholas Feinberg [Wed, 16 Jun 2021 05:22:10 +0000]
Partially fix chain lightning death messages

Still broken in a couple of ways, but this is all I've got in me
for tonight.

4 days agoDisplay chain lightning damage in monster
Nicholas Feinberg [Wed, 16 Jun 2021 05:13:48 +0000]
Display chain lightning damage in monster


4 days agoFix monster
Nicholas Feinberg [Wed, 16 Jun 2021 05:09:42 +0000]
Fix monster


5 days agoAdd a fairly silly splash (ArbitUHHH)
Nicholas Feinberg [Tue, 15 Jun 2021 21:49:28 +0000]
Add a fairly silly splash (ArbitUHHH)

Much debate over this one, but the chicken won out in the end.

5 days agofix: remove chain lightning delays with no animations (Yermak)
advil [Tue, 15 Jun 2021 17:55:18 +0000]
fix: remove chain lightning delays with no animations (Yermak)

This extends the refresh option introduced in e645bd13c135 to be usable
as a beam option, for callers who are not separating drawing and damage.
It then applies it to chain lightning, fixing the lag when animations
are off; this commit should also reduce the number of redraws with
animations on (which is a factor in lag online). As one of the TODO
notes says, I am still not entirely sure why there should still by
default be an update per cell when draw_delay == 0, but this is
preserving old behavior from before e645bd13c135, and I would need to do
more investigation before simplifying.

5 days agoFix a shop vault depth (nicolae)
gammafunk [Tue, 15 Jun 2021 14:30:55 +0000]
Fix a shop vault depth (nicolae)

5 days agoSome shop vaults from nicolae (12593)
gammafunk [Tue, 15 Jun 2021 10:19:59 +0000]
Some shop vaults from nicolae (12593)

No real changes from the original submission aside from a couple very
minor bug fixes.

5 days agoRefactor and expand objstat statistics
gammafunk [Tue, 15 Jun 2021 08:40:45 +0000]
Refactor and expand objstat statistics

This commit reworks most of the internal data handling of objstat to be
more consistent and to allow tracking of additional data. All item
categories now track additional categories of whether the item was in a
vault, held by a monster, or in a shop. Aspects like enchant/charges and
brands are likewise tracked within these new categories. We also now
track statistics for spells, as described further below. Artefact books
are moved over to the spellbook tracking file, treating level artefact
books and theme artefact books as two distinct book types. Additionally
manuals now track by their associated skill instead of all together.
Finally, objstat no longer produces redundant listings for "All Levels"
when only one branch is tabulated, since that data is already in the
branch summary.

For items, the tracking categories of artefact, vault, shop, and held by
monster are independent of each other. So one can't determine the number
of items both held by a monster and in a vault, for example; tracking
all combinations of these aspects would lead to too many statistics of
marginal interest. Exception to this are the fact that an item can't be
both held by a monster and in a shop and that all shop items are vault
items, since shops place through vaults. Subtracting the values in these
categories from the overall value will always give the count for the
negation of that category. For example, subtracting NumArte from Num
gives the number of non-artefact items. I've removed fields like
"NumOrd" that can be calculated in this way to reduce the number of
output statistics; these calculations can be easily made by a
spreadsheet, once the data is imported.

For spell tracking, we track overall counts by spell and within the new
categories mentioned above, including artefact for spells in artefact
spellbooks. Additionally we have "Chance" fields for spells in all
categories. The Chance field gives the percentage of the time the spell
was seen on a given level. This can be useful for determining the chance
a spell would be seen by some depth, for example.  Calculation of Chance
fields could be extended to other item categories like Misc, Staves, or
even all items, if that's later deemed useful.

Internally it now uses map<> instead of vector<> for indexing
statistics, which simplifies statistical initialization, since we can
rely on default initialization of zero for most statistics. I've made
these maps use enum types keys where that's possible, but in some cases
like item sub_type we still need to use int keys, since item sub_types
don't share a common enum type.

5 days agoRewrite new game spell setup
Nicholas Feinberg [Tue, 15 Jun 2021 00:07:25 +0000]
Rewrite new game spell setup

In preparation for future changes, don't give new characters a
spellbook and then immediately destroy it. Instead, give them a
specific list of spells.

6 days agofix: guaranteed source of digging in sprint_mu slime (Nivim)
advil [Mon, 14 Jun 2021 13:54:04 +0000]
fix: guaranteed source of digging in sprint_mu slime (Nivim)

There is no code to remove the walls on TRJ death, and it is not easy to
port the regular game code over. I'm guessing the intent was to break
these walls somehow (they are rock, not stone). The sprint does place a
source of digging, just not in slime, possibly because it would have
been eaten.  However, that is no longer an issue, so I'm just adding a
guaranteed digging wand on the altar. If someone ever implements wall
destruction here, remove this.

6 days agofix: prevent closets in `heliophobic_arrival_ceremonial_halls`
advil [Mon, 14 Jun 2021 13:19:45 +0000]
fix: prevent closets in `heliophobic_arrival_ceremonial_halls`

Extends the fix in #1984. The biggest thing this vault needed was a
`transparent` tag; I've also added the pathing from #1981 as it will
help it place, and in addition to that added explicit @ tags. It could
be good to randomize the outer pathing a bit, but let's keep it simple
for now.

Resolves #1973
Resolves #1984

6 days agoFix: lemuel_upstairs_altar
DreamDust [Mon, 14 Jun 2021 06:00:11 +0000]
Fix: lemuel_upstairs_altar

[Committer's note: ensure that this places where a downstairs can place]

Resolves #1981

6 days agoMerge pull request #1972 from hellmonk3/rollingrocks
hellmonk3 [Mon, 14 Jun 2021 02:16:23 +0000]
Merge pull request #1972 from hellmonk3/rollingrocks

New spider minivault

6 days agoMerge pull request #1971 from hellmonk3/zotshop
hellmonk3 [Mon, 14 Jun 2021 01:39:57 +0000]
Merge pull request #1971 from hellmonk3/zotshop

New Zot:5 shop vault

6 days agoReturn blade hands to level 5
hellmonk [Mon, 14 Jun 2021 01:28:55 +0000]
Return blade hands to level 5

While it's unlikely to return to the TM start book, blade hands works best at
a lower level, where the option to cast it in heavy armour is more appealing.

6 days agoAdjust Wereblood description
Kate [Sun, 13 Jun 2021 23:21:48 +0000]
Adjust Wereblood description

7 days agoAdd a Werewolf quote (Ge0ff, 12601)
Nicholas Feinberg [Sat, 12 Jun 2021 22:39:05 +0000]
Add a Werewolf quote (Ge0ff, 12601)

8 days agoFix pluralisation
Kate [Sat, 12 Jun 2021 18:30:49 +0000]
Fix pluralisation

Apparently both are valid, but "vortices" is what's currently used

8 days agofix: remove some ancient mac debugging code
advil [Sat, 12 Jun 2021 17:56:38 +0000]
fix: remove some ancient mac debugging code

This code originates from pre-version-controlled dcss or earlier. I can
only imagine that at some point <2005 things were weird with intentional
crash signals in MacOS to the point where accessing *nullptr seemed like
a good idea, but on a modern mac this has been increasingly unreliable,
and on an M1 / big sur device, it freezes with 100% cpu before timing
out or needing kill -9, at least 2/3 of the time. As far as I can tell,
sending abort works fine and doesn't do this. We'll see if this
generalizes to other devices.

8 days agoSend DCSS straight to hell
Nicholas Feinberg [Sat, 12 Jun 2021 04:26:11 +0000]
Send DCSS straight to hell

Welcome to the dev team, hellmonk! :)

9 days agofix: enable autofight for blinkbolt
advil [Fri, 11 Jun 2021 19:42:53 +0000]
fix: enable autofight for blinkbolt

9 days agorefactor: better organization for animated objects take 2
advil [Fri, 11 Jun 2021 18:17:30 +0000]
refactor: better organization for animated objects take 2

These are still a bit all over the place, but this at least gives a
slightly more unified API and uses it; small UI cleanups happened as a
consequence, e.g. better labeling in ctrl-x, animated armour gets the
dancing icon (I realize it isn't technically "dancing" but it's still
useful I think). Hopefully haven't missed too much here.

This reverts commit f925c23bd1a27674721db3c623a4d332f2cfaff7.

9 days agoRevert "refactor: slightly better organization for animated objects"
advil [Fri, 11 Jun 2021 18:17:03 +0000]
Revert "refactor: slightly better organization for animated objects"

(fails to build on tiles, oops)

This reverts commit 201ea1cf866eb8e85181b8f30b0fa74a58a99de0.

9 days agorefactor: slightly better organization for animated objects
advil [Fri, 11 Jun 2021 17:53:45 +0000]
refactor: slightly better organization for animated objects

These are still a bit all over the place, but this at least gives a
slightly more unified API and uses it; small UI cleanups happened as a
consequence. Hopefully haven't missed too much here.

9 days agoDon't put Refrigeration users under penance for tracer checks (#1978)
nlavsky [Fri, 11 Jun 2021 00:50:31 +0000]
Don't put Refrigeration users under penance for tracer checks (#1978)

After 73eefd5d, Ozocubu's Refrigeration users can get under penance for
opening the z? or Q menus or just for having the spell on the quiver.
It happens if they worship a god who cares about allies and if there
are allies nearby.

Fix this by skipping conducts when doing tracer checks.

10 days agofix: remove accidental debug messaging
advil [Thu, 10 Jun 2021 21:09:11 +0000]
fix: remove accidental debug messaging

10 days agobuild: reduce iterations for uniques testing
advil [Thu, 10 Jun 2021 21:05:35 +0000]
build: reduce iterations for uniques testing

This is one of the slower tests, and for something testing a basically
unchanging mechanism, doing all of these iterations every time on CI
doesn't seem to accomplish much to me.

10 days agofeat: tweak polar vortex glyph colours
advil [Thu, 10 Jun 2021 19:13:23 +0000]
feat: tweak polar vortex glyph colours

It's possible this is overcomplicating things, as it may make it
slightly harder to identify terrain. However, the glyph colours were
inconsistent with the tile colours, and also not very on-theme for how
ice is usually depicted on console. (Of course, if Tornado had never
existed, this might be less of an issue.) I ended up deciding that e.g.
just using glaciate glyph colours didn't really work, it was too ugly,
so this uses a bit more randomness for one of the phases to add some
more subtle console ice colouring in. One phase is always stable, to
prevent complete chaos.

10 days agofix: more vortex removal for CI
advil [Thu, 10 Jun 2021 18:23:25 +0000]
fix: more vortex removal for CI

10 days agofix: remove an ENCH_VORTEX reference for CI
advil [Thu, 10 Jun 2021 18:12:34 +0000]
fix: remove an ENCH_VORTEX reference for CI

Looks like it is safe to just remove this?

10 days agofix: get rid of "unable to find exits" error in bounce.lua test
advil [Thu, 10 Jun 2021 17:47:25 +0000]
fix: get rid of "unable to find exits" error in bounce.lua test

Tagging this with no_exits simply skips the placement code that
generates this error.

10 days agobuild: shorten mut_species.lua test
advil [Thu, 10 Jun 2021 17:36:24 +0000]
build: shorten mut_species.lua test

This is one of the slowest tests, and it has been a long time since it
actually found anything; I think we can do with fewer iterations.

10 days agofix: revert a debugging change
advil [Thu, 10 Jun 2021 17:31:15 +0000]
fix: revert a debugging change

This was for debugging itemspecs, but accidentally got committed in

10 days agofix: improve crashes for unrecoverable builder lua errors
advil [Thu, 10 Jun 2021 14:12:28 +0000]
fix: improve crashes for unrecoverable builder lua errors

This isn't intended to be a full solution for lua errors at levelgen time, but
tries to make the crash process smoother, both in terms of messaging,
and efficiency.

The builder for each map tries to run vault lua 25 times, and tries to
build a level 50 times before bailing entirely with a crash. So if a
vault has e.g. a broken itemspec that produces a lua error during
levelgen, this can be repeated at least 25 times, and for wizmode force
generation (&P), 25 * 50 times. The vast majority of errors of this
category (though not all) will be deterministic, so there's no point to
retries. In cases like this, on a debug build the lag for the crash is
also pretty noticeable. So, implement some stuff to immediately bail
(for &P) or veto (for regular levelgen). In addition, percolate the
actual lua error up the messaging chain a bit better, so the it now is
actuall visible directly from the command line. (It's probably a bit
*too* redundantly printed now, though.)

Implementation: this commit adds a state variable to signal that an
error was fatal, and handling for it to improve the messaging and skip
all these retries.  This may be something that would be more naturally
done with exceptions, but it's entirely possible that these exceptions
would need to dance around the lua layer (which can't have exceptions
thrown across it, see 091e5a1), and I don't want to mess with this. For
regular levelgen, this does throw a veto exception, but from a place
where that should be safe to do.

10 days agoLet Storm Form go mano-e-mano (engine, Reeces)
Nicholas Feinberg [Thu, 10 Jun 2021 17:13:23 +0000]
Let Storm Form go mano-e-mano (engine, Reeces)


Also sneakily revert the EV bonus from the last change.

10 days agoRework Air Elementals
Nicholas Feinberg [Thu, 10 Jun 2021 15:29:12 +0000]
Rework Air Elementals

Air elementals' use of Twister (a lesser Tornado/Polar Vortex) was
intended to give them a more interesting gimmick than their old ones
(submerging in air). However, it was quite complex, and tended to
cause quite a lot of collateral damage to their own allies. That could
be fun sometimes, but it could also result in victories that felt unearned.

Instead, let's try a new spell: Stunning Burst, a weak electrical beam
attack that can inflict a very brief (1 turn) paralysis on hit. rElec can
resist it, as can dodging, stasis, or controlling line of fire, but Will has
no effect. Let's see how higher-frequency, lower-impact Para feels.

10 days agofix: prevent save corruption on &P crashes
advil [Thu, 10 Jun 2021 13:28:32 +0000]
fix: prevent save corruption on &P crashes

This fixes a couple of ways that a save could become unloadable when it
crashes with &P: (i) the force props didn't get cleared, so the game
would try to regenerate exactly the failing levelgen process all over
again (which might be ok for some crashes, but not e.g. a bad itemspec),
and (ii) placeinfo would get corrupted in a way that doesn't get fixed
up (now it gets corrupted in a way that does).

10 days agoCheckwhite
gammafunk [Thu, 10 Jun 2021 09:14:35 +0000]

10 days agoSome Shoals vaults from nicolae (12593)
gammafunk [Thu, 10 Jun 2021 08:37:33 +0000]
Some Shoals vaults from nicolae (12593)

A set of 7 decor vaults and a set of 18 monster vaults. Minor edits have
been made to the original submissions to follow syntax ordering style
and to reglyph monsters to use number glyphs where possible. Remove
patrolling tag for vaults that use in-branch monsters and add it in
other cases where out-of-branch monsters are placed in vaults with
special themes. More substantive edits to a couple vaults described

nicolae_shoals_hidden_pirate_stash: Make the possible rapier weapon loot
be good_item and make the scroll 50/50 for magic mapping or any scroll,
instead of having a weight of 4 for the latter.

nicolae_shoals_pincushion_passage: Thin out the monster a count, turning
a 2/3 chance into a 1/3 chance, since otherwise it's a bit high for
placing so many upper tier monsters. Could go either way on this change,
but a bit fewer monsters felt right.

nicolae_shoals_raging_river: Use elemental wellsprings instead of a
custom vault define, which was a permanently berserk water elemental. A
cute idea, but ultimately not quite interesting enough to warrant a
custom definition, and I think what wellsprings can do is ultimately
more interesting.

10 days agoSome cleanups for Shoals.des
gammafunk [Mon, 7 Jun 2021 09:14:17 +0000]
Some cleanups for Shoals.des

Fix a section header and reindent and reorder a bunch of lines in some

10 days agoA quote for scrolls of identification (nicolae, 12593)
gammafunk [Mon, 7 Jun 2021 00:06:26 +0000]
A quote for scrolls of identification (nicolae, 12593)

10 days agoDon't claim Okawaru cares about your friends (Ge0ff)
Nicholas Feinberg [Thu, 10 Jun 2021 02:24:13 +0000]
Don't claim Okawaru cares about your friends (Ge0ff)

Since, as of 08c3841fb2f98d06ca037a69b54f3ed05b193e84, Oka doesn't.

10 days agoStorm Form tweaks
Nicholas Feinberg [Thu, 10 Jun 2021 02:19:16 +0000]
Storm Form tweaks

Make it nonliving (not having this was an oversight) and double the
EV bonus to improve defenses a bit.

10 days agoRemove Absolute Zero
Nicholas Feinberg [Thu, 10 Jun 2021 02:01:40 +0000]
Remove Absolute Zero

Absolute Zero was a spectacular, memorable effect: instantly turn the
closest enemy into a block of ice! Unfortunately, in play, it ended up
feeling worse than it sounded. The targeting constraints were a bit less
limiting than had been intended, and many otherwise dramatic fights
against powerful foes felt like anticlimaxes. It's still not entirely
clear whether the spell was "too powerful" relative to the investment
required to cast it, but it didn't *feel* good.

There have been many suggestions for improving Absolute Zero - for example,
adding a delay to the effect and making it a L9 Poison (!!) spell. When
we want to experiment with those, we can revert this commit. For now,
though, let's toss it.

(A small part of this change [targeter removal] is in the previous
commit - sorry! Don't miss that if you revert this.)

10 days agoMove Chain Lightning to level 9
Nicholas Feinberg [Thu, 10 Jun 2021 01:56:15 +0000]
Move Chain Lightning to level 9

After moving Tornado to Ice as Polar Vortex, Air needed a new level
9 spell. Chain Lightning is a spectacular and fun effect, but the
current version is a bit messy and hard to understand - recursive
arcs result in notoriously mysterious damage numbers ("4-264"). This
seemed like a great opportunity to fix both.

The new, level 9 Chain Lightning is intended to be an extremely powerful,
but situation-dependent, effect. It does massive damage to the nearest
target (partially ignoring both rElec and AC), and then arcs from that
target outward, dealing somewhat reduced damage on subsequent arcs. With
the right setup, it can spread across the entire screen, or it can just
hit a few enemies on one side, depending on how you're positioned. It's
intended to be competitive with Fire Storm (and thus keeps the Conjuration
school), but to play very differently.

Monster Chain Lightning is also changed to match. Nikola now does 3d17 at
max range and 3d45 at point blank (again, partially ignoring AC and rElec),
which should make him a more comprehensible and interesting encounter about
managing distance, rather than just quaffing a resist potion or tricking him
into walking near a plant. We'll see how that works out!

10 days agoShift: Tornado (L9 Air) -> Polar Vortex (L9 Ice)
Nicholas Feinberg [Thu, 10 Jun 2021 01:41:39 +0000]
Shift: Tornado (L9 Air) -> Polar Vortex (L9 Ice)

Ice, as a school, is intended to be 'diffuse' and 'subtle', With a
few exceptions (i.e. Freeze), it tends to be best at dealing damage
gradually to many enemies. That provides it with a distinctive
playstyle, and Tornado fits that playstyle perfectly.

As such, we'll shift Tornado to be the new level 9 Ice spell.
Subsequent commits will discuss the removal of Absolute Zero and the
new level 9 Air spell further.

Functionally, the main change here is that Polar Vortex does 33% more
damage (3 more dice) but is 40% resistable by rC, as with Hailstorm.
Otherwise, it's the same spell.

10 days agoMove Freezing Cloud to level 5
Nicholas Feinberg [Tue, 8 Jun 2021 15:00:20 +0000]
Move Freezing Cloud to level 5

Since clouds now dissipate out of LOS and Ozocubu's Refrigeration
now deals heavy damae, it's hard to justify the investment in Freezing
Cloud as a 3-school spell. Move it to level 5 to make it a bit more
viable, and to add symmetry with Bolt of Magma as a L5 Fire/Earth/Cj.

10 days agofeat: add basic tele closet detection to placement.lua
advil [Thu, 10 Jun 2021 00:43:40 +0000]
feat: add basic tele closet detection to placement.lua

This code tries to find spaces that are isolated, contain no stairs or
hatches, and aren't marked with the no_tele_into KPROP. There are some
things where it gets false positives, e.g. spaces completely filled by
monsters, feature mimics, probably more. Reuses existing connectivity
checking code.

10 days agofix: a batch of tele closet fixes
advil [Thu, 10 Jun 2021 00:42:27 +0000]
fix: a batch of tele closet fixes

Many of these are false positives, in the sense that they are tele
closets filled by monsters (skipped by the tele code except for wizard
teleport). But, they quiet the scripts.

11 days agofeat: options for resuming placement.lua in the middle
advil [Wed, 9 Jun 2021 16:25:28 +0000]
feat: options for resuming placement.lua in the middle

This lets you choose where to start by vault name, which is convenient
for running large batches of placement checks. I also added an option to
limit the number of vaults tested.

11 days agofix: a batch of vault opacity fixes
advil [Wed, 9 Jun 2021 16:24:02 +0000]
fix: a batch of vault opacity fixes

Detected via the placement.lua script. Not all of these are perfect
fixes, and several of these vaults will still trigger vetos under some

11 days agofix: some vault opacity fixes from nicolae
advil [Wed, 9 Jun 2021 15:52:01 +0000]
fix: some vault opacity fixes from nicolae

This fixes several vaults that could generate isolated regions,
including merging the change in snakefix.des in .

11 days agofix: expand opaque mask skipping for vault exits
advil [Wed, 9 Jun 2021 02:18:09 +0000]
fix: expand opaque mask skipping for vault exits

Since 080276f, the `@` glyph is never automatically masked as opaque,
leading to some connectivity checks for non-transparent vaults that do
have exits. However, many vaults with only one exit rely on `+`, `=`, or
even ` ` (in the case of floats with no marked exits) being interpreted
as an exit as well. Example: library_closet in This commit expands
things so that anything that counts as an exit for a vault will not
receive an opaque mask unless that glyph is explicitly masked, which
will expand connectivity checks by quite a bit. This may over-veto,
we'll see, but in my testing seems to work and fixes the issue in 12591
without otherwise disrupting the seed (will need to do some more
automated testing).

11 days agofix: avoid vetoing islands in pf_hell_entry_tar_river
advil [Wed, 9 Jun 2021 02:14:22 +0000]
fix: avoid vetoing islands in pf_hell_entry_tar_river

Because any `w` tile could turn into `.`, this vault can often generate
islands in the corners, which will veto. This tweak adjusts the corners
to never convert to land; two of the optional spectral shrikes may place
only in the corners.

11 days agofix: various vault transparency fixes
advil [Wed, 9 Jun 2021 01:55:49 +0000]
fix: various vault transparency fixes

Mostly for new-ish vaults; I'm a bit surprised if these placed. In most
cases this is just adjusting the masking. For nemelex_altar_shiori the
removal of the transparent tag may be awkward, as it means this will
veto unless *both* doors link up, but masking this one would be a pain.

12 days agofix: let `sword_in_stone` not choke on dancing singing sword
advil [Tue, 8 Jun 2021 20:57:44 +0000]
fix: let `sword_in_stone` not choke on dancing singing sword

e7febcc0c011a added singing sword to `sword_in_stone`. However, the
dancing weapon spec parsing couldn't handle providing an unrand here,
and so the 1/50 condition would just produce a lua error (even if the
vault is placing at a depth where the non-dancing one would be used).
This commit implements correct spec parsing for unrands, and so lets
this vault work as intended. If singing sword is already placed, it
places a dancing fallback unrand (which seems to work correctly).

12 days agoMake Wereblood heal 1d3 on kill
Nicholas Feinberg [Tue, 8 Jun 2021 19:31:38 +0000]
Make Wereblood heal 1d3 on kill

Wereblood is dangerous to use because it draws in more enemies,
That's a good tradeoff to discourage players from using it all the
time, but to encourage player to use it for some fights, give a
small amount of healing on kills so that the player is more likely
to be at high enough health to face later enemies.

12 days agoDon't put a level 7 spell in a starting book
Nicholas Feinberg [Tue, 8 Jun 2021 19:16:40 +0000]
Don't put a level 7 spell in a starting book


12 days agofix: fix fixes
advil [Tue, 8 Jun 2021 19:00:54 +0000]
fix: fix fixes

12 days agofix: yet more hydraform removal
advil [Tue, 8 Jun 2021 18:57:15 +0000]
fix: yet more hydraform removal

I'm not sure if a straight replacement with storm form in changes is
what was intended, but hydra form's presence there was causing crashes.
Also removed it from the enum on upgrade.

12 days agobuild: more fully remove hydraform
advil [Tue, 8 Jun 2021 18:37:09 +0000]
build: more fully remove hydraform

and hopefully fix CI

12 days agoStorm Form to level 7
Nicholas Feinberg [Tue, 8 Jun 2021 17:14:49 +0000]
Storm Form to level 7

Discourage using it at low spellpower (where it's much less useful)
and communicate that it's meant to be a top-tier tmut, comparable to
Dragon Form. It becomes castable around 60-70 power now, which feels
like a reasonable starting point.

12 days agoReplace hydra form with storm form
hellmonk [Mon, 12 Apr 2021 00:25:34 +0000]
Replace hydra form with storm form

Hydra form was intended to be a heavily power-scaling form that made up for its
bad defenses with cleaving melee and heal on kill. In practice, it was hard to
obtain enough power for hydra form to outdamage to other forms, let alone find
situations in which its benefits made up for poor ac and awful evasion.

Storm form will attempt to fill the same niche as a lategame form that rewards
high spellpower, but hopefully do it a bit better. Storm form melds non-jewelery
slots, provides 2 + power / 2.5 base damage elec branded cleaving melee (breakeven
post-brand damage with dragon form at 90ish power), 10 + power / 10 AC, retains
player size and adds a power / 10 ev bonus, provides flight and relec, and has an
activatable "blinkbolt" ability that deals elec damage and blinks the player to
the end of its path, but must target a monster and has a cooldown.

The new spell is level 6 transmutation/air, which makes spellpower more expensive
in terms of exp but does allow easier enhancement. It is probably still very
niche, but should be better in its niche. Numbers are open to adjustment.
Additionally, it needs cool tiles for the form and ability.

12 days agoIncrease ice form's ac power scaling.
hellmonk [Sat, 10 Apr 2021 04:09:43 +0000]
Increase ice form's ac power scaling.

Ice form became comparatively unattractive due to blade hands buffs in 0.20 and
was somewhat niche. Combined with the blade hands nerf, buffing ice form ac
somewhat should make it more appealing. AC is unchanged at 0 power and 5 higher
at maximum (100) power.

12 days agobuild: update ci irc information
advil [Tue, 8 Jun 2021 14:07:35 +0000]
build: update ci irc information

12 days agoRemove wandering mushroom/toadstool magic
Nicholas Feinberg [Tue, 8 Jun 2021 03:54:40 +0000]
Remove wandering mushroom/toadstool magic

Wandering mushrooms were able to path through toadstools so that it
wouldn't be annoying when you created a wandering mushroom, prayed on
a corpse to get a toadstool, and then got stuck. That logic really
isn't need anymore.

Reverts b5de9b17133aa . (Sorry, Sage.)

12 days agoAllow silencing rolling charge (engine)
Nicholas Feinberg [Tue, 8 Jun 2021 03:37:44 +0000]
Allow silencing rolling charge (engine)

Alternative solution would have made 'the rumble of your scales through
the stone' (or whatever) alert victims. If this is the next high-level
stabbing tech then maybe I'll do something about it, who knows.

13 days agoAdjust elemental wellsprings
Kate [Mon, 7 Jun 2021 09:54:27 +0000]
Adjust elemental wellsprings

Their self-damage on cast caused them to abjure their own summons, as well
as being poorly documented as a special-case on top of a spell that doesn't
normally create summons. Instead give them Summon Water Elementals as a
normal spell and remove their self-damage on cast as well as their fast
regen. Also give them a radius 1 water aura like water nymphs, rather than
just affecting the tile underneath them.

13 days agoShorten Gozag's distraction message
Kate [Mon, 7 Jun 2021 15:10:06 +0000]
Shorten Gozag's distraction message

It was a lot wordier than necessary for something that's often displayed
multiple times a turn. The "dreaming of imaginary riches" part was intended
to clarify that it doesn't require actual gold to be present on the floor
or in inventory, but the new "golden aura" wording now covers that anyway.

13 days agoFix an error message when creating a malformed dancing/spectral weapon.
Aliscans [Sun, 18 Apr 2021 12:17:17 +0000]
Fix an error message when creating a malformed dancing/spectral weapon.

Previously, if you using the wizard mode create monster command with
"dancing weapon; stone" on a build with asserts compiled in, the game
crashed with "ASSERT(wpn) in '' at line 5159 failed.". The
same happens for any non-weapon, or even "nothing", and the same if a
vault was created which included such a monster.

With this change, it prints "Monster 'dancing weapon' requires a
weapon." instead in wizard mode, and the game cannot start if any vault
contains a monster like that.

13 days agoModify Grammar Sceptre of Torment
l33t-d00d [Tue, 27 Apr 2021 15:44:43 +0000]
Modify Grammar Sceptre of Torment

Minor grammatical modification to the message when wielding the Sceptre of Torment.  "Terribly searing pain" (adverb modifying adjective describing noun) becomes "Terrible, searing pain" (compound adjective describing noun).  Both are correct, however, the latter flows and sounds better.

13 days agoTweak Ozocubu's Refrigeration usefulness check
Nikolai Lavsky [Mon, 31 May 2021 12:20:59 +0000]
Tweak Ozocubu's Refrigeration usefulness check

Currently, the UI incorrectly tells the player that the spell has
valid targets when there are only plants, butterflies, or player
allies nearby.

This commit changes Refrigeration's usefulness check, so the spell
is grayed out on the quiver if there are no hostile monsters in LOS.

[Committer's note: I rewrote this to be a bit simpler.]

Closes #1968.

13 days agoWJC Sifu names change
dilly [Fri, 14 May 2021 06:45:41 +0000]
WJC Sifu names change

Deng Ai, Jiang Wei, Zhang Bao, Sun Luban(especially this one) are not appropriate for the masters of martial arts council.

13 days agoChange the gozag gold distraction message.
hellmonk [Fri, 4 Jun 2021 03:23:29 +0000]
Change the gozag gold distraction message.

The previous messages implied that nearby gold piles or the player's carried
gold caused the effect, which was confusing.

13 days agoDon't let animated armour open doors
Nicholas Feinberg [Mon, 7 Jun 2021 01:13:04 +0000]
Don't let animated armour open doors

They have no hands!

13 days agoRemove unrand animated armour crash
Nicholas Feinberg [Mon, 7 Jun 2021 01:12:31 +0000]
Remove unrand animated armour crash

Don't crash when saving if an animated armour drawn from an unrand
is walking around.

13 days agoFix Vampiric Drain messaging (Yermak, 12597)
Nicholas Feinberg [Mon, 7 Jun 2021 00:45:59 +0000]
Fix Vampiric Drain messaging (Yermak, 12597)

And do a bit of refactoring while I'm in the area.

2 weeks agoRemove Invis range listing (Undo)
Nicholas Feinberg [Sun, 6 Jun 2021 17:23:00 +0000]
Remove Invis range listing (Undo)

Misleading since 6385558a29ec6c .

2 weeks agoUpdate the history section of the manual
gammafunk [Sun, 6 Jun 2021 01:52:54 +0000]
Update the history section of the manual

I've rewritten the history section to hopefully better capture the
origins of Linley's Dungeon Crawl and its progression to DCSS. Mention
Moria instead of Angband, as the former is what Linley actually gave as
his inspiration:

"Crawl started out in about 1995 when, having played PCHack and Moria, I
managed to get hold of NetHack 3.1.3. Although I liked the randomness
and the humour of it, there were some things I really wanted to fix -
the targetting system, for example - and I thought parts of it, like
spellcasting, could be made much more interesting (NetHack still has
very few spells which weren't wand/potion/scroll effects in Rogue). So I
dusted off my old Turbo C++ box and set about teaching myself C, with
only a rudimentary knowledge of Commodore 64 BASIC to get me started (I
wasn't connected to the internet in those days)."


Mention Hack instead of PCHack as the latter is a direct port of Hack,
and curious readers will have an easier time finding info on the
original game; I certainly did!

The mention of traditional RPGs, specifically Ultima IV, is hopefully
interesting to people who didn't realize that PC RPGs were also an
direct inspiration, particularly the limited LOS/play area of a large
map seen in games like Ultima IV. Moria does already have a similar
play area compared to Crawl, but Linley highlighted the influence of PC
RPGs aesthetics like of Ultima in a couple of interviews. Sadly I'm only
able to find one online reference where he directly mentions them:


Hopefully this addition to the narrative won't be seen as unreliable
original research! Internet archaeologists reading this who find
additional sources, please send them my way. I've also moved the bit
about Wizard's Castle and the Orb of Zot into this first paragraph.

For describing the transition from Linley as lead developer to Brent
Ross, to the founding of DCSS, I've cleaned up the timeline and
mentioned the two project founders, Darshan Shaligram (aka greensnark)
and Erik Piper, by name. I feel it's important to highlight their very
important efforts in getting DCSS started and include some basic details
about that from greensnark's excellent writeup, which I've also linked.

Hopefully this new history section gives a clearer picture of how the
project progressed. It's possible that we could describe the subsequent
"eras" of DCSS development in this section, but that's arguably even
more difficult to sort out. We could highlight the addition of major
features like Tiles and WebTiles, perhaps some content milestones and
notable fundamental changes. I'll leave that for a future writer, after
further discussion.

2 weeks agoUpdate IRC and community information
gammafunk [Sun, 6 Jun 2021 00:51:51 +0000]
Update IRC and community information

Now that we've completed the move to Libera IRC from Freenode, update
all references to that network and the appropriate channels. I took the
liberty of updating two very minor source comments in cc/DES files to
refer to conversations as being on "IRC" instead of "##crawl", so anyone
reading them without pior knowledge of the old channel won't be

I've also updated the Overview and section of the manual to refer
primarily to the community resource listing on
instead of just listing IRC. I've added a "Contact and community
information" heading to the "License, contact, history" section and put
the existing community info under this heading. I've also added the DCSS
subreddit to the list of community resources and adjusted the language
to be applicable to both it and Discord. I've updated the IRC info to
mention #crawl-dev for development. History is moved to its its own
heading and will be updated in a subsequent commit.

For Hints and FAQs, again refer to the website for community resources
instead of just listing IRC, and update IRC listing for hints in other
languages. Ideally these hints would instead refer to the website, but
that would need work by translators. I've also referenced the github
issue tracker over mantis in a couple places where only mantis was
mentioned and referring to both would be awkward. Possibly we need to
consistently mention only the github tracker and only put information
about mantis in somewhere like the contributor's guide.

2 weeks agoNerf peacekeeper bands in Vaults
Nicholas Feinberg [Sat, 5 Jun 2021 03:05:22 +0000]
Nerf peacekeeper bands in Vaults

Drop them from 2-3 pals to 1-2. Peacekeepers are supposed to be top-tier
Vaults threats, but not mega-top-tier.

2 weeks agoMake the Amulet of the Air enhance air (hellmonk)
Nicholas Feinberg [Sat, 5 Jun 2021 01:10:16 +0000]
Make the Amulet of the Air enhance air (hellmonk)

Why not?

Remove the +5 EV to avoid clutter. (Isn't rMsl enough?)