3 #include "realm/realm-hex-numbers.h"
4 #include "system/angband.h"
9 enum class SpellHexRevengeType : byte {
15 class MonsterAttackPlayer;
17 struct spell_hex_data_type;
20 SpellHex(PlayerType *player_ptr);
21 SpellHex(PlayerType *player_ptr, MonsterAttackPlayer *monap_ptr);
22 virtual ~SpellHex() = default;
24 bool stop_spells_with_selection();
26 void stop_all_spells();
27 bool is_casting_full_capacity() const;
28 void continue_revenge();
29 void store_vengeful_damage(int dam);
30 bool check_hex_barrier(MONSTER_IDX m_idx, spell_hex_type type) const;
31 bool is_spelling_specific(int hex) const;
32 bool is_spelling_any() const;
33 void interrupt_spelling();
35 void thief_teleport();
36 void set_casting_flag(spell_hex_type type);
37 void reset_casting_flag(spell_hex_type type);
38 int32_t get_casting_num() const;
39 int32_t get_revenge_power() const;
40 void set_revenge_power(int32_t power, bool substitution);
41 byte get_revenge_turn() const;
42 void set_revenge_turn(byte power, bool substitution);
43 SpellHexRevengeType get_revenge_type() const;
44 void set_revenge_type(SpellHexRevengeType type);
47 PlayerType *player_ptr;
48 std::vector<int> casting_spells;
49 MonsterAttackPlayer *monap_ptr = nullptr;
50 std::shared_ptr<spell_hex_data_type> spell_hex_data;
52 std::pair<bool, std::optional<char>> select_spell_stopping(std::string_view prompt);
53 void display_casting_spells_list();
54 bool process_mana_cost(const bool need_restart);