From 672df2f6a49ff8683255e5bad316674d16285f0c Mon Sep 17 00:00:00 2001 From: Robert Vollmert Date: Tue, 10 Nov 2009 14:34:37 +0100 Subject: 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. --- crawl-ref/source/dungeon.cc | 4 ++-- crawl-ref/source/effects.cc | 14 ++++---------- crawl-ref/source/misc.cc | 12 ++++++++++-- crawl-ref/source/misc.h | 3 +++ crawl-ref/source/religion.cc | 4 ++-- 5 files changed, 21 insertions(+), 16 deletions(-) (limited to 'crawl-ref') 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 ®ion) 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 ®ion) 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 -- cgit v1.2.3-54-g00ecf