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