annotate Items.h @ 271:1f0af5cac2dd

_42ECB5_PlayerAttacksActor
author Nomad
date Mon, 18 Feb 2013 13:07:25 +0200
parents b9f4ff2f6c45
children 640a176c030f
rev   line source
0
Ritor1
parents:
diff changeset
1 #pragma once
Ritor1
parents:
diff changeset
2
Ritor1
parents:
diff changeset
3
Ritor1
parents:
diff changeset
4
Ritor1
parents:
diff changeset
5
Ritor1
parents:
diff changeset
6
Ritor1
parents:
diff changeset
7
Ritor1
parents:
diff changeset
8 /* 338 */
Ritor1
parents:
diff changeset
9 enum ITEM_FLAGS
Ritor1
parents:
diff changeset
10 {
Ritor1
parents:
diff changeset
11 ITEM_IDENTIFIED = 0x1,
Ritor1
parents:
diff changeset
12 ITEM_BROKEN = 0x2,
Ritor1
parents:
diff changeset
13 ITEM_TEMP_BONUS = 0x8,
Ritor1
parents:
diff changeset
14 ITEM_STOLEN = 0x100,
Ritor1
parents:
diff changeset
15 ITEM_ENCHANTED = 0x200,
Ritor1
parents:
diff changeset
16 };
Ritor1
parents:
diff changeset
17
Ritor1
parents:
diff changeset
18
Ritor1
parents:
diff changeset
19 /* 330 */
Ritor1
parents:
diff changeset
20 enum ITEM_TYPE
Ritor1
parents:
diff changeset
21 {
Ritor1
parents:
diff changeset
22 ITEM_LONGSWORD_1 = 0x1,
Ritor1
parents:
diff changeset
23 ITEM_DAGGER_1 = 0xF,
Ritor1
parents:
diff changeset
24 ITEM_AXE_1 = 0x17,
Ritor1
parents:
diff changeset
25 ITEM_SPEAR_1 = 0x1F,
Ritor1
parents:
diff changeset
26 ITEM_CROSSBOW_1 = 0x2F,
Ritor1
parents:
diff changeset
27 ITEM_MACE_1 = 0x32,
Ritor1
parents:
diff changeset
28 ITEM_STAFF_1 = 0x3D,
271
1f0af5cac2dd _42ECB5_PlayerAttacksActor
Nomad
parents: 230
diff changeset
29 ITEM_BLASTER = 65,
1f0af5cac2dd _42ECB5_PlayerAttacksActor
Nomad
parents: 230
diff changeset
30 ITEM_LASER_RIFLE = 66,
0
Ritor1
parents:
diff changeset
31 ITEM_LEATHER_1 = 0x42,
Ritor1
parents:
diff changeset
32 ITEM_CHAINMAIL_1 = 0x47,
Ritor1
parents:
diff changeset
33 ITEM_PLATE_1 = 0x4C,
Ritor1
parents:
diff changeset
34 ITEM_BUCKLER_1 = 0x54,
Ritor1
parents:
diff changeset
35 ITEM_GAUNTLETS_1 = 0x6E,
Ritor1
parents:
diff changeset
36 ITEM_BOOTS_1 = 0x73,
Ritor1
parents:
diff changeset
37 ITEM_WAND_FIRE = 0x87,
Ritor1
parents:
diff changeset
38 ITEM_WAND_STUN = 0x8A,
Ritor1
parents:
diff changeset
39 ITEM_WAND_INCENERATION = 0x9F,
Ritor1
parents:
diff changeset
40 ITEM_TROLL_BLOOD = 0xCA,
Ritor1
parents:
diff changeset
41 ITEM_DRAGON_EYE = 0xCC,
Ritor1
parents:
diff changeset
42 ITEM_HARPY_FEATHER = 0xCF,
Ritor1
parents:
diff changeset
43 ITEM_DEVIL_ICHOR = 0xD6,
Ritor1
parents:
diff changeset
44 ITEM_OOZE_ECTOPLASM_BOTTLE = 0xD9,
Ritor1
parents:
diff changeset
45 ITEM_POTION_BOTTLE = 0xDC,
Ritor1
parents:
diff changeset
46 ITEM_SPELLBOOK_FIRE_STRIKE = 0x191,
Ritor1
parents:
diff changeset
47 ITEM_SPELLBOOK_AIR_FEATHER_FALL = 0x19C,
Ritor1
parents:
diff changeset
48 ITEM_SPELLBOOK_WATER_POISON_SPRAY = 0x1A7,
Ritor1
parents:
diff changeset
49 ITEM_SPELLBOOK_EARTH_SLOW = 0x1B2,
Ritor1
parents:
diff changeset
50 ITEM_SPELLBOOK_SPIRIT_BLESS = 0x1BD,
Ritor1
parents:
diff changeset
51 ITEM_SPELLBOOK_MIND_MIND_BLAST = 0x1C8,
Ritor1
parents:
diff changeset
52 ITEM_SPELLBOOK_BODY_FIRST_AID = 0x1D3,
Ritor1
parents:
diff changeset
53 ITEM_SPELLBOOK_BODY_HEAL = 0x1D6,
Ritor1
parents:
diff changeset
54 ITEM_SPELLBOOK_BODY_BREAK_POISON = 0x1D7,
Ritor1
parents:
diff changeset
55 ITEM_SPELLBOOK_LIGHT_LIGHT_BOLT = 0x1DD,
Ritor1
parents:
diff changeset
56 ITEM_SPELLBOOK_LIGHT_SUN_BURST = 0x1E6,
Ritor1
parents:
diff changeset
57 ITEM_SPELLBOOK_LIGHT_DIVINE_INTERVENTION = 0x1E7,
Ritor1
parents:
diff changeset
58 ITEM_ARTIFACT_PUCK = 0x1F4,
Ritor1
parents:
diff changeset
59 ITEM_RELIC_MEKORIGS_HAMMER = 0x210,
Ritor1
parents:
diff changeset
60 };
Ritor1
parents:
diff changeset
61
Ritor1
parents:
diff changeset
62 /* 331 */
Ritor1
parents:
diff changeset
63 enum ITEM_EQUIP_TYPE
Ritor1
parents:
diff changeset
64 {
Ritor1
parents:
diff changeset
65 EQUIP_ONE_OR_TWO_HANDS = 0x0,
Ritor1
parents:
diff changeset
66 EQUIP_TWO_HANDED = 0x1,
Ritor1
parents:
diff changeset
67 EQUIP_BOW = 0x2,
Ritor1
parents:
diff changeset
68 EQUIP_ARMOUR = 0x3,
Ritor1
parents:
diff changeset
69 EQUIP_SHIELD = 0x4,
Ritor1
parents:
diff changeset
70 EQUIP_HELMET = 0x5,
Ritor1
parents:
diff changeset
71 EQUIP_BELT = 0x6,
Ritor1
parents:
diff changeset
72 EQUIP_CLOAK = 0x7,
Ritor1
parents:
diff changeset
73 EQUIP_GAUNTLETS = 0x8,
Ritor1
parents:
diff changeset
74 EQUIP_BOOTS = 0x9,
Ritor1
parents:
diff changeset
75 EQUIP_RING = 0xA,
Ritor1
parents:
diff changeset
76 EQUIP_AMULET = 0xB,
Ritor1
parents:
diff changeset
77 EQUIP_C = 0xC,
Ritor1
parents:
diff changeset
78 EQUIP_REAGENT = 0xD,
Ritor1
parents:
diff changeset
79 EQUIP_POTION = 0xE,
Ritor1
parents:
diff changeset
80 EQUIP_F = 0xF,
Ritor1
parents:
diff changeset
81 EQUIP_BOOK = 0x10,
Ritor1
parents:
diff changeset
82 EQUIP_11 = 0x11,
Ritor1
parents:
diff changeset
83 EQUIP_GOLD = 0x12,
Ritor1
parents:
diff changeset
84 EQUIP_GEM = 0x13,
Ritor1
parents:
diff changeset
85 };
Ritor1
parents:
diff changeset
86
Ritor1
parents:
diff changeset
87
Ritor1
parents:
diff changeset
88
Ritor1
parents:
diff changeset
89 /* 64 */
Ritor1
parents:
diff changeset
90 #pragma pack(push, 1)
Ritor1
parents:
diff changeset
91 struct ItemGen
Ritor1
parents:
diff changeset
92 {
Ritor1
parents:
diff changeset
93 //----- (0042EB25) --------------------------------------------------------
Ritor1
parents:
diff changeset
94 inline ItemGen()
Ritor1
parents:
diff changeset
95 {
Ritor1
parents:
diff changeset
96 Reset();
Ritor1
parents:
diff changeset
97 }
Ritor1
parents:
diff changeset
98
271
1f0af5cac2dd _42ECB5_PlayerAttacksActor
Nomad
parents: 230
diff changeset
99 inline bool Broken() {return uAttributes & ITEM_BROKEN;}
1f0af5cac2dd _42ECB5_PlayerAttacksActor
Nomad
parents: 230
diff changeset
100
0
Ritor1
parents:
diff changeset
101 bool GenerateArtifact();
Ritor1
parents:
diff changeset
102 unsigned int GetValue();
Ritor1
parents:
diff changeset
103 const char *GetDisplayName();
Ritor1
parents:
diff changeset
104 const char *GetIdentifiedName();
Ritor1
parents:
diff changeset
105 void UpdateTempBonus(__int64 uTimePlayed);
Ritor1
parents:
diff changeset
106 void Reset();
Ritor1
parents:
diff changeset
107 int _439DF3_get_additional_damage(int *a2, int *a3);
Ritor1
parents:
diff changeset
108
Ritor1
parents:
diff changeset
109
Ritor1
parents:
diff changeset
110
Ritor1
parents:
diff changeset
111 unsigned int uItemID;
Ritor1
parents:
diff changeset
112 int _bonus_type;
Ritor1
parents:
diff changeset
113 int _bonus_strength;
Ritor1
parents:
diff changeset
114 int uAdditionalValue;
Ritor1
parents:
diff changeset
115 int uNumCharges;
Ritor1
parents:
diff changeset
116 unsigned int uAttributes;
Ritor1
parents:
diff changeset
117 unsigned __int8 uBodyAnchor;
Ritor1
parents:
diff changeset
118 char uMaxCharges;
Ritor1
parents:
diff changeset
119 char field_1A;
Ritor1
parents:
diff changeset
120 char field_1B;
Ritor1
parents:
diff changeset
121 unsigned __int64 uExpireTime;
Ritor1
parents:
diff changeset
122 };
Ritor1
parents:
diff changeset
123 #pragma pack(pop)
Ritor1
parents:
diff changeset
124
Ritor1
parents:
diff changeset
125
Ritor1
parents:
diff changeset
126
Ritor1
parents:
diff changeset
127 /* 175 */
Ritor1
parents:
diff changeset
128 #pragma pack(push, 1)
Ritor1
parents:
diff changeset
129 struct ItemDesc
229
Gloval
parents: 224
diff changeset
130 { //Item # |Pic File|Name|Value|Equip Stat|Skill Group|Mod1|Mod2|material|
Gloval
parents: 224
diff changeset
131 ///ID/Rep/St|Not identified name|Sprite Index|VarA|VarB|Equip X|Equip Y|Notes
Gloval
parents: 224
diff changeset
132 char *pIconName; //0 4
Gloval
parents: 224
diff changeset
133 char *pName; //4 8
Gloval
parents: 224
diff changeset
134 char *pUnidentifiedName; //8 c
Gloval
parents: 224
diff changeset
135 char *pDescription; //0c 10
Gloval
parents: 224
diff changeset
136 unsigned int uValue; //10 14
Gloval
parents: 224
diff changeset
137 unsigned __int16 uSpriteID; //14 18
Gloval
parents: 224
diff changeset
138 __int16 field_1A; //16
Gloval
parents: 224
diff changeset
139 unsigned __int16 uEquipX; //18 1c
Gloval
parents: 224
diff changeset
140 unsigned __int16 uEquipY; //1a 1e
Gloval
parents: 224
diff changeset
141 unsigned __int8 uEquipType; //1c 20
Gloval
parents: 224
diff changeset
142 unsigned __int8 uSkillType; //1d 21
Gloval
parents: 224
diff changeset
143 unsigned __int8 uDamageDice; //1e 22
Gloval
parents: 224
diff changeset
144 unsigned __int8 uDamageRoll; //1f 23
Gloval
parents: 224
diff changeset
145 unsigned __int8 uDamageMod; //20 24
Gloval
parents: 224
diff changeset
146 unsigned __int8 uMaterial; //21 25
Gloval
parents: 224
diff changeset
147 char _additional_value; //22 26
Gloval
parents: 224
diff changeset
148 char _bonus_type; //23 27
Gloval
parents: 224
diff changeset
149 char _bonus_strength; //24 28
Gloval
parents: 224
diff changeset
150 char field_25; // 25 29
Gloval
parents: 224
diff changeset
151 char field_26; //26 2A
Gloval
parents: 224
diff changeset
152 char field_27; // 27 2b
Gloval
parents: 224
diff changeset
153 union
Gloval
parents: 224
diff changeset
154 {
Gloval
parents: 224
diff changeset
155 unsigned __int8 uChanceByTreasureLvl[6];
Gloval
parents: 224
diff changeset
156 struct {
Gloval
parents: 224
diff changeset
157 unsigned __int8 uChanceByTreasureLvl1; // 28 2c
Gloval
parents: 224
diff changeset
158 unsigned __int8 uChanceByTreasureLvl2; // 29 2d
Gloval
parents: 224
diff changeset
159 unsigned __int8 uChanceByTreasureLvl3; // 2A 2e
Gloval
parents: 224
diff changeset
160 unsigned __int8 uChanceByTreasureLvl4; // 2B 2f
Gloval
parents: 224
diff changeset
161 unsigned __int8 uChanceByTreasureLvl5; // 2C 30
Gloval
parents: 224
diff changeset
162 unsigned __int8 uChanceByTreasureLvl6; // 2D 32
Gloval
parents: 224
diff changeset
163 };
Gloval
parents: 224
diff changeset
164 };
Gloval
parents: 224
diff changeset
165 unsigned char uItemID_Rep_St; //2e 32
Gloval
parents: 224
diff changeset
166 char field_2f;
Gloval
parents: 224
diff changeset
167 };
0
Ritor1
parents:
diff changeset
168 #pragma pack(pop)
Ritor1
parents:
diff changeset
169
Ritor1
parents:
diff changeset
170
Ritor1
parents:
diff changeset
171
Ritor1
parents:
diff changeset
172 /* 177 */
Ritor1
parents:
diff changeset
173 #pragma pack(push, 1)
Ritor1
parents:
diff changeset
174 struct ItemEnchantment
222
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
175 { //Bonus|Sta|Of Name|Arm|Shld|Helm|Belt|Cape|Gaunt|Boot|Ring|Amul
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
176 char *pBonusStat;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
177 char *pOfName;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
178 /* union{
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
179 struct {
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
180 unsigned char to_arm;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
181 unsigned char to_shld;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
182 unsigned char to_helm;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
183 unsigned char to_belt;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
184 unsigned char to_cape;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
185 unsigned char to_gaunt;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
186 unsigned char to_boot;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
187 unsigned char to_ring;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
188 unsigned char to_amul;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
189 }; */
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
190 unsigned char to_item[12];
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
191 // };
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
192 };
0
Ritor1
parents:
diff changeset
193 #pragma pack(pop)
Ritor1
parents:
diff changeset
194
Ritor1
parents:
diff changeset
195 /* 178 */
Ritor1
parents:
diff changeset
196 #pragma pack(push, 1)
Ritor1
parents:
diff changeset
197 struct ItemSpecialEnchantment
222
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
198 { //Bonus Stat|Name Add|W1|W2|Miss|Arm|Shld|Helm|Belt|Cape|Gaunt|Boot|Ring|Amul|Value|Lvl|Description fo special Bonuses and values
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
199
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
200 char *pBonusStatement;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
201 char *pNameAdd;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
202 char to_item_apply[12];
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
203 int iValue;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
204 int iTreasureLevel;
0
Ritor1
parents:
diff changeset
205 };
Ritor1
parents:
diff changeset
206 #pragma pack(pop)
Ritor1
parents:
diff changeset
207
222
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
208 #pragma pack(push, 1)
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
209 struct BonusRange
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
210 {
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
211 unsigned int minR;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
212 unsigned int maxR;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
213 };
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
214 #pragma pack(pop)
193
821fd955c379 fixed potion data parsing. Somehow 3d render was affected
Gloval
parents: 0
diff changeset
215
0
Ritor1
parents:
diff changeset
216 /* 176 */
Ritor1
parents:
diff changeset
217 #pragma pack(push, 1)
Ritor1
parents:
diff changeset
218 struct ItemsTable
Ritor1
parents:
diff changeset
219 {
Ritor1
parents:
diff changeset
220 void Initialize();
Ritor1
parents:
diff changeset
221 void LoadPotions();
Ritor1
parents:
diff changeset
222 void LoadPotionNotes();
228
46ae2602aceb Item generation doesn't crash (thou still generates weird stuff)
Nomad
parents: 224
diff changeset
223 void GenerateItem(int treasure_level, int a3, ItemGen *pItem);
0
Ritor1
parents:
diff changeset
224 void SetSpecialBonus(ItemGen *pItem);
Ritor1
parents:
diff changeset
225 bool _456D43_is_material_equals_3(ItemGen *pItem);
Ritor1
parents:
diff changeset
226 bool _456D5E_is_some_material(ItemGen *pItem);
Ritor1
parents:
diff changeset
227 char *Release();
Ritor1
parents:
diff changeset
228
222
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
229 int uAllItemsCount;
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
230 ItemDesc pItems[800]; //4-9604h
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
231 ItemEnchantment pEnchantments[24]; //9604h
229
Gloval
parents: 224
diff changeset
232 ItemSpecialEnchantment pSpecialEnchantments[72]; //97E4h -9FC4h
224
9917d3b4925e items init refactored
Gloval
parents: 223
diff changeset
233 char field_9FC4[5000];
0
Ritor1
parents:
diff changeset
234 char field_B348[5000];
Ritor1
parents:
diff changeset
235 char field_C6D0[5000];
Ritor1
parents:
diff changeset
236 char field_DA58[5000];
229
Gloval
parents: 224
diff changeset
237 char field_EDE0[384];
222
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
238 unsigned __int16 potion_data[50][50]; // 77B2h*2=EF64h -102ECh
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
239 unsigned __int16 potion_note[50][50]; // 8176h*2=102ECh -11674h
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
240 char *pItemsTXT_Raw; //11674h
0
Ritor1
parents:
diff changeset
241 char *pRndItemsTXT_Raw;
222
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
242 char *pStdItemsTXT_Raw; //1167Ch
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
243 char *pSpcItemsTXT_Raw; //11680h
224
9917d3b4925e items init refactored
Gloval
parents: 223
diff changeset
244 unsigned int uChanceByTreasureLvlSumm[6]; //11684
9917d3b4925e items init refactored
Gloval
parents: 223
diff changeset
245 unsigned int uBonusChanceStandart[6]; //1169c
9917d3b4925e items init refactored
Gloval
parents: 223
diff changeset
246 unsigned int uBonusChanceSpecial[6]; //116B4
9917d3b4925e items init refactored
Gloval
parents: 223
diff changeset
247 unsigned int uBonusChanceWpSpecial[6]; //116cc -116e4
222
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
248 unsigned int pEnchantmentsSumm[9]; //116E4h -11708h
8113753ed2ae more item init fixing
Gloval
parents: 193
diff changeset
249 BonusRange bonus_ranges[6]; //45C2h*4 =11708h
224
9917d3b4925e items init refactored
Gloval
parents: 223
diff changeset
250 unsigned int pSpecialEnchantmentsSumm[24]; //11738h
9917d3b4925e items init refactored
Gloval
parents: 223
diff changeset
251 unsigned int pSpecialEnchantments_count; //11798h
0
Ritor1
parents:
diff changeset
252 char field_1179C;
Ritor1
parents:
diff changeset
253 };
Ritor1
parents:
diff changeset
254 #pragma pack(pop)
Ritor1
parents:
diff changeset
255
Ritor1
parents:
diff changeset
256
Ritor1
parents:
diff changeset
257
Ritor1
parents:
diff changeset
258
Ritor1
parents:
diff changeset
259 extern ItemGen *ptr_50C9A4;
Ritor1
parents:
diff changeset
260
Ritor1
parents:
diff changeset
261 extern struct ItemsTable *pItemsTable;