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