summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/mon-util.h
Commit message (Collapse)AuthorAgeFilesLines
...
* Add more minor cosmetic fixes.dolorous2009-01-031-1/+1
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8161 c06c8d41-db1a-0410-9941-cceddc491573
* Make monster behaviour in arenas smarter, allow delay:N in arena spec to set ↵dshaligram2009-01-021-1/+2
| | | | | | arena_delay. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8129 c06c8d41-db1a-0410-9941-cceddc491573
* Fixed 2481704: Travel stopping for spellcasting monsters without LOSj-p-e-g2009-01-021-0/+1
| | | | | | | | spells behind glass. Fixed 2174517: V giving information about unknown items in stashes. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8128 c06c8d41-db1a-0410-9941-cceddc491573
* Make the tests for icy and skeletal monsters in Lee's Rapid dolorous2008-12-311-0/+1
| | | | | | | Deconstruction more generic. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8050 c06c8d41-db1a-0410-9941-cceddc491573
* Add miscellaneous minor fixes.dolorous2008-12-311-5/+6
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@8034 c06c8d41-db1a-0410-9941-cceddc491573
* Got rid of setup_dragon(), moving it's functionality into setup_mons_cast() andzelgadis2008-12-141-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | mons_spells(), and added the new spells Fire Breath, Cold Breath and Draconian Breath to trigger that functionality. Also added the new spell Acid Splash to replace monstuff's _plant_spit(), and Sticky Flame Splash, which is exactly the same as Sticky Flame except for the messages it gives and when it makes noise (monsters now spit sticky flame instead of breathing it). All things that were handled as monster special abilities are still handled as such, and were just changed to manually invoke mons_cast(). The spell messages in dat/database/monspell.txt can now take advantage of a new substitution, "@target@", which is expanded into the spell's target. Added the spell flags SPFLAG_INNATE, for monster spells which are innate even when the monster is a priest or wizard, and which can be used by them when silenced, and SPFLAG_NOISY, for spells which produce noise even when used by monsters other than priests or wizards. Added the monster class flags M_SPELL_NO_SILENT, for monsters which aren't wizards or priests, yet still can't use spells if silenced (currently only used for Geryon blowing his horn to summon beasts), and M_NOISY_SPELLS, for monsters which can cast spells when silenced, yet whose spells make noise when not silenced (currently only used by curse skulls and Murray). git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7828 c06c8d41-db1a-0410-9941-cceddc491573
* Spellcasting allies never picked up ranged ammo (because SPELL_NO_SPELLharanp2008-12-121-1/+1
| | | | | | | was considered ranged.) Improved the logic somewhat. Fixes 2398859. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7813 c06c8d41-db1a-0410-9941-cceddc491573
* Added BEAM_CHAOS and changed chaos launchers/ammo to use that. Currently onlyzelgadis2008-12-081-1/+17
| | | | | | | | | | | | | | | | | | | | | | | | | chooses a different, random beam flavour (which undoudtedly needs to have their relative weights changed after playtesting) for each square it passes through, but in the future it might do things like bounce off walls at weird angles or animate weapons left laying on the ground. Added CLOUD_CHAOS, though it doesn't do anything yet. Monsters which are marked summoned or otherwise given ENCH_ABJ can also be marked with the type of summoning that happened, which is stored in the until-now-unused ENCH_SUMMON. This is useful for figuring out if a monster has ENCH_ABJ but isn't really summoned (like fire vortices created by Fire Storm or dancing weapons created by Tukima's Dance) so that they won't be affected by abjuration. It's also currently used to do a different "dissapears in a puff of smoke" messages for summoned monsters based on the summoning type, so that monsters summoned by Shadow Creature "dissolve into shadows" and don't leave behind any clouds, and temporary god gift monsters from good gods "dissolve into sparkling lights". In the future it might be used to do temporarily animated corpses, which turn back into a corpse when killed or when the animation runs out. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7778 c06c8d41-db1a-0410-9941-cceddc491573
* Implement harpyes. They ...j-p-e-g2008-12-031-5/+6
| | | | | | | | | | | | | * appear in bands of 2-5 * use bat like movement * may steal (= destroy) the player's food. Still needs a tile. Also, actually use the M_BATTY flag instead of hardcoding batty monsters. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7734 c06c8d41-db1a-0410-9941-cceddc491573
* Add some chaos attacks/weapons. Missiles and launchers of chaos fire a bolt ofzelgadis2008-12-011-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | a random type (including enchantments, which isn't so good since they don't have a visible beam). Might want to add BEAM_CHAOS and make it a beam of that. Weapons of chaos either does a random brand effect (fire, poison, etc) or a random chaos effect (which includes cloning the attack victim). The AF_CHAOS monster attack flavour either does a random monster flavour or chaos effect (same chaos effects as for weapons). The relative frequency of all the different effects/brands/flavours no doubt needs adjustment. All of this is currently only available via Xom. 10% of all common-type demons sent in by Xom will be chaos spawn (the only kind that use AF_CHAOS, and never randomly generated otherwise). All item gifts from Xom which are generated with a brand will have their brand switched to chaos (this should probably be made to happen less than 100% of the time). And finally one of Xom's bad acts is to upgrade a non-branded weapon of a nearby hostile monster to a chaos brand (this might need to be made less (or more) common). Oh, and if a randart has a brand which would be identified if it were merely an ego weapon, it now identifies the RAP_BRAND property of the randart. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7704 c06c8d41-db1a-0410-9941-cceddc491573
* Place external loot chamber for ziggurat levels with jellies.dshaligram2008-11-251-1/+3
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7625 c06c8d41-db1a-0410-9941-cceddc491573
* Fix bug 2298697: for dealing with weapons of returning which fail to return,zelgadis2008-11-221-0/+1
| | | | | | | | | | mons_throw() should have been using the mslot of the weapon, not weapon's mitm index. Introduces the new functions get_mon_equip_slot() and item_to_mslot(). git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7530 c06c8d41-db1a-0410-9941-cceddc491573
* Add the attack types AT_PUNCH and AT_KICK, and make draconian monks use dolorous2008-11-171-0/+2
| | | | | | | | | them, since they don't get weapons. These are currently identical to AT_HIT, except that they don't use a weapon, as with the already existing AT_TAIL_SLAP. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7454 c06c8d41-db1a-0410-9941-cceddc491573
* Make monsters' glowing quality a class flag, instead of hardcoding a dolorous2008-11-081-1/+1
| | | | | | | list of glowing monsters. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7418 c06c8d41-db1a-0410-9941-cceddc491573
* Add more minor cosmetic fixes.dolorous2008-11-071-1/+1
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7408 c06c8d41-db1a-0410-9941-cceddc491573
* Revert Twisted Resurrection's abominations' being unable to use stairs, dolorous2008-11-011-1/+0
| | | | | | | as it weakens the spell too much. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7326 c06c8d41-db1a-0410-9941-cceddc491573
* Simplify.dolorous2008-11-011-1/+1
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7324 c06c8d41-db1a-0410-9941-cceddc491573
* Disallow permanent abominations created via Twisted Resurrection from dolorous2008-11-011-0/+1
| | | | | | | | taking stairs, and consolidate the logic for this and other stair-ignoring undead in a monsters::can_use_stairs() function. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7323 c06c8d41-db1a-0410-9941-cceddc491573
* Properly handle zombified dual-wielding monsters.dolorous2008-10-161-1/+1
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7264 c06c8d41-db1a-0410-9941-cceddc491573
* Replace Yred's "Control Undead" power with "Enslave Soul", as proposed dolorous2008-10-161-0/+5
| | | | | | | on crawl-ref-discuss. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7263 c06c8d41-db1a-0410-9941-cceddc491573
* Allow checking regeneration ability at the level of individual monsters.dolorous2008-10-151-0/+2
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7254 c06c8d41-db1a-0410-9941-cceddc491573
* Add yet more minor cosmetic fixes.dolorous2008-10-071-1/+1
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7170 c06c8d41-db1a-0410-9941-cceddc491573
* Revert previous changes, as they don't seem that useful, given that most dolorous2008-10-071-2/+1
| | | | | | | of the work involving speed uses speed increments. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7167 c06c8d41-db1a-0410-9941-cceddc491573
* Expand monster speed handling to work on the level of individual dolorous2008-10-071-2/+3
| | | | | | | monsters. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7166 c06c8d41-db1a-0410-9941-cceddc491573
* Expand mons_itemuse() to work at the individual monster level, as well.dolorous2008-10-061-11/+12
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7152 c06c8d41-db1a-0410-9941-cceddc491573
* Add yet more cosmetic fixes.dolorous2008-10-061-2/+2
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7151 c06c8d41-db1a-0410-9941-cceddc491573
* Expand handling of monster intelligence and zombifiability to work on dolorous2008-10-061-1/+5
| | | | | | | the level of individual monsters. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7148 c06c8d41-db1a-0410-9941-cceddc491573
* Adjust monster habitats again. Remove the M_AMPHIBIOUS flag, and dolorous2008-10-051-11/+19
| | | | | | | | | | | | | replace it with two new habitats: HT_AMPHIBIOUS_LAND and HT_AMPHIBIOUS_WATER, to indicate which habitat a monster prefers. This effectively gives amphibious monsters primary and secondary habitats; check both when trying to place such monsters. With these changes, merfolk can be placed on land properly (via wizard mode's &M) when no water is around. The one monster that can move through rock is affected as well: rock is its primary habitat, while land is its secondary one. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7142 c06c8d41-db1a-0410-9941-cceddc491573
* Fix 2063470: =f inscription preventing wielding of stonesj-p-e-g2008-10-041-0/+1
| | | | | | | | | | | | | | | | Improve exclusion los behaviour. * now takes into account what the player knows of the map * don't autoremove exclusions if you don't know the monster died * the los gets updated as the player explores the area For some reason this doesn't work when you dig into an excluded area. FR 2006559: Sort monsters in description menu (?\) using the same measure as the monster list does. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7132 c06c8d41-db1a-0410-9941-cceddc491573
* Simplify checking for monsters that are actually shapeshifters, and dolorous2008-09-261-0/+1
| | | | | | | don't allow those in orc form to become Beoghites' followers. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@7006 c06c8d41-db1a-0410-9941-cceddc491573
* Remove pre-Stone Soup change history from source files, and push it allj-p-e-g2008-09-141-4/+0
| | | | | | | | | | into a file crawlhistory.txt in docs/obsolete. I used a perl script to do this under the assumption that all these change logs used the same system following the keyword "Change History". git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6930 c06c8d41-db1a-0410-9941-cceddc491573
* Add the flaming corpse monster, as specified in FR [1746720], with dolorous2008-09-061-1/+2
| | | | | | | | | | | | | | | several tweaks: its resistances are the inverse of the freezing wraith's, but with sticky flame resistance added, and its console character is a lightred 'z'. As specified, it uses a sticky flame melee attack: AF_NAPALM. Note that it needs a tile. Also, expand the list of servants that Yredelemnul can send, as specified by Lemuel awhile ago (including the flaming corpse). This expansion allows the sending of more than one creature per instance, currently only used for Yred's flying skulls. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6873 c06c8d41-db1a-0410-9941-cceddc491573
* Implemented monster spell miscasts. Spell miscasting is now handledzelgadis2008-07-291-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | by the MiscastEffect class, which has helper methods to make most of the non-helper code agnostic with respect to whether the miscaster is the player or a monster. Mummy death curses now affect monsters, and Zot traps now directly affect friendly and good-neutral monsters. In wizard mode you can force the player or a monster to miscast by targeting it and pressing 'M'. Todo/issues/notes: * Clouds now have a killer_type in addition to a kill_category. * There aren't any divination monster miscast effects yet. * Many of the harmless message-only miscast effects are missing monster messages. * If a monster actually miscasts a spell (not getting a mummy death curse or setting off a Zot trap) and this kills both the monster and the player then the wrong monster will be listed in hiscore entry. Since monsters can't do true spell miscasts yet, this can wait. * There was old, non-functioning code making Zot traps heal, haste or turn invisible hostile monsters that triggered it. I fixed it and then commented it out. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6723 c06c8d41-db1a-0410-9941-cceddc491573
* Massive change from using x and y to using coord_defs(). Not quite tested,haranp2008-07-221-1/+1
| | | | | | | | most likely broken in some places and might break tiles. Will fix in the near future. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6636 c06c8d41-db1a-0410-9941-cceddc491573
* Pan overhaul:dshaligram2008-07-201-0/+3
| | | | | | | | | | | | | | | Allow monsters (including player ghosts) to use fire storm and ice storm, give Lom Lobon ice storm and Cerebov fire storm. Lom Lobon also gets conjure ball lightning. Mnoleg gets Summon Horrible Things instead of polymorph/shadow creatures. Gloorx gets symbol of torment instead of summon demon. Hellion hellfire burst now behaves the same way for both hellion vs player and hellion vs monster. Merged monster vs player and m vs m handling for direct spell effects such as smiting. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6621 c06c8d41-db1a-0410-9941-cceddc491573
* Give amphibians movement speed boost in water, give deep elf master archers ↵dshaligram2008-07-131-0/+46
| | | | | | a very fast missile attack. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6526 c06c8d41-db1a-0410-9941-cceddc491573
* After some pointers from jpeg, rework the routine for monsters' leaving dolorous2008-06-281-1/+0
| | | | | | | | | the level to use the pathfinding routines for patrolling. The monsters still sometimes disappear when near the exit instead of on it, which needs to be fixed, but it's vastly closer to working properly. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6186 c06c8d41-db1a-0410-9941-cceddc491573
* Clean up monster pacifying a bit: don't allow it to work for stationary dolorous2008-06-231-11/+10
| | | | | | | monsters, or for monsters that aren't holy, natural, undead, or demonic. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6085 c06c8d41-db1a-0410-9941-cceddc491573
* Add various god gift-related cleanups.dolorous2008-06-191-1/+0
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5966 c06c8d41-db1a-0410-9941-cceddc491573
* More progress on making pacified monsters leave the level. They'll now dolorous2008-06-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | find the nearest exit, and disappear once they reach it. There's a new travel target, MTRAV_EXIT. Notes: This is currently very simplistic. The monsters still don't use pathfinding, so if they're blocked, they'll just stand there again. With shaft traps, the monsters shouldn't try to go directly to the target, since they can't disappear at the same time they fall through to another level. With teleport traps, they should only go to them when all paths to exits are blocked, and they shouldn't disappear when they hit them. There may also be issues if a monster hits one and reappears nearby, since it won't be far enough outside the player's LOS to disappear. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5935 c06c8d41-db1a-0410-9941-cceddc491573
* Add an unfinished attempt at making pacified monsters leave the level. dolorous2008-06-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BEH_LEAVE replaces BEH_INVESTIGATE, which wasn't being used. Notes: Since leaving the level is similar to fleeing in some ways, monsters leaving the level share some behaviors with fleeing monsters: they are less likely to shoot; they are more likely to use scrolls of blinking or teleportation; and leaving eyeballs won't paralyze you or drain your MP. Leaving the level is also similar to lurking in some ways, so it won't be interrupted by noticing something, just as with lurking. Getting far enough away from a monster will make it leave the level (i.e., die with KILL_DISMISSED and MF_HARD_RESET, so it takes its stuff with it), as will getting it into a grid it can submerge in, at which time it will submerge and leave the level. Neither of these apply to monsters that can't move, of course, except for mimics, since they can teleport. Incomplete things (sorry for the mess): I still haven't figured out how to make a monster target a dungeon feature (in this case, the nearest level exit, the nearest teleportation or shaft trap, or the nearest submersible grid), so, currently, a pacified monster will just go to where its last target was and stand there until/unless one of the aforementioned level exit scenarios occurs. Pacified monsters can still cast summoning spells. Whatever they summon is neutral, just as they are, but such summons can still get in the way. (Try pacifying an orc high priest, for example.) Maybe summoning should be disabled or have its chance lowered for neutral monsters in general, unless something's in their way? Speaking of targeting, the leaving-by-submerging scenario should occur only if there's no other way to reach the target: all ways off the level are blocked, the monster's habitat is water and it's not amphibious, the monster's habitat is lava, or (possibly) the monster's habitat is rock. There should be a message if the monster leaves the level, but what about the ones that do so out of the player's LOS? git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5924 c06c8d41-db1a-0410-9941-cceddc491573
* Make yet more use of wrappers.dolorous2008-06-171-0/+2
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5900 c06c8d41-db1a-0410-9941-cceddc491573
* Add yet more cleanups.dolorous2008-06-171-1/+2
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5899 c06c8d41-db1a-0410-9941-cceddc491573
* Use wrapper functions more often when checking monster behaviors.dolorous2008-06-161-0/+2
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5891 c06c8d41-db1a-0410-9941-cceddc491573
* Clean up and consolidate most of the monster pacification routines.dolorous2008-06-161-1/+7
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5885 c06c8d41-db1a-0410-9941-cceddc491573
* Comment fixes.dolorous2008-06-141-3/+5
| | | | git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5814 c06c8d41-db1a-0410-9941-cceddc491573
* Improve handling of god gifts when dumping gods, so that only god gifts dolorous2008-06-141-1/+1
| | | | | | | granted to you by that god are affected. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5803 c06c8d41-db1a-0410-9941-cceddc491573
* Implement the Petrify spell in a rather basic variant, and replace the j-p-e-g2008-06-121-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | player spell "Paralyse" with it, i.e. not the wand/potion/misc. effects. Petrify is a 4th level spell of the Enchantment/Transmigrations school (a unique combination, I believe), all other values (incl. the level) were shamelessly stolen from Paralysis. Anyway, it consists of two elements (so I actually added TWO new enchantments), Petrifying and Petrified. A monster that is petrifying cannot move around but can perform actions like hitting adjacent monsters or casting spells at a slowed rate (1.5 of the normal cost). Once this sub-enchantment runs out (happens faster) the monster cannot move or act anymore, so it works like Paralysis. The damage you do during stabbing is one third of what you'd do otherwise, for both states of enchantment, and for both stabbing counts as unchivalric behaviour. It has not been implemented as a monster spell, and ghosts of characters that had it will use Paralyse instead. Consequently, the effect on the player (in self targetting) only handles the Petrified part. Numbers, esp. enchantment timeout, will need tweaking. They're currently Petrifying: cturn = 50 / _mod_speed(10, mons->speed); Petrified: cturn = std::max(8, 150 / (1 + modded_speed(mons, 5))) because I wanted the first to always run out faster than the second, but at the same time make the ratio of Petrifying/Petrified tilt in favour of the first for powerful monsters. The numbers are more or less made up, and tested with different monsters in wizard mode. Still, could be anything between too weak and overpowered, though the latter is more likely. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5761 c06c8d41-db1a-0410-9941-cceddc491573
* Clean up handling of killing mutators or rotters (i.e., chaotic beings), dolorous2008-06-121-0/+2
| | | | | | | | and make them become enraged by your lawful aura if you start worshipping Zin. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5750 c06c8d41-db1a-0410-9941-cceddc491573
* Overhaul god gift handling again so that we can tell which god sent dolorous2008-06-121-0/+1
| | | | | | | | | | | which gift. There was an unused god parameter in the monsters struct, which was probably intended to hold which god a monster worshipped. I've used it as an indicator of which god sent the monster, under the assumption that gods would send their own worshippers as gifts. (I hope this isn't an abuse of it.) git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@5748 c06c8d41-db1a-0410-9941-cceddc491573