diff options
author | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-07-21 18:22:37 +0000 |
---|---|---|
committer | j-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573> | 2008-07-21 18:22:37 +0000 |
commit | 17652535bdeaf8d56ee88ed9296708ff6efd8a31 (patch) | |
tree | ceaf2d57b6f390119ad858e2a60cfad5f76f3f08 /crawl-ref/source/spells4.cc | |
parent | 70c9cdbfc3009b64f58482a1506848ed6437e1f3 (diff) | |
download | crawl-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.cc | 27 |
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); |