OSDN Git Service

Merge pull request #3532 from sikabane-works/release/3.0.0.87-alpha
[hengbandforosx/hengbandosx.git] / src / object / object-broken.h
1 #pragma once
2
3 #include "object-enchant/tr-types.h"
4 #include "system/angband.h"
5
6 class ItemEntity;
7 class PlayerType;
8
9 bool potion_smash_effect(PlayerType *player_ptr, MONSTER_IDX who, POSITION y, POSITION x, short bi_id);
10 PERCENTAGE breakage_chance(PlayerType *player_ptr, ItemEntity *o_ptr, bool has_archer_bonus, SPELL_IDX snipe_type);
11
12 class ObjectBreaker {
13 protected:
14     ObjectBreaker(tr_type ignore_flg);
15
16 public:
17     virtual ~ObjectBreaker() = default;
18     bool can_destroy(ItemEntity *o_ptr) const;
19     virtual bool hates(ItemEntity *o_ptr) const = 0;
20
21 private:
22     tr_type ignore_flg;
23 };
24
25 class BreakerAcid : public ObjectBreaker {
26 public:
27     BreakerAcid();
28     virtual ~BreakerAcid() = default;
29     bool hates(ItemEntity *o_ptr) const;
30 };
31
32 class BreakerElec : public ObjectBreaker {
33 public:
34     BreakerElec();
35     virtual ~BreakerElec() = default;
36     bool hates(ItemEntity *o_ptr) const;
37 };
38
39 class BreakerFire : public ObjectBreaker {
40 public:
41     BreakerFire();
42     virtual ~BreakerFire() = default;
43     bool hates(ItemEntity *o_ptr) const;
44 };
45
46 class BreakerCold : public ObjectBreaker {
47 public:
48     BreakerCold();
49     virtual ~BreakerCold() = default;
50     bool hates(ItemEntity *o_ptr) const;
51 };