}
creature_ptr->resist_fear = TRUE;
- if (creature_ptr->lev > 19)
- creature_ptr->resist_pois = TRUE;
if (creature_ptr->lev > 44) {
creature_ptr->oppose_pois = 1;
creature_ptr->redraw |= PR_STATUS;
case MIMIC_DEMON_LORD:
creature_ptr->resist_chaos = TRUE;
creature_ptr->resist_neth = TRUE;
- creature_ptr->resist_pois = TRUE;
creature_ptr->resist_conf = TRUE;
creature_ptr->resist_disen = TRUE;
creature_ptr->resist_nexus = TRUE;
case MIMIC_VAMPIRE:
creature_ptr->resist_dark = TRUE;
creature_ptr->resist_neth = TRUE;
- creature_ptr->resist_pois = TRUE;
if (creature_ptr->pclass != CLASS_NINJA)
creature_ptr->lite = TRUE;
break;
case RACE_DARK_ELF:
creature_ptr->resist_dark = TRUE;
break;
- case RACE_DRACONIAN:
- if (creature_ptr->lev > 34)
- creature_ptr->resist_pois = TRUE;
- break;
- case RACE_GOLEM:
- creature_ptr->resist_pois = TRUE;
- break;
case RACE_SKELETON:
creature_ptr->resist_shard = TRUE;
- creature_ptr->resist_pois = TRUE;
break;
case RACE_ZOMBIE:
creature_ptr->resist_neth = TRUE;
case RACE_VAMPIRE:
creature_ptr->resist_dark = TRUE;
creature_ptr->resist_neth = TRUE;
- creature_ptr->resist_pois = TRUE;
if (creature_ptr->pclass != CLASS_NINJA)
creature_ptr->lite = TRUE;
break;
case RACE_KUTAR:
creature_ptr->resist_conf = TRUE;
break;
- case RACE_ANDROID:
- creature_ptr->resist_pois = TRUE;
- break;
case RACE_MERFOLK:
creature_ptr->resist_water = TRUE;
break;
creature_ptr->resist_cold = TRUE;
}
-
if (creature_ptr->immune_cold)
creature_ptr->resist_cold = TRUE;
+}
+
+void have_resist_pois(player_type *creature_ptr)
+{
+ object_type *o_ptr;
+ BIT_FLAGS flgs[TR_FLAG_SIZE];
+ creature_ptr->resist_pois = FALSE;
+
+ if (creature_ptr->pclass == CLASS_NINJA && creature_ptr->lev > 19)
+ creature_ptr->resist_pois = TRUE;
+ if (creature_ptr->mimic_form == MIMIC_VAMPIRE || creature_ptr->mimic_form == MIMIC_DEMON_LORD) {
+ creature_ptr->resist_pois = TRUE;
+ }
+
+ if (!creature_ptr->mimic_form && creature_ptr->prace == RACE_DRACONIAN && creature_ptr->lev > 34) {
+ creature_ptr->resist_pois = TRUE;
+ }
+ if (!creature_ptr->mimic_form
+ && (creature_ptr->prace == RACE_GOLEM || creature_ptr->prace == RACE_SKELETON || creature_ptr->prace == RACE_VAMPIRE
+ || creature_ptr->prace == RACE_SPECTRE || creature_ptr->prace == RACE_ANDROID)) {
+ creature_ptr->resist_pois = TRUE;
+ }
+
+ if (creature_ptr->special_defense & KAMAE_SEIRYU) {
+ creature_ptr->resist_pois = TRUE;
+ }
+
+ if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) {
+ creature_ptr->resist_pois = 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_POIS))
+ creature_ptr->resist_pois = TRUE;
+ }
}
void have_resist_elec(player_type *creature_ptr);
void have_resist_fire(player_type *creature_ptr);
void have_resist_cold(player_type *creature_ptr);
+void have_resist_pois(player_type *creature_ptr);
*/
static void clear_creature_bonuses(player_type *creature_ptr)
{
- creature_ptr->resist_pois = FALSE;
creature_ptr->resist_conf = FALSE;
creature_ptr->resist_sound = FALSE;
creature_ptr->resist_lite = FALSE;
have_resist_elec(creature_ptr);
have_resist_fire(creature_ptr);
have_resist_cold(creature_ptr);
+ have_resist_pois(creature_ptr);
calc_race_status(creature_ptr);
creature_ptr->dis_to_d[i] += (creature_ptr->lev / 6);
}
- if (creature_ptr->special_defense & KAMAE_SEIRYU) {
- creature_ptr->resist_cold = TRUE;
- creature_ptr->resist_pois = TRUE;
- } else if (creature_ptr->special_defense & KAMAE_GENBU) {
+ if (creature_ptr->special_defense & KAMAE_GENBU) {
creature_ptr->to_a += (creature_ptr->lev * creature_ptr->lev) / 50;
creature_ptr->dis_to_a += (creature_ptr->lev * creature_ptr->lev) / 50;
creature_ptr->num_blow[i] -= 2;
{
if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) {
creature_ptr->lite = TRUE;
- creature_ptr->resist_cold = TRUE;
- creature_ptr->resist_pois = TRUE;
creature_ptr->resist_conf = TRUE;
creature_ptr->resist_sound = TRUE;
creature_ptr->resist_lite = TRUE;
if (have_flag(flgs, TR_IM_ELEC))
creature_ptr->immune_elec = TRUE;
- if (have_flag(flgs, TR_RES_POIS))
- creature_ptr->resist_pois = TRUE;
if (have_flag(flgs, TR_RES_FEAR))
creature_ptr->resist_fear = TRUE;
if (have_flag(flgs, TR_RES_CONF))