summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-07 11:31:13 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-03-07 11:31:13 +0000
commit88a6cab91bc229578ada1582b99a86f417b7a6ac (patch)
tree6ed16936bbd1643d25a47e4d36a24875cb0f6b19 /crawl-ref/source
parent4f65c022cc220235650adac2ee1ee1db09c9fb48 (diff)
downloadcrawl-ref-88a6cab91bc229578ada1582b99a86f417b7a6ac.tar.gz
crawl-ref-88a6cab91bc229578ada1582b99a86f417b7a6ac.zip
Add more monsters being capable of spattering the floor with blood.
Should we use the same reasoning for which monsters' corpses vampires can feed on? Currently they can also draw blood from insects and worms, which seems a bit odd. But everytime we restrict the sources of blood further we make vampires (un)lives a bit harder. For comparison: Currently vampires can draw blood from all monsters with chunk type clean or contaminated. This includes, among others, royal jelly, death cob, devils, skeletons (!) and a whole lot of other demonic or undead beings. Blood spattering, on the other hand, only works for monsters that have either M_WARM_BLOOD or M_COLD_BLOOD set, and this is the case for a subgroup of natural and holy creatures. I'm in favour of this change, and unless someone else has good arguments not to change this, I will. Also fix hungry vampires leaving blood stains. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3532 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/effects.cc12
-rw-r--r--crawl-ref/source/misc.cc4
-rw-r--r--crawl-ref/source/mon-data.h50
-rw-r--r--crawl-ref/source/monstuff.cc14
4 files changed, 40 insertions, 40 deletions
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc
index 00e0b348af..70c8b27159 100644
--- a/crawl-ref/source/effects.cc
+++ b/crawl-ref/source/effects.cc
@@ -2216,10 +2216,10 @@ static void rot_inventory_food(long time_delta)
continue;
}
- you.inv[i].sub_type = CORPSE_SKELETON;
- you.inv[i].special = 0;
- you.inv[i].colour = LIGHTGREY;
- you.wield_change = true;
+ you.inv[i].sub_type = CORPSE_SKELETON;
+ you.inv[i].special = 0;
+ you.inv[i].colour = LIGHTGREY;
+ you.wield_change = true;
burden_changed_by_rot = true;
continue;
}
@@ -2833,8 +2833,8 @@ void update_corpses(double elapsedTime)
else
{
it.sub_type = CORPSE_SKELETON;
- it.special = 200;
- it.colour = LIGHTGREY;
+ it.special = 200;
+ it.colour = LIGHTGREY;
}
}
}
diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc
index fc0447b74f..545529aa48 100644
--- a/crawl-ref/source/misc.cc
+++ b/crawl-ref/source/misc.cc
@@ -165,7 +165,7 @@ static bool victim_can_bleed(int montype)
if (montype == -1) // player
{
if (you.is_undead && (you.species != SP_VAMPIRE
- || you.hunger_state >= HS_FULL))
+ || you.hunger_state < HS_FULL))
{
return (false);
}
@@ -179,7 +179,7 @@ static bool victim_can_bleed(int montype)
}
return (true);
}
-
+
// now check monsters
return (mons_class_flag(montype, M_COLD_BLOOD)
|| mons_class_flag(montype, M_WARM_BLOOD));
diff --git a/crawl-ref/source/mon-data.h b/crawl-ref/source/mon-data.h
index 2c494a6e11..33c790a7dd 100644
--- a/crawl-ref/source/mon-data.h
+++ b/crawl-ref/source/mon-data.h
@@ -446,7 +446,7 @@
{
MONS_ANGEL, 'A', WHITE, "Angel",
- M_FIGHTER | M_FLIES | M_SPELLCASTER | M_SEE_INVIS,
+ M_FIGHTER | M_FLIES | M_SPELLCASTER | M_SEE_INVIS | M_WARM_BLOOD,
MR_RES_POISON | MR_RES_ELEC,
0, 10, MONS_ANGEL, MONS_ANGEL, MH_HOLY, -8,
{ {AT_HIT, AF_PLAIN, 25}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -502,7 +502,7 @@
},
{
- MONS_FIEND, '1', LIGHTRED, "Fiend", //jmf: was RED, like Balrog
+ MONS_FIEND, '1', LIGHTRED, "Fiend",
M_FLIES | M_SEE_INVIS | M_EVIL,
MR_RES_POISON | MR_RES_HELLFIRE | MR_VUL_COLD,
0, 18, MONS_FIEND, MONS_FIEND, MH_DEMONIC, -12,
@@ -939,7 +939,7 @@
{
MONS_GIANT_ORANGE_BRAIN, 'G', LIGHTRED, "giant orange brain",
- M_NO_SKELETON | M_SPELLCASTER | M_LEVITATE | M_SEE_INVIS,
+ M_NO_SKELETON | M_SPELLCASTER | M_LEVITATE | M_SEE_INVIS | M_WARM_BLOOD,
MR_RES_ASPHYX,
1000, 13, MONS_GIANT_ORANGE_BRAIN, MONS_GIANT_ORANGE_BRAIN, MH_NATURAL, -8,
{ AT_NO_ATK, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -994,7 +994,7 @@
{
MONS_ICE_DRAGON, 'D', WHITE, "ice dragon",
- M_FLIES | M_SPECIAL_ABILITY,
+ M_FLIES | M_SPECIAL_ABILITY | M_COLD_BLOOD,
MR_RES_POISON | MR_VUL_FIRE | mrd(MR_RES_COLD, 2),
2200, 10, MONS_DRAGON, MONS_ICE_DRAGON, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 17}, {AT_CLAW, AF_PLAIN, 17}, {AT_CLAW, AF_PLAIN, 17}, AT_NO_ATK },
@@ -1194,7 +1194,7 @@
{
MONS_STEAM_DRAGON, 'D', BLUE, "steam dragon",
- M_SPELLCASTER | M_FLIES,
+ M_SPELLCASTER | M_FLIES | M_WARM_BLOOD,
MR_RES_STEAM,
1000, 10, MONS_DRAGON, MONS_STEAM_DRAGON, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 12}, {AT_CLAW, AF_PLAIN, 6}, AT_NO_ATK, AT_NO_ATK },
@@ -1250,7 +1250,7 @@
{
MONS_HYDRA, 'D', LIGHTGREEN, "hydra",
- M_AMPHIBIOUS, // because it likes the swamp -- bwr
+ M_AMPHIBIOUS | M_WARM_BLOOD, // because it likes the swamp -- bwr
MR_RES_POISON,
1800, 11, MONS_HYDRA, MONS_HYDRA, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 18}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -1433,7 +1433,7 @@
{
MONS_MOTTLED_DRAGON, 'D', LIGHTMAGENTA, "mottled dragon",
- M_SPELLCASTER | M_FLIES,
+ M_SPELLCASTER | M_FLIES | M_WARM_BLOOD,
MR_RES_POISON | MR_RES_FIRE | MR_RES_STICKY_FLAME,
1100, 10, MONS_DRAGON, MONS_MOTTLED_DRAGON, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 15}, {AT_CLAW, AF_PLAIN, 6}, AT_NO_ATK, AT_NO_ATK },
@@ -1701,7 +1701,7 @@
{
MONS_GOLDEN_DRAGON, 'D', YELLOW, "golden dragon",
- M_SPELLCASTER | M_FLIES | M_SENSE_INVIS,
+ M_SPELLCASTER | M_FLIES | M_SENSE_INVIS | M_WARM_BLOOD,
MR_RES_ELEC | MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD,
3000, 17, MONS_DRAGON, MONS_GOLDEN_DRAGON, MH_NATURAL, -8,
{ {AT_BITE, AF_PLAIN, 40}, {AT_CLAW, AF_PLAIN, 20}, {AT_CLAW, AF_PLAIN, 20}, AT_NO_ATK },
@@ -1730,7 +1730,7 @@
// packed with draconians already, and a lightcyan l is unique -- jpeg, Feb 08
{
MONS_LINDWURM, 'l', LIGHTCYAN, "lindwurm",
- M_SPECIAL_ABILITY,
+ M_SPECIAL_ABILITY | M_WARM_BLOOD,
MR_NO_FLAGS,
1000, 11, MONS_DRAGON, MONS_LINDWURM, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 20}, {AT_CLAW, AF_PLAIN, 10}, {AT_CLAW, AF_PLAIN, 10}, AT_NO_ATK },
@@ -1906,7 +1906,7 @@
{
MONS_FIREDRAKE, 'l', RED, "firedrake",
- M_FLIES | M_SPECIAL_ABILITY,
+ M_FLIES | M_SPECIAL_ABILITY | M_WARM_BLOOD,
MR_RES_FIRE,
900, 10, MONS_DRAGON, MONS_FIREDRAKE, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 8}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -1917,7 +1917,7 @@
{
MONS_SHADOW_DRAGON, 'D', MAGENTA, "shadow dragon",
- M_SPELLCASTER | M_FLIES | M_SEE_INVIS | M_EVIL,
+ M_SPELLCASTER | M_FLIES | M_SEE_INVIS | M_EVIL | M_COLD_BLOOD,
MR_RES_POISON | mrd(MR_RES_COLD, 2),
2000, 12, MONS_DRAGON, MONS_SHADOW_DRAGON, MH_NATURAL, -5,
{ {AT_BITE, AF_DRAIN_XP, 20}, {AT_CLAW, AF_PLAIN, 15}, {AT_CLAW, AF_PLAIN, 15}, AT_NO_ATK },
@@ -1983,7 +1983,7 @@
{
MONS_SWAMP_DRAGON, 'D', BROWN, "swamp dragon",
- M_SPELLCASTER | M_FLIES,
+ M_SPELLCASTER | M_FLIES | M_WARM_BLOOD,
MR_RES_POISON,
1900, 11, MONS_DRAGON, MONS_SWAMP_DRAGON, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 18}, {AT_CLAW, AF_PLAIN, 9}, {AT_CLAW, AF_PLAIN, 9}, AT_NO_ATK },
@@ -1994,7 +1994,7 @@
{
MONS_SWAMP_DRAKE, 'l', BROWN, "swamp drake",
- M_SPELLCASTER | M_FLIES,
+ M_SPELLCASTER | M_FLIES | M_WARM_BLOOD,
MR_RES_POISON,
900, 11, MONS_DRAGON, MONS_SWAMP_DRAKE, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 14}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -2005,7 +2005,7 @@
{
MONS_DEATH_DRAKE, 'l', LIGHTGREY, "death drake",
- M_SPELLCASTER | M_FLIES | M_EVIL,
+ M_SPELLCASTER | M_FLIES | M_EVIL | M_COLD_BLOOD,
MR_RES_POISON,
900, 11, MONS_DRAGON, MONS_DEATH_DRAKE, MH_NATURAL, -3,
{ {AT_BITE, AF_PLAIN, 12}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -2456,7 +2456,7 @@
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_OPEN_DOORS, SIZE_MEDIUM
},
-// 250 can't exist
+// 250 can't exist -> program bug
{
@@ -3051,7 +3051,7 @@
{
MONS_XTAHUA, 'D', RED, "Xtahua",
- M_SEE_INVIS | M_FLIES | M_SPECIAL_ABILITY | M_UNIQUE,
+ M_SEE_INVIS | M_FLIES | M_SPECIAL_ABILITY | M_UNIQUE | M_WARM_BLOOD,
MR_RES_POISON | mrd(MR_RES_FIRE, 2) | MR_VUL_COLD,
0, 18, MONS_DRAGON, MONS_DRAGON, MH_NATURAL, -7,
{ {AT_BITE, AF_PLAIN, 35}, {AT_CLAW, AF_PLAIN, 20}, {AT_CLAW, AF_PLAIN, 17}, AT_NO_ATK },
@@ -3259,7 +3259,7 @@
{
MONS_DAEVA, 'A', YELLOW, "Daeva",
- M_FIGHTER | M_LEVITATE | M_SPELLCASTER | M_SEE_INVIS,
+ M_FIGHTER | M_LEVITATE | M_SPELLCASTER | M_SEE_INVIS | M_WARM_BLOOD,
MR_RES_POISON,
0, 12, MONS_ANGEL, MONS_DAEVA, MH_HOLY, -8,
{ {AT_HIT, AF_PLAIN, 25}, {AT_HIT, AF_PLAIN, 10}, {AT_HIT, AF_PLAIN, 10}, AT_NO_ATK },
@@ -3306,7 +3306,7 @@
MONS_TENTACLED_MONSTROSITY, 'X', GREEN, "tentacled monstrosity",
M_SEE_INVIS | M_AMPHIBIOUS,
MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD | MR_RES_ELEC,
- 0, 10, MONS_TENTACLED_MONSTROSITY, MONS_TENTACLED_MONSTROSITY, MH_NATURAL, -5,
+ 0, 10, MONS_TENTACLED_MONSTROSITY, MONS_TENTACLED_MONSTROSITY, MH_DEMONIC, -5,
{ {AT_HIT, AF_PLAIN, 22}, {AT_HIT, AF_PLAIN, 17}, {AT_HIT, AF_PLAIN, 13} },
{ 25, 3, 5, 0 },
5, 5, MST_NO_SPELLS, CE_NOCORPSE, Z_NOZOMBIE, S_SILENT, I_NORMAL,
@@ -3749,7 +3749,7 @@
{
MONS_BOGGART, 'g', MAGENTA, "boggart",
- M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS,
+ M_SPELLCASTER | M_ACTUAL_SPELLS | M_SEE_INVIS | M_WARM_BLOOD,
MR_NO_FLAGS,
0, 14, MONS_BOGGART, MONS_BOGGART, MH_NATURAL, -7,
{ {AT_HIT, AF_PLAIN, 5}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -3760,7 +3760,7 @@
{
MONS_QUICKSILVER_DRAGON, 'D', LIGHTCYAN, "quicksilver dragon",
- M_SPELLCASTER | M_FLIES | M_SENSE_INVIS,
+ M_SPELLCASTER | M_FLIES | M_SENSE_INVIS | M_WARM_BLOOD,
MR_NO_FLAGS,
0, 14, MONS_DRAGON, MONS_QUICKSILVER_DRAGON, MH_NATURAL, -7,
{ {AT_BITE, AF_PLAIN, 25}, {AT_CLAW, AF_PLAIN, 20}, AT_NO_ATK, AT_NO_ATK },
@@ -3771,7 +3771,7 @@
{
MONS_IRON_DRAGON, 'D', CYAN, "iron dragon",
- M_SPELLCASTER | M_SENSE_INVIS,
+ M_SPELLCASTER | M_SENSE_INVIS | M_WARM_BLOOD,
MR_RES_POISON | MR_RES_FIRE | MR_RES_COLD,
0, 14, MONS_DRAGON, MONS_IRON_DRAGON, MH_NATURAL, -7,
{ {AT_BITE, AF_PLAIN, 25}, {AT_CLAW, AF_PLAIN, 25}, {AT_CLAW, AF_PLAIN, 25}, AT_NO_ATK },
@@ -3791,7 +3791,7 @@
HT_LAND, 10, DEFAULT_ENERGY, MONUSE_WEAPONS_ARMOUR, SIZE_MEDIUM
},
-/* player ghost - only one per level. stats are stored in ghost struct */
+/* player ghost - stats are stored in ghost struct */
{
MONS_PLAYER_GHOST, 'p', WHITE, "player ghost",
M_FIGHTER | M_SPEAKS | M_SPELLCASTER | M_ACTUAL_SPELLS | M_FLIES | M_UNIQUE | M_INSUBSTANTIAL,
@@ -3829,7 +3829,7 @@
{
MONS_LAVA_FISH, ';', RED, "lava fish",
- M_NO_FLAGS,
+ M_WARM_BLOOD,
MR_RES_FIRE | MR_VUL_COLD,
0, 10, MONS_BIG_FISH, MONS_LAVA_FISH, MH_NATURAL, -3,
{ {AT_BITE, AF_FIRE, 10}, AT_NO_ATK, AT_NO_ATK, AT_NO_ATK },
@@ -4090,7 +4090,7 @@
},
{
- // gila monsters colours: lightmagenta, magenta, lightred, red, yellow
+ // gila monsters colours: lightmagenta, magenta, lightred, yellow
MONS_GILA_MONSTER, 'l', BLACK, "gila monster",
M_COLD_BLOOD,
MR_NO_FLAGS,
@@ -4158,7 +4158,7 @@
{
MONS_TIAMAT, 'd', MAGENTA, "Tiamat",
- M_HUMANOID | M_SEE_INVIS | M_EVIL | M_UNIQUE | M_FLIES,
+ M_HUMANOID | M_SEE_INVIS | M_EVIL | M_UNIQUE | M_FLIES | M_COLD_BLOOD,
MR_RES_POISON,
0, 10, MONS_DRACONIAN, MONS_DRACONIAN, MH_NATURAL, -5,
{ {AT_HIT, AF_PLAIN, 35}, {AT_TAIL_SLAP, AF_PLAIN, 25},
diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc
index 64355d5209..324789813b 100644
--- a/crawl-ref/source/monstuff.cc
+++ b/crawl-ref/source/monstuff.cc
@@ -316,14 +316,14 @@ static void place_monster_corpse(const monsters *monster)
if (o == NON_ITEM)
return;
- mitm[o].flags = 0;
+ mitm[o].flags = 0;
mitm[o].base_type = OBJ_CORPSES;
- mitm[o].plus = corpse_class;
- mitm[o].plus2 = 0; // butcher work done
- mitm[o].sub_type = CORPSE_BODY;
- mitm[o].special = 210; // rot time
- mitm[o].colour = mons_class_colour(corpse_class);
- mitm[o].quantity = 1;
+ mitm[o].plus = corpse_class;
+ mitm[o].plus2 = 0; // butcher work done
+ mitm[o].sub_type = CORPSE_BODY;
+ mitm[o].special = 210; // rot time
+ mitm[o].colour = mons_class_colour(corpse_class);
+ mitm[o].quantity = 1;
if (mitm[o].colour == BLACK)
mitm[o].colour = monster->colour;