From 17652535bdeaf8d56ee88ed9296708ff6efd8a31 Mon Sep 17 00:00:00 2001 From: j-p-e-g Date: Mon, 21 Jul 2008 18:22:37 +0000 Subject: 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 --- crawl-ref/source/spells4.cc | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'crawl-ref/source/spells4.cc') 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); -- cgit v1.2.3-54-g00ecf