if (creature_ptr->muta3 == 0)
return;
- if (creature_ptr->muta3 & MUT3_FLESH_ROT)
- creature_ptr->regenerate = FALSE;
-
if (creature_ptr->muta3 & MUT3_FIRE_BODY) {
creature_ptr->lite = TRUE;
}
if (creature_ptr->muta3 & MUT3_FEARLESS)
creature_ptr->resist_fear = TRUE;
- if (creature_ptr->muta3 & MUT3_REGEN)
- creature_ptr->regenerate = TRUE;
}
case CLASS_WARRIOR:
if (creature_ptr->lev > 29)
creature_ptr->resist_fear = TRUE;
- if (creature_ptr->lev > 44)
- creature_ptr->regenerate = TRUE;
break;
case CLASS_PALADIN:
if (creature_ptr->lev > 39)
break;
case CLASS_BERSERKER:
creature_ptr->shero = 1;
- creature_ptr->regenerate = TRUE;
creature_ptr->redraw |= PR_STATUS;
break;
case CLASS_NINJA:
case RACE_HALF_ORC:
creature_ptr->resist_dark = TRUE;
break;
- case RACE_HALF_TROLL:
- if (creature_ptr->lev > 14) {
- creature_ptr->regenerate = TRUE;
- }
- break;
- case RACE_AMBERITE:
- creature_ptr->regenerate = TRUE;
- break;
case RACE_HIGH_ELF:
creature_ptr->resist_lite = TRUE;
break;
creature_ptr->slow_digest = TRUE;
}
}
+
+void have_regenerate(player_type *creature_ptr)
+{
+ object_type *o_ptr;
+ BIT_FLAGS flgs[TR_FLAG_SIZE];
+ creature_ptr->regenerate = FALSE;
+
+ if (!creature_ptr->mimic_form) {
+ switch (creature_ptr->prace) {
+ case RACE_HALF_TROLL:
+ if (creature_ptr->lev > 14) {
+ creature_ptr->regenerate = TRUE;
+ }
+ break;
+ case RACE_AMBERITE:
+ creature_ptr->regenerate = TRUE;
+ break;
+ }
+ }
+
+ switch (creature_ptr->pclass) {
+ case CLASS_WARRIOR:
+ if (creature_ptr->lev > 44)
+ creature_ptr->regenerate = TRUE;
+ break;
+ case CLASS_BERSERKER:
+ creature_ptr->regenerate = TRUE;
+ break;
+ }
+
+ if (creature_ptr->muta3 & MUT3_FLESH_ROT)
+ creature_ptr->regenerate = FALSE;
+
+ if (creature_ptr->muta3 & MUT3_REGEN)
+ creature_ptr->regenerate = TRUE;
+
+ if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) {
+ creature_ptr->regenerate = TRUE;
+ }
+
+ if (creature_ptr->realm1 == REALM_HEX) {
+ if (hex_spelling(creature_ptr, HEX_DEMON_AURA)) {
+ creature_ptr->regenerate = TRUE;
+ }
+ }
+
+ if (creature_ptr->tim_regen) {
+ creature_ptr->regenerate = TRUE;
+ }
+
+ for (int i = INVEN_RARM; i < INVEN_TOTAL; i++) {
+ o_ptr = &creature_ptr->inventory_list[i];
+ if (!o_ptr->k_idx)
+ continue;
+ object_flags(creature_ptr, o_ptr, flgs);
+ if (have_flag(flgs, TR_REGEN))
+ creature_ptr->regenerate = TRUE;
+ }
+}
void have_levitation(player_type *creature_ptr);
void have_can_swim(player_type *creature_ptr);
void have_slow_digest(player_type *creature_ptr);
+void have_regenerate(player_type *creature_ptr);
creature_ptr->cursed = 0L;
creature_ptr->impact[0] = FALSE;
creature_ptr->impact[1] = FALSE;
- creature_ptr->regenerate = FALSE;
creature_ptr->resist_acid = FALSE;
creature_ptr->resist_elec = FALSE;
creature_ptr->resist_fire = FALSE;
have_levitation(creature_ptr);
have_can_swim(creature_ptr);
have_slow_digest(creature_ptr);
+ have_regenerate(creature_ptr);
calc_race_status(creature_ptr);
if (creature_ptr->sh_fire)
creature_ptr->lite = TRUE;
- if (creature_ptr->realm1 == REALM_HEX) {
-
- if (hex_spelling(creature_ptr, HEX_DEMON_AURA)) {
- creature_ptr->regenerate = TRUE;
- }
- }
-
calc_strength_addition(creature_ptr);
calc_intelligence_addition(creature_ptr);
calc_wisdom_addition(creature_ptr);
void calc_timelimit_status(player_type *creature_ptr)
{
if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) {
- creature_ptr->regenerate = TRUE;
creature_ptr->lite = TRUE;
creature_ptr->resist_acid = TRUE;
creature_ptr->resist_elec = TRUE;
creature_ptr->immune_cold = TRUE;
}
- if (creature_ptr->tim_regen) {
- creature_ptr->regenerate = TRUE;
- }
-
if (is_hero(creature_ptr) || creature_ptr->shero) {
creature_ptr->resist_fear = TRUE;
}
creature_ptr->cursed |= TRC_FAST_DIGEST;
if (have_flag(flgs, TR_SLOW_REGEN))
creature_ptr->cursed |= TRC_SLOW_REGEN;
- if (have_flag(flgs, TR_REGEN))
- creature_ptr->regenerate = TRUE;
+
if (have_flag(flgs, TR_TELEPORT)) {
if (object_is_cursed(o_ptr))