From 1cef2bec6cfe51855e53ec29fa5ea64d506eb086 Mon Sep 17 00:00:00 2001 From: Bardur Arantsson Date: Sun, 4 Mar 2012 20:33:34 +0100 Subject: Refactor: Remove duplicate code for "clamping" spell failure chance. --- src/cmd7.c | 101 ++++++++++++++++++--------------------------------------- src/externs.h | 1 + src/lua_bind.c | 36 +++----------------- 3 files changed, 37 insertions(+), 101 deletions(-) (limited to 'src') diff --git a/src/cmd7.c b/src/cmd7.c index 73f79333..ee934b88 100644 --- a/src/cmd7.c +++ b/src/cmd7.c @@ -234,15 +234,8 @@ bool_ get_magic_power(int *sn, magic_power *powers, int max_powers, /* Extract the minimum failure rate */ minfail = adj_mag_fail[p_ptr->stat_ind[cast_stat]]; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; + /* Failure rate */ + chance = clamp_failure_chance(chance, minfail); /* Get info */ power_info(comment, i); @@ -404,15 +397,8 @@ void do_cmd_mindcraft(void) /* Extract the minimum failure rate */ minfail = adj_mag_fail[p_ptr->stat_ind[A_WIS]]; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; + /* Failure rate */ + chance = clamp_failure_chance(chance, minfail); /* Failed spell */ if (rand_int(100) < chance) @@ -755,17 +741,8 @@ static int get_mimic_chance(int mimic) chance -= get_skill_scale(SKILL_MIMICRY, 150); chance -= 3 * adj_mag_stat[p_ptr->stat_ind[A_DEX]]; - if (chance < 2) chance = 2; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; - /* Return the chance */ - return (chance); + return clamp_failure_chance(chance, 2); } @@ -4363,18 +4340,8 @@ int spell_chance_random(random_spell* rspell) /* Extract the minimum failure rate */ minfail = adj_mag_fail[p_ptr->stat_ind[A_INT]]; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; - - /* Return the chance */ - return (chance); + /* Failure rate */ + return clamp_failure_chance(chance, minfail); } @@ -5357,15 +5324,8 @@ void do_cmd_necromancer(void) /* Extract the minimum failure rate */ minfail = adj_mag_fail[p_ptr->stat_ind[A_CON]]; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; + /* Failure rate */ + chance = clamp_failure_chance(chance, minfail); /* Failed spell */ if (rand_int(100) < chance) @@ -5733,18 +5693,8 @@ int spell_chance_rune(rune_spell* spell) /* Extract the minimum failure rate */ minfail = adj_mag_fail[p_ptr->stat_ind[A_DEX]]; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; - /* Return the chance */ - return (chance); + return clamp_failure_chance(chance, minfail); } @@ -7314,15 +7264,8 @@ void do_cmd_symbiotic(void) /* Extract the minimum failure rate */ minfail = adj_mag_fail[p_ptr->stat_ind[A_INT]]; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; + /* Failure rate */ + chance = clamp_failure_chance(chance, minfail); /* Failed spell */ if (rand_int(100) < chance) @@ -7687,3 +7630,23 @@ void do_cmd_create_boulder() energy_use = 100; } } + +/* + * Clamp failure chance + */ +extern int clamp_failure_chance(int chance, int minfail) +{ + if (minfail < 0) minfail = 0; + + /* Minimum failure rate */ + if (chance < minfail) chance = minfail; + + /* Stunning makes spells harder */ + if (p_ptr->stun > 50) chance += 25; + else if (p_ptr->stun) chance += 15; + + /* Always a 5 percent chance of working */ + if (chance > 95) chance = 95; + + return chance; +} diff --git a/src/externs.h b/src/externs.h index 08ef2d38..dba293d1 100644 --- a/src/externs.h +++ b/src/externs.h @@ -871,6 +871,7 @@ extern void do_cmd_unbeliever(void); extern void do_cmd_runecrafter(void); extern void do_cmd_symbiotic(void); extern s32b sroot(s32b n); +extern int clamp_failure_chance(int chance, int minfail); /* dungeon.c */ extern byte value_check_aux1(object_type *o_ptr); diff --git a/src/lua_bind.c b/src/lua_bind.c index 721ffe30..3a901a7c 100644 --- a/src/lua_bind.c +++ b/src/lua_bind.c @@ -44,15 +44,8 @@ bool_ lua_spell_success(magic_power *spell, int stat, char *oups_fct) /* Extract the minimum failure rate */ minfail = adj_mag_fail[p_ptr->stat_ind[stat]]; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; + /* Failure rate */ + chance = clamp_failure_chance(chance, minfail); /* Failed spell */ if (rand_int(100) < chance) @@ -300,18 +293,8 @@ s32b lua_spell_chance(s32b chance, int level, int skill_level, int mana, int cur /* Hack -- Priest prayer penalty for "edged" weapons -DGK */ if ((forbid_non_blessed()) && (p_ptr->icky_wield)) chance += 25; - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; - /* Return the chance */ - return (chance); + return clamp_failure_chance(chance, minfail); } s32b lua_spell_device_chance(s32b chance, int level, int base_level) @@ -323,20 +306,9 @@ s32b lua_spell_device_chance(s32b chance, int level, int base_level) /* Extract the minimum failure rate */ minfail = 15 - get_skill_scale(SKILL_DEVICE, 25); - if (minfail < 0) minfail = 0; - - /* Minimum failure rate */ - if (chance < minfail) chance = minfail; - - /* Stunning makes spells harder */ - if (p_ptr->stun > 50) chance += 25; - else if (p_ptr->stun) chance += 15; - - /* Always a 5 percent chance of working */ - if (chance > 95) chance = 95; /* Return the chance */ - return (chance); + return clamp_failure_chance(chance, minfail); } /* Cave */ -- cgit v1.2.3