summaryrefslogtreecommitdiffstats
path: root/stone_soup/crawl-ref/source/decks.cc
diff options
context:
space:
mode:
Diffstat (limited to 'stone_soup/crawl-ref/source/decks.cc')
-rw-r--r--stone_soup/crawl-ref/source/decks.cc906
1 files changed, 0 insertions, 906 deletions
diff --git a/stone_soup/crawl-ref/source/decks.cc b/stone_soup/crawl-ref/source/decks.cc
deleted file mode 100644
index 47a74106be..0000000000
--- a/stone_soup/crawl-ref/source/decks.cc
+++ /dev/null
@@ -1,906 +0,0 @@
-/*
- * File: decks.cc
- * Summary: Functions with decks of cards.
- *
- * Change History (most recent first):
- *
- * <1> -/--/-- LRH Created
- */
-
-#include "AppHdr.h"
-#include "decks.h"
-
-#include <string.h>
-
-#include "externs.h"
-
-#include "effects.h"
-#include "food.h"
-#include "it_use2.h"
-#include "items.h"
-#include "misc.h"
-#include "monplace.h"
-#include "mutation.h"
-#include "ouch.h"
-#include "player.h"
-#include "religion.h"
-#include "spells1.h"
-#include "spells3.h"
-#include "spl-cast.h"
-#include "stuff.h"
-
-// array sizes -- see notes below {dlb}
-#define DECK_WONDERS_SIZE 27
-#define DECK_SUMMONING_SIZE 11
-#define DECK_TRICKS_SIZE 11
-#define DECK_POWER_SIZE 17
-#define DECK_PUNISHMENT_SIZE 23
-
-enum CARDS // (unsigned char) deck_of_foo[]
-{
- CARD_BLANK = 0, // 0
- CARD_BUTTERFLY,
- CARD_WRAITH,
- CARD_EXPERIENCE,
- CARD_WEALTH,
- CARD_INTELLIGENCE, // 5
- CARD_STRENGTH,
- CARD_QUICKSILVER,
- CARD_STUPIDITY,
- CARD_WEAKNESS,
- CARD_SLOTH, // 10
- CARD_SHUFFLE,
- CARD_FREAK,
- CARD_DEATH,
- CARD_NORMALITY,
- CARD_SHADOW, // 15
- CARD_GATE,
- CARD_STATUE,
- CARD_ACQUISITION,
- CARD_HASTEN,
- CARD_DEMON_LESSER, // 20
- CARD_DEMON_COMMON,
- CARD_DEMON_GREATER,
- CARD_DEMON_SWARM,
- CARD_YAK,
- CARD_FIEND, // 25
- CARD_DRAGON,
- CARD_GOLEM,
- CARD_THING_FUGLY,
- CARD_LICH,
- CARD_HORROR_UNSEEN, // 30
- CARD_BLINK,
- CARD_TELEPORT,
- CARD_TELEPORT_NOW,
- CARD_RAGE,
- CARD_LEVITY, // 35
- CARD_VENOM,
- CARD_XOM,
- CARD_SLOW,
- CARD_DECAY,
- CARD_HEALING, // 40
- CARD_HEAL_WOUNDS,
- CARD_TORMENT,
- CARD_FOUNTAIN,
- CARD_ALTAR,
- CARD_FAMINE, // 45
- CARD_FEAST,
- CARD_WILD_MAGIC,
- CARD_VIOLENCE,
- CARD_PROTECTION,
- CARD_KNOWLEDGE, // 50
- CARD_MAZE,
- CARD_PANDEMONIUM,
- CARD_IMPRISONMENT,
- CARD_RULES_FOR_BRIDGE, // 54
- NUM_CARDS, // must remain last regular member {dlb}
- CARD_RANDOM = 255 // must remain final member {dlb}
-};
-
-static unsigned char deck_of_wonders[] =
-{
- CARD_BLANK,
- CARD_BUTTERFLY,
- CARD_WRAITH,
- CARD_EXPERIENCE,
- CARD_WEALTH,
- CARD_INTELLIGENCE,
- CARD_STRENGTH,
- CARD_QUICKSILVER,
- CARD_STUPIDITY,
- CARD_WEAKNESS,
- CARD_SLOTH,
- CARD_SHUFFLE,
- CARD_FREAK,
- CARD_DEATH,
- CARD_NORMALITY,
- CARD_SHADOW,
- CARD_GATE,
- CARD_STATUE,
- CARD_ACQUISITION,
- CARD_HASTEN,
- CARD_LICH,
- CARD_XOM,
- CARD_DECAY,
- CARD_ALTAR,
- CARD_FOUNTAIN,
- CARD_MAZE,
- CARD_PANDEMONIUM
-};
-
-static unsigned char deck_of_summoning[] =
-{
- CARD_STATUE,
- CARD_DEMON_LESSER,
- CARD_DEMON_COMMON,
- CARD_DEMON_GREATER,
- CARD_DEMON_SWARM,
- CARD_YAK,
- CARD_FIEND,
- CARD_DRAGON,
- CARD_GOLEM,
- CARD_THING_FUGLY,
- CARD_HORROR_UNSEEN
-};
-
-static unsigned char deck_of_tricks[] =
-{
- CARD_BLANK,
- CARD_BUTTERFLY,
- CARD_BLINK,
- CARD_TELEPORT,
- CARD_TELEPORT_NOW,
- CARD_RAGE,
- CARD_LEVITY,
- CARD_HEALING,
- CARD_WILD_MAGIC,
- CARD_DEMON_LESSER,
- CARD_HASTEN
-};
-
-static unsigned char deck_of_power[] =
-{
- CARD_BLANK,
- CARD_DEMON_COMMON,
- CARD_DEMON_GREATER,
- CARD_TELEPORT_NOW,
- CARD_VENOM,
- CARD_XOM,
- CARD_HEAL_WOUNDS,
- CARD_FAMINE,
- CARD_FEAST,
- CARD_WILD_MAGIC,
- CARD_VIOLENCE,
- CARD_PROTECTION,
- CARD_KNOWLEDGE,
- CARD_HASTEN,
- CARD_TORMENT,
- CARD_DEMON_SWARM,
- CARD_SLOW
-};
-
-// Supposed to be bad, small chance of OK... Nemelex wouldn't like a game
-// that didn't have some chance of "losing".
-static unsigned char deck_of_punishment[] =
-{
- CARD_BLANK,
- CARD_BUTTERFLY,
- CARD_WRAITH,
- CARD_WEALTH,
- CARD_STUPIDITY,
- CARD_WEAKNESS,
- CARD_SLOTH,
- CARD_SHUFFLE,
- CARD_FREAK,
- CARD_DEATH,
- CARD_NORMALITY,
- CARD_SHADOW,
- CARD_GATE,
- CARD_DEMON_SWARM,
- CARD_RAGE,
- CARD_VENOM,
- CARD_SLOW,
- CARD_DECAY,
- CARD_TORMENT,
- CARD_FAMINE,
- CARD_WILD_MAGIC,
- CARD_MAZE,
- CARD_PANDEMONIUM
-};
-
-static void cards(unsigned char which_card);
-
-void deck_of_cards(unsigned char which_deck)
-{
-
- // I really am not fond of how all of this works, the
- // decks ought to be stored (possibly) in an array of
- // pointers to int or as discrete arrays of int using
- // the sizeof operator to determine upper bounds, and
- // not defines, which is a bit clumsy given that you
- // have to update two things presently (the array and
- // the corresponding define) in order to add things to
- // decks ... someone fix this, or I will {dlb}
- unsigned char *card = deck_of_wonders;
- unsigned char max_card = 0;
- int i = 0;
- int brownie_points = 0; // for passing to did_god_conduct() {dlb}
-
- mpr("You draw a card...");
-
- switch (which_deck)
- {
- case DECK_OF_WONDERS:
- card = deck_of_wonders;
- max_card = DECK_WONDERS_SIZE;
- break;
- case DECK_OF_SUMMONING:
- card = deck_of_summoning;
- max_card = DECK_SUMMONING_SIZE;
- break;
- case DECK_OF_TRICKS:
- card = deck_of_tricks;
- max_card = DECK_TRICKS_SIZE;
- break;
- case DECK_OF_POWER:
- card = deck_of_power;
- max_card = DECK_POWER_SIZE;
- break;
- case DECK_OF_PUNISHMENT:
- card = deck_of_punishment;
- max_card = DECK_PUNISHMENT_SIZE;
- break;
- }
-
- i = (int) card[random2(max_card)];
-
- if (one_chance_in(250))
- {
- mpr("This card doesn't seem to belong here.");
- i = random2(NUM_CARDS);
- }
-
- if (i == CARD_BLANK && you.skills[SK_EVOCATIONS] > random2(30))
- i = (int) card[random2(max_card)];
-
- cards(i);
-
- // Decks of punishment aren't objects in the game,
- // its just Nemelex's form of punishment -- bwr
- if (which_deck != DECK_OF_PUNISHMENT)
- {
- you.inv[you.equip[EQ_WEAPON]].plus--;
-
- if (you.inv[you.equip[EQ_WEAPON]].plus == 0)
- {
- mpr("The deck of cards disappears in a puff of smoke.");
-
- unwield_item(you.equip[EQ_WEAPON]);
-
- dec_inv_item_quantity( you.equip[EQ_WEAPON], 1 );
-
- // these bonuses happen only when the deck expires {dlb}:
- brownie_points = (coinflip()? 2 : 1);
-
- if (which_deck == DECK_OF_WONDERS)
- brownie_points += 2;
- else if (which_deck == DECK_OF_POWER)
- brownie_points++;
- }
-
- // this bonus happens with every use {dlb}:
- if (which_deck == DECK_OF_WONDERS || one_chance_in(3))
- brownie_points++;
-
- did_god_conduct(DID_CARDS, brownie_points);
- }
-
- return;
-} // end deck_of_cards()
-
-static void cards(unsigned char which_card)
-{
- FixedVector < int, 5 > dvar;
- FixedVector < int, 5 > mvar;
- int dvar1 = 0;
- int loopy = 0; // general purpose loop variable {dlb}
- bool success = false; // for summoning messages {dlb}
- bool failMsg = true;
- int summ_dur, summ_beh, summ_num;
-
- if (which_card == CARD_BLANK && one_chance_in(10))
- which_card = CARD_RULES_FOR_BRIDGE;
-
- switch (which_card)
- {
- default:
- case CARD_BLANK:
- mpr("It is blank.");
- break;
-
- case CARD_BUTTERFLY:
- mpr("You have drawn the Butterfly.");
-
- summ_dur = ENCH_ABJ_I + random2(3) + you.skills[SK_EVOCATIONS] / 2;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( MONS_BUTTERFLY, summ_dur, BEH_FRIENDLY,
- you.x_pos, you.y_pos, MHITYOU, 250 ) != -1)
- {
- mpr("A brightly coloured insect flies from the card!");
- }
- break;
-
- case CARD_WRAITH:
- mpr("You have drawn the Wraith.");
-
- lose_level();
- drain_exp();
- break;
-
- case CARD_EXPERIENCE:
- mpr( "You have drawn Experience." );
- potion_effect( POT_EXPERIENCE, 0 );
- break;
-
- case CARD_WEALTH:
- mpr("You have drawn Wealth.");
-
- you.gold += roll_dice( 2, 20 * you.skills[SK_EVOCATIONS] );
- you.redraw_gold = 1;
- break;
-
- case CARD_INTELLIGENCE:
- mpr("You have drawn the Brain!");
-
- you.intel += 1 + random2( you.skills[SK_EVOCATIONS] ) / 7;
-
- if (you.max_intel < you.intel)
- you.max_intel = you.intel;
-
- you.redraw_intelligence = 1;
- break;
-
- case CARD_STRENGTH:
- mpr("You have drawn Strength!");
-
- you.strength += 1 + random2( you.skills[SK_EVOCATIONS] ) / 7;
-
- if (you.max_strength < you.strength)
- you.max_strength = you.strength;
-
- you.redraw_strength = 1;
- break;
-
- case CARD_QUICKSILVER:
- mpr("You have drawn the Quicksilver card.");
-
- you.dex += 1 + random2( you.skills[SK_EVOCATIONS] ) / 7;
-
- if (you.max_dex < you.dex)
- you.max_dex = you.dex;
-
- you.redraw_dexterity = 1;
- break;
-
- case CARD_STUPIDITY:
- mpr("You have drawn Stupidity!");
-
- you.intel -= (2 + random2avg(3, 2));
- if (you.intel < 4)
- you.intel = 0;
-
- if (you.skills[SK_EVOCATIONS] < random2(30))
- you.max_intel--;
-
- you.redraw_intelligence = 1;
- break;
-
- case CARD_WEAKNESS:
- mpr("You have drawn Weakness.");
-
- you.strength -= (2 + random2avg(3, 2));
- if (you.strength < 4)
- you.strength = 0;
-
- if (you.skills[SK_EVOCATIONS] < random2(30))
- you.max_strength--;
-
- you.redraw_strength = 1;
- break;
-
- case CARD_SLOTH:
- mpr("You have drawn the Slug.");
-
- you.dex -= (2 + random2avg(3, 2));
- if (you.dex < 4)
- you.dex = 0;
-
- if (you.skills[SK_EVOCATIONS] < random2(30))
- you.max_dex--;
-
- you.redraw_dexterity = 1;
- break;
-
- case CARD_SHUFFLE: // shuffle stats
- mpr("You have drawn the Shuffle card!");
-
- dvar[STAT_STRENGTH] = you.strength;
- dvar[STAT_DEXTERITY] = you.dex;
- dvar[STAT_INTELLIGENCE] = you.intel;
-
- mvar[STAT_STRENGTH] = you.max_strength;
- mvar[STAT_DEXTERITY] = you.max_dex;
- mvar[STAT_INTELLIGENCE] = you.max_intel;
-
- you.strength = 101;
- you.intel = 101;
- you.dex = 101;
-
- do
- {
- dvar1 = random2(NUM_STATS);
-
- if (dvar[dvar1] == 101)
- continue;
-
- if (you.strength == 101)
- {
- you.strength = dvar[dvar1];
- you.max_strength = mvar[dvar1];
- }
- else if (you.intel == 101)
- {
- you.intel = dvar[dvar1];
- you.max_intel = mvar[dvar1];
- }
- else if (you.dex == 101)
- {
- you.dex = dvar[dvar1];
- you.max_dex = mvar[dvar1];
- }
-
- dvar[dvar1] = 101;
- }
- while (dvar[STAT_STRENGTH] != 101 || dvar[STAT_DEXTERITY] != 101
- || dvar[STAT_INTELLIGENCE] != 101);
-
- you.redraw_strength = 1;
- you.redraw_intelligence = 1;
- you.redraw_dexterity = 1;
- burden_change();
- break;
-
- case CARD_FREAK:
- mpr("You have drawn the Freak!");
- for (loopy = 0; loopy < 6; loopy++)
- {
- if (!mutate(100, failMsg))
- failMsg = false;
- }
- break;
-
- case CARD_DEATH:
- mpr("Oh no! You have drawn the Death card!");
-
- if (you.duration[DUR_TELEPORT])
- you_teleport();
-
- for (loopy = 0; loopy < 5; loopy++)
- {
- create_monster( MONS_REAPER, 0, BEH_HOSTILE, you.x_pos, you.y_pos,
- MHITYOU, 250 );
- }
- break;
-
- case CARD_NORMALITY:
- mpr("You have drawn Normalisation.");
- for (loopy = 0; loopy < 6; loopy++)
- {
- delete_mutation(100);
- }
- break;
-
- case CARD_SHADOW:
- mpr("You have drawn the Shadow.");
- create_monster( MONS_SOUL_EATER, 0, BEH_HOSTILE, you.x_pos, you.y_pos,
- MHITYOU, 250 );
- break;
-
- case CARD_GATE:
- mpr("You have drawn the Gate!");
- more();
-
- if (you.level_type == LEVEL_ABYSS)
- banished(DNGN_EXIT_ABYSS);
- else if (you.level_type == LEVEL_LABYRINTH)
- canned_msg(MSG_NOTHING_HAPPENS);
- else
- banished(DNGN_ENTER_ABYSS);
- break;
-
- case CARD_STATUE:
- mpr("You have drawn the Crystal Statue.");
- create_monster( MONS_CRYSTAL_GOLEM, 0, BEH_FRIENDLY,
- you.x_pos, you.y_pos, you.pet_target, 250 );
- break;
-
- case CARD_ACQUISITION:
- mpr( "You have drawn Acquisition!" );
- mpr( "The card unfolds to form a scroll of paper." );
- acquirement( OBJ_RANDOM, AQ_CARD_ACQUISITION );
- break;
-
- case CARD_HASTEN:
- mpr("You have drawn Haste.");
- potion_effect( POT_SPEED, 5 * you.skills[SK_EVOCATIONS] );
- break;
-
- case CARD_DEMON_LESSER:
- mpr("On the card is a picture of a little demon.");
-
- summ_dur = ENCH_ABJ_I + random2(3) + you.skills[SK_EVOCATIONS] / 3;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( summon_any_demon( DEMON_LESSER ), summ_dur,
- BEH_FRIENDLY, you.x_pos, you.y_pos, you.pet_target,
- 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_DEMON_COMMON:
- mpr("On the card is a picture of a demon.");
-
- summ_dur = ENCH_ABJ_I + random2(3) + you.skills[SK_EVOCATIONS] / 4;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( summon_any_demon( DEMON_COMMON ), summ_dur,
- BEH_FRIENDLY, you.x_pos, you.y_pos, you.pet_target,
- 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_DEMON_GREATER:
- mpr("On the card is a picture of a huge demon.");
-
- summ_beh = (you.skills[SK_EVOCATIONS] > random2(30)) ? BEH_FRIENDLY
- : BEH_CHARMED;
-
- if (summ_beh == BEH_CHARMED)
- mpr( "You don't feel so good about this..." );
-
- if (create_monster( summon_any_demon( DEMON_GREATER ), ENCH_ABJ_V,
- summ_beh, you.x_pos, you.y_pos,
- you.pet_target, 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_DEMON_SWARM:
- mpr("On the card is a picture of a swarm of little demons.");
-
- success = false;
-
- summ_num = 7 + random2(6);
-
- for (loopy = 0; loopy < summ_num; loopy++)
- {
- if (create_monster( summon_any_demon( DEMON_LESSER ), ENCH_ABJ_VI,
- BEH_HOSTILE, you.x_pos, you.y_pos,
- MHITYOU, 250 ) != -1)
- {
- success = true;
- }
- }
-
- if (success)
- mpr("The picture comes to life!");
- break;
-
- case CARD_YAK:
- mpr("On the card is a picture of a huge shaggy yak.");
-
- summ_dur = ENCH_ABJ_II + you.skills[SK_EVOCATIONS] / 2;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( MONS_DEATH_YAK, summ_dur, BEH_FRIENDLY,
- you.x_pos, you.y_pos, you.pet_target, 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_FIEND:
- mpr("On the card is a picture of a huge scaly devil.");
-
- summ_dur = ENCH_ABJ_II + you.skills[SK_EVOCATIONS] / 6;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( MONS_FIEND, summ_dur, BEH_FRIENDLY,
- you.x_pos, you.y_pos, you.pet_target, 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_DRAGON:
- mpr("On the card is a picture of a huge scaly dragon.");
-
- summ_dur = ENCH_ABJ_III + you.skills[SK_EVOCATIONS] / 6;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( (coinflip() ? MONS_DRAGON : MONS_ICE_DRAGON),
- summ_dur, BEH_FRIENDLY, you.x_pos, you.y_pos,
- you.pet_target, 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_GOLEM:
- mpr("On the card is a picture of a statue.");
-
- summ_dur = ENCH_ABJ_II + you.skills[SK_EVOCATIONS] / 4;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( MONS_CLAY_GOLEM + random2(6), summ_dur,
- BEH_FRIENDLY, you.x_pos, you.y_pos,
- you.pet_target, 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_THING_FUGLY:
- mpr("On the card is a picture of a very ugly thing.");
-
- summ_dur = ENCH_ABJ_II + you.skills[SK_EVOCATIONS] / 4;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( MONS_VERY_UGLY_THING, summ_dur, BEH_FRIENDLY,
- you.x_pos, you.y_pos, you.pet_target, 250 ) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_LICH:
- mpr( "On the card is a picture of a very irritated-looking "
- "skeletal thing." );
-
- if (create_monster( MONS_LICH, 0, BEH_HOSTILE, you.x_pos, you.y_pos,
- MHITYOU, 250) != -1)
- {
- mpr("The picture comes to life!");
- }
- break;
-
- case CARD_HORROR_UNSEEN:
- if (!player_see_invis())
- mpr("It is blank!");
- else
- mpr("On the card is a picture of a hideous abomination.");
-
- summ_dur = ENCH_ABJ_II + you.skills[SK_EVOCATIONS] / 4;
- if (summ_dur > ENCH_ABJ_VI)
- summ_dur = ENCH_ABJ_VI;
-
- if (create_monster( MONS_UNSEEN_HORROR, summ_dur, BEH_FRIENDLY,
- you.x_pos, you.y_pos, you.pet_target, 250 ) != -1)
- {
- if (player_see_invis())
- {
- mpr("The picture comes to life!");
- }
- }
- break;
-
- case CARD_BLINK:
- mpr("You have drawn Blink.");
- blink();
- // random_blink(true);
- break;
-
- case CARD_TELEPORT:
- mpr("You have drawn the Portal of Delayed Transposition.");
- you_teleport();
- break;
-
- case CARD_TELEPORT_NOW:
- mpr( "You have drawn the Portal of Instantaneous Transposition." );
- you_teleport2( true, true ); // in abyss, always to new area
- break;
-
- case CARD_RAGE:
- mpr("You have drawn Rage.");
-
- if (!go_berserk(false))
- canned_msg(MSG_NOTHING_HAPPENS);
- else
- you.berserk_penalty = NO_BERSERK_PENALTY;
- break;
-
- case CARD_LEVITY:
- mpr("You have drawn Levity.");
- potion_effect( POT_LEVITATION, 5 * you.skills[SK_EVOCATIONS] );
- break;
-
- case CARD_VENOM:
- mpr("You have drawn Venom.");
- poison_player( 2 + random2( 7 - you.skills[SK_EVOCATIONS] / 5 ) );
- break;
-
- case CARD_XOM:
- mpr("You have drawn the card of Xom!");
- Xom_acts( true, 5 + random2( you.skills[SK_EVOCATIONS] ), true );
- break;
-
- case CARD_SLOW:
- mpr("You have drawn Slowness.");
- potion_effect( POT_SLOWING, 100 - 2 * you.skills[SK_EVOCATIONS] );
- break;
-
- case CARD_DECAY:
- mpr("You have drawn Decay.");
-
- if (you.is_undead)
- mpr("You feel terrible.");
- else
- rot_player( 2 + random2( 7 - you.skills[SK_EVOCATIONS] / 4 ) );
- break;
-
- case CARD_HEALING:
- mpr("You have drawn the Elixir of Health.");
- potion_effect( POT_HEALING, 5 * you.skills[SK_EVOCATIONS] );
- break;
-
- case CARD_HEAL_WOUNDS:
- mpr("You have drawn the Symbol of Immediate Regeneration.");
- potion_effect( POT_HEAL_WOUNDS, 5 * you.skills[SK_EVOCATIONS] );
- break;
-
- case CARD_TORMENT:
- mpr("You have drawn the Symbol of Torment.");
- torment( you.x_pos, you.y_pos );
- break;
-
-// what about checking whether there are items there, too? {dlb}
- case CARD_FOUNTAIN:
- mpr("You have drawn the Fountain.");
-
- if (grd[you.x_pos][you.y_pos] == DNGN_FLOOR)
- {
- strcpy( info, "A beautiful fountain of clear blue water grows "
- "from the floor " );
-
- strcat( info, (you.species == SP_NAGA || you.species == SP_CENTAUR)
- ? "before you!" : "at your feet!" );
- mpr(info);
- grd[you.x_pos][you.y_pos] = DNGN_BLUE_FOUNTAIN;
- }
- else
- {
- canned_msg(MSG_NOTHING_HAPPENS);
- }
- break;
-
- case CARD_ALTAR:
- mpr("You have drawn the Altar.");
-
- if (you.religion == GOD_NO_GOD)
- {
- canned_msg(MSG_NOTHING_HAPPENS);
- }
- else
- {
- dvar1 = 179 + you.religion;
-
- if (grd[you.x_pos][you.y_pos] == DNGN_FLOOR)
- {
- strcpy(info, "An altar grows from the floor ");
- strcat(info,
- (you.species == SP_NAGA || you.species == SP_CENTAUR)
- ? "before you!" : "at your feet!");
- mpr(info);
- grd[you.x_pos][you.y_pos] = dvar1;
- }
- else
- {
- do
- {
- dvar[0] = 10 + random2(GXM - 20);
- dvar[1] = 10 + random2(GYM - 20);
- }
- while (grd[dvar[0]][dvar[1]] != DNGN_FLOOR);
-
- grd[dvar[0]][dvar[1]] = dvar1;
-
- mpr( "You sense divine power!" );
- }
- }
- break;
-
- case CARD_FAMINE:
- mpr("You have drawn Famine.");
-
- if (you.is_undead == US_UNDEAD)
- mpr("You feel rather smug.");
- else
- set_hunger(500, true);
- break;
-
- case CARD_FEAST:
- mpr("You have drawn the Feast.");
-
- if (you.is_undead == US_UNDEAD)
- mpr("You feel a horrible emptiness.");
- else
- set_hunger(12000, true);
- break;
-
- case CARD_WILD_MAGIC:
- mpr( "You have drawn Wild Magic." );
- miscast_effect( SPTYP_RANDOM, random2(15) + 5, random2(250), 0 );
- break;
-
- case CARD_VIOLENCE:
- mpr("You have drawn Violence.");
- acquirement( OBJ_WEAPONS, AQ_CARD_VIOLENCE );
- break;
-
- case CARD_PROTECTION:
- mpr("You have drawn Protection.");
- acquirement( OBJ_ARMOUR, AQ_CARD_PROTECTION );
- break;
-
- case CARD_KNOWLEDGE:
- mpr("You have drawn Knowledge.");
- acquirement( OBJ_BOOKS, AQ_CARD_KNOWLEDGE );
- break;
-
- case CARD_MAZE:
- mpr("You have drawn the Maze!");
- more();
-
- if (you.level_type == LEVEL_DUNGEON)
- banished( DNGN_ENTER_LABYRINTH );
- break;
-
- case CARD_PANDEMONIUM:
- mpr("You have drawn the Pandemonium card!");
- more();
-
- if (you.level_type == LEVEL_PANDEMONIUM)
- banished(DNGN_EXIT_PANDEMONIUM);
- else if (you.level_type == LEVEL_LABYRINTH)
- canned_msg(MSG_NOTHING_HAPPENS);
- else
- banished(DNGN_ENTER_PANDEMONIUM);
- break;
-
- case CARD_RULES_FOR_BRIDGE:
- mpr("You have drawn the rules for contract bridge.");
- mpr("How intriguing!");
- break;
-
- case CARD_IMPRISONMENT:
- mpr("You have drawn the Prison!");
- entomb();
- break;
- }
-
- return;
-} // end cards()