diff options
author | Matthew Cline <zelgadis@sourceforge.net> | 2009-11-17 11:44:35 -0800 |
---|---|---|
committer | Matthew Cline <zelgadis@sourceforge.net> | 2009-11-17 11:44:35 -0800 |
commit | 76266acfba0ff1e233907c3e392dbb3329491437 (patch) | |
tree | 53542b9e9ece8a2c3686dae168b15b4a5bd576e0 /crawl-ref/source/effects.cc | |
parent | 155946e89327f4a852aea98e00de172d021e2ada (diff) | |
download | crawl-ref-76266acfba0ff1e233907c3e392dbb3329491437.tar.gz crawl-ref-76266acfba0ff1e233907c3e392dbb3329491437.zip |
torment(): set attacker from caster
Diffstat (limited to 'crawl-ref/source/effects.cc')
-rw-r--r-- | crawl-ref/source/effects.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index c161837a6f..b31ed17d89 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -336,11 +336,24 @@ int torment_monsters(coord_def where, int pow, int caster, actor *attacker) int torment(int caster, const coord_def& where) { + actor* attacker = NULL; + + if (!invalid_monster_index(caster)) + attacker = &menv[caster]; + else if (caster < 0 && you.turn_is_over && where == you.pos() + && !(crawl_state.is_god_acting() + &&crawl_state.is_god_retribution())) + { + // Maybe monsters should still consider it your fault if it's + // caused by divine retribution? + attacker = &you; + } + los_def los(where); los.update(); int r = 0; for (radius_iterator ri(&los); ri; ++ri) - r += torment_monsters(*ri, 0, caster); + r += torment_monsters(*ri, 0, caster, attacker); return (r); } |