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