13 hours agoLet a Kikubaaqudgha-worshipping wizard create endless gifts. master
Aliscans [Wed, 28 Apr 2021 22:29:27 +0000]
Let a Kikubaaqudgha-worshipping wizard create endless gifts.

The wizard mode "get a god gift" command now creates one first level spellbook (if you have had no gifts from Kikubaaqudgha yet), followed by any number of second level ones.

13 hours agoSimplify _give_kiku_gift().
Aliscans [Wed, 28 Apr 2021 22:29:12 +0000]
Simplify _give_kiku_gift().

Rather than have the game use variables such as "gift" and "success" to track whether to return true, return false as soon as something fails.

Make the items() call always create a book of Necromancy. This should have no effect as make_book_kiku_gift() overwrites it.

Return immediately if items() fails, rather than calling make_book_kiku_gift() on env.item[NON_ITEM] first.

13 hours agoSimplify _give_sif_gift().
Aliscans [Wed, 28 Apr 2021 22:28:53 +0000]
Simplify _give_sif_gift().

Rather than have the game use the "success" variable to track whether to return true, return false as soon as something fails.

13 hours agoSplit _gift_sif_kiku_gift() into a function for each god.
Aliscans [Wed, 28 Apr 2021 22:28:25 +0000]
Split _gift_sif_kiku_gift() into a function for each god.

There wasn't much common code, and this makes the flow easier to follow.

13 hours agoFix what happens when you try to read a spellbook.
Aliscans [Tue, 4 May 2021 23:00:04 +0000]
Fix what happens when you try to read a spellbook.

Make the game give a "You aren't carrying any scrolls." message if you try to read() when you have no scrolls in your inventory or on the floor, but there is a spellbook on the floor.

The game had given an inventory prompt with no items on it instead.

15 hours agoHighlight Curl's AC boost on webtiles HUD (12567)
Nikolai Lavsky [Wed, 5 May 2021 21:42:54 +0000]
Highlight Curl's AC boost on webtiles HUD (12567)

Highlight boosted AC when palentongas curl up.

15 hours agoFixup sac validity logic
Nicholas Feinberg [Sat, 15 May 2021 17:02:32 +0000]
Fixup sac validity logic

We already check whether a mutation is at max level; no need to
double-check it. (This logic also turned off a bunch of other validity
checks for skill/xp, probably unintentionally.)

Closes #1916.

15 hours agoCheckwhite
Nicholas Feinberg [Sat, 15 May 2021 16:49:57 +0000]

15 hours agoslightly increase ru sacrifice timer
hellmonk [Mon, 19 Apr 2021 03:26:44 +0000]
slightly increase ru sacrifice timer

15 hours agoAccount for spellcasting skill when sacrificing wizardry.
hellmonk [Mon, 19 Apr 2021 03:18:57 +0000]
Account for spellcasting skill when sacrificing wizardry.

Instead of just looking at int, account for any spellcasting training when
calculating piety, since that's a good indicator the player is casting things.

15 hours agoAllow multiple levels of sacrifice experience.
hellmonk [Mon, 19 Apr 2021 03:08:23 +0000]
Allow multiple levels of sacrifice experience.

Much like sacrifice skill, the mutation already allowed this but additional
validity checks forbid it. Sac experience may now be taken up to three times
for a total of -6 xl and the piety gain has been decreased somewhat. It would
be ideal to make sacrifice experience directly reduce the player's level rather
than stepping through xp (so that it's a relevant sacrifice at all stages of
the game rather than only relevant briefly upon taking and very lategame) but
that seems rather complicated to implement.

15 hours agoAdjust sacrifice skill.
hellmonk [Mon, 19 Apr 2021 02:37:09 +0000]
Adjust sacrifice skill.

Allow the player to take it up to three times. The mutation already supported
this, but a check in _sacrifice_is_possible prevented ru from offering it again
once it was taken. I am not sure if this was intentional or not. This commit
also adjusts the piety downward somewhat for the first sacrifice, but more
piety is given if the player elects to take it multiple times.

15 hours agoAdjust some sacrifice piety values.
hellmonk [Mon, 19 Apr 2021 01:37:10 +0000]
Adjust some sacrifice piety values.

Nerf sacrifice resistance somewhat and sac hand slightly. Buff sacrificing
willpower and love; those are more serious drawbacks than the old values
indicated, especially when comparing sac willpower to sac resistance.

15 hours agoAdd a piety bonus for sacrificing words and drink together.
hellmonk [Mon, 19 Apr 2021 01:20:47 +0000]
Add a piety bonus for sacrificing words and drink together.

Taking this combination shuts down a lot of options, so award a little piety
bonus. Mummies will also get a bonus for sac words now for the same reason.

15 hours agoDon't give piety for evo skill when sacrificing mp.
hellmonk [Mon, 19 Apr 2021 01:03:29 +0000]
Don't give piety for evo skill when sacrificing mp.

16 hours agoDevilishly good new tiles (Sastreii)
Nicholas Feinberg [Sat, 15 May 2021 16:20:44 +0000]
Devilishly good new tiles (Sastreii)

Makhleb altar and the Hellbinder.

16 hours agoDeduplicate excommunication XP
Nicholas Feinberg [Sat, 15 May 2021 16:03:51 +0000]
Deduplicate excommunication XP

16 hours agoMake Sac XP pricier
Nicholas Feinberg [Sat, 15 May 2021 15:56:55 +0000]
Make Sac XP pricier

Rather than just costing the player two XLs of XP, actually increase
the cost for all future XLs as if the player was still at their original
XL. This should make it a much more consistently meaningful sacrifice,
rather than one which becomes mostly irrelevant for most of the game
(due to how XP cost scaling works).

No adjustment to piety right now, though I can imagine it going up slightly.
(It was fairly over-valued before.)

17 hours agoFix GDR comment typo (nlavsky, goratrix)
Nicholas Feinberg [Sat, 15 May 2021 15:09:38 +0000]
Fix GDR comment typo (nlavsky, goratrix)

38 hours agoDRR AC GDR (hellmonk)
Nicholas Feinberg [Fri, 14 May 2021 18:19:34 +0000]
DRR AC GDR (hellmonk)

Remove weird breakpoints for GDR effectiveness at even-numbered AC
values. This does not matter.

40 hours agoNew wizlab tiles (Sastreii)
Nicholas Feinberg [Fri, 14 May 2021 15:44:32 +0000]
New wizlab tiles (Sastreii)

Zonguldrok (antique lich + shrine), Moon Base (walls), and also a tweak
to the new Murray tile. That's not a wizlab thing but no one told Murray.

40 hours agoWIP
Nicholas Feinberg [Fri, 14 May 2021 15:32:15 +0000]

41 hours agoSimplify GDR pull/1902 1902/head
Nicholas Feinberg [Wed, 14 Apr 2021 04:23:48 +0000]
Simplify GDR

Guaranteed damage reduction is intended to smooth out some of the
nastiness in Crawl combat. It guarantees that your AC will never
roll below some % of its max value when defending against melee attacks
and mundane projectiles (not against spells, etc).

This is a mostly reasonable idea, but it's implemented bafflingly: it
uses your base AC OR a hodge-podge of special cases based on your species
and/or form, meaning that it's both spoilery and weird. Some AC is
effectively worth more than others. Not great!

Instead, simplify it to be based purely on the player's current AC.
(Specifically, AC^(1/4) * 16.)

Previous example values:

Robe:                 0%
Scale mail (ie Fi):  28%
Plate:               39%

New values:

AC 6 (ie Fi):        25%
AC 20:      34%
AC 50:               43%

This is a buff to some things (anything that didn't have GDR before) and a
nerf to other things (early plate). It's all over the place. Chaos reigns.
(But in practice I suspect the difference will be mostly unnoticable.)

2 days agoFix meph chance display
Kate [Thu, 13 May 2021 18:26:29 +0000]
Fix meph chance display

2 days agoAdjustments to two volcano maps
gammafunk [Thu, 13 May 2021 05:44:08 +0000]
Adjustments to two volcano maps

For hellmonk_zot_springs, thin out the upper-tier monsters in the main
chamber, since it felt a bit too fierce in play-testing. The middle-tier
molten gargoyles are pretty tough at this depth as it is, so multiple
salamander mystics and the other higher tier threats compound the
difficulty of this map with each additional placement. Make the
upper-tier set not include molten gargoyles, so we won't place too many
of those, since the middle-tier placement already places four

For syntax, reglyph to use consistent glyphs for monsters and items and
to use a linear glyph progression. Fix the middle-tier monster NSUBST of
3 to not use ':' when placing the next tier on 4, since this would place
either six of such monsters or zero, which seems unintentional (and
undesirable). Clean up water tile placement and reorganize statements.

For hellmonk_pyromancer_palace, reglyph decorative lava so we can mark
it no_tele_into without marking the non-decorative lava.

Closes #1949.

3 days agoFix an incorrect glyph in hellmonk_smoking_crater
hellmonk [Thu, 13 May 2021 02:49:46 +0000]
Fix an incorrect glyph in hellmonk_smoking_crater

3 days agoDeep elf pyromancer volcano.
hellmonk [Thu, 13 May 2021 02:47:46 +0000]
Deep elf pyromancer volcano.

Pyromancers galore; deep elf archer serves as the boss.

3 days agoNew volcano map: zot springs
hellmonk [Thu, 13 May 2021 01:51:12 +0000]
New volcano map: zot springs

Based on the legendary zot vault. Places humanoids, steam clouds. No eruptions.

4 days agoNew monster tiles (Sastreii)
Nicholas Feinberg [Wed, 12 May 2021 04:41:46 +0000]
New monster tiles (Sastreii)

Boulder beetle, black bear, polar bear, zombie dragon, and Mnoleg.

4 days agoTweak Dj apts (pubby)
Nicholas Feinberg [Wed, 12 May 2021 04:17:10 +0000]
Tweak Dj apts (pubby)

Increase XP apt by 1 (0 -> +1) and drop spcast 1 (-2 -> -3).

The goal here is to increase the odds that new spells will require
some investment by the time you get them, rather than being immediately
castable. This could encourage strategic decisionmaking (is this new spell
worth investing in?). It's also intended to make =wiz more useful for Dj.

5 days agofeat: add a way to reset the !a warning without swapping (Yermak)
advil [Mon, 10 May 2021 18:51:23 +0000]
feat: add a way to reset the !a warning without swapping (Yermak)

This is a very minimal change to allow this, it resets the warning as a
side effect of rewielding. This is not great UI and it's a bit of a
hidden feature, but as Yermak pointed out, there are corner cases where
you really want something like this (e.g. Ash, + accidentally hitting y
or using it one-off for something like rampaging). I've at least
documented the behavior. This flag is used for ranged weapons as well as
!a-inscribed weapons.

5 days agoUpdate manual entry for grey draconians
Kate [Mon, 10 May 2021 13:52:30 +0000]
Update manual entry for grey draconians

6 days agoFix dart descriptions (Goratrix)
gammafunk [Mon, 10 May 2021 08:11:45 +0000]
Fix dart descriptions (Goratrix)

0b7d3b79 updated the descriptions, but incorrectly changed the entry to
one for needles.

6 days agoUpdate needle descriptions
Kate [Mon, 10 May 2021 01:52:05 +0000]
Update needle descriptions

6 days agoLet classed monster grey draconians swim
Kate [Mon, 10 May 2021 00:57:11 +0000]
Let classed monster grey draconians swim

Previously only base grey draconians could travel through water.

6 days agoRemove unbreathing (mostly)
Kate [Mon, 3 May 2021 18:10:10 +0000]
Remove unbreathing (mostly)

Unbreathing had a number of niche effects but was mostly redundant with
rPois and undead/nonliving/plant holiness. Instead make the things that
checked it just check holiness and rPois directly as appropriate.

Affected mechanics are mephitic cloud confusion and curare damage (both now
only check rPois, since all undead/nonliving/plant holiness creatures have
rPois anyway), and spore confusion and water drowning damage (both now
just check undead/nonliving/plant holiness).

Very few monsters/species behave differently as a result - grey draconians,
iron dragons, slimes, smoke demons and ophans are now fully affected by the
above mechanics (unless their rPois grants them immunity in the cases of
meph and curare).

Grey draconians gain regular amphibiousness instead of the unbreathing
flavour, removing the need for special-casing them in water.

6 days agoDon't allow Wu Jian attacks or ripostes with nonweapons
Kate [Sun, 9 May 2021 17:45:20 +0000]
Don't allow Wu Jian attacks or ripostes with nonweapons

8 days agoNew Sastreii tiles
Nicholas Feinberg [Fri, 7 May 2021 22:58:35 +0000]
New Sastreii tiles

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

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

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

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

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

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

It wasn't green enough.

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

Per #1892.

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

Per #1892.

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

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

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

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

12 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

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

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

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

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

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

13 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

13 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

13 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

No need to give the blasting message for protected allies.

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

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

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

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

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

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

Resolves #1925

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

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

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

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

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

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

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

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

Resolves #1917

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

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

2 weeks agoSome cleanups for a volcano map
gammafunk [Wed, 28 Apr 2021 00:05:53 +0000]
Some cleanups for a volcano map

For hellmonk_smoking_crater, slightly increase the number of upper-tier
monsters, adding one more on average over two locations. This map feels
on the easier side unless you rush in quite recklessly, and it doesn't
have the usual cloud gimmicks to try to "force" players to a particular
area. Increase the chance of cloak of the thief to be something a player
might actually see over the course of many games. Reglyph the vault to
not override pre-defined glyphs, and clean up syntax and spacing.
Closes #1929.

2 weeks agoNew volcano map with a smoke/steam theme.
hellmonk [Mon, 26 Apr 2021 00:34:59 +0000]
New volcano map with a smoke/steam theme.

Places a highly variable number of monsters; lots of steam dragons. Loot
includes a couple of fog scrolls or cloak of the thief (rarely). No eruptions.

2 weeks agoRemove some duplicated artefact checks
Kate [Tue, 27 Apr 2021 20:32:28 +0000]
Remove some duplicated artefact checks

Elyvilon being prevented from being named on */+Rage items was redundant
since weapons aren't eligible to be named after Ely, and -Cast conflicting
with rings of fire/ice/wizardry/MP was also redundant since -Cast can only
appear on armour and amulets. Moves a couple of other checks back to
_artp_can_go_on_item rather than _randart_is_conflicting.

2 weeks agoAdjust some more artefact restrictions
Kate [Tue, 27 Apr 2021 20:19:49 +0000]
Adjust some more artefact restrictions

Prevents -Cast and +MP on the same artefact, and prevents Trog from
gifting items with +Int. Also adjusts which item types can be named after
which gods - quick blades can now be named after Chei (since they're no
longer a hated item), and non-weapons can't be named after Trog.

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

In onia_ninara_dug_in_and_dangerous.

2 weeks agofix: correctly check antimagic brand conflicts for randarts
advil [Tue, 27 Apr 2021 16:27:26 +0000]
fix: correctly check antimagic brand conflicts for randarts

The `get_weapon_brand` call here simply doesn't work, returning
SPWPN_NORMAL. I think this is because the brand prop is not yet set up
on `item` (past a point I stopped trying to figure out exactly what the
problem was). Possibly this check should be in
`_is_randart_conflicting` anyways?

I was able to replicate this in 0.25.1 with the seed from @Goratrix in
the issue: resolves #1322.

2 weeks agofix: remove "Power" from rand_wpn.txt
advil [Tue, 27 Apr 2021 16:04:48 +0000]
fix: remove "Power" from rand_wpn.txt

This is generally confusing with the unrand sword of Power, and can
actually in rare circumstances generate e.g. "the great sword of Power"
(I just saw this in a test game).

2 weeks agofix: always announce xom chaos branding
advil [Tue, 27 Apr 2021 14:20:07 +0000]
fix: always announce xom chaos branding

The message ordering when Xom granted an item and "upgraded" it to chaos
was confusing, because the item was announced before the brand took
effect. (I suspect this changed at some point.) Rather than try to work
out how to fix the message ordering, this commit leans into this effect
and just announces the change after the item generates (still letting
the player know what they would have gotten). It's still not very
explicit about removing the old brand, but hopefully this will be clear

 * Standardize Xom's chaos upgrade using the same message as in regular
   branding. Possibly more boring, but also more predictable.
 * Clean up some code for Xom upgrading ally weapons.

Resolves #1865

2 weeks agofix: check form in player::could_wield
advil [Tue, 27 Apr 2021 13:10:28 +0000]
fix: check form in player::could_wield

Other checks (e.g. size, handedness) mostly conspire to cover this case
already, but this fixes some UI issues for giant forms when the player
normally can't wield giant weapons. As a side effect, it does mark all
weapons as useless when in a non-wielding form, but if this is a
problem, the fix would be to adjust the ignore_transform parameter from
the caller. (This might lead to other issues though if any forms narrow
the wield restrictions. But I'm not sure they do.)

Resolves #1889

2 weeks agofix: annotate staves with {weapon}
advil [Tue, 27 Apr 2021 12:48:13 +0000]
fix: annotate staves with {weapon}

These are not technically weapons, which is why this has to be done
manually, but from the player's perspective that distinction is not
particularly helpful -- I think the player will expect anything that can
be wielded, used in attacks, etc to show up when doing a stash search
for "weapon".

Resolves #1907

2 weeks agoRework the Jungle Book Lair ending
gammafunk [Tue, 20 Apr 2021 03:22:34 +0000]
Rework the Jungle Book Lair ending

The map due_jungle_book is memorable, but uses a spoilery lua death
trigger. Killing the sole anaconda found on the map causes random green
elephant statues to "come alive" as dire elephants. We do have lua
spoiler vaults at various places in crawl, but it's best to not feature
these in a common Lair ending. Furthermore this effect doesn't result in
very interesting gameplay relative to how much of a spoiler it is.  One
of the most common tactics is grabbing loot, teleporting out, and
ignoring most of the spawned monsters. This commit reworks the vault to
have a strong undead theme, adding in the relatively underused
necromancer monster and its Bind Soul ability to pull off "on death"
effects with better gameplay and less spoilers.

Necromancers get a band of living beasts, mostly elephants but with
death yaks and cane toads mixed in. We also mix in bands of thematic
skeleton, zombie, and spectral monsters throughout the vault, including
a spectral version of the old "Kaa" anaconda. Monster encounters are now
spread out so that none of the various vault chambers are empty, which
was a problem with the old vault. Overall there are fewer dire
elephants, since the previous vault placed too many, but they still
feature prominently in the largest loot chamber and can appear in their
derived undead forms elsewhere in the map.

The guaranteed piece of loot that previously required burning trees is
now guarded by an obsidian statue. This loot has a necromancy theme,
being one of such items as a high quality pain or draining weapon,
shadow dragon scales, an artefact ring of positive energy, an artefact
amulet of regeneration, or a necromancy themed book. The
necromancy-themed unrands Sceptre of Torment, Morg, Cigotuvi's Embrace,
Sword of Zonguldruk, and Majin-Bo all have a chance to appear as this
loot item, although each with low chance.

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

Rupert gettin ripped and Frederick gettin mean.

2 weeks agofix: prevent -cast and +int (kate)
advil [Mon, 26 Apr 2021 23:26:14 +0000]
fix: prevent -cast and +int (kate)

This also seems like a case where these properties should conflict.
Also, move the conflict check from a8074f5 to a more natural place.

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

Inspired by:

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

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

2 weeks agofix: adjust connectivity for gammafunk_its_a_trap
advil [Mon, 26 Apr 2021 15:25:20 +0000]
fix: adjust connectivity for gammafunk_its_a_trap

This should only be marked `passable` in vaults; because of the
conditional SUBST for - it is potentially one-way outside of vaults and
can generate connectivity traps as well as actual traps. I replicated
this behavior using seed 12239598491091230555 at version 407484c in
Snake:3, from the game shown in #1909.

Resolves #1909.

2 weeks agoMake Repel Missiles unablatable
Kate [Wed, 14 Apr 2021 22:03:38 +0000]
Make Repel Missiles unablatable

Repel Missiles having a power-dependent chance of ending after repelling
something was an important feature for the player spell, but not relevant
on on the few monsters with rMsl (and would only trigger rarely even for
them). With the player spell gone, remove that extra layer of complication.

2 weeks agoRefactor disease to be a standard duration
Kate [Sat, 24 Apr 2021 20:15:39 +0000]
Refactor disease to be a standard duration

Disease is no longer a widespread status effect and only shows up in the
Abyss from ancient zymes, so doesn't need so much special handling. Turn it
into a normal duration (with recovery rate no longer affected by the
player's regeneration rate), and make it dispellable instead of being
healable with potions of curing.

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

And any future things from other things.

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

Prevent "It is a one-tentacleed weapon".

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

3 weeks agoDon't have burned demonic trees release demons
gammafunk [Sun, 25 Apr 2021 01:42:40 +0000]
Don't have burned demonic trees release demons

This behaviour creates a disincentive problem similar to the one that
orcish idols had when destroying those caused smiting: it would
practically never be worth it to intentionally burn a demonic tree.
Although creating a chaos cloud doesn't do much in terms of gameplay,
having that alone is better than creating destruction disincentives.
This commit removes the demon summoning part, but keeps the chaos cloud

There might be room for more monster-activated behaviour, similar to how
Awaken Forest works (and that effect does work normally on demonic
trees). The challenge with monster-activated behaviour will be that
demonic trees have limited distribution, even in the abyss.

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

3 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