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