1 #include "object/object-generator.h"
2 #include "object-enchant/object-curse.h"
3 #include "object-enchant/special-object-flags.h"
4 #include "object-enchant/trc-types.h"
5 #include "object-enchant/trg-types.h"
6 #include "object/object-kind.h"
10 * Wipe an object clean.
11 * @param o_ptr 初期化したいオブジェクトの構造体参照ポインタ
14 void object_wipe(object_type *o_ptr) { (void)WIPE(o_ptr, object_type); }
18 * Wipe an object clean.
19 * @param o_ptr 複製元のオブジェクトの構造体参照ポインタ
20 * @param j_ptr 複製先のオブジェクトの構造体参照ポインタ
23 void object_copy(object_type *o_ptr, object_type *j_ptr) { (void)COPY(o_ptr, j_ptr, object_type); }
26 * @brief オブジェクト構造体にベースアイテムを作成する
27 * Prepare an object based on an object kind.
28 * @param o_ptr 代入したいオブジェクトの構造体参照ポインタ
29 * @param k_idx 新たに作成したいベースアイテム情報のID
32 void object_prep(player_type *player_ptr, object_type *o_ptr, KIND_OBJECT_IDX k_idx)
34 object_kind *k_ptr = &k_info[k_idx];
37 o_ptr->tval = k_ptr->tval;
38 o_ptr->sval = k_ptr->sval;
39 o_ptr->pval = k_ptr->pval;
41 o_ptr->weight = k_ptr->weight;
42 o_ptr->to_h = k_ptr->to_h;
43 o_ptr->to_d = k_ptr->to_d;
44 o_ptr->to_a = k_ptr->to_a;
45 o_ptr->ac = k_ptr->ac;
46 o_ptr->dd = k_ptr->dd;
47 o_ptr->ds = k_ptr->ds;
49 if (k_ptr->act_idx > 0)
50 o_ptr->xtra2 = (XTRA8)k_ptr->act_idx;
51 if (k_info[o_ptr->k_idx].cost <= 0)
52 o_ptr->ident |= (IDENT_BROKEN);
54 if (k_ptr->gen_flags & (TRG_CURSED))
55 o_ptr->curse_flags |= (TRC_CURSED);
56 if (k_ptr->gen_flags & (TRG_HEAVY_CURSE))
57 o_ptr->curse_flags |= (TRC_HEAVY_CURSE);
58 if (k_ptr->gen_flags & (TRG_PERMA_CURSE))
59 o_ptr->curse_flags |= (TRC_PERMA_CURSE);
60 if (k_ptr->gen_flags & (TRG_RANDOM_CURSE0))
61 o_ptr->curse_flags |= get_curse(player_ptr, 0, o_ptr);
62 if (k_ptr->gen_flags & (TRG_RANDOM_CURSE1))
63 o_ptr->curse_flags |= get_curse(player_ptr, 1, o_ptr);
64 if (k_ptr->gen_flags & (TRG_RANDOM_CURSE2))
65 o_ptr->curse_flags |= get_curse(player_ptr, 2, o_ptr);