2497
|
1 #pragma once
|
|
2 #include <array>
|
|
3 #include <map>
|
|
4 #include "NZIArray.h"
|
|
5
|
|
6 enum DAMAGE_TYPE:unsigned int
|
|
7 {
|
|
8 DMGT_FIRE = 0,
|
|
9 DMGT_ELECTR = 1,
|
|
10 DMGT_COLD = 2,
|
|
11 DMGT_EARTH = 3,
|
|
12 DMGT_PHISYCAL= 4,
|
|
13 DMGT_MAGICAL = 5,
|
|
14 DMGT_SPIRIT = 6,
|
|
15 DMGT_MIND = 7,
|
|
16 DMGT_BODY = 8,
|
|
17 DMGT_LIGHT = 9,
|
|
18 DMGT_DARK =10
|
|
19 };
|
|
20
|
|
21
|
|
22
|
|
23 /* 338 */
|
|
24 enum ITEM_FLAGS :unsigned int
|
|
25 {
|
|
26 ITEM_IDENTIFIED = 0x1,
|
|
27 ITEM_BROKEN = 0x2,
|
|
28 ITEM_TEMP_BONUS = 0x8,
|
|
29 ITEM_AURA_EFFECT_RED = 0x10,
|
|
30 ITEM_AURA_EFFECT_BLUE = 0x20,
|
|
31 ITEM_AURA_EFFECT_GREEN = 0x40,
|
|
32 ITEM_AURA_EFFECT_PURPLE = 0x80,
|
|
33 ITEM_ENCHANT_ANIMATION = 0xF0,
|
|
34 ITEM_STOLEN = 0x100,
|
|
35 ITEM_HARDENED = 0x200,
|
|
36 };
|
|
37
|
|
38
|
|
39 enum ITEM_MATERIAL
|
|
40 {
|
|
41 MATERIAL_COMMON =0,
|
|
42 MATERIAL_ARTEFACT = 1,
|
|
43 MATERIAL_RELIC = 2,
|
|
44 MATERIAL_SPECIAL = 3
|
|
45 };
|
|
46
|
|
47 /* 330 */
|
|
48 enum ITEM_TYPE
|
|
49 {
|
|
50 ITEM_LONGSWORD_1 = 0x1,
|
|
51 ITEM_DAGGER_1 = 0xF,
|
|
52 ITEM_AXE_1 = 0x17,
|
|
53 ITEM_SPEAR_1 = 0x1F,
|
|
54 ITEM_CROSSBOW_1 = 0x2F,
|
|
55 ITEM_MACE_1 = 0x32,
|
|
56 ITEM_STAFF_1 = 0x3D,
|
|
57 ITEM_BLASTER = 64,
|
|
58 ITEM_LASER_RIFLE = 65,
|
|
59 ITEM_LEATHER_1 = 0x42,
|
|
60 ITEM_CHAINMAIL_1 = 0x47,
|
|
61 ITEM_PLATE_1 = 0x4C,
|
|
62 ITEM_BUCKLER_1 = 0x54,
|
|
63 ITEM_GAUNTLETS_1 = 0x6E,
|
|
64 ITEM_BOOTS_1 = 0x73,
|
|
65 ITEM_WAND_FIRE = 135,
|
|
66 ITEM_WAND_STUN = 138,
|
|
67 ITEM_WAND_INCENERATION = 0x9F,
|
|
68 ITEM_REAGENT_WIDOWSWEEP_BERRIES = 200,
|
|
69 ITEM_TROLL_BLOOD = 0xCA,
|
|
70 ITEM_DRAGON_EYE = 0xCC,
|
|
71 ITEM_HARPY_FEATHER = 0xCF,
|
|
72 ITEM_DEVIL_ICHOR = 0xD6,
|
|
73 ITEM_OOZE_ECTOPLASM_BOTTLE = 0xD9,
|
|
74 ITEM_REAGENT_PHILOSOPHERS_STONE = 219,
|
|
75 ITEM_POTION_BOTTLE = 220,
|
|
76 ITEM_POTION_CATALYST = 221,
|
|
77 ITEM_POTION_CURE_WOUNDS = 222,
|
|
78 ITEM_POTION_CURE_DISEASE = 225,
|
|
79 ITEM_POTION_AWAKEN = 227,
|
|
80 ITEM_POTION_HASTE = 228,
|
|
81 ITEM_POTION_RECHARGE_ITEM = 233,
|
|
82 ITEM_POTION_HARDEN_ITEM = 236,
|
|
83 ITEM_POTION_CURE_INSANITY = 239,
|
|
84 ITEM_POTION_MIGHT_BOOST = 240,
|
|
85 ITEM_POTION_ACCURACY_BOOST = 245,
|
|
86 ITEM_POTION_FLAMING_POTION = 246,
|
|
87 ITEM_POTION_SWIFT_POTION = 250,
|
|
88 ITEM_POTION_BODY_RESISTANE = 261,
|
|
89 ITEM_POTION_STONE_TO_FLESH = 262,
|
|
90 ITEM_POTION_SLAYING_POTION = 263,
|
|
91 ITEM_POTION_REJUVENATION = 271,
|
|
92 ITEM_SPELLBOOK_TORCHLIGHT = 400,//0x190
|
|
93 ITEM_SPELLBOOK_FIRE_STRIKE = 401,//0x191,
|
|
94 ITEM_SPELLBOOK_AIR_FEATHER_FALL = 0x19C,
|
|
95 ITEM_SPELLBOOK_WATER_POISON_SPRAY = 0x1A7,
|
|
96 ITEM_SPELLBOOK_EARTH_SLOW = 0x1B2,
|
|
97 ITEM_SPELLBOOK_SPIRIT_BLESS = 0x1BD,
|
|
98 ITEM_SPELLBOOK_MIND_MIND_BLAST = 0x1C8,
|
|
99 ITEM_SPELLBOOK_BODY_FIRST_AID = 0x1D3,
|
|
100 ITEM_SPELLBOOK_BODY_HEAL = 0x1D6,
|
|
101 ITEM_SPELLBOOK_BODY_BREAK_POISON = 0x1D7,
|
|
102 ITEM_SPELLBOOK_LIGHT_LIGHT_BOLT = 0x1DD,
|
|
103 ITEM_SPELLBOOK_LIGHT_SUN_BURST = 0x1E6,
|
|
104 ITEM_SPELLBOOK_LIGHT_DIVINE_INTERVENTION = 0x1E7,
|
|
105 ITEM_ARTIFACT_PUCK = 500,//0x1F4,
|
|
106 ITEM_ARTIFACT_IRON_FEATHER = 501,
|
|
107 ITEM_ARTIFACT_WALLACE = 502,
|
|
108 ITEM_ARTIFACT_CORSAIR = 503,
|
|
109 ITEM_ARTIFACT_GOVERNORS_ARMOR = 504,//1F8
|
|
110 ITEM_ARTIFACT_YORUBA = 505,//1F9
|
|
111 ITEM_ARTIFACT_SPLITTER = 506,//1FA
|
|
112 ITEM_ARTIFACT_GHOULSBANE = 507,//1FA
|
|
113 ITEM_ARTIFACT_GIBBET = 508,//1FA
|
|
114 ITEM_ARTIFACT_CHARELE = 509,//1FA
|
|
115 ITEM_ARTEFACT_ULLYSES =510,
|
|
116 ITEM_ARTEFACT_HANDS_OF_THE_MASTER =511,
|
|
117 ITEM_ARTIFACT_LEAGUE_BOOTS = 512,//200
|
|
118 ITEM_ARTIFACT_RULERS_RING = 513,
|
|
119 ITEM_RELIC_MASH = 514,
|
|
120 ITEM_RELIC_ETHRICS_STAFF = 515,//204
|
|
121 ITEM_RELIC_HARECS_LEATHER = 516,//204
|
|
122 ITEM_RELIC_OLD_NICK = 517,
|
|
123 ITEM_RELIC_AMUCK = 518,
|
|
124 ITEM_RELIC_GLORY_SHIELD = 519,
|
|
125 ITEM_RELIC_KELEBRIM = 520,//208
|
|
126 ITEM_RELIC_TALEDONS_HELM = 521,//209
|
|
127 ITEM_RELIC_SCHOLARS_CAP = 522,//20A
|
|
128 ITEM_RELIC_PHYNAXIAN_CROWN = 523,//20B
|
|
129 ITEM_RILIC_TITANS_BELT = 524,//20C
|
|
130 ITEM_RELIC_TWILIGHT = 525,//20D
|
|
131 ITEM_RELIC_ANIA_SELVING = 526,
|
|
132 ITEM_RELIC_JUSTICE = 527,
|
|
133 ITEM_RELIC_MEKORIGS_HAMMER = 528,
|
|
134 ITEM_ARTIFACT_HERMES_SANDALS = 529,
|
|
135 ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP = 530,//212
|
|
136 ITEM_ARTIFACT_ELFBANE = 531,//212
|
|
137 ITEM_ARTIFACT_MINDS_EYE = 532,//214
|
|
138 ITEM_ELVEN_CHAINMAIL = 533,//215
|
|
139 ITEM_FORGE_GAUNTLETS = 534,
|
|
140 ITEM_ARTIFACT_HEROS_BELT = 535,//217
|
|
141 ITEM_ARTIFACT_LADYS_ESCORT = 536,
|
|
142 ITEM_RARE_CLANKERS_AMULET = 537,
|
|
143 ITEM_RARE_LIETENANTS_CUTLASS = 538,
|
|
144 ITEM_RARE_MEDUSAS_MIRROR = 539,
|
|
145 ITEM_RARE_LADY_CARMINES_DAGGER = 540,
|
|
146 ITEM_RARE_VILLAINS_BLADE = 541,
|
|
147 ITEM_RARE_PERFECT_BOW = 542,
|
|
148 ITEM_RARE_PERFECT_BOW_FIXED = 543,
|
|
149 ITEM_RARE_SHADOWS_MASK = 544,//220
|
|
150 ITEM_RARE_GHOST_RING = 545,//220
|
|
151 ITEM_RARE_FAERIE_RING = 546,//220
|
|
152 ITEM_RARE_SUN_CLOAK = 547,//223
|
|
153 ITEM_RARE_MOON_CLOAK = 548,//224
|
|
154 ITEM_RARE_ZOKKARS_AXE = 549,//224
|
|
155 ITEM_RARE_VAMPIRES_CAPE = 550,//226
|
|
156 ITEM_RARE_MINOTAURS_AXE = 551,//226
|
|
157 ITEM_RARE_GROGNARDS_CUTLASS = 552,//226
|
|
158 ITEM_LICH_JAR_FULL = 601,
|
|
159 ITEM_WETSUIT = 604,
|
|
160 ITEM_LICH_JAR_EMPTY = 615,
|
|
161 ITEM_RECIPE_REJUVENATION = 740,
|
|
162 ITEM_RECIPE_BODY_RESISTANCE = 771,
|
|
163 };
|
|
164
|
|
165 /* 331 */
|
|
166 enum ITEM_EQUIP_TYPE: unsigned __int8
|
|
167 {
|
|
168 EQUIP_SINGLE_HANDED = 0,
|
|
169 EQUIP_TWO_HANDED = 1,
|
|
170 EQUIP_BOW = 2,
|
|
171 EQUIP_ARMOUR = 3,
|
|
172 EQUIP_SHIELD = 4,
|
|
173 EQUIP_HELMET = 5,
|
|
174 EQUIP_BELT = 6,
|
|
175 EQUIP_CLOAK = 7,
|
|
176 EQUIP_GAUNTLETS = 8,
|
|
177 EQUIP_BOOTS = 9,
|
|
178 EQUIP_RING = 10,
|
|
179 EQUIP_AMULET = 11,
|
|
180 EQUIP_WAND = 12,
|
|
181 EQUIP_REAGENT = 13,
|
|
182 EQUIP_POTION = 14,
|
|
183 EQUIP_SPELL_SCROLL = 15,
|
|
184 EQUIP_BOOK = 16,
|
|
185 EQIUP_ANY = 16,
|
|
186 EQUIP_MESSAGE_SCROLL = 17,
|
|
187 EQUIP_GOLD = 18,
|
|
188 EQUIP_GEM = 19,
|
|
189 EQUIP_NONE = 20
|
|
190 };
|
|
191
|
|
192 enum CHARACTER_ATTRIBUTE_TYPE;
|
|
193 struct Player;
|
|
194
|
|
195 typedef struct CEnchantment
|
|
196 {
|
|
197 unsigned __int16 Player::* statPtr;
|
|
198 int statBonus;
|
|
199 CEnchantment(int bonus, unsigned __int16 Player::* skillPtr = nullptr):
|
|
200 statBonus(bonus),
|
|
201 statPtr(skillPtr)
|
|
202 {
|
|
203 }
|
|
204 } CEnchantment;
|
|
205
|
|
206 /* 64 */
|
|
207 #pragma pack(push, 1)
|
|
208 struct ItemGen //0x24
|
|
209 {
|
|
210 //----- (0042EB25) --------------------------------------------------------
|
|
211 // inline ItemGen()
|
|
212 // {
|
|
213 // Reset();
|
|
214 // }
|
|
215 static void AddToMap(std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* > &maptoadd,
|
|
216 int enchId,
|
|
217 CHARACTER_ATTRIBUTE_TYPE attrId,
|
|
218 int bonusValue = 0,
|
|
219 unsigned __int16 Player::* skillPtr = nullptr);
|
|
220
|
|
221 static std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* > regularBonusMap;
|
|
222 static std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* > specialBonusMap;
|
|
223 static std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* > artifactBonusMap;
|
|
224
|
|
225 static void PopulateSpecialBonusMap();
|
|
226 static void PopulateRegularBonusMap();
|
|
227 static void PopulateArtifactBonusMap();
|
|
228 static void ClearItemBonusMaps();
|
|
229
|
|
230 inline void ResetEnchantAnimation(){uAttributes &= 0xFFFFFF0F;}
|
|
231 inline bool ItemEnchanted()const {return(uAttributes & ITEM_ENCHANT_ANIMATION) != 0;}
|
|
232 inline bool AuraEffectRed()const {return(uAttributes & ITEM_ENCHANT_ANIMATION) == ITEM_AURA_EFFECT_RED;}
|
|
233 inline bool AuraEffectBlue()const {return(uAttributes & ITEM_ENCHANT_ANIMATION) == ITEM_AURA_EFFECT_BLUE;}
|
|
234 inline bool AuraEffectGreen()const {return(uAttributes & ITEM_ENCHANT_ANIMATION) == ITEM_AURA_EFFECT_GREEN;}
|
|
235 inline bool AuraEffectPurple()const {return(uAttributes & ITEM_ENCHANT_ANIMATION) == ITEM_AURA_EFFECT_PURPLE;}
|
|
236
|
|
237 void GetItemBonusSpecialEnchantment(Player* owner, CHARACTER_ATTRIBUTE_TYPE attrToGet, int* additiveBonus, int* halfSkillBonus);
|
|
238 void GetItemBonusArtifact(Player* owner, CHARACTER_ATTRIBUTE_TYPE attrToGet, int* bonusSum);
|
|
239 bool IsRegularEnchanmentForAttribute(CHARACTER_ATTRIBUTE_TYPE attrToGet);
|
|
240
|
|
241 inline bool IsBroken() {return (uAttributes & ITEM_BROKEN) != 0;}
|
|
242 inline void SetBroken() {uAttributes |= ITEM_BROKEN;}
|
|
243 inline bool IsIdentified() {return (uAttributes & ITEM_IDENTIFIED) != 0;}
|
|
244 inline void SetIdentified() {uAttributes |= ITEM_IDENTIFIED;}
|
|
245 inline bool IsStolen() {return (uAttributes & ITEM_STOLEN) != 0;}
|
|
246 inline void SetStolen() {uAttributes |= ITEM_STOLEN;}
|
|
247
|
|
248 bool GenerateArtifact();
|
|
249 unsigned int GetValue();
|
|
250 const char *GetDisplayName();
|
|
251 const char *GetIdentifiedName();
|
|
252 void UpdateTempBonus(__int64 uTimePlayed);
|
|
253 void Reset();
|
|
254 int _439DF3_get_additional_damage(int *a2, bool *vampiyr);
|
|
255
|
|
256 ITEM_EQUIP_TYPE GetItemEquipType();
|
|
257 unsigned char GetPlayerSkillType();
|
|
258 char* GetIconName();
|
|
259 unsigned __int8 GetDamageDice();
|
|
260 unsigned __int8 GetDamageRoll();
|
|
261 unsigned __int8 GetDamageMod();
|
|
262 bool MerchandiseTest(int _2da_idx);
|
|
263 int uItemID; //0
|
|
264 int uEnchantmentType; //4
|
|
265 int m_enchantmentStrength; //8
|
|
266 int uSpecEnchantmentType; // 25 +5 levels //0c
|
|
267 // 16 Drain Hit Points from target.
|
|
268 // 35 Increases chance of disarming.
|
|
269 // 39 Double damage vs Demons.
|
|
270 // 40 Double damage vs Dragons
|
|
271 // 45 +5 Speed and Accuracy
|
|
272 // 56 +5 Might and Endurance.
|
|
273 // 57 +5 Intellect and Personality.
|
|
274 // 58 Increased Value.
|
|
275 // 60 +3 Unarmed and Dodging skills
|
|
276 // 61 +3 Stealing and Disarm skills.
|
|
277 // 59 Increased Weapon speed.
|
|
278 // 63 Double Damage vs. Elves.
|
|
279 // 64 Double Damage vs. Undead.
|
|
280 // 67 Adds 5 points of Body damage and +2 Disarm skill.
|
|
281 // 68 Adds 6-8 points of Cold damage and +5 Armor Class.
|
|
282 // 71 Prevents drowning damage.
|
|
283 // 72 Prevents falling damage.
|
|
284 int uNumCharges; //10
|
|
285 unsigned int uAttributes; //14
|
|
286 unsigned __int8 uBodyAnchor; //18
|
|
287 char uMaxCharges; //19
|
|
288 char uHolderPlayer; //1A
|
|
289 char field_1B; //1B
|
|
290 unsigned __int64 uExpireTime; //1C
|
|
291 };
|
|
292 #pragma pack(pop)
|
|
293
|
|
294
|
|
295
|
|
296 /* 175 */
|
|
297 #pragma pack(push, 1)
|
|
298 struct ItemDesc //30h
|
|
299 { //Item # |Pic File|Name|Value|Equip Stat|Skill Group|Mod1|Mod2|material|
|
|
300 ///ID/Rep/St|Not identified name|Sprite Index|VarA|VarB|Equip X|Equip Y|Notes
|
|
301 char *pIconName; //0 4
|
|
302 char *pName; //4 8
|
|
303 char *pUnidentifiedName; //8 c
|
|
304 char *pDescription; //0c 10
|
|
305 unsigned int uValue; //10 14
|
|
306 unsigned __int16 uSpriteID; //14 18
|
|
307 __int16 field_1A; //16
|
|
308 signed __int16 uEquipX; //18 1c
|
|
309 signed __int16 uEquipY; //1a 1e
|
|
310 ITEM_EQUIP_TYPE uEquipType; //1c 20
|
|
311 unsigned __int8 uSkillType; //1d 21
|
|
312 unsigned __int8 uDamageDice; //1e 22
|
|
313 unsigned __int8 uDamageRoll; //1f 23
|
|
314 unsigned __int8 uDamageMod; //20 24
|
|
315 unsigned __int8 uMaterial; //21 25
|
|
316 char _additional_value; //22 26
|
|
317 char _bonus_type; //23 27
|
|
318 char _bonus_strength; //24 28
|
|
319 char field_25; // 25 29
|
|
320 char field_26; //26 2A
|
|
321 char field_27; // 27 2b
|
|
322 union
|
|
323 {
|
|
324 unsigned __int8 uChanceByTreasureLvl[6];
|
|
325 struct {
|
|
326 unsigned __int8 uChanceByTreasureLvl1; // 28 2c
|
|
327 unsigned __int8 uChanceByTreasureLvl2; // 29 2d
|
|
328 unsigned __int8 uChanceByTreasureLvl3; // 2A 2e
|
|
329 unsigned __int8 uChanceByTreasureLvl4; // 2B 2f
|
|
330 unsigned __int8 uChanceByTreasureLvl5; // 2C 30
|
|
331 unsigned __int8 uChanceByTreasureLvl6; // 2D 32
|
|
332 };
|
|
333 };
|
|
334 unsigned char uItemID_Rep_St; //2e 32
|
|
335 char field_2f;
|
|
336 };
|
|
337 #pragma pack(pop)
|
|
338
|
|
339
|
|
340
|
|
341 /* 177 */
|
|
342 #pragma pack(push, 1)
|
|
343 struct ItemEnchantment
|
|
344 { //Bonus|Sta|Of Name|Arm|Shld|Helm|Belt|Cape|Gaunt|Boot|Ring|Amul
|
|
345 char *pBonusStat;
|
|
346 char *pOfName;
|
|
347 /* union{
|
|
348 struct {
|
|
349 unsigned char to_arm;
|
|
350 unsigned char to_shld;
|
|
351 unsigned char to_helm;
|
|
352 unsigned char to_belt;
|
|
353 unsigned char to_cape;
|
|
354 unsigned char to_gaunt;
|
|
355 unsigned char to_boot;
|
|
356 unsigned char to_ring;
|
|
357 unsigned char to_amul;
|
|
358 }; */
|
|
359 unsigned char to_item[12];
|
|
360 // };
|
|
361 };
|
|
362 #pragma pack(pop)
|
|
363
|
|
364 /* 178 */
|
|
365 #pragma pack(push, 1)
|
|
366 struct ItemSpecialEnchantment //1Ch
|
|
367 { //Bonus Stat|Name Add|W1|W2|Miss|Arm|Shld|Helm|Belt|Cape|Gaunt|Boot|Ring|Amul|Value|Lvl|Description fo special Bonuses and values
|
|
368
|
|
369 char *pBonusStatement; //0
|
|
370 char *pNameAdd; //4
|
|
371 char to_item_apply[12]; //8
|
|
372 int iValue; //14
|
|
373 int iTreasureLevel; //18
|
|
374 };
|
|
375 #pragma pack(pop)
|
|
376
|
|
377 #pragma pack(push, 1)
|
|
378 struct BonusRange
|
|
379 {
|
|
380 unsigned int minR;
|
|
381 unsigned int maxR;
|
|
382 };
|
|
383 #pragma pack(pop)
|
|
384
|
|
385 /* 176 */
|
|
386 #pragma pack(push, 1)
|
|
387 struct ItemsTable
|
|
388 {
|
|
389 void Initialize();
|
|
390 void LoadPotions();
|
|
391 void LoadPotionNotes();
|
|
392 void GenerateItem(int treasure_level, unsigned int uTreasureType, ItemGen *pItem);
|
|
393 void SetSpecialBonus(ItemGen *pItem);
|
|
394 bool IsMaterialSpecial(ItemGen *pItem);
|
|
395 bool IsMaterialNonCommon(ItemGen *pItem);
|
|
396 void Release();
|
|
397
|
|
398 int uAllItemsCount;
|
|
399 NZIArray<ItemDesc, 800> pItems; //4-9604h
|
|
400 ItemEnchantment pEnchantments[24]; //9604h
|
|
401 ItemSpecialEnchantment pSpecialEnchantments[72]; //97E4h -9FC4h
|
|
402 char field_9FC4[5000];
|
|
403 char field_B348[5000];
|
|
404 char field_C6D0[5000];
|
|
405 char field_DA58[5000];
|
|
406 char field_EDE0[384];
|
|
407 unsigned __int16 potion_data[50][50]; // 77B2h*2=EF64h -102ECh
|
|
408 unsigned __int16 potion_note[50][50]; // 8176h*2=102ECh -11674h
|
|
409 char *pItemsTXT_Raw; //11674h
|
|
410 char *pRndItemsTXT_Raw;
|
|
411 char *pStdItemsTXT_Raw; //1167Ch
|
|
412 char *pSpcItemsTXT_Raw; //11680h
|
|
413 unsigned int uChanceByTreasureLvlSumm[6]; //11684
|
|
414 unsigned int uBonusChanceStandart[6]; //1169c
|
|
415 unsigned int uBonusChanceSpecial[6]; //116B4
|
|
416 unsigned int uBonusChanceWpSpecial[6]; //116cc -116e4
|
|
417 unsigned int pEnchantmentsSumm[9]; //116E4h -11708h
|
|
418 BonusRange bonus_ranges[6]; //45C2h*4 =11708h
|
|
419 unsigned int pSpecialEnchantmentsSumm[24]; //11738h
|
|
420 unsigned int pSpecialEnchantments_count; //11798h
|
|
421 char field_1179C;
|
|
422 char field_1179D;
|
|
423 char field_1179E;
|
|
424 char field_1179F;
|
|
425 };
|
|
426 #pragma pack(pop)
|
|
427
|
|
428 void GenerateStandartShopItems();
|
|
429 void GenerateSpecialShopItems();
|
|
430 void GenerateItemsInChest();
|
|
431
|
|
432 extern std::array<const char, 5> uItemsAmountPerShopType; // weak
|
|
433 extern ItemGen *ptr_50C9A4_ItemToEnchant;
|
|
434
|
|
435 extern struct ItemsTable *pItemsTable;
|
|
436
|
|
437 /*
|
|
438 +10 to all Resistances. 1
|
|
439 +10 to all Seven Statistics. 2
|
|
440 Explosive Impact! 3
|
|
441 Adds 3-4 points of Cold damage. 4
|
|
442 Adds 6-8 points of Cold damage. 5
|
|
443 Adds 9-12 points of Cold damage. 6
|
|
444 Adds 2-5 points of Electrical damage. 7
|
|
445 Adds 4-10 points of Electrical damage. 8
|
|
446 Adds 6-15 points of Electrical damage. 9
|
|
447 Adds 1-6 points of Fire damage. 10
|
|
448 Adds 2-12 points of Fire damage. 11
|
|
449 Adds 3-18 points of Fire damage. 12
|
|
450 Adds 5 points of Body damage. 13
|
|
451 Adds 8 points of Body damage. 14
|
|
452 Adds 12 points of Body damage. 15
|
|
453 Drain Hit Points from target. 16
|
|
454 Increases rate of Recovery. 17
|
|
455 Wearer resistant to Diseases. 18
|
|
456 Wearer resistant to Insanity. 19
|
|
457 Wearer resistant to Paralysis. 20
|
|
458 Wearer resistant to Poison. 21
|
|
459 Wearer resistant to Sleep. 22
|
|
460 Wearer resistant to Stone. 23
|
|
461 Increased Knockback. 24
|
|
462 +5 Level. 25
|
|
463 Increases effect of all Air spells. 26
|
|
464 Increases effect of all Body spells. 27
|
|
465 Increases effect of all Dark spells. 28
|
|
466 Increases effect of all Earth spells. 29
|
|
467 Increases effect of all Fire spells. 30
|
|
468 Increases effect of all Light spells. 31
|
|
469 Increases effect of all Mind spells. 32
|
|
470 Increases effect of all Spirit spells. 33
|
|
471 Increases effect of all Water spells. 34
|
|
472 Increases chance of Disarming. 35
|
|
473 Half damage from all missile attacks. 36
|
|
474 Regenerate Hit points over time. 37
|
|
475 Regenerate Spell points over time. 38
|
|
476 Double damage vs Demons. 39
|
|
477 Double damage vs Dragons 40
|
|
478 Drain Hit Points from target and Increased Weapon speed. 41
|
|
479 +1 to Seven Stats, HP, SP, Armor, Resistances. 42
|
|
480 +10 to Endurance, Armor, Hit points. 43
|
|
481 +10 Hit points and Regenerate Hit points over time. 44
|
|
482 +5 Speed and Accuracy. 45
|
|
483 Adds 10-20 points of Fire damage and +25 Might. 46
|
|
484 +10 Spell points and Regenerate Spell points over time. 47
|
|
485 +15 Endurance and +5 Armor. 48
|
|
486 +10 Intellect and Luck. 49
|
|
487 +30 Fire Resistance and Regenerate Hit points over time. 50
|
|
488 +10 Spell points, Speed, Intellect. 51
|
|
489 +10 Endurance and Accuracy. 52
|
|
490 +10 Might and Personality. 53
|
|
491 +15 Endurance and Regenerate Hit points over time. 54
|
|
492 +15 Luck and Regenerate Spell points over time. 55
|
|
493 +5 Might and Endurance. 56
|
|
494 +5 Intellect and Personality. 57
|
|
495 Increased Value. 58
|
|
496 Increased Weapon speed. 59
|
|
497 +3 Unarmed and Dodging skills. 60
|
|
498 +3 Stealing and Disarm skills. 61
|
|
499 +3 ID Item and ID Monster skills. 62
|
|
500 Double Damage vs. Elves. 63
|
|
501 Double Damage vs. Undead. 64
|
|
502 Double Damage vs. Titans. 65
|
|
503 Regenerate Spell points and Hit points over time. 66
|
|
504 Adds 5 points of Body damage and +2 Disarm skill. 67
|
|
505 Adds 6-8 points of Cold damage and +5 Armor Class. 68
|
|
506 +20 Air Resistance and Shielding. 69
|
|
507 +10 Water Resistance and +2 Alchemy skill. 70
|
|
508 Prevents damage from drowning. 71
|
|
509 Prevents damage from falling. 72
|
|
510 */
|
|
511
|
|
512
|
|
513 /* 391 */
|
|
514 #pragma pack(push, 1)
|
|
515 struct stru351_summoned_item
|
|
516 {
|
|
517 int field_0_expire_second;
|
|
518 int field_4_expire_minute;
|
|
519 int field_8_expire_hour;
|
|
520 int field_C_expire_day;
|
|
521 int field_10_expire_week;
|
|
522 int field_14_exprie_month;
|
|
523 int field_18_expire_year;
|
|
524 };
|
|
525 #pragma pack(pop)
|
|
526
|
|
527
|
|
528 int GetItemTextureFilename(char *pOut, signed int item_id, int index, int shoulder);
|
|
529 void FillAviableSkillsToTeach(int _this);
|
|
530 void init_summoned_item(struct stru351_summoned_item *_this, __int64 duration);
|