From 5bea4d013197ca276fbeb267ac9fc3fd2f37450c Mon Sep 17 00:00:00 2001 From: dshaligram Date: Thu, 10 Jan 2008 14:20:47 +0000 Subject: More resist fixes. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@3242 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/beam.cc | 69 +++++++++++++++------------- crawl-ref/source/beam.h | 2 +- crawl-ref/source/enum.h | 22 ++++----- crawl-ref/source/fight.cc | 85 +++++++++++++++++++++++++++++------ crawl-ref/source/fight.h | 8 ++-- crawl-ref/source/item_use.cc | 2 +- crawl-ref/source/mon-util.cc | 3 +- crawl-ref/source/monstuff.cc | 3 ++ crawl-ref/source/mstuff2.cc | 2 +- crawl-ref/source/ouch.cc | 105 +++++++++++++++++-------------------------- crawl-ref/source/ouch.h | 2 +- crawl-ref/source/spells2.cc | 2 +- crawl-ref/source/spells2.h | 2 +- crawl-ref/source/spl-cast.cc | 10 ++--- 14 files changed, 185 insertions(+), 132 deletions(-) diff --git a/crawl-ref/source/beam.cc b/crawl-ref/source/beam.cc index dadbb50e87..fcf1ebe415 100644 --- a/crawl-ref/source/beam.cc +++ b/crawl-ref/source/beam.cc @@ -1465,7 +1465,9 @@ void fire_beam( bolt &pbolt, item_def *item ) if (pbolt.flavour == BEAM_RANDOM) { random_beam = true; - pbolt.flavour = BEAM_FIRE + random2(7); + pbolt.flavour = + static_cast( + random_range(BEAM_FIRE, BEAM_ACID) ); } if (!pbolt.affects_nothing) @@ -1602,6 +1604,7 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, hurted = resist_adjust_damage( monster, + pbolt.flavour, pbolt.flavour == BEAM_FIRE ? monster->res_fire() : monster->res_steam(), @@ -1640,7 +1643,8 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, break; case BEAM_COLD: - hurted = resist_adjust_damage(monster, monster->res_cold(), + hurted = resist_adjust_damage(monster, pbolt.flavour, + monster->res_cold(), hurted, true); if (!hurted) { @@ -1660,7 +1664,8 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, break; case BEAM_ELECTRICITY: - hurted = resist_adjust_damage(monster, monster->res_elec(), + hurted = resist_adjust_damage(monster, pbolt.flavour, + monster->res_elec(), hurted, true); if (!hurted) { @@ -1670,7 +1675,8 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, break; case BEAM_ACID: - hurted = resist_adjust_damage(monster, mons_res_acid(monster), + hurted = resist_adjust_damage(monster, pbolt.flavour, + mons_res_acid(monster), hurted, true); if (!hurted) { @@ -1682,7 +1688,8 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, case BEAM_POISON: { int res = mons_res_poison(monster); - hurted = resist_adjust_damage(monster, res, hurted, true); + hurted = resist_adjust_damage(monster, pbolt.flavour, res, + hurted, true); if (!hurted) { if (doFlavouredEffects) @@ -1696,8 +1703,8 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, } case BEAM_POISON_ARROW: - hurted = resist_adjust_damage(monster, - std::min(mons_res_poison(monster), 1), + hurted = resist_adjust_damage(monster, pbolt.flavour, + mons_res_poison(monster), hurted); if (hurted < original) { @@ -1801,36 +1808,31 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, case BEAM_ICE: /* ice - about 50% of damage is cold, other 50% is impact and can't be resisted (except by AC, of course) */ - resist = mons_res_cold(monster); - if (resist > 0) + hurted = resist_adjust_damage(monster, pbolt.flavour, + monster->res_cold(), hurted, + true); + if (hurted < original) { if (doFlavouredEffects) simple_monster_message(monster, " partially resists."); - - hurted /= 2; } - else if (resist < 0) + else if (hurted > original) { if (doFlavouredEffects) simple_monster_message(monster, " is frozen!"); - - hurted *= 13; - hurted /= 10; } break; - } /* end of switch */ - if (pbolt.flavour == BEAM_LAVA) //jmf: lava != hellfire - { - resist = mons_res_fire(monster); - if (resist > 0) + case BEAM_LAVA: + hurted = resist_adjust_damage(monster, pbolt.flavour, + monster->res_fire(), hurted, true); + + if (hurted < original) { if (doFlavouredEffects) simple_monster_message(monster, " partially resists."); - - hurted /= 2; } - else if (resist < 0) + else if (hurted > original) { if (mons_is_icy(monster)) { @@ -1842,12 +1844,13 @@ int mons_adjust_flavoured( monsters *monster, bolt &pbolt, if (doFlavouredEffects) simple_monster_message(monster, " is burned terribly!"); } - - hurted *= 12; - hurted /= 10; } - } - else if (pbolt.name == "hellfire") + break; + default: + break; + } /* end of switch */ + + if (pbolt.name == "hellfire") { resist = mons_res_fire(monster); if (resist > 2) @@ -2971,7 +2974,7 @@ static void affect_place_explosion_clouds(bolt &beam, int x, int y) static void affect_items(bolt &beam, int x, int y) { - char objs_vulnerable = -1; + object_class_type objs_vulnerable = OBJ_UNASSIGNED; switch (beam.flavour) { @@ -2985,6 +2988,8 @@ static void affect_items(bolt &beam, int x, int y) case BEAM_SPORE: objs_vulnerable = OBJ_FOOD; break; + default: + break; } if (beam.name == "hellfire") @@ -2992,7 +2997,7 @@ static void affect_items(bolt &beam, int x, int y) if (igrd[x][y] != NON_ITEM) { - if (objs_vulnerable != -1 && + if (objs_vulnerable != OBJ_UNASSIGNED && mitm[igrd[x][y]].base_type == objs_vulnerable) { item_was_destroyed(mitm[igrd[x][y]], beam.beam_source); @@ -4762,7 +4767,9 @@ static void explosion_cell(bolt &beam, int x, int y, bool drawOnly) if (beam.flavour == BEAM_RANDOM) { random_beam = true; - beam.flavour = BEAM_FIRE + random2(7); + beam.flavour = + static_cast( + random_range(BEAM_FIRE, BEAM_ACID) ); } affect(beam, realx, realy); diff --git a/crawl-ref/source/beam.h b/crawl-ref/source/beam.h index ca54558727..1b90c3e3cd 100644 --- a/crawl-ref/source/beam.h +++ b/crawl-ref/source/beam.h @@ -105,7 +105,7 @@ struct bolt int rangeMax; // maximum range unsigned type; // missile gfx int colour; - int flavour; + beam_type flavour; int source_x, source_y; // beam origin dice_def damage; int ench_power, hit; diff --git a/crawl-ref/source/enum.h b/crawl-ref/source/enum.h index 2d571f028b..a0a33036a3 100644 --- a/crawl-ref/source/enum.h +++ b/crawl-ref/source/enum.h @@ -184,31 +184,33 @@ enum attribute_type enum beam_type // beam[].flavour { - BEAM_MISSILE, // 0 - BEAM_MMISSILE, // 1 - and similarly unresistable things + BEAM_NONE, // 0 + + BEAM_MISSILE, + BEAM_MMISSILE, // and similarly irresistible things BEAM_FIRE, BEAM_COLD, BEAM_MAGIC, - BEAM_ELECTRICITY, // 5 + BEAM_ELECTRICITY, BEAM_POISON, BEAM_NEG, BEAM_ACID, BEAM_MIASMA, - // BEAM_EXPLOSION, // 10 - use is_explosion, and BEAM of flavour - BEAM_SPORE = 11, + + BEAM_SPORE, BEAM_POISON_ARROW, BEAM_HELLFIRE, BEAM_NAPALM, - BEAM_STEAM, // 15 + BEAM_STEAM, BEAM_HELLFROST, BEAM_ENERGY, - BEAM_HOLY, // 18 - aka beam of cleansing, golden flame + BEAM_HOLY, // aka beam of cleansing, golden flame BEAM_FRAG, - BEAM_LAVA, // 20 + BEAM_LAVA, BEAM_BACKLIGHT, BEAM_SLEEP, - BEAM_ICE, // 23 - BEAM_NUKE = 27, // 27 + BEAM_ICE, + BEAM_NUKE, BEAM_RANDOM, // currently translates into FIRE..ACID // These used to be handled in the colour field: diff --git a/crawl-ref/source/fight.cc b/crawl-ref/source/fight.cc index ebec677f8f..4128279a4d 100644 --- a/crawl-ref/source/fight.cc +++ b/crawl-ref/source/fight.cc @@ -1654,29 +1654,81 @@ bool melee_attack::player_monattk_hit_effects(bool mondied) return (false); } -int resist_adjust_damage(actor *defender, int res, int rawdamage, - bool ranged) +static bool is_boolean_resist(beam_type flavour) { - if (defender->atype() == ACT_MONSTER && res >= 3) - return (0); + switch (flavour) + { + case BEAM_ELECTRICITY: + return (true); + default: + return (false); + } +} + +// Gets the percentage of the total damage of this damage flavour that can +// be resisted. +static inline int get_resistible_fraction(beam_type flavour) +{ + switch (flavour) + { + case BEAM_LAVA: + case BEAM_ICE: + return (50); + + case BEAM_POISON_ARROW: + return (40); + + default: + return (100); + } +} + +// Adjusts damage for elemntal resists, electricity and poison. +// +// FIXME: Does not (yet) handle life draining, player acid damage +// (does handle monster acid damage), miasma, and other exotic +// attacks. +// +// beam_type is just use to determine the damage flavour, it does not +// necessarily imply that the attack is a beam attack. +int resist_adjust_damage(actor *defender, beam_type flavour, + int res, int rawdamage, bool ranged) +{ + if (!res) + return (rawdamage); + + const bool monster = defender->atype() == ACT_MONSTER; + + // Check if this is a resist that pretends to be boolean for + // damage purposes - only electricity at the moment, raw poison + // damage uses the normal formula. + int res_base = is_boolean_resist(flavour)? 2 : 1; + const int resistible_fraction = get_resistible_fraction(flavour); + + int resistible = rawdamage * resistible_fraction / 100; + const int irresistible = rawdamage - resistible; if (res > 0) - rawdamage /= 1 + res * res; + { + if (monster && res >= 3) + resistible = 0; + else + resistible /= res_base + res * res; + } else if (res < 0) - rawdamage = rawdamage * (ranged? 15 : 20) / 10; - - if (rawdamage < 0) - rawdamage = 0; + resistible = resistible * (ranged? 15 : 20) / 10; - return (rawdamage); + return std::max(resistible + irresistible, 0); } void melee_attack::calc_elemental_brand_damage( + beam_type flavour, int res, const char *verb) { special_damage = - resist_adjust_damage(defender, res, random2(damage_done) / 2 + 1); + resist_adjust_damage(defender, flavour, res, + random2(damage_done) / 2 + 1); if (special_damage > 0 && verb && needs_message) { @@ -1854,12 +1906,13 @@ bool melee_attack::apply_damage_brand() { case SPWPN_FLAMING: res = fire_res_apply_cerebov_downgrade( defender->res_fire() ); - calc_elemental_brand_damage(res, defender->is_icy()? "melt" : "burn"); + calc_elemental_brand_damage( + BEAM_FIRE, res, defender->is_icy()? "melt" : "burn"); defender->expose_to_element(BEAM_FIRE); break; case SPWPN_FREEZING: - calc_elemental_brand_damage(defender->res_cold(), "freeze"); + calc_elemental_brand_damage(BEAM_COLD, defender->res_cold(), "freeze"); defender->expose_to_element(BEAM_COLD); break; @@ -2246,6 +2299,7 @@ void melee_attack::player_apply_staff_damage() special_damage = resist_adjust_damage(defender, + BEAM_ELECTRICITY, defender->res_elec(), player_staff_damage(SK_AIR_MAGIC)); @@ -2259,6 +2313,7 @@ void melee_attack::player_apply_staff_damage() case STAFF_COLD: special_damage = resist_adjust_damage(defender, + BEAM_COLD, defender->res_cold(), player_staff_damage(SK_ICE_MAGIC)); @@ -2286,6 +2341,7 @@ void melee_attack::player_apply_staff_damage() case STAFF_FIRE: special_damage = resist_adjust_damage(defender, + BEAM_FIRE, defender->res_fire(), player_staff_damage(SK_FIRE_MAGIC)); @@ -3272,6 +3328,7 @@ void melee_attack::mons_apply_attack_flavour(const mon_attack_def &attk) special_damage = resist_adjust_damage(defender, + BEAM_FIRE, defender->res_fire(), atk->hit_dice + random2(atk->hit_dice)); if (needs_message && special_damage) @@ -3286,6 +3343,7 @@ void melee_attack::mons_apply_attack_flavour(const mon_attack_def &attk) case AF_COLD: special_damage = resist_adjust_damage(defender, + BEAM_COLD, defender->res_cold(), atk->hit_dice + random2( 2 * atk->hit_dice )); if (needs_message && special_damage) @@ -3299,6 +3357,7 @@ void melee_attack::mons_apply_attack_flavour(const mon_attack_def &attk) special_damage = resist_adjust_damage( defender, + BEAM_ELECTRICITY, defender->res_elec(), atk->hit_dice + random2( atk->hit_dice / 2 )); diff --git a/crawl-ref/source/fight.h b/crawl-ref/source/fight.h index 1a62c70b41..b61478a058 100644 --- a/crawl-ref/source/fight.h +++ b/crawl-ref/source/fight.h @@ -36,8 +36,8 @@ struct mon_attack_def; * *********************************************************************** */ int effective_stat_bonus( int wepType = -1 ); -int resist_adjust_damage(actor *defender, int res, int rawdamage, - bool ranged = false); +int resist_adjust_damage(actor *defender, beam_type flavour, + int res, int rawdamage, bool ranged = false); // added Sept 18, 2000 -- bwr /* *********************************************************************** @@ -166,7 +166,9 @@ private: bool attack_shield_blocked(bool verbose); bool apply_damage_brand(); - void calc_elemental_brand_damage(int res, const char *verb); + void calc_elemental_brand_damage(beam_type flavour, + int res, + const char *verb); int fire_res_apply_cerebov_downgrade(int res); void drain_defender(); void drain_player(); diff --git a/crawl-ref/source/item_use.cc b/crawl-ref/source/item_use.cc index 84009cc8d5..7a7fc98d8e 100644 --- a/crawl-ref/source/item_use.cc +++ b/crawl-ref/source/item_use.cc @@ -3545,7 +3545,7 @@ static bool affix_weapon_enchantment() beam.type = dchar_glyph(DCHAR_FIRED_BURST); beam.damage = dice_def( 3, 10 ); - beam.flavour = 2; + beam.flavour = BEAM_FIRE; beam.target_x = you.x_pos; beam.target_y = you.y_pos; beam.name = "fiery explosion"; diff --git a/crawl-ref/source/mon-util.cc b/crawl-ref/source/mon-util.cc index 8858ebcf29..96eb671584 100644 --- a/crawl-ref/source/mon-util.cc +++ b/crawl-ref/source/mon-util.cc @@ -4671,7 +4671,8 @@ void monsters::apply_enchantment(const mon_enchant &me) case ENCH_STICKY_FLAME: { int dam = - resist_adjust_damage(this, res_fire(), roll_dice( 2, 4 ) - 1); + resist_adjust_damage(this, BEAM_FIRE, res_fire(), + roll_dice( 2, 4 ) - 1); if (dam > 0) { diff --git a/crawl-ref/source/monstuff.cc b/crawl-ref/source/monstuff.cc index 2373db61d8..4e50e232fa 100644 --- a/crawl-ref/source/monstuff.cc +++ b/crawl-ref/source/monstuff.cc @@ -5897,6 +5897,7 @@ static void mons_in_cloud(monsters *monster) hurted += resist_adjust_damage( monster, + BEAM_FIRE, monster->res_fire(), ((random2avg(16, 3) + 6) * 10) / speed ); @@ -5925,6 +5926,7 @@ static void mons_in_cloud(monsters *monster) hurted += resist_adjust_damage( monster, + BEAM_COLD, monster->res_cold(), ((6 + random2avg(16, 3)) * 10) / speed ); @@ -5957,6 +5959,7 @@ static void mons_in_cloud(monsters *monster) hurted += resist_adjust_damage( monster, + BEAM_STEAM, monster->res_steam(), (random2avg(steam_base_damage, 2) * 10) / speed); diff --git a/crawl-ref/source/mstuff2.cc b/crawl-ref/source/mstuff2.cc index b1ff4b3e38..4e59545ab5 100644 --- a/crawl-ref/source/mstuff2.cc +++ b/crawl-ref/source/mstuff2.cc @@ -1557,7 +1557,7 @@ bolt mons_spells( int spell_cast, int power ) beam.damage = dice_def( 1, 0 ); beam.ench_power = -1; beam.type = 0; - beam.flavour = -1; + beam.flavour = BEAM_NONE; beam.thrower = KILL_MISC; beam.is_beam = false; beam.is_explosion = false; diff --git a/crawl-ref/source/ouch.cc b/crawl-ref/source/ouch.cc index 9f46a60812..43b605bebc 100644 --- a/crawl-ref/source/ouch.cc +++ b/crawl-ref/source/ouch.cc @@ -56,6 +56,7 @@ #include "chardump.h" #include "delay.h" #include "files.h" +#include "fight.h" #include "hiscores.h" #include "invent.h" #include "itemname.h" @@ -85,9 +86,10 @@ static void item_corrode( int itco ); /* NOTE: DOES NOT check for hellfire!!! */ -int check_your_resists(int hurted, int flavour) +int check_your_resists(int hurted, beam_type flavour) { int resist; + int original = hurted; #if DEBUG_DIAGNOSTICS mprf(MSGCH_DIAGNOSTICS, "checking resistance: flavour=%d", flavour ); @@ -107,44 +109,36 @@ int check_your_resists(int hurted, int flavour) switch (flavour) { case BEAM_STEAM: - resist = player_res_steam(); - if (resist > 0) - { + hurted = resist_adjust_damage(&you, flavour, + player_res_steam(), hurted, true); + if (hurted < original) canned_msg(MSG_YOU_RESIST); - hurted /= (1 + (resist * resist)); - } - else if (resist < 0) - { - // We could use a superior message. + else if (hurted > original) mpr("It scalds you terribly!"); - hurted = hurted * 15 / 10; - } break; case BEAM_FIRE: - resist = player_res_fire(); - if (resist > 0) - { + hurted = resist_adjust_damage(&you, flavour, + player_res_fire(), hurted, true); + if (hurted < original) canned_msg(MSG_YOU_RESIST); - hurted /= (1 + (resist * resist)); - } - else if (resist < 0) + else if (hurted > original) { mpr("It burns terribly!"); xom_is_stimulated(200); - hurted *= 15; - hurted /= 10; } break; case BEAM_COLD: + hurted = resist_adjust_damage(&you, flavour, + player_res_fire(), hurted, true); resist = player_res_cold(); - if (resist > 0) + if (hurted < original) { canned_msg(MSG_YOU_RESIST); hurted /= (1 + (resist * resist)); } - else if (resist < 0) + else if (hurted > original) { mpr("You feel a terrible chill!"); xom_is_stimulated(200); @@ -154,30 +148,24 @@ int check_your_resists(int hurted, int flavour) break; case BEAM_ELECTRICITY: - resist = player_res_electricity(); - if (resist >= 3) - { - canned_msg(MSG_YOU_RESIST); - hurted = 0; - } - else if (resist > 0) - { + hurted = resist_adjust_damage(&you, flavour, + player_res_electricity(), + hurted, true); + + if (hurted < original) canned_msg(MSG_YOU_RESIST); - hurted /= 3; - } break; - case BEAM_POISON: resist = player_res_poison(); - if (!resist) + if (resist <= 0) poison_player( coinflip() ? 2 : 1 ); - else - { + + hurted = resist_adjust_damage(&you, flavour, resist, + hurted, true); + if (resist > 0) canned_msg(MSG_YOU_RESIST); - hurted /= 3; - } break; case BEAM_POISON_ARROW: @@ -187,59 +175,47 @@ int check_your_resists(int hurted, int flavour) resist = player_res_poison(); if (!resist) - poison_player( 6 + random2(3), true ); - else - { - mpr("You partially resist."); - hurted /= 2; + poison_player( 4 + random2(3), true ); + else if (!you.is_undead) + poison_player( 2 + random2(3), true ); - if (!you.is_undead) - poison_player( 2 + random2(3), true ); - } + hurted = resist_adjust_damage(&you, flavour, resist, hurted); + if (hurted < original) + mpr("You partially resist."); break; case BEAM_NEG: resist = player_prot_life(); if (resist > 0) - { hurted -= (resist * hurted) / 3; - } drain_exp(); break; case BEAM_ICE: - resist = player_res_cold(); + hurted = resist_adjust_damage(&you, flavour, player_res_cold(), + hurted, true); - if (resist > 0) - { + if (hurted < original) mpr("You partially resist."); - hurted /= 2; - } - else if (resist < 0) + else if (hurted > original) { mpr("You feel a painful chill!"); xom_is_stimulated(200); - hurted *= 13; - hurted /= 10; } break; case BEAM_LAVA: - resist = player_res_fire(); + hurted = resist_adjust_damage(&you, flavour, player_res_fire(), + hurted, true); - if (resist > 1) - { + if (hurted < original) mpr("You partially resist."); - hurted /= (1 + resist); - } - else if (resist < 0) + else if (hurted > original) { mpr("It burns terribly!"); xom_is_stimulated(200); - hurted *= 15; - hurted /= 10; } break; @@ -266,6 +242,9 @@ int check_your_resists(int hurted, int flavour) hurted = 0; } break; + + default: + break; } /* end switch */ return (hurted); diff --git a/crawl-ref/source/ouch.h b/crawl-ref/source/ouch.h index 6036f3f584..ddaf2e9cc1 100644 --- a/crawl-ref/source/ouch.h +++ b/crawl-ref/source/ouch.h @@ -65,7 +65,7 @@ enum kill_method_type /* *********************************************************************** * called from: bang - beam - effects - spells * *********************************************************************** */ -int check_your_resists(int hurted, int flavour); +int check_your_resists(int hurted, beam_type flavour); // last updated 12may2000 {dlb} diff --git a/crawl-ref/source/spells2.cc b/crawl-ref/source/spells2.cc index ac94743fda..d01dd30478 100644 --- a/crawl-ref/source/spells2.cc +++ b/crawl-ref/source/spells2.cc @@ -1155,7 +1155,7 @@ int vampiric_drain(int pow, const dist &vmove) } // end vampiric_drain() // Note: this function is currently only used for Freeze. -- bwr -char burn_freeze(int pow, char flavour) +char burn_freeze(int pow, beam_type flavour) { int mgr = NON_MONSTER; struct monsters *monster = 0; // NULL {dlb} diff --git a/crawl-ref/source/spells2.h b/crawl-ref/source/spells2.h index 213c542d0c..1578ac622f 100644 --- a/crawl-ref/source/spells2.h +++ b/crawl-ref/source/spells2.h @@ -45,7 +45,7 @@ int animate_dead(actor *caster, int power, beh_type corps_beh, /* *********************************************************************** * called from: spell * *********************************************************************** */ -char burn_freeze(int pow, char b_f); +char burn_freeze(int pow, beam_type b_f); // last updated 24may2000 {dlb} diff --git a/crawl-ref/source/spl-cast.cc b/crawl-ref/source/spl-cast.cc index 0eb652ab90..05f2e17054 100644 --- a/crawl-ref/source/spl-cast.cc +++ b/crawl-ref/source/spl-cast.cc @@ -2983,7 +2983,7 @@ static void miscast_fire(int severity, const char* cause) case 0: mpr("You are blasted with fire."); - ouch( check_your_resists( 5 + random2avg(29, 2), 2 ), 0, + ouch( check_your_resists( 5 + random2avg(29, 2), BEAM_FIRE ), 0, KILLED_BY_WILD_MAGIC, cause ); expose_player_to_element(BEAM_FIRE, 5); @@ -3016,7 +3016,7 @@ static void miscast_fire(int severity, const char* cause) case 0: mpr("You are blasted with searing flames!"); - ouch( check_your_resists( 9 + random2avg(33, 2), 2 ), 0, + ouch( check_your_resists( 9 + random2avg(33, 2), BEAM_FIRE ), 0, KILLED_BY_WILD_MAGIC, cause ); expose_player_to_element(BEAM_FIRE, 10); @@ -3117,7 +3117,7 @@ static void miscast_ice(int severity, const char* cause) case 0: mpr("Heat is drained from your body."); - ouch(check_your_resists(5 + random2(6) + random2(7), 3), 0, + ouch(check_your_resists(5 + random2(6) + random2(7), BEAM_COLD), 0, KILLED_BY_WILD_MAGIC, cause); expose_player_to_element(BEAM_COLD, 4); @@ -3151,7 +3151,7 @@ static void miscast_ice(int severity, const char* cause) case 0: mpr("You are blasted with ice!"); - ouch(check_your_resists(9 + random2avg(23, 2), 3), 0, + ouch(check_your_resists(9 + random2avg(23, 2), BEAM_ICE), 0, KILLED_BY_WILD_MAGIC, cause); expose_player_to_element(BEAM_COLD, 9); @@ -3338,7 +3338,7 @@ static void miscast_air(int severity, const char* cause) { case 0: mpr("Electricity courses through your body."); - ouch(check_your_resists(4 + random2avg(9, 2), 5), 0, + ouch(check_your_resists(4 + random2avg(9, 2), BEAM_ELECTRICITY), 0, KILLED_BY_WILD_MAGIC, cause); break; case 1: -- cgit v1.2.3-54-g00ecf