diff options
author | Bardur Arantsson <bardur@scientician.net> | 2012-03-06 07:36:20 +0100 |
---|---|---|
committer | Bardur Arantsson <bardur@scientician.net> | 2012-03-29 20:41:39 +0200 |
commit | 11188a21abde2b67cefc38e4579267b9bf72e00e (patch) | |
tree | 5f8be47e89d05151771532c093944cfc73a98463 /src | |
parent | 424acaf997cad85aed8a9526d19d8554c80798d3 (diff) |
Refactor: Remove duplicate code for calculaing attack "power"
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd1.c | 219 | ||||
-rw-r--r-- | src/externs.h | 1 | ||||
-rw-r--r-- | src/melee1.c | 187 | ||||
-rw-r--r-- | src/melee2.c | 106 |
4 files changed, 86 insertions, 427 deletions
@@ -805,120 +805,7 @@ static void carried_monster_attack(s16b m_idx, bool_ *fear, bool_ *mdeath, visible = TRUE; /* Extract the attack "power" */ - switch (effect) - { - case RBE_HURT: - { - power = 60; - break; - } - case RBE_POISON: - { - power = 5; - break; - } - case RBE_UN_BONUS: - { - power = 20; - break; - } - case RBE_UN_POWER: - { - power = 15; - break; - } - case RBE_EAT_GOLD: - power = 5; - break; - case RBE_EAT_ITEM: - power = 5; - break; - case RBE_EAT_FOOD: - power = 5; - break; - case RBE_EAT_LITE: - power = 5; - break; - case RBE_ACID: - power = 0; - break; - case RBE_ELEC: - power = 10; - break; - case RBE_FIRE: - power = 10; - break; - case RBE_COLD: - power = 10; - break; - case RBE_BLIND: - power = 2; - break; - case RBE_CONFUSE: - power = 10; - break; - case RBE_TERRIFY: - power = 10; - break; - case RBE_PARALYZE: - power = 2; - break; - case RBE_LOSE_STR: - power = 0; - break; - case RBE_LOSE_DEX: - power = 0; - break; - case RBE_LOSE_CON: - power = 0; - break; - case RBE_LOSE_INT: - power = 0; - break; - case RBE_LOSE_WIS: - power = 0; - break; - case RBE_LOSE_CHR: - power = 0; - break; - case RBE_LOSE_ALL: - power = 2; - break; - case RBE_SHATTER: - power = 60; - break; - case RBE_EXP_10: - power = 5; - break; - case RBE_EXP_20: - power = 5; - break; - case RBE_EXP_40: - power = 5; - break; - case RBE_EXP_80: - power = 5; - break; - case RBE_DISEASE: - power = 5; - break; - case RBE_TIME: - power = 5; - break; - case RBE_SANITY: - power = 60; - break; - case RBE_HALLU: - power = 10; - break; - case RBE_PARASITE: - power = 5; - break; - case RBE_ABOMINATION: - power = 20; - break; - } - + power = get_attack_power(effect); /* Monster hits */ if (!effect || check_hit2(power, rlev, ac)) @@ -1437,109 +1324,7 @@ static void incarnate_monster_attack(s16b m_idx, bool_ *fear, bool_ *mdeath, visible = TRUE; /* Extract the attack "power" */ - switch (effect) - { - case RBE_HURT: - power = 60; - break; - case RBE_POISON: - power = 5; - break; - case RBE_UN_BONUS: - power = 20; - break; - case RBE_UN_POWER: - power = 15; - break; - case RBE_EAT_GOLD: - power = 5; - break; - case RBE_EAT_ITEM: - power = 5; - break; - case RBE_EAT_FOOD: - power = 5; - break; - case RBE_EAT_LITE: - power = 5; - break; - case RBE_ACID: - power = 0; - break; - case RBE_ELEC: - power = 10; - break; - case RBE_FIRE: - power = 10; - break; - case RBE_COLD: - power = 10; - break; - case RBE_BLIND: - power = 2; - break; - case RBE_CONFUSE: - power = 10; - break; - case RBE_TERRIFY: - power = 10; - break; - case RBE_PARALYZE: - power = 2; - break; - case RBE_LOSE_STR: - power = 0; - break; - case RBE_LOSE_DEX: - power = 0; - break; - case RBE_LOSE_CON: - power = 0; - break; - case RBE_LOSE_INT: - power = 0; - break; - case RBE_LOSE_WIS: - power = 0; - break; - case RBE_LOSE_CHR: - power = 0; - break; - case RBE_LOSE_ALL: - power = 2; - break; - case RBE_SHATTER: - power = 60; - break; - case RBE_EXP_10: - power = 5; - break; - case RBE_EXP_20: - power = 5; - break; - case RBE_EXP_40: - power = 5; - break; - case RBE_EXP_80: - power = 5; - break; - case RBE_DISEASE: - power = 5; - break; - case RBE_TIME: - power = 5; - break; - case RBE_SANITY: - power = 60; - break; - case RBE_HALLU: - power = 10; - break; - case RBE_PARASITE: - power = 5; - break; - } - + effect = get_attack_power(effect); /* Monster hits */ if (!effect || check_hit2(power, rlev, ac)) diff --git a/src/externs.h b/src/externs.h index 6b22dc81..1c0c63e2 100644 --- a/src/externs.h +++ b/src/externs.h @@ -998,6 +998,7 @@ extern void save_number_key(char *key, u32b val); extern int monst_spell_monst_spell; extern bool_ mon_take_hit_mon(int s_idx, int m_idx, int dam, bool_ *fear, cptr note); extern int check_hit2(int power, int level, int ac); +extern int get_attack_power(int effect); extern bool_ carried_make_attack_normal(int r_idx); extern bool_ make_attack_normal(int m_idx, byte divis); extern bool_ make_attack_spell(int m_idx); diff --git a/src/melee1.c b/src/melee1.c index 0160c43a..1a3fa526 100644 --- a/src/melee1.c +++ b/src/melee1.c @@ -115,6 +115,87 @@ static cptr desc_moan[] = "says she is always happy." }; + +/* + * Get the "power" of an attack of given effect type. + */ +int get_attack_power(int effect) +{ + switch (effect) + { + case RBE_HURT: + return 60; + case RBE_POISON: + return 5; + case RBE_UN_BONUS: + return 20; + case RBE_UN_POWER: + return 15; + case RBE_EAT_GOLD: + return 5; + case RBE_EAT_ITEM: + return 5; + case RBE_EAT_FOOD: + return 5; + case RBE_EAT_LITE: + return 5; + case RBE_ACID: + return 0; + case RBE_ELEC: + return 10; + case RBE_FIRE: + return 10; + case RBE_COLD: + return 10; + case RBE_BLIND: + return 2; + case RBE_CONFUSE: + return 10; + case RBE_TERRIFY: + return 10; + case RBE_PARALYZE: + return 2; + case RBE_LOSE_STR: + return 0; + case RBE_LOSE_DEX: + return 0; + case RBE_LOSE_CON: + return 0; + case RBE_LOSE_INT: + return 0; + case RBE_LOSE_WIS: + return 0; + case RBE_LOSE_CHR: + return 0; + case RBE_LOSE_ALL: + return 2; + case RBE_SHATTER: + return 60; + case RBE_EXP_10: + return 5; + case RBE_EXP_20: + return 5; + case RBE_EXP_40: + return 5; + case RBE_EXP_80: + return 5; + case RBE_DISEASE: + return 5; + case RBE_TIME: + return 5; + case RBE_SANITY: + return 60; + case RBE_HALLU: + return 10; + case RBE_PARASITE: + return 5; + case RBE_ABOMINATION: + return 30; + } + /* Unknown effects have no power */ + return 0; +} + /* * Attack the player via physical attacks. */ @@ -173,111 +254,7 @@ bool_ carried_make_attack_normal(int r_idx) visible = TRUE; /* Extract the attack "power" */ - switch (effect) - { - case RBE_HURT: - power = 60; - break; - case RBE_POISON: - power = 5; - break; - case RBE_UN_BONUS: - power = 20; - break; - case RBE_UN_POWER: - power = 15; - break; - case RBE_EAT_GOLD: - power = 5; - break; - case RBE_EAT_ITEM: - power = 5; - break; - case RBE_EAT_FOOD: - power = 5; - break; - case RBE_EAT_LITE: - power = 5; - break; - case RBE_ACID: - power = 0; - break; - case RBE_ELEC: - power = 10; - break; - case RBE_FIRE: - power = 10; - break; - case RBE_COLD: - power = 10; - break; - case RBE_BLIND: - power = 2; - break; - case RBE_CONFUSE: - power = 10; - break; - case RBE_TERRIFY: - power = 10; - break; - case RBE_PARALYZE: - power = 2; - break; - case RBE_LOSE_STR: - power = 0; - break; - case RBE_LOSE_DEX: - power = 0; - break; - case RBE_LOSE_CON: - power = 0; - break; - case RBE_LOSE_INT: - power = 0; - break; - case RBE_LOSE_WIS: - power = 0; - break; - case RBE_LOSE_CHR: - power = 0; - break; - case RBE_LOSE_ALL: - power = 2; - break; - case RBE_SHATTER: - power = 60; - break; - case RBE_EXP_10: - power = 5; - break; - case RBE_EXP_20: - power = 5; - break; - case RBE_EXP_40: - power = 5; - break; - case RBE_EXP_80: - power = 5; - break; - case RBE_DISEASE: - power = 5; - break; - case RBE_TIME: - power = 5; - break; - case RBE_SANITY: - power = 60; - break; - case RBE_HALLU: - power = 10; - break; - case RBE_PARASITE: - power = 5; - break; - case RBE_ABOMINATION: - power = 30; - break; - } + power = get_attack_power(effect); /* Monster hits player */ diff --git a/src/melee2.c b/src/melee2.c index 9cb5e2da..6ada6bd0 100644 --- a/src/melee2.c +++ b/src/melee2.c @@ -5557,111 +5557,7 @@ static bool_ monst_attack_monst(int m_idx, int t_idx) if (m_ptr->ml) visible = TRUE; /* Extract the attack "power" */ - switch (effect) - { - case RBE_HURT: - power = 60; - break; - case RBE_POISON: - power = 5; - break; - case RBE_UN_BONUS: - power = 20; - break; - case RBE_UN_POWER: - power = 15; - break; - case RBE_EAT_GOLD: - power = 5; - break; - case RBE_EAT_ITEM: - power = 5; - break; - case RBE_EAT_FOOD: - power = 5; - break; - case RBE_EAT_LITE: - power = 5; - break; - case RBE_ACID: - power = 0; - break; - case RBE_ELEC: - power = 10; - break; - case RBE_FIRE: - power = 10; - break; - case RBE_COLD: - power = 10; - break; - case RBE_BLIND: - power = 2; - break; - case RBE_CONFUSE: - power = 10; - break; - case RBE_TERRIFY: - power = 10; - break; - case RBE_PARALYZE: - power = 2; - break; - case RBE_LOSE_STR: - power = 0; - break; - case RBE_LOSE_DEX: - power = 0; - break; - case RBE_LOSE_CON: - power = 0; - break; - case RBE_LOSE_INT: - power = 0; - break; - case RBE_LOSE_WIS: - power = 0; - break; - case RBE_LOSE_CHR: - power = 0; - break; - case RBE_LOSE_ALL: - power = 2; - break; - case RBE_SHATTER: - power = 60; - break; - case RBE_EXP_10: - power = 5; - break; - case RBE_EXP_20: - power = 5; - break; - case RBE_EXP_40: - power = 5; - break; - case RBE_EXP_80: - power = 5; - break; - case RBE_DISEASE: - power = 5; - break; - case RBE_TIME: - power = 5; - break; - case RBE_SANITY: - power = 60; - break; - case RBE_HALLU: - power = 10; - break; - case RBE_PARASITE: - power = 5; - break; - case RBE_ABOMINATION: - power = 20; - break; - } + power = get_attack_power(effect); /* Monster hits*/ |