diff options
Diffstat (limited to 'src/object_kind.hpp')
-rw-r--r-- | src/object_kind.hpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/object_kind.hpp b/src/object_kind.hpp new file mode 100644 index 00000000..2f347f3f --- /dev/null +++ b/src/object_kind.hpp @@ -0,0 +1,73 @@ +#pragma once + +#include "h-basic.h" +#include "object_flag_set.hpp" + +/** + * Size of allocation table for objects + */ +constexpr int ALLOCATION_MAX = 8; + +/** + * Object "kind" descriptor. Includes player knowledge. + * + * Only "aware" and "tried" are saved in the savefile + */ +struct object_kind +{ + const char *name = nullptr; /* Name */ + char *text = nullptr; /* Text */ + + byte tval = 0; /* Object type */ + byte sval = 0; /* Object sub type */ + + s32b pval = 0; /* Object extra info */ + s32b pval2 = 0; /* Object extra info */ + + s16b to_h = 0; /* Bonus to hit */ + s16b to_d = 0; /* Bonus to damage */ + s16b to_a = 0; /* Bonus to armor */ + + s16b activate = 0; /* Activation number */ + + s16b ac = 0; /* Base armor */ + + byte dd = 0; /* Damage dice */ + byte ds = 0; /* Damage sides */ + + s32b weight = 0; /* Weight */ + + s32b cost = 0; /* Object "base cost" */ + + object_flag_set flags; + + object_flag_set oflags; + + byte locale[ALLOCATION_MAX] = { 0 }; /* Allocation level(s) */ + byte chance[ALLOCATION_MAX] = { 0 }; /* Allocation chance(s) */ + + byte level = 0; /* Level */ + + + byte d_attr = 0; /* Default object attribute */ + char d_char = 0; /* Default object character */ + + + byte x_attr = 0; /* Desired object attribute */ + char x_char = 0; /* Desired object character */ + + + byte flavor = 0; /* Special object flavor (or zero) */ + + bool_ easy_know = 0; /* This object is always known (if aware) */ + + bool_ aware = 0; /* The player is "aware" of the item's effects */ + + bool_ tried = 0; /* The player has "tried" one of the items */ + + byte btval = 0; /* Become Object type */ + byte bsval = 0; /* Become Object sub type */ + bool_ artifact = 0; /* Is it a normal artifact(already generated) */ + + s16b power = 0; /* Power granted(if any) */ +}; |