summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/spl-tornado.cc
diff options
context:
space:
mode:
authorRaphael Langella <raphael.langella@gmail.com>2011-09-15 15:45:47 +0000
committerRaphael Langella <raphael.langella@gmail.com>2011-09-15 23:50:30 +0200
commitda42bcd28637cab0f11e92559ad58b47a98b75fd (patch)
treea12cf51db4c1ae724118697fa5507b181104c93b /crawl-ref/source/spl-tornado.cc
parent64d129586ba2ece899d68110867b8b7be714d87a (diff)
downloadcrawl-ref-da42bcd28637cab0f11e92559ad58b47a98b75fd.tar.gz
crawl-ref-da42bcd28637cab0f11e92559ad58b47a98b75fd.zip
Tornado adjustments.
* Duration fixed at 60 aut (what you had at power 120). * Damage boosted by 28.5% * Noise reduced to r * 3
Diffstat (limited to 'crawl-ref/source/spl-tornado.cc')
-rw-r--r--crawl-ref/source/spl-tornado.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/crawl-ref/source/spl-tornado.cc b/crawl-ref/source/spl-tornado.cc
index 223525bf4c..bfac49f12d 100644
--- a/crawl-ref/source/spl-tornado.cc
+++ b/crawl-ref/source/spl-tornado.cc
@@ -98,7 +98,7 @@ bool WindSystem::has_wind(coord_def c)
static void _set_tornado_durations(int powc)
{
- int dur = 40 + powc / 6;
+ int dur = 60;
you.duration[DUR_TORNADO] = dur;
you.duration[DUR_LEVITATION] =
std::max(dur, you.duration[DUR_LEVITATION]);
@@ -226,7 +226,7 @@ void tornado_damage(actor *caster, int dur)
pow = caster->as_monster()->hit_dice * 4;
dprf("Doing tornado, dur %d, effective power %d", dur, pow);
const coord_def org = caster->pos();
- noisy(25, org, caster->mindex());
+ int max_noise = 0;
WindSystem winds(org);
int age = _tornado_age(caster);
@@ -269,6 +269,10 @@ void tornado_damage(actor *caster, int dur)
if (!rpow)
break;
+ int noise = div_rand_round(r * rdur * 3, 100);
+ if (noise > max_noise)
+ max_noise = noise;
+
std::vector<coord_def> clouds;
for (; dam_i && dam_i.radius() == r; ++dam_i)
{
@@ -338,7 +342,7 @@ void tornado_damage(actor *caster, int dur)
float_player(false);
}
int dmg = apply_chunked_AC(
- div_rand_round(roll_dice(7, rpow), 15),
+ div_rand_round(roll_dice(9, rpow), 15),
victim->armour_class());
if (dur < 0)
dmg = 0;
@@ -367,6 +371,8 @@ void tornado_damage(actor *caster, int dur)
}
}
+ noisy(max_noise, org, caster->mindex());
+
if (dur <= 0)
return;