Mercurial > mm7
annotate UI/UICharacter.cpp @ 1384:b51332ab228f
changed a few member variables in Player to slightly less confusing names
author | Grumpy7 |
---|---|
date | Tue, 16 Jul 2013 20:51:29 +0200 |
parents | b691c96d8e06 |
children | 28f87f5234a1 |
rev | line source |
---|---|
1298 | 1 #ifdef _MSC_VER |
2 #define _CRT_SECURE_NO_WARNINGS | |
3 #endif | |
4 | |
5 #include <assert.h> | |
6 | |
7 #include <algorithm> | |
8 | |
1299 | 9 #include "..\MM7.h" |
1298 | 10 |
1299 | 11 #include "..\MapInfo.h" |
12 #include "..\Game.h" | |
13 #include "..\GUIWindow.h" | |
14 #include "..\GUIFont.h" | |
15 #include "..\GUIProgressBar.h" | |
16 #include "..\Party.h" | |
17 #include "..\AudioPlayer.h" | |
18 #include "..\Render.h" | |
19 #include "..\IndoorCamera.h" | |
20 #include "..\LOD.h" | |
21 #include "..\Viewport.h" | |
22 #include "..\Time.h" | |
23 #include "..\Awards.h" | |
24 #include "..\CastSpellInfo.h" | |
25 #include "..\texts.h" | |
1298 | 26 |
1299 | 27 #include "..\mm7_data.h" |
28 #include "..\Mouse.h" | |
29 #include "..\Allocator.h" | |
1298 | 30 |
31 | |
32 int bRingsShownInCharScreen; // 5118E0 | |
33 | |
34 | |
35 unsigned int ui_mainmenu_copyright_color; | |
36 | |
37 unsigned int ui_character_default_text_color; | |
38 unsigned int ui_character_skill_highlight_color; | |
39 unsigned int ui_character_header_text_color; | |
40 unsigned int ui_character_bonus_text_color; | |
41 unsigned int ui_character_bonus_text_color_neg; | |
42 unsigned int ui_character_skill_upgradeable_color; | |
43 unsigned int ui_character_skill_default_color; | |
44 std::array<unsigned int, 6> ui_character_award_color; | |
45 | |
46 unsigned int ui_game_minimap_outline_color; | |
47 unsigned int ui_game_minimap_actor_friendly_color; | |
48 unsigned int ui_game_minimap_actor_hostile_color; | |
49 unsigned int ui_game_minimap_actor_corpse_color; | |
50 unsigned int ui_game_minimap_decoration_color_1; | |
51 unsigned int ui_game_minimap_projectile_color; | |
52 unsigned int ui_game_minimap_treasure_color; | |
53 std::array<unsigned int, 24> ui_game_character_record_playerbuff_colors; | |
54 | |
55 unsigned int ui_gamemenu_video_gamma_title_color; | |
56 unsigned int ui_gamemenu_keys_action_name_color; | |
57 unsigned int ui_gamemenu_keys_key_selection_blink_color_1; | |
58 unsigned int ui_gamemenu_keys_key_selection_blink_color_2; | |
59 unsigned int ui_gamemenu_keys_key_default_color; | |
60 | |
61 unsigned int ui_book_quests_title_color; | |
62 unsigned int ui_book_quests_text_color; | |
63 unsigned int ui_book_autonotes_title_color; | |
64 unsigned int ui_book_autonotes_text_color; | |
65 unsigned int ui_book_map_title_color; | |
66 unsigned int ui_book_map_coordinates_color; | |
67 | |
68 unsigned int ui_book_calendar_title_color; | |
69 unsigned int ui_book_calendar_time_color; | |
70 unsigned int ui_book_calendar_day_color; | |
71 unsigned int ui_book_calendar_month_color; | |
72 unsigned int ui_book_calendar_year_color; | |
73 unsigned int ui_book_calendar_moon_color; | |
74 unsigned int ui_book_calendar_location_color; | |
75 | |
76 unsigned int ui_book_journal_title_color; | |
77 unsigned int ui_book_journal_text_color; | |
78 unsigned int ui_book_journal_text_shadow; | |
79 | |
80 std::array<unsigned int, 16> papredoll_dbrds; | |
81 unsigned int papredoll_drhs[4]; | |
82 unsigned int papredoll_dlhus[4]; | |
83 unsigned int papredoll_dlhs[4]; | |
84 unsigned int papredoll_dbods[5]; | |
85 int paperdoll_armor_texture[4][17][3]; | |
86 //int paperdoll_array_51132C[165]; | |
87 unsigned int papredoll_dlaus[5]; | |
88 unsigned int papredoll_dlads[4]; | |
89 int papredoll_flying_feet[777]; // idb | |
90 int paperdoll_boots_texture[4][6];//0x511638 | |
91 int paperdoll_cloak_collar_texture[4][10]; // weak | |
92 int paperdoll_cloak_texture[4][10]; | |
93 int paperdoll_helm_texture[2][16]; //511698 | |
94 int paperdoll_belt_texture[4][7]; //511718 | |
95 | |
96 | |
97 const int paperdoll_Weapon[4][16][2] = {//4E4C30 | |
98 {{128, 205}, {30, 144}, {88, 85}, {0, 0}, {0, 0}, {0, 0}, {17, 104}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, | |
99 {{131, 201}, {38, 158}, {98, 87}, {0, 0}, {0, 0}, {0, 0}, {21, 100}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, | |
100 {{131, 216}, {29, 186}, {88, 119}, {0, 0}, {0, 0}, {0, 0}, { 0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, | |
101 {{123, 216}, {35, 184}, {98, 119}, {0, 0}, {0, 0}, {0, 0}, { 0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}}, | |
102 }; | |
103 | |
104 | |
105 | |
106 const int paperdoll_Boot[4][7][2] = //4E5490 | |
107 { | |
108 0xE, 0x11D, 0xD, 0x11D, 0xC, 0x10A, 0xA, 0xFF, 0xD, 0xF9, 0xD, 0x137, 0xC, 0x10E, | |
109 0x14, 0x125, 0x13, 0x122, 0x15, 0x120, 0x15, 0x114, 0x13, 0x10A, 0x11, 0x13E, 0x11, 0x116, | |
110 0x1D, 0x121, 0x1C, 0x11F, 0x1B, 0x11B, 0x1C, 0x117, 0x16, 0x116, 0x1B, 0x137, 0x1B, 0x11B, | |
111 0x1F, 0x127, 0x1F, 0x122, 0x1B, 0x11B, 0x1D, 0x117, 0x1D, 0x116, 0x1D, 0x137, 0x1B, 0x11F, | |
112 }; | |
113 const int paperdoll_Cloak[4][10][2] = //4E5570 | |
114 { | |
115 0x11, 0x68, 0xF, 0x68, 0x14, 0x71, 0x19, 0x6B, 0x21, 0x6F, 0x5, 0x68, 0x5, 0x68, 0x14, 0x71, 0x3, 0x6B, 0xF, 0x6F, | |
116 0x15, 0x64, 0xB, 0x6B, 0xE, 0x67, 0x15, 0x6B, 0x1B, 0x6F, 0x3, 0x6B, 0, 0x6B, 0xE, 0x67, 0, 0x6B, 0x3, 0x6F, | |
117 0x10, 0x8A, 0x9, 0x8B, 0x18, 0x98, 0x25, 0x91, 0x29, 0x90, 0x8, 0x8A, 0x9, 0x8B, 0x18, 0x98, 0x3, 0x91, 0x3, 0x90, | |
118 0x14, 0x92, 0x10, 0x92, 0x15, 0x98, 0x1F, 0x91, 0x22, 0x90, 0x8, 0x92, 0xC, 0x92, 0x15, 0x98, 0x3, 0x91, 0x3, 0x90, | |
119 }; | |
120 const int paperdoll_CloakCollar[4][10][2] = //4E56B0 | |
121 { | |
122 0x11, 0x68, 0x34, 0x64, 0x21, 0x69, 0x1D, 0x67, 0x20, 0x67, 0x21, 0x68, 0x34, 0x64, 0x21, 0x69, 0x1D, 0x67, 0x1F, 0x67, | |
123 0x13, 0x64, 0x35, 0x66, 0x29, 0x68, 0x1F, 0x68, 0x1F, 0x6A, 0x21, 0x6A, 0x2B, 0x66, 0x26, 0x68, 0x1F, 0x68, 0x1F, 0x6A, | |
124 0, 0, 0x30, 0x87, 0x1E, 0x86, 0x1B, 0x86, 0x1C, 0x8A, 0x21, 0x87, 0x30, 0x87, 0x1E, 0x86, 0x1B, 0x86, 0x1C, 0x8A, | |
125 0, 0, 0x38, 0x8A, 0x24, 0x8B, 0x1D, 0x8B, 0x21, 0x8C, 0x27, 0x8A, 0x34, 0x8A, 0x24, 0x8B, 0x25, 0x8B, 0x21, 0x8C, | |
126 }; | |
127 //int dword_4E56B4; // weak | |
128 const int paperdoll_Belt[4][7][2] = //4E57F0 | |
129 { | |
130 0x3A, 0xB6, 0x37, 0xB2, 0x34, 0xB9, 0x3A, 0xB9, 0x37, 0xB7, 0x38, 0xAC, 0x37, 0xB7, | |
131 0x3E, 0xAD, 0x3A, 0xAC, 0x37, 0xB0, 0x3A, 0xB1, 0x39, 0xB0, 0x3C, 0xA5, 0x39, 0xB0, | |
132 0x3B, 0xD5, 0x37, 0xD2, 0x31, 0xD5, 0x39, 0xD6, 0x37, 0xD8, 0x37, 0xD1, 0x37, 0xD8, | |
133 0x42, 0xD2, 0x3F, 0xD0, 0x3B, 0xD7, 0x3C, 0xD5, 0x3B, 0xD6, 0x3E, 0xCF, 0x36, 0xD6, | |
134 }; | |
135 const int paperdoll_Helm[4][16][2] = //4E58D0 | |
136 { | |
137 0x3E, 0x1F, 0x41, 0x2C, 0x37, 0x2F, 0x31, 0x32, 0x37, 0x2A, 0x39, 0x28, 0x36, 0x34, 0x41, 0x38, 0x40, 0x31, 0x40, 0x21, 0x40, 0x31, 0x3C, 0x33, 0x3D, 0x24, 0x3A, 0x1A, 0x37, 0x2A, 0x41, 0x48, | |
138 0x41, 0x1E, 0x42, 0x2B, 0x37, 0x2F, 0x34, 0x30, 0x39, 0x29, 0x3A, 0x26, 0x36, 0x34, 0x41, 0x37, 0x42, 0x32, 0x40, 0x21, 0x40, 0x31, 0x40, 0x2F, 0x3E, 0x22, 0x3B, 0x1A, 0x39, 0x29, 0x42, 0x47, | |
139 0x3F, 0x47, 0x41, 0x56, 0x37, 0x59, 0x32, 0x5E, 0x37, 0x58, 0x39, 0x54, 0x34, 0x61, 0x40, 0x61, 0x41, 0x5D, 0x3E, 0x4F, 0x3E, 0x5B, 0x3D, 0x5B, 0x3F, 0x4C, 0x3B, 0x45, 0x37, 0x58, 0x41, 0x74, | |
140 0x45, 0x45, 0x46, 0x54, 0x3A, 0x55, 0x38, 0x58, 0x3C, 0x54, 0x3F, 0x52, 0x39, 0x5B, 0x45, 0x5C, 0x47, 0x5C, 0x44, 0x4B, 0x44, 0x57, 0x43, 0x55, 0x44, 0x4A, 0x3E, 0x45, 0x3C, 0x54, 0x47, 0x70, | |
141 }; | |
142 const int pPaperdoll_Beards[4] = //4E5AD0 | |
143 { | |
144 52, 130, 56, 136, | |
145 }; | |
146 const int pPaperdoll_LeftHand[4][2] = //4E5AE0 | |
147 { | |
148 0x67, 0x6A, | |
149 0x65, 0x6C, | |
150 0x74, 0x8D, | |
151 0x74, 0x93, | |
152 }; | |
153 const int pPaperdoll_SecondLeftHand[4][2] = //4E5B00 | |
154 { | |
155 0x1A, 0x6B, | |
156 0x28, 0x6D, | |
157 0x19, 0x8D, | |
158 0x20, 0x92, | |
159 }; | |
160 const int pPaperdoll_RightHand[4][2] = //4E5B20 | |
161 { | |
162 0x1E, 0x90, | |
163 0x22, 0x9E, | |
164 0x19, 0xBA, | |
165 0x1F, 0xB8, | |
166 }; | |
167 const int pPaperdollLeftEmptyHand[4][2] = //4E5B40 | |
168 { | |
169 0x80, 0xCD, | |
170 0x83, 0xC9, | |
171 0x83, 0xD8, | |
172 0x7B, 0xD8, | |
173 }; | |
174 | |
175 int pPaperdoll_BodyX = 481; // 004E4C28 | |
176 int pPaperdoll_BodyY = 0; // 004E4C2C | |
177 const int paperdoll_Armor[4][17][2] = //4E4E30 | |
178 { | |
179 // X Y | |
180 0x2C, 0x67, 0x30, 0x69, 0x2D, 0x67, 0x2C, 0x64, 0x14, 0x66, 0x22, 0x67, 0x20, 0x66, 0x25, 0x66, 0x12, 0x66,//Human | |
181 0x0A, 0x66, 0x13, 0x64, 0x0E, 0x64, 0x0A, 0x63, 0x14, 0x66, 0x0A, 0x63, 0x0A, 0x66, 0x25, 0x66, | |
182 | |
183 0x32, 0x68, 0x32, 0x69, 0x35, 0x69, 0x33, 0x68, 0x24, 0x67, 0x30, 0x69, 0x33, 0x68, 0x31, 0x69, 0x19, 0x69, | |
184 0x19, 0x6A, 0x16, 0x66, 0x16, 0x65, 0x0F, 0x6B, 0x24, 0x67, 0x0F, 0x6B, 0x19, 0x6A, 0x31, 0x69, | |
185 | |
186 0x2A, 0x8C, 0x29, 0x8C, 0x2A, 0x89, 0x29, 0x86, 0x12, 0x87, 0x2D, 0x89, 0x2A, 0x88, 0x25, 0x87, 0x12, 0x8B, | |
187 0x12, 0x8B, 0x11, 0x8A, 0x15, 0x87, 0x09, 0x89, 0x12, 0x87, 0x09, 0x89, 0x12, 0x8B, 0x25, 0x87, | |
188 | |
189 0x33, 0x90, 0x32, 0x90, 0x34, 0x91, 0x32, 0x8E, 0x21, 0x8B, 0x31, 0x8B, 0x33, 0x8E, 0x2F, 0x8F, 0x16, 0x8D, | |
190 0x18, 0x8C, 0x19, 0x8C, 0x1B, 0x8E, 0x0C, 0x8C, 0x21, 0x8B, 0x0C, 0x8C, 0x18, 0x8C, 0x2F, 0x8F, | |
191 }; | |
192 const int paperdoll_shoulder[4][17][2] = //4E5050 | |
193 { | |
194 0x64, 0x67, 0x61, 0x67, 0x65, 0x68, 0x6E, 0x74, 0x6C, 0x68, 0x61, 0x67, 0x66, 0x68, 0x6C, 0x6A, 0x6E, 0x6D, | |
195 0x67, 0x69, 0x70, 0x67, 0x6E, 0x6D, 0x6C, 0x6F, 0x6C, 0x68, 0x6C, 0x6F, 0x67, 0x69, 0x6C, 0x6A, | |
196 | |
197 0x60, 0x6B, 0x60, 0x6C, 0x60, 0x6B, 0x61, 0x6A, 0x60, 0x69, 0x60, 0x6A, 0x60, 0x6A, 0x61, 0x69, 0x63, 0x6A, | |
198 0x64, 0x6A, 0x61, 0x66, 0x66, 0x67, 0x64, 0x6C, 0x60, 0x69, 0x64, 0x6C, 0x64, 0x6A, 0x61, 0x69, | |
199 | |
200 0x6D, 0x8C, 0x75, 0x8C, 0, 0, 0x72, 0x8D, 0x6A, 0x89, 0, 0, 0x73, 0x8C, 0x69, 0x8C, 0x6E, 0x8D, | |
201 0x71, 0x8D, 0x70, 0x8D, 0x72, 0x8D, 0x74, 0x8E, 0x6A, 0x89, 0x74, 0x8E, 0x71, 0x8D, 0x69, 0x8C, | |
202 | |
203 0x72, 0x91, 0x72, 0x91, 0, 0, 0x6E, 0x92, 0x6F, 0x91, 0, 0, 0, 0, 0x6E, 0x91, 0x71, 0x90, | |
204 0x72, 0x8D, 0x72, 0x90, 0x73, 0x93, 0x73, 0x90, 0x6F, 0x91, 0x73, 0x90, 0x72, 0x8D, 0x6E, 0x91, | |
205 }; | |
206 const int dword_4E5270[4][2] = | |
207 { | |
208 0, 0, | |
209 0x61, 0x67, | |
210 0, 0, | |
211 0x64, 0x69, | |
212 }; | |
213 | |
214 const char *dlad_texnames_by_face[25] = | |
215 { | |
216 "pc01lad", "pc02lad", "pc03lad", "pc04lad", "pc05lad", "pc06lad", | |
217 "pc07lad", "pc08lad", "pc09lad", "pc10lad", "pc11lad", "pc12lad", | |
218 "pc13lad", "pc14lad", "pc15lad", "pc16lad", "pc17lad", "pc18lad", | |
219 "pc19lad", "pc20lad", "pc21lad", "pc22lad", "pc23lad", "pc24lad", | |
220 "pc25lad" | |
221 }; | |
222 const char *dlau_texnames_by_face[25] = | |
223 { | |
224 "pc01lau", "pc02lau", "pc03lau", "pc04lau", "pc05lau", "pc06lau", | |
225 "pc07lau", "pc08lau", "pc09lau", "pc10lau", "pc11lau", "pc12lau", | |
226 "pc13lau", "pc14lau", "pc15lau", "pc16lau", "pc17lau", "pc18lau", | |
227 "pc19lau", "pc20lau", "pc21lau", "pc22lau", "pc23lau", "pc24lau", | |
228 "pc25lau" | |
229 }; | |
230 const char *dbod_texnames_by_face[25] = | |
231 { | |
232 "pc01bod", "pc02bod", "pc03bod", "pc04bod", "pc05bod", "pc06bod", | |
233 "pc07bod", "pc08bod", "pc09bod", "pc10bod", "pc11bod", "pc12bod", | |
234 "pc13bod", "pc14bod", "pc15bod", "pc16bod", "pc17bod", "pc18bod", | |
235 "pc19bod", "pc20bod", "pc21bod", "pc22bod", "pc23bod", "pc24bod", | |
236 "pc25bod" | |
237 }; | |
238 const char *drh_texnames_by_face[25] = | |
239 { | |
240 | |
241 "pc01rh", "pc02rh", "pc03rh", "pc04rh", "pc05rh", "pc06rh", | |
242 "pc07rh", "pc08rh", "pc09rh", "pc10rh", "pc11rh", "pc12rh", | |
243 "pc13rh", "pc14rh", "pc15rh", "pc16rh", "pc17rh", "pc18rh", | |
244 "pc19rh", "pc20rh", "pc21rh", "pc22rh", "pc23rh", "pc24rh", | |
245 "pc25rh" | |
246 }; | |
247 const char *dlh_texnames_by_face[25] = | |
248 { | |
249 "pc01lh", "pc02lh", "pc03lh", "pc04lh", "pc05lh", "pc06lh", | |
250 "pc07lh", "pc08lh", "pc09lh", "pc10lh", "pc11lh", "pc12lh", | |
251 "pc13lh", "pc14lh", "pc15lh", "pc16lh", "pc17lh", "pc18lh", | |
252 "pc19lh", "pc20lh", "pc21lh", "pc22lh", "pc23lh", "pc24lh", | |
253 "pc25lh" | |
254 }; | |
255 const char *dlhu_texnames_by_face[25] = | |
256 { | |
257 "pc01lhu", "pc02lhu", "pc03lhu", "pc04lhu", "pc05lhu", "pc06lhu", | |
258 "pc07lhu", "pc08lhu", "pc09lhu", "pc10lhu", "pc11lhu", "pc12lhu", | |
259 "pc13lhu", "pc14lhu", "pc15lhu", "pc16lhu", "pc17lhu", "pc18lhu", | |
260 "pc19lhu", "pc20lhu", "pc21lhu", "pc22lhu", "pc23lhu", "pc24lhu", | |
261 "pc25lhu" | |
262 }; | |
263 | |
264 const int pArmorSkills[5] = {PLAYER_SKILL_LEATHER, PLAYER_SKILL_CHAIN, PLAYER_SKILL_PLATE, PLAYER_SKILL_SHIELD, PLAYER_SKILL_DODGE}; | |
265 const int pWeaponSkills[9] = {PLAYER_SKILL_AXE, PLAYER_SKILL_BOW, PLAYER_SKILL_DAGGER, PLAYER_SKILL_MACE, PLAYER_SKILL_SPEAR, | |
266 PLAYER_SKILL_STAFF, PLAYER_SKILL_SWORD, PLAYER_SKILL_UNARMED, PLAYER_SKILL_BLASTER}; | |
267 const int pMiscSkills[12] = {PLAYER_SKILL_ALCHEMY, PLAYER_SKILL_ARMSMASTER, PLAYER_SKILL_BODYBUILDING, PLAYER_SKILL_ITEM_ID, PLAYER_SKILL_MONSTER_ID, | |
268 PLAYER_SKILL_LEARNING, PLAYER_SKILL_TRAP_DISARM, PLAYER_SKILL_MEDITATION, PLAYER_SKILL_MERCHANT, PLAYER_SKILL_PERCEPTION, | |
269 PLAYER_SKILL_REPAIR, PLAYER_SKILL_STEALING}; | |
270 const int pMagicSkills[9] = {PLAYER_SKILL_FIRE, PLAYER_SKILL_AIR, PLAYER_SKILL_WATER, PLAYER_SKILL_EARTH, PLAYER_SKILL_SPIRIT, | |
271 PLAYER_SKILL_MIND, PLAYER_SKILL_BODY, PLAYER_SKILL_LIGHT, PLAYER_SKILL_DARK}; | |
272 | |
273 | |
274 | |
275 | |
276 void set_default_ui_skin() | |
277 { | |
278 ui_mainmenu_copyright_color = TargetColor(255, 255, 255); | |
279 | |
280 ui_character_default_text_color = TargetColor(255, 255, 255); | |
281 ui_character_header_text_color = TargetColor(255, 255, 155); | |
282 ui_character_bonus_text_color = TargetColor(0, 255, 0); | |
283 ui_character_bonus_text_color_neg = TargetColor(255, 0, 0); | |
284 | |
285 ui_character_skill_upgradeable_color = TargetColor(0, 175, 255); | |
286 ui_character_skill_default_color = TargetColor(255, 0, 0); | |
287 ui_character_skill_highlight_color = TargetColor(255, 0, 0); | |
288 | |
289 ui_character_award_color[0] = TargetColor(248, 108, 160); | |
290 ui_character_award_color[1] = TargetColor(112, 220, 248); | |
291 ui_character_award_color[2] = TargetColor(192, 192, 240); | |
292 ui_character_award_color[3] = TargetColor( 64, 244, 96); | |
293 ui_character_award_color[4] = TargetColor(232, 244, 96); | |
294 ui_character_award_color[5] = TargetColor(240, 252, 192); | |
295 | |
296 ui_game_minimap_outline_color = TargetColor(0, 0, 255); | |
297 ui_game_minimap_actor_friendly_color = TargetColor(0, 255, 0); | |
298 ui_game_minimap_actor_hostile_color = TargetColor(255, 0, 0); | |
299 ui_game_minimap_actor_corpse_color = TargetColor(255, 255, 0); | |
300 ui_game_minimap_decoration_color_1 = TargetColor(255, 255, 255); | |
301 ui_game_minimap_projectile_color = TargetColor(255, 0, 0); | |
302 ui_game_minimap_treasure_color = TargetColor(0, 0, 255); | |
303 ui_game_character_record_playerbuff_colors[0] = TargetColor(150, 212, 255); | |
304 ui_game_character_record_playerbuff_colors[1] = TargetColor(225, 225, 225); | |
305 ui_game_character_record_playerbuff_colors[2] = TargetColor(255, 128, 0); | |
306 ui_game_character_record_playerbuff_colors[3] = TargetColor(128, 128, 128); | |
307 ui_game_character_record_playerbuff_colors[4] = TargetColor(225, 225, 225); | |
308 ui_game_character_record_playerbuff_colors[5] = TargetColor(255, 85, 0); | |
309 ui_game_character_record_playerbuff_colors[6] = TargetColor(255, 128, 0); | |
310 ui_game_character_record_playerbuff_colors[7] = TargetColor(255, 85, 0); | |
311 ui_game_character_record_playerbuff_colors[8] = TargetColor(225, 225, 225); | |
312 ui_game_character_record_playerbuff_colors[9] = TargetColor(235, 15, 255); | |
313 ui_game_character_record_playerbuff_colors[10] = TargetColor(192, 192, 240); | |
314 ui_game_character_record_playerbuff_colors[11] = TargetColor(225, 225, 225); | |
315 ui_game_character_record_playerbuff_colors[12] = TargetColor(255, 128, 0); | |
316 ui_game_character_record_playerbuff_colors[13] = TargetColor(150, 212, 255); | |
317 ui_game_character_record_playerbuff_colors[14] = TargetColor(128, 128, 128); | |
318 ui_game_character_record_playerbuff_colors[15] = TargetColor(255, 255, 155); | |
319 ui_game_character_record_playerbuff_colors[16] = TargetColor(255, 255, 155); | |
320 ui_game_character_record_playerbuff_colors[17] = TargetColor(255, 255, 155); | |
321 ui_game_character_record_playerbuff_colors[18] = TargetColor(255, 255, 155); | |
322 ui_game_character_record_playerbuff_colors[19] = TargetColor(255, 255, 155); | |
323 ui_game_character_record_playerbuff_colors[20] = TargetColor(255, 255, 155); | |
324 ui_game_character_record_playerbuff_colors[21] = TargetColor(255, 255, 155); | |
325 ui_game_character_record_playerbuff_colors[22] = TargetColor(0, 128, 255); | |
326 ui_game_character_record_playerbuff_colors[23] = TargetColor(0, 128, 255); | |
327 | |
328 ui_gamemenu_video_gamma_title_color = TargetColor(255, 255, 155); | |
329 ui_gamemenu_keys_action_name_color = TargetColor(255, 255, 255); | |
330 ui_gamemenu_keys_key_selection_blink_color_1 = TargetColor(50, 0, 0); | |
331 ui_gamemenu_keys_key_selection_blink_color_2 = TargetColor(225, 205, 35); | |
332 ui_gamemenu_keys_key_default_color = TargetColor(255, 255, 255); | |
333 | |
334 ui_book_quests_title_color = TargetColor(255, 255, 255); | |
335 ui_book_quests_text_color = TargetColor(255, 255, 255); | |
336 ui_book_autonotes_title_color = TargetColor(255, 255, 255); | |
337 ui_book_autonotes_text_color = TargetColor(255, 255, 255); | |
338 ui_book_map_title_color = TargetColor(255, 255, 255); | |
339 ui_book_map_coordinates_color = TargetColor(255, 255, 255); | |
340 | |
341 ui_book_calendar_title_color = TargetColor(255, 255, 255); | |
342 ui_book_calendar_time_color = TargetColor(75, 75, 75); | |
343 ui_book_calendar_day_color = TargetColor(75, 75, 75); | |
344 ui_book_calendar_month_color = TargetColor(75, 75, 75); | |
345 ui_book_calendar_year_color = TargetColor(75, 75, 75); | |
346 ui_book_calendar_moon_color = TargetColor(75, 75, 75); | |
347 ui_book_calendar_location_color = TargetColor(75, 75, 75); | |
348 | |
349 ui_book_journal_title_color = TargetColor(255, 255, 255); | |
350 ui_book_journal_text_color = TargetColor(255, 255, 255); | |
351 ui_book_journal_text_shadow = TargetColor(0, 0, 0); | |
352 } | |
353 | |
354 | |
355 | |
356 | |
357 //----- (00421626) -------------------------------------------------------- | |
358 GUIWindow *CharacterUI_Initialize(unsigned int _this) | |
359 { | |
360 GUIWindow *pWindow; // edi@3 | |
361 | |
362 ++pIcons_LOD->uTexturePacksCount; | |
363 if ( !pIcons_LOD->uNumPrevLoadedFiles ) | |
364 pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles; | |
365 | |
366 pEventTimer->Pause(); | |
367 pAudioPlayer->StopChannels(-1, -1); | |
368 bRingsShownInCharScreen = false; | |
369 CharacterUI_LoadPaperdollTextures(); | |
370 pCurrentScreen = _this; | |
371 | |
372 pWindow = GUIWindow::Create(0, 0, 640, 480, WINDOW_CharacterRecord, uActiveCharacter, 0); | |
373 pCharacterScreen_StatsBtn = pWindow->CreateButton(pViewport->uViewportTL_X + 12, pViewport->uViewportTL_Y + 308, | |
374 pIcons_LOD->GetTexture(papredoll_dbrds[9])->uTextureWidth, | |
375 pIcons_LOD->GetTexture(papredoll_dbrds[9])->uTextureHeight, | |
376 1, 0, UIMSG_ClickStatsBtn, 0, 'S', pGlobalTXT_LocalizationStrings[216],// Stats | |
377 pIcons_LOD->GetTexture(papredoll_dbrds[10]), | |
378 pIcons_LOD->GetTexture(papredoll_dbrds[9]), 0); | |
379 pCharacterScreen_SkillsBtn = pWindow->CreateButton(pViewport->uViewportTL_X + 102, pViewport->uViewportTL_Y + 308, | |
380 pIcons_LOD->GetTexture(papredoll_dbrds[7])->uTextureWidth, | |
381 pIcons_LOD->GetTexture(papredoll_dbrds[7])->uTextureHeight, | |
382 1, 0, UIMSG_ClickSkillsBtn, 0, 'K', pGlobalTXT_LocalizationStrings[205],//Skills | |
383 pIcons_LOD->GetTexture(papredoll_dbrds[8]), | |
384 pIcons_LOD->GetTexture(papredoll_dbrds[7]), 0); | |
385 pCharacterScreen_InventoryBtn = pWindow->CreateButton(pViewport->uViewportTL_X + 192, pViewport->uViewportTL_Y + 308, | |
386 pIcons_LOD->GetTexture(papredoll_dbrds[5])->uTextureWidth, | |
387 pIcons_LOD->GetTexture(papredoll_dbrds[5])->uTextureHeight, | |
388 1, 0, UIMSG_ClickInventoryBtn, 0, 'I', pGlobalTXT_LocalizationStrings[120], //Inventory | |
389 pIcons_LOD->GetTexture(papredoll_dbrds[6]), | |
390 pIcons_LOD->GetTexture(papredoll_dbrds[5]), 0); | |
391 pCharacterScreen_AwardsBtn = pWindow->CreateButton(pViewport->uViewportTL_X + 282, pViewport->uViewportTL_Y + 308, | |
392 pIcons_LOD->GetTexture(papredoll_dbrds[3])->uTextureWidth, | |
393 pIcons_LOD->GetTexture(papredoll_dbrds[3])->uTextureHeight, | |
394 1, 0, UIMSG_ClickAwardsBtn, 0, 'A', pGlobalTXT_LocalizationStrings[22], //Awards | |
395 pIcons_LOD->GetTexture(papredoll_dbrds[4]), | |
396 pIcons_LOD->GetTexture(papredoll_dbrds[3]), 0); | |
397 pCharacterScreen_ExitBtn = pWindow->CreateButton(pViewport->uViewportTL_X + 371, pViewport->uViewportTL_Y + 308, | |
398 pIcons_LOD->GetTexture(papredoll_dbrds[1])->uTextureWidth, | |
399 pIcons_LOD->GetTexture(papredoll_dbrds[1])->uTextureHeight, | |
400 1, 0, UIMSG_ClickExitCharacterWindowBtn, 0, 0, pGlobalTXT_LocalizationStrings[79],//Exit | |
401 pIcons_LOD->GetTexture(papredoll_dbrds[2]), | |
402 pIcons_LOD->GetTexture(papredoll_dbrds[1]), 0); | |
403 pWindow->CreateButton(0, 0, 0x1DCu, 0x159u, 1, 122, UIMSG_InventoryLeftClick, 0, 0, "", 0); | |
404 pCharacterScreen_DetalizBtn = pWindow->CreateButton(0x258u, 0x12Cu, 30, 30, 1, 0, UIMSG_ChangeDetaliz, 0, 0, pGlobalTXT_LocalizationStrings[64], 0); | |
405 pCharacterScreen_DollBtn = pWindow->CreateButton(0x1DCu, 0, 0xA4u, 0x159u, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0); | |
406 | |
407 pWindow->CreateButton( 61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0); | |
408 pWindow->CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0); | |
409 pWindow->CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0); | |
410 pWindow->CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0); | |
411 | |
412 pWindow->CreateButton(0, 0, 0, 0, 1, 0, UIMSG_CycleCharacters, 0, '\t', "", 0); | |
413 FillAwardsData(); | |
414 return pWindow; | |
415 } | |
416 | |
417 //----- (004219BE) -------------------------------------------------------- | |
418 GUIWindow *CastSpellInfo::sub_4219BE() | |
419 { | |
420 GUIWindow *v2; // ebx@1 | |
421 | |
422 pEventTimer->Pause(); | |
423 pAudioPlayer->StopChannels(-1, -1); | |
424 bRingsShownInCharScreen = 0; | |
425 CharacterUI_LoadPaperdollTextures(); | |
426 pCurrentScreen = SCREEN_CASTING; | |
427 v2 = GUIWindow::Create(0, 0, 640, 480, WINDOW_CastSpell_InInventory, (int)this, 0); | |
428 pCharacterScreen_ExitBtn = v2->CreateButton(394, 318, 75, 33, 1, 0, UIMSG_ClickExitCharacterWindowBtn, 0, 0, | |
429 pGlobalTXT_LocalizationStrings[79], // Close | |
430 pIcons_LOD->GetTexture(papredoll_dbrds[2]), | |
431 pIcons_LOD->GetTexture(papredoll_dbrds[1]), 0); | |
432 v2->CreateButton(0, 0, 0x1DCu, 0x159u, 1, 122, UIMSG_InventoryLeftClick, 0, 0, "", 0); | |
433 pCharacterScreen_DollBtn = v2->CreateButton(0x1DCu, 0, 0xA4u, 0x159u, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0); | |
434 | |
435 v2->CreateButton( 61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0); | |
436 v2->CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0); | |
437 v2->CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0); | |
438 v2->CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0); | |
439 | |
440 return v2; | |
441 } | |
442 | |
443 | |
444 | |
445 | |
446 | |
447 | |
448 static int CharacterUI_SkillsTab_Draw__DrawSkillTable(Player *player, int x, int y, const int *skill_list, int skill_list_size, int right_margin, const char *skill_group_name) | |
449 { | |
450 int y_offset = y; | |
451 | |
452 sprintf(pTmpBuf.data(), "%s\r%03d%s", skill_group_name, right_margin, pGlobalTXT_LocalizationStrings[131]); //"Level" | |
453 pGUIWindow_CurrentMenu->DrawText(pFontArrus, x, y, ui_character_header_text_color, pTmpBuf.data(), 0, 0, 0); | |
454 | |
455 int num_skills_drawn = 0; | |
456 for (uint i = 0; i < skill_list_size; ++i) | |
457 { | |
458 auto skill = (PLAYER_SKILL_TYPE)skill_list[i]; | |
459 for (uint j = 0; j < pGUIWindow_CurrentMenu->uNumControls; ++j) | |
460 { | |
461 auto v8 = pGUIWindow_CurrentMenu->pControlsHead; | |
462 | |
463 for (int v7 = j; v7 > 0; --v7) | |
464 v8 = v8->pNext; | |
465 | |
466 auto v9 = v8->field_1C; | |
467 if ((short)(v8->field_1C) >= 0) | |
468 continue; | |
469 if ( (v9 & 0x7FFF) != skill ) | |
470 continue; | |
471 | |
472 ++num_skills_drawn; | |
473 y_offset = v8->uY; | |
474 | |
475 auto skill_value = player->pActiveSkills[skill]; | |
476 auto skill_level = skill_value & 0x3F; | |
477 | |
478 uint skill_color = 0; | |
479 uint skill_mastery_color = 0; | |
480 if (player->uSkillPoints > skill_level) | |
481 skill_color = ui_character_skill_upgradeable_color; | |
482 | |
483 if (pGUIWindow_CurrentMenu->pCurrentPosActiveItem == j) | |
484 { | |
485 if (player->uSkillPoints > skill_level) | |
486 skill_mastery_color = ui_character_bonus_text_color; | |
487 else | |
488 skill_mastery_color = ui_character_skill_default_color; | |
489 skill_color = skill_mastery_color; | |
490 } | |
491 | |
492 if (SkillToMastery(skill_value) == 1) | |
493 { | |
494 sprintfex(pTmpBuf.data(), "%s\r%03d%2d", pSkillNames[skill], right_margin, skill_level); | |
495 pGUIWindow_CurrentMenu->DrawText(pFontLucida, x, v8->uY, skill_color, pTmpBuf.data(), 0, 0, 0); | |
496 } | |
497 else | |
498 { | |
499 const char *skill_level_str = nullptr; | |
500 | |
501 switch (SkillToMastery(skill_value)) | |
502 { | |
503 case 4: skill_level_str = pGlobalTXT_LocalizationStrings[96]; break; // "Grand" | |
504 case 3: skill_level_str = pGlobalTXT_LocalizationStrings[432]; break; // Master | |
505 case 2: skill_level_str = pGlobalTXT_LocalizationStrings[433]; break; // Expert | |
506 } | |
507 | |
508 if (!skill_mastery_color) | |
509 skill_mastery_color = ui_character_header_text_color; | |
510 | |
511 sprintfex(pTmpBuf.data(), "%s \f%05d%s\f%05d\r%03d%2d", pSkillNames[skill], skill_mastery_color, skill_level_str, skill_color, right_margin, skill_level); | |
512 pGUIWindow_CurrentMenu->DrawText(pFontLucida, x, v8->uY, skill_color, pTmpBuf.data(), 0, 0, 0); | |
513 } | |
514 } | |
515 } | |
516 | |
517 if (!num_skills_drawn) | |
518 { | |
519 y_offset += LOBYTE(pFontLucida->uFontHeight) - 3; | |
520 pGUIWindow_CurrentMenu->DrawText(pFontLucida, x, y_offset, 0, pGlobalTXT_LocalizationStrings[153], 0, 0, 0); //"None" | |
521 } | |
522 | |
523 return y_offset; | |
524 } | |
525 | |
526 | |
527 | |
528 //----- (00419719) -------------------------------------------------------- | |
529 void CharacterUI_SkillsTab_Draw(Player *player) | |
530 { | |
531 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("fr_skill", TEXTURE_16BIT_PALETTE)); | |
532 | |
533 sprintfex(pTmpBuf.data(), "%s \f%05d^Pv[%s]\f00000\r177%s: \f%05d%d\f00000", | |
534 pGlobalTXT_LocalizationStrings[206], // Skills for | |
535 ui_character_header_text_color, | |
536 player->pName, | |
537 pGlobalTXT_LocalizationStrings[207], // Skill Points | |
538 player->uSkillPoints ? ui_character_bonus_text_color : ui_character_default_text_color, | |
539 player->uSkillPoints); | |
540 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, 18, 0, pTmpBuf.data(), 0, 0, 0); | |
541 | |
542 int y = 2 * LOBYTE(pFontLucida->uFontHeight) + 13; | |
543 y = CharacterUI_SkillsTab_Draw__DrawSkillTable(player, 24, y, pWeaponSkills, 9, 400, pGlobalTXT_LocalizationStrings[242]); // "Weapons" | |
544 | |
545 y += 2 * LOBYTE(pFontLucida->uFontHeight) - 10; | |
546 CharacterUI_SkillsTab_Draw__DrawSkillTable(player, 24, y, pMagicSkills, 9, 400, pGlobalTXT_LocalizationStrings[138]); // "Magic" | |
547 | |
548 y = 2 * LOBYTE(pFontLucida->uFontHeight) + 13; | |
549 y = CharacterUI_SkillsTab_Draw__DrawSkillTable(player, 248, y, pArmorSkills, 5, 177, pGlobalTXT_LocalizationStrings[11]); // "Armor" | |
550 | |
551 y += 2 * LOBYTE(pFontLucida->uFontHeight) - 10; | |
552 y = CharacterUI_SkillsTab_Draw__DrawSkillTable(player, 248, y, pMiscSkills, 12, 177, pGlobalTXT_LocalizationStrings[143]); //"Misc" | |
553 } | |
554 | |
555 | |
556 | |
557 | |
558 | |
559 | |
560 | |
561 | |
562 | |
563 | |
564 //----- (0041A000) -------------------------------------------------------- | |
565 void CharacterUI_AwardsTab_Draw(Player *player) | |
566 { | |
567 //unsigned int v1; // esi@1 | |
568 //unsigned int v2; // ebx@1 | |
569 //unsigned int award_texture_id; // eax@1 | |
570 unsigned int result; // eax@1 | |
571 int v5; // eax@15 | |
572 char *v6; // ebx@15 | |
573 int v7; // eax@23 | |
574 int v8; // eax@24 | |
575 int v9; // eax@25 | |
576 //int v10; // eax@27 | |
577 int v11; // eax@32 | |
578 int v12; // eax@33 | |
579 int v13; // eax@34 | |
580 //signed int v14; // eax@43 | |
581 //unsigned int v15; // eax@43 | |
582 //int v16; // eax@43 | |
583 //int v17; // [sp-4h] [bp-D4h]@16 | |
584 char Source[100]; // [sp+Ch] [bp-C4h]@1 | |
585 GUIWindow a1; // [sp+70h] [bp-60h]@1 | |
586 //unsigned int v20; // [sp+C4h] [bp-Ch]@15 | |
587 //int v21; // [sp+C8h] [bp-8h]@14 | |
588 //int v22; // [sp+CCh] [bp-4h]@40 | |
589 | |
590 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("fr_award", TEXTURE_16BIT_PALETTE)); | |
591 sprintfex(pTmpBuf.data(), "%s \f%05d", pGlobalTXT_LocalizationStrings[LOCSTR_AVARDS_FOR], ui_character_header_text_color); | |
592 sprintfex(Source, pGlobalTXT_LocalizationStrings[LOCSTR_S_THE_S], player->pName, pClassNames[player->classType]); | |
593 strcat(pTmpBuf.data(), Source); | |
594 strcat(pTmpBuf.data(), "\f00000"); | |
595 | |
596 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, 18, 0, pTmpBuf.data(), 0, 0, 0); | |
597 result = dword_506528; | |
598 a1.uFrameX = 12; | |
599 a1.uFrameY = 48; | |
600 a1.uFrameWidth = 424; | |
601 a1.uFrameHeight = 290; | |
602 a1.uFrameZ = 435; | |
603 a1.uFrameW = 337; | |
604 if (BtnDown_flag && num_achieved_awards + dword_506528 < num_achieved_awards_2) | |
605 result = dword_506528++ + 1; | |
606 if (BtnUp_flag && result) | |
607 { | |
608 --result; | |
609 dword_506528 = result; | |
610 } | |
611 | |
612 if ( dword_50651C < 0 ) | |
613 { | |
614 result += num_achieved_awards; | |
615 dword_506528 = result; | |
616 if ( (signed int)(num_achieved_awards + result) > num_achieved_awards_2 ) | |
617 { | |
618 result = num_achieved_awards_2 - num_achieved_awards; | |
619 dword_506528 = result; | |
620 } | |
621 } | |
622 else if ( dword_50651C > 0 ) | |
623 { | |
624 result -= num_achieved_awards; | |
625 dword_506528 = result; | |
626 if ( (result & 0x80000000u) != 0 ) | |
627 { | |
628 result = 0; | |
629 dword_506528 = result; | |
630 } | |
631 } | |
632 //LABEL_14: | |
633 BtnDown_flag = 0; | |
634 BtnUp_flag = 0; | |
635 num_achieved_awards = 0; | |
636 dword_50651C = 0; | |
637 | |
638 | |
639 for (uint i = result; i < num_achieved_awards_2; ++i) | |
640 { | |
641 v5 = achieved_awards[i]; | |
642 v6 = (char *)pAwards[v5].pText;//(char *)dword_723E80_award_related[v20 / 4]; | |
643 | |
644 pTmpBuf[0] = 0; | |
645 switch (v5) | |
646 { | |
647 case Award_Arena_PageWins: sprintf(pTmpBuf.data(), v6, pParty->uNumArenaPageWins); break; | |
648 case Award_Arena_SquireWins: sprintf(pTmpBuf.data(), v6, pParty->uNumArenaSquireWins); break; | |
649 case Award_Arena_KnightWins: sprintf(pTmpBuf.data(), v6, pParty->uNumArenaKnightWins); break; | |
650 case Award_Arena_LordWins: sprintf(pTmpBuf.data(), v6, pParty->uNumArenaLordWins); break; | |
651 case Award_ArcomageWins: sprintf(pTmpBuf.data(), v6, pParty->uNumArcomageWins); break; | |
652 case Award_ArcomageLoses: sprintf(pTmpBuf.data(), v6, pParty->uNumArcomageLoses); break; | |
653 case Award_Deaths: sprintf(pTmpBuf.data(), v6, pParty->uNumDeaths); break; | |
654 case Award_BountiesCollected: sprintf(pTmpBuf.data(), v6, pParty->uNumBountiesCollected); break; | |
655 case Award_Fine: sprintf(pTmpBuf.data(), v6, pParty->uFine); break; | |
656 case Award_PrisonTerms: sprintf(pTmpBuf.data(), v6, pParty->uNumPrisonTerms); break; | |
657 } | |
658 | |
659 if (*pTmpBuf.data()) | |
660 v6 = pTmpBuf.data(); | |
661 | |
662 | |
663 a1.DrawText(pFontArrus, 0, 0, ui_character_award_color[pAwards[v5].uPriority % 6], v6, 0, 0, 0); | |
664 a1.uFrameY = pFontArrus->CalcTextHeight(v6, &a1, 0, 0) + a1.uFrameY + 4; | |
665 if (a1.uFrameY > a1.uFrameHeight) | |
666 break; | |
667 | |
668 ++num_achieved_awards; | |
669 } | |
670 } | |
671 | |
672 | |
673 | |
674 | |
675 | |
676 | |
677 //----- (0041A2C1) -------------------------------------------------------- | |
678 unsigned int __fastcall GetSizeInInventorySlots(unsigned int uNumPixels) | |
679 { | |
680 if ( (signed int)uNumPixels < 14 ) | |
681 uNumPixels = 14; | |
682 return ((signed int)(uNumPixels - 14) >> 5) + 1; | |
683 } | |
684 | |
685 | |
686 | |
687 //----- (0041A556) -------------------------------------------------------- | |
688 void draw_leather() | |
689 { | |
690 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->GetTexture(uTextureID_Leather)); | |
691 } | |
692 | |
693 | |
694 //----- (0041ABFD) -------------------------------------------------------- | |
695 void CharacterUI_CharacterScreen_Draw(Player *player) | |
696 { | |
697 pRenderer->ClearZBuffer(0, 479); | |
698 switch (pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0]) | |
699 { | |
700 case WINDOW_CharacterWindow_Stats: // stats | |
701 CharacterUI_ReleaseButtons(); | |
702 sub_419379(); | |
703 CharacterUI_StatsTab_Draw(player); | |
704 pRenderer->DrawTextureIndexed(pCharacterScreen_StatsBtn->uX, | |
705 pCharacterScreen_StatsBtn->uY, | |
706 pIcons_LOD->LoadTexturePtr("ib-cd1-d", TEXTURE_16BIT_PALETTE)); | |
707 break; | |
708 | |
709 case WINDOW_CharacterWindow_Skills: // skills | |
710 if (dword_507CC0_activ_ch != uActiveCharacter) | |
711 { | |
712 CharacterUI_ReleaseButtons(); | |
713 CharacterUI_SkillsTab_CreateButtons(); | |
714 } | |
715 sub_419379(); | |
716 CharacterUI_SkillsTab_Draw(player); | |
717 pRenderer->DrawTextureIndexed(pCharacterScreen_SkillsBtn->uX, | |
718 pCharacterScreen_SkillsBtn->uY, | |
719 pIcons_LOD->LoadTexturePtr("ib-cd2-d", TEXTURE_16BIT_PALETTE)); | |
720 break; | |
721 | |
722 case WINDOW_CharacterWindow_Awards: // awards | |
723 CharacterUI_ReleaseButtons(); | |
724 sub_419379(); | |
725 sub_419220(); | |
726 CharacterUI_AwardsTab_Draw(player); | |
727 pRenderer->DrawTextureIndexed(pCharacterScreen_AwardsBtn->uX, | |
728 pCharacterScreen_AwardsBtn->uY, | |
729 pIcons_LOD->LoadTexturePtr("ib-cd4-d", TEXTURE_16BIT_PALETTE)); | |
730 break; | |
731 | |
732 case WINDOW_CharacterWindow_Inventory: // inventory and other | |
733 CharacterUI_ReleaseButtons(); | |
734 sub_419379(); | |
735 CharacterUI_InventoryTab_Draw(player, false); | |
736 pRenderer->DrawTextureIndexed(pCharacterScreen_InventoryBtn->uX, | |
737 pCharacterScreen_InventoryBtn->uY, | |
738 pIcons_LOD->LoadTexturePtr("ib-cd3-d", TEXTURE_16BIT_PALETTE)); | |
739 break; | |
740 | |
741 default: break; | |
742 } | |
743 | |
744 if (bRingsShownInCharScreen) | |
745 CharacterUI_DrawPaperdollWithRingOverlay(player); | |
746 else | |
747 CharacterUI_DrawPaperdoll(player); | |
748 } | |
749 | |
750 //----- (0043CC7C) -------------------------------------------------------- | |
751 void CharacterUI_DrawPaperdoll(Player *player) | |
752 { | |
753 //signed int pSex; // eax@1 | |
754 unsigned int v6; // ecx@9 | |
755 int v7; // ecx@10 | |
756 unsigned int pMainHandNum4; // eax@14 | |
757 ItemGen *item_MainHand4; // eax@15 | |
758 int v10; // edx@15 | |
759 unsigned int pX_MainHand4; // edi@15 | |
760 unsigned int v14; // ebx@18 | |
761 Texture *v16; // ebp@27 | |
762 double v17; // st7@29 | |
763 int v18; // edi@30 | |
764 char *v19; // eax@30 | |
765 unsigned int pBowNum; // eax@37 | |
766 ItemGen *itemBow; // edi@38 | |
767 int pX_Bow; // ebx@38 | |
768 double v28; // st7@51 | |
769 char *v30; // eax@54 | |
770 unsigned int pCloakNum; // eax@59 | |
771 ItemGen *item_Cloak; // edx@60 | |
772 int v33; // eax@65 | |
773 int v34; // eax@74 | |
774 int v35; // ebx@74 | |
775 LODFile_IconsBitmaps *v38; // ecx@78 | |
776 Texture *v39; // edi@85 | |
777 double v40; // st7@87 | |
778 int v41; // edi@88 | |
779 unsigned int pArmorNum; // eax@93 | |
780 ItemGen *item_Armor; // edx@94 | |
781 int v45; // eax@98 | |
782 int v48; // ebx@106 | |
783 LODFile_IconsBitmaps *v50; // ecx@110 | |
784 Texture *v51; // edi@117 | |
785 double v52; // st7@119 | |
786 int v53; // edi@120 | |
787 char *v55; // eax@122 | |
788 unsigned int pBootNum; // eax@127 | |
789 ItemGen *item_Boot; // edi@128 | |
790 int v59; // ebx@129 | |
791 int v60; // ecx@132 | |
792 Texture *v63; // edi@145 | |
793 double v64; // st7@147 | |
794 int v65; // edi@148 | |
795 char *v66; // eax@148 | |
796 unsigned int pMainHandNum; // edx@155 | |
797 int v70; // edx@156 | |
798 unsigned int pBeltNum; // eax@160 | |
799 ItemGen *item_Belt; // edi@161 | |
800 int v73; // edx@163 | |
801 unsigned int v75; // ebx@170 | |
802 Texture *v77; // edi@181 | |
803 double v78; // st7@183 | |
804 int v79; // edi@184 | |
805 char *v80; // eax@184 | |
806 unsigned int pMainHandNum2; // eax@192 | |
807 int v83; // eax@193 | |
808 int pArmorShoulderNum; // eax@197 | |
809 int v87; // eax@197 | |
810 int v88; // eax@198 | |
811 int v89; // eax@199 | |
812 int v94; // ebx@214 | |
813 int v95; // eax@214 | |
814 char *v96; // edi@226 | |
815 double v97; // st7@228 | |
816 int v98; // edi@229 | |
817 char *v99; // eax@229 | |
818 int pX_ArmorShoulder; // eax@237 | |
819 int pY_ArmorShoulder; // ecx@237 | |
820 int v106; // edx@238 | |
821 int v107; // edx@239 | |
822 int v108; // edx@240papredoll_flying_feet | |
823 int v109; // edi@250 | |
824 char *v110; // edx@250 | |
825 unsigned int pCloakCollarNum; // eax@259 | |
826 ItemGen *item_CloakCollar; // eax@260 | |
827 int v114; // eax@265 | |
828 int v116; // ebx@274 | |
829 double v118; // st7@286 | |
830 int v119; // edi@287 | |
831 char *v120; // eax@287 | |
832 unsigned int v122; // edi@295 | |
833 int pHelmNum; // ebx@297 | |
834 ItemGen *item_Helm; // edi@298 | |
835 int v125; // ecx@303 | |
836 unsigned int v127; // ebx@314 | |
837 Texture *v129; // edi@325 | |
838 double v130; // st7@327 | |
839 int v131; // edi@328 | |
840 char *v132; // eax@328 | |
841 unsigned int pMainHandNum3; // eax@335 | |
842 ItemGen *item_MainHand3; // eax@336 | |
843 unsigned int v138; // ebx@339 | |
844 Texture *v140; // edi@348 | |
845 double v141; // st7@350 | |
846 int v142; // edi@351 | |
847 char *v143; // eax@351 | |
848 unsigned int pShieldNum; // eax@358 | |
849 ItemGen *item_Shield; // eax@359 | |
850 int v149; // edx@359 | |
851 int pX_Shield; // ebx@362 | |
852 int v151; // ecx@363 | |
853 int v152; // ecx@364 | |
854 unsigned int v153; // eax@370 | |
855 Texture *v157; // ebp@381 | |
856 double v158; // st7@383 | |
857 char *v160; // eax@386 | |
858 unsigned int pMainHandNum5; // eax@393 | |
859 ItemGen *item_MainHand5; // eax@394 | |
860 char *v166; // [sp-8h] [bp-54h]@16 | |
861 const char *v167; // [sp-8h] [bp-54h]@23 | |
862 const char *v168; // [sp-8h] [bp-54h]@43 | |
863 const char *v169; // [sp-8h] [bp-54h]@79 | |
864 const char *v170; // [sp-8h] [bp-54h]@111 | |
865 const char *v171; // [sp-8h] [bp-54h]@141 | |
866 const char *v172; // [sp-8h] [bp-54h]@177 | |
867 const char *v173; // [sp-8h] [bp-54h]@222 | |
868 const char *v178; // [sp-8h] [bp-54h]@242 | |
869 const char *v179; // [sp-8h] [bp-54h]@280 | |
870 const char *v180; // [sp-8h] [bp-54h]@321 | |
871 char *v181; // [sp-8h] [bp-54h]@337 | |
872 const char *v182; // [sp-8h] [bp-54h]@344 | |
873 const char *v183; // [sp-8h] [bp-54h]@375 | |
874 signed int v186; // [sp-4h] [bp-50h]@202 | |
875 signed int v191; // [sp-4h] [bp-50h]@266 | |
876 signed int v192; // [sp-4h] [bp-50h]@304 | |
877 int pY_MainHand4; // [sp+10h] [bp-3Ch]@15 | |
878 int pY_Bow; // [sp+10h] [bp-3Ch]@38 | |
879 unsigned int pY_Cloak; // [sp+10h] [bp-3Ch]@74 | |
880 unsigned int pY_Armor; // [sp+10h] [bp-3Ch]@106 | |
881 int pY_Boot; // [sp+10h] [bp-3Ch]@129 | |
882 int pY_Belt; // [sp+10h] [bp-3Ch]@168 | |
883 unsigned int pY_shoulder; // [sp+10h] [bp-3Ch]@216 | |
884 unsigned int pY_CloakCollar; // [sp+10h] [bp-3Ch]@274 | |
885 int pY_Helm; // [sp+10h] [bp-3Ch]@312 | |
886 int pY_MainHand3; // [sp+10h] [bp-3Ch]@336 | |
887 int pY_Shield; // [sp+10h] [bp-3Ch]@362 | |
888 Texture *a2b; // [sp+14h] [bp-38h]@49 | |
889 int pX_Cloak; // [sp+14h] [bp-38h]@74 | |
890 int pX_Armor; // [sp+14h] [bp-38h]@106 | |
891 int pX_Boot; // [sp+14h] [bp-38h]@129 | |
892 int pX_Belt; // [sp+14h] [bp-38h]@168 | |
893 int pX_shoulder; // [sp+14h] [bp-38h]@214 | |
894 int pX_CloakCollar; // [sp+14h] [bp-38h]@274 | |
895 Texture *a2i; // [sp+14h] [bp-38h]@284 | |
896 int pX_Helm; // [sp+14h] [bp-38h]@312 | |
897 int pX_MainHand3; // [sp+14h] [bp-38h]@336 | |
898 int pBodyComplection; // [sp+24h] [bp-28h]@6 | |
899 unsigned int pBowTextureNum; // [sp+2Ch] [bp-20h]@38 | |
900 signed int v245; // [sp+34h] [bp-18h]@361 | |
901 signed int IsDwarf; // [sp+40h] [bp-Ch]@4 | |
902 | |
903 pIcons_LOD->LoadTexture("sptext01", TEXTURE_16BIT_PALETTE); | |
904 if (player->GetRace() == CHARACTER_RACE_DWARF) | |
905 { | |
906 IsDwarf = 1; | |
907 pBodyComplection = player->GetSexByVoice() == SEX_MALE ? 2 : 3; | |
908 } | |
909 else | |
910 { | |
911 IsDwarf = 0; | |
912 pBodyComplection = player->GetSexByVoice() == SEX_MALE ? 0 : 1; | |
913 } | |
914 | |
915 int uPlayerID = 0; | |
916 for (uint i = 0; i < 4; ++i) | |
917 if (pPlayers[i + 1] == player) | |
918 { | |
919 uPlayerID = i + 1; | |
920 break; | |
921 } | |
922 | |
923 pRenderer->ResetTextureClipRect(); | |
924 pRenderer->DrawTextureIndexed(467, 0, pIcons_LOD->GetTexture(uTextureID_BACKDOLL));//Ïîäëîæêà | |
925 if ( IsPlayerWearingWatersuit[uPlayerID] )//àêâàëàíã | |
926 { | |
927 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1])); | |
928 if ( !bRingsShownInCharScreen ) | |
929 pRenderer->DrawMaskToZBuffer(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]), player->pEquipment.uArmor); | |
930 v6 = player->pEquipment.uMainHand; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
931 if ( !v6 || (v7 = *(int *)&pPlayers[uPlayerID]->pInventoryItemList[v6-1], pItemsTable->pItems[v7].uEquipType != 1) |
1298 | 932 && (pItemsTable->pItems[v7].uSkillType != 4 || pPlayers[uPlayerID]->pEquipment.uShield) ) |
933 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1], | |
934 pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1])); | |
935 pMainHandNum4 = pPlayers[uPlayerID]->pEquipment.uMainHand; | |
936 if ( pMainHandNum4 ) | |
937 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
938 item_MainHand4 = &pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum4 - 1]; |
1298 | 939 pX_MainHand4 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item_MainHand4->uItemID].uEquipX; |
940 pY_MainHand4 = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item_MainHand4->uItemID].uEquipY; | |
941 if ( item_MainHand4->uItemID == 64 ) //blaster | |
942 v166 = "item64v1"; | |
943 else | |
944 v166 = pItemsTable->pItems[item_MainHand4->uItemID].pIconName; | |
945 v14 = pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE); | |
946 if ( !( item_MainHand4->uAttributes & 0xF0 ) ) | |
947 { | |
948 v18 = v14 + 1; | |
949 v19 = (char *)pIcons_LOD->GetTexture(v14); | |
950 if ( item_MainHand4->uAttributes & 2 ) | |
951 pRenderer->DrawTransparentRedShade(pX_MainHand4, pY_MainHand4, (Texture *)v19); | |
952 else | |
953 { | |
954 if ( item_MainHand4->uAttributes & 1 ) | |
955 pRenderer->DrawTextureTransparent(pX_MainHand4, pY_MainHand4, (Texture *)v19); | |
956 else | |
957 pRenderer->DrawTransparentGreenShade(pX_MainHand4, pY_MainHand4, (Texture *)v19); | |
958 } | |
959 } | |
960 if ( item_MainHand4->uAttributes & 0xF0 ) | |
961 { | |
962 if ( ( item_MainHand4->uAttributes & 0xF0) == 16 ) | |
963 v167 = "sptext01"; | |
964 if ( ( item_MainHand4->uAttributes & 0xF0) == 32 ) | |
965 v167 = "sp28a"; | |
966 if ( (item_MainHand4->uAttributes & 0xF0) == 64 ) | |
967 v167 = "sp30a"; | |
968 if ( (item_MainHand4->uAttributes & 0xF0) == 128 ) | |
969 v167 = "sp91a"; | |
970 v16 = pIcons_LOD->LoadTexturePtr(v167, TEXTURE_16BIT_PALETTE); | |
971 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
972 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
973 { | |
974 _50C9A8_item_enchantment_timer = 0; | |
975 item_MainHand4->uAttributes &= 0xFFFFFF0Fu; | |
976 ptr_50C9A4 = 0; | |
977 } | |
978 v17 = (double)GetTickCount() * 0.1; | |
979 pRenderer->_4A63E6(pX_MainHand4, pY_MainHand4, pIcons_LOD->GetTexture(v14), v16, (signed __int64)v17, 0, 255); | |
980 } | |
981 if ( !bRingsShownInCharScreen ) | |
982 pRenderer->DrawMaskToZBuffer(pX_MainHand4, pY_MainHand4, (Texture *)v19, pMainHandNum4); | |
983 } | |
984 } | |
985 else// áåç àêâàëàíãà | |
986 { | |
987 pBowNum = pPlayers[uPlayerID]->pEquipment.uBow; //ñíà÷àëà ðèñóåòñÿ ëóê | |
988 if ( pBowNum ) | |
989 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
990 itemBow = &pPlayers[uPlayerID]->pInventoryItemList[pBowNum - 1]; |
1298 | 991 pX_Bow = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][2][0] - pItemsTable->pItems[itemBow->uItemID].uEquipX; |
992 pY_Bow = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][2][1] - pItemsTable->pItems[itemBow->uItemID].uEquipY; | |
993 pBowTextureNum = pIcons_LOD->LoadTexture(pItemsTable->pItems[itemBow->uItemID].pIconName, TEXTURE_16BIT_PALETTE); | |
994 if ( !(itemBow->uAttributes & 0xF0) )// åñëè íå ïðèìåí¸í çàêë | |
995 { | |
996 if ( itemBow->uAttributes & 2 ) | |
997 pRenderer->DrawTransparentRedShade(pX_Bow, pY_Bow, pIcons_LOD->GetTexture(pBowTextureNum)); | |
998 else | |
999 { | |
1000 v30 = (char *)pIcons_LOD->GetTexture(pBowTextureNum); | |
1001 if ( !(itemBow->uAttributes & 1) )//íå îïîçíàííûé ëóê çåë¸íûé | |
1002 pRenderer->DrawTransparentGreenShade(pX_Bow, pY_Bow, (Texture *)v30); | |
1003 else // îïîçíàííûé ëóê | |
1004 pRenderer->DrawTextureTransparent(pX_Bow, pY_Bow, (Texture *)v30); | |
1005 } | |
1006 } | |
1007 else | |
1008 { | |
1009 if ( (itemBow->uAttributes & 0xF0) == 16 ) | |
1010 v168 = "sptext01"; | |
1011 if ( (itemBow->uAttributes & 0xF0) == 32 ) | |
1012 v168 = "sp28a"; | |
1013 if ( (itemBow->uAttributes & 0xF0) == 64 ) | |
1014 v168 = "sp30a"; | |
1015 if ( (itemBow->uAttributes & 0xF0) == 128 ) | |
1016 v168 = "sp91a"; | |
1017 a2b = pIcons_LOD->LoadTexturePtr(v168, TEXTURE_16BIT_PALETTE); | |
1018 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1019 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1020 { | |
1021 _50C9A8_item_enchantment_timer = 0; | |
1022 itemBow->uAttributes &= 0xFFFFFF0Fu; | |
1023 ptr_50C9A4 = 0; | |
1024 } | |
1025 v28 = (double)GetTickCount() * 0.1; | |
1026 pRenderer->_4A63E6(pX_Bow, pY_Bow, pIcons_LOD->GetTexture(pBowTextureNum), a2b, (signed __int64)v28, 0, 255); | |
1027 } | |
1028 if ( !bRingsShownInCharScreen ) | |
1029 pRenderer->DrawMaskToZBuffer(pX_Bow, pY_Bow, pIcons_LOD->GetTexture(pBowTextureNum), pBowNum); | |
1030 } | |
1031 pCloakNum = pPlayers[uPlayerID]->pEquipment.uCloak;// ïîòîì ïëàù | |
1032 if ( pCloakNum ) | |
1033 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1034 item_Cloak = &pPlayers[uPlayerID]->pInventoryItemList[pCloakNum - 1]; |
1298 | 1035 switch ( item_Cloak->uItemID ) |
1036 { | |
1037 case ITEM_RELIC_TWILIGHT: | |
1038 v33 = 5; | |
1039 break; | |
1040 case ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP: | |
1041 v33 = 6; | |
1042 break; | |
1043 case ITEM_RARE_SUN_CLOAK: | |
1044 v33 = 7; | |
1045 break; | |
1046 case ITEM_RARE_MOON_CLOAK: | |
1047 v33 = 8; | |
1048 break; | |
1049 case ITEM_RARE_VAMPIRES_CAPE: | |
1050 v33 = 9; | |
1051 break; | |
1052 default: | |
1053 v33 = item_Cloak->uItemID - 105; | |
1054 break; | |
1055 } | |
1056 if ( v33 >= 0 && v33 < 10 ) | |
1057 { | |
1058 v35 = paperdoll_cloak_texture[pBodyComplection][v33];//Texture_Cloak | |
1059 pX_Cloak = pPaperdoll_BodyX + paperdoll_Cloak[pBodyComplection][v33][0]; | |
1060 pY_Cloak = pPaperdoll_BodyY + paperdoll_Cloak[pBodyComplection][v33][1]; | |
1061 if ( !(item_Cloak->uAttributes & 0xF0) ) | |
1062 { | |
1063 v41 = v35 + 1; | |
1064 if ( item_Cloak->uAttributes & 2 ) | |
1065 pRenderer->DrawTransparentRedShade(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35)); | |
1066 else | |
1067 pRenderer->DrawTextureTransparent(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35)); | |
1068 } | |
1069 else | |
1070 { | |
1071 if ( (item_Cloak->uAttributes & 0xF0) == 16 ) | |
1072 v169 = "sptext01"; | |
1073 if ( (item_Cloak->uAttributes & 0xF0) == 32 ) | |
1074 v169 = "sp28a"; | |
1075 if ( (item_Cloak->uAttributes & 0xF0) != 64 ) | |
1076 v169 = "sp30a"; | |
1077 if ( (item_Cloak->uAttributes & 0xF0) == 128 ) | |
1078 v169 = "sp91a"; | |
1079 v39 = pIcons_LOD->LoadTexturePtr(v169, TEXTURE_16BIT_PALETTE); | |
1080 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1081 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1082 { | |
1083 _50C9A8_item_enchantment_timer = 0; | |
1084 item_Cloak->uAttributes &= 0xFFFFFF0Fu; | |
1085 ptr_50C9A4 = 0; | |
1086 } | |
1087 v40 = (double)GetTickCount() * 0.1; | |
1088 pRenderer->_4A63E6(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35), v39, (signed __int64)v40, 0, 255); | |
1089 } | |
1090 if ( !bRingsShownInCharScreen ) | |
1091 pRenderer->DrawMaskToZBuffer(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35), pCloakNum); | |
1092 } | |
1093 } | |
1094 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY,//ðèñóåòñÿ êóêëà | |
1095 pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1])); | |
1096 pArmorNum = pPlayers[uPlayerID]->pEquipment.uArmor;// ïîòîì áðîíÿ | |
1097 if ( pArmorNum ) | |
1098 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1099 item_Armor = &pPlayers[uPlayerID]->pInventoryItemList[pArmorNum - 1]; |
1298 | 1100 switch ( item_Armor->uItemID ) |
1101 { | |
1102 case 504: | |
1103 v45 = 15; | |
1104 break; | |
1105 case ITEM_ARTIFACT_YORUBA: | |
1106 v45 = 14; | |
1107 break; | |
1108 case ITEM_RELIC_HARECS_LEATHER: | |
1109 v45 = 13; | |
1110 break; | |
1111 case ITEM_ELVEN_CHAINMAIL: | |
1112 v45 = 16; | |
1113 break; | |
1114 default: | |
1115 v45 = item_Armor->uItemID - 66; | |
1116 break; | |
1117 } | |
1118 if ( v45 >= 0 && v45 < 17 ) | |
1119 { | |
1120 pX_Armor = pPaperdoll_BodyX + paperdoll_Armor[pBodyComplection][v45][0]; | |
1121 pY_Armor = pPaperdoll_BodyY + paperdoll_Armor[pBodyComplection][v45][1]; | |
1122 v48 = paperdoll_armor_texture[pBodyComplection][v45][0]; | |
1123 if ( !(item_Armor->uAttributes & 0xF0) ) | |
1124 { | |
1125 v53 = v48 + 1; | |
1126 if ( item_Armor->uAttributes & 2 ) | |
1127 pRenderer->DrawTransparentRedShade(pX_Armor, pY_Armor, pIcons_LOD->GetTexture(v48)); | |
1128 else | |
1129 { | |
1130 v55 = (char *)&pIcons_LOD->pTextures[v48]; | |
1131 if ( !(item_Armor->uAttributes & 1) ) | |
1132 pRenderer->DrawTransparentGreenShade(pX_Armor, pY_Armor, (Texture *)v55); | |
1133 else | |
1134 pRenderer->DrawTextureTransparent(pX_Armor, pY_Armor, (Texture *)v55); | |
1135 } | |
1136 } | |
1137 else | |
1138 { | |
1139 if ( (item_Armor->uAttributes & 0xF0) == 16 ) | |
1140 v170 = "sptext01"; | |
1141 if ( (item_Armor->uAttributes & 0xF0) == 32 ) | |
1142 v170 = "sp28a"; | |
1143 if ( (item_Armor->uAttributes & 0xF0) == 64 ) | |
1144 v170 = "sp30a"; | |
1145 if ( (item_Armor->uAttributes & 0xF0) == 128 ) | |
1146 v170 = "sp91a"; | |
1147 v51 = pIcons_LOD->LoadTexturePtr(v170, TEXTURE_16BIT_PALETTE); | |
1148 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1149 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1150 { | |
1151 _50C9A8_item_enchantment_timer = 0; | |
1152 item_Armor->uAttributes &= 0xFFFFFF0Fu; | |
1153 ptr_50C9A4 = 0; | |
1154 } | |
1155 v52 = (double)GetTickCount() * 0.1; | |
1156 pRenderer->_4A63E6(pX_Armor, pY_Armor, pIcons_LOD->GetTexture(v48), v51, (signed __int64)v52, 0, 255); | |
1157 } | |
1158 if ( pPlayers[uPlayerID]->pEquipment.uMainHand //äàëåå ïëå÷è áðîíè | |
1159 && (pPlayers[uPlayerID]->GetEquippedItemEquipType(EQUIP_MAIN_HAND) == EQUIP_MAIN_HAND || | |
1160 pPlayers[uPlayerID]->GetEquippedItemSkillType(EQUIP_MAIN_HAND) == EQUIP_SHIELD && | |
1161 !pPlayers[uPlayerID]->pEquipment.uShield) ) | |
1162 { | |
1163 v94 = paperdoll_armor_texture[pBodyComplection][v45][2]; | |
1164 if ( v94 == pIcons_LOD->FindTextureByName("pending") ) | |
1165 { | |
1166 v94 = paperdoll_armor_texture[pBodyComplection][v45][1]; | |
1167 pX_shoulder = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][v45][0]; | |
1168 pY_shoulder = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][v45][1]; | |
1169 } | |
1170 else | |
1171 { | |
1172 pX_shoulder = pPaperdoll_BodyX + dword_4E5270[v45][0]; | |
1173 pY_shoulder = pPaperdoll_BodyY + dword_4E5270[v45][1]; | |
1174 } | |
1175 if ( !(item_Armor->uAttributes & 0xF0) ) | |
1176 { | |
1177 v98 = v94 + 1; | |
1178 v99 = (char *)pIcons_LOD->GetTexture(v94); | |
1179 if ( item_Armor->uAttributes & 2 ) | |
1180 pRenderer->DrawTransparentRedShade(pX_shoulder, pY_shoulder, (Texture *)v99); | |
1181 else | |
1182 { | |
1183 if ( item_Armor->uAttributes & 1 ) | |
1184 pRenderer->DrawTextureTransparent(pX_shoulder, pY_shoulder, (Texture *)v99); | |
1185 else | |
1186 pRenderer->DrawTransparentGreenShade(pX_shoulder, pY_shoulder, (Texture *)v99); | |
1187 } | |
1188 } | |
1189 else | |
1190 { | |
1191 if ( v94 != pIcons_LOD->FindTextureByName("pending") ) | |
1192 { | |
1193 if ( item_Armor->uAttributes & 0xF0 ) | |
1194 { | |
1195 if ( (item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED ) | |
1196 v173 = "sptext01"; | |
1197 if ( (item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE ) | |
1198 v173 = "sp28a"; | |
1199 if ( ( item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN ) | |
1200 v173 = "sp30a"; | |
1201 if ( (item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE ) | |
1202 v173 = "sp91a"; | |
1203 v96 = (char *)pIcons_LOD->LoadTexturePtr(v173, TEXTURE_16BIT_PALETTE); | |
1204 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1205 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1206 { | |
1207 _50C9A8_item_enchantment_timer = 0; | |
1208 item_Armor->uAttributes &= 0xFFFFFF0Fu; | |
1209 ptr_50C9A4 = 0; | |
1210 } | |
1211 v97 = (double)GetTickCount(); | |
1212 pRenderer->_4A63E6(pX_shoulder, pY_shoulder, pIcons_LOD->GetTexture(v94), (Texture *)v96, (signed __int64)(v97 * 0.1), 0, 255); | |
1213 } | |
1214 } | |
1215 } | |
1216 } | |
1217 else | |
1218 { | |
1219 v94 = paperdoll_armor_texture[pBodyComplection][v45][1]; | |
1220 if ( v94 != pIcons_LOD->FindTextureByName("pending") ) | |
1221 { | |
1222 pX_ArmorShoulder = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][v45][0]; | |
1223 pY_ArmorShoulder = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][v45][1]; | |
1224 if ( !(item_Armor->uAttributes & 0xF0) ) | |
1225 { | |
1226 v109 = v94 + 1; | |
1227 v110 = (char *)pIcons_LOD->GetTexture(v94); | |
1228 if ( item_Armor->uAttributes & 2 ) | |
1229 pRenderer->DrawTransparentRedShade(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)v110); | |
1230 else | |
1231 { | |
1232 if ( item_Armor->uAttributes & 1 ) | |
1233 pRenderer->DrawTextureTransparent(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)v110); | |
1234 else | |
1235 pRenderer->DrawTransparentGreenShade(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)v110); | |
1236 } | |
1237 } | |
1238 else | |
1239 { | |
1240 if ( (item_Armor->uAttributes & 0xF0) == 16 ) | |
1241 v178 = "sptext01"; | |
1242 if ( (item_Armor->uAttributes & 0xF0) == 32 ) | |
1243 v178 = "sp28a"; | |
1244 if ( (item_Armor->uAttributes & 0xF0) == 64 ) | |
1245 v178 = "sp30a"; | |
1246 if ( (item_Armor->uAttributes & 0xF0) == 128 ) | |
1247 v178 = "sp91a"; | |
1248 v96 = (char *)pIcons_LOD->LoadTexturePtr(v178, TEXTURE_16BIT_PALETTE); | |
1249 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1250 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1251 { | |
1252 _50C9A8_item_enchantment_timer = 0; | |
1253 item_Armor->uAttributes &= 0xFFFFFF0Fu; | |
1254 ptr_50C9A4 = 0; | |
1255 } | |
1256 v97 = (double)GetTickCount(); | |
1257 pRenderer->_4A63E6(pX_ArmorShoulder, pY_ArmorShoulder, pIcons_LOD->GetTexture(v94), (Texture *)v96, (signed __int64)(v97 * 0.1), 0, 255); | |
1258 } | |
1259 } | |
1260 } | |
1261 if ( !bRingsShownInCharScreen ) | |
1262 pRenderer->DrawMaskToZBuffer(pX_Armor, pY_Armor, (Texture *)v55, pArmorNum); | |
1263 } | |
1264 } | |
1265 pBootNum = pPlayers[uPlayerID]->pEquipment.uBoot;//äàëåå îáóâü | |
1266 if ( pBootNum ) | |
1267 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1268 item_Boot = &pPlayers[uPlayerID]->pInventoryItemList[pBootNum - 1]; |
1298 | 1269 switch ( item_Boot->uItemID ) |
1270 { | |
1271 case 529: | |
1272 v60 = 5; | |
1273 v59 = papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace]; | |
1274 break; | |
1275 case 512: | |
1276 v60 = 6; | |
1277 v59 = paperdoll_boots_texture[pBodyComplection][5]; | |
1278 break; | |
1279 default: | |
1280 v60 = item_Boot->uItemID - 115; | |
1281 v59 = paperdoll_boots_texture[pBodyComplection][v60]; | |
1282 break; | |
1283 } | |
1284 if ( v60 >= 0 && v60 < 7 ) | |
1285 { | |
1286 pX_Boot = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][v60][0]; | |
1287 pY_Boot = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][v60][1]; | |
1288 if ( !(item_Boot->uAttributes & 0xF0) ) | |
1289 { | |
1290 v65 = v59 + 1; | |
1291 v66 = (char *)pIcons_LOD->GetTexture(v59); | |
1292 if ( item_Boot->uAttributes & 2 ) | |
1293 pRenderer->DrawTransparentRedShade(pX_Boot, pY_Boot, (Texture *)v66); | |
1294 else | |
1295 { | |
1296 if ( item_Boot->uAttributes & 1 ) | |
1297 pRenderer->DrawTextureTransparent(pX_Boot, pY_Boot, (Texture *)v66); | |
1298 else | |
1299 pRenderer->DrawTransparentGreenShade(pX_Boot, pY_Boot, (Texture *)v66); | |
1300 } | |
1301 } | |
1302 else | |
1303 { | |
1304 if ( (item_Boot->uAttributes & 0xF0) == 16 ) | |
1305 v171 = "sptext01"; | |
1306 if ( (item_Boot->uAttributes & 0xF0) == 32 ) | |
1307 v171 = "sp28a"; | |
1308 if ( (item_Boot->uAttributes & 0xF0) == 64 ) | |
1309 v171 = "sp30a"; | |
1310 if ( (item_Boot->uAttributes & 0xF0) == 128 ) | |
1311 v171 = "sp91a"; | |
1312 v63 = pIcons_LOD->LoadTexturePtr(v171, TEXTURE_16BIT_PALETTE); | |
1313 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1314 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1315 { | |
1316 _50C9A8_item_enchantment_timer = 0; | |
1317 item_Boot->uAttributes &= 0xFFFFFF0Fu; | |
1318 ptr_50C9A4 = 0; | |
1319 } | |
1320 v64 = (double)GetTickCount() * 0.1; | |
1321 pRenderer->_4A63E6(pX_Boot, pY_Boot, pIcons_LOD->GetTexture(v59), v63, (signed __int64)v64, 0, 255); | |
1322 } | |
1323 if ( !bRingsShownInCharScreen ) | |
1324 pRenderer->DrawMaskToZBuffer(pX_Boot, pY_Boot, (Texture *)v66, pBootNum); | |
1325 } | |
1326 } | |
1327 pMainHandNum = pPlayers[uPlayerID]->pEquipment.uMainHand; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1328 if ( !pMainHandNum || (v70 = *(int *)&pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum -1], pItemsTable->pItems[v70].uEquipType != 1) |
1298 | 1329 && (pItemsTable->pItems[v70].uSkillType != 4 || pPlayers[uPlayerID]->pEquipment.uShield) ) |
1330 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0], | |
1331 pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1], | |
1332 pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1])); | |
1333 pBeltNum = pPlayers[uPlayerID]->pEquipment.uBelt;// äàëåå ïîÿñ | |
1334 if ( pBeltNum ) | |
1335 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1336 item_Belt = &pPlayers[uPlayerID]->pInventoryItemList[pBeltNum - 1]; |
1298 | 1337 switch ( item_Belt->uItemID ) |
1338 { | |
1339 case ITEM_RILIC_TITANS_BELT: | |
1340 v73 = 5; | |
1341 break; | |
1342 case ITEM_ARTIFACT_HEROS_BELT: | |
1343 v73 = 6; | |
1344 break; | |
1345 default: | |
1346 v73 = item_Belt->uItemID - 100; | |
1347 break; | |
1348 } | |
1349 if ( v73 >= 0 && v73 < 7 ) | |
1350 { | |
1351 pX_Belt = pPaperdoll_BodyX + paperdoll_Belt[pBodyComplection][v73][0]; | |
1352 pY_Belt = pPaperdoll_BodyY + paperdoll_Belt[pBodyComplection][v73][1]; | |
1353 if ( IsDwarf != 1 || v73 == 5 ) | |
1354 v75 = paperdoll_belt_texture[pBodyComplection][v73]; | |
1355 else | |
1356 v75 = paperdoll_belt_texture[pBodyComplection - 2][v73]; | |
1357 if ( !(item_Belt->uAttributes & 0xF0) ) | |
1358 { | |
1359 v79 = v75 + 1; | |
1360 v80 = (char *)pIcons_LOD->GetTexture(v75); | |
1361 if ( item_Belt->uAttributes & 2 ) | |
1362 pRenderer->DrawTransparentRedShade(pX_Belt, pY_Belt, (Texture *)v80); | |
1363 else | |
1364 { | |
1365 if ( item_Belt->uAttributes & 1 ) | |
1366 pRenderer->DrawTextureTransparent(pX_Belt, pY_Belt, (Texture *)v80); | |
1367 else | |
1368 pRenderer->DrawTransparentGreenShade(pX_Belt, pY_Belt, (Texture *)v80); | |
1369 } | |
1370 if ( !bRingsShownInCharScreen ) | |
1371 pRenderer->DrawMaskToZBuffer(pX_Belt, pY_Belt, (Texture *)v80, pBeltNum); | |
1372 } | |
1373 else | |
1374 { | |
1375 if ( (item_Belt->uAttributes & 0xF0) == 16 ) | |
1376 v172 = "sptext01"; | |
1377 if ( (item_Belt->uAttributes & 0xF0) == 32 ) | |
1378 v172 = "sp28a"; | |
1379 if ( (item_Belt->uAttributes & 0xF0) == 64 ) | |
1380 v172 = "sp30a"; | |
1381 if ( (item_Belt->uAttributes & 0xF0) == 128 ) | |
1382 v172 = "sp91a"; | |
1383 v77 = pIcons_LOD->LoadTexturePtr(v172, TEXTURE_16BIT_PALETTE); | |
1384 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1385 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1386 { | |
1387 _50C9A8_item_enchantment_timer = 0; | |
1388 item_Belt->uAttributes &= 0xFFFFFF0Fu; | |
1389 ptr_50C9A4 = 0; | |
1390 } | |
1391 v78 = (double)GetTickCount() * 0.1; | |
1392 pRenderer->_4A63E6(pX_Belt, pY_Belt, pIcons_LOD->GetTexture(v75), v77, (signed __int64)v78, 0, 255); | |
1393 } | |
1394 } | |
1395 } | |
1396 pMainHandNum2 = pPlayers[uPlayerID]->pEquipment.uMainHand; | |
1397 if ( pMainHandNum2 ) | |
1398 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1399 v83 = pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum2 - 1].uItemID; |
1298 | 1400 if ( pItemsTable->pItems[v83].uEquipType == 1 |
1401 || pItemsTable->pItems[v83].uSkillType == PLAYER_SKILL_SPEAR && !pPlayers[uPlayerID]->pEquipment.uShield ) | |
1402 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0], | |
1403 pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], | |
1404 pIcons_LOD->GetTexture(papredoll_dlaus[uPlayerID - 1])); | |
1405 } | |
1406 pCloakCollarNum = pPlayers[uPlayerID]->pEquipment.uCloak;//äàëåå âîðîòíèê ïëàùà | |
1407 if ( pCloakCollarNum ) | |
1408 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1409 item_CloakCollar = &pPlayers[uPlayerID]->pInventoryItemList[pCloakCollarNum - 1]; |
1298 | 1410 switch ( item_CloakCollar->uItemID ) |
1411 { | |
1412 case 525: | |
1413 v114 = 5; | |
1414 break; | |
1415 case 530: | |
1416 v114 = 6; | |
1417 break; | |
1418 case 547: | |
1419 v114 = 7; | |
1420 break; | |
1421 case 548: | |
1422 v114 = 8; | |
1423 break; | |
1424 case 550: | |
1425 v114 = 9; | |
1426 break; | |
1427 default: | |
1428 v114 = item_CloakCollar->uItemID - 105; | |
1429 } | |
1430 if ( v114 >= 0 && v114 < 10 ) | |
1431 { | |
1432 v116 = paperdoll_cloak_collar_texture[pBodyComplection][v114]; | |
1433 pX_CloakCollar = pPaperdoll_BodyX + paperdoll_CloakCollar[pBodyComplection][v114][0]; | |
1434 pY_CloakCollar = pPaperdoll_BodyY + paperdoll_CloakCollar[pBodyComplection][v114][1]; | |
1435 if ( v116 != pIcons_LOD->FindTextureByName("pending") ) | |
1436 { | |
1437 if ( !(item_CloakCollar->uAttributes & 0xF0) ) | |
1438 { | |
1439 v119 = v116 + 1; | |
1440 v120 = (char *)pIcons_LOD->GetTexture(v116); | |
1441 if ( item_CloakCollar->uAttributes & 2 ) | |
1442 pRenderer->DrawTransparentRedShade(pX_CloakCollar, pY_CloakCollar, (Texture *)v120); | |
1443 else | |
1444 pRenderer->DrawTextureTransparent(pX_CloakCollar, pY_CloakCollar, (Texture *)v120); | |
1445 if ( !bRingsShownInCharScreen ) | |
1446 pRenderer->DrawMaskToZBuffer(pX_CloakCollar, pY_CloakCollar, (Texture *)v120, pCloakCollarNum); | |
1447 } | |
1448 else | |
1449 { | |
1450 if ( (item_CloakCollar->uAttributes & 0xF0) == 16 ) | |
1451 v179 = "sptext01"; | |
1452 if ( (item_CloakCollar->uAttributes & 0xF0) == 32 ) | |
1453 v179 = "sp28a"; | |
1454 if ( (item_CloakCollar->uAttributes & 0xF0) == 64 ) | |
1455 v179 = "sp30a"; | |
1456 if ( (item_CloakCollar->uAttributes & 0xF0) == 128 ) | |
1457 v179 = "sp91a"; | |
1458 a2i = pIcons_LOD->LoadTexturePtr(v179, TEXTURE_16BIT_PALETTE); | |
1459 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1460 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1461 { | |
1462 _50C9A8_item_enchantment_timer = 0; | |
1463 item_CloakCollar->uAttributes &= 0xFFFFFF0Fu; | |
1464 ptr_50C9A4 = 0; | |
1465 } | |
1466 v118 = (double)GetTickCount() * 0.1; | |
1467 pRenderer->_4A63E6(pX_CloakCollar, pY_CloakCollar, pIcons_LOD->GetTexture(v116), a2i, (signed __int64)v118, 0, 255); | |
1468 } | |
1469 } | |
1470 } | |
1471 } | |
1472 if ( pPlayers[uPlayerID]->uCurrentFace == 12 || pPlayers[uPlayerID]->uCurrentFace == 13 ) | |
1473 { | |
1474 v122 = papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace]; | |
1475 if ( v122 != pIcons_LOD->FindTextureByName("Pending") ) | |
1476 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_Beards[2 * pPlayers[uPlayerID]->uCurrentFace - 24], | |
1477 pPaperdoll_BodyY + pPaperdoll_Beards[2 * pPlayers[uPlayerID]->uCurrentFace - 23], | |
1478 pIcons_LOD->GetTexture(v122)); | |
1479 } | |
1480 pHelmNum = pPlayers[uPlayerID]->pEquipment.uHelm;//äàëåå øëåì | |
1481 if ( pHelmNum ) | |
1482 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1483 item_Helm = &pPlayers[uPlayerID]->pInventoryItemList[pHelmNum-1]; |
1298 | 1484 switch ( item_Helm->uItemID ) |
1485 { | |
1486 case 521: | |
1487 v125 = 11; | |
1488 break; | |
1489 case 522: | |
1490 v125 = 12; | |
1491 break; | |
1492 case 523: | |
1493 v125 = 13; | |
1494 break; | |
1495 case 532: | |
1496 v125 = 14; | |
1497 break; | |
1498 case 544: | |
1499 v125 = 15; | |
1500 break; | |
1501 default: | |
1502 v125 = item_Helm->uItemID - 89; | |
1503 } | |
1504 if ( v125 >= 0 && v125 < 16 ) | |
1505 { | |
1506 pX_Helm = pPaperdoll_BodyX + paperdoll_Helm[pBodyComplection][v125][0]; | |
1507 pY_Helm = pPaperdoll_BodyY + paperdoll_Helm[pBodyComplection][v125][1]; | |
1508 if ( IsDwarf != 1 || item_Helm->uItemID != 92 ) | |
1509 v127 = paperdoll_helm_texture[player->GetSexByVoice()][v125]; | |
1510 else | |
1511 v127 = papredoll_dbrds[11]; | |
1512 if ( item_Helm->uAttributes & 0xF0 ) | |
1513 { | |
1514 if ( (item_Helm->uAttributes & 0xF0) == 16 ) | |
1515 v180 = "sptext01"; | |
1516 if ( (item_Helm->uAttributes & 0xF0) == 32 ) | |
1517 v180 = "sp28a"; | |
1518 if ( (item_Helm->uAttributes & 0xF0) == 64 ) | |
1519 v180 = "sp30a"; | |
1520 if ( (item_Helm->uAttributes & 0xF0) == 128 ) | |
1521 v180 = "sp91a"; | |
1522 v129 = pIcons_LOD->LoadTexturePtr(v180, TEXTURE_16BIT_PALETTE); | |
1523 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1524 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1525 { | |
1526 _50C9A8_item_enchantment_timer = 0; | |
1527 item_Helm->uAttributes &= 0xFFFFFF0Fu; | |
1528 ptr_50C9A4 = 0; | |
1529 } | |
1530 v130 = (double)GetTickCount() * 0.1; | |
1531 pRenderer->_4A63E6(pX_Helm, pY_Helm, pIcons_LOD->GetTexture(v127), v129, (signed __int64)v130, 0, 255); | |
1532 } | |
1533 else | |
1534 { | |
1535 v131 = v127 + 1; | |
1536 v132 = (char *)pIcons_LOD->GetTexture(v127); | |
1537 if ( item_Helm->uAttributes & 2 ) | |
1538 pRenderer->DrawTransparentRedShade(pX_Helm, pY_Helm, (Texture *)v132); | |
1539 else | |
1540 { | |
1541 if ( item_Helm->uAttributes & 1 ) | |
1542 pRenderer->DrawTextureTransparent(pX_Helm, pY_Helm, (Texture *)v132); | |
1543 else | |
1544 pRenderer->DrawTransparentGreenShade(pX_Helm, pY_Helm, (Texture *)v132); | |
1545 } | |
1546 } | |
1547 if ( !bRingsShownInCharScreen ) | |
1548 pRenderer->DrawMaskToZBuffer(pX_Helm, pY_Helm, (Texture *)v132, pHelmNum); | |
1549 } | |
1550 } | |
1551 pMainHandNum3 = pPlayers[uPlayerID]->pEquipment.uMainHand;//weapon in right hand | |
1552 if ( pMainHandNum3 ) | |
1553 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1554 item_MainHand3 = &pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum3 - 1]; |
1298 | 1555 pX_MainHand3 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item_MainHand3->uItemID].uEquipX; |
1556 pY_MainHand3 = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item_MainHand3->uItemID].uEquipY; | |
1557 if ( item_MainHand3->uItemID == 64 ) | |
1558 v181 = "item64v1"; | |
1559 else | |
1560 v181 = pItemsTable->pItems[item_MainHand3->uItemID].pIconName; | |
1561 v138 = pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE); | |
1562 if ( !(item_MainHand3->uAttributes & 0xF0) ) | |
1563 { | |
1564 v142 = v138 + 1; | |
1565 v143 = (char *)pIcons_LOD->GetTexture(v138); | |
1566 if ( item_MainHand3->uAttributes & 2 ) | |
1567 pRenderer->DrawTransparentRedShade(pX_MainHand3, pY_MainHand3, (Texture *)v143); | |
1568 else | |
1569 { | |
1570 if ( item_MainHand3->uAttributes & 1 ) | |
1571 pRenderer->DrawTextureTransparent(pX_MainHand3, pY_MainHand3, (Texture *)v143); | |
1572 else | |
1573 pRenderer->DrawTransparentGreenShade(pX_MainHand3, pY_MainHand3, (Texture *)v143); | |
1574 } | |
1575 } | |
1576 else | |
1577 { | |
1578 if ( (item_MainHand3->uAttributes & 0xF0) == 16 ) | |
1579 v182 = "sptext01"; | |
1580 if ( (item_MainHand3->uAttributes & 0xF0) == 32 ) | |
1581 v182 = "sp28a"; | |
1582 if ( (item_MainHand3->uAttributes & 0xF0) == 64 ) | |
1583 v182 = "sp30a"; | |
1584 if ( (item_MainHand3->uAttributes & 0xF0) == 128 ) | |
1585 v182 = "sp91a"; | |
1586 v140 = pIcons_LOD->LoadTexturePtr(v182, TEXTURE_16BIT_PALETTE); | |
1587 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1588 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1589 { | |
1590 _50C9A8_item_enchantment_timer = 0; | |
1591 item_MainHand3->uAttributes &= 0xFFFFFF0Fu; | |
1592 ptr_50C9A4 = 0; | |
1593 } | |
1594 v141 = (double)GetTickCount() * 0.1; | |
1595 pRenderer->_4A63E6(pX_MainHand3, pY_MainHand3, pIcons_LOD->GetTexture(v138), v140, (signed __int64)v141, 0, 255); | |
1596 } | |
1597 if ( !bRingsShownInCharScreen ) | |
1598 pRenderer->DrawMaskToZBuffer(pX_MainHand3, pY_MainHand3, (Texture *)v143, pMainHandNum3); | |
1599 } | |
1600 pShieldNum = pPlayers[uPlayerID]->pEquipment.uShield;// äàëåå ùèò | |
1601 if ( pShieldNum ) | |
1602 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1603 item_Shield = &pPlayers[uPlayerID]->pInventoryItemList[pShieldNum - 1]; |
1298 | 1604 v149 = pItemsTable->pItems[item_Shield->uItemID].uSkillType; |
1605 if ( v149 == 2 || v149 == 1 ) | |
1606 { | |
1607 v151 = item_Shield->uItemID - 400; | |
1608 pX_Shield = 596; | |
1609 v245 = 1; | |
1610 switch ( item_Shield->uItemID ) | |
1611 { | |
1612 case 400: | |
1613 pY_Shield = 86; | |
1614 break; | |
1615 case 403: | |
1616 pY_Shield = 28; | |
1617 break; | |
1618 case 415: | |
1619 pX_Shield = 595; | |
1620 pY_Shield = 33; | |
1621 break; | |
1622 default: | |
1623 pX_Shield = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item_Shield->uItemID].uEquipX; | |
1624 pY_Shield = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item_Shield->uItemID].uEquipY; | |
1625 break; | |
1626 } | |
1627 } | |
1628 else | |
1629 { | |
1630 v245 = 0; | |
1631 pX_Shield = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item_Shield->uItemID].uEquipX; | |
1632 pY_Shield = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item_Shield->uItemID].uEquipY; | |
1633 } | |
1634 v153 = pIcons_LOD->LoadTexture(pItemsTable->pItems[item_Shield->uItemID].pIconName, TEXTURE_16BIT_PALETTE); | |
1635 if ( !(item_Shield->uAttributes & 0xF0) ) | |
1636 { | |
1637 if ( item_Shield->uAttributes & 2 ) | |
1638 pRenderer->DrawTransparentRedShade(pX_Shield, pY_Shield, pIcons_LOD->GetTexture(v153)); | |
1639 else | |
1640 { | |
1641 v160 = (char *)pIcons_LOD->GetTexture(v153); | |
1642 if ( !(item_Shield->uAttributes & 1) ) | |
1643 pRenderer->DrawTransparentGreenShade(pX_Shield, pY_Shield, (Texture *)v160); | |
1644 else | |
1645 pRenderer->DrawTextureTransparent(pX_Shield, pY_Shield, (Texture *)v160); | |
1646 } | |
1647 } | |
1648 else | |
1649 { | |
1650 if ( (item_Shield->uAttributes & 0xF0) == 16 ) | |
1651 v183 = "sptext01"; | |
1652 if ( (item_Shield->uAttributes & 0xF0) == 32 ) | |
1653 v183 = "sp28a"; | |
1654 if ( (item_Shield->uAttributes & 0xF0) == 64 ) | |
1655 v183 = "sp30a"; | |
1656 if ( (item_Shield->uAttributes & 0xF0) == 128 ) | |
1657 v183 = "sp91a"; | |
1658 v157 = pIcons_LOD->LoadTexturePtr(v183, TEXTURE_16BIT_PALETTE); | |
1659 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1660 if ( _50C9A8_item_enchantment_timer <= 0 ) | |
1661 { | |
1662 _50C9A8_item_enchantment_timer = 0; | |
1663 item_Shield->uAttributes &= 0xFFFFFF0Fu; | |
1664 ptr_50C9A4 = 0; | |
1665 } | |
1666 v158 = (double)GetTickCount() * 0.1; | |
1667 pRenderer->_4A63E6(pX_Shield, pY_Shield, pIcons_LOD->GetTexture(v153), v157, (signed __int64)v158, 0, 255); | |
1668 if ( v245 ) | |
1669 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[pBodyComplection][0], | |
1670 pPaperdoll_BodyY + pPaperdollLeftEmptyHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlhs[uPlayerID - 1])); | |
1671 } | |
1672 if ( !bRingsShownInCharScreen ) | |
1673 pRenderer->DrawMaskToZBuffer(pX_Shield, pY_Shield, pIcons_LOD->GetTexture(v153), pShieldNum); | |
1674 } | |
1675 } | |
1676 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_RightHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_RightHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_drhs[uPlayerID - 1])); | |
1677 pMainHandNum5 = pPlayers[uPlayerID]->pEquipment.uMainHand; | |
1678 if ( pMainHandNum5 ) | |
1679 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1680 item_MainHand5 = &pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum5 - 1]; |
1298 | 1681 if ( pItemsTable->pItems[item_MainHand5->uItemID].uEquipType == 1 || |
1682 pItemsTable->pItems[item_MainHand5->uItemID].uSkillType == PLAYER_SKILL_SPEAR && | |
1683 !pPlayers[uPlayerID]->pEquipment.uShield ) | |
1684 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0], | |
1685 pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], | |
1686 pIcons_LOD->GetTexture(papredoll_dlhus[uPlayerID - 1])); | |
1687 } | |
1688 if ( !bRingsShownInCharScreen )//ðèñîâàíèå ëóïû | |
1689 pRenderer->DrawTextureTransparent(603, 299, pIcons_LOD->GetTexture(uTextureID_MAGNIF_B)); | |
1690 pRenderer->DrawTextureTransparent(468, 0, pIcons_LOD->GetTexture(uTextureID_right_panel_loop));//îáðàìëåíèå | |
1691 } | |
1692 | |
1693 | |
1694 | |
1695 | |
1696 | |
1697 | |
1698 | |
1699 //----- (0041A2D1) -------------------------------------------------------- | |
1700 void CharacterUI_InventoryTab_Draw(Player *player, bool a2) | |
1701 { | |
1702 Texture *v7; // esi@6 | |
1703 signed int v11; // edx@6 | |
1704 int v13; // eax@13 | |
1705 signed int v14; // edx@13 | |
1706 int v15; // eax@13 | |
1707 unsigned int v17; // edi@15 | |
1708 Texture *pTexture; // ebx@24 | |
1709 unsigned int uCellX; // [sp+30h] [bp-8h]@5 | |
1710 unsigned int uCellY; // [sp+34h] [bp-4h]@5 | |
1711 | |
1712 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->GetTexture(uTextureID_CharacterUI_InventoryBackground)); | |
1713 if (a2) | |
1714 pRenderer->DrawTextureIndexed(8, 305, pIcons_LOD->LoadTexturePtr("fr_strip", TEXTURE_16BIT_PALETTE)); | |
1715 | |
1716 int i = 0; | |
1717 for (uint i = 0; i < 126; ++i) | |
1718 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1719 int v26 = (int)(player->pInventoryMatrix + i); |
1298 | 1720 |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1721 if (player->pInventoryMatrix[i] <= 0) |
1298 | 1722 continue; |
1723 | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1724 int item_idx = player->pInventoryMatrix[i]; |
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1725 auto item = &player->pInventoryItemList[item_idx - 1]; |
1298 | 1726 if (!item->uItemID) |
1727 continue; | |
1728 | |
1729 uCellY = 32 * (i / 14) + 17; | |
1730 uCellX = 32 * (i % 14) + 14; | |
1731 uint item_texture_id = pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE); | |
1732 v7 = pIcons_LOD->GetTexture(item_texture_id); | |
1733 | |
1734 v11 = v7->uTextureWidth; | |
1735 if (v11 < 14) | |
1736 v11 = 14; | |
1737 | |
1738 if ( (v11 - 14) / 32 == 0 && v7->uTextureWidth < 32) | |
1739 uCellX += (32 - v7->uTextureWidth) / 2; | |
1740 v13 = v11 - 14; | |
1741 LOBYTE(v13) = v13 & 0xE0; | |
1742 v15 = v13 + 32; | |
1743 v14 = v7->uTextureHeight; | |
1744 if (v14 < 14 ) | |
1745 v14 = 14; | |
1746 v17 = uCellX + ((v15 - v7->uTextureWidth) >> 1) + pSRZBufferLineOffsets[uCellY + (( (int)((v14 - 14) & 0xFFFFFFE0) - v7->uTextureHeight + 32) >> 1)]; //added typecast. without it the value in the brackets got cat to unsigned which messed stuff up | |
1747 | |
1748 if (item->uAttributes & 0xF0) | |
1749 { | |
1750 switch (item->uAttributes & 0xF0) | |
1751 { | |
1752 case ITEM_AURA_EFFECT_RED: pTexture = pIcons_LOD->LoadTexturePtr("sptext01", TEXTURE_16BIT_PALETTE); break; | |
1753 case ITEM_AURA_EFFECT_BLUE: pTexture = pIcons_LOD->LoadTexturePtr("sp28a", TEXTURE_16BIT_PALETTE); break; | |
1754 case ITEM_AURA_EFFECT_GREEN: pTexture = pIcons_LOD->LoadTexturePtr("sp30a", TEXTURE_16BIT_PALETTE); break; | |
1755 case ITEM_AURA_EFFECT_PURPLE: pTexture = pIcons_LOD->LoadTexturePtr("sp91a", TEXTURE_16BIT_PALETTE); break; | |
1756 } | |
1757 | |
1758 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1759 if (_50C9A8_item_enchantment_timer <= 0) | |
1760 { | |
1761 _50C9A8_item_enchantment_timer = 0; | |
1762 LOBYTE(item->uAttributes) &= 0xF; | |
1763 ptr_50C9A4 = 0; | |
1764 } | |
1765 | |
1766 pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, GetTickCount() * 0.1, 0, 255); | |
1767 ZBuffer_Fill(&pRenderer->pActiveZBuffer[v17], item_texture_id, item_idx); | |
1768 } | |
1769 else | |
1770 { | |
1771 if (item->Identified() || pCurrentScreen != SCREEN_HOUSE) | |
1772 { | |
1773 if (item->Broken()) | |
1774 pRenderer->DrawTransparentRedShade(uCellX, uCellY, v7); | |
1775 else | |
1776 pRenderer->DrawTextureTransparent(uCellX, uCellY, v7); | |
1777 } | |
1778 else | |
1779 pRenderer->DrawTransparentGreenShade(uCellX, uCellY, v7); | |
1780 | |
1781 ZBuffer_Fill(&pRenderer->pActiveZBuffer[v17], item_texture_id, item_idx); | |
1782 continue; | |
1783 } | |
1784 } | |
1785 } | |
1786 | |
1787 | |
1788 | |
1789 static void CharacterUI_DrawItem(int x, int y, ItemGen *item, int id) | |
1790 { | |
1791 auto item_texture = pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE); | |
1792 | |
1793 if (item->uAttributes & 0xF0) // enchant animation | |
1794 { | |
1795 Texture *enchantment_texture = nullptr; | |
1796 switch (item->uAttributes & 0xF0) | |
1797 { | |
1798 case ITEM_AURA_EFFECT_RED: enchantment_texture = pIcons_LOD->LoadTexturePtr("sptext01", TEXTURE_16BIT_PALETTE); break; | |
1799 case ITEM_AURA_EFFECT_BLUE: enchantment_texture = pIcons_LOD->LoadTexturePtr("sp28a", TEXTURE_16BIT_PALETTE); break; | |
1800 case ITEM_AURA_EFFECT_GREEN: enchantment_texture = pIcons_LOD->LoadTexturePtr("sp30a", TEXTURE_16BIT_PALETTE); break; | |
1801 case ITEM_AURA_EFFECT_PURPLE: enchantment_texture = pIcons_LOD->LoadTexturePtr("sp91a", TEXTURE_16BIT_PALETTE); break; | |
1802 } | |
1803 | |
1804 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed; | |
1805 if (_50C9A8_item_enchantment_timer <= 0) | |
1806 { | |
1807 _50C9A8_item_enchantment_timer = 0; | |
1808 item->uAttributes &= 0xFFFFFF0F; | |
1809 ptr_50C9A4 = 0; | |
1810 } | |
1811 pRenderer->_4A63E6(x, y, item_texture, enchantment_texture, GetTickCount() * 0.1, 0, 255); | |
1812 } | |
1813 else | |
1814 { | |
1815 if (item->Broken()) | |
1816 pRenderer->DrawTransparentRedShade(x, y, item_texture); | |
1817 else if (!item->Identified()) | |
1818 pRenderer->DrawTransparentGreenShade(x, y, item_texture); | |
1819 else | |
1820 pRenderer->DrawTextureTransparent(x, y, item_texture); | |
1821 | |
1822 pRenderer->ZBuffer_Fill_2(x, y, item_texture, id); | |
1823 } | |
1824 } | |
1825 | |
1826 | |
1827 //----- (0043E825) -------------------------------------------------------- | |
1828 void CharacterUI_DrawPaperdollWithRingOverlay(Player *player) | |
1829 { | |
1830 CharacterUI_DrawPaperdoll(player); | |
1831 | |
1832 pRenderer->DrawTextureTransparent(0x1D9u, 0, pIcons_LOD->GetTexture(uTextureID_BACKHAND)); | |
1833 pRenderer->DrawTextureTransparent(0x1D4u, 0, pIcons_LOD->GetTexture(uTextureID_right_panel_loop)); | |
1834 pRenderer->DrawTextureIndexed(pCharacterScreen_DetalizBtn->uX, | |
1835 pCharacterScreen_DetalizBtn->uY, | |
1836 pIcons_LOD->GetTexture(uTextureID_detaliz_close_button)); | |
1837 | |
1838 for (uint i = 0; i < 6; ++i) | |
1839 { | |
1840 if (!player->pEquipment.uRings[i]) | |
1841 continue; | |
1842 | |
1843 static int pPaperdollRingsX[6] = {0x1EA, 0x21A, 0x248, 0x1EA, 0x21A, 0x248}; | |
1844 static int pPaperdollRingsY[6] = {0x0CA, 0x0CA, 0x0CA, 0x0FA, 0x0FA, 0x0FA}; | |
1845 | |
1846 CharacterUI_DrawItem(pPaperdollRingsX[i], | |
1847 pPaperdollRingsY[i], | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1848 &player->pInventoryItemList[player->pEquipment.uRings[i] - 1], |
1298 | 1849 player->pEquipment.uRings[i]); |
1850 } | |
1851 | |
1852 | |
1853 if (player->pEquipment.uAmulet) | |
1854 { | |
1855 CharacterUI_DrawItem(493, 91, | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1856 &player->pInventoryItemList[player->pEquipment.uAmulet - 1], |
1298 | 1857 player->pEquipment.uAmulet); |
1858 } | |
1859 | |
1860 if (player->pEquipment.uGlove) | |
1861 { | |
1862 CharacterUI_DrawItem(586, 88, | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
1863 &player->pInventoryItemList[player->pEquipment.uGlove - 1], |
1298 | 1864 player->pEquipment.uGlove); |
1865 } | |
1866 } | |
1867 | |
1868 //----- (0043BCA7) -------------------------------------------------------- | |
1869 void CharacterUI_LoadPaperdollTextures() | |
1870 { | |
1871 int v0; // edi@7 | |
1872 enum CHARACTER_RACE pRace; // ebx@7 | |
1873 signed int pSex; // eax@7 | |
1874 int v3; // ebx@10 | |
1875 Player *pPlayer; // edi@12 | |
1876 unsigned __int8 v5; // cl@12 | |
1877 int v6; // edi@16 | |
1878 unsigned int v7; // eax@16 | |
1879 Player *pPlayer2; // ebx@16 | |
1880 char *v9; // ebx@16 | |
1881 char v10; // al@16 | |
1882 signed int v11; // edi@21 | |
1883 unsigned int v22; // eax@76 | |
1884 int v23; // ecx@76 | |
1885 unsigned int v24; // eax@78 | |
1886 int v25; // ecx@78 | |
1887 int v26; // ebx@79 | |
1888 unsigned int v27; // eax@80 | |
1889 int v28; // ecx@80 | |
1890 int v30; // [sp+10h] [bp-28h]@5 | |
1891 signed int v32; // [sp+10h] [bp-28h]@75 | |
1892 signed int v33; // [sp+10h] [bp-28h]@77 | |
1893 int v34; // [sp+10h] [bp-28h]@79 | |
1894 int pItemTXTNum; // [sp+14h] [bp-24h]@75 | |
1895 int v37; // [sp+14h] [bp-24h]@77 | |
1896 signed int v38; // [sp+14h] [bp-24h]@79 | |
1897 int v42; // [sp+20h] [bp-18h]@6 | |
1898 int v43; // [sp+20h] [bp-18h]@73 | |
1899 char pContainer[128]; // [sp+24h] [bp-14h]@12 | |
1900 | |
1901 uTextureID_MAGNIF_B = pIcons_LOD->LoadTexture("MAGNIF-B", TEXTURE_16BIT_PALETTE); | |
1902 //if ( !pParty->uAlignment || pParty->uAlignment == 1 || pParty->uAlignment == 2 ) | |
1903 uTextureID_BACKDOLL = pIcons_LOD->LoadTexture("BACKDOLL", TEXTURE_16BIT_PALETTE); | |
1904 uTextureID_right_panel_loop = uTextureID_right_panel; | |
1905 v30 = 0; | |
1906 uTextureID_BACKHAND = pIcons_LOD->LoadTexture("BACKHAND", TEXTURE_16BIT_PALETTE); | |
1907 uTextureID_detaliz_close_button = uExitCancelTextureId; | |
1908 do | |
1909 { | |
1910 v42 = v30 + 1; | |
1911 if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(v30 + 1) ) | |
1912 { | |
1913 v0 = v30; | |
1914 pRace = pPlayers[v30 + 1]->GetRace(); | |
1915 pSex = pPlayers[v30 + 1]->GetSexByVoice(); | |
1916 if ( pRace && pRace != 1 && pRace != 2 )//race == 3 | |
1917 v3 = (pSex != 0) + 3; | |
1918 else | |
1919 v3 = (pSex != 0) + 1; | |
1920 wsprintfA(pContainer, "pc23v%dBod", v3); | |
1921 papredoll_dbods[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);//Body texture | |
1922 wsprintfA(pContainer, "pc23v%dlad", v3); | |
1923 papredoll_dlads[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand | |
1924 wsprintfA(pContainer, "pc23v%dlau", v3); | |
1925 papredoll_dlaus[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand2 | |
1926 wsprintfA(pContainer, "pc23v%drh", v3); | |
1927 papredoll_drhs[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Right Hand | |
1928 wsprintfA(pContainer, "pc23v%dlh", v3); | |
1929 papredoll_dlhs[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Fist | |
1930 wsprintfA(pContainer, "pc23v%dlhu", v3); | |
1931 papredoll_dlhus[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); // Left Fist 2 | |
1932 pPlayer = pPlayers[v0 + 1]; | |
1933 v5 = pPlayer->uCurrentFace; | |
1934 if ( v5 == 12 || v5 == 13 ) | |
1935 papredoll_dbrds[(char)v5] = 0; | |
1936 papredoll_flying_feet[pPlayer->uCurrentFace] = 0; | |
1937 IsPlayerWearingWatersuit[v30 + 1] = 1; | |
1938 } | |
1939 else | |
1940 { | |
1941 papredoll_dbods[v30] = pIcons_LOD->LoadTexture(dbod_texnames_by_face[pPlayers[v30 + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
1942 papredoll_dlads[v30] = pIcons_LOD->LoadTexture(dlad_texnames_by_face[pPlayers[v30 + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
1943 papredoll_dlaus[v30] = pIcons_LOD->LoadTexture(dlau_texnames_by_face[pPlayers[v30 + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
1944 papredoll_drhs[v30] = pIcons_LOD->LoadTexture(drh_texnames_by_face[pPlayers[v30 + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
1945 papredoll_dlhs[v30] = pIcons_LOD->LoadTexture(dlh_texnames_by_face[pPlayers[v30 + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
1946 papredoll_dlhus[v30] = pIcons_LOD->LoadTexture(dlhu_texnames_by_face[pPlayers[v30 + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
1947 v10 = pPlayers[v30 + 1]->uCurrentFace; | |
1948 if ( v10 == 12 || v10 == 13 ) | |
1949 { | |
1950 wsprintfA(pContainer, "pc%02dbrd", v10 + 1); | |
1951 papredoll_dbrds[v10] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
1952 } | |
1953 wsprintfA(pContainer, "item281pc%02d", v10 + 1); | |
1954 papredoll_flying_feet[pPlayers[v30 + 1]->uCurrentFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
1955 IsPlayerWearingWatersuit[v30 + 1] = 0; | |
1956 } | |
1957 ++v30; | |
1958 } | |
1959 while ( v42 < 4 ); | |
1960 uTextureID_ar_up_up = pIcons_LOD->LoadTexture("ar_up_up", TEXTURE_16BIT_PALETTE); | |
1961 uTextureID_ar_up_dn = pIcons_LOD->LoadTexture("ar_up_dn", TEXTURE_16BIT_PALETTE); | |
1962 uTextureID_ar_dn_up = pIcons_LOD->LoadTexture("ar_dn_up", TEXTURE_16BIT_PALETTE); | |
1963 uTextureID_ar_dn_dn = pIcons_LOD->LoadTexture("ar_dn_dn", TEXTURE_16BIT_PALETTE); | |
1964 papredoll_dbrds[9] = pIcons_LOD->LoadTexture("ib-cd1-d", TEXTURE_16BIT_PALETTE); | |
1965 papredoll_dbrds[7] = pIcons_LOD->LoadTexture("ib-cd2-d", TEXTURE_16BIT_PALETTE); | |
1966 papredoll_dbrds[5] = pIcons_LOD->LoadTexture("ib-cd3-d", TEXTURE_16BIT_PALETTE); | |
1967 papredoll_dbrds[3] = pIcons_LOD->LoadTexture("ib-cd4-d", TEXTURE_16BIT_PALETTE); | |
1968 papredoll_dbrds[1] = pIcons_LOD->LoadTexture("ib-cd5-d", TEXTURE_16BIT_PALETTE); | |
1969 for ( v11 = 0; v11 < 54; ++v11 )// test equipment | |
1970 { | |
1971 party_has_equipment[v11] = 0; | |
1972 if ( pParty->pPickedItem.uItemID != v11 + 66 ) | |
1973 { | |
1974 for ( uint i = 0; i < 4; ++i) | |
1975 { | |
1976 if ( Player_has_item(v11 + 66, &pParty->pPlayers[i], 0) ) | |
1977 party_has_equipment[v11] = 1; | |
1978 } | |
1979 } | |
1980 } | |
1981 memset(byte_5111F6.data(), 0, 16); | |
1982 for (uint i = 0; i < 4; ++i) | |
1983 { | |
1984 auto player = pParty->pPlayers + i; | |
1985 | |
1986 if (Player_has_item(ITEM_ARTICACT_GOVERNONS_ARMOR, player, 1)) byte_5111F6[0] = 1; | |
1987 if (Player_has_item(ITEM_ARTIFACT_YORUBA, player, 1)) byte_5111F6[1] = 1; | |
1988 if (Player_has_item(ITEM_RELIC_HARECS_LEATHER, player, 1)) byte_5111F6[2] = 1; | |
1989 if (Player_has_item(ITEM_ARTIFACT_LEAGUE_BOOTS, player, 1)) byte_5111F6[3] = 1; | |
1990 if (Player_has_item(ITEM_RELIC_TALEDONS_HELM, player, 1)) byte_5111F6[4] = 1; | |
1991 if (Player_has_item(ITEM_RELIC_SCHOLARS_CAP, player, 1)) byte_5111F6[5] = 1; | |
1992 if (Player_has_item(ITEM_RELIC_PHYNAXIAN_CROWN, player, 1)) byte_5111F6[6] = 1; | |
1993 if (Player_has_item(ITEM_ARTIFACT_MINDS_EYE, player, 1)) byte_5111F6[7] = 1; | |
1994 if (Player_has_item(ITEM_RARE_SHADOWS_MASK, player, 1)) byte_5111F6[8] = 1; | |
1995 if (Player_has_item(ITEM_RILIC_TITANS_BELT, player, 1)) byte_5111F6[9] = 1; | |
1996 if (Player_has_item(ITEM_ARTIFACT_HEROS_BELT, player, 1)) byte_5111F6[10] = 1; | |
1997 if (Player_has_item(ITEM_RELIC_TWILIGHT, player, 1)) byte_5111F6[11] = 1; | |
1998 if (Player_has_item(ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP, player, 1)) byte_5111F6[12] = 1; | |
1999 if (Player_has_item(ITEM_RARE_SUN_CLOAK, player, 1)) byte_5111F6[13] = 1; | |
2000 if (Player_has_item(ITEM_RARE_MOON_CLOAK, player, 1)) byte_5111F6[14] = 1; | |
2001 if (Player_has_item(ITEM_RARE_VAMPIRES_CAPE, player, 1)) byte_5111F6[15] = 1; | |
2002 if (Player_has_item(ITEM_ELVEN_CHAINMAIL, player, 1)) byte_5111F6[16] = 1; | |
2003 } | |
2004 | |
2005 | |
2006 for (uint i = 0; i < 2; ++i) | |
2007 { | |
2008 for ( uint j = 0; j < 5; ++j )//Belt | |
2009 { | |
2010 GetItemTextureFilename(pContainer, j + 100, i + 1, 0); | |
2011 paperdoll_belt_texture[i][j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2012 } | |
2013 GetItemTextureFilename(pContainer, 535, i + 1, 0); | |
2014 paperdoll_belt_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2015 for ( uint j = 0; j < 11; ++j )//Helm | |
2016 { | |
2017 GetItemTextureFilename(pContainer, j + 89, i + 1, 0); | |
2018 paperdoll_helm_texture[i][j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2019 } | |
2020 GetItemTextureFilename(pContainer, 521, i + 1, 0); | |
2021 paperdoll_helm_texture[i][11] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2022 GetItemTextureFilename(pContainer, 522, i + 1, 0); | |
2023 paperdoll_helm_texture[i][12] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2024 GetItemTextureFilename(pContainer, 523, i + 1, 0); | |
2025 paperdoll_helm_texture[i][13] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2026 GetItemTextureFilename(pContainer, 532, i + 1, 0); | |
2027 paperdoll_helm_texture[i][14] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2028 GetItemTextureFilename(pContainer, 544, i + 1, 0); | |
2029 paperdoll_helm_texture[i][15] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2030 if ( _43ED6F_check_party_races(true) ) | |
2031 papredoll_dbrds[11] = pIcons_LOD->LoadTexture("item092v3", TEXTURE_16BIT_PALETTE); | |
2032 } | |
2033 v43 = 0; | |
2034 for (uint i = 0; i < 4; ++i) | |
2035 { | |
2036 if ( sub_43EDB9_get_some_race_sex_relation_2(i) ) | |
2037 { | |
2038 GetItemTextureFilename(pContainer, 524, i + 1, 0); | |
2039 paperdoll_belt_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);//Titans belt | |
2040 pItemTXTNum = 66; | |
2041 for ( v32 = 0; v32 < 13; ++v32 )//simple armor | |
2042 { | |
2043 GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 0); | |
2044 paperdoll_armor_texture[i][v32][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2045 GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 1); | |
2046 paperdoll_armor_texture[i][v32][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2047 GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 2); | |
2048 paperdoll_armor_texture[i][v32][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2049 pItemTXTNum++; | |
2050 } | |
2051 GetItemTextureFilename(pContainer, 516, i + 1, 0);//artefacts | |
2052 paperdoll_armor_texture[i][v32][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2053 GetItemTextureFilename(pContainer, 516, i + 1, 1); | |
2054 paperdoll_armor_texture[i][v32][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2055 GetItemTextureFilename(pContainer, 516, i + 1, 2); | |
2056 paperdoll_armor_texture[i][v32][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2057 GetItemTextureFilename(pContainer, 505, i + 1, 0); | |
2058 paperdoll_armor_texture[i][v32 + 1][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2059 GetItemTextureFilename(pContainer, 505, i + 1, 1); | |
2060 paperdoll_armor_texture[i][v32 + 1][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2061 GetItemTextureFilename(pContainer, 505, i + 1, 2); | |
2062 paperdoll_armor_texture[i][v32 + 1][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2063 GetItemTextureFilename(pContainer, 504, i + 1, 0); | |
2064 paperdoll_armor_texture[i][v32 + 2][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2065 GetItemTextureFilename(pContainer, 504, i + 1, 1); | |
2066 paperdoll_armor_texture[i][v32 + 2][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2067 GetItemTextureFilename(pContainer, 504, i + 1, 2); | |
2068 paperdoll_armor_texture[i][v32 + 2][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2069 GetItemTextureFilename(pContainer, 533, i + 1, 0); | |
2070 paperdoll_armor_texture[i][v32 + 3][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2071 GetItemTextureFilename(pContainer, 533, i + 1, 1); | |
2072 paperdoll_armor_texture[i][v32 + 3][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2073 GetItemTextureFilename(pContainer, 533, i + 1, 2); | |
2074 paperdoll_armor_texture[i][v32 + 3][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2075 for ( v33 = 0; v33 < 5; ++v33 )//boots | |
2076 { | |
2077 GetItemTextureFilename(pContainer, v33 + 115, i + 1, 0); | |
2078 paperdoll_boots_texture[i][v33] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2079 } | |
2080 GetItemTextureFilename(pContainer, 512, i + 1, 0); | |
2081 paperdoll_boots_texture[i][v33] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2082 for ( v38 = 0; v38 < 5; ++v38 )//Cloak | |
2083 { | |
2084 GetItemTextureFilename(pContainer, v38 + 105, i + 1, 0); | |
2085 paperdoll_cloak_texture[i][v38] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2086 GetItemTextureFilename(pContainer, v38 + 105, i + 1, 1); | |
2087 paperdoll_cloak_collar_texture[i][v38] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2088 } | |
2089 GetItemTextureFilename(pContainer, 525, i + 1, 0); | |
2090 paperdoll_cloak_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2091 GetItemTextureFilename(pContainer, 530, i + 1, 0); | |
2092 paperdoll_cloak_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2093 GetItemTextureFilename(pContainer, 547, i + 1, 0); | |
2094 paperdoll_cloak_texture[i][7] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2095 GetItemTextureFilename(pContainer, 548, i + 1, 0); | |
2096 paperdoll_cloak_texture[i][8] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2097 GetItemTextureFilename(pContainer, 550, i + 1, 0); | |
2098 paperdoll_cloak_texture[i][9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2099 GetItemTextureFilename(pContainer, 525, i + 1, 1); | |
2100 paperdoll_cloak_collar_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2101 GetItemTextureFilename(pContainer, 530, i + 1, 1); | |
2102 paperdoll_cloak_collar_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2103 GetItemTextureFilename(pContainer, 547, i + 1, 1); | |
2104 paperdoll_cloak_collar_texture[i][7] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2105 GetItemTextureFilename(pContainer, 548, i + 1, 1); | |
2106 paperdoll_cloak_collar_texture[i][8] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2107 GetItemTextureFilename(pContainer, 550, i + 1, 1); | |
2108 paperdoll_cloak_collar_texture[i][9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2109 } | |
2110 else | |
2111 { | |
2112 v26 = v43; | |
2113 } | |
2114 v43 = v26 + 40; | |
2115 } | |
2116 } | |
2117 | |
2118 //----- (00419401) -------------------------------------------------------- | |
2119 void CharacterUI_SkillsTab_CreateButtons() | |
2120 { | |
2121 // unsigned int v0; // ecx@3 | |
2122 GUIButton *pButton; // eax@3 | |
2123 unsigned int current_Y; // esi@8 | |
2124 int buttons_count; // [sp+10h] [bp-14h]@1 | |
2125 int first_rows; // [sp+14h] [bp-10h]@19 | |
2126 int skill_id; // [sp+18h] [bp-Ch]@8 | |
2127 Player *curr_player; // [sp+1Ch] [bp-8h]@8 | |
2128 int i; | |
2129 int uCurrFontHeght; | |
2130 | |
2131 buttons_count = 0; | |
2132 if ( dword_507CC0_activ_ch ) | |
2133 CharacterUI_ReleaseButtons(); | |
2134 dword_507CC0_activ_ch = uActiveCharacter; | |
2135 for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext ) | |
2136 { | |
2137 if ( pButton->msg == UIMSG_InventoryLeftClick ) | |
2138 { | |
2139 dword_50698C_uX = pButton->uX; | |
2140 dword_506988_uY = pButton->uY; | |
2141 dword_506984_uZ = pButton->uZ; | |
2142 dword_506980_uW = pButton->uW; | |
2143 pButton->uW = 0; | |
2144 pButton->uZ = 0; | |
2145 pButton->uY = 0; | |
2146 pButton->uX = 0; | |
2147 } | |
2148 } | |
2149 first_rows = 0; | |
2150 // a5 = pGUIWindow_CurrentMenu->uNumControls; | |
2151 curr_player = &pParty->pPlayers[uActiveCharacter-1]; | |
2152 | |
2153 uCurrFontHeght=pFontLucida->uFontHeight; | |
2154 current_Y = 2 *uCurrFontHeght + 13; | |
2155 for(i=0; i<9;++i) | |
2156 { | |
2157 skill_id = pWeaponSkills[i]; | |
2158 if ( curr_player->pActiveSkills[skill_id] & 0x3F ) | |
2159 { | |
2160 current_Y += uCurrFontHeght - 3; | |
2161 ++buttons_count; | |
2162 ++first_rows; | |
2163 pGUIWindow_CurrentMenu->CreateButton(24, current_Y, 204, uCurrFontHeght - 3, 3, skill_id | 0x8000, UIMSG_SkillUp, skill_id, 0, "", 0, 0); | |
2164 } | |
2165 } | |
2166 if ( !first_rows ) | |
2167 current_Y += uCurrFontHeght - 3; | |
2168 current_Y += 2 * uCurrFontHeght - 6; | |
2169 for(i=0; i<9;++i) | |
2170 { | |
2171 skill_id = pMagicSkills[i]; | |
2172 if ( curr_player->pActiveSkills[skill_id] & 0x3F && buttons_count < 15 ) | |
2173 { | |
2174 current_Y += uCurrFontHeght - 3; | |
2175 ++buttons_count; | |
2176 pGUIWindow_CurrentMenu->CreateButton(24, current_Y, 204, uCurrFontHeght - 3, 3, skill_id | 0x8000, UIMSG_SkillUp, skill_id, 0, "", 0, 0); | |
2177 } | |
2178 } | |
2179 first_rows = 0; | |
2180 current_Y = 2 * uCurrFontHeght + 13; | |
2181 for(i=0; i<5;++i) | |
2182 { | |
2183 skill_id = pArmorSkills[i]; | |
2184 if ( curr_player->pActiveSkills[skill_id] & 0x3F ) | |
2185 { | |
2186 current_Y+= uCurrFontHeght - 3; | |
2187 ++buttons_count; | |
2188 ++first_rows; | |
2189 pGUIWindow_CurrentMenu->CreateButton(246, current_Y, 204, uCurrFontHeght - 3, 3, skill_id | 0x8000, UIMSG_SkillUp, skill_id, 0, "", 0, 0); | |
2190 } | |
2191 } | |
2192 if ( !first_rows ) | |
2193 current_Y += uCurrFontHeght - 3; | |
2194 current_Y += 2 * uCurrFontHeght - 6; | |
2195 for(i=0; i<12; ++i) | |
2196 { | |
2197 skill_id = pMiscSkills[i]; | |
2198 if ( curr_player->pActiveSkills[skill_id] & 0x3F ) | |
2199 { | |
2200 current_Y += uCurrFontHeght - 3; | |
2201 ++buttons_count; | |
2202 pGUIWindow_CurrentMenu->CreateButton(246, current_Y, 204, uCurrFontHeght - 3, 3, skill_id | 0x8000, UIMSG_SkillUp, skill_id, 0, "", 0, 0); | |
2203 } | |
2204 } | |
2205 | |
2206 if ( buttons_count ) | |
2207 pGUIWindow_CurrentMenu->_41D08F_set_keyboard_control_group(buttons_count, 1, 0, pGUIWindow_CurrentMenu->uNumControls); | |
2208 } | |
2209 | |
2210 | |
2211 | |
2212 //----- (00418511) -------------------------------------------------------- | |
2213 void CharacterUI_StatsTab_Draw( Player *player ) | |
2214 { | |
2215 //Player *pPlayer; // edi@1 | |
2216 //unsigned int v4; // eax@2 | |
2217 int v7; // ebp@4 | |
2218 int v8; // eax@4 | |
2219 unsigned int v9; // eax@4 | |
2220 int v10; // ST34_4@4 | |
2221 int v13; // ebp@4 | |
2222 int v14; // eax@4 | |
2223 unsigned int v15; // eax@4 | |
2224 int v19; // ebp@4 | |
2225 int v20; // eax@4 | |
2226 unsigned int v21; // eax@4 | |
2227 int v25; // ebp@4 | |
2228 int v26; // eax@4 | |
2229 unsigned int v27; // eax@4 | |
2230 int v31; // ebp@4 | |
2231 int v32; // eax@4 | |
2232 unsigned int v33; // eax@4 | |
2233 int v37; // ebp@4 | |
2234 int v38; // eax@4 | |
2235 unsigned int v39; // eax@4 | |
2236 int v43; // ebp@4 | |
2237 int v44; // eax@4 | |
2238 unsigned int v45; // eax@4 | |
2239 signed int v49; // eax@6 | |
2240 unsigned int v50; // eax@6 | |
2241 int v53; // eax@8 | |
2242 unsigned int v54; // eax@8 | |
2243 int v58; // ebp@8 | |
2244 int v59; // eax@8 | |
2245 unsigned int v60; // eax@8 | |
2246 unsigned int v62; // eax@8 | |
2247 signed int v64; // eax@8 | |
2248 //unsigned __int8 v66; // al@8 | |
2249 char *v67; // eax@9 | |
2250 signed int v70; // ebp@11 | |
2251 signed int v71; // eax@11 | |
2252 unsigned int v72; // eax@11 | |
2253 int v75; // ebp@13 | |
2254 int v76; // eax@13 | |
2255 unsigned int v77; // eax@13 | |
2256 char *v78; // ecx@14 | |
2257 unsigned int v81; // eax@16 | |
2258 int v83; // eax@16 | |
2259 char *v85; // eax@16 | |
2260 int v87; // eax@16 | |
2261 char *v89; // eax@16 | |
2262 int v90; // eax@16 | |
2263 unsigned int v92; // eax@19 | |
2264 int v93; // eax@19 | |
2265 unsigned int v95; // eax@22 | |
2266 int v96; // eax@22 | |
2267 unsigned int v98; // eax@25 | |
2268 int v99; // eax@25 | |
2269 unsigned int v101; // eax@27 | |
2270 int v102; // eax@27 | |
2271 unsigned int v104; // eax@30 | |
2272 unsigned int v106; // eax@32 | |
2273 int v107; // eax@33 | |
2274 unsigned int v109; // eax@36 | |
2275 unsigned int v111; // eax@38 | |
2276 const char *a2; // [sp+14h] [bp-Ch]@4 | |
2277 const char *a2a; // [sp+14h] [bp-Ch]@6 | |
2278 const char *a2b; // [sp+14h] [bp-Ch]@11 | |
2279 const char *a2c; // [sp+14h] [bp-Ch]@16 | |
2280 const char *a2d; // [sp+14h] [bp-Ch]@19 | |
2281 const char *a2e; // [sp+14h] [bp-Ch]@22 | |
2282 const char *a2f; // [sp+14h] [bp-Ch]@25 | |
2283 const char *a2g; // [sp+14h] [bp-Ch]@27 | |
2284 const char *a2h; // [sp+14h] [bp-Ch]@33 | |
2285 int v131; // [sp+18h] [bp-8h]@16 | |
2286 int v132; // [sp+18h] [bp-8h]@19 | |
2287 int v133; // [sp+18h] [bp-8h]@22 | |
2288 int v134; // [sp+18h] [bp-8h]@25 | |
2289 int v135; // [sp+18h] [bp-8h]@27 | |
2290 int v136; // [sp+18h] [bp-8h]@33 | |
2291 | |
2292 //pPlayer = &pParty->pPlayers[uPlayerID-1]; | |
2293 //pPlayer = player; | |
2294 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("fr_stats", TEXTURE_16BIT_PALETTE)); | |
2295 sprintf(pTmpBuf.data(), "\f%05d", ui_character_header_text_color); | |
2296 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[429], player->pName, pClassNames[player->classType]);//"^Pi[%s] %s" / "%s the %s" | |
2297 strcat(pTmpBuf.data(), pTmpBuf2.data()); | |
2298 sprintfex(pTmpBuf2.data(), "\f00000\r180%s: \f%05d%d\f00000\n\n\n", | |
2299 pGlobalTXT_LocalizationStrings[207], // "Skill points" | |
2300 player->uSkillPoints ? ui_character_bonus_text_color : ui_character_default_text_color, | |
2301 player->uSkillPoints); | |
2302 strcat(pTmpBuf.data(), pTmpBuf2.data()); | |
2303 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, 18, 0, pTmpBuf.data(), 0, 0, 0); | |
2304 | |
2305 v10 = 53; | |
2306 v7 = player->GetBaseStrength(); | |
2307 v8 = player->GetActualMight(); | |
2308 v9 = UI_GetHealthManaStringColor(v8, v7); | |
2309 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[144], v9, v8, v7);//Might | |
2310 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2311 | |
2312 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2313 v13 = player->GetBaseIntelligence(); | |
2314 v14 = player->GetActualIntelligence(); | |
2315 v15 = UI_GetHealthManaStringColor(v14, v13); | |
2316 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[116], v15, v14, v13);//Intellect | |
2317 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2318 | |
2319 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2320 v19 = player->GetBaseWillpower(); | |
2321 v20 = player->GetActualWillpower(); | |
2322 v21 = UI_GetHealthManaStringColor(v20, v19); | |
2323 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[163], v21, v20, v19);// | |
2324 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2325 | |
2326 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2327 v25 = player->GetBaseEndurance(); | |
2328 v26 = player->GetActualEndurance(); | |
2329 v27 = UI_GetHealthManaStringColor(v26, v25); | |
2330 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[75], v27, v26, v25);// | |
2331 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2332 | |
2333 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2334 v31 = player->GetBaseAccuracy(); | |
2335 v32 = player->GetActualAccuracy(); | |
2336 v33 = UI_GetHealthManaStringColor(v32, v31); | |
2337 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[1], v33, v32, v31); | |
2338 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2339 | |
2340 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2341 v37 = player->GetBaseSpeed(); | |
2342 v38 = player->GetActualSpeed(); | |
2343 v39 = UI_GetHealthManaStringColor(v38, v37); | |
2344 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[211], v39, v38, v37); | |
2345 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2346 | |
2347 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2348 v43 = player->GetBaseLuck(); | |
2349 v44 = player->GetActualLuck(); | |
2350 v45 = UI_GetHealthManaStringColor(v44, v43); | |
2351 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n\n", pGlobalTXT_LocalizationStrings[136], v45, v44, v43); | |
2352 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2353 | |
2354 a2 = "%s\f%05u\r424%d\f00000 /\t185%d\n"; | |
2355 v10 += 2 * LOBYTE(pFontArrus->uFontHeight) + 5; | |
2356 if ( player->GetMaxHealth() >= 1000 ) | |
2357 a2 = "%s\f%05u\r388%d\f00000 / %d\n"; | |
2358 v49 = player->GetMaxHealth(); | |
2359 v50 = UI_GetHealthManaStringColor(player->sHealth, v49); | |
2360 sprintf(pTmpBuf.data(), a2, pGlobalTXT_LocalizationStrings[108], v50, player->sHealth, v49); | |
2361 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2362 | |
2363 a2a = "%s\f%05u\r424%d\f00000 /\t185%d\n"; | |
2364 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2365 if ( player->GetMaxMana() >= 1000 ) | |
2366 a2a = "%s\f%05u\r388%d\f00000 / %d\n"; | |
2367 v53 = player->GetMaxMana(); | |
2368 v54 = UI_GetHealthManaStringColor(player->sMana, v53); | |
2369 sprintf(pTmpBuf.data(), a2a, pGlobalTXT_LocalizationStrings[212], v54, player->sMana, v53); | |
2370 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2371 | |
2372 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2373 v58 = player->GetBaseAC(); | |
2374 v59 = player->GetActualAC(); | |
2375 v60 = UI_GetHealthManaStringColor(v59, v58); | |
2376 sprintf(pTmpBuf.data(), "%s\f%05u\r424%d\f00000 /\t185%d\n\n", pGlobalTXT_LocalizationStrings[12], v60, v59, v58); | |
2377 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2378 | |
2379 v10 += 2 * LOBYTE(pFontArrus->uFontHeight) - 2; | |
2380 v62 = player->GetMajorConditionIdx(); | |
2381 v64 = GetConditionDrawColor(v62); | |
2382 sprintf(pTmpBuf.data(), "%s: \f%05d%s\n", pGlobalTXT_LocalizationStrings[47], v64, aCharacterConditionNames[v62]); | |
2383 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x1Au, v10, 0, pTmpBuf.data(), 226, 0); | |
2384 | |
2385 v10 += LOBYTE(pFontArrus->uFontHeight) + - 1; | |
2386 if (player->uQuickSpell) | |
2387 v67 = pSpellStats->pInfos[player->uQuickSpell].pShortName; | |
2388 else | |
2389 v67 = pGlobalTXT_LocalizationStrings[153]; | |
2390 sprintf(pTmpBuf.data(), "%s: %s", pGlobalTXT_LocalizationStrings[172], v67); | |
2391 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x1Au, v10, 0, pTmpBuf.data(), 226, 0); | |
2392 | |
2393 v10 = 50; | |
2394 v70 = player->GetBaseAge(); | |
2395 v71 = player->GetActualAge(); | |
2396 v72 = UI_GetHealthManaStringColor(v71, v70); | |
2397 sprintf(pTmpBuf.data(), "%s\f%05u\t100%d\f00000 / %d\n", pGlobalTXT_LocalizationStrings[5], v72, v71, v70); | |
2398 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2399 | |
2400 a2b = "%s\f%05u\t100%d\f00000 / %d\n"; | |
2401 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2402 if ( player->GetBaseLevel() > 99 ) | |
2403 a2b = "%s\f%05u\t180%d\f00000 / %d\n"; | |
2404 v75 = player->GetBaseLevel(); | |
2405 v76 = player->GetActualLevel(); | |
2406 v77 = UI_GetHealthManaStringColor(v76, v75); | |
2407 sprintf(pTmpBuf.data(), a2b, pGlobalTXT_LocalizationStrings[131], v77, v76, v75); | |
2408 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2409 | |
2410 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2411 if (player->uExperience <= 9999999) | |
2412 v78 = pGlobalTXT_LocalizationStrings[83]; // "Experience" | |
2413 else | |
2414 v78 = pGlobalTXT_LocalizationStrings[17]; // "Exp." | |
2415 v81 = player->GetExperienceDisplayColor(); | |
2416 sprintf(pTmpBuf.data(), "%s\r180\f%05d%lu\f00000\n\n", v78, v81, LODWORD(player->uExperience)); | |
2417 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2418 | |
2419 v10 += 2 * LOBYTE(pFontArrus->uFontHeight); | |
2420 v83 = player->GetActualAttack(0); | |
2421 sprintf(pTmpBuf.data(), "%s\t100%+d\n", pGlobalTXT_LocalizationStrings[18], v83); | |
2422 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2423 | |
2424 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2425 v85 = player->GetMeleeDamageString(); | |
2426 sprintf(pTmpBuf.data(), "%s\t100 %s\n", pGlobalTXT_LocalizationStrings[53], v85); | |
2427 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2428 | |
2429 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2430 v87 = player->GetRangedAttack(); | |
2431 sprintf(pTmpBuf.data(), "%s\t100%+d\n", pGlobalTXT_LocalizationStrings[203], v87); | |
2432 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2433 | |
2434 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2435 v89 = player->GetRangedDamageString(); | |
2436 sprintf(pTmpBuf.data(), "%s\t100 %s\n\n", pGlobalTXT_LocalizationStrings[53], v89); | |
2437 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2438 | |
2439 a2c = format_4E2E10; | |
2440 v10 += 2 * LOBYTE(pFontArrus->uFontHeight) - 4; | |
2441 v131 = player->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE); | |
2442 v90 = player->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE); | |
2443 if ( v131 > 99 || v90 > 99 ) | |
2444 a2c = "%s\f%05u\t180%d\f00000 / %d\n"; | |
2445 v92 = UI_GetHealthManaStringColor(v131, v90); | |
2446 sprintf(pTmpBuf.data(), a2c, pGlobalTXT_LocalizationStrings[87], v92, v131, v90); | |
2447 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2448 | |
2449 a2d = format_4E2E10; | |
2450 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2451 v132 = player->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_AIR); | |
2452 v93 = player->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_AIR); | |
2453 if ( v132 > 99 || v93 > 99 ) | |
2454 a2d = "%s\f%05u\t180%d\f00000 / %d\n"; | |
2455 v95 = UI_GetHealthManaStringColor(v132, v93); | |
2456 sprintf(pTmpBuf.data(), a2d, pGlobalTXT_LocalizationStrings[6], v95, v132, v93); | |
2457 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2458 | |
2459 a2e = format_4E2E10; | |
2460 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2461 v133 = player->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_WATER); | |
2462 v96 = player->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_WATER); | |
2463 if ( v133 > 99 || v96 > 99 ) | |
2464 a2e = "%s\f%05u\t180%d\f00000 / %d\n"; | |
2465 v98 = UI_GetHealthManaStringColor(v133, v96); | |
2466 sprintf(pTmpBuf.data(), a2e, pGlobalTXT_LocalizationStrings[240], v98, v133, v96); | |
2467 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2468 | |
2469 a2f = format_4E2E10; | |
2470 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2471 v134 = player->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH); | |
2472 v99 = player->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH); | |
2473 if ( v134 > 99 ) | |
2474 a2f = "%s\f%05u\t180%d\f00000 / %d\n"; | |
2475 v101 = UI_GetHealthManaStringColor(v134, v99); | |
2476 sprintf(pTmpBuf.data(), a2f, pGlobalTXT_LocalizationStrings[70], v101, v134, v99); | |
2477 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2478 | |
2479 a2g = format_4E2E10; | |
2480 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2481 v135 = player->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_MIND); | |
2482 v102 = player->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_MIND); | |
2483 if ( v135 > 99 || v102 > 99 ) | |
2484 a2g = "%s\f%05u\t180%d\f00000 / %d\n"; | |
2485 v104 = UI_GetHealthManaStringColor(v135, v102); | |
2486 sprintf(pTmpBuf.data(), a2g, pGlobalTXT_LocalizationStrings[142], v104, v135, v102); | |
2487 if ( player->classType == PLAYER_CLASS_LICH && v102 == 200 ) | |
2488 { | |
2489 v106 = UI_GetHealthManaStringColor(v135, 200); | |
2490 sprintf(pTmpBuf.data(), format_4E2E00, pGlobalTXT_LocalizationStrings[142], v106, pGlobalTXT_LocalizationStrings[625]); | |
2491 } | |
2492 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2493 | |
2494 a2h = format_4E2E10; | |
2495 v10 += LOBYTE(pFontArrus->uFontHeight) - 2; | |
2496 v136 = player->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_BODY); | |
2497 v107 = player->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_BODY); | |
2498 if ( v136 > 99 || v107 > 99 ) | |
2499 a2h = "%s\f%05u\t180%d\f00000 / %d\n"; | |
2500 v109 = UI_GetHealthManaStringColor(v136, v107); | |
2501 sprintf(pTmpBuf.data(), a2h, pGlobalTXT_LocalizationStrings[29], v109, v136, v107); | |
2502 if ( player->classType == PLAYER_CLASS_LICH && v107 == 200 ) | |
2503 { | |
2504 v111 = UI_GetHealthManaStringColor(v136, 200); | |
2505 sprintf(pTmpBuf.data(), format_4E2E00, pGlobalTXT_LocalizationStrings[29], v111, pGlobalTXT_LocalizationStrings[625]); | |
2506 } | |
2507 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v10, 0, pTmpBuf.data(), 0, 0, 0); | |
2508 } | |
2509 | |
2510 bool awardSort (int i,int j) { | |
2511 if (pAwards[i].uPriority == 0) //none | |
2512 { | |
2513 return false; | |
2514 } | |
2515 else if (pAwards[j].uPriority == 0) | |
2516 { | |
2517 return true; | |
2518 } | |
2519 else if(pAwards[i].uPriority == 1) //fines,arena stuff,etc | |
2520 { | |
2521 return false; | |
2522 } | |
2523 else if(pAwards[j].uPriority == 1) | |
2524 { | |
2525 return true; | |
2526 } | |
2527 else if(pAwards[i].uPriority == 5) //joined guilds | |
2528 { | |
2529 return false; | |
2530 } | |
2531 else if(pAwards[j].uPriority == 5) | |
2532 { | |
2533 return true; | |
2534 } | |
2535 else | |
2536 { | |
2537 return (pAwards[i].uPriority<pAwards[j].uPriority); | |
2538 } | |
2539 } | |
2540 | |
2541 //----- (00419100) -------------------------------------------------------- | |
2542 void FillAwardsData() | |
2543 { | |
2544 auto pPlayer = pPlayers[uActiveCharacter]; | |
2545 | |
2546 memset(achieved_awards.data(), 0, 4000); | |
2547 num_achieved_awards = 0; | |
2548 | |
2549 memset(pTmpBuf2.data(), 0, 0x7D0u); | |
2550 BtnDown_flag = 0; | |
2551 BtnUp_flag = 0; | |
2552 dword_50651C = 0; | |
2553 dword_506528 = 0; | |
2554 for (int i = 0; i < 105; ++i) | |
2555 { | |
2556 if ( _449B57_test_bit(pPlayer->_guilds_member_bits, i) && pAwards[i].pText ) | |
2557 { | |
2558 achieved_awards[num_achieved_awards++] = (AwardType)i; | |
2559 } | |
2560 } | |
2561 num_achieved_awards_2 = num_achieved_awards; | |
2562 num_achieved_awards = 0; | |
2563 | |
2564 //sort awards index | |
2565 if (num_achieved_awards_2 > 0) | |
2566 { | |
2567 std::stable_sort(achieved_awards.begin(), achieved_awards.end(), awardSort); | |
2568 } | |
2569 } | |
2570 | |
2571 | |
2572 //----- (0043EF2B) -------------------------------------------------------- | |
2573 void WetsuitOn( unsigned int uPlayerID ) | |
2574 { | |
2575 CHARACTER_RACE player_race; // edi@2 | |
2576 signed int player_sex; // eax@2 | |
2577 int texture_num; // ecx@5 | |
2578 char pContainer[20]; // [sp+4h] [bp-1Ch]@7 | |
2579 | |
2580 if ( uPlayerID> 0 ) | |
2581 { | |
2582 player_race = pPlayers[uPlayerID]->GetRace(); | |
2583 player_sex = pPlayers[uPlayerID]->GetSexByVoice(); | |
2584 if ( player_race == CHARACTER_RACE_DWARF ) | |
2585 texture_num = (player_sex != 0) + 3; | |
2586 else | |
2587 texture_num = (player_sex != 0) + 1; | |
2588 wsprintfA(pContainer, "pc23v%dBod", texture_num); | |
2589 papredoll_dbods[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2590 wsprintfA(pContainer, "pc23v%dlad", texture_num); | |
2591 papredoll_dlads[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2592 wsprintfA(pContainer, "pc23v%dlau", texture_num); | |
2593 papredoll_dlaus[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2594 wsprintfA(pContainer, "pc23v%drh", texture_num); | |
2595 papredoll_drhs[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2596 wsprintfA(pContainer, "pc23v%dlh", texture_num); | |
2597 papredoll_dlhs[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2598 wsprintfA(pContainer, "pc23v%dlhu", texture_num); | |
2599 papredoll_dlhus[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2600 | |
2601 if ( pPlayers[uPlayerID]->uCurrentFace == 12 || pPlayers[uPlayerID]->uCurrentFace == 13 ) | |
2602 papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace] = 0; | |
2603 | |
2604 papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace] = 0; | |
2605 IsPlayerWearingWatersuit[uPlayerID] = 1; | |
2606 } | |
2607 } | |
2608 | |
2609 //----- (0043F0BD) -------------------------------------------------------- | |
2610 void WetsuitOff( unsigned int uPlayerID ) | |
2611 { | |
2612 char pContainer[20]; // [sp+0h] [bp-18h]@4 | |
2613 | |
2614 if (uPlayerID > 0 ) | |
2615 { | |
2616 papredoll_dbods[uPlayerID - 1] = pIcons_LOD->LoadTexture(dbod_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
2617 papredoll_dlads[uPlayerID - 1] = pIcons_LOD->LoadTexture(dlad_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
2618 papredoll_dlaus[uPlayerID - 1] = pIcons_LOD->LoadTexture(dlau_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
2619 papredoll_drhs [uPlayerID - 1] = pIcons_LOD->LoadTexture(drh_texnames_by_face [pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
2620 papredoll_dlhs [uPlayerID - 1] = pIcons_LOD->LoadTexture(dlh_texnames_by_face [pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
2621 papredoll_dlhus[uPlayerID - 1] = pIcons_LOD->LoadTexture(dlhu_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE); | |
2622 | |
2623 if ( pPlayers[uPlayerID]->uCurrentFace == 12 || pPlayers[uPlayerID]->uCurrentFace == 13 ) | |
2624 { | |
2625 wsprintfA(pContainer, "pc%02dbrd", pPlayers[uPlayerID]->uCurrentFace + 1); | |
2626 papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2627 } | |
2628 wsprintfA(pContainer, "item281pc%02d", pPlayers[uPlayerID]->uCurrentFace + 1); | |
2629 papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); | |
2630 IsPlayerWearingWatersuit[uPlayerID] = 0; | |
2631 } | |
2632 } | |
2633 //----- (00468F8A) -------------------------------------------------------- | |
2634 void __cdecl OnPaperdollLeftClick() | |
2635 { | |
2636 int v1; // ecx@1 | |
2637 unsigned int v2; // edi@1 | |
2638 unsigned int v3; // edx@4 | |
2639 unsigned int pSkillType; // esi@5 | |
2640 unsigned __int16 v5; // ax@7 | |
2641 unsigned int v6; // edi@19 | |
2642 int v7; // esi@27 | |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2643 int v8; // eax@29 |
1298 | 2644 int v9; // edx@32 |
2645 int v10; // esi@34 | |
2646 int v11; // eax@34 | |
2647 int v12; // esi@38 | |
2648 int v13; // eax@38 | |
2649 char v14; // zf@38 | |
2650 int v15; // esi@42 | |
2651 int v16; // eax@42 | |
2652 int v17; // eax@44 | |
2653 unsigned int v18; // ecx@55 | |
2654 unsigned int v19; // eax@55 | |
2655 int v20; // esi@60 | |
2656 int v21; // eax@60 | |
2657 unsigned int v22; // eax@61 | |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2658 int v23; // eax@62 |
1298 | 2659 int v24; // esi@65 |
2660 int v25; // eax@65 | |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2661 int v26; // eax@69 |
1298 | 2662 int v27; // esi@81 |
2663 int v28; // eax@81 | |
2664 int v29; // esi@84 | |
2665 int v30; // eax@84 | |
2666 int v31; // eax@85 | |
2667 unsigned int v32; // ecx@88 | |
2668 unsigned int v33; // eax@88 | |
2669 int v34; // esi@90 | |
2670 unsigned int v35; // eax@91 | |
2671 int v36; // esi@93 | |
2672 int v37; // edi@93 | |
2673 ItemGen *v38; // edi@93 | |
2674 __int16 v39; // dx@99 | |
2675 ItemGen _this; // [sp+Ch] [bp-40h]@1 | |
2676 unsigned int v48; // [sp+30h] [bp-1Ch]@88 | |
2677 unsigned int v49; // [sp+34h] [bp-18h]@57 | |
2678 unsigned int v50; // [sp+38h] [bp-14h]@50 | |
2679 int v51; // [sp+3Ch] [bp-10h]@1 | |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2680 int v52; // [sp+40h] [bp-Ch]@5 |
1298 | 2681 //int v53; // [sp+44h] [bp-8h]@1 |
2682 //unsigned int v54; // [sp+48h] [bp-4h]@1 | |
2683 | |
2684 v51 = 0; | |
2685 _this.Reset(); | |
2686 //v0 = pPlayers[uActiveCharacter]; | |
2687 v1 = pPlayers[uActiveCharacter]->pEquipment.uMainHand; | |
2688 v2 = pPlayers[uActiveCharacter]->pEquipment.uShield; | |
2689 //v54 = pPlayers[uActiveCharacter]->pEquipment.uShield; | |
2690 //v53 = v1; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2691 if ( v1 && pItemsTable->pItems[*(int *)&pPlayers[uActiveCharacter]->pInventoryItemList[v1 - 1]].uEquipType == 1 ) |
1298 | 2692 v51 = v1; |
2693 v3 = pParty->pPickedItem.uItemID; | |
2694 if ( pParty->pPickedItem.uItemID ) | |
2695 { | |
2696 v52 = pItemsTable->pItems[pParty->pPickedItem.uItemID].uEquipType; | |
2697 pSkillType = pItemsTable->pItems[pParty->pPickedItem.uItemID].uSkillType; | |
2698 if ( pSkillType == 4 ) | |
2699 { | |
2700 if ( v2 ) | |
2701 { | |
2702 LOBYTE(v5) = pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_SPEAR); | |
2703 if ( (signed int)SkillToMastery(v5) < 3 ) | |
2704 { | |
2705 pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0); | |
2706 return; | |
2707 } | |
2708 v3 = pParty->pPickedItem.uItemID; | |
2709 } | |
2710 } | |
2711 else | |
2712 { | |
2713 if ( (pSkillType == 8 || pSkillType == 1 || pSkillType == 2) | |
2714 && v1 | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2715 && pItemsTable->pItems[*(int *)&pPlayers[uActiveCharacter]->pInventoryItemList[v1-1]].uSkillType == 4 ) |
1298 | 2716 { |
2717 LOBYTE(v5) = pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_SPEAR); | |
2718 if ( (signed int)SkillToMastery(v5) < 3 ) | |
2719 { | |
2720 pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0); | |
2721 return; | |
2722 } | |
2723 } | |
2724 } | |
2725 if ( !pPlayers[uActiveCharacter]->CanEquip_RaceAndAlignmentCheck(v3) ) | |
2726 { | |
2727 | |
2728 pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0); | |
2729 return; | |
2730 } | |
1358
61010a655c94
a few itemID changed to their enum values + added a few new ones
Grumpy7
parents:
1299
diff
changeset
|
2731 if ( pParty->pPickedItem.uItemID == ITEM_WETSUIT ) |
1298 | 2732 { |
2733 pPlayers[uActiveCharacter]->EquipBody((ITEM_EQUIP_TYPE)3); | |
2734 WetsuitOn(uActiveCharacter); | |
2735 return; | |
2736 } | |
2737 v6 = v52; | |
2738 switch ( v52 ) | |
2739 { | |
2740 case 2u: | |
2741 case 3u: | |
2742 case 5u: | |
2743 case 6u: | |
2744 case 7u: | |
2745 case 8u: | |
2746 case 9u: | |
2747 case 0xBu: | |
2748 if ( !pPlayers[uActiveCharacter]->HasSkill(pSkillType) ) | |
2749 { | |
2750 pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0); | |
2751 return; | |
2752 } | |
2753 if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(uActiveCharacter) && (v6 != 3 || bUnderwater) ) | |
2754 { | |
2755 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); | |
2756 return; | |
2757 } | |
2758 pPlayers[uActiveCharacter]->EquipBody((ITEM_EQUIP_TYPE)v6); | |
1358
61010a655c94
a few itemID changed to their enum values + added a few new ones
Grumpy7
parents:
1299
diff
changeset
|
2759 if ( pParty->pPickedItem.uItemID == ITEM_WETSUIT ) |
1298 | 2760 WetsuitOff(uActiveCharacter); |
2761 return; | |
2762 case 0xAu: | |
2763 if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(uActiveCharacter) ) | |
2764 { | |
2765 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); | |
2766 return; | |
2767 } | |
2768 v52 = 10; | |
2769 v7 = (int)&pPlayers[uActiveCharacter]->pEquipment.uRings; | |
2770 while ( 1 ) | |
2771 { | |
2772 if ( !*(int *)v7 ) | |
2773 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2774 v8 = pPlayers[uActiveCharacter]->FindFreeInventoryListSlot(); |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2775 if ( v8 >= 0 ) |
1298 | 2776 { |
2777 v9 = v52; | |
2778 pParty->pPickedItem.uBodyAnchor = v52 + 1; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2779 memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v8], &pParty->pPickedItem, sizeof(pPlayers[uActiveCharacter]->pInventoryItemList[v8])); |
1298 | 2780 *(&pPlayers[uActiveCharacter]->pEquipment.uShield + v9) = v8 + 1; |
2781 pMouse->RemoveHoldingItem(); | |
2782 break; | |
2783 } | |
2784 } | |
2785 ++v52; | |
2786 v7 += 4; | |
2787 if ( (signed int)v52 > 15 ) | |
2788 break; | |
2789 } | |
2790 if ( v52 == 16 ) | |
2791 { | |
2792 v52 = pPlayers[uActiveCharacter]->pEquipment.uRings[6] - 1; | |
2793 memcpy(&_this, &pParty->pPickedItem, sizeof(_this)); | |
2794 v10 = (int)((char *)pPlayers[uActiveCharacter] + 36 * v52); | |
2795 *(char *)(v10 + 556) = 0; | |
2796 pParty->pPickedItem.Reset(); | |
2797 pParty->SetHoldingItem((ItemGen *)(v10 + 532)); | |
2798 _this.uBodyAnchor = 16; | |
2799 v11 = v52 + 1; | |
2800 memcpy((void *)(v10 + 532), &_this, 0x24u); | |
2801 pPlayers[uActiveCharacter]->pEquipment.uRings[6] = v11; | |
2802 } | |
2803 return; | |
2804 case 4u: | |
2805 if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(uActiveCharacter) ) | |
2806 { | |
2807 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); | |
2808 return; | |
2809 } | |
2810 if ( !pPlayers[uActiveCharacter]->HasSkill(pSkillType) ) | |
2811 { | |
2812 pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0); | |
2813 return; | |
2814 } | |
2815 if ( v2 ) | |
2816 { | |
2817 --v2; | |
2818 memcpy(&_this, &pParty->pPickedItem, sizeof(_this)); | |
2819 v12 = (int)((char *)pPlayers[uActiveCharacter] + 36 * v2); | |
2820 *(char *)(v12 + 556) = 0; | |
2821 pParty->pPickedItem.Reset(); | |
2822 pParty->SetHoldingItem((ItemGen *)(v12 + 532)); | |
2823 _this.uBodyAnchor = 1; | |
2824 v13 = v2 + 1; | |
2825 v14 = v51 == 0; | |
2826 memcpy((void *)(v12 + 532), &_this, 0x24u); | |
2827 pPlayers[uActiveCharacter]->pEquipment.uShield = v13; | |
2828 if ( v14 ) | |
2829 return; | |
2830 } | |
2831 else | |
2832 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2833 v52 = pPlayers[uActiveCharacter]->FindFreeInventoryListSlot(); |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2834 if ( v52 < 0 ) |
1298 | 2835 return; |
2836 if ( !v51 ) | |
2837 { | |
2838 pParty->pPickedItem.uBodyAnchor = 1; | |
2839 v17 = v52 + 1; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2840 memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v52], &pParty->pPickedItem, sizeof(pPlayers[uActiveCharacter]->pInventoryItemList[v52])); |
1298 | 2841 pPlayers[uActiveCharacter]->pEquipment.uShield = v17; |
2842 pMouse->RemoveHoldingItem(); | |
2843 return; | |
2844 } | |
2845 memcpy(&_this, &pParty->pPickedItem, sizeof(_this)); | |
2846 v15 = (int)((char *)pPlayers[uActiveCharacter] + 36 * (v1 - 1)); | |
2847 *(char *)(v15 + 556) = 0; | |
2848 pParty->pPickedItem.Reset(); | |
2849 pParty->SetHoldingItem((ItemGen *)(v15 + 532)); | |
2850 _this.uBodyAnchor = 1; | |
2851 v16 = v52 + 1; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2852 memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v52], &_this, sizeof(pPlayers[uActiveCharacter]->pInventoryItemList[v52])); |
1298 | 2853 pPlayers[uActiveCharacter]->pEquipment.uShield = v16; |
2854 } | |
2855 pPlayers[uActiveCharacter]->pEquipment.uMainHand = 0; | |
2856 return; | |
2857 case 0u: | |
2858 case 0xCu: | |
2859 if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(uActiveCharacter) | |
2860 && pParty->pPickedItem.uItemID != 64 | |
2861 && pParty->pPickedItem.uItemID != 65 ) | |
2862 { | |
2863 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); | |
2864 return; | |
2865 } | |
2866 if ( !pPlayers[uActiveCharacter]->HasSkill(pSkillType) ) | |
2867 { | |
2868 pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0); | |
2869 return; | |
2870 } | |
2871 v50 = 0; | |
2872 if ( pSkillType == 2 && (unsigned __int16)(pPlayers[uActiveCharacter]->pActiveSkills[2] & 0xFFC0) | |
2873 || pSkillType == 1 && (signed int)SkillToMastery(pPlayers[uActiveCharacter]->pActiveSkills[1]) >= 3 ) | |
2874 { | |
2875 | |
2876 v18 = pMouse->uMouseClickX; | |
2877 v19 = pMouse->uMouseClickY; | |
2878 | |
2879 v49 = v19; | |
2880 if ( (signed int)v18 >= 560 ) | |
2881 { | |
2882 if ( !v51 ) | |
2883 { | |
2884 if ( v2 ) | |
2885 { | |
2886 --v2; | |
2887 memcpy(&_this, &pParty->pPickedItem, sizeof(_this)); | |
2888 v20 = (int)((char *)pPlayers[uActiveCharacter] + 36 * v2); | |
2889 *(char *)(v20 + 556) = 0; | |
2890 pParty->pPickedItem.Reset(); | |
2891 pParty->SetHoldingItem((ItemGen *)(v20 + 532)); | |
2892 _this.uBodyAnchor = 1; | |
2893 v21 = v2 + 1; | |
2894 v14 = v52 == 12; | |
2895 memcpy((void *)(v20 + 532), &_this, 0x24u); | |
2896 pPlayers[uActiveCharacter]->pEquipment.uShield = v21; | |
2897 if ( !v14 ) | |
2898 return; | |
2899 v22 = _this.uItemID; | |
2900 v50 = v22; | |
2901 if ( v50 ) | |
2902 { | |
2903 __debugbreak(); // looks like offset in player's inventory and wand_lut much like case in 0042ECB5 | |
2904 stru_A750F8[uActiveCharacter - 1]._494836(*((int *)&pSpellDatas[66].uNormalLevelRecovery + v50), uActiveCharacter - 1 + 9); | |
2905 } | |
2906 break; | |
2907 } | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2908 v23 = pPlayers[uActiveCharacter]->FindFreeInventoryListSlot(); |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2909 if ( v23 < 0 ) |
1298 | 2910 return; |
2911 pParty->pPickedItem.uBodyAnchor = 1; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2912 v50 = (unsigned int)&pPlayers[uActiveCharacter]->pInventoryItemList[v23]; |
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2913 memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v23], &pParty->pPickedItem, sizeof(pPlayers[uActiveCharacter]->pInventoryItemList[v23])); |
1298 | 2914 pPlayers[uActiveCharacter]->pEquipment.uShield = v23 + 1; |
2915 pMouse->RemoveHoldingItem(); | |
2916 if ( v52 != 12 ) | |
2917 return; | |
2918 v22 = *(int *)v50; | |
2919 v50 = v22; | |
2920 if ( v50 ) | |
2921 { | |
2922 __debugbreak(); // looks like offset in player's inventory and wand_lut much like case in 0042ECB5 | |
2923 stru_A750F8[uActiveCharacter - 1]._494836(*((int *)&pSpellDatas[66].uNormalLevelRecovery + v50), uActiveCharacter - 1 + 9); | |
2924 } | |
2925 break; | |
2926 } | |
2927 } | |
2928 } | |
2929 if ( !v1 ) | |
2930 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2931 v26 = pPlayers[uActiveCharacter]->FindFreeInventoryListSlot(); |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
2932 if ( v26 < 0 ) |
1298 | 2933 return; |
2934 pParty->pPickedItem.uBodyAnchor = 2; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2935 v50 = (unsigned int)&pPlayers[uActiveCharacter]->pInventoryItemList[v26]; |
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
2936 memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v26], &pParty->pPickedItem, sizeof(pPlayers[uActiveCharacter]->pInventoryItemList[v26])); |
1298 | 2937 pPlayers[uActiveCharacter]->pEquipment.uMainHand = v26 + 1; |
2938 pMouse->RemoveHoldingItem(); | |
2939 if ( v52 != 12 ) | |
2940 return; | |
2941 v22 = *(int *)v50; | |
2942 v50 = v22; | |
2943 if ( v50 ) | |
2944 { | |
2945 __debugbreak(); // looks like offset in player's inventory and wand_lut much like case in 0042ECB5 | |
2946 stru_A750F8[uActiveCharacter - 1]._494836(*((int *)&pSpellDatas[66].uNormalLevelRecovery + v50), uActiveCharacter - 1 + 9); | |
2947 } | |
2948 break; | |
2949 } | |
2950 --v1; | |
2951 memcpy(&_this, &pParty->pPickedItem, sizeof(_this)); | |
2952 v24 = (int)((char *)pPlayers[uActiveCharacter] + 36 * v1); | |
2953 *(char *)(v24 + 556) = 0; | |
2954 pParty->pPickedItem.Reset(); | |
2955 pParty->SetHoldingItem((ItemGen *)(v24 + 532)); | |
2956 _this.uBodyAnchor = 2; | |
2957 v25 = v1 + 1; | |
2958 v14 = v52 == 12; | |
2959 memcpy((void *)(v24 + 532), &_this, 0x24u); | |
2960 pPlayers[uActiveCharacter]->pEquipment.uMainHand = v25; | |
2961 if ( v14 ) | |
2962 v50 = _this.uItemID; | |
2963 if ( v51 ) | |
2964 pPlayers[uActiveCharacter]->pEquipment.uShield = 0; | |
2965 if ( v50 ) | |
2966 { | |
2967 __debugbreak(); // looks like offset in player's inventory and wand_lut much like case in 0042ECB5 | |
2968 stru_A750F8[uActiveCharacter - 1]._494836( *((int *)&pSpellDatas[66].uNormalLevelRecovery + v50), uActiveCharacter - 1 + 9); | |
2969 } | |
2970 break; | |
2971 case 1u: | |
2972 if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(uActiveCharacter) ) | |
2973 { | |
2974 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); | |
2975 return; | |
2976 } | |
2977 if ( !pPlayers[uActiveCharacter]->HasSkill(pSkillType) ) | |
2978 { | |
2979 pPlayers[uActiveCharacter]->PlaySound(SPEECH_39, 0); | |
2980 return; | |
2981 } | |
2982 if ( v1 ) | |
2983 { | |
2984 if ( v2 ) | |
2985 { | |
2986 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); | |
2987 return; | |
2988 } | |
2989 --v1; | |
2990 memcpy(&_this, &pParty->pPickedItem, sizeof(_this)); | |
2991 v27 = (int)((char *)pPlayers[uActiveCharacter] + 36 * v1); | |
2992 *(char *)(v27 + 556) = 0; | |
2993 pParty->pPickedItem.Reset(); | |
2994 pParty->SetHoldingItem((ItemGen *)(v27 + 532)); | |
2995 _this.uBodyAnchor = 2; | |
2996 v28 = v1 + 1; | |
2997 memcpy((void *)(v27 + 532), &_this, 0x24u); | |
2998 pPlayers[uActiveCharacter]->pEquipment.uMainHand = v28; | |
2999 } | |
3000 else | |
3001 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
3002 v52 = pPlayers[uActiveCharacter]->FindFreeInventoryListSlot(); |
1365
b691c96d8e06
Player::FindFreeInventorySlot and Player::CreateItemInInventory refactoring
Grumpy7
parents:
1358
diff
changeset
|
3003 if ( v52 >= 0 ) |
1298 | 3004 { |
3005 if ( v2 ) | |
3006 { | |
3007 memcpy(&_this, &pParty->pPickedItem, sizeof(_this)); | |
3008 v29 = (int)((char *)pPlayers[uActiveCharacter] + 36 * (v2 - 1)); | |
3009 *(char *)(v29 + 556) = 0; | |
3010 pParty->pPickedItem.Reset(); | |
3011 pParty->SetHoldingItem((ItemGen *)(v29 + 532)); | |
3012 _this.uBodyAnchor = 2; | |
3013 v30 = v52 + 1; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
3014 memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v52], &_this, sizeof(pPlayers[uActiveCharacter]->pInventoryItemList[v52])); |
1298 | 3015 pPlayers[uActiveCharacter]->pEquipment.uShield = 0; |
3016 pPlayers[uActiveCharacter]->pEquipment.uMainHand = v30; | |
3017 } | |
3018 else | |
3019 { | |
3020 pParty->pPickedItem.uBodyAnchor = 2; | |
3021 v31 = v52 + 1; | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
3022 memcpy(&pPlayers[uActiveCharacter]->pInventoryItemList[v52], &pParty->pPickedItem, sizeof(pPlayers[uActiveCharacter]->pInventoryItemList[v52])); |
1298 | 3023 pPlayers[uActiveCharacter]->pEquipment.uMainHand = v31; |
3024 pMouse->RemoveHoldingItem(); | |
3025 } | |
3026 } | |
3027 } | |
3028 return; | |
3029 default: | |
3030 pPlayers[uActiveCharacter]->UseItem_DrinkPotion_etc(uActiveCharacter, 0); | |
3031 return; | |
3032 } | |
3033 return; | |
3034 } | |
3035 | |
3036 v32 = pMouse->uMouseClickX; | |
3037 v33 = pMouse->uMouseClickY; | |
3038 | |
3039 v34 = pRenderer->pActiveZBuffer[v32 + pSRZBufferLineOffsets[v33]] & 0xFFFF; | |
3040 if ( v34 ) | |
3041 { | |
3042 v36 = v34 - 1; | |
3043 v37 = (int)((char *)pPlayers[uActiveCharacter] + 36 * v36); | |
3044 v50 = v37; | |
3045 v38 = (ItemGen *)(v37 + 532); | |
1358
61010a655c94
a few itemID changed to their enum values + added a few new ones
Grumpy7
parents:
1299
diff
changeset
|
3046 v14 = v38->uItemID == ITEM_WETSUIT; |
1298 | 3047 v52 = pItemsTable->pItems[v38->uItemID].uEquipType; |
3048 if ( v14 ) | |
3049 { | |
3050 if ( bUnderwater ) | |
3051 { | |
3052 pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0); | |
3053 return; | |
3054 } | |
3055 WetsuitOff(uActiveCharacter); | |
3056 } | |
3057 if ( unk_50C9A0 ) | |
3058 { | |
3059 *((char *)pGUIWindow_Settings->ptr_1C + 8) &= 0x7Fu; | |
3060 *((short *)pGUIWindow_Settings->ptr_1C + 2) = uActiveCharacter - 1; | |
3061 v39 = v52; | |
3062 *((int *)pGUIWindow_Settings->ptr_1C + 3) = v36; | |
3063 *((short *)pGUIWindow_Settings->ptr_1C + 3) = v39; | |
3064 ptr_50C9A4 = v38; | |
3065 unk_50C9A0 = 0; | |
3066 if ( pMessageQueue_50CBD0->uNumMessages ) | |
3067 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; | |
3068 pMouse->SetCursorBitmap("MICON1"); | |
3069 dword_50C9D4 = 0; | |
3070 dword_50C9D0 = 113; | |
3071 dword_50C9D8 = 256; | |
3072 } | |
3073 else | |
3074 { | |
3075 if ( !ptr_50C9A4 ) | |
3076 { | |
3077 pParty->SetHoldingItem(v38); | |
3078 *(&pPlayers[uActiveCharacter]->uBirthYear + *(char *)(v50 + 556)) = 0; | |
3079 v38->Reset(); | |
3080 } | |
3081 } | |
3082 } | |
3083 else | |
3084 { | |
3085 v35 = pPlayers[uActiveCharacter]->pEquipment.uBow; | |
3086 if ( v35 ) | |
3087 { | |
1384
b51332ab228f
changed a few member variables in Player to slightly less confusing names
Grumpy7
parents:
1365
diff
changeset
|
3088 auto _a = (ItemGen *)&pPlayers[uActiveCharacter]->pInventoryItemList[v35 - 1]; |
1298 | 3089 pParty->SetHoldingItem(_a); |
3090 _a->Reset(); | |
3091 pPlayers[uActiveCharacter]->pEquipment.uBow = 0; | |
3092 } | |
3093 } | |
3094 } | |
3095 //----- (004196A0) -------------------------------------------------------- | |
3096 void CharacterUI_ReleaseButtons() | |
3097 { | |
3098 GUIButton *i; // esi@2 | |
3099 GUIButton *j; // esi@7 | |
3100 | |
3101 if ( dword_507CC0_activ_ch ) | |
3102 { | |
3103 dword_507CC0_activ_ch = 0; | |
3104 for ( i = pGUIWindow_CurrentMenu->pControlsHead; i; i = j ) | |
3105 { | |
3106 j=i->pNext; | |
3107 if ( BYTE1(i->field_1C) & 0x80 ) | |
3108 { | |
3109 i->Release(); | |
3110 pAllocator->FreeChunk(i); | |
3111 } | |
3112 } | |
3113 for ( j = pGUIWindow_CurrentMenu->pControlsHead; j; j = j->pNext ) | |
3114 { | |
3115 if ( j->msg == UIMSG_InventoryLeftClick) | |
3116 { | |
3117 j->uX = dword_50698C_uX; | |
3118 j->uY = dword_506988_uY; | |
3119 j->uZ = dword_506984_uZ; | |
3120 j->uW = dword_506980_uW; | |
3121 pGUIWindow_CurrentMenu->_41D08F_set_keyboard_control_group(1, 0, 0, 0); | |
3122 } | |
3123 } | |
3124 } | |
3125 } |