summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source
diff options
context:
space:
mode:
authorRobert Vollmert <rvollmert@gmx.net>2009-11-10 14:34:37 +0100
committerRobert Vollmert <rvollmert@gmx.net>2009-11-10 14:34:37 +0100
commit672df2f6a49ff8683255e5bad316674d16285f0c (patch)
treea3d04761b18fce07545c67f08f6c4471d31cd659 /crawl-ref/source
parentd2b8c2a72d975b9bf6a3f8ea41cff136adf8cb0a (diff)
downloadcrawl-ref-672df2f6a49ff8683255e5bad316674d16285f0c.tar.gz
crawl-ref-672df2f6a49ff8683255e5bad316674d16285f0c.zip
Add conditional bloodifying function and use it in some places.
This might help the reported blood-covered deep water, though I didn't see any obvious case that was a likely cause.
Diffstat (limited to 'crawl-ref/source')
-rw-r--r--crawl-ref/source/dungeon.cc4
-rw-r--r--crawl-ref/source/effects.cc14
-rw-r--r--crawl-ref/source/misc.cc12
-rw-r--r--crawl-ref/source/misc.h3
-rw-r--r--crawl-ref/source/religion.cc4
5 files changed, 21 insertions, 16 deletions
diff --git a/crawl-ref/source/dungeon.cc b/crawl-ref/source/dungeon.cc
index 096700f6f2..adb5ada5c6 100644
--- a/crawl-ref/source/dungeon.cc
+++ b/crawl-ref/source/dungeon.cc
@@ -6547,7 +6547,7 @@ static void _labyrinth_add_blood_trail(const dgn_region &region)
if (path.size() < 10)
continue;
- env.pgrid(start) |= FPROP_BLOODY;
+ maybe_bloodify_square(start);
#ifdef WIZARD
env.pgrid(start) |= FPROP_HIGHLIGHT;
#endif
@@ -6560,7 +6560,7 @@ static void _labyrinth_add_blood_trail(const dgn_region &region)
if (step < 2 || step < 12 && coinflip()
|| step >= 12 && one_chance_in(step/4))
{
- env.pgrid(pos) |= FPROP_BLOODY;
+ maybe_bloodify_square(pos);
}
#ifdef WIZARD
env.pgrid(pos) |= FPROP_HIGHLIGHT;
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc
index cc50b7c8c3..c3be41fa8b 100644
--- a/crawl-ref/source/effects.cc
+++ b/crawl-ref/source/effects.cc
@@ -3271,17 +3271,14 @@ void change_labyrinth(bool msg)
if (feat_is_wall(grd(*ai)) && one_chance_in(++wall_count))
old_adj = *ai;
- if (old_adj != c && !is_bloodcovered(old_adj))
- {
- env.pgrid(old_adj) |= FPROP_BLOODY;
+ if (old_adj != c && maybe_bloodify_square(old_adj))
env.pgrid(c) &= (~FPROP_BLOODY);
- }
}
}
else if (one_chance_in(500))
{
// Rarely add blood randomly, accumulating with time...
- env.pgrid(c) |= FPROP_BLOODY;
+ maybe_bloodify_square(c);
}
// Rather than use old_grid directly, replace with an adjacent
@@ -3323,17 +3320,14 @@ void change_labyrinth(bool msg)
if (_is_floor(grd(*ai)) && one_chance_in(++floor_count))
new_adj = *ai;
- if (new_adj != p && !is_bloodcovered(new_adj))
- {
- env.pgrid(new_adj) |= FPROP_BLOODY;
+ if (new_adj != p && maybe_bloodify_square(new_adj))
env.pgrid(p) &= (~FPROP_BLOODY);
- }
}
}
else if (one_chance_in(100))
{
// Occasionally add blood randomly, accumulating with time...
- env.pgrid(p) |= FPROP_BLOODY;
+ maybe_bloodify_square(p);
}
}
diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc
index c3c1199639..cf5edf04c4 100644
--- a/crawl-ref/source/misc.cc
+++ b/crawl-ref/source/misc.cc
@@ -1085,6 +1085,15 @@ static bool allow_bleeding_on_square(const coord_def& where)
return (true);
}
+bool maybe_bloodify_square(const coord_def& where)
+{
+ if (!allow_bleeding_on_square(where))
+ return (false);
+
+ env.pgrid(where) |= FPROP_BLOODY;
+ return(true);
+}
+
static void _maybe_bloodify_square(const coord_def& where, int amount,
bool spatter = false,
bool smell_alert = true)
@@ -1228,8 +1237,7 @@ void generate_random_blood_spatter_on_level()
coord_def c = random_in_bounds();
startprob = min_prob + random2(max_prob);
- if (allow_bleeding_on_square(c))
- env.pgrid(c) |= FPROP_BLOODY;
+ maybe_bloodify_square(c);
_spatter_neighbours(c, startprob);
}
diff --git a/crawl-ref/source/misc.h b/crawl-ref/source/misc.h
index 83d6791d62..3a6aad81f1 100644
--- a/crawl-ref/source/misc.h
+++ b/crawl-ref/source/misc.h
@@ -44,6 +44,9 @@ void bleed_onto_floor(const coord_def& where, monster_type mon, int damage,
bool spatter = false, bool smell_alert = true);
void generate_random_blood_spatter_on_level();
+// Set FPROP_BLOODY after checking bleedability.
+bool maybe_bloodify_square(const coord_def& where);
+
bool check_annotation_exclusion_warning();
void up_stairs(dungeon_feature_type force_stair = DNGN_UNSEEN,
entry_cause_type entry_cause = EC_UNKNOWN);
diff --git a/crawl-ref/source/religion.cc b/crawl-ref/source/religion.cc
index b27568236f..7d90600713 100644
--- a/crawl-ref/source/religion.cc
+++ b/crawl-ref/source/religion.cc
@@ -4293,8 +4293,8 @@ static bool _bless_weapon(god_type god, brand_type brand, int colour)
// Bloodify surrounding squares (75% chance).
for (radius_iterator ri(you.pos(), 2, true, true); ri; ++ri)
- if (!is_bloodcovered(*ri) && !one_chance_in(4))
- env.pgrid(*ri) |= FPROP_BLOODY;
+ if (!one_chance_in(4))
+ maybe_bloodify_square(*ri);
}
#ifndef USE_TILE