Don't crash when swapping places with a monster.
Insubstantial wisps tweaks: less blink/ac/ev, more hp/hd, static discharge

Wisps are odd, weak monsters as stands. They have high elemental resists and
decent EV, but next to no health. They've got a band, but have af_blink and the
blink spell itself, so the end result is a lot of wisps fluttering about.
They're unique fodder for their placement in Swamp, a handful of vaults, or the
Foxfire card, certainly, but they're autofight-fodder more than anything else.

EV goes from 20 to 18, AC from 5 to 4, bands go from 4-7 to 3-6, and their
blink-spell frequency is reduced by a third. This is meant to reduce their more
annoying aspects of being a flighty weak blob, and is more than compensated by
two more HD (hooray accuracy), a move from 7-17 health to 17-23 health, and a
moderately frequent static discharge cast. It's cool to use a spell otherwise
hidden on Pan Lords and Ghosts, and as a cleave-like burst of minor elec damage
it's neat against weakling allies or with Foxfire (and hooray for subtle
downsides to cards due to the splash damage). It is also an abstract tribute to
the dearly departed vapour, in a more palatable manner, and the low HD + the
blinking should avoid it hurting other monsters too much (the discharge avoids
the other wisps, since they're rElec++).

In arena, they outpace alligators, are barely outpaced by raven bands, and are
a 30-60 with spriggan rider bands. It's fine for them to be not very strong,
just a bit more noticeable. Hopefully.

(I have no idea if the discharge should be magical or natural. They still have
low health, so it's hard for the antimagic to matter, and while they might be
some kind of weird gas more than a piece of weird magic they also bloody moan.
For now, I'm setting it as natural because their blink was previously natural.)
Try to bottle before chopping when confirm_butcher == never.
Clarify that vampires can butcher in failure/prompt messages.
Sort butcher prompt by corpse quality.
Add a quote for starcursed masses.
Webtiles: Do device pixel scaling better, fixing Firefox rendering.

Non-integer cell sizes are bad, which this amounted to with
devicePixelRatios like 1.3333333730697632 in zoomed-in Firefox.

Gruuunt
Update auras when clouds change (#9259)

The following sequence of actions, as a follower of TSO or Dithmenos,
would leave parts of LOS unaffected by halo or umbra:

 1. Read a scroll of Fog: LOS changes but agrid does not, so there
    are out-of-LOS cells that are still affected by the aura.
 2. Take a step: this updates agrid, taking into account the fog,
    so now the cells you can't see are no longer aura-ed.
 3. Single-wait for the fog to expire.  This leaves the agrid unchanged
    again, so the unaura-ed cells from step 2 remain unaura-ed despite
    now being visible

    (Note that waiting too long in step 3 (e.g. with 5-wait) could cause
     auras to be updated for other reasons, hiding the problem).

Use los_terrain_changed instead of invalidate_los_around: the former
calls the latter, but also calls invalidate_agrid, so steps 1 and 3
keep auras in sync with LOS.
Clarify.

I find the second version clearer despite the double negative, probably
because "has no effect" is stronger than "is <not> effective".
Fix occasionally incorrect return value for monster mass ench functions.

I don't think this is ever relevant, but the function would return 0 if
the last monster(s) the spell attempted to affect resisted even if the
player and/or other monsters were affected.

Having to fix the same bug in three places is a bad thing, for that
matter.
Make Cigotuvi's Embrace degrade over time

To discourage degenerate tactics.

Might be worth decreasing BONE_ARMOUR_DIV from 3 to 2 (to increase
ac:corpse ratios), and/or simplifying things by removing the
on-hit stuff and just making it degrade over time. (but what of
player-monster symmetry...?)
Use a constant more
Make phantom mirros sac love incompatible (Brannock)
New spell: Singularity.

L9 Tloc. Places a monster like Fulminant Prism that draws creatures that are
within its radius closer to itself, pulls harder the closer they are, and
deals damage to creatures that are sufficiently close. Lasts ~6-8 turns,
dependent on power.

Doesn't warp allies.
Can a message.
Monster-castable Singularity.

Admit it - the moment you read "will warp *you*" in the commit messages,
you knew this was coming.
Implode singularities if their caster dies.

Not going to be tremendously relevant yet, but if we get, say, liches
casting the spell, it will be important.
Spellbook: the Plane Papyrus.

It is a rare Translocations book containing the high level spells from
Warp: Dispersal, Controlled Blink, Disjunction, and Singularity. It also
gets Malign Gateway (which is level 7 Summoning/Translocations).

The Book of the Warp loses these spells, and gains back Recall (which
was removed to make room for its other glut of spells) and Summon
Forest.

Wizardry loses Dispersal, with no replacement. Rethinking the contents
of that book altogether seems to be a good idea.
Generalise collision damage; use in more places.

Knocking something back into a solid feature or another creature now
hurts it; this includes Force Lance, the fan of gales, and other things
that knock you back.

This also handles cases of multi-square knockbacks more gracefully.

Possible extra case that isn't handled right now: trampling.
Tinker with Force Lance.

It is now L4 Conj/Tloc and appears additionally in the Book of the Warp;
it is slightly more accurate (as accurate as IMB, which I think is
acceptable based on its short range), and can knock back enemies up to
four tiles at max power (50% chance). It's also more likely to push
heavier targets at higher power.

Flying targets are more impacted - they have nothing to brace themselves
against.