4 weeks agoA tile for dread liches monster-spell-overhaul pull/1689 1689/head
Edgar A. Bering IV [Thu, 28 Jan 2021 11:59:14 +0000]
A tile for dread liches

A recolour of ancient liches to give them spiffy magenta robes instead
of blue.

4 weeks agoTiles for Deep Elf Zephyrmancers and Pyromancers
Edgar A. Bering IV [Thu, 28 Jan 2021 11:48:27 +0000]
Tiles for Deep Elf Zephyrmancers and Pyromancers

Zephyrmancers just use the mage tile (which already had a blue robe),
and Pyromancers are a red robe recolour.

4 weeks agoSimplify monster spellbook description code
Edgar A. Bering IV [Tue, 26 Jan 2021 15:24:55 +0000]
Simplify monster spellbook description code

Now that monsters only have one spell book, we no longer need to infer
their book from seen spells, which really simplifies a lot of the

4 weeks agoSplit Deep Elf Mages into two monsters
Edgar A. Bering IV [Tue, 26 Jan 2021 13:06:53 +0000]
Split Deep Elf Mages into two monsters

Deep Elf magi had 6 (!) spellbooks, intending to represent the four
elemental schools, conjurations, and summonings. The most impactful of
these books were the lightning bolt book and the fire book; the other
elemental schools are represented in various ways by other elf monsters.

This commit creates two new monsters: deep elf pyromancer and deep elf
zephyrmancer, to carry the fire and air books repsectively. Both have
the same stats.

Additionally, this moves the console glyphs around (since 'e') is a bit
crowded; knights move to blue (matching naga warriors and Duvessa),
pyromancers go on red (matching their elemental colour and Dowan), and
zephyrmancers go on cyan (again an elemental colour match). The
Dowan/Duvessa collision is a bit unfortunate, but they occur at
different depths and with this convention they roughly mimic the
behavior of their glyphmates.

As with the lich split, I've split up the usage in various vaults,
mostly balancing the weight. In the spawn tables I did similarly, except
for dungeon, where pyromancers come earlier than zephyrmancers, and for
abyss, where these lower elves are removed (they were very rare

4 weeks agoNew Monster: Dread Lich
Edgar A. Bering IV [Mon, 25 Jan 2021 18:09:39 +0000]
New Monster: Dread Lich

(Name is TBD) To keep some more iconic Lich spells around in this single
book world, the Dread Lich is the lich of demon summoning, with a book
consisting of Haste, Summon Greater Demon, Paralyze, and Invisibility.

Dread liches have the same stats as ancient liches, and appear in the
same places. In vaults they either increased the total lich weight
(where the vault seemed weak), or split weight with ancient liches,
except in those cases when the vault designer seemd to specifically be
using ancient liches in their summoner or their conjuror role.

4 weeks agoNew Lich spellbook
Edgar A. Bering IV [Mon, 25 Jan 2021 17:08:05 +0000]
New Lich spellbook

Liches and Ancient Liches have several iconic spells, conjurations,
hexes, and summon greater demon (espeically notable on ancient liches
who are tough enough to keep their demons around!). So many that making
a single book that covers all of the roles leaves a book that steps on
its own toes.

This commit creates a conjurations focused spellbook for Liches and
Ancient Liches consisting of Corrosive Bolt, LCS, Slow, Haste, and
Invisibility; this is basically the old LCS book, but with Slow and
Invis instead of Petrify. A subsequent commit will introduce a new 'L'
monster to take up the summoning Lich role.

4 weeks agoReplace Dispater's Summon Greater Demon
Edgar A. Bering IV [Thu, 21 Jan 2021 07:47:48 +0000]
Replace Dispater's Summon Greater Demon

With Summon Hell Sentinel. For the same reasons that Ereshkigal was
changed to summon a specific demon, Dispater's call now goes only to the
Hell Sentinels.

4 weeks agoReplace Ereshkigal's Summon Greater Demon
Edgar A. Bering IV [Thu, 21 Jan 2021 07:36:01 +0000]
Replace Ereshkigal's Summon Greater Demon

With Summon Tzitzimitl. SGD is a generic spell, and while it's maybe ok
for a Pandemonium lord to call up whichever demons, the Hell lords
should really only be calling flavorful demons, if any, since they're
not lords of all demons!

4 weeks agoChange Cerbov's summon
Edgar A. Bering IV [Thu, 21 Jan 2021 06:40:14 +0000]
Change Cerbov's summon

Summon Greater Demon is of course something a lord of Pandemonium should
be able to do, but it seems a bit silly flavour-wise for the firey lord
of Pandemonium to summon a blizzard demon. This replaces Cerebov's SGD
with the buffed Fire Summon spell of Asmodeus, so he now only calls
Balrugs, Hellions, and Brimstone Fiends.

It's not completely clear that Cerebov even needs summons, since he's
the Fire Storm monster, but summons do prevent a player from isolating
the boss monster completely and Cerebov seems to work well with them, so
let's try it.

4 weeks agoBuff Asmodeus' Fire Summon
Edgar A. Bering IV [Thu, 21 Jan 2021 06:36:42 +0000]
Buff Asmodeus' Fire Summon

Effreets and Sun demons aren't good threats at his depth, they're
removed from the spawn table for the spell fire summon.

4 weeks agoRemove some demon summoning
Edgar A. Bering IV [Thu, 21 Jan 2021 06:33:44 +0000]
Remove some demon summoning

Demon summoning is overused on many monsters. Some could still use a
summon, but a more flavorful specific summon. For neqoxecs and shadow
demons, the summoning spell wasn't that notable. Shadow demons already
mostly appear in places with demonic spawn lists, where shadow creatures
will fetch plenty of demons; neqoxes demon summoning got in the way of
their other line of fire spells and didn't enhance them much.

4 weeks agoRemove Bolt of Cold from tzitzimitls
Edgar A. Bering IV [Fri, 15 Jan 2021 10:04:35 +0000]
Remove Bolt of Cold from tzitzimitls

While there is a certain ammount of cold/undead theming, as a "fiend"
type monster it'd be better if their spells didn't overlap with Ice
Fiends. They still have plenty of tools to threaten a living rN+++
player character, and dispel undead for undead players.

4 weeks agoRemove some Level 1 spells from high level monster books
Edgar A. Bering IV [Fri, 15 Jan 2021 10:00:18 +0000]
Remove some Level 1 spells from high level monster books

They don't do much other than add to cognitive load. Casting frequencies
are a better way to adjust this sort of thing.

4 weeks agoRemove Twisted Resurrection
Edgar A. Bering IV [Fri, 15 Jan 2021 09:49:00 +0000]
Remove Twisted Resurrection

This spell lived on in a rather meager twilight existence on some high
tier elves. However, like other monster necromancy spells, it was rarely
impactful: even when there were a large number of corpses they rarely
could amalgamate together to make enough large abominations to threaten
the player.

4 weeks agoGive Khufu Scarabs instead of Undead
Edgar A. Bering IV [Fri, 15 Jan 2021 10:02:04 +0000]
Give Khufu Scarabs instead of Undead

In line with the other Royal Mummy changes.

4 weeks agoMake most monsters single spellbook
Edgar A. Bering IV [Thu, 7 Jan 2021 18:42:37 +0000]
Make most monsters single spellbook

Monster spellbook variation was used for a mix of two reasons: flavour
and threat variance akin to monster item use. Unlike monster items,
which are easy to display in the UI, spell books are potentially long,
so tracking which ogre mage on screen is the one with Paralysis was a
serious UI screw which can't be quickly addressed by adding a HUD

This UI screw plus cognitive load is not worth it: for most multi-book
monsters the book variations lack enough focus to build flavour and are
rather balanced in their threat levels. This commit changes every
multi-book monster except deep elf mages and (ancient) liches to have a
single book. Specific monsters and the reasoning behind their new books

The general guiding principle I've followed when assembling the new
book is to try to follow the "feel" of the old book sets that a player
would get if they weren't checking each monster's book carefully.


The old Faun spellbooks were corona + another hex. There are a mix of
Will checking threats in shoals, but often players arrive with lots of
Will gear stacked up. Fauns show up in packs and their Corona+Hex book
was designed to make them amplify other ambient ranged threats. The new
book gives them Strip Willpower in place, for helping one another and other
ambient monsters hex the player.

New Faun book:

- Corona
- Strip Willpower

Deep Elf Knight

Deep Elf Knights had one book with Icicle, Haste, and Invisibility,
and a second which had Stone Arrow, Force Lance, and Invisibility.
The positional implications of Force Lance are great to keep around,
so it's added to the rest of the first book.

New Deep Elf Knight book:

- Throw Icicle
- Force Lance
- Haste
- Invisibility

Orc Wizard

Orc Wizards had three(!) distinct books, but their most iconic behavior
was confusing the player and going invisible. This is book II, shared
with Sigmund, and this is made into the single Orc Wizard book.

New Orc Wizard book:

- Magic Dart
- Throw Flame
- Confuse
- Invisibility


Blork the Orc used Orc Wizard book III, this is basiclly preserved but
emergency invisibility is removed from the book since it was quite long.

New Blork book:

- Cantrip
- Magic Dart
- Throw Flame
- Throw Frost
- Haste


Necromancers had two books which differed only in the choice of bolt
spell. In a large fight where Bind Souls has produced many simulacra,
the player could hide from either bolt by using the simulacra to block
LOF. The new book gives Necromancers Bolt of Draining, which works
better with their mechanic.

New Necromancer book:

- Bolt of Draining
- Agony Range
- Bind Souls
- Invisibility


Wizards' book assortment conveyed a mix of magics, to imply a mastery.
Based on the D&D class as far as I can tell. To keep that flavor I
picked a range of spells from their books that produced the same "mixed
magic" feel. They share depth with Ogre Magi but don't come in packs, so
I went with fireball and banishment here to differentiate the two spell

New Wizard book:

- Fireball
- Banishment
- Blink
- Invisibility

Hell Knight

Hell Knights are one of a couple of late game monsters that cast Pain,
which at their depth isn't much of a threat even when it can beat the
player's Will. Bolt of Fire is good for them, they can just use that.
Perhaps blink should be made non-emergency, but because Hell Knights
come in packs an injured HK blinking away to let a fresh one attack the
player is a nice touch.

New Hell Knight book:

- Bolt of Fire
- Blink (emergency)
- Haste

Ancient Champion

Another late game monster with Pain. Since they often come in bands with
undead, retaining Bolt of Draining might be good but for now I went with
short and sweet.

New Ancient Champion book:

- Iron Shot
- Haste

Royal Mummy

Each of the four Royal Mummy books had Smite and Torment, the remaining
mixed Summon Demon, Summon Undead, Summon Mana Viper, Summon Emperor
Scorpions, and Summon Death Scarabs in some combination. Plain Summon
Demon doesn't do much for RMs, Vipers are also quite fragile at the time
Royal Mummies appear and vulnerable to torment, and Mummy Priests
already summon undead. Scorpions are vulnerable to torment, so they're
not the best here, but the flavour is good. Perhaps we could give
emperor scorps rTorm. This is the old Book IV, which has the strongest
Mummy flavour.

New Royal Mummy book:

- Smite
- Symbol of Torment
- Summon Emperor Scorpions
- Summon Death Scarabs

Ogre Mage

Ogre Mages typically come in packs with other Ogres and are notable for
hasting them. Beyond that they have a sort of wizard flavour to their
book set; this consolodation picks Bolt of Magma and Parlayse to round
out the set to differentiate them from Wizards which appear at
overlapping depth.

New Ogre Mage book:

- Bolt of Magma
- Haste Other
- Paralyse
- Invisibility

Tengu Conjurer

The different Tengu spellcasters have a hodgepodge of "battlemage"
spells. Flavour wise Tengu are supposed to be good at Conjurations and
Air magic, so I settled on the air book from the four book choices.

New Tengu Conjurer book:

- Lightning Bolt
- Battlesphere
- Blink

Tengu Reaver

In keeping with the air theme (though less so conjurations), the new
Tengu reaver book attempts to give them a pair of spells that force a
player trying to melee them to reposition. The monster AI change when it
comes to blocking ranged allies means that the reaver won't block its
lightning spire if it can step aside, so this should interact well. It
might need spell logic to prevent the reaver from summoning 10000 spires
since monsters don't have summon caps, let's see how it plays.

New Tengu Reaver book:

- Freezing Cloud
- Summon Lightning Spire

4 weeks agoRevamp Psyche's spellbook
Edgar A. Bering IV [Sun, 10 Jan 2021 20:48:27 +0000]
Revamp Psyche's spellbook

The Orc Wizard III book isn't that exciting. Psyche's defining
characteristics as a unique are her dagger brand and chaos theme, so
I've leaned into that. The new book is: Cantrip, Polymorph, Chain of
Chaos, Invisibility.

At Psyche's depth Chain of Chaos is rather scary, but can be mitigated
by having other monsters around. Since she arrives at a depth where many
characters won't have a ready source of allies, this puts pressure to
engage Psyche with other hostiles around.

Polymorph is also in the mix, partly to thin out the CoC terror with
something chaotic in the casting weight, and partly because polymorph
aimed at the player is a rather rare effect and a good "signature spell"
for a chaos unique.

4 weeks agoSlightly improve a citation.
Neil Moore [Thu, 28 Jan 2021 17:57:45 +0000]
Slightly improve a citation.

[skip ci]

4 weeks agoConsistently indent quotes in quotes.txt
Edgar A. Bering IV [Thu, 28 Jan 2021 09:39:54 +0000]
Consistently indent quotes in quotes.txt

Closes #1700

4 weeks agoFix some KJV citations
Edgar A. Bering IV [Thu, 28 Jan 2021 09:05:17 +0000]
Fix some KJV citations

4 weeks agoDon't mark unkown books useless for gnolls
Edgar A. Bering IV [Thu, 28 Jan 2021 08:57:32 +0000]
Don't mark unkown books useless for gnolls

Closes #1707

4 weeks agoMention diggability on xv (hellmonk)
Nicholas Feinberg [Thu, 28 Jan 2021 02:57:18 +0000]
Mention diggability on xv (hellmonk)

4 weeks agoPrevent Ozocubu's Armour from breaking when equipping heavier armour
AdamPG [Wed, 27 Jan 2021 20:42:32 +0000]
Prevent Ozocubu's Armour from breaking when equipping heavier armour

4 weeks agoReplace travis build badge with github badge in
Goratrix [Wed, 27 Jan 2021 09:24:58 +0000]
Replace travis build badge with github badge in

4 weeks agoAdjust a misleading description (12374)
Edgar A. Bering IV [Wed, 27 Jan 2021 21:28:57 +0000]
Adjust a misleading description (12374)

4 weeks agoRemove an extra space (Yermak)
Edgar A. Bering IV [Wed, 27 Jan 2021 20:38:39 +0000]
Remove an extra space (Yermak)

4 weeks agoRemove an unused parameter and simplify
Edgar A. Bering IV [Wed, 27 Jan 2021 20:37:04 +0000]
Remove an unused parameter and simplify

4 weeks agoDon't leak stash info with Gozag gold detection (12413)
Edgar A. Bering IV [Wed, 27 Jan 2021 20:03:50 +0000]
Don't leak stash info with Gozag gold detection (12413)

This makes gold detection work more like item detection, in that the
detected gold does not appear in stash search as it did previously. This
is a bit unfortunate, but this is the lone edge-case remaining where a
stash pile is revealed partially. It shows that the detected thing is
gold versus an item for a gnoll on the map, which suffices.

4 weeks agoDon't hide Bows for one hand-paired ants
Edgar A. Bering IV [Wed, 27 Jan 2021 19:21:54 +0000]
Don't hide Bows for one hand-paired ants

4 weeks agoHide Bows when a hand is sacrificed (12398)
Edgar A. Bering IV [Wed, 27 Jan 2021 18:59:54 +0000]
Hide Bows when a hand is sacrificed (12398)

4 weeks agoMake manuals useless for gnolls
Edgar A. Bering IV [Wed, 27 Jan 2021 18:22:48 +0000]
Make manuals useless for gnolls

Gnolls inability to focus skills makes manuals last an inordinate amount
of time, and also create weird incentives around manipulating
acquirement results versus getting technical advantages.

The lore says they can't focus, so let's extend that to focusing on
whats on the page in a manual and make them useless.

4 weeks agoRemove an inappropriate sanctuary check
Edgar A. Bering IV [Wed, 27 Jan 2021 18:03:31 +0000]
Remove an inappropriate sanctuary check

4 weeks agoDon't look for clouds in the wrong places (12459)
Edgar A. Bering IV [Wed, 27 Jan 2021 17:50:05 +0000]
Don't look for clouds in the wrong places (12459)

4 weeks agoPartially restore monster ranged AI
Nicholas Feinberg [Wed, 27 Jan 2021 15:42:46 +0000]
Partially restore monster ranged AI

Due to a misreading, 4e0205b1fca8 removed the chance for monsters with
ranged weapons to do something with their turn other than shoot their
target. Oops!

The new logic is:

- Master archers (e.g. deep elf master archers, merfolk javelineers)
  have a 90% chance to shoot.
- Non-master-archers with ranged weapons have an 80% chance to shoot.
- Non-master-archers with throwing weapons have a 33% chance to shoot.

This should get us back roughly where we were before, but with less
throwing than after the infinite ammo change.

4 weeks agoMake trove entries transparent
Edgar A. Bering IV [Wed, 27 Jan 2021 07:41:36 +0000]
Make trove entries transparent

4 weeks agoRemove banana bunyips (hatsuma)
Nicholas Feinberg [Wed, 27 Jan 2021 06:02:54 +0000]
Remove banana bunyips (hatsuma)

The end of an era...

4 weeks agoMake monsters less throw-happy
Nicholas Feinberg [Wed, 27 Jan 2021 05:50:40 +0000]
Make monsters less throw-happy

Similar to wand logic, make monsters with throwing weapons only use
them some of the time. Instead of throwing every single turn while
not in melee, now they'll only throw their held item at you 1/3 turns.
Master archers (e.g. merfolk javelineers) and enemies with actual
launchers (e.g. centaurs) are exempted.

4 weeks agoSimplify monster throwing/launcher AI
Nicholas Feinberg [Wed, 27 Jan 2021 05:45:30 +0000]
Simplify monster throwing/launcher AI

Remove very complex and fairly pointless interactions with Leda's
Liquefication. That spell is not nearly powerful enough to require
making the AI play around it intelligently! The player should be allowed
to feel smart and to take advantage of dumb monsters with their
expensive situational spell!

4 weeks agoDon't summon demonic guardians from poison
Nicholas Feinberg [Wed, 27 Jan 2021 05:37:28 +0000]
Don't summon demonic guardians from poison

Placeholder until/unless a cleverer approach is found.

4 weeks agoDon't do zone filling in the abyss
advil [Wed, 27 Jan 2021 01:06:47 +0000]
Don't do zone filling in the abyss

Unlike normal builder scenarios, connectivity checks are only rarely
triggered in the abyss, by the placement of a minivault it seems. (I'm
surprised they happen at all, and wonder what they accomplish.) In this
case, it seems wrong to do any fills, as the abyss is supposed to allow
temporarily disconnected zones.

In mantis 12442, 12416, as well as #1680, it was reported that this
scenario could lead to errors, because the fill code assumed that no
items had been placed yet. As far as I know this is mostly true, just
not for the abyss, which does most of its building before minivaults
have the chance to place. I've also added a guard against filling over
items, even though the main fix in this commit prevents the specific
case from coming up. Interfering items just get nuked, to prevent vetos.

Resolves #1680.

4 weeks agoSort the book of Ice
Edgar A. Bering IV [Tue, 26 Jan 2021 20:43:02 +0000]
Sort the book of Ice

4 weeks agoDon't print resist messages when casting Ozocubu's refridgeration
Edgar A. Bering IV [Tue, 26 Jan 2021 20:25:08 +0000]
Don't print resist messages when casting Ozocubu's refridgeration

Closes #1693

4 weeks agoIncrease the level of Ozo's fridge to 7
Edgar A. Bering IV [Tue, 26 Jan 2021 20:21:24 +0000]
Increase the level of Ozo's fridge to 7

The changes to remove self-damage and the damage formula for Ozo's led
to a very strong spell. While nerfing the spell damage is also a
possible route here, Ice magic currently has no level 7 or 8 spells, so
let's try the level bump as a balance knob.

4 weeks agoFix the build?
Nicholas Feinberg [Tue, 26 Jan 2021 06:25:14 +0000]
Fix the build?

This code is extremely bad!

4 weeks agoBring Hellbinding back
Nicholas Feinberg [Tue, 26 Jan 2021 04:39:53 +0000]
Bring Hellbinding back

By popular demand, make evil god-following summoners use the old titles.

4 weeks agoIntegrate palentonga sprites
Nicholas Feinberg [Mon, 25 Jan 2021 02:37:00 +0000]
Integrate palentonga sprites

And add new palentonga lichform and 8form sprites.

Cloaks look sort of awful here, but not sure what can be done!

4 weeks agodonger sprites
Hatsuma [Thu, 14 Jan 2021 21:10:54 +0000]
donger sprites

4 weeks agoRemove item destruction (minmay)
Nicholas Feinberg [Tue, 26 Jan 2021 01:20:47 +0000]
Remove item destruction (minmay)

Don't make fleeing enemies use scrolls of teleportation or blinking.
It doesn't create interesting tactical situations or decisions, and it
does cause annoyances and strange incentives for spoilered players.

4 weeks agoMostly remove stone giants from Orc:2
Nicholas Feinberg [Tue, 26 Jan 2021 01:08:48 +0000]
Mostly remove stone giants from Orc:2

Way, way, way too nasty compared to literally everything else. Orcs
should be the star of the show in Orc, imo, not some silly giants!

They can still spawn as OODs or in vaults. It looks like empirically
they'll show up about 40% as often as before.

At some point I should go over these spawn tables more thoroughly...

4 weeks agoRevert "Add a trunk reminder for the 0.26 tournament"
Nicholas Feinberg [Mon, 25 Jan 2021 16:23:20 +0000]
Revert "Add a trunk reminder for the 0.26 tournament"

This reverts commit 4bfc8a49e17f9a62c58050e8347afbcd08fc21f7.

So long, t0.26!

4 weeks agoAdjust and derandomize shield delay penalty
Edgar A. Bering IV [Mon, 25 Jan 2021 21:46:49 +0000]
Adjust and derandomize shield delay penalty

The old formula was approximately an extra min(1d adjusted shield penalty, 1d adjusted shield penalty) delay. However, this was calculated at a scale of 20 to
allow die with penalty less than 1, since for a human-sized player the
adjusted shield penalty of a buckler at 0 skill is 1. With scaling, the
formula was:

min ( 1 d (20 * penalty), 1 d (20 * penalty) ) / 20

randomly rounded.

As a result, at 0 skill a buckler did not have a delay penalty of 0.1,
but in practice was something that was 0 with a pretty high probability.
To get a very good chance of a delay penalty of 0, 7 skill was
sufficient for a kite shield, and 12 for a tower shield.

7 skill costs a human 1,400 skill points; 12 skill costs a human 4,200
skill points.

2 hand maces (excluding dire flails), pole arms, and
swords, all require 20 skill (or more) for min-delay; at the probability
of penalty achieved for the above shield skill values, this is a better
comparison point than the skill required for min+0.1 delay. 20 weapon
skill costs 13,950 skill points, compared to 9,600 for 16 skill and the
7 shield skill; the difference in base damage is not
sufficient compensation for enough skill points to raise a 0-apt skill to 10!

This commit changes the formula to something less random and stiffer,


At 0 skill, a buckler has a flat constant delay penalty of 0.1,
eliminated at 4 skill. At 10 skill a kite shield gives a delay penalty
of exactly 0.1, and the old probability is achieved at a skill level
between 14 and 15. To get a delay penalty of 0.1 with a tower shield,
20 skill is required.

With these skill training targets, achieving a delay of min+0.1 for a 16
skill 1-hander while using a kite shield costs 11,000 skill points,
compared to the 10,800 skill points for 18 skill to get the same swing
speed with a 20 skill 2-hander. For min-delay, the 16 skill 1-hander +
kite costs 15,250, compared to 13,950 for a 20 skill 2-hander.

This is a better alignment of strategic costs, which will hopefully
make the "1h vs 2h" a more interesting strategic decision based on game

The increase to broad axe delay in 81720017eb when combined with this
change might make broad axes too expensive; that is easily fixed if it
turns out to be the case.

4 weeks agoFix the build (doh)
wheals [Mon, 25 Jan 2021 10:16:27 +0000]
Fix the build (doh)

4 weeks agoClarify a parameter name
wheals [Mon, 25 Jan 2021 09:42:14 +0000]
Clarify a parameter name

4 weeks agoClarify that malevolent magic applies only to wands (kate-)
wheals [Mon, 25 Jan 2021 09:40:20 +0000]
Clarify that malevolent magic applies only to wands (kate-)

4 weeks agoProperly handle elemental and cloud producing facets.
hellmonk [Mon, 14 Sep 2020 21:13:43 +0000]
Properly handle elemental and cloud producing facets.

These mutations are meant to exclude each other so that the player gets at most one elemental and at most one cloud facet. Formerly, this took advantage of mutations with a single mutlevel to handle the check, but that doesn't work anymore. This is as quick and dirty a fix as I could manage, since I plan on looking at this again for the tier 3 mut pr.

4 weeks agoNew tier 2 demonspawn facet, malevolent magic.
hellmonk [Mon, 14 Sep 2020 20:30:41 +0000]
New tier 2 demonspawn facet, malevolent magic.

When a demonspawn with this facet casts a spell, they also try to paralyze enemies in a radius equal to the mutation level around them. The effect's power increases with spell level and checks magic resistance, and evocables will also trigger the effect once the player reaches the final rank of the facet. With luck, this should encourage some interesting spell positioning and use (without encouraging players to use very low level spells exclusively for the proc chance too much).
Rank 3 includes evocables so it isn't a completely worthless facet for berserkers. I think it probably feels too bad to lose an entire T2 facet for a choice made at game start. Aside from that, there are lots of balance knobs that can be tweaked. I'm very unsure of how good the effect ends up being across a full game, but it's very simple to adjust the paralysis power or duration, or the effect radius, if necessary. The flavor's kind of thin, too, so feel free to change that.

4 weeks agoAdjust the icemail facet.
hellmonk [Mon, 14 Sep 2020 01:53:59 +0000]
Adjust the icemail facet.

While the icemail itself was very cool and powerful, the previous two ranks of the facet were relatively boring, and freezing cloud immunity was an especially odd choice given that the facet did not create clouds. This rework splits icemail in half across ranks 2 and 3 of the facet and reduces the total AC to 8. A new mutation, Condensation Shield, is added for the first rank, providing 4 SH that dissipates under the same conditions as icemail. This should keep the facet's role relatively intact without buffing it too much lategame; total defenses provided are 4 SH and 8 AC at rank 3.
Because the monster enchantment for icemail also uses ICEMAIL_MAX, I buffed gelid demonspawn base AC by 2 to compensate for their reduced icemail AC.

4 weeks agoRemove convection.
hellmonk [Sat, 5 Sep 2020 03:21:00 +0000]
Remove convection.

Don't melt icemail or ozocubu's armour when flying over lava. This incredibly niche interaction was, as far as I can tell, the only non-damage source that melted icy enchantments. There's not really a compelling gameplay reason for it to do that.

4 weeks agoRevisit the spiny damage formula.
hellmonk [Sat, 5 Sep 2020 03:04:07 +0000]
Revisit the spiny damage formula.

It's not worth making the formula that much more complicated. Here is a simpler one that should still be acceptable earlygame and is slightly worse at high experience levels.

4 weeks agoRework Demonic Guardian.
hellmonk [Sat, 5 Sep 2020 02:53:53 +0000]
Rework Demonic Guardian.

Previously, this facet used an extremely bad tension formula to determine whether or not to summon a guardian. It also had a unique time schedule that practically guaranteed the first rank of the mutation very early and usually pushed the second and third ranks very late. The result was an easily gamed mutation that turbo stomped early dungeon and then kept summoning imps until vaults or later.
This rework ignores tension altogether; instead, the mutation has a chance to activate whenever the player takes damage (guaranteed if the damage is greater than half max hp or if the player's health is critically low) and summons a demon whose tier is partially based on experience level. The variety of potential guardians is expanded a bit as well. Finally, the time schedule is brought into line with every other tier two facet in the game.

4 weeks agoRework Ignite Blood.
hellmonk [Sat, 5 Sep 2020 01:31:24 +0000]
Rework Ignite Blood.

The third rank of the ignite blood facet is very cool, but the first two ranks are boring. Split the power of the actual blood igniting part over all three ranks of the facet - an increasing chance to ignite blood and longer duration flame clouds with each rank. Any rank of ignite blood also confers flame cloud immunity, since that's kind of necessary to use the mutation.

4 weeks agoRework Spiny.
hellmonk [Fri, 4 Sep 2020 03:29:21 +0000]
Rework Spiny.

The previous spiny rework scaled its damage heavily with xl to reduce earlygame damage. While that change was well-intentioned, it made spiny 2 and 3 feel underwhelming. This commit puts a little power back into the upper mutation levels and reduces the level scaling somewhat, at the expense of making the formula messier.

4 weeks agoRework the foul stench facet.
hellmonk [Fri, 4 Sep 2020 02:59:27 +0000]
Rework the foul stench facet.

This facet had a notoriously useless-on-receipt rank 1 mutation and some very strange mechanics under the hood. This commit takes the rrot mutation out of the facet. The facet will now provide foul stench at every rank, with activation chances rescaled accordingly. Since the player needs to be immune to their own clouds, any rank of foul stench confers rot immunity. The facet no longer makes attackers sick and can now place miasma on any attack that deals damage, not just ones that hit for more than 4 dam.

[committer's note: rrot was removed in the meantime anyway, so
substitute "miasma immunity" for "rot immunity/rrot".]

4 weeks agoReorder the mana link facet.
hellmonk [Fri, 4 Sep 2020 01:35:42 +0000]
Reorder the mana link facet.

Provide boosted mp regeneration first, when it's most likely to matter, then give spirit shield second. Mp regen earlier might make it more useful as mp regen rather than as pseudo hp-regen, though overall the change should be and is intended to be a nerf.

The third rank of this facet still leaves something to be desired and has a bad interaction with posion damage (specifically, can kill the player at "safe" levels of poison by redirecting their hp regen), but cannot be moved before spirit shield for obvious reasons. I hesitate to replace it with either additional mp regen or a mana vamp effect because that gives this facet even more overlap with other regen boosting facets. Someone should make gspirit work on poison damage, but that is out of scope for this rework.

4 weeks agoThe future
wheals [Thu, 14 Jan 2021 21:24:49 +0000]
The future

4 weeks agoMark an assuary enterance as transparet 2
ukdong99 [Wed, 30 Dec 2020 01:14:22 +0000]
Mark an assuary enterance as transparet 2

Resolves another vault which has the same issue in #1639

4 weeks agoRemove Evocation scaling from Spectral pull/1698 simplispectral 1698/head
Nicholas Feinberg [Sat, 23 Jan 2021 17:45:45 +0000]
Remove Evocation scaling from Spectral

Currently, the spectral brand is the most complex weapon ego in the game.
It has two significant drawbacks:

1. It can significantly increase the damage the wielder takes, since the
spectral weapon shares damage with the player.
2. It requires Evocations training to use.

Both due to the overall complexity and the perceived weakness of this
brand, I'm inclined to simplify by removing one of these effects. Pain
sharing makes the brand a bit harder to evaluate, since most brands have
no downside at all vs an unbranded weapon (chaos being the notable exception).
Evocations scaling has several other problems, though:

- It confuses players on a regular basis. People miss the subtle messages about
  'ineptitude' and fail to understand why the spectral weapon isn't triggering -
  'is it broken?' Some of them ask other players and get the confusion sorted out
  but others, presumably, just continue thinking it's bugged!
- It's the only effect where Evocations training gives benefit to a passive effect,
  rather than an evocable item or ability. This isn't the end of the world, but it
  is an odd exception.
- Evocations skill is currently very useful for most characters even without this
  - most games present a large number of powerful, Evocations-scaling items that
  strongly incentivize Evocations training. It's somewhere between unuseful and
  counterproductive to add one more.

It's possible that the damage sharing effect should also go away or be reduced
in magnitude - the downsides of "need to mess with positioning" and "don't have
another brand" might be enough to balance spectral. We'll see!

4 weeks agoTweak summoning titles
Nicholas Feinberg [Mon, 25 Jan 2021 02:18:15 +0000]
Tweak summoning titles

Now that the high-level demon summoning spells are gone, get rid of
the summoning titles that referenced them in favor of the agnostic

4 weeks agoRemove Summon Demon
Nicholas Feinberg [Tue, 29 Dec 2020 17:13:05 +0000]
Remove Summon Demon

As with Summon Greater Demon (see previous commit, true believers!),
there are quite a lot of summoning spells around level 5, and this is
the only one that duplicates a Makhleb invocation. For the sake of fun
choices and variety between games, let's send this one straight to Hell.

4 weeks agoCheckwhite
Nicholas Feinberg [Sun, 24 Jan 2021 22:00:43 +0000]

4 weeks agoMake nets finite again
Nicholas Feinberg [Sat, 16 Jan 2021 17:42:22 +0000]
Make nets finite again

Too brutal to give gnolls infinite nets, probably.

4 weeks agoGive monsters infinite ammo
Nicholas Feinberg [Fri, 1 Jan 2021 23:22:12 +0000]
Give monsters infinite ammo

Don't allow running monsters out of ammo, and make their projectiles
always mulch. Remove extremely spammy 'returning' boomerang animations
from monsters.

This is a buff to cyclopes and stone giants; we can nerf them again in
various ways if it proves to be too much.

4 weeks agoRetheme /disintegrate -> /mindburst
Nicholas Feinberg [Tue, 29 Dec 2020 17:55:30 +0000]
Retheme /disintegrate -> /mindburst

Disintegration is a fun effect (everyone loves things blowing up),
but it's always been a weird exception in certain ways. MR (now Will)
was always the stat that resisted debilitating effects "plus Disintegrate",
and there was never any real flavour justification for that. Why could
you resist Disintegrate but not, say, Energy Bolt? It makes it hard for
players to develop intuitions about what affects what.

So let's retheme. Instead of an abstract Disintegration, Mindburst
specifically launches a psychic attack on the target's brain, attempting
to blow them apart from the inside. It should be a bit more intuitive why
this is affected by Willpower (since it's a mental attack), and it still
preserves all the explosive fun of the original.

For the sake of intuition, the new Mindburst does *not* affect mindless
creatures. This mostly shouldn't matter - there aren't that many mindless
creatures that you wouldn't want to disintegrate anyway. (It might be a bit
rough if you're up against an early centaur skeleton, maybe.)

Great Orb of Eyes' Disintegrate spell has been changed to use Mindburst as

4 weeks agoIncrease Stone Arrow damage by 2
Nicholas Feinberg [Wed, 30 Dec 2020 16:15:50 +0000]
Increase Stone Arrow damage by 2

Stone Arrow's damage compares very poorly to other spells of the same
level or below. Even compared to Sandblast, Stone Arrow (a level 3 spell)
does similar or less damage against most monsters. Rocks aren't that high
a cost!

4 weeks agoReduce gnolls attributes to human
Nicholas Feinberg [Sat, 23 Jan 2021 18:08:10 +0000]
Reduce gnolls attributes to human

The first several attempts at creating a gnoll species ended up
making something that was both weak and unfun. When the modern gnoll
was created (see d2df3b7b5 / 8a4a258fa7 ), they were pushed to be
significantly stronger - and it worked! A bit too well, in fact.
Gnolls are currently powerhouses from D:1 to Z:5.

Let's pull them back a bit, reducing their strength, intelligence and
dexterity to human baseline. I expect they'll still be quite strong,
but perhaps just a notch less ridiculous.

I'm not averse to weakening them further in future, but this seems
like a simple way to start.

4 weeks agoUn-de-enhance Scarf of Shadows spells
Nicholas Feinberg [Sat, 23 Jan 2021 18:00:37 +0000]
Un-de-enhance Scarf of Shadows spells

Per the original commit (bf280b6766):

    This gives 1 spell de-enhancer, since reduced LOS is very strong
    and allows more spells to be in range at the edge of LOS. If that
    makes this item too weak it can be removed.

The scarf of shadows effect is as strong or stronger for non-casting
characters as for casters, which made it odd that only the latter were
penalized for using it. Overall, after the scarf was changed to only
reduce LOS by 1 instead of 2, the effect was usually not strong enough
to justify both the loss of several AC (vs an enchanted cloak) *and* a
spell de-enhancer. Removing the latter should help make this a more
viable equipment choice.

4 weeks agoShow cloud damage for player spells
Nicholas Feinberg [Sat, 23 Jan 2021 17:30:48 +0000]
Show cloud damage for player spells

This is experimental. It's weird in that it's sort of asymmetric with
the monster versions (e.g. fire crab's flaming cloud), since those
show the impact damage instead. Maybe it's helpful, though?

4 weeks agoDisplay accuracy on ranged targeters
Nicholas Feinberg [Sat, 16 Jan 2021 17:14:44 +0000]
Display accuracy on ranged targeters

This was an oversight. Oops!

4 weeks agoReduce net trap trigger chance
Nicholas Feinberg [Sun, 17 Jan 2021 04:55:58 +0000]
Reduce net trap trigger chance

Since making net traps not run out of ammo, they've become more vicious
than was intended. To mitigate this, give them a 2/3 chance of *not*
triggering when a monster enters them.

It'd be interesting to make them require LoF to hit the player, but
that's an experiment for another day.

4 weeks agoRemove Summon Greater Demon
Nicholas Feinberg [Tue, 29 Dec 2020 16:46:11 +0000]
Remove Summon Greater Demon

There are 6 different level 7 Summoning spells: Summon Hydra, Monstrous
Menagerie, Malign Gateway, Haunt, Spellforged Servitor, and Summon
Greater Demon. As one might expect, there's considerable overlap between
those. In the interest of providing players with meaningful, distinct choices,
we generally prefer to limit overlap between spells.

Summon Greater Demon closely duplicates a Makhleb invocation, reducing the
distinctiveness of both effects. That puts it high on the chop list. In
combination with the removal of the old aura of abjuration -> SGD synergy
minigame, SGD seems like the best spell to cut.

To keep book balance, Haunt moves from the Necronomicon to the Grand Grimoire.
Now every high level book has 4 spells, which seems nice.

4 weeks agoRefactor further
Nicholas Feinberg [Mon, 28 Dec 2020 16:22:57 +0000]
Refactor further

4 weeks agoRewrite LRD setup
Nicholas Feinberg [Mon, 28 Dec 2020 02:03:42 +0000]
Rewrite LRD setup

I believe the only functional change here should be that monsters won't
directly LRD non-player enemies they can't see (which they probably
couldn't anyway?), but there's lots of room for bugs in a change this big.

4 weeks agoNo Marshlight out-of-sight messages (Yermak)
Nicholas Feinberg [Sat, 23 Jan 2021 19:51:41 +0000]
No Marshlight out-of-sight messages (Yermak)

4 weeks agoDisplay Glaciate damage on xv
Nicholas Feinberg [Sat, 23 Jan 2021 16:57:41 +0000]
Display Glaciate damage on xv

And remove support for player-cast Glaciate, since that's long-gone!

4 weeks agoMake fenstriders evil (Snakku)
Nicholas Feinberg [Sat, 23 Jan 2021 16:11:47 +0000]
Make fenstriders evil (Snakku)

Oversight - I was used to this being auto-set from spells!

4 weeks agoAdd missing roll icon (hatsuma)
Nicholas Feinberg [Sat, 23 Jan 2021 16:10:36 +0000]
Add missing roll icon (hatsuma)

4 weeks agoFix death explosion messages
Nicholas Feinberg [Sat, 23 Jan 2021 16:04:37 +0000]
Fix death explosion messages

Broken by 3dd439832fe0f5fe295caad1a2fe3e479a757cda - we'd claim that
players were 'hit from afar by a bloated husk' instead of 'killed by
an exploding bloated husk'. Oops!

From that commit's final line:
> Overall, this code is very bad and probably buggy. I'm sorry.

4 weeks agoFix the depth of a ghost vault (Mantis 12464)
gammafunk [Sat, 23 Jan 2021 13:43:00 +0000]
Fix the depth of a ghost vault (Mantis 12464)

In Dungeon it was only ever placing on D:8, instead of on its intended depth of D:8-D:$.

5 weeks agoFix some error handling for lobby save info
advil [Thu, 21 Jan 2021 17:41:38 +0000]
Fix some error handling for lobby save info

This info was collected asynchronously, but the code didn't do anything
to handle the case where the socket closed before the save info was
fully collected, leading to uncaught exceptions in the logs.

5 weeks agoRemove item_info
advil [Thu, 21 Jan 2021 16:20:03 +0000]
Remove item_info

This type was just a typedef to item_def. It was added in 8f49829c0752,
apparently with the idea that item_info would be used for item_defs that
represented id info, and item_def otherwise. However, this convention
wasn't even documented, let alone enforced by an actual type distinction
(and c++ never added a strict typedef), so it has undergone drift and
largely now exists to confuse people. I could imagine redoing this so
that the type checker will do something, but the id system is also much
less important now than it was at the time of the original commit, so it
seems cleaner just to simplify.

5 weeks agoremove CMD_EAT from colemak
Andrew O'Neill [Wed, 20 Jan 2021 22:36:47 +0000]
remove CMD_EAT from colemak

This is no longer needed since eating is out.

5 weeks agoA bit of 288a49279187 that got lost in editing
advil [Wed, 20 Jan 2021 20:40:21 +0000]
A bit of 288a49279187 that got lost in editing


5 weeks agoClean up logging for full socket buffer
advil [Wed, 20 Jan 2021 20:26:35 +0000]
Clean up logging for full socket buffer

When holding down a key in webtiles for something that takes a long
enough time to outpace the key repeat (either because it is
cpu-intensive or just because it imposes a delay), the buffer used to
communicate with the crawl instance can fill up, which triggers an
exception (and drops the key). When this happens, it is quite spammy in
logs on live servers. Ideally this could be prevented from happening in
the first place (e.g. any time this can happen on autofight/autofire is
a case that should be better optimized), but it will inevitably happen
from time to time, and doesn't need to fill up the logs quite so much
when it does; the stack trace is not informative.

For future reference, the full stack trace for a single case of this
will look something like (with minor differences between OSs):

2021-01-20 14:05:25,059 WARN: #0     Error while handling JSON message (''{"msg":"key","keycode":9}'')!
Traceback (most recent call last):
  File "/Users/advil/repos/crawl/crawl-ref/source/webserver/", line 869, in on_message
  File "/Users/advil/repos/crawl/crawl-ref/source/webserver/", line 897, in handle_input
  File "/Users/advil/repos/crawl/crawl-ref/source/webserver/", line 109, in send_message
    self.socket.sendto(utf8(data), self.crawl_socketpath)
OSError: [Errno 55] No buffer space available

5 weeks agoReduce webtiles redraws per key input by 2
advil [Wed, 20 Jan 2021 17:38:37 +0000]
Reduce webtiles redraws per key input by 2

The previous behavior stems for a fairly old (729eb1357d24d1d5) decision
to send a redraw on each input mode change. Since every keypress swaps
between MOUSE_MODE_NORMAL and MOUSE_MODE_COMMAND, holding down a key
could trigger a lot of unnecessary redraws, and for example with no ammo
could max out the process's cpu usage (at least on a `make profile`
build).  I'm not actually sure why a webtiles redraw (which mainly send
the map and the player) is needed on any case of changing input mode,
but for now I'll be conservative -- and this is the case that shows up
in profiling.

As it happens, there's still at least one webtiles redraw per key input,
in getch_ck. But, the profiling with just this one doesn't seem like a
problem by itself. It's possible that redraw() itself has some issues
that could be addressed -- sending both the player and the map equally
eat up a lot of cpu with repeated calls.

5 weeks agoRefactor write_dgl_status_file
advil [Tue, 19 Jan 2021 21:41:12 +0000]
Refactor write_dgl_status_file

Just a code cleanup.

5 weeks agoDon't auto-drop ?tele in Gauntlet (Yermak)
Nicholas Feinberg [Mon, 18 Jan 2021 17:35:29 +0000]
Don't auto-drop ?tele in Gauntlet (Yermak)

For purposes of auto-selecting items for drop with `d,`, ignore temp
conditions such as 'being in Gauntlet'. This should discourage accidents.

5 weeks agoAdjust timing for evoked unrand HP/MP costs
Kate [Sun, 17 Jan 2021 03:37:17 +0000]
Adjust timing for evoked unrand HP/MP costs

As with the Majin-Bo in 0fe236c, reduce HP and MP as a cost before activating
the ability, and refund it if the ability is aborted.

5 weeks agoDon't show Fridge accuracy (lici)
Nicholas Feinberg [Sun, 17 Jan 2021 00:08:25 +0000]
Don't show Fridge accuracy (lici)

Since it always hits!

6 weeks agoAdd a missing of (Aliscans)
Edgar A. Bering IV [Fri, 15 Jan 2021 15:44:29 +0000]
Add a missing of (Aliscans)

6 weeks agoDon't remain curled while delayed (12443)
Edgar A. Bering IV [Fri, 15 Jan 2021 05:43:18 +0000]
Don't remain curled while delayed (12443)