summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
authorharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-11-29 17:16:19 +0000
committerharanp <haranp@c06c8d41-db1a-0410-9941-cceddc491573>2007-11-29 17:16:19 +0000
commit6bfb01482ac083b2925189761441f45f1bb18fd3 (patch)
tree031dc7a4d8e7cdd00bba6d31a05d5d581491b15a /crawl-ref/source/decks.cc
parent52d10fd2208ea3aa0c8bc34948da77162c495d01 (diff)
downloadcrawl-ref-6bfb01482ac083b2925189761441f45f1bb18fd3.tar.gz
crawl-ref-6bfb01482ac083b2925189761441f45f1bb18fd3.zip
Added Vitrification to the Deck of Dungeons: makes walls transparent.
git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2936 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/decks.cc')
-rw-r--r--crawl-ref/source/decks.cc34
1 files changed, 33 insertions, 1 deletions
diff --git a/crawl-ref/source/decks.cc b/crawl-ref/source/decks.cc
index 931736f73d..0010b70c5d 100644
--- a/crawl-ref/source/decks.cc
+++ b/crawl-ref/source/decks.cc
@@ -112,7 +112,7 @@ static card_type a_deck_of_wonders[] = {
DEFVEC(deck_of_wonders);
static card_type a_deck_of_dungeons[] = {
- CARD_MAP, CARD_DOWSING, CARD_SPADE, CARD_TROWEL, CARD_MINEFIELD
+ CARD_GLASS, CARD_MAP, CARD_DOWSING, CARD_SPADE, CARD_TROWEL, CARD_MINEFIELD
};
DEFVEC(deck_of_dungeons);
@@ -235,6 +235,7 @@ const char* card_name(card_type card)
case CARD_MINEFIELD: return "the Minefield";
case CARD_GENIE: return "the Genie";
case CARD_TOMB: return "the Tomb";
+ case CARD_GLASS: return "Vitrification";
case CARD_MAP: return "the Map";
case CARD_BANSHEE: return "the Banshee";
case CARD_WILD_MAGIC: return "Wild Magic";
@@ -1938,6 +1939,36 @@ static void helix_card(int power, deck_rarity_type rarity)
mpr("You feel transcendent for a moment.");
}
+static void glass_card(int power, deck_rarity_type rarity)
+{
+ const int power_level = get_power_level(power, rarity);
+ int radius2;
+ if ( power_level == 2 )
+ radius2 = 1000000;
+ else
+ {
+ radius2 = random2(power/40) + 2;
+ radius2 *= radius2;
+ }
+
+ for ( int x = X_BOUND_1; x <= X_BOUND_2; ++x )
+ {
+ for ( int y = Y_BOUND_1; y <= Y_BOUND_2; ++y )
+ {
+ if ( distance(x,y,you.x_pos,you.y_pos) < radius2 )
+ {
+ if ( grd[x][y] == DNGN_ROCK_WALL )
+ grd[x][y] = DNGN_CLEAR_ROCK_WALL;
+ else if ( grd[x][y] == DNGN_STONE_WALL )
+ grd[x][y] = DNGN_CLEAR_STONE_WALL;
+ else if ( grd[x][y] == DNGN_PERMAROCK_WALL )
+ grd[x][y] = DNGN_CLEAR_PERMAROCK_WALL;
+ }
+ }
+ }
+
+}
+
static void dowsing_card(int power, deck_rarity_type rarity)
{
const int power_level = get_power_level(power, rarity);
@@ -2289,6 +2320,7 @@ bool card_effect(card_type which_card, deck_rarity_type rarity,
case CARD_SHUFFLE: shuffle_card(power, rarity); break;
case CARD_EXPERIENCE: potion_effect(POT_EXPERIENCE, power/4); break;
case CARD_HELIX: helix_card(power, rarity); break;
+ case CARD_GLASS: glass_card(power, rarity); break;
case CARD_DOWSING: dowsing_card(power, rarity); break;
case CARD_MINEFIELD: minefield_card(power, rarity); break;
case CARD_GENIE: genie_card(power, rarity); break;