summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spells4.cc
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-21 18:22:37 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-21 18:22:37 +0000
commit17652535bdeaf8d56ee88ed9296708ff6efd8a31 (patch)
treeceaf2d57b6f390119ad858e2a60cfad5f76f3f08 /crawl-ref/source/spells4.cc
parent70c9cdbfc3009b64f58482a1506848ed6437e1f3 (diff)
downloadcrawl-ref-17652535bdeaf8d56ee88ed9296708ff6efd8a31.tar.gz
crawl-ref-17652535bdeaf8d56ee88ed9296708ff6efd8a31.zip
Add immunity checks for prompts about beams potentially hitting yourself
(not counting self-targetting since what we're trying to avoid in that case is loss of magic as well as self-damage) and add some special cases for Evaporate, so the potions use appropriate resistances without leaking information on the random choices. Let Enhancers start with Short Blades skill 1. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6627 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/spells4.cc')
-rw-r--r--crawl-ref/source/spells4.cc27
1 files changed, 21 insertions, 6 deletions
diff --git a/crawl-ref/source/spells4.cc b/crawl-ref/source/spells4.cc
index b93f977425..ae095ebe9a 100644
--- a/crawl-ref/source/spells4.cc
+++ b/crawl-ref/source/spells4.cc
@@ -1336,26 +1336,31 @@ bool cast_evaporate(int pow, bolt& beem, int potion)
beem.ench_power = pow; // used for duration only?
beem.flavour = BEAM_POTION_STINKING_CLOUD;
+ beam_type tracer_flavour = BEAM_MMISSILE;
switch (you.inv[potion].sub_type)
{
case POT_STRONG_POISON:
- beem.flavour = BEAM_POTION_POISON;
+ beem.flavour = BEAM_POTION_POISON;
+ tracer_flavour = BEAM_POISON;
beem.ench_power *= 2;
break;
case POT_DEGENERATION:
beem.effect_known = false;
- beem.flavour = (coinflip() ? BEAM_POTION_POISON : BEAM_POTION_MIASMA);
+ beem.flavour = (coinflip() ? BEAM_POTION_POISON : BEAM_POTION_MIASMA);
+ tracer_flavour = BEAM_MIASMA;
beem.ench_power *= 2;
break;
case POT_POISON:
- beem.flavour = BEAM_POTION_POISON;
+ beem.flavour = BEAM_POTION_POISON;
+ tracer_flavour = BEAM_POISON;
break;
case POT_DECAY:
- beem.flavour = BEAM_POTION_MIASMA;
+ beem.flavour = BEAM_POTION_MIASMA;
+ tracer_flavour = BEAM_MIASMA;
beem.ench_power *= 2;
break;
@@ -1364,12 +1369,12 @@ bool cast_evaporate(int pow, bolt& beem, int potion)
// fall through
case POT_CONFUSION:
case POT_SLOWING:
- beem.flavour = BEAM_POTION_STINKING_CLOUD;
+ tracer_flavour = beem.flavour = BEAM_POTION_STINKING_CLOUD;
break;
case POT_WATER:
case POT_PORRIDGE:
- beem.flavour = BEAM_POTION_STEAM;
+ tracer_flavour = beem.flavour = BEAM_STEAM;
break;
case POT_BLOOD:
@@ -1380,6 +1385,10 @@ bool cast_evaporate(int pow, bolt& beem, int potion)
case POT_BERSERK_RAGE:
beem.effect_known = false;
beem.flavour = (coinflip() ? BEAM_POTION_FIRE : BEAM_POTION_STEAM);
+ if (you.inv[potion].sub_type == POT_BERSERK_RAGE)
+ tracer_flavour = BEAM_FIRE;
+ else
+ tracer_flavour = BEAM_RANDOM;
break;
case POT_MUTATION:
@@ -1397,6 +1406,7 @@ bool cast_evaporate(int pow, bolt& beem, int potion)
case 3: beem.flavour = BEAM_POTION_MIASMA; break;
default: beem.flavour = BEAM_POTION_RANDOM; break;
}
+ tracer_flavour = BEAM_RANDOM;
break;
default:
@@ -1413,6 +1423,7 @@ bool cast_evaporate(int pow, bolt& beem, int potion)
case 7: beem.flavour = BEAM_POTION_PURP_SMOKE; break;
default: beem.flavour = BEAM_POTION_STEAM; break;
}
+ tracer_flavour = BEAM_RANDOM;
break;
}
@@ -1425,6 +1436,9 @@ bool cast_evaporate(int pow, bolt& beem, int potion)
beem.fr_count = 0;
beem.beam_cancelled = false;
beem.is_tracer = true;
+
+ beam_type real_flavour = beem.flavour;
+ beem.flavour = tracer_flavour;
fire_beam(beem);
if (beem.beam_cancelled)
@@ -1438,6 +1452,7 @@ bool cast_evaporate(int pow, bolt& beem, int potion)
exercise( SK_THROWING, 1 );
// Really fire.
+ beem.flavour = real_flavour;
beem.is_tracer = false;
fire_beam(beem);