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