2 months agoDon't let rolling boulder beetles push (ardl)
Nicholas Feinberg [Thu, 22 Oct 2020 21:52:25 +0000]
Don't let rolling boulder beetles push (ardl)

It's bad boulderfeel.

2 months agoRandomize roll duration more precisely
Nicholas Feinberg [Thu, 22 Oct 2020 21:49:08 +0000]
Randomize roll duration more precisely

Don't round to integer player turns. (This mostly doesn't matter,
but it's nice.)

2 months agoDecay rolling over time
Nicholas Feinberg [Thu, 22 Oct 2020 21:48:46 +0000]
Decay rolling over time

It would (essentially) never expire before, despite having a duration.

2 months agoMake boulder beetles slower than speed 100
Nicholas Feinberg [Thu, 22 Oct 2020 21:37:19 +0000]
Make boulder beetles slower than speed 100

The original commit claims they roll at speed 20. Let's do that.

2 months agoSplit env.tile_* fields into a separate global
Aidan Holm [Tue, 20 Oct 2020 13:43:10 +0000]
Split env.tile_* fields into a separate global

Currently a lot of widely used objects are grouped together into the
env global. While env thankfully doesn't have any behaviour itself,
this has the unpleasant effect of obscuring the actual dependencies
between objects: everything depends on env because everything is in env,
and since it's already widely used, it can easily accrete more stuff,
causing a snowballing effect.

This commit breaks a subset of tile drawing related fields into their
own separate global "tile env" object. The presence of this global isn't
great, but it's much better than lumping everything together: env.h is
included 119 times, while the newly-added tile-env.h is now included
only 23 times: around a sixth of the users. This not only clarifies the
dependencies involved, but will also aid compilation time: if this file
needs to be changed, recompilation will be six times faster.

Of course, ideally none of the functions involved need to pass around
data in global mutable state. With smaller globals with a smaller number
of users, analyzing the structure of data transfer is now tractable,
and hopefully this "tile env" global can be pulled apart and refactored

2 months agoAdd some test cases for
Aidan Holm [Mon, 19 Oct 2020 16:35:53 +0000]
Add some test cases for

2 months agoNote aux armour in stash search
Nicholas Feinberg [Wed, 21 Oct 2020 19:10:53 +0000]
Note aux armour in stash search

3 months agoRemove igrd() helper macro
Aidan Holm [Sun, 18 Oct 2020 09:15:36 +0000]
Remove igrd() helper macro

3 months agoRemove mgrd() helper macro
Aidan Holm [Sun, 18 Oct 2020 09:11:29 +0000]
Remove mgrd() helper macro

3 months agoRemove grd() helper macro
Aidan Holm [Sun, 18 Oct 2020 09:07:15 +0000]
Remove grd() helper macro

3 months agoRemove mitm() helper macro
Aidan Holm [Sun, 18 Oct 2020 09:00:39 +0000]
Remove mitm() helper macro

3 months agoRemove menv() helper macro
Aidan Holm [Sun, 18 Oct 2020 08:46:40 +0000]
Remove menv() helper macro

Rationale: these helper macros allow slightly briefer references to the
same object, but are more obscure: they hide the fact that a single
global object is being referenced, and have inconsistent spelling. They
also make it somewhat harder to use IDE/text editor tools to jump to
definitions and find references. Simply referring to these objects via
the env global is much clearer and more user-friendly.

3 months agoGive Edmund a weaponless tile, fixing #1453
amcnicky [Tue, 15 Sep 2020 15:24:07 +0000]
Give Edmund a weaponless tile, fixing #1453

3 months agoAdjust doors in a runed door vault
gammafunk [Mon, 19 Oct 2020 08:33:26 +0000]
Adjust doors in a runed door vault

Make the entire entrance to gammafunk_indiana_jones runed to avoid
autoexploring into a Zot trap, and to generally improve the structure of
the vault. Keep the "trap" gate as a (non-runed) clear door, but the
final door normal, since the glass around it takes care of visibility.
Also make the glass stone instead of rock.

3 months agoSome transporter vault adjustments
gammafunk [Mon, 19 Oct 2020 08:26:23 +0000]
Some transporter vault adjustments

Some placement adjustment for various transporter vaults to make their
placement more appropriate.

gammafunk_its_a_trap: Remove placement from Shoals, where the vault is
generally too large for the islands generated by the layout, and Swamp,
where a large stone structure doesn't fit in as well thematically. I've
left them in Snake, which has a more dungeony layout that fits and
spider, where the stone structure meshes well with the cave-like layout
enveloping it. There is a theme issue that's similar to Swamp, but it's
nice to have transporter vaults in half of our Lair branches. For later
branches with relatively shallow or just absent out-of-depth monster
sets, supplement the 8-tier monsters with some specially selected ones,
using the same choices as gammafunk_dig_for_victory.

emtedronai_trogs_sanctum: Add placement to Orc, since this is certainly
a suitable place for this vault, but using more of the "ogreish'
monsters over too many orc knights.

gammafunk_sealed_arena: Add to all four non-Slime S branches, taking a
bit of care to use the right statue Shoals and wall types for Swamp and
Spider. Also add to Orc and Pan.

3 months agoAdd transporter vaults to Vaults
gammafunk [Mon, 19 Oct 2020 08:25:33 +0000]
Add transporter vaults to Vaults

With c7717499, we can now place transporter vaults in Vaults. This
commit adds such vaults to this branch as "hard" vault rooms. The
structure of Vaults branch room vaults is such that vaults often need
substantial internal changes in order to be suitable. That usually
requires a separate vault definition, but these transporter vaults work
directly as vault rooms, so I've just given them the necessary tags.

For some vaults, I've added a border of floor around the vault that is
removed when not placing in Vaults branch. I experimented with simply
not having this, which would have allowed the vaults to connect two
otherwise disconnected areas, as they can do when placing outside
Vaults, but the vaults sometimes placed in rooms so that one side was
disconnected from the rest of the map. The necessary "passable" tag
disables checks against this that would otherwise normally generate a
veto, so I'm forced to add this path border. Ideally the zone validation
would know how to path through transporters so we wouldn't need
"passable" at all, but mumra's approach works for now.

For vaults with thematic monsters, I made appropriate choices that are
usually a mix between late Dungeon and Depths, since Vaults shares a lot
in common with both areas. Generally all monsters used can already place
in Vaults, since this is a stipulation these vaults already use for each

3 months agoAdd a tag to set vaults as passable
Peter Hurst [Fri, 12 Apr 2019 08:55:52 +0000]
Add a tag to set vaults as passable

In Vaults layouts, rooms are tagged 'transparent' by default in order to
check the whole level connects up properly. Some vaults may contain
enclosed areas, e.g. transporter vaults, so an escape hatch is needed to
prevent the builder from seeing these as disconnected zones.

Commiter's Note: Removed a linebreak from and rewrapped
commit message body.

3 months agoRephrase lifesaving desc
Nicholas Feinberg [Mon, 19 Oct 2020 05:07:49 +0000]
Rephrase lifesaving desc

"Watches over you" is poetic but very vague. "Guards your life" might
be at least a little clearer as to what it does. Probably there's a
better phrasing yet...

3 months agoCheck right god for life-saving in god description
Umer Shaikh [Sat, 10 Oct 2020 23:52:02 +0000]
Check right god for life-saving in god description

Currently describing a god checks your passives when deciding whether to
print something for the protect_from_harm passive. This leads to errors
in both directions: the passive is spuriously indicated when describing
gods that don't give it if you happen to be worshipping a god that gives
it, and is not printed for gods that do give it if you're not
worshipping them.

After this commit the god description checks whether the god being
described gives that passive.

(Committer's note: did a bit of refactoring.)

3 months agoFix out-of-bounds access (wheals)
Aidan Holm [Sun, 18 Oct 2020 16:15:23 +0000]
Fix out-of-bounds access (wheals)

This bug was introduced in b5bd653, which changed some code to use an
adjacent_iterator in passing, but neglected to adjust the expression
used to derive the adjacent coord_def.

3 months agoRemove references to globals across files
Aidan Holm [Wed, 14 Oct 2020 15:02:41 +0000]
Remove references to globals across files

I found three separate instances of functions reusing a global variable
exposed by for their own scratch space, all for mild
variations on the same BFS algorithm. This commit replaces that with a
local variable, and one of a more sensible type as well; only a boolean
visited / not visited state needs to be tracked.

I don't quite have the energy to properly extract these right now, but
these would possibly be a good candidate for unit testing.

3 months agoMake bats less anthrosolipsistic batty
Nicholas Feinberg [Thu, 20 Aug 2020 02:04:17 +0000]
Make bats less anthrosolipsistic

Batty monsters' behaviour depended on player turns, not monster turns,
which created strange and counterintuitive incentives. If you wanted
batty monsters (e.g. summoned harpies from Monstrous Menagerie) to
attack more often, attack the air with a short blade. If you wanted
them to attack less often, use a slower weapon.

This commit changes batty monsters to move randomly for exactly 3
turns after attacking (for most monsters - harpies and thrashing horrors
a little less, spatial maelstroms a little less yet).  It ends up looking
pretty similar, in my limited testing.

3 months agoMake pacified monsters visible (hellmonk)
Nicholas Feinberg [Thu, 15 Oct 2020 15:04:34 +0000]
Make pacified monsters visible (hellmonk)

To avoid accidental penance with Ely and to make it a bit more
consistent with friendly monsters. This mostly, but not exclusively,
affects Ely worshippers.

3 months agoMark ratskin as evil (12373)
Nicholas Feinberg [Thu, 15 Oct 2020 14:27:27 +0000]
Mark ratskin as evil (12373)

Since its hell rats will trigger ely wrath, apparently?

3 months agoA boulder beetle transporter vault
gammafunk [Mon, 12 Oct 2020 23:00:01 +0000]
A boulder beetle transporter vault

In gammafunk_boulding_lane, the player transports into the far side of
the vault with one to three boulder beetles at the far side. If you can
manage to get in before the boulder beetles all see you, you might avoid
their rolling down the lanes as they look to mark a strike. The loot
always contains a pre-identified pair of boots of rampaging (which can
be barding). The number of beetles and loot quality and quantity scales
with depth, with up to 3 beetles appearing along with an eventual torpor
snail. The loot scales up to artefact quality boots and another

3 months agoA themed vault with boulder beetles
gammafunk [Sun, 11 Oct 2020 18:20:12 +0000]
A themed vault with boulder beetles

In gammafunk_indiana_jones, you find the corpse of adventurer in a
narrow, spider-filled corridor leading to a "trap" room with a boulder
beetle (or two or three), that further leads to a trapped treasure room.
In earlier depths, this is flame clouds in front of lava snakes
(snakes...why did it have to be snakes...), and later on this becomes a
room with fast moving spiders and Zot traps. If the player fights the
beetle(s) in the long corridor, they're fairly likely to get flattened
by a rolling bug.

The loot consists of the characteristic whip and hat near the corpse,
which scales in quality and with the whip eventually becoming a demon
whip, along with jewellery plus possible gold in the treasure room. The
monsters and traps likewise scale in number and dangerousness with
depth, increasing the number and dangerousness of spiders as well as the
number of boulder beetles.

It'd be nice to better decorate this vault in Tiles with a more forest
temple theme, but there aren't very appropriate stone wall tiles for
this purpose.

3 months agoShrink hell sentinels back down
Nicholas Feinberg [Fri, 9 Oct 2020 19:02:22 +0000]
Shrink hell sentinels back down

I'd misunderstood the context of a request.

3 months agoMake demons truly spineless
Nicholas Feinberg [Thu, 8 Oct 2020 00:09:30 +0000]
Make demons truly spineless

Remove M_SPINY from Hell Sentinels and torturous demonspawn. This
mechanic had approximately no impact on the game - 4d5 AC-resisted
damage is just not meaningful against extended-capable characters.
We could increase the damage or not make it AC-resisted, but the
effect isn't very interesting here. There's no particular reason we'd
want melee characters to be somewhat worse at fighting these enemies,
and if we did want that, we could just strengthen their melee attack.

Hell Sentinels are now giant so as to be net immune. This will also
let them waltz through deep water, which probably doesn't matter?

3 months agoDon't splash yellow draconian spit onto the spitter.
wheals [Thu, 8 Oct 2020 01:17:26 +0000]
Don't splash yellow draconian spit onto the spitter.

3 months agoStreamline the Zot Clock
Nicholas Feinberg [Sun, 4 Oct 2020 21:36:47 +0000]
Streamline the Zot Clock

(Alternate commit title: Zot Around The Clock)

The Zot clock has been working OK as a time limit, but
it has a major shortcoming: it's not explained to players
at all. The reasoning there was that we didn't want to
stress players out or to make it easier to sneak around
the clock, but the very loose time limits on the current
clock make it easy to sneak around regardless for a spoiled
player, and unexplained mystery deaths are more stressful
than occasional messages.

(Also, if players don't know that the clock exists, it
doesn't serve its intended role of discouraging very slow

So, derandomize the Zot Clock, remove the drain penalty,
display remaining turns when there are <1k left, and add
an option (off by default) to display remaining turns at
all time. Also, take another pass on the messaging. That
should hopefully leave the whole thing in good enough
shape for release.

3 months agoRemove an antique and redundant status list
Nicholas Feinberg [Sun, 4 Oct 2020 22:28:56 +0000]
Remove an antique and redundant status list

Sage, really?

3 months agoFix the TAG MAJOR upgrade script
gammafunk [Sun, 4 Oct 2020 12:51:41 +0000]
Fix the TAG MAJOR upgrade script

The pakellas experiments des file has already been removed.

3 months agoRemove unused Pakellas vaults
gammafunk [Tue, 29 Sep 2020 17:07:12 +0000]
Remove unused Pakellas vaults

These vaults where sitting in a des file with 0 weight mostly due to
accompanying lua triggers that need to be defined for save compatibilty.
I've moved the required functions to a designated save compat lua file
with the function definitions emptied out to the extent possible. This
should cover save compatibilty, but even if there is a problem, the odds
of there being an affected save out there with the vaults actually
generated are quite small at this point.

3 months agoRemove some boring beasts
gammafunk [Tue, 29 Sep 2020 13:32:33 +0000]
Remove some boring beasts

With the re-introduction of boulder beetles to Lair and Dungeon, it's a
good time to remove some of the redundant beasts we have in these
branches. This commit removes hippogriffs, crocodiles, and porcupines.
The first two are simple speed 10 beasts that have little to
differentiate themselves from other melee-only monsters of similar
difficultly at mid-Dungeon and Lair depths.

Porcupines are fast and have a spine mechanic, so they're arguably the
most interesting of the three removed monsters. However their spines are
an "anti-melee" trait that works poorly in terms of influencing the
player's decision to melee or not. Culling the monster list down to a
set that all work well design-wise is a good long-term goal, and neither
branch lacks for good fast melee monsters.

Level spawn weights of each of the three removed monsters has been
giving to respective similar monsters in both branches, with adjustments
so that the impact of removal is minimal. The new weights and changes in
level spawn chance are described in this google spreadsheet:

See the "Chance (Modified)" and "Increase in chance" sections of each

Dungeon has such a large monster set that the largest increase in any
affected monster placement on any level is a fraction of 1%. For Lair,
the largest increase is less than 3%. I increased placement range of the
few more interesting beasts such as polar bears, hell rats, stream
dragons. Additionally, a few weights for rarer Lair beasts are now
doubled, but these monsters are already quite rare and have a placement
chance of 1% or less throughout their range.

3 months agoRe-implement boulder beetles
gammafunk [Fri, 18 Sep 2020 16:54:56 +0000]
Re-implement boulder beetles

Boulder beetles return as a speed 10, 12 HD monster with good AC, melee
slightly better than a death yak, and a rolling attack that doubles
their movement speed and melee damage (1d32->1d64).

They will only self-enchant with the rolling debuff when not already
adjacent to their foe, hence either killing them at range or getting
them into melee range is a priority to avoid their 1d64 rolling damage.
After performing a melee attack in the rolling state, the beetle always
debuffs, returning to its unrolled state. One of the advantages of
having the roll attack be normal melee is that it uses normal melee
mechanics, checking SH and EV, and their modified attack damage is shown
under x-v when in the rolling state.

Boulder beetles also have a blink ability in order to eventually reset
their positioning and allow a subsequent roll, although they cast this
with low frequency. While rolling, they never use either of their

Possible TODO items:

1) "Missing" the player. In my original proposal, I wanted a missed roll
to allow them to "roll past" the player, giving the player a chance for
additional punishment but also allowing the beetle to set up another
roll. Currently this is not implemented, since this aspect was mostly to
the old trivially avoidable (but comedic) roll attack. They already can
reset their position using blink, and with the profile of this monster,
giving the player additional opportunities to damage it would likely
just make it too easy. Still, it remains an option if `??meme rule` is
being ignored.

2) Rolling duration. Right now it's 10 to 15 turns, giving faster
players a fighting small chance at outrunning a rolling beetle that
starts rolling many tiles away, but for normal speed players, even being
7 tiles away means they will not outrun the roll.

3) AI changes while rolling. Should beetles ignore damaging terrain like
traps and clouds while rolling? Currently they don't change their damage
consideration compared to their normal state. This would lead to them
"hover-rolling" before damaging clouds in some cases.

4) Theme of "blink". This is done as the usual translocations effect,
although I had originally planned for this to be themed as a "flip" to
make more thematic sense as a natural ability. Jumping spiders likewise
have no special translocations theme and do the same kind of blink, so
maybe leaving the normal blink is best.

5) Placement and vaults. I mostly re-added them to the spawn lists with
sensible weights and to vaults and Sprint in the appropriate places.
I'll likely make some special boulder beetle transporter or runed door
vaults that get at the theme of the old boulder beetle trap vaults, just
without the spoilers.

3 months agoInsect glyph reorganization
gammafunk [Fri, 18 Sep 2020 16:54:44 +0000]
Insect glyph reorganization

Insects were using 'a' (ants), 's' (mostly arachnids), and 'y' (flying
insects. With the re-introduction of boulder beetles in a forthcoming
commit, I'm re-introducing the 'B' glyph and moving all ants, beetles,
and other non-flying insects here. Now 's' is reserved for arachnids,
and we won't have a new mostly unused insect glyph on 'B'.

Alternatively we could have beetles and non-flying insects on 'a', thus
not moving ants from their ideal home, but kate- was more in favor of
the 'B' glyph. There are only two prominent monsters that are bona fide
ants and that actually appear in level spawn lists: worker and soldier
ants. There are perhaps more prominent non-ant insects that likewise
appear in spawn lists: giant cockroaches, boulder beetles, and death
scarabs. Entropy weavers aren't truly insects, although legends say they
are truly formicids, hence ant-like. In any case, it's possible to move
non-flying insects all from 'B' to 'a' if the 5% of the player-base that
uses console raises an ant army in revolt.

3 months agoUpdate the manual
Nicholas Feinberg [Sun, 4 Oct 2020 03:45:04 +0000]
Update the manual

3 months agoExtremely vane tiles (canofworms)
Nicholas Feinberg [Wed, 30 Sep 2020 17:05:02 +0000]
Extremely vane tiles (canofworms)


3 months agoCancel Heroism and Finesse on angering or abandoning Okawaru
Nikolai Lavsky [Wed, 23 Sep 2020 10:08:48 +0000]
Cancel Heroism and Finesse on angering or abandoning Okawaru

Currently, only Heroism, Finesse, and Elyvilon's Divine Protection
don't expire immediately when the player is placed under penance. It
seems thematically appropriate for Divine Protection, but even Elyvilon
removes all divine effects on abandonment.

This commit puts Okawaru in line with other gods.

3 months agoUpdate
Petri Salminen [Sun, 20 Sep 2020 13:53:04 +0000]

Instructions for Void Linux were removed in f485615. The table of contents should not have dead links.

3 months agoRemove qw support for dragon hides
Nicholas Feinberg [Fri, 25 Sep 2020 20:41:36 +0000]
Remove qw support for dragon hides

3 months agoUpdate an advanced_optioneering example
advil [Thu, 24 Sep 2020 16:28:36 +0000]
Update an advanced_optioneering example

I'm not sure how useful this really is in and of itself, but it's useful
as an example userfunc macro at least.

3 months agoSet an error on invalid fn argument to c_macro
advil [Thu, 24 Sep 2020 16:23:30 +0000]
Set an error on invalid fn argument to c_macro

Entirely possible that this will start popping up errors all over the
place for something I'm not expecting...

3 months agoAdjust gold acquirement
Nicholas Feinberg [Wed, 23 Sep 2020 02:16:53 +0000]
Adjust gold acquirement

Now that the player can see all acquirement options before choosing one,
gold became too often a very easy choice. The massive swings of the old
gold acquirement formula made sense when the player was gambling on an
unseen outcome, but now that the player can see the result before choosing,
all it does is produce random windfalls and unsatisfyingly simple acqs.

Simplify the formula to range nonlinearly between 200 (a disappointing but
nonzero consolation prize) and 1400 (a solid chunk of change, enough to
buy many small things or one very big important thing). Mean of 800, which
is only a bit lower than the old mean and is reasonably competitive with
many items, but generally less exciting than anything really good. (Which
it should be, because getting items from acq is fun!)

I considered removing the guaranteed gold acq, but I think it is good to
have a decent fallback case to acquirement. It just shouldn't be the pick
quite so often.

3 months agoRemove guaranteed early Nemelex deck
Nicholas Feinberg [Wed, 23 Sep 2020 01:43:32 +0000]
Remove guaranteed early Nemelex deck

As with Gozag, Nemelex granting a guaranteed early deck (before the
player even reached 1* of piety!) was part of what made them remarkably
strong. Shift that early guaranteed deck and all other deck gifting to
after the player reaches 1* of piety, to require a little work by the
player before they get their reward. (This decreases deck gifting somewhat
in general, though less so at higher piety.)

3 months agoRemove free gozag potion petition
Nicholas Feinberg [Tue, 14 Jul 2020 01:48:19 +0000]
Remove free gozag potion petition

Few gods give anything to their followers on initial worship. One of
Gozag's strongest traits is the instant on-worship get-out-of-jail
card that the free intro potion petition grants. Let's dial that back.

3 months agoRemove hat (hellmonk)
Nicholas Feinberg [Wed, 23 Sep 2020 01:32:39 +0000]
Remove hat (hellmonk)

From the name of the Ashenzari altar, to avoid false name matches.

3 months agoMerge Hell zot clocks
Nicholas Feinberg [Sun, 20 Sep 2020 15:06:55 +0000]
Merge Hell zot clocks

Avoid some corner case issues involving the Vestibule, maybe.

3 months agoSimplify some hellishly buggy travel code
Nicholas Feinberg [Sun, 20 Sep 2020 15:05:31 +0000]
Simplify some hellishly buggy travel code

Obviously, don't fix the bug.

3 months agoRaise Zot Clock bank cap 15k -> 27k
Nicholas Feinberg [Sun, 20 Sep 2020 14:57:38 +0000]
Raise Zot Clock bank cap 15k -> 27k

The goal of the zot clock bank cap is to prevent players from having
truly tremendous amounts of time to spend to do tedious things on
specific floors. In practice, I haven't seen reports of anyone really
doing anything unpleasant with the current limit, and the 15k cap caused
issues with shaft traps on rare occasions.

Let's raise it to 27k (meaning it approximately doesn't exist outside D)
and see what happens. It might vanish entirely in future, or it might drop
again, depending on the results of this experiment.

4 months agoFix a crash on describing an unid'd wand.
wheals [Mon, 14 Sep 2020 10:03:32 +0000]
Fix a crash on describing an unid'd wand.

4 months agoRemove Traps and Doors
Nicholas Feinberg [Sun, 13 Sep 2020 20:32:52 +0000]
Remove Traps and Doors

This comment was added along with the vault 10 years ago (in c2102b4)
and referred to a long NSUBST sequence that has long ceased to be.

4 months agoRefactor monster self-destruct code
Nicholas Feinberg [Sat, 12 Sep 2020 16:05:25 +0000]
Refactor monster self-destruct code

4 months agoRemove unused M_HYBRID flag
Nicholas Feinberg [Sat, 22 Aug 2020 18:28:30 +0000]
Remove unused M_HYBRID flag

Obsolete since f67d6e41dd8a7dce658198c42247ac2f8df114a4 , back in
2015, hah!

4 months agoRefactor monster death effects
Nicholas Feinberg [Fri, 21 Aug 2020 19:57:29 +0000]
Refactor monster death effects

4 months agoUpdate the Place: on the sidebar when leaving X.
wheals [Sun, 13 Sep 2020 13:58:05 +0000]
Update the Place: on the sidebar when leaving X.

There was a bug that left it showing the last place you had looked at,
rather than your current location.

4 months agoAlways abort charge targeter with no valid targets (#12355).
wheals [Sun, 13 Sep 2020 11:27:20 +0000]
Always abort charge targeter with no valid targets (#12355).

4 months agoHandle dynamic DPI in webtiles glyphs mode
wjchen [Wed, 2 Sep 2020 04:53:55 +0000]
Handle dynamic DPI in webtiles glyphs mode

This commit fixes handling of dynamic DPI situations in webtiles glyphs
mode that was accidentlly broken in 4531bab.

4 months agoGive x-v a selection menu when there are many describable things
Umer Shaikh [Thu, 27 Aug 2020 03:35:35 +0000]
Give x-v a selection menu when there are many describable things

This commit creates a selection menu when you x-v a tile with multiple
monsters, items, or notable features (following the ^x screen's notion
of notability), whether or not they are of the same type.

As of 2a96157, when there is an item stack on a tile you can x-v the
stash to describe any item in the stash by selecting the desired item
from a menu. However, if a monster is on that stash, then x-v describes
the monster and ignores the items. Similiarly, a monster or items stop
you from seeing the description of an interesting feature. After this
commit a selection menu will pop up in any of those cases, so you won't
be stopped from examining underlying things of a different type.

This commit adapts the menu in _full_describe_menu, which is already
designed for displaying a selection menu with these three types of
things. Therefore I've removed the function describe_items, added
recently by 2a96157 to allow selection from a stack of items.

4 months agoDistort layout_cave_pods when in Snake
Skrybe [Fri, 11 Sep 2020 00:08:01 +0000]
Distort layout_cave_pods when in Snake

Give a wavy structure to the corridors and walls of layout_cave_pods
when generated in Snake.  This is the same effect that is already used
for onion and onion_interference in Snake.

[ Committer's note: checkwhite. Closes #1561 ]

4 months agoUpdate layout_loops.des
Skrybe [Thu, 10 Sep 2020 23:43:34 +0000]
Update layout_loops.des

Along the same thinking as chaotic_city, remove an uncommon chance to create a layout entirely of stone or metal in Lair.  This function is used in all of the loops layouts, but only layout_loops_ring is currently used in Lair.

4 months agoEdit layout_chaotic_city
Skrybe [Thu, 10 Sep 2020 23:32:54 +0000]
Edit layout_chaotic_city

The layout now only places rock walls when generated in Lair, per a TODO note.  The result does look far better, IMO.

4 months agoFix item.subtype() in CLua
mgdelmonte [Wed, 2 Sep 2020 15:12:28 +0000]
Fix item.subtype() in CLua

[ Committer's note: reworded. Closes #1451. Closes #1551 ]

4 months agoActually let randarts generate with the spectral brand
Nikolai Lavsky [Fri, 28 Aug 2020 09:12:10 +0000]
Actually let randarts generate with the spectral brand

As a followup to 65aa84ea, this commit adds the spectral ego
to the list of possible artefact brands for melee weapons.

[ Closes #1541 ]

4 months agoDescribe wand noise levels
Naruni [Fri, 28 Aug 2020 04:34:29 +0000]
Describe wand noise levels

Inspecting a wand will tell the player how much noise is generated when
evoking the wand.

[ Committer's note: squash + reword. Closes #1539 ]

4 months agoFix Hailstorm ally warning prompt (12362)
Implojin [Wed, 9 Sep 2020 20:58:55 +0000]
Fix Hailstorm ally warning prompt (12362)

This commit silences the hailstorm ally warning prompt for battlesphere,
spectral weapon, orb of destruction, and demonic guardians.

Monsters with M_PROJECTILE, (allied) M_AVATAR, or MF_DEMONIC_GUARDIAN flags
are bypassed in bolt targeting by bolt::ignores_monster, and hailstorm cannot
actually deal damage to them.

4 months agoMerge pull request #1558 from nlavsky/add-rampage-to-overview
Edgar A. Bering IV [Fri, 11 Sep 2020 21:27:20 +0000]
Merge pull request #1558 from nlavsky/add-rampage-to-overview

Display Rampage on the % screen

4 months agoFix the divider position when tile_force_overlay is set
Marcelo Henrique Cerri [Sat, 5 Sep 2020 17:40:09 +0000]
Fix the divider position when tile_force_overlay is set

When tile_force_overlay is set the divider should always be set to the
end of the of the screen. Move the code that sets that to later in the
code so it doesn't get overwritten.

Without this fix, the space reserved for the message window is still
left unused at the bottom of the screen while the message overlay is
moved to the top of the screen.

4 months agoExpand macOS install instructions further (erf)
Alex Jurkiewicz [Fri, 4 Sep 2020 11:52:26 +0000]
Expand macOS install instructions further (erf)

4 months agoImprove docs for running DCSS after compilation
Alex Jurkiewicz [Thu, 3 Sep 2020 13:15:39 +0000]
Improve docs for running DCSS after compilation

4 months agoRemove bad position clamp for peeking through stairs
Umer Shaikh [Tue, 1 Sep 2020 10:09:05 +0000]
Remove bad position clamp for peeking through stairs

Using X and [ or ] to peek through stairs at different floors is
supposed to deposit the cursor on the other end of the staircase. Lately
the cursor has been frequently deposited in incorrect locations.

It appears that 08ff59a6b inadvertently clamped the destination position
according to the known map bounds of the floor being peeked from, which
tends to move the cursor to an incorrect spot on the floor being peeked

I have simply removed the clamping: if mstate's position was on the same
level then the clamping after the conditional call to goto_level will
serve the same purpose, and if not then clamping before that call is an

4 months agoStop acquirement of +4 stat rings
Umer Shaikh [Mon, 31 Aug 2020 09:13:57 +0000]
Stop acquirement of +4 stat rings

These rings aren't supposed to exist anymore as of 2607d5cfa1. However
acquirement was making them by producing -4 bad stat rings and then
setting the rings' plus value to abs(the old plus).

This commit has acquirement directly set the plus for acquired rings to
the "good" value for that base type. This does not affect unrandarts but
may modify randarts.

4 months agoAdd missing "info" command to --edit-save help
Roderick Schertler [Fri, 28 Aug 2020 19:48:55 +0000]
Add missing "info" command to --edit-save help

4 months agoFix a rampaging bug (12353, Flugkiller)
Implojin [Wed, 26 Aug 2020 18:51:28 +0000]
Fix a rampaging bug (12353, Flugkiller)

This fixes a rampage interaction with deep water / lava.

Previously, the rampaging tracer wasn't properly failing on dangerous
terrain. This was causing the rampage to abort at its moveto check instead,
which erroneously blocked the second half of the move.

4 months agoUpdate an antique comment
Nicholas Feinberg [Fri, 11 Sep 2020 02:28:27 +0000]
Update an antique comment

Obsoleted in 87348de860b6d4e (2016).

4 months agoDon't crash when putting on non-jewellery
advil [Thu, 10 Sep 2020 01:18:21 +0000]
Don't crash when putting on non-jewellery

You can try to do this via the * menu, as long as you have jewellery at
all. This looks like it was broken when the call order was rearranged in
b2248e6a10f6; the problem is that jewellery_is_amulet will crash if it
is handed non-jewellery (because it is a subtype check, and is only
meaningful in that case), whereas this code assumes it would return
false. Just adding in the item type check is inelegant, but I don't want
to mess with the ASSERT.

4 months agoDisplay Rampage on the % screen pull/1558 1558/head
Nikolai Lavsky [Tue, 8 Sep 2020 18:49:38 +0000]
Display Rampage on the % screen

It's often hard to see all properties of equipped artefacts on
the overview screen, especially when the artefacts have long names.
The Rampage ego, which can appear on any randart armour, dramatically
changes the player's movement. So it's worth having a quick way
to see if equipped items have this ego.

4 months agoSquash extra SAC_LOVE messages (wheals)
Nicholas Feinberg [Mon, 7 Sep 2020 20:43:57 +0000]
Squash extra SAC_LOVE messages (wheals)

2951c229262b0cf5f incorrectly removed the !mons.wont_attack() check,
resulting in a lot of extra messaging for monsters that already hated
the player.

4 months agoRebrace
Kate [Thu, 3 Sep 2020 14:57:04 +0000]

4 months agoRe-remove the black knight's barding
Nicholas Feinberg [Wed, 2 Sep 2020 03:33:33 +0000]
Re-remove the black knight's barding

Vaults are my passion

4 months agoWithered plant fixes
Nicholas Feinberg [Wed, 2 Sep 2020 00:41:38 +0000]
Withered plant fixes

Display 'withering' in the name line, don't call withered plants
'withering' (crumble them instead), and don't show the withering icon
on other slowly dying things.

4 months agoDon't show withering on non-plants
Nicholas Feinberg [Wed, 2 Sep 2020 00:25:10 +0000]
Don't show withering on non-plants

4 months agoSimplify Vampiric Draining
Nicholas Feinberg [Wed, 2 Sep 2020 00:19:44 +0000]
Simplify Vampiric Draining

Don't limit damage done by the healing the player can receive. Allow
the player to heal more than half the difference between their max HP
and their current HP.

4 months agoUn-downgrade sdl2 submodule (doh)
Neil Moore [Mon, 31 Aug 2020 00:31:05 +0000]
Un-downgrade sdl2 submodule (doh)

4 months agoAvoid ODR violations in mon-ai-action.h
Neil Moore [Sun, 30 Aug 2020 23:42:46 +0000]
Avoid ODR violations in mon-ai-action.h

With -Wmissing-declarations, gcc warns "no previous declaration for"
each of these functions.  Even worse, it violates the one definition
rule to define an extern non-inline function in more than one
translation unit, as would happen if we were to include this header
from anywhere other than

Practically, it would work with most compilers, since they are not
required to flag ODR violations across compilation units, but it would
still be undefined behaviour, and the warnings are annoying anyway.

4 months agoAllow wizardry to stack again (Yermak)
Neil Moore [Sun, 30 Aug 2020 23:30:39 +0000]
Allow wizardry to stack again (Yermak)

Introduced in 0.26-a0-593-g36fcd6fac6.  The ternary operator has very
low precedence (tied with assignment), so should almost always be
parenthesized when used in a larger expression.

4 months agoAllow offensive drowning of giants (Yermak)
Neil Moore [Sun, 30 Aug 2020 23:27:22 +0000]
Allow offensive drowning of giants (Yermak)

Though they're big enough to walk through water, and therefore fake-
amphibious, they are, unlike truly amphibious creatures, still not happy
having their heads submerged.  This affects primal wave, AF_DROWN, and

It may appear that this change would affect grey draconian monsters too,
but they're unbreathing independently of their fake amphibiousness.

4 months agoRemove some unnecessary breaks
Kate [Sat, 29 Aug 2020 18:41:42 +0000]
Remove some unnecessary breaks

4 months agoDon't crash when trying to enslave soul on empty space (wheals)
Kate [Sat, 29 Aug 2020 18:41:00 +0000]
Don't crash when trying to enslave soul on empty space (wheals)

4 months agoFix spacing in some mutation descriptions
Kate [Sat, 29 Aug 2020 18:40:39 +0000]
Fix spacing in some mutation descriptions

4 months agoUnmute Donald for WJC followers (#1540)
ukdong99 [Fri, 28 Aug 2020 05:38:46 +0000]
Unmute Donald for WJC followers (#1540)

Donald has accidentally been saying nothing to followers of the Wu Jian Council.

4 months agoPrevent slimy shafting (/u/zeunysos)
Implojin [Wed, 26 Aug 2020 22:44:33 +0000]
Prevent slimy shafting (/u/zeunysos)

In some circumstances, it was possible to be shafted adjacent to a
slime wall, and take damage before having a chance to act.

This commit adds a slime wall adjacency check to shaft destinations.

4 months agoClarify Serpent's Lash description to exclude fancy movement
Edgar A. Bering IV [Mon, 24 Aug 2020 13:28:12 +0000]
Clarify Serpent's Lash description to exclude fancy movement

Helps with #1531

4 months agoDon't allow Searing Ray to track invis monsters (12350, Naruni)
Edgar A. Bering IV [Mon, 24 Aug 2020 13:27:37 +0000]
Don't allow Searing Ray to track invis monsters (12350, Naruni)

4 months agoLint
Edgar A. Bering IV [Mon, 24 Aug 2020 13:07:05 +0000]

4 months agoNew scales facet, sharp scales.
hellmonk [Sun, 26 Jul 2020 17:27:12 +0000]
New scales facet, sharp scales.

Provides 1/2/3 AC and slaying. Slightly pushed but slayscales are cool.

[ Committer's note: squashed and rebased. Closes #1499 ]

4 months agoNew "scales" facet, Big Brain.
hellmonk [Sun, 26 Jul 2020 16:36:59 +0000]
New "scales" facet, Big Brain.

Expanding brain demonspawn get +2/4/6 int, plus wizardry at mutation
level 3, in lieu of scales. Relative to other scales facets, this is
weak at ranks 1 and 2 but pretty good at rank 3. Could change the int
gain to 4/5/6, perhaps.

4 months agoDouble the stealth bonus of thin skeletal structure
hellmonk [Sun, 26 Jul 2020 02:53:56 +0000]
Double the stealth bonus of thin skeletal structure

4 months agoImprovements to the charge targeter.
wheals [Sun, 23 Aug 2020 21:26:11 +0000]
Improvements to the charge targeter.

Cancel immediately if there are no nearby monsters, show the landing
site differently, and clarify the messages.

4 months agoDon't pop up a menu for self-targetting.
wheals [Sun, 23 Aug 2020 19:57:26 +0000]
Don't pop up a menu for self-targetting.

It looks bad on webtiles and terrible on console.