comparison Engine/Objects/Items.h @ 2497:82d5d92a097c

for MVS2012
author Ritor1
date Thu, 18 Sep 2014 23:59:29 +0600
parents
children 68cdef6879a0
comparison
equal deleted inserted replaced
2496:5abd8fc8f1c6 2497:82d5d92a097c
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);