creature_ptr->regenerate = TRUE;
}
- if (creature_ptr->muta3 & MUT3_ESP) {
- creature_ptr->telepathy = TRUE;
- }
-
if (creature_ptr->muta3 & MUT3_MOTION) {
creature_ptr->free_act = TRUE;
}
creature_ptr->sustain_wis = TRUE;
if (creature_ptr->lev > 29)
creature_ptr->resist_conf = TRUE;
- if (creature_ptr->lev > 39)
- creature_ptr->telepathy = TRUE;
break;
case CLASS_MONK:
case CLASS_FORCETRAINER:
creature_ptr->resist_fear = TRUE;
creature_ptr->sh_fire = TRUE;
creature_ptr->see_inv = TRUE;
- creature_ptr->telepathy = TRUE;
creature_ptr->levitation = TRUE;
break;
case MIMIC_VAMPIRE:
creature_ptr->sustain_wis = TRUE;
if (creature_ptr->lev > 14)
creature_ptr->see_inv = TRUE;
- if (creature_ptr->lev > 29)
- creature_ptr->telepathy = TRUE;
break;
case RACE_IMP:
creature_ptr->resist_fire = TRUE;
creature_ptr->slow_digest = TRUE;
creature_ptr->resist_cold = TRUE;
creature_ptr->pass_wall = TRUE;
- if (creature_ptr->lev > 34)
- creature_ptr->telepathy = TRUE;
break;
case RACE_SPRITE:
creature_ptr->levitation = TRUE;
-#include "player/player-status.h"
-#include "player/player-race.h"
+#include "inventory/inventory-slot-types.h"
+#include "monster-race/monster-race.h"
+#include "monster-race/race-flags2.h"
+#include "mutation/mutation-flag-types.h"
+#include "object-enchant/tr-types.h"
+#include "object/object-flags.h"
#include "player/player-race-types.h"
+#include "player/player-race.h"
+#include "player/player-status.h"
+#include "player/special-defense-types.h"
#include "realm/realm-hex-numbers.h"
-#include "realm/realm-types.h"
#include "realm/realm-song-numbers.h"
+#include "realm/realm-types.h"
#include "spell-realm/spells-hex.h"
-#include "system/monster-type-definition.h"
-#include "monster-race/race-flags2.h"
-#include "monster-race/monster-race.h"
-#include "system/monster-type-definition.h"
#include "system/floor-type-definition.h"
+#include "system/monster-type-definition.h"
#include "system/object-type-definition.h"
-#include "inventory/inventory-slot-types.h"
-#include "object-enchant/tr-types.h"
-#include "object/object-flags.h"
#include "util/bit-flags-calculator.h"
-
void have_kill_wall(player_type *creature_ptr)
{
creature_ptr->kill_wall = FALSE;
creature_ptr->esp_unique = TRUE;
}
}
+
+void have_esp_telepathy(player_type *creature_ptr)
+{
+ object_type *o_ptr;
+ BIT_FLAGS flgs[TR_FLAG_SIZE];
+
+ creature_ptr->telepathy = FALSE;
+
+ if (is_time_limit_esp(creature_ptr)) {
+ creature_ptr->telepathy = TRUE;
+ }
+
+ if (creature_ptr->muta3 & MUT3_ESP) {
+ creature_ptr->telepathy = TRUE;
+ }
+
+ if (!creature_ptr->mimic_form && creature_ptr->prace == RACE_MIND_FLAYER && creature_ptr->lev > 29)
+ creature_ptr->telepathy = TRUE;
+
+ if (!creature_ptr->mimic_form && creature_ptr->prace == RACE_SPECTRE && creature_ptr->lev > 34)
+ creature_ptr->telepathy = TRUE;
+
+ if (creature_ptr->pclass == CLASS_MINDCRAFTER && creature_ptr->lev > 39)
+ creature_ptr->telepathy = TRUE;
+
+ if (creature_ptr->mimic_form == MIMIC_DEMON_LORD) {
+ creature_ptr->telepathy = TRUE;
+ }
+
+ if (creature_ptr->ult_res || (creature_ptr->special_defense & KATA_MUSOU)) {
+ creature_ptr->telepathy = 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_TELEPATHY))
+ creature_ptr->telepathy = TRUE;
+ }
+}
void have_esp_good(player_type *creature_ptr);
void have_esp_nonliving(player_type *creature_ptr);
void have_esp_unique(player_type *creature_ptr);
+void have_esp_telepathy(player_type *creature_ptr);
creature_ptr->can_swim = FALSE;
creature_ptr->levitation = FALSE;
creature_ptr->hold_exp = FALSE;
- creature_ptr->telepathy = FALSE;
creature_ptr->lite = FALSE;
creature_ptr->sustain_str = FALSE;
creature_ptr->sustain_int = FALSE;
have_esp_good(creature_ptr);
have_esp_nonliving(creature_ptr);
have_esp_unique(creature_ptr);
+ have_esp_telepathy(creature_ptr);
calc_race_status(creature_ptr);
creature_ptr->regenerate = TRUE;
creature_ptr->levitation = TRUE;
creature_ptr->hold_exp = TRUE;
- creature_ptr->telepathy = TRUE;
creature_ptr->lite = TRUE;
creature_ptr->sustain_str = TRUE;
creature_ptr->sustain_int = TRUE;
creature_ptr->levitation = TRUE;
}
- if (is_time_limit_esp(creature_ptr)) {
- creature_ptr->telepathy = TRUE;
- }
if (creature_ptr->ele_immune) {
if (creature_ptr->special_defense & DEFENSE_ACID)
creature_ptr->slow_digest = TRUE;
if (have_flag(flgs, TR_REGEN))
creature_ptr->regenerate = TRUE;
- if (have_flag(flgs, TR_TELEPATHY))
- creature_ptr->telepathy = TRUE;
if (have_flag(flgs, TR_SEE_INVIS))
creature_ptr->see_inv = TRUE;