+ if (get_player_flags(player_ptr, TR_SELF_FIRE) && !has_immune_fire(player_ptr)) {
+ HIT_POINT damage;
+ damage = player_ptr->lev;
+ if (race.tr_flags().has(TR_VUL_FIRE))
+ damage += damage / 3;
+ if (has_resist_fire(player_ptr))
+ damage = damage / 3;
+ if (is_oppose_fire(player_ptr))
+ damage = damage / 3;
+
+ damage = std::max(damage, 1);
+ msg_print(_("熱い!", "It's hot!"));
+ take_hit(player_ptr, DAMAGE_NOESCAPE, damage, _("炎のオーラ", "Fire aura"));
+ }
+
+ if (get_player_flags(player_ptr, TR_SELF_ELEC) && !has_immune_elec(player_ptr)) {
+ HIT_POINT damage;
+ damage = player_ptr->lev;
+ if (race.tr_flags().has(TR_VUL_ELEC))
+ damage += damage / 3;
+ if (has_resist_elec(player_ptr))
+ damage = damage / 3;
+ if (is_oppose_elec(player_ptr))
+ damage = damage / 3;
+
+ damage = std::max(damage, 1);
+ msg_print(_("痛い!", "It hurts!"));
+ take_hit(player_ptr, DAMAGE_NOESCAPE, damage, _("電気のオーラ", "Elec aura"));
+ }
+
+ if (get_player_flags(player_ptr, TR_SELF_COLD) && !has_immune_cold(player_ptr)) {
+ HIT_POINT damage;
+ damage = player_ptr->lev;
+ if (race.tr_flags().has(TR_VUL_COLD))
+ damage += damage / 3;
+ if (has_resist_cold(player_ptr))
+ damage = damage / 3;
+ if (is_oppose_cold(player_ptr))
+ damage = damage / 3;
+
+ damage = std::max(damage, 1);
+ msg_print(_("冷たい!", "It's cold!"));
+ take_hit(player_ptr, DAMAGE_NOESCAPE, damage, _("冷気のオーラ", "Cold aura"));
+ }
+