if (creature_ptr->mimic_form) {
switch (creature_ptr->mimic_form) {
case MIMIC_DEMON:
- creature_ptr->resist_neth = TRUE;
creature_ptr->oppose_fire = 1;
creature_ptr->redraw |= PR_STATUS;
break;
case MIMIC_DEMON_LORD:
- creature_ptr->resist_neth = TRUE;
creature_ptr->resist_fear = TRUE;
break;
case MIMIC_VAMPIRE:
- creature_ptr->resist_neth = TRUE;
if (creature_ptr->pclass != CLASS_NINJA)
creature_ptr->lite = TRUE;
break;
creature_ptr->immune_acid = TRUE;
break;
case RACE_ZOMBIE:
- creature_ptr->resist_neth = TRUE;
creature_ptr->slow_digest = TRUE;
break;
case RACE_VAMPIRE:
- creature_ptr->resist_neth = TRUE;
if (creature_ptr->pclass != CLASS_NINJA)
creature_ptr->lite = TRUE;
break;
case RACE_SPECTRE:
- creature_ptr->resist_neth = TRUE;
creature_ptr->pass_wall = TRUE;
break;
case RACE_BALROG:
- creature_ptr->resist_neth = TRUE;
if (creature_ptr->lev > 44) {
creature_ptr->oppose_fire = 1;
creature_ptr->redraw |= PR_STATUS;
}
}
+void have_resist_neth(player_type *creature_ptr)
+{
+ object_type *o_ptr;
+ BIT_FLAGS flgs[TR_FLAG_SIZE];
+
+ if (creature_ptr->mimic_form == MIMIC_DEMON_LORD || creature_ptr->mimic_form == MIMIC_DEMON || creature_ptr->mimic_form == MIMIC_VAMPIRE) {
+ creature_ptr->resist_neth = TRUE;
+ }
+
+ if (!creature_ptr->mimic_form
+ && (creature_ptr->prace == RACE_ZOMBIE || creature_ptr->prace == RACE_VAMPIRE || creature_ptr->prace == RACE_SPECTRE
+ || creature_ptr->prace == RACE_BALROG))
+ creature_ptr->resist_neth = TRUE;
+
+ if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) {
+ creature_ptr->resist_neth = TRUE;
+ }
+
+ if (creature_ptr->tim_res_nether) {
+ creature_ptr->resist_neth = 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_RES_NETHER))
+ creature_ptr->resist_neth = TRUE;
+ }
+}
void have_resist_shard(player_type *creature_ptr);
void have_resist_nexus(player_type *creature_ptr);
void have_resist_blind(player_type *creature_ptr);
+void have_resist_neth(player_type *creature_ptr);
have_resist_shard(creature_ptr);
have_resist_nexus(creature_ptr);
have_resist_blind(creature_ptr);
+ have_resist_neth(creature_ptr);
calc_race_status(creature_ptr);
{
if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) {
creature_ptr->lite = TRUE;
- creature_ptr->resist_neth = TRUE;
creature_ptr->resist_fear = TRUE;
}
- if (creature_ptr->tim_res_nether) {
- creature_ptr->resist_neth = TRUE;
- }
-
if (creature_ptr->tim_res_time) {
creature_ptr->resist_time = TRUE;
}
if (have_flag(flgs, TR_RES_FEAR))
creature_ptr->resist_fear = TRUE;
- if (have_flag(flgs, TR_RES_NETHER))
- creature_ptr->resist_neth = TRUE;
if (o_ptr->name2 == EGO_RING_RES_TIME)
creature_ptr->resist_time = TRUE;