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