crawl.git
2 weeks agoFix several file accesses pull/1892 1892/head
robertxgray [Fri, 4 Jun 2021 22:05:25 +0000]
Fix several file accesses

Sets the external storage path as the working directory on Android.
Also replaces fopen with fopen_u when opening the bones files and
various wizard, test and debug functions.

3 weeks agoFix game crash when using small layout
robertxgray [Thu, 27 May 2021 20:34:27 +0000]
Fix game crash when using small layout

The game crashes when wielding a launcher while quivering something
different than the ammo.

4 weeks agoUpdate Android build
robertxgray [Fri, 9 Apr 2021 17:57:54 +0000]
Update Android build

Tested with DCSS 0.26.1, SDK for Android 11 (API level 30) and NDK
version r22b.

Build changes

- Added a gradle build setup for the android app.
- Removed previous build.xml.
- SAVEDIR static storage path repaced with
  SDL_AndroidGetExternalStoragePath.
- Disable FORTIFY in lua to avoid runtime errors.
- Updated various #ifdefs for __ANDROID__ and TOUCH_UI to handle
  current android builds.
- TOUCH_UI build is no more. Most of the code has been removed because
  it's not working as expected. The rest has been merged in the
  Android build.
- Some __ANDROID__ directives are no longer required for the build.
  They have been removed.

New features

- Show keyboard icon now can also be used to hide the virtual keyboard.
  Renamed to: Toggle keyboard.
- Android's back button no longer hides the keyboard when the Activity
  is focused, now it behaves like an alias for the escape key.
- The volume keys can be used for zooming the dungeon and the map.
- Two finger scroll can be used on menus.
- Custom font configurations to improve readability in small screens.
  The game auto scales in high resolution displays.
- Added summary of Android controls to the help screen.
- New option: tile_window_minimum. When set to false, disables the
  window size restrictions for testing purposes.
- The small layout has been fixed and improved. Now it shows the same
  information as the default layout and the tab menus scale better to
  modern smartphone displays.
- Small layout can be enabled with configuration option:
  tile_use_small_layout. This is now the default on Android.
- Custom keyboard inspired by the ascii port. It is no longer needed
  to install 3rd party apps por better gameplay.
- Support for physical keyboards.

Fixes

- The game is saved when the Activity is paused. It was very easy to
  lose progress (on purpose or by mistake) before.
- If the virtual keyboard is visible when the Activity is paused, it
  will be visible again when the Activity is resumed.
- The main menu no longer hides behind the virtual keyboard on startup.
- Lots of fixes for the small layout. It no longer crashes on
  vertical displays.
- Controls fixed on Android 10 and newer.

4 weeks agoMerfolk Long Blades title: Swordfish (hellmonk)
Nicholas Feinberg [Sun, 23 May 2021 03:00:34 +0000]
Merfolk Long Blades title: Swordfish (hellmonk)

4 weeks agofix: remove a likely unapropos weapon name
advil [Sat, 22 May 2021 22:08:40 +0000]
fix: remove a likely unapropos weapon name

Because "banish" has a specific meaning in crawl, "Banisher" as a weapon
name is very likely to be inconsistent with the weapon flavor. (I
spotted this while looking at learndb unapropos names, specifically,
`+1 trident "Banisher" {holy, +Blink rPois MP+9}`.)

4 weeks agoSimplify flaying
Kate [Fri, 14 May 2021 01:35:18 +0000]
Simplify flaying

Make it closer to torment-lite, dealing a fixed 25% of current HP instead
of its previous fairly complicated damage calculation.

4 weeks agoMore cleanups for Ozocubu's Refrigeration
gammafunk [Thu, 20 May 2021 02:03:54 +0000]
More cleanups for Ozocubu's Refrigeration

The check for whether a target was vulnerable used some outdated logic,
and the UI for players casting this spell didn't even perform the check
in the first place. Hence players casting the spell with only rC+++
monsters in LOS would not get the usually prompt about a useless cast,
even though all visible targets are immune. This commit fixes this
logic, adds a tracer check, and refactors the LOS attack spell code
slightly.

4 weeks agoFix spell -Potion application (AliasTheSpectator)
gammafunk [Wed, 19 May 2021 19:21:43 +0000]
Fix spell -Potion application (AliasTheSpectator)

If the player had rC+++ and cast Ozocubu's Refrigeration, their immunity
to its damage accidentally prevented application of -Potion. The player
spell doesn't damage the player even without the immunity granted by
rC+++, but this bug emerged as a holdover from when the spell did
self-damage. This commit applies the debuff unconditionally.

5 weeks agoDart slug: nerf damage, buff cast rate (hellmonk)
Nicholas Feinberg [Wed, 19 May 2021 00:17:59 +0000]
Dart slug: nerf damage, buff cast rate (hellmonk)

To have mercy on poor felids, decrease damage to 2d3 (from 2d4) and
increase cast rate to 30% (from 20%). Given the existence of AC,
this should more or less balance out.

5 weeks agorefactor: clean up some vaults monspec code, document
advil [Tue, 18 May 2021 17:03:34 +0000]
refactor: clean up some vaults monspec code, document

No behavior changes, but fix up a 9 year old stylistic choice I'm not a
fan of and make the documentation/comments a bit clearer for people
looking at this for the first time.

5 weeks agoWeaken early D vault OODs
Nicholas Feinberg [Tue, 18 May 2021 03:07:52 +0000]
Weaken early D vault OODs

Cap 8s and 9s to only spawning monsters up to (depth * 2) until D:9.
This roughly corresponds to the range for which chaff was removed
in dd57cda9ea3d35 .

5 weeks agoWeaken early D OODs
Nicholas Feinberg [Tue, 18 May 2021 02:56:32 +0000]
Weaken early D OODs

Removal of chaff from the D spawn pool made OODs much nastier than
they were in the past. Let's have no more D:2 water mocassins or
steam dragons.

5 weeks agoRevert Sacrifice Hand piety change
Nicholas Feinberg [Mon, 17 May 2021 16:07:00 +0000]
Revert Sacrifice Hand piety change

Back to 65 piety, from 60. Sacrificing your hand is an iconic and very
cool Ru experience - it's fine for it to be a little stronger than
other sacs, since it's fun!

5 weeks agoFix Yred/Beogh recall cancelling Ozocubu's Armour
Kate [Sun, 16 May 2021 23:31:58 +0000]
Fix Yred/Beogh recall cancelling Ozocubu's Armour

Recalling offlevel allies moved the player to 0,0 in order to silence
messages about expiring enchantments on them. However, this movement also
resulted in Ozocubu's Armour and Frozen Ramparts being cancelled. Use
msg::suppress to silence any such messages instead. Cheibriados Time Step
and Temporal Distortion do still move the player to 0,0 so have the same
problem (and would need a different approach to fix it).

5 weeks agoGive Chuck some more exciting rocks
Kate [Sun, 16 May 2021 18:41:05 +0000]
Give Chuck some more exciting rocks

Since the returning brand doesn't do anything special for him with
monsters getting infinite ammo.

5 weeks agoAdjust some monster ammo quantities
Kate [Wed, 12 May 2021 19:23:53 +0000]
Adjust some monster ammo quantities

Since monsters now have infinite ammo, remove some cases where they were
given additional ammo to make them less likely to run out. Also reduce some
quantities of rarer ammo (such as curare and branded javelins) to reduce
the amounts handed out to the player.

5 weeks agoRemove unused cloud immunity mutations
Kate [Sun, 9 May 2021 17:59:22 +0000]
Remove unused cloud immunity mutations

But leave their functionality intact for transferred games, rather than add
more save compatibility hacks for old demonspawn.

5 weeks agoLet a Kikubaaqudgha-worshipping wizard create endless gifts.
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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5 weeks agoWIP
Nicholas Feinberg [Fri, 14 May 2021 15:32:15 +0000]
WIP

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

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

5 weeks 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
on-average.

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.

5 weeks 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

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

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

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

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

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

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

6 weeks 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 weeks agoUpdate needle descriptions
Kate [Mon, 10 May 2021 01:52:05 +0000]
Update needle descriptions

6 weeks 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 weeks 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 weeks 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

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

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

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

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

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

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

It wasn't green enough.

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

Per #1892.

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

Per #1892.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8 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

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

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

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

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

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

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

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

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