diff options
author | Chris Campbell <chriscampbell89@gmail.com> | 2014-05-28 03:46:31 +0100 |
---|---|---|
committer | Chris Campbell <chriscampbell89@gmail.com> | 2014-05-28 04:43:17 +0100 |
commit | cd548fe2d1827730c6ba5b5d28242e1d7aca1591 (patch) | |
tree | d047d1952a2a58d17509a5c38932f5b4c5e93540 /crawl-ref/source/effects.cc | |
parent | a5e4a985aef88b7de2b6e483643db4e78c2168f2 (diff) | |
download | crawl-ref-cd548fe2d1827730c6ba5b5d28242e1d7aca1591.tar.gz crawl-ref-cd548fe2d1827730c6ba5b5d28242e1d7aca1591.zip |
Reduce the base chance of applying corrosion, ignore item enchantment for resistance
With temporary corrosion being more abstracted than permanent corrosion,
having items resist individually was a little strange since an artefact
or +9 weapon could still be "corroded" by swapping from something else to
it, or by having your armour be the target of the acid.
Corrosion now just looks at equipped/empty slots to determine the chance
of applying the debuff and how much damage to do with the acid splash,
and is less likely to apply the debuff (compared to low-enchantment
items). Item enchantment (or artefact status, or crystal plate armour-ness)
no longer has an effect. The debuff also now can't be applied multiple times
from one acid splash.
Diffstat (limited to 'crawl-ref/source/effects.cc')
-rw-r--r-- | crawl-ref/source/effects.cc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/crawl-ref/source/effects.cc b/crawl-ref/source/effects.cc index c3b78d22c7..1c07db2562 100644 --- a/crawl-ref/source/effects.cc +++ b/crawl-ref/source/effects.cc @@ -3120,6 +3120,54 @@ void recharge_rods(int aut, bool level_only) _recharge_rod(mitm[item], aut, false); } +/** + * Applies a temporary corrosion debuff to an actor. + */ +void corrode_actor(actor *act) +{ + // Don't corrode spectral weapons. + if (act->is_monster() + && mons_is_avatar(act->as_monster()->type)) + { + return; + } + + // Anti-corrosion items protect against 90% of corrosion. + if (act->res_corr() && !one_chance_in(10)) + { + dprf("Amulet protects."); + return; + } + + if (act->is_player()) + { + you.increase_duration(DUR_CORROSION, 10 + roll_dice(2, 4), 50, + "The acid corrodes your equipment!"); + xom_is_stimulated(50); + you.props["corrosion_amount"].get_int()++; + you.redraw_armour_class = true; + you.wield_change = true; + } + else if (act->type == MONS_PLAYER_SHADOW) + return; // it's just a temp copy of the item + else if (you.see_cell(act->pos())) + { + if (act->type == MONS_DANCING_WEAPON) + { + mprf("The acid corrodes %s!", + act->name(DESC_THE).c_str()); + } + else + { + mprf("The acid corrodes %s equipment!", + apostrophise(act->name(DESC_THE)).c_str()); + } + } + + if (act->is_monster()) + act->as_monster()->add_ench(mon_enchant(ENCH_CORROSION, 0)); +} + void slime_wall_damage(actor* act, int delay) { ASSERT(act); |