Simplify.
Use YOU_KILL more consistently for Qazlal protection.

|amethyst pointed out that cloud_struct::whose and cloud_struct::killer
might be inconsistent for, say, a reflected puff of flame that goes over
water. I think that ::set_killer and ::set_whose take care of that, but
making it more consistent is better code-wise anyway.
Regenerate prebuilt yaccage
Redraw EV after Elivilon Purification (8947)

EV can change in elyvilon_purification() when curing 'petrifying'
status. Mark it for redraw.
Add croikle to credits and mailmap.

And use the weird Mc/Mac collation rule for the former.
Expose a monster's "speed description" in clua (gw).

This is the same "fast", "very slow", etc. description that appears on
the xv screen.
Whitespace fix.
notify the user where the webtiles server is listening
Don't destroy weapons when xom/wizmode weapon swap fails (#4606)

We were destroying the wrong copy of the player's item, eliminating
the one held by the player and leaving the other copy unlinked.
clua: Monster res_fire(), etc. (qw).

Right now it covers rF, rC, rElec, rPois, rN, and rCorr.
Don't unwield swapped weapons until we know it works.

This avoids some unwield/wield messages when the monster turns out
to not accept the player's weapon.
Allow Xom to upgrade his own god gifts.

Not that I expect this to ever matter all that much.
Make Animate Remains cancel if Animate Skeleton would (#8070).

The last time I tried to improve the interface for LOS-wide revival didn't
go so well, though, so I won't change the behavior at *** and above.
Magic-related clua functionality (qw, gw).

Includes item:spells() (lists the spells available in a spellbook);
spells.level() (lists the level of a spell); you.mem_spells() (provides
a table of currently memorisable spells keyed by their letter); and
you.spell_levels() (returns the current number of spell levels
available).
Finish up the clua spells interface (#7489).

Adds spells.fail_severity(), returning 0-3 corresponding to the fail
colours; spells.hunger(), in bars; spells.power(), in bars;
spells.max_power(), in bars; spells.max_range(); spells.min_range();
targetting booleans; spells.god_likes(), spells.god_hates(), and
spells.god_loathes().
clua you.status() (qw, gw).

This gives the same comma-separated list available in xv, dumps,
milestones, etc.
clua: Allow e.g. you.status("finesse"), returning a boolean.
clua: spells.letter, to get a memorised spell's letter.

Nil if the spell isn't memorised.
Fix the floor tiles in a temple vault
Don't let Trog gift the Majin-Bo (Prism)