diff options
Diffstat (limited to 'src/mimic.cc')
-rw-r--r-- | src/mimic.cc | 163 |
1 files changed, 80 insertions, 83 deletions
diff --git a/src/mimic.cc b/src/mimic.cc index edf79f4b..6ce7b180 100644 --- a/src/mimic.cc +++ b/src/mimic.cc @@ -1,5 +1,7 @@ #include "mimic.hpp" +#include "game.hpp" +#include "object_flag.hpp" #include "player_type.hpp" #include "skill_type.hpp" #include "stats.hpp" @@ -37,8 +39,8 @@ struct mimic_form_type static s32b abomination_calc() { - apply_flags(TR1_SPEED + TR1_STR + TR1_INT + TR1_WIS + TR1_DEX + TR1_CON + TR1_CHR, 0, 0, 0, 0, 0, -10, 0, 0, 0, 0); - p_ptr->xtra_f3 |= TR3_AGGRAVATE; + apply_flags(TR_SPEED | TR_STR | TR_INT | TR_WIS | TR_DEX | TR_CON | TR_CHR, -10, 0, 0, 0, 0); + p_ptr->xtra_flags |= TR_AGGRAVATE; return 0; } @@ -89,23 +91,23 @@ static s32b eagle_calc() if (p_ptr->mimic_level >= 20) { - p_ptr->xtra_f4 |= TR4_FLY; - p_ptr->xtra_f3 |= TR3_SEE_INVIS; + p_ptr->xtra_flags |= TR_FLY; + p_ptr->xtra_flags |= TR_SEE_INVIS; } if (p_ptr->mimic_level >= 25) { - p_ptr->xtra_f2 |= TR2_FREE_ACT; + p_ptr->xtra_flags |= TR_FREE_ACT; } if (p_ptr->mimic_level >= 30) { - p_ptr->xtra_f2 |= TR2_RES_ELEC; + p_ptr->xtra_flags |= TR_RES_ELEC; } if (p_ptr->mimic_level >= 35) { - p_ptr->xtra_f3 |= TR3_SH_ELEC; + p_ptr->xtra_flags |= TR_SH_ELEC; } return 0; @@ -120,27 +122,27 @@ static s32b wolf_calc() p_ptr->pspeed = p_ptr->pspeed + 10 + (p_ptr->mimic_level / 5); - p_ptr->xtra_f2 |= TR2_FREE_ACT; - p_ptr->xtra_f2 |= TR2_RES_FEAR; + p_ptr->xtra_flags |= TR_FREE_ACT; + p_ptr->xtra_flags |= TR_RES_FEAR; if (p_ptr->mimic_level >= 10) { - p_ptr->xtra_f2 |= TR2_RES_COLD; + p_ptr->xtra_flags |= TR_RES_COLD; } if (p_ptr->mimic_level >= 15) { - p_ptr->xtra_f3 |= TR3_SEE_INVIS; + p_ptr->xtra_flags |= TR_SEE_INVIS; } if (p_ptr->mimic_level >= 30) { - p_ptr->xtra_f2 |= TR2_RES_DARK; + p_ptr->xtra_flags |= TR_RES_DARK; } if (p_ptr->mimic_level >= 35) { - p_ptr->xtra_f2 |= TR2_RES_CONF; + p_ptr->xtra_flags |= TR_RES_CONF; } return 0; @@ -157,13 +159,13 @@ static s32b spider_calc() p_ptr->pspeed = p_ptr->pspeed + 5; - p_ptr->xtra_f2 |= TR2_RES_POIS; - p_ptr->xtra_f2 |= TR2_RES_FEAR; - p_ptr->xtra_f2 |= TR2_RES_DARK; + p_ptr->xtra_flags |= TR_RES_POIS; + p_ptr->xtra_flags |= TR_RES_FEAR; + p_ptr->xtra_flags |= TR_RES_DARK; if (p_ptr->mimic_level >= 40) { - p_ptr->xtra_f4 |= TR4_CLIMB; + p_ptr->xtra_flags |= TR_CLIMB; } return 0; @@ -191,12 +193,12 @@ static s32b ent_calc() p_ptr->stat_add[A_CON] += p_ptr->mimic_level / 5; p_ptr->stat_add[A_CHR] += -7; - p_ptr->xtra_f2 |= TR2_RES_POIS; - p_ptr->xtra_f2 |= TR2_RES_COLD; - p_ptr->xtra_f2 |= TR2_FREE_ACT; - p_ptr->xtra_f3 |= TR3_REGEN; - p_ptr->xtra_f3 |= TR3_SEE_INVIS; - p_ptr->xtra_f2 |= TR2_SENS_FIRE; + p_ptr->xtra_flags |= TR_RES_POIS; + p_ptr->xtra_flags |= TR_RES_COLD; + p_ptr->xtra_flags |= TR_FREE_ACT; + p_ptr->xtra_flags |= TR_REGEN; + p_ptr->xtra_flags |= TR_SEE_INVIS; + p_ptr->xtra_flags |= TR_SENS_FIRE; return 0; } @@ -226,14 +228,14 @@ static s32b vapour_calc() /* But they are stealthy */ p_ptr->skill_stl = p_ptr->skill_stl + 10 + (p_ptr->mimic_level / 5); - p_ptr->xtra_f2 |= TR2_RES_POIS; - p_ptr->xtra_f2 |= TR2_RES_SHARDS; - p_ptr->xtra_f2 |= TR2_IM_COLD; - p_ptr->xtra_f2 |= TR2_FREE_ACT; - p_ptr->xtra_f3 |= TR3_REGEN; - p_ptr->xtra_f3 |= TR3_SEE_INVIS; - p_ptr->xtra_f2 |= TR2_SENS_FIRE; - p_ptr->xtra_f3 |= TR3_FEATHER; + p_ptr->xtra_flags |= TR_RES_POIS; + p_ptr->xtra_flags |= TR_RES_SHARDS; + p_ptr->xtra_flags |= TR_IM_COLD; + p_ptr->xtra_flags |= TR_FREE_ACT; + p_ptr->xtra_flags |= TR_REGEN; + p_ptr->xtra_flags |= TR_SEE_INVIS; + p_ptr->xtra_flags |= TR_SENS_FIRE; + p_ptr->xtra_flags |= TR_FEATHER; return 0; } @@ -252,10 +254,10 @@ static s32b serpent_calc() p_ptr->stat_add[A_CON] += p_ptr->mimic_level / 7; p_ptr->stat_add[A_CHR] += -6; - p_ptr->xtra_f2 |= TR2_RES_POIS; + p_ptr->xtra_flags |= TR_RES_POIS; if (p_ptr->mimic_level >= 25) { - p_ptr->xtra_f2 |= TR2_FREE_ACT; + p_ptr->xtra_flags |= TR_FREE_ACT; } return 0; @@ -279,22 +281,22 @@ static s32b mumak_calc() if (p_ptr->mimic_level >= 10) { - p_ptr->xtra_f2 |= TR2_RES_FEAR; + p_ptr->xtra_flags |= TR_RES_FEAR; } if (p_ptr->mimic_level >= 25) { - p_ptr->xtra_f2 |= TR2_RES_CONF; + p_ptr->xtra_flags |= TR_RES_CONF; } if (p_ptr->mimic_level >= 30) { - p_ptr->xtra_f2 |= TR2_FREE_ACT; + p_ptr->xtra_flags |= TR_FREE_ACT; } if (p_ptr->mimic_level >= 35) { - p_ptr->xtra_f2 |= TR2_RES_NEXUS; + p_ptr->xtra_flags |= TR_RES_NEXUS; } return 0; @@ -302,6 +304,8 @@ static s32b mumak_calc() static s32b bear_calc() { + auto &s_info = game->s_info; + p_ptr->pspeed = p_ptr->pspeed - 5 + (p_ptr->mimic_level / 5); p_ptr->to_a = p_ptr->to_a + 5 + ((p_ptr->mimic_level * 2) / 3); @@ -316,26 +320,26 @@ static s32b bear_calc() if (p_ptr->mimic_level >= 10) { - p_ptr->xtra_f2 |= TR2_FREE_ACT; + p_ptr->xtra_flags |= TR_FREE_ACT; } if (p_ptr->mimic_level >= 20) { - p_ptr->xtra_f3 |= TR3_REGEN; + p_ptr->xtra_flags |= TR_REGEN; } if (p_ptr->mimic_level >= 30) { - p_ptr->xtra_f2 |= TR2_RES_CONF; + p_ptr->xtra_flags |= TR_RES_CONF; } if (p_ptr->mimic_level >= 35) { - p_ptr->xtra_f2 |= TR2_RES_NEXUS; + p_ptr->xtra_flags |= TR_RES_NEXUS; } /* activate the skill */ - s_info[SKILL_BEAR].hidden = FALSE; + s_info[SKILL_BEAR].hidden = false; return 0; } @@ -349,17 +353,17 @@ static s32b balrog_calc() p_ptr->stat_add[A_CON] += 5 + p_ptr->mimic_level / 5; p_ptr->stat_add[A_CHR] += - ( 5 + p_ptr->mimic_level / 10); - p_ptr->xtra_f2 |= TR2_IM_ACID; - p_ptr->xtra_f2 |= TR2_IM_FIRE; - p_ptr->xtra_f2 |= TR2_IM_ELEC; - p_ptr->xtra_f2 |= TR2_RES_DARK; - p_ptr->xtra_f2 |= TR2_RES_CHAOS; - p_ptr->xtra_f2 |= TR2_RES_POIS; - p_ptr->xtra_f2 |= TR2_HOLD_LIFE; - p_ptr->xtra_f3 |= TR3_FEATHER; - p_ptr->xtra_f3 |= TR3_REGEN; - p_ptr->xtra_f3 |= TR3_SH_FIRE; - p_ptr->xtra_f3 |= TR3_LITE1; + p_ptr->xtra_flags |= TR_IM_ACID; + p_ptr->xtra_flags |= TR_IM_FIRE; + p_ptr->xtra_flags |= TR_IM_ELEC; + p_ptr->xtra_flags |= TR_RES_DARK; + p_ptr->xtra_flags |= TR_RES_CHAOS; + p_ptr->xtra_flags |= TR_RES_POIS; + p_ptr->xtra_flags |= TR_HOLD_LIFE; + p_ptr->xtra_flags |= TR_FEATHER; + p_ptr->xtra_flags |= TR_REGEN; + p_ptr->xtra_flags |= TR_SH_FIRE; + p_ptr->xtra_flags |= TR_LITE1; return 1; /* Adds a blow */ } @@ -373,17 +377,17 @@ static s32b maia_calc() p_ptr->stat_add[A_CON] += 5 + p_ptr->mimic_level / 5; p_ptr->stat_add[A_CHR] += 5 + p_ptr->mimic_level / 5; - p_ptr->xtra_f2 |= TR2_IM_FIRE; - p_ptr->xtra_f2 |= TR2_IM_ELEC; - p_ptr->xtra_f2 |= TR2_IM_ACID; - p_ptr->xtra_f2 |= TR2_IM_COLD; - p_ptr->xtra_f2 |= TR2_RES_POIS; - p_ptr->xtra_f2 |= TR2_RES_LITE; - p_ptr->xtra_f2 |= TR2_RES_DARK; - p_ptr->xtra_f2 |= TR2_RES_CHAOS; - p_ptr->xtra_f2 |= TR2_HOLD_LIFE; - p_ptr->xtra_f3 |= TR3_FEATHER; - p_ptr->xtra_f3 |= TR3_REGEN; + p_ptr->xtra_flags |= TR_IM_FIRE; + p_ptr->xtra_flags |= TR_IM_ELEC; + p_ptr->xtra_flags |= TR_IM_ACID; + p_ptr->xtra_flags |= TR_IM_COLD; + p_ptr->xtra_flags |= TR_RES_POIS; + p_ptr->xtra_flags |= TR_RES_LITE; + p_ptr->xtra_flags |= TR_RES_DARK; + p_ptr->xtra_flags |= TR_RES_CHAOS; + p_ptr->xtra_flags |= TR_HOLD_LIFE; + p_ptr->xtra_flags |= TR_FEATHER; + p_ptr->xtra_flags |= TR_REGEN; return 2; /* Add two blows */ } @@ -394,10 +398,10 @@ static s32b fire_elemental_calc() p_ptr->stat_add[A_DEX] += 5 + (p_ptr->mimic_level / 5); p_ptr->stat_add[A_WIS] += -5 - (p_ptr->mimic_level / 5); - p_ptr->xtra_f2 |= TR2_IM_FIRE; - p_ptr->xtra_f2 |= TR2_RES_POIS; - p_ptr->xtra_f3 |= TR3_SH_FIRE; - p_ptr->xtra_f3 |= TR3_LITE1; + p_ptr->xtra_flags |= TR_IM_FIRE; + p_ptr->xtra_flags |= TR_RES_POIS; + p_ptr->xtra_flags |= TR_SH_FIRE; + p_ptr->xtra_flags |= TR_LITE1; return 0; } @@ -588,11 +592,9 @@ static mimic_form_type mimic_forms[MIMIC_FORMS_MAX] = /* * Is the mimicry form enabled for the current module? */ -static bool_ mimic_form_enabled(mimic_form_type *f) +static bool mimic_form_enabled(mimic_form_type const *f) { - int i; - - for (i = 0; f->modules[i] >= 0; i++) + for (int i = 0; f->modules[i] >= 0; i++) { if (f->modules[i] == game_module_idx) { @@ -618,11 +620,9 @@ static mimic_form_type *get_mimic_form(int mf_idx) */ s16b resolve_mimic_name(cptr name) { - s16b i; - - for (i = 0; i < MIMIC_FORMS_MAX; i++) + for (s16b i = 0; i < MIMIC_FORMS_MAX; i++) { - mimic_form_type *mf_ptr = get_mimic_form(i); + auto const mf_ptr = get_mimic_form(i); if (mimic_form_enabled(mf_ptr) && streq(mf_ptr->name, name)) { return i; @@ -641,13 +641,10 @@ s16b find_random_mimic_shape(byte level, bool_ limit) while (tries > 0) { - int mf_idx = 0; - mimic_form_type *mf_ptr = NULL; - tries = tries - 1; - mf_idx = rand_int(MIMIC_FORMS_MAX); - mf_ptr = get_mimic_form(mf_idx); + int mf_idx = rand_int(MIMIC_FORMS_MAX); + auto const mf_ptr = get_mimic_form(mf_idx); if (mimic_form_enabled(mf_ptr)) { @@ -695,7 +692,7 @@ byte get_mimic_level(s16b mf_idx) */ s32b get_mimic_random_duration(s16b mf_idx) { - mimic_form_type *mf_ptr = get_mimic_form(mf_idx); + auto const mf_ptr = get_mimic_form(mf_idx); return rand_range(mf_ptr->duration.min, mf_ptr->duration.max); } @@ -704,7 +701,7 @@ s32b get_mimic_random_duration(s16b mf_idx) */ byte calc_mimic() { - mimic_form_type *mf_ptr = get_mimic_form(p_ptr->mimic_form); + auto const mf_ptr = get_mimic_form(p_ptr->mimic_form); if (mf_ptr->calc != NULL) { return mf_ptr->calc(); |