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