summaryrefslogtreecommitdiff
path: root/src/ego_item_type.hpp
blob: b5cf2781f881be2990dfaec17bf8ccec3a0452aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#pragma once

#include "h-basic.h"

/*
 * Size of flag rarity tables
 */
constexpr int FLAG_RARITY_MAX = 6;

/**
 * Ego item descriptors.
 */
struct ego_item_type
{
	const char *name = nullptr;              /* Name */

	bool_ before = FALSE;                    /* Before or after the object name ? */

	byte tval[10] = { 0 };
	byte min_sval[10] = { 0 };
	byte max_sval[10] = { 0 };

	byte rating = 0;                         /* Rating boost */

	byte level = 0;                          /* Minimum level */
	byte rarity = 0;                         /* Object rarity */
	byte mrarity = 0;                        /* Object rarity */

	s16b max_to_h = 0;                       /* Maximum to-hit bonus */
	s16b max_to_d = 0;                       /* Maximum to-dam bonus */
	s16b max_to_a = 0;                       /* Maximum to-ac bonus */

	s16b activate = 0;                       /* Activation Number */

	s32b max_pval = 0;                       /* Maximum pval */

	s32b cost = 0;                           /* Ego-item "cost" */

	byte rar[FLAG_RARITY_MAX] = { 0 };

	u32b flags1[FLAG_RARITY_MAX] = { 0 };    /* Ego-Item Flags, set 1 */
	u32b flags2[FLAG_RARITY_MAX] = { 0 };    /* Ego-Item Flags, set 2 */
	u32b flags3[FLAG_RARITY_MAX] = { 0 };    /* Ego-Item Flags, set 3 */
	u32b flags4[FLAG_RARITY_MAX] = { 0 };    /* Ego-Item Flags, set 4 */
	u32b flags5[FLAG_RARITY_MAX] = { 0 };    /* Ego-Item Flags, set 5 */
	u32b esp[FLAG_RARITY_MAX] = { 0 };       /* ESP flags */
	u32b oflags1[FLAG_RARITY_MAX] = { 0 };   /* Ego-Item Obvious Flags, set 1 */
	u32b oflags2[FLAG_RARITY_MAX] = { 0 };   /* Ego-Item Obvious Flags, set 2 */
	u32b oflags3[FLAG_RARITY_MAX] = { 0 };   /* Ego-Item Obvious Flags, set 3 */
	u32b oflags4[FLAG_RARITY_MAX] = { 0 };   /* Ego-Item Obvious Flags, set 4 */
	u32b oflags5[FLAG_RARITY_MAX] = { 0 };   /* Ego-Item Obvious Flags, set 5 */
	u32b oesp[FLAG_RARITY_MAX] = { 0 };      /* Obvious ESP flags */

	u32b fego[FLAG_RARITY_MAX] = { 0 };      /* ego flags */

	u32b need_flags1 = 0;                    /* Ego-Item Flags, set 1 */
	u32b need_flags2 = 0;                    /* Ego-Item Flags, set 2 */
	u32b need_flags3 = 0;                    /* Ego-Item Flags, set 3 */
	u32b need_flags4 = 0;                    /* Ego-Item Flags, set 4 */
	u32b need_flags5 = 0;                    /* Ego-Item Flags, set 5 */
	u32b need_esp = 0;                       /* ESP flags */
	u32b forbid_flags1 = 0;                  /* Ego-Item Flags, set 1 */
	u32b forbid_flags2 = 0;                  /* Ego-Item Flags, set 2 */
	u32b forbid_flags3 = 0;                  /* Ego-Item Flags, set 3 */
	u32b forbid_flags4 = 0;                  /* Ego-Item Flags, set 4 */
	u32b forbid_flags5 = 0;                  /* Ego-Item Flags, set 5 */
	u32b forbid_esp = 0;                     /* ESP flags */

	s16b power = 0;                          /* Power granted, if any */
};