OSDN Git Service

[Refactor] #2425 PolearmEnchanterを定義し、SwordEnchanterから必要な処理を分離した
[hengbandforosx/hengbandosx.git] / src / object-enchant / weapon / apply-magic-polearm.cpp
1 /*!
2  * @brief 長柄/斧に耐性等の追加効果を付与する処理
3  * @date 2022/03/22
4  * @author Hourier
5  */
6
7 #include "object-enchant/weapon/apply-magic-polearm.h"
8 #include "floor/floor-base-definitions.h"
9 #include "inventory/inventory-slot-types.h"
10 #include "system/object-type-definition.h"
11
12 /*!
13  * @brief 長柄/斧強化クラスのコンストラクタ
14  * @param player_ptr プレイヤーへの参照ポインタ
15  * @param o_ptr 強化を与えたいオブジェクトの構造体参照ポインタ
16  * @param level 生成基準階
17  * @param power 生成ランク
18  */
19 PolearmEnchanter::PolearmEnchanter(PlayerType *player_ptr, ObjectType *o_ptr, DEPTH level, int power)
20     : MeleeWeaponEnchanter(player_ptr, o_ptr, level, power)
21 {
22 }
23
24 void PolearmEnchanter::give_ego_index()
25 {
26     while (true) {
27         this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, true);
28         if ((this->o_ptr->ego_idx == EgoType::SHARPNESS) || (this->o_ptr->ego_idx == EgoType::EARTHQUAKES)) {
29             continue;
30         }
31
32         break;
33     }
34 }
35
36 void PolearmEnchanter::give_cursed()
37 {
38     if (randint0(MAX_DEPTH) >= this->level) {
39         return;
40     }
41
42     while (true) {
43         this->o_ptr->ego_idx = get_random_ego(INVEN_MAIN_HAND, false);
44         if (this->o_ptr->ego_idx == EgoType::WEIRD) {
45             continue;
46         }
47
48         return;
49     }
50 }