#pragma once
+#include "effect/attribute-types.h"
#include "system/angband.h"
-#define SPELL_MAX 3
+enum class MonsterRaceId : int16_t;
+class FloorType;
+class PlayerType;
typedef union spell_functions {
struct debug_spell_type1 {
- bool (*spell_function)(player_type *, floor_type *);
+ bool (*spell_function)(PlayerType *, FloorType *);
} spell1;
struct debug_spell_type2 {
- bool (*spell_function)(player_type *);
+ bool (*spell_function)(PlayerType *);
} spell2;
struct debug_spell_type3 {
- bool (*spell_function)(player_type *, HIT_POINT);
+ bool (*spell_function)(PlayerType *, int);
} spell3;
+ struct debug_spell_type4 { // 実質 ty curse
+ bool (*spell_function)(PlayerType *, bool, int *);
+ } spell4;
+
+ struct debug_spell_type5 {
+ void (*spell_function)(PlayerType *);
+ } spell5;
+
} spell_functions;
-typedef struct debug_spell_command {
+struct debug_spell_command {
int type;
concptr command_name;
spell_functions command_function;
-} debug_spell_command;
-
-extern debug_spell_command debug_spell_commands_list[SPELL_MAX];
-
-bool wiz_debug_spell(player_type *creature_ptr);
-void wiz_dimension_door(player_type *caster_ptr);
-void wiz_summon_horde(player_type *caster_ptr);
-void wiz_teleport_back(player_type *caster_ptr);
-void wiz_learn_blue_magic_all(player_type *caster_ptr);
-void wiz_summon_random_enemy(player_type *caster_ptr, int num);
-void wiz_summon_specific_enemy(player_type *summoner_ptr, MONRACE_IDX r_idx);
-void wiz_summon_pet(player_type *summoner_ptr, MONRACE_IDX r_idx);
-void wiz_kill_enemy(player_type *caster_ptr);
+};
+
+void wiz_debug_spell(PlayerType *player_ptr);
+void wiz_dimension_door(PlayerType *player_ptr);
+void wiz_summon_horde(PlayerType *player_ptr);
+void wiz_teleport_back(PlayerType *player_ptr);
+void wiz_learn_blue_magic_all(PlayerType *player_ptr);
+void wiz_fillup_all_smith_essences(PlayerType *player_ptr);
+void wiz_generate_random_monster(PlayerType *player_ptr, int num);
+void wiz_summon_random_monster(PlayerType *player_ptr, int num);
+void wiz_summon_specific_monster(PlayerType *player_ptr, MonsterRaceId r_idx);
+void wiz_summon_pet(PlayerType *player_ptr, MonsterRaceId r_idx);
+void wiz_kill_target(PlayerType *player_ptr, int initial_dam = 1000000, AttributeType effect_idx = AttributeType::DEBUG, const bool self = false);