#include "spell-kind/spells-perception.h"
#include "spell-kind/spells-sight.h"
#include "spell-realm/spells-nature.h"
-#include "spell/spell-types.h"
+#include "effect/attribute-types.h"
#include "spell/spells-diceroll.h"
#include "spell/spells-object.h"
#include "spell/spells-status.h"
* @brief 自然領域魔法の各処理を行う
* @param player_ptr プレイヤーへの参照ポインタ
* @param spell 魔法ID
- * @param mode 処理内容 (SPELL_NAME / SPELL_DESC / SPELL_INFO / SPELL_CAST)
- * @return SPELL_NAME / SPELL_DESC / SPELL_INFO 時には文字列ポインタを返す。SPELL_CAST時はnullptr文字列を返す。
+ * @param mode 処理内容 (SpellProcessType::NAME / SPELL_DESC / SpellProcessType::INFO / SpellProcessType::CAST)
+ * @return SpellProcessType::NAME / SPELL_DESC / SpellProcessType::INFO 時には文字列ポインタを返す。SpellProcessType::CAST時はnullptr文字列を返す。
*/
-concptr do_nature_spell(player_type *player_ptr, SPELL_IDX spell, spell_type mode)
+concptr do_nature_spell(PlayerType *player_ptr, SPELL_IDX spell, SpellProcessType mode)
{
- bool name = mode == SPELL_NAME;
- bool desc = mode == SPELL_DESCRIPTION;
- bool info = mode == SPELL_INFO;
- bool cast = mode == SPELL_CAST;
+ bool name = mode == SpellProcessType::NAME;
+ bool desc = mode == SpellProcessType::DESCRIPTION;
+ bool info = mode == SpellProcessType::INFO;
+ bool cast = mode == SpellProcessType::CAST;
DIRECTION dir;
PLAYER_LEVEL plev = player_ptr->lev;
if (!get_aim_dir(player_ptr, &dir))
return nullptr;
- fire_beam(player_ptr, GF_ELEC, dir, damroll(dice, sides));
+ fire_beam(player_ptr, AttributeType::ELEC, dir, damroll(dice, sides));
}
}
break;
{
if (cast) {
- object_type forge, *q_ptr = &forge;
+ ObjectType forge, *q_ptr = &forge;
msg_print(_("食料を生成した。", "A food ration is produced."));
/* Create the food ration */
lite_area(player_ptr, damroll(dice, sides), rad);
PlayerRace race(player_ptr);
- if (race.life() == PlayerRaceLife::UNDEAD && race.tr_flags().has(TR_VUL_LITE) && !has_resist_lite(player_ptr)) {
+ if (race.life() == PlayerRaceLifeType::UNDEAD && race.tr_flags().has(TR_VUL_LITE) && !has_resist_lite(player_ptr)) {
msg_print(_("日の光があなたの肉体を焦がした!", "The daylight scorches your flesh!"));
take_hit(player_ptr, DAMAGE_NOESCAPE, damroll(2, 2), _("日の光", "daylight"));
}
if (cast) {
if (!get_aim_dir(player_ptr, &dir))
return nullptr;
- fire_bolt_or_beam(player_ptr, beam_chance(player_ptr) - 10, GF_COLD, dir, damroll(dice, sides));
+ fire_bolt_or_beam(player_ptr, beam_chance(player_ptr) - 10, AttributeType::COLD, dir, damroll(dice, sides));
}
}
break;
if (cast) {
if (!get_aim_dir(player_ptr, &dir))
return nullptr;
- fire_bolt_or_beam(player_ptr, beam_chance(player_ptr) - 10, GF_FIRE, dir, damroll(dice, sides));
+ fire_bolt_or_beam(player_ptr, beam_chance(player_ptr) - 10, AttributeType::FIRE, dir, damroll(dice, sides));
}
}
break;
return _("巨大な冷気の球を放つ。", "Fires a huge ball of cold.");
{
- HIT_POINT dam = 70 + plev * 3 / 2;
+ int dam = 70 + plev * 3 / 2;
POSITION rad = plev / 12 + 1;
if (info)
if (!get_aim_dir(player_ptr, &dir))
return nullptr;
- fire_ball(player_ptr, GF_COLD, dir, dam, rad);
+ fire_ball(player_ptr, AttributeType::COLD, dir, dam, rad);
}
}
break;
return _("巨大な電撃の球を放つ。", "Fires a huge electric ball.");
{
- HIT_POINT dam = 90 + plev * 3 / 2;
+ int dam = 90 + plev * 3 / 2;
POSITION rad = plev / 12 + 1;
if (info)
if (cast) {
if (!get_aim_dir(player_ptr, &dir))
return nullptr;
- fire_ball(player_ptr, GF_ELEC, dir, dam, rad);
+ fire_ball(player_ptr, AttributeType::ELEC, dir, dam, rad);
break;
}
}
return _("巨大な水の球を放つ。", "Fires a huge ball of water.");
{
- HIT_POINT dam = 100 + plev * 3 / 2;
+ int dam = 100 + plev * 3 / 2;
POSITION rad = plev / 12 + 1;
if (info)
if (cast) {
if (!get_aim_dir(player_ptr, &dir))
return nullptr;
- fire_ball(player_ptr, GF_WATER, dir, dam, rad);
+ fire_ball(player_ptr, AttributeType::WATER, dir, dam, rad);
}
}
break;
"Generates ball of light centered on you. Maps and lights whole dungeon level. Knows all objects location.");
{
- HIT_POINT dam = 150;
+ int dam = 150;
POSITION rad = 8;
if (info)
return info_damage(0, 0, dam / 2);
if (cast) {
- fire_ball(player_ptr, GF_LITE, 0, dam, rad);
+ fire_ball(player_ptr, AttributeType::LITE, 0, dam, rad);
chg_virtue(player_ptr, V_KNOWLEDGE, 1);
chg_virtue(player_ptr, V_ENLIGHTEN, 1);
wiz_lite(player_ptr, false);
PlayerRace race(player_ptr);
- if (race.life() == PlayerRaceLife::UNDEAD && race.tr_flags().has(TR_VUL_LITE) && !has_resist_lite(player_ptr)) {
+ if (race.life() == PlayerRaceLifeType::UNDEAD && race.tr_flags().has(TR_VUL_LITE) && !has_resist_lite(player_ptr)) {
msg_print(_("日光があなたの肉体を焦がした!", "The sunlight scorches your flesh!"));
take_hit(player_ptr, DAMAGE_NOESCAPE, 50, _("日光", "sunlight"));
}
if (cast) {
dispel_monsters(player_ptr, d_dam);
earthquake(player_ptr, player_ptr->y, player_ptr->x, q_rad, 0);
- project(player_ptr, 0, b_rad, player_ptr->y, player_ptr->x, b_dam, GF_DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM);
+ project(player_ptr, 0, b_rad, player_ptr->y, player_ptr->x, b_dam, AttributeType::DISINTEGRATE, PROJECT_KILL | PROJECT_ITEM);
}
}
break;