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