Monsters in Crawl have one of four dispositions, or attitudes, towards the player:
- hostile (
ATT_HOSTILEin the source code),
- neutral (
- peaceful (
- allied (
Hostile monsters will actively pursue the player and try to kill him/her, be it through spells, abilities, melee, ranged weapons, or whatever means they have coded. Even monsters with no means of attacking the player, like plants, are considered "hostile" - one can see this by worshiping Elyvilon, who forbids attacking non-hostile monsters. Hostile monsters will not generally attack each other, although monsters will destroy plants in an attempt to reach the player, and some monsters are rather indiscriminate with multiple-target spells.
By default, every monster in the game is hostile, though a few means can change this.
Neutral (indifferent) monsters are those with no particular desire to kill the player. They will not pursue, and will not use ranged attacks. However, they will still attack in melee anything that gets in their way: the player, other monsters, plants, etc. You must use a dedicated attack command (Ctrl-direction or v) in order to attack these monsters, potentially getting a stab off and definitely making them hostile.
Monsters pacified by Elyvilon are neutral, attempting to find the nearest staircase and leave the level. Monsters produced by Lugonu's Corruption ability will also be neutral, and there are a few pregenerated vaults that contain neutral monsters (though are quite rare).
Frenzied is the result of the frenzy status. Frenzied monsters will actively attack the closest thing in sight, whether friend or foe.
Peaceful monsters are friendly toward the player, but are not allies. They will not attack the player, and attempting to move onto their square simply displaces them. They will roam around, attempting to kill hostile monsters, using all their abilities in doing so. They cannot be given commands to attack a specific monster, and will not follow the player.
Allied monsters are most akin to "pets" in other roguelikes. They will follow the player, attacking his or her enemies at will, without much regard for their own safety. They can be given a few simple commands: "Guard the Area!" (stay close), "Follow me!", "Retreat!", "Attack [a specific target]!", and "Stop attacking." Sadly, it is not possible to give commands to a single ally - you give them to all allies in LOS or none.
Permanent allies are incredibly sparse, only being created from gods: Beogh conversion, the Hepliaklqana ancestor, and a single bound soul from Yredelemnul. Temporary allies, however, are quite common. A wand of charming will temporarily convert one into your side, while a variety of Summonings and Necromancy spells will create them for you.
Most (but not all) allied monsters are subject to the following limitations:
- Allies cannot attack monsters that are outside your line of sight, nor can they attack when they themselves are outside your line of sight.
- Allies cannot follow you through stairs.
Charmed monsters, bribed monsters, and Beogh companions are not subject to either of these restrictions. Although, bribed monsters can't leave their home branch. Hepliaklqana's ancestor and Yredelemnul's bound soul can follow you through stairs, but not attack from outside LOS.
Beogh orcs can take some of your XP. This scales with damage dealt - if you did 0% damage, orcs take 50% of the XP. No other ally takes XP.
Jiyva worshippers will find all slimes turned friendly. This is technically a separate attitude (
ATT_FELLOW_SLIME), acting more like peaceful monsters than allied. They do not follow you and are unable to be commanded, but will seek out enemies that attack you (as opposed to hunting down monsters, like with peaceful).