diff options
-rw-r--r-- | src/config.h | 5 | ||||
-rw-r--r-- | src/externs.h | 1 | ||||
-rw-r--r-- | src/melee2.c | 30 | ||||
-rw-r--r-- | src/xtra2.c | 55 |
4 files changed, 21 insertions, 70 deletions
diff --git a/src/config.h b/src/config.h index 889b3574..3e0076de 100644 --- a/src/config.h +++ b/src/config.h @@ -119,11 +119,6 @@ /* - * OPTION: Allow monsters to "flee" when hit hard - */ -#define ALLOW_FEAR - -/* * OPTION: Allow monsters to "flee" from strong players */ #define ALLOW_TERROR diff --git a/src/externs.h b/src/externs.h index 33a74266..86127f25 100644 --- a/src/externs.h +++ b/src/externs.h @@ -985,6 +985,7 @@ extern errr rd_savefile_new(void); /* melee2.c */ 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 void mon_handle_fear(monster_type *m_ptr, int dam, bool_ *fear); 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); diff --git a/src/melee2.c b/src/melee2.c index 5443a214..91be521d 100644 --- a/src/melee2.c +++ b/src/melee2.c @@ -166,7 +166,21 @@ bool_ mon_take_hit_mon(int s_idx, int m_idx, int dam, bool_ *fear, cptr note) } -#ifdef ALLOW_FEAR + /* Apply fear */ + mon_handle_fear(m_ptr, dam, fear); + + /* Not dead yet */ + return (FALSE); +} + + +void mon_handle_fear(monster_type *m_ptr, int dam, bool_ *fear) +{ + monster_race *r_ptr = NULL; + + assert(m_ptr != NULL); + + r_ptr = race_inf(m_ptr); /* Mega-Hack -- Pain cancels fear */ if (m_ptr->monfear && (dam > 0)) @@ -200,9 +214,9 @@ bool_ mon_take_hit_mon(int s_idx, int m_idx, int dam, bool_ *fear, cptr note) percentage = (100L * m_ptr->hp) / m_ptr->maxhp; /* - * Run (sometimes) if at 10% or less of max hit points, - * or (usually) when hit for half its current hit points - */ + * Run (sometimes) if at 10% or less of max hit points, + * or (usually) when hit for half its current hit points + */ if (((percentage <= 10) && (rand_int(10) < percentage)) || ((dam >= m_ptr->hp) && (rand_int(100) < 80))) { @@ -215,17 +229,9 @@ bool_ mon_take_hit_mon(int s_idx, int m_idx, int dam, bool_ *fear, cptr note) 20 : ((11 - percentage) * 5))); } } - -#endif /* ALLOW_FEAR */ - - /* Not dead yet */ - return (FALSE); } - - - /* * And now for Intelligent monster attacks (including spells). * diff --git a/src/xtra2.c b/src/xtra2.c index 6594e482..ef753b3a 100644 --- a/src/xtra2.c +++ b/src/xtra2.c @@ -3452,59 +3452,8 @@ bool_ mon_take_hit(int m_idx, int dam, bool_ *fear, cptr note) return (TRUE); } - -#ifdef ALLOW_FEAR - - /* Mega-Hack -- Pain cancels fear */ - if (m_ptr->monfear && (dam > 0)) - { - int tmp = randint(dam); - - /* Cure a little fear */ - if (tmp < m_ptr->monfear) - { - /* Reduce fear */ - m_ptr->monfear -= tmp; - } - - /* Cure all the fear */ - else - { - /* Cure fear */ - m_ptr->monfear = 0; - - /* No more fear */ - (*fear) = FALSE; - } - } - - /* Sometimes a monster gets scared by damage */ - if (!m_ptr->monfear && !(r_ptr->flags3 & (RF3_NO_FEAR))) - { - int percentage; - - /* Percentage of fully healthy */ - percentage = (100L * m_ptr->hp) / m_ptr->maxhp; - - /* - * Run (sometimes) if at 10% or less of max hit points, - * or (usually) when hit for half its current hit points - */ - if (((percentage <= 10) && (rand_int(10) < percentage)) || - ((dam >= m_ptr->hp) && (rand_int(100) < 80))) - { - /* Hack -- note fear */ - (*fear) = TRUE; - - /* XXX XXX XXX Hack -- Add some timed fear */ - m_ptr->monfear = (randint(10) + - (((dam >= m_ptr->hp) && (percentage > 7)) ? - 20 : ((11 - percentage) * 5))); - } - } - -#endif - + /* Apply fear */ + mon_handle_fear(m_ptr, dam, fear); /* Not dead yet */ return (FALSE); |