From: <gi...@cr...> - 2011-03-31 23:18:11
|
via cfe20e7bae988804c677b6d53fe4cb7db6c623d1 (commit) via 7465a6be7ab76ff69d3ffe90dde10bb0bfc29f06 (commit) via 39458c9a80d3264cc601d30ac9916c62fd65b1da (commit) via 7d2f6c10e867854cb902a70be835ea094f0094a3 (commit) from 452ff385766f7f82e4ff92f319dd3a284795fd2e (commit) ----------------------------------------------------------------------- commit cfe20e7bae988804c677b6d53fe4cb7db6c623d1 Author: Raphael Langella <rap...@gm...> Date: Fri Apr 1 01:15:23 2011 +0200 Future proof the shield evasion penalty code. In case we ever add a giant race or form able to use shields (#949). commit 7465a6be7ab76ff69d3ffe90dde10bb0bfc29f06 Author: Raphael Langella <rap...@gm...> Date: Fri Apr 1 01:01:27 2011 +0200 Rotate the wall blood splat tiles so they are facing the source. The effect looks much better this way. commit 39458c9a80d3264cc601d30ac9916c62fd65b1da Author: Raphael Langella <rap...@gm...> Date: Thu Mar 31 21:59:08 2011 +0200 Increase the chance for blood splatters on adjacent walls. commit 7d2f6c10e867854cb902a70be835ea094f0094a3 Author: Raphael Langella <rap...@gm...> Date: Thu Mar 31 13:37:44 2011 +0200 Add a script which creates rotated variations of a tile. ----------------------------------------------------------------------- Summary of changes: crawl-ref/source/fprop.cc | 7 ++ crawl-ref/source/fprop.h | 9 ++ crawl-ref/source/misc.cc | 79 +++++++++++++++++--- crawl-ref/source/misc.h | 3 +- crawl-ref/source/player.cc | 2 +- crawl-ref/source/rltiles/dc-feat.txt | 40 ++++++++-- .../source/rltiles/dc-misc/blood/wall_blood1_e.png | Bin 0 -> 1679 bytes .../source/rltiles/dc-misc/blood/wall_blood1_n.png | Bin 0 -> 1748 bytes .../blood/{wall_blood1.png => wall_blood1_s.png} | Bin 1433 -> 1433 bytes .../source/rltiles/dc-misc/blood/wall_blood1_w.png | Bin 0 -> 1689 bytes .../source/rltiles/dc-misc/blood/wall_blood2_e.png | Bin 0 -> 967 bytes .../source/rltiles/dc-misc/blood/wall_blood2_n.png | Bin 0 -> 994 bytes .../blood/{wall_blood2.png => wall_blood2_s.png} | Bin 763 -> 763 bytes .../source/rltiles/dc-misc/blood/wall_blood2_w.png | Bin 0 -> 954 bytes .../source/rltiles/dc-misc/blood/wall_blood3_e.png | Bin 0 -> 811 bytes .../source/rltiles/dc-misc/blood/wall_blood3_n.png | Bin 0 -> 799 bytes .../blood/{wall_blood3.png => wall_blood3_s.png} | Bin 527 -> 527 bytes .../source/rltiles/dc-misc/blood/wall_blood3_w.png | Bin 0 -> 808 bytes .../source/rltiles/dc-misc/blood/wall_blood4_e.png | Bin 0 -> 928 bytes .../source/rltiles/dc-misc/blood/wall_blood4_n.png | Bin 0 -> 1050 bytes .../blood/{wall_blood4.png => wall_blood4_s.png} | Bin 852 -> 852 bytes .../source/rltiles/dc-misc/blood/wall_blood4_w.png | Bin 0 -> 948 bytes .../source/rltiles/dc-misc/blood/wall_blood5_e.png | Bin 0 -> 959 bytes .../source/rltiles/dc-misc/blood/wall_blood5_n.png | Bin 0 -> 1045 bytes .../blood/{wall_blood5.png => wall_blood5_s.png} | Bin 789 -> 789 bytes .../source/rltiles/dc-misc/blood/wall_blood5_w.png | Bin 0 -> 988 bytes .../source/rltiles/dc-misc/blood/wall_blood6_e.png | Bin 0 -> 937 bytes .../source/rltiles/dc-misc/blood/wall_blood6_n.png | Bin 0 -> 935 bytes .../blood/{wall_blood6.png => wall_blood6_s.png} | Bin 681 -> 681 bytes .../source/rltiles/dc-misc/blood/wall_blood6_w.png | Bin 0 -> 928 bytes .../source/rltiles/dc-misc/blood/wall_blood7_e.png | Bin 0 -> 886 bytes .../source/rltiles/dc-misc/blood/wall_blood7_n.png | Bin 0 -> 942 bytes .../blood/{wall_blood7.png => wall_blood7_s.png} | Bin 636 -> 636 bytes .../source/rltiles/dc-misc/blood/wall_blood7_w.png | Bin 0 -> 902 bytes .../source/rltiles/dc-misc/blood/wall_blood8_e.png | Bin 0 -> 1411 bytes .../source/rltiles/dc-misc/blood/wall_blood8_n.png | Bin 0 -> 1430 bytes .../blood/{wall_blood8.png => wall_blood8_s.png} | Bin 1102 -> 1102 bytes .../source/rltiles/dc-misc/blood/wall_blood8_w.png | Bin 0 -> 1415 bytes crawl-ref/source/tiledgnbuf.cc | 10 ++- crawl-ref/source/tiledgnbuf.h | 7 +- crawl-ref/source/tileview.cc | 3 + crawl-ref/source/util/rotate-tile.pl | 30 ++++++++ 42 files changed, 167 insertions(+), 23 deletions(-) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood1.png => wall_blood1_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_w.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood2.png => wall_blood2_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_w.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood3.png => wall_blood3_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_w.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood4.png => wall_blood4_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_w.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood5.png => wall_blood5_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_w.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood6.png => wall_blood6_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_w.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood7.png => wall_blood7_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_w.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_e.png create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_n.png rename crawl-ref/source/rltiles/dc-misc/blood/{wall_blood8.png => wall_blood8_s.png} (100%) create mode 100644 crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_w.png create mode 100755 crawl-ref/source/util/rotate-tile.pl diff --git a/crawl-ref/source/fprop.cc b/crawl-ref/source/fprop.cc index 5141e29..db76bab 100644 --- a/crawl-ref/source/fprop.cc +++ b/crawl-ref/source/fprop.cc @@ -74,3 +74,10 @@ feature_property_type str_to_fprop(const std::string &str) return (FPROP_NONE); } + +#ifdef USE_TILE +char blood_rotation(const coord_def & p) +{ + return (env.pgrid(p) & FPROP_BLOOD_EAST) >> 16; +} +#endif diff --git a/crawl-ref/source/fprop.h b/crawl-ref/source/fprop.h index 186eaec..ce65e22 100644 --- a/crawl-ref/source/fprop.h +++ b/crawl-ref/source/fprop.h @@ -27,6 +27,11 @@ enum feature_property_type FPROP_NO_JIYVA = (1 << 14), // Permanent, unlike map memory. FPROP_SEEN_OR_NOEXP = (1 << 15), +#ifdef USE_TILE + FPROP_BLOOD_WEST = (1 << 16), + FPROP_BLOOD_NORTH = (1 << 17), + FPROP_BLOOD_EAST = FPROP_BLOOD_WEST | FPROP_BLOOD_NORTH, +#endif }; @@ -38,4 +43,8 @@ bool glowing_mold(const coord_def & p); void remove_mold(const coord_def & p); feature_property_type str_to_fprop(const std::string &str); +#ifdef USE_TILE +char blood_rotation(const coord_def & p); +#endif + #endif diff --git a/crawl-ref/source/misc.cc b/crawl-ref/source/misc.cc index a1c2a8a..fc8b16c 100644 --- a/crawl-ref/source/misc.cc +++ b/crawl-ref/source/misc.cc @@ -1000,9 +1000,63 @@ bool maybe_bloodify_square(const coord_def& where) return true; } +#ifdef USE_TILE +/* + * Rotate the wall blood splat tile, so that it is facing the source. + * + * Wall blood splat tiles are drawned with the blood dripping down. We need + * the tile to be facing an orthogonal empty space for the effect to look + * good. We choose the empty space closest to the source of the blood. + * + * @param where Coordinates of the wall where there is a blood splat. + * @param from Coordinates of the source of the blood. + */ +static void _orient_wall_blood(const coord_def& where, coord_def from) +{ + if (!feat_is_wall(env.grid(where))) + return; + + if (from == INVALID_COORD) + from = where; + + coord_def closer = INVALID_COORD; + int dist = INT_MAX; + los_def ld(from, opc_solid); + ld.update(); + + for (orth_adjacent_iterator ai(where); ai; ++ai) + { + if (in_bounds(*ai) && !cell_is_solid(*ai) && ld.see_cell(*ai) + && (distance(*ai, from) < dist + || distance(*ai, from) == dist && coinflip())) + { + closer = *ai; + dist = distance(*ai, from); + } + } + + // If we didn't find anything, the wall is in a corner. + // We don't want blood tile there. + if (closer == INVALID_COORD) + { + env.pgrid(where) &= ~FPROP_BLOODY; + return; + } + + const coord_def diff = where - closer; + if (diff == coord_def(1, 0)) + env.pgrid(where) |= FPROP_BLOOD_WEST; + else if (diff == coord_def(0, 1)) + env.pgrid(where) |= FPROP_BLOOD_NORTH; + else if (diff == coord_def(-1, 0)) + env.pgrid(where) |= FPROP_BLOOD_EAST; +} +#endif + static void _maybe_bloodify_square(const coord_def& where, int amount, bool spatter = false, - bool smell_alert = true) + bool smell_alert = true, + const coord_def& from = INVALID_COORD) { if (amount < 1) return; @@ -1018,6 +1072,9 @@ static void _maybe_bloodify_square(const coord_def& where, int amount, if (may_bleed) { env.pgrid(where) |= FPROP_BLOODY; +#ifdef USE_TILE + _orient_wall_blood(where, from); +#endif if (smell_alert && in_bounds(where)) blood_smell(12, where); @@ -1027,7 +1084,7 @@ static void _maybe_bloodify_square(const coord_def& where, int amount, { // Smaller chance of spattering surrounding squares. for (adjacent_iterator ai(where); ai; ++ai) - _maybe_bloodify_square(*ai, amount/15); + _maybe_bloodify_square(*ai, amount/15, false, true, from); } } } @@ -1036,7 +1093,8 @@ static void _maybe_bloodify_square(const coord_def& where, int amount, // "damage" depends on damage taken (or hitpoints, if damage higher), // or, for sacrifices, on the number of chunks possible to get out of a corpse. void bleed_onto_floor(const coord_def& where, monster_type montype, - int damage, bool spatter, bool smell_alert) + int damage, bool spatter, bool smell_alert, + const coord_def& from) { ASSERT(in_bounds(where)); @@ -1051,7 +1109,7 @@ void bleed_onto_floor(const coord_def& where, monster_type montype, return; } - _maybe_bloodify_square(where, damage, spatter, smell_alert); + _maybe_bloodify_square(where, damage, spatter, smell_alert, from); } void blood_spray(const coord_def& origin, monster_type montype, int level) @@ -1077,27 +1135,28 @@ void blood_spray(const coord_def& origin, monster_type montype, int level) if (in_bounds(bloody) && ld.see_cell(bloody)) { - bleed_onto_floor(bloody, montype, 99); + bleed_onto_floor(bloody, montype, 99, false, true, origin); break; } } } } -static void _spatter_neighbours(const coord_def& where, int chance) +static void _spatter_neighbours(const coord_def& where, int chance, + const coord_def& from = INVALID_COORD) { for (adjacent_iterator ai(where, false); ai; ++ai) { if (!allow_bleeding_on_square(*ai)) continue; - if (grd(*ai) < DNGN_MINMOVE && !one_chance_in(3)) - continue; - if (one_chance_in(chance)) { env.pgrid(*ai) |= FPROP_BLOODY; - _spatter_neighbours(*ai, chance+1); +#ifdef USE_TILE + _orient_wall_blood(where, from); +#endif + _spatter_neighbours(*ai, chance+1, from); } } } diff --git a/crawl-ref/source/misc.h b/crawl-ref/source/misc.h index 6e04d98..6ddfbb8 100644 --- a/crawl-ref/source/misc.h +++ b/crawl-ref/source/misc.h @@ -45,7 +45,8 @@ void turn_corpse_into_blood_potions (item_def &item); void turn_corpse_into_skeleton_and_blood_potions(item_def &item); void bleed_onto_floor(const coord_def& where, monster_type mon, int damage, - bool spatter = false, bool smell_alert = true); + bool spatter = false, bool smell_alert = true, + const coord_def& from = INVALID_COORD); void blood_spray(const coord_def& where, monster_type mon, int level); void generate_random_blood_spatter_on_level( const map_mask *susceptible_area = NULL); diff --git a/crawl-ref/source/player.cc b/crawl-ref/source/player.cc index d804792..e2136a8 100644 --- a/crawl-ref/source/player.cc +++ b/crawl-ref/source/player.cc @@ -2170,7 +2170,7 @@ int player_adjusted_shield_evasion_penalty(int scale) return std::max(0, (base_shield_penalty * scale - you.skill(SK_SHIELDS) * scale - / (5 + player_evasion_size_factor()))); + / std::max(1, 5 + player_evasion_size_factor()))); } int player_raw_body_armour_evasion_penalty() diff --git a/crawl-ref/source/rltiles/dc-feat.txt b/crawl-ref/source/rltiles/dc-feat.txt index 09f5bf5..d25010a 100644 --- a/crawl-ref/source/rltiles/dc-feat.txt +++ b/crawl-ref/source/rltiles/dc-feat.txt @@ -423,14 +423,38 @@ blood_red1 blood_red2 blood_red3 blood_red4 -wall_blood1 WALL_BLOOD -wall_blood2 -wall_blood3 -wall_blood4 -wall_blood5 -wall_blood6 -wall_blood7 -wall_blood8 +wall_blood1_s WALL_BLOOD_S +wall_blood2_s +wall_blood3_s +wall_blood4_s +wall_blood5_s +wall_blood6_s +wall_blood7_s +wall_blood8_s +wall_blood1_w WALL_BLOOD_W +wall_blood2_w +wall_blood3_w +wall_blood4_w +wall_blood5_w +wall_blood6_w +wall_blood7_w +wall_blood8_w +wall_blood1_n WALL_BLOOD_N +wall_blood2_n +wall_blood3_n +wall_blood4_n +wall_blood5_n +wall_blood6_n +wall_blood7_n +wall_blood8_n +wall_blood1_e WALL_BLOOD_E +wall_blood2_e +wall_blood3_e +wall_blood4_e +wall_blood5_e +wall_blood6_e +wall_blood7_e +wall_blood8_e %sdir dc-misc halo HALO ray RAY diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_e.png new file mode 100644 index 0000000..1bdd8c0 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_n.png new file mode 100644 index 0000000..1400220 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood1.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_w.png new file mode 100644 index 0000000..13bcf64 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood1_w.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_e.png new file mode 100644 index 0000000..6dc99a2 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_n.png new file mode 100644 index 0000000..d79270a Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood2.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_w.png new file mode 100644 index 0000000..0361ab7 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood2_w.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_e.png new file mode 100644 index 0000000..7980582 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_n.png new file mode 100644 index 0000000..5736f2f Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood3.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_w.png new file mode 100644 index 0000000..8b91fbf Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood3_w.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_e.png new file mode 100644 index 0000000..cfe701a Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_n.png new file mode 100644 index 0000000..ede0495 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood4.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_w.png new file mode 100644 index 0000000..d7b1723 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood4_w.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_e.png new file mode 100644 index 0000000..16822d7 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_n.png new file mode 100644 index 0000000..3f0b508 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood5.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_w.png new file mode 100644 index 0000000..b5ff2f7 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood5_w.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_e.png new file mode 100644 index 0000000..2f7fbfc Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_n.png new file mode 100644 index 0000000..d33ff7c Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood6.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_w.png new file mode 100644 index 0000000..255c3b8 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood6_w.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_e.png new file mode 100644 index 0000000..a10261f Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_n.png new file mode 100644 index 0000000..6820c5c Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood7.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_w.png new file mode 100644 index 0000000..bb0f4a4 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood7_w.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_e.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_e.png new file mode 100644 index 0000000..ad600d6 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_e.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_n.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_n.png new file mode 100644 index 0000000..7368cee Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_n.png differ diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_s.png similarity index 100% rename from crawl-ref/source/rltiles/dc-misc/blood/wall_blood8.png rename to crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_s.png diff --git a/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_w.png b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_w.png new file mode 100644 index 0000000..ae37643 Binary files /dev/null and b/crawl-ref/source/rltiles/dc-misc/blood/wall_blood8_w.png differ diff --git a/crawl-ref/source/tiledgnbuf.cc b/crawl-ref/source/tiledgnbuf.cc index 648ff88..54ceeb0 100644 --- a/crawl-ref/source/tiledgnbuf.cc +++ b/crawl-ref/source/tiledgnbuf.cc @@ -16,6 +16,7 @@ #include "terrain.h" #include "tiledef-dngn.h" #include "tiledef-icons.h" +#include "tiledef-main.h" #include "tiledef-player.h" #include "tiledoll.h" #include "tilemcache.h" @@ -516,7 +517,14 @@ void DungeonCellBuffer::add_blood_overlay(int x, int y, const packed_cell &cell, } else if (cell.is_bloody) { - const tileidx_t basetile = (is_wall ? TILE_WALL_BLOOD : TILE_BLOOD); + tileidx_t basetile; + if (is_wall) + { + basetile = TILE_WALL_BLOOD_S + tile_dngn_count(TILE_WALL_BLOOD_S) + * cell.blood_rotation; + } + else + basetile = TILE_BLOOD; const int offset = cell.flv.special % tile_dngn_count(basetile); m_buf_feat.add(basetile + offset, x, y); } diff --git a/crawl-ref/source/tiledgnbuf.h b/crawl-ref/source/tiledgnbuf.h index 151e120..f7072dd 100644 --- a/crawl-ref/source/tiledgnbuf.h +++ b/crawl-ref/source/tiledgnbuf.h @@ -27,10 +27,12 @@ struct packed_cell bool is_sanctuary; bool is_liquefied; bool swamp_tree_water; + char blood_rotation; packed_cell() : num_dngn_overlay(0), is_bloody(false), is_silenced(false), is_haloed(false), is_moldy(false), is_sanctuary(false), - is_liquefied(false), swamp_tree_water (false) {} + is_liquefied(false), swamp_tree_water (false), + blood_rotation(0) {} packed_cell(const packed_cell* c) : num_dngn_overlay(c->num_dngn_overlay), fg(c->fg), bg(c->bg), flv(c->flv), @@ -40,7 +42,8 @@ struct packed_cell is_moldy(c->is_moldy), is_sanctuary(c->is_sanctuary), is_liquefied(c->is_liquefied), - swamp_tree_water(c->swamp_tree_water) {} + swamp_tree_water(c->swamp_tree_water), + blood_rotation(c->blood_rotation) {} void clear(); }; diff --git a/crawl-ref/source/tileview.cc b/crawl-ref/source/tileview.cc index 54d0a08..90b5810 100644 --- a/crawl-ref/source/tileview.cc +++ b/crawl-ref/source/tileview.cc @@ -1053,7 +1053,10 @@ void tile_apply_properties(const coord_def &gc, packed_cell &cell) cell.is_moldy = true; // Corpses have a blood puddle of their own. else if (is_bloodcovered(gc) && !_top_item_is_corpse(gc)) + { cell.is_bloody = true; + cell.blood_rotation = blood_rotation(gc); + } } const dungeon_feature_type feat = grd(gc); diff --git a/crawl-ref/source/util/rotate-tile.pl b/crawl-ref/source/util/rotate-tile.pl new file mode 100755 index 0000000..f809a4d --- /dev/null +++ b/crawl-ref/source/util/rotate-tile.pl @@ -0,0 +1,30 @@ +#!/usr/bin/perl -w + +use strict; + +use File::Basename; + +if (@ARGV != 1) { + die "usage: $0 tile.png\n"; +} + +my $TILE = shift; + +unless (-f $TILE) { + die "Couldn't find $TILE: $!\n"; +} + +my %orient = ( + 90 => "w", + 180 => "n", + 270 => "e", +); + +my ($name,$path) = fileparse($TILE, ".png"); + +for my $deg (90, 180, 270) { + print `convert -rotate $deg $TILE $path/${name}_$orient{$deg}.png\n` + or die "$!\n"; +} + +rename $TILE, "$path/${name}_s.png"; -- Dungeon Crawl Stone Soup |