crawl.git
34 hours agoNew Sastreii tiles master
Nicholas Feinberg [Fri, 7 May 2021 22:58:35 +0000]
New Sastreii tiles

Mundane boots, Murray, Nergalle and Snorg, in that order.

2 days agoUnrename a vault
gammafunk [Thu, 6 May 2021 17:36:34 +0000]
Unrename a vault

This vault was apparently intentionally renamed in 2394d0fb to change
"ooze" to "endoplasm", but the vault never placed a monster that got
renamed to endoplasm. It did place a death ooze, which got replaced with
a quicksilver ooze, so the original name is still appropriate. In any
case, renames should be avoided unless the old name would somehow
generate confusion or a new naming format is used for a set of related
vaults, neither of which is the case here.

2 days agoUpdate a digging-themed vault (Lightli)
gammafunk [Tue, 4 May 2021 07:01:18 +0000]
Update a digging-themed vault (Lightli)

The vault wad_dig_loot had a hidden diggable area with a nasty monster
spawn and loot. We've moved away from having completely hidden spoilers
like these, prefer our spoilery vaults to at least broadcast their
uniqueness to some degree. This vault didn't do anything special with
its secret area, so instead update the chamber to be visible, but
introduce digging monsters at later depths. Also add Elf to the
placement list, since we have a unique digging monster there, and scale
the monster and loot count with depth. Now it places two 8 spawns from
D:12-15, three 8 spawns in Elf, and four in Depths, with each new
monster also generating another loot item. Also fix its teleport closet
by marking the loot chamber no_tele_into.

3 days agoFix Ignite Blood mutation description
Kate [Wed, 5 May 2021 17:47:05 +0000]
Fix Ignite Blood mutation description

5 days agofix: remove a duplicate BREATHE_POISON (12579)
advil [Mon, 3 May 2021 23:38:25 +0000]
fix: remove a duplicate BREATHE_POISON (12579)

This led to cosmetic duplicates of this ability on the `a` screen.

5 days agoMinor fix for gnrine
dilly [Thu, 22 Apr 2021 07:00:23 +0000]
Minor fix for gnrine

It wasn't green enough.

5 days agoUpdate sdl2-image for android builds
advil [Sun, 18 Apr 2021 21:58:29 +0000]
Update sdl2-image for android builds

Per #1892.

5 days agoUpdate sdl2-mixer for android builds
advil [Sun, 18 Apr 2021 21:56:07 +0000]
Update sdl2-mixer for android builds

Per #1892.

5 days agoBump lua contrib for android builds
advil [Sun, 18 Apr 2021 19:56:30 +0000]
Bump lua contrib for android builds

This updates lua and fixes some issues with android builds, per
PR #1892. I'm merging this slightly differently than in that PR just to
be a little more careful, these changes since other builds depend on
these contribs as well.

5 days agoAdd some missing cloud descriptions
Kate [Mon, 3 May 2021 14:22:08 +0000]
Add some missing cloud descriptions

5 days agoFix spelling
Kate [Mon, 3 May 2021 14:12:55 +0000]
Fix spelling

5 days agoTweak portal timer wording
Kate [Wed, 14 Apr 2021 23:31:42 +0000]
Tweak portal timer wording

They were fairly misleading - "nearby" portals were extremely close, and
"distant" ones were also still quite close. Add an extra level of
distinction, and use multiples of default LOS range for the differences
between ranges.

5 days agoMake poison and miasma clouds affect unbreathing creatures again
Kate [Sun, 4 Apr 2021 19:08:13 +0000]
Make poison and miasma clouds affect unbreathing creatures again

This was considered a bug when it was changed previously, however it was
actually intended behaviour (and only mephitic clouds explicitly mention in
their description that unbreathing creatures are immune). Unbreathing is a
fairly complicated mechanic so reducing the number of things it effects is
probably better, and the change also had some strange knock-on effects like
making grey draconians immune to sickness, which doesn't fit flavour-wise.

Revert to the original behaviour, and update some descriptions to hopefully
make it clearer.

This reverts commits e1f20c3b445d4e6f4d869a2e080ec252b498914c and
368d90fffdfadd77c1e5298e59cdf97a51697a67.

5 days agoAdjust potion of mutation probabilities
Kate [Mon, 3 May 2021 10:34:58 +0000]
Adjust potion of mutation probabilities

It was very easy to reliably remove bad mutations with just a few potions
of mutation due to them removing 2-4 mutations as their first effect, and
to acquire a mostly or entirely positive mutation set due to the guaranteed
good mutation at the end.

While they should still be useful for clearing out bad mutations, the
consistency was a little too high, so reduce the number of mutations
removed to 2-3, and reduce the chance of adding a good mutation at the end
from 100% to 50% (so that the overall number of mutations added/removed on
average also remains the same).

5 days agoRemove wispform's blinkitis and extra speed
Kate [Mon, 3 May 2021 11:11:39 +0000]
Remove wispform's blinkitis and extra speed

Random blinking was an especially annoying feature even for a form that's
intended to be dangerous. The monster that the form was based on also no
longer exists, so instead just make wispform standard speed (distinct from
bat/pig badforms which are fast), keeping the existing downsides of most
other badforms of melding equipment and preventing weapon or spell use.

6 days agoSome tweaks to an ice cave map
gammafunk [Mon, 3 May 2021 00:36:28 +0000]
Some tweaks to an ice cave map

For ice_cave_azure_passage, some tweaks to the monster set and
placement, and some DES syntax cleanups.

For the monster set, remove shapeshifter simulacra, which are far too
weak. Leave in the somewhat stronger glowing shapeshifter simulacra, and
add in demonic crawler simulacra. The latter make decent lower-tier
threats and fit the "aberration" theme. Also add in very ugly thing
simulacra, but at half weight. These are somewhat nasty, but characters
with some rC shouldn't find them too difficult. For the slime creature
placement, the seven bands currently placed is excessive. Reduce this
number by about half, replacing them with 2/3 chance for simulacra and
1/3 chance for quicksilver oozes.

For DES syntax, reorganize to use normal monster slot glyphs where
possible. Use a simpler SHUFFLE+SUBST instead of a more verbose lua
conditional. Reindent statements and reorganize to have a consistent
order. I've also renamed the map to ice_cave_hellmonk_azure_passage.
Keeping the ice_cave prefix is good for consistency with other maps in
this file, but we should include the vault author's name when possible.
Closes #1933.

6 days agoSlime themed ice cave.
hellmonk [Thu, 29 Apr 2021 02:55:57 +0000]
Slime themed ice cave.

Places various Jiyva-adjacent simulacra, a few ice statues, slime creatures,
and various high level slimes as the boss monsters (including a guaranteed
azure jelly).

6 days agoZappify dispel undead (ardl)
Nicholas Feinberg [Mon, 3 May 2021 03:13:27 +0000]
Zappify dispel undead (ardl)

This removes a cap on damage that was added all the way back when
dispel undead was first added in 0c7d47c22ef, but that, afaik, could
never actually be hit except by very high HD panlords or player ghosts.

6 days agofix: blanket no_tele_into for gammafunk_dig_for_victory
advil [Sun, 2 May 2021 16:09:58 +0000]
fix: blanket no_tele_into for gammafunk_dig_for_victory

We really need a better way to write no_tele_into KPROPs; in this case I
think what probably happened is that the KPROP got out of sync with
later changes to the vault, though I stopped trying to debug the
details. Looking at the vault it seemed simpler to just blanket prevent
teleporting into the whole thing. (Perfectly fine with me if someone
wants to go back and fix the KPROP though.)

I've also applied a similar tweak to passability as that in
3a4c58a182d1; while working on the tele fix I noticed that this vault
would likely lead to similar connectivity issues as seen in #1909,
because of the conditional CLEAR.

Resolves #1812

6 days agofeat: allow setting tiles window width by ratio
advil [Sun, 2 May 2021 15:41:47 +0000]
feat: allow setting tiles window width by ratio

On the previous defaults, the tiles window width was screen edge - 90 in
both dimensions. This works fine on many screen ratios, but is kind of
annoying (in my opinion) on an ultrawide screen. This commit provides an
option to override the width setting using a ratio of the height, and
makes it activated by default. When activated, the width setting is
instead used as a maximum value. This has no impact on full screen mode.
This can be disabled by just setting `tile_window_ratio` to 0 or a
negative value, in which case the behavior is the same as before
(including if you had custom values set here).

I've used the golden ratio as the default value, so on a 4:3 screen
you'd typically have the same default results as before, but on a wider
screen the window default width will be capped. This looks (again, IMO)
a lot better on an ultrawide ratio like 2:1 or greater.

It would be ideal, eventually, to actually remember positioning and
size.

6 days agofix: cap Ashenzari scry radius at los
advil [Sun, 2 May 2021 14:40:20 +0000]
fix: cap Ashenzari scry radius at los

A kobold with a scarf of shadows has a los of 3, but the ash scry radius
would go up to 4 at full piety. This commit fixes at least two bugs for
this case:

* in all build targets, the "comes into view" messages would happen at
  los 4 instead of 3, even though the monster would not be fully visible
  (e.g. shown as a sensed monster)
* in local tiles, radius 4 would be highlighted as if it were in los,
  but only the background tile would be drawn, not even monster memory
  or sensed monster icons. Resolves #1844

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

7 days agofix: do hepl ancestor setup when receiving ancestor
advil [Sat, 1 May 2021 21:17:33 +0000]
fix: do hepl ancestor setup when receiving ancestor

Before 9dc9f58f1f8, setting up the name prop and generating the ancestor
itself were done together in _join_hepliaklqana, ensuring correct
sequencing. After this commit, they were separated; this becomes an
issue for monks, who get their piety bonus when joining (triggering the
ancestor generation code) before the on_join function is called, leading
to an empty name and crashes.  Instead, ensure that the name and gender
are set up any time the monster is instantiated, including the first,
rather than in an on_join function.

7 days agofix: swap a mutation check for felids
advil [Sat, 1 May 2021 17:03:40 +0000]
fix: swap a mutation check for felids

This doesn't really matter, because felids have both mutations and
nothing else does, but it's good to be correct. (Also, a minor unrelated
whitespace fix.)

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

Actually fixing up the second ancestor in tags.cc would be better, but
that is tricky because one or both ancestors might be off-level, and the
daction to handle that case would destroy them both.

Instead, let the extra ancestor die normally, but without triggering
DUR_ANCESTOR_DELAY.

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

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

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

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

8 days agoShow actual attack delay on @
Nicholas Feinberg [Fri, 30 Apr 2021 15:41:47 +0000]
Show actual attack delay on @

It's not a secret! We display it in the inventory and every time that
you swing your weapon - no need to add secret mystery adjectives.

8 days agoRemove sInv from axes
Nicholas Feinberg [Fri, 30 Apr 2021 15:34:29 +0000]
Remove sInv from axes

Pretty good targeter bug. I think ardl or dilly or someone reported
this but I couldn't find the message when I looked for it again, sorry!

8 days agoMove Hep frailty & ancestor to 1*
Nicholas Feinberg [Fri, 30 Apr 2021 15:22:40 +0000]
Move Hep frailty & ancestor to 1*

Hepliaklqana was one of the last gods that provided a benefit at 1*.
In general, the tension of having to worship for a little while before
actually getting an upside from your god (assuming you haven't taken
some other tradeoff, e.g. an ecumenical altar or a Monk start) tends to
produce more interesting gameplay. Along with recent major Hep buffs,
it seemed like it was finally time to make this change.

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

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

No need to give the blasting message for protected allies.

8 days agolint
advil [Fri, 30 Apr 2021 15:06:54 +0000]
lint

8 days agorefactor: unify hepl and fedhas ally protection
advil [Fri, 30 Apr 2021 14:37:56 +0000]
refactor: unify hepl and fedhas ally protection

Historically, these allies were treated quite differently, but
ab74d117c10 put them closer together by allowing some attacks to pass
through ancestors. However, like the original fedhas protection
implementation, this check is sprinkled all over the place leading to
inconsistent behavior between special cases and reports like #1925 (deja
vu for those who did the original fedhas bugfixing).

This commit continues the trend by doing the checks in exactly the same
places, leading to cleaner code and a more consistent set of religious
ally protections. Unlike the previous commit that refactors fedhas, this
commit is an expansion: hepl ally protections now cover a whole bunch of
cases (various spells, clouds, etc) that weren't considered in previous
commits, and hep allies should now be immune to all sorts of area spells
like refrigeration. But it is much cleaner from the player's
perspective, and code perspective, to give these two cases exactly the
same protection, once shoot-through is allowed for ancestors in the
first place.

One awkward case I am still aware of is OoD behavior, where the ancestor
is protected from damage but seems to block the orbs (with or without a
shield).

In the long run it would be nice to continue generalizing this code to
cover demonic guardians, conj projectiles, etc., but the more general it
is, the harder it is to get the messaging right for all cases, so I
aborted trying to do that for now.

Resolves #1925

9 days agorefactor: abstract some common fedhas code
advil [Thu, 29 Apr 2021 20:43:44 +0000]
refactor: abstract some common fedhas code

The code to check whether Fedhas protects an ally is repeated in a
number of places in a way that is a bit error-prone (in fact, most cases
seem to not be handling all the attitude possibilities). This commit
abstracts this into a common location with some relatively simple way to
call it. This could be even more abstracted into something that covers
non-god cases that often show up nearby fedhas checks (e.g. demonic
guardian). I actually started to do this and it's trickier than it
seems, though.

10 days agofix: disable cleaving during fsim
advil [Wed, 28 Apr 2021 15:35:29 +0000]
fix: disable cleaving during fsim

I'm not sure if this is new or old (but I'm surprised to see no reports
about it if the latter), but right now, if you fsim with a cleaving
weapon while adjacent to a real monster, the real monster takes damage
(and may die, grant xp, etc). Probably it would be nice to somehow have
a way to factor in cleaving to fsim, but this isn't it. So, simply
disable it for now.

10 days agofix: disable decapitation during fsim
advil [Wed, 28 Apr 2021 15:09:56 +0000]
fix: disable decapitation during fsim

910b67f9770a fixed the main case for #1917, but it was still possible to
trigger a crash by fsimming directly against a one-headed hydra. To
handle this, disable decapitation insta-kills for simulated attacks.
(Arguably, it might be better to accurately represent the damage
involved in an insta-kill, but this is a lot simpler.)

10 days agofix: save head count across fsim rounds
advil [Wed, 28 Apr 2021 14:23:24 +0000]
fix: save head count across fsim rounds

This restores the head count after a single fsim round. It's possible
that some people were using the simulation of head growth, but allowing
head growth or cauterization makes the calculation across rounds against
hydras pretty unreliable (and leads to crashes). It's of course possible
to specify head count in the monster spec for people who want to test
particular cases.

Resolves #1917

10 days agofix: handle tab at weapon select menu
advil [Wed, 28 Apr 2021 14:10:28 +0000]
fix: handle tab at weapon select menu

This was simply missing a `break` in the custom menu code for handling
the case; focus cycling was being correctly overridden. Resolves #1339.

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

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

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

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

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

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

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

11 days 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
enough.

Also:
 * 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

11 days 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

11 days 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

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

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

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

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

Inspired by:
https://www.reddit.com/r/dcss/comments/myz00g/my_candidate_for_the_most_useless_artifact_ever/

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

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

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

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

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

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

13 days 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".

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

2 weeks agoForce-interrupt all delays on zot clock messages
advil [Fri, 23 Apr 2021 21:50:05 +0000]
Force-interrupt all delays on zot clock messages

One factor in the death in 12569 is that when you have
`explore_auto_rest = true`, and start autotravel, it uses the delay
interrupt options for `interrupt_travel` rather than `interrupt_run`,
which does not include messages. It seems pretty reasonable that the zot
clock alerts should just interrupt anything, regardless of
configuration, which sidesteps this issue.

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

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

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

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

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

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

2 weeks 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 weeks 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 weeks agoFix a Hepliaklqana message (12568)
Edgar A. Bering IV [Tue, 20 Apr 2021 20:14:54 +0000]
Fix a Hepliaklqana message (12568)

2 weeks 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 `tileweb.cc:_update_statuses()` 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 weeks 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 weeks 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
restriction).

[ 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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 weeks 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
triggered.

[ Resolves #1878 ]

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