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