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 "Overlays.h"
|
|
15 #include "Monsters.h"
|
|
16 #include "Arcomage.h"
|
|
17 #include "LOD.h"
|
|
18 #include "Actor.h"
|
|
19 #include "Allocator.h"
|
|
20 #include "Events.h"
|
|
21 #include "Viewport.h"
|
|
22 #include "FrameTableInc.h"
|
|
23 #include "Math.h"
|
|
24 #include "SpriteObject.h"
|
|
25 #include "ObjectList.h"
|
|
26 #include "Chest.h"
|
|
27 #include "PaletteManager.h"
|
|
28 #include "DecorationList.h"
|
|
29 #include "SaveLoad.h"
|
|
30 #include "stru123.h"
|
|
31 #include "Time.h"
|
|
32 #include "IconFrameTable.h"
|
|
33 #include "Awards.h"
|
|
34 #include "Autonotes.h"
|
|
35 #include "stru160.h"
|
|
36 #include "TurnEngine.h"
|
924
|
37 #include "CastSpellInfo.h"
|
706
|
38 #include "Weather.h"
|
|
39 #include "stru298.h"
|
|
40 #include "StorylineTextTable.h"
|
|
41 #include "Events2D.h"
|
|
42 #include "texts.h"
|
|
43
|
|
44 #include "mm7_data.h"
|
|
45
|
|
46
|
|
47
|
|
48
|
|
49
|
|
50 //----- (00419719) --------------------------------------------------------
|
|
51 char __fastcall CharacterUI_SkillsTab_Draw(unsigned int uPlayerID)
|
|
52 {
|
|
53 unsigned int v1; // esi@1
|
|
54 Player *pPlayer; // ebp@1
|
|
55 unsigned int v3; // eax@1
|
|
56 signed int v4; // ecx@1
|
|
57 int v5; // edi@3
|
|
58 GUIWindow *v6; // ecx@3
|
|
59 int v7; // eax@4
|
|
60 GUIButton *v8; // edx@5
|
|
61 int v9; // eax@7
|
|
62 unsigned int v10; // ecx@9
|
|
63 unsigned __int16 v11; // ax@9
|
|
64 int v12; // eax@9
|
|
65 unsigned __int8 v13; // cf@12
|
|
66 unsigned __int8 v14; // zf@12
|
|
67 unsigned int v15; // eax@12
|
|
68 char *v16; // ecx@22
|
|
69 GUIWindow *v17; // ecx@33
|
|
70 int v18; // edx@34
|
|
71 GUIButton *v19; // eax@35
|
|
72 int v20; // edx@37
|
|
73 unsigned __int16 v21; // cx@39
|
|
74 unsigned int v22; // eax@39
|
|
75 int v23; // edi@39
|
|
76 unsigned int v24; // eax@42
|
|
77 char v25; // sf@52
|
|
78 char *v26; // ecx@52
|
|
79 int v27; // edi@63
|
|
80 GUIWindow *v28; // ecx@63
|
|
81 int v29; // edx@64
|
|
82 GUIButton *v30; // eax@65
|
|
83 int v31; // edx@67
|
|
84 unsigned int v32; // ecx@69
|
|
85 int v33; // eax@69
|
|
86 unsigned int v34; // eax@72
|
|
87 char *v35; // ecx@82
|
|
88 GUIWindow *v36; // ecx@93
|
|
89 int v37; // edx@94
|
|
90 GUIButton *v38; // eax@94
|
|
91 int v39; // edx@97
|
|
92 unsigned __int16 v40; // cx@99
|
|
93 unsigned int v41; // eax@99
|
|
94 int v42; // edi@99
|
|
95 unsigned int v43; // eax@102
|
|
96 char *v44; // ecx@112
|
|
97 char *v46; // [sp-Ch] [bp-4Ch]@19
|
|
98 char *v47; // [sp-Ch] [bp-4Ch]@49
|
|
99 char *v48; // [sp-Ch] [bp-4Ch]@79
|
|
100 char *v49; // [sp-Ch] [bp-4Ch]@109
|
|
101 unsigned int v50; // [sp-8h] [bp-48h]@19
|
|
102 unsigned int v51; // [sp-8h] [bp-48h]@49
|
|
103 unsigned int v52; // [sp-8h] [bp-48h]@79
|
|
104 unsigned int v53; // [sp-8h] [bp-48h]@109
|
|
105 int v54; // [sp-4h] [bp-44h]@19
|
|
106 int v55; // [sp-4h] [bp-44h]@49
|
|
107 int v56; // [sp-4h] [bp-44h]@79
|
|
108 int v57; // [sp-4h] [bp-44h]@109
|
|
109 unsigned int v58; // [sp+10h] [bp-30h]@9
|
|
110 unsigned int v59; // [sp+10h] [bp-30h]@39
|
|
111 unsigned int v60; // [sp+10h] [bp-30h]@69
|
|
112 unsigned int v61; // [sp+10h] [bp-30h]@99
|
|
113 int v62; // [sp+14h] [bp-2Ch]@4
|
|
114 int v63; // [sp+14h] [bp-2Ch]@34
|
|
115 int v64; // [sp+14h] [bp-2Ch]@64
|
|
116 int v65; // [sp+14h] [bp-2Ch]@94
|
|
117 signed int i; // [sp+18h] [bp-28h]@4
|
|
118 signed int v67; // [sp+18h] [bp-28h]@34
|
|
119 signed int v68; // [sp+18h] [bp-28h]@64
|
|
120 signed int v69; // [sp+18h] [bp-28h]@94
|
|
121 int v70; // [sp+1Ch] [bp-24h]@3
|
|
122 int v71; // [sp+1Ch] [bp-24h]@33
|
|
123 int v72; // [sp+1Ch] [bp-24h]@63
|
|
124 int v73; // [sp+1Ch] [bp-24h]@93
|
|
125 int uY; // [sp+20h] [bp-20h]@9
|
|
126 int uYa; // [sp+20h] [bp-20h]@33
|
|
127 int uYb; // [sp+20h] [bp-20h]@69
|
|
128 int uYc; // [sp+20h] [bp-20h]@93
|
|
129 unsigned int a5; // [sp+24h] [bp-1Ch]@1
|
|
130 unsigned int v79; // [sp+28h] [bp-18h]@1
|
|
131 int *v80; // [sp+2Ch] [bp-14h]@3
|
|
132 int *v81; // [sp+2Ch] [bp-14h]@33
|
|
133 int *v82; // [sp+2Ch] [bp-14h]@63
|
|
134 int *v83; // [sp+2Ch] [bp-14h]@93
|
|
135 unsigned int v84; // [sp+30h] [bp-10h]@1
|
|
136 int v85; // [sp+34h] [bp-Ch]@1
|
|
137 unsigned int v86; // [sp+38h] [bp-8h]@1
|
|
138 unsigned __int16 v87; // [sp+3Ch] [bp-4h]@9
|
|
139 char *v88; // [sp+3Ch] [bp-4h]@24
|
|
140 char *v89; // [sp+3Ch] [bp-4h]@54
|
|
141 unsigned __int16 v90; // [sp+3Ch] [bp-4h]@69
|
|
142 char *v91; // [sp+3Ch] [bp-4h]@84
|
|
143 char *v92; // [sp+3Ch] [bp-4h]@114
|
|
144
|
|
145 v1 = uPlayerID;
|
|
146 a5 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
147 v84 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xAFu, 0xFFu);
|
|
148 v85 = pGUIWindow_CurrentMenu->pCurrentPosActiveItem;
|
|
149 v86 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0, 0);
|
|
150 v79 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
|
|
151 pPlayer = &pParty->pPlayers[v1-1];
|
|
152 v3 = pIcons_LOD->LoadTexture("fr_skill", TEXTURE_16BIT_PALETTE);
|
|
153 pRenderer->DrawTextureIndexed(8u, 8u, (Texture *)(v3 != -1 ? (int)&pIcons_LOD->pTextures[v3] : 0));
|
|
154 v4 = v79;
|
|
155 if ( !pPlayer->uSkillPoints )
|
|
156 v4 = 65535;
|
|
157 sprintf(
|
|
158 pTmpBuf,
|
|
159 "%s \f%05d%s\f00000\r177%s: \f%05d%d\f00000",
|
|
160 pGlobalTXT_LocalizationStrings[206], // Skills for
|
|
161 a5,
|
|
162 pPlayer->pName,
|
|
163 pGlobalTXT_LocalizationStrings[207], // Skill Points
|
|
164 v4,
|
|
165 pPlayer->uSkillPoints);
|
|
166 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, 18, 0, pTmpBuf, 0, 0, 0);
|
|
167 v5 = 2 * LOBYTE(pFontLucida->uFontHeight) + 13;// Weapons, Level
|
|
168 sprintf(pTmpBuf, "%s\r400%s", pGlobalTXT_LocalizationStrings[242], pGlobalTXT_LocalizationStrings[131]);
|
|
169 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, v5, a5, pTmpBuf, 0, 0, 0);
|
|
170 v6 = pGUIWindow_CurrentMenu;
|
|
171 v70 = 0;
|
|
172 v80 = pWeaponSkills;
|
|
173 do
|
|
174 {
|
|
175 v62 = *v80;
|
|
176 v7 = 0;
|
|
177 for ( i = 0; i < (signed int)v6->uNumControls; v7 = i++ + 1 )
|
|
178 {
|
|
179 v8 = v6->pControlsHead;
|
|
180 if ( v7 > 0 )
|
|
181 {
|
|
182 do
|
|
183 {
|
|
184 v8 = v8->pNext;
|
|
185 --v7;
|
|
186 }
|
|
187 while ( v7 );
|
|
188 }
|
|
189 v9 = v8->field_1C;
|
|
190 if ( SBYTE1(v9) >= 0 )
|
|
191 continue;
|
|
192 BYTE1(v9) &= 0x7Fu;
|
|
193 if ( v9 != v62 )
|
|
194 continue;
|
|
195 v5 = v8->uY;
|
|
196 v10 = pPlayer->uSkillPoints;
|
|
197 ++v70;
|
|
198 v11 = pPlayer->pActiveSkills[v62];
|
|
199 v87 = pPlayer->pActiveSkills[v62];
|
|
200 v12 = v11 & 0x3F;
|
|
201 v58 = 0;
|
|
202 uY = v12;
|
|
203 if ( v10 >= v12 + 1 )
|
|
204 v58 = v84;
|
|
205 if ( v85 == i )
|
|
206 {
|
|
207 v13 = v10 < v12;
|
|
208 v14 = v10 == v12;
|
|
209 v15 = v86;
|
|
210 if ( !(v13 | v14) )
|
|
211 v15 = v79;
|
|
212 v58 = v15;
|
|
213 }
|
|
214 else
|
|
215 {
|
|
216 v15 = v58;
|
|
217 }
|
|
218 if ( HIBYTE(v87) & 1 )
|
|
219 {
|
|
220 if ( !v15 )
|
|
221 v15 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
222 v54 = uY;
|
|
223 v50 = v58;
|
|
224 v46 = pGlobalTXT_LocalizationStrings[96];
|
|
225 }
|
|
226 else
|
|
227 {
|
|
228 if ( !(v87 & 0xC0) )
|
|
229 {
|
|
230 sprintf(pTmpBuf, "%s\r400%2d", pSkillNames[v62], uY);
|
|
231 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, v5, v58, pTmpBuf, 0, 0, 0);
|
|
232 v6 = pGUIWindow_CurrentMenu;
|
|
233 continue;
|
|
234 }
|
|
235 v16 = pGlobalTXT_LocalizationStrings[432];
|
|
236 if ( (v87 & 0x80u) == 0 )
|
|
237 v16 = pGlobalTXT_LocalizationStrings[433];
|
|
238 v88 = v16;
|
|
239 if ( !v15 )
|
|
240 v15 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
241 v54 = uY;
|
|
242 v50 = v58;
|
|
243 v46 = v88;
|
|
244 }
|
|
245 sprintf(pTmpBuf, "%s ", pSkillNames[v62], v15, v46, v50, v54);
|
|
246 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, v5, v58, pTmpBuf, 0, 0, 0);
|
|
247 v6 = pGUIWindow_CurrentMenu;
|
|
248 }
|
|
249 ++v80;
|
|
250 }
|
|
251 while ( v80 <= &pWeaponSkills[8]);
|
|
252 if ( !v70 )
|
|
253 {
|
|
254 v5 = v5 + LOBYTE(pFontLucida->uFontHeight) - 3;
|
|
255 v6->DrawText(pFontLucida, 24, v5, 0, pGlobalTXT_LocalizationStrings[153], 0, 0, 0);
|
|
256 }
|
|
257 uYa = v5 + 2 * LOBYTE(pFontLucida->uFontHeight) - 10;
|
|
258 sprintf(pTmpBuf, "%s\r400%s", pGlobalTXT_LocalizationStrings[138], pGlobalTXT_LocalizationStrings[131]);
|
|
259 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, uYa, a5, pTmpBuf, 0, 0, 0);
|
|
260 v17 = pGUIWindow_CurrentMenu;
|
|
261 v71 = 0;
|
|
262 v81 = pMagicSkills;
|
|
263 do
|
|
264 {
|
|
265 v18 = 0;
|
|
266 v67 = 0;
|
|
267 v63 = *v81;
|
|
268 while ( v67 < (signed int)v17->uNumControls )
|
|
269 {
|
|
270 v19 = v17->pControlsHead;
|
|
271 if ( v18 > 0 )
|
|
272 {
|
|
273 do
|
|
274 {
|
|
275 v19 = v19->pNext;
|
|
276 --v18;
|
|
277 }
|
|
278 while ( v18 );
|
|
279 }
|
|
280 v20 = v19->field_1C;
|
|
281 if ( SBYTE1(v20) >= 0 || (BYTE1(v20) &= 0x7Fu, v20 != v63) )
|
|
282 {
|
|
283 v18 = v67++ + 1;
|
|
284 continue;
|
|
285 }
|
|
286 ++v71;
|
|
287 uYa = v19->uY;
|
|
288 v21 = pPlayer->pActiveSkills[v63];
|
|
289 v22 = pPlayer->uSkillPoints;
|
|
290 v23 = pPlayer->pActiveSkills[v63] & 0x3F;
|
|
291 v59 = 0;
|
|
292 if ( v22 >= v23 + 1 )
|
|
293 v59 = v84;
|
|
294 if ( v85 == v67 )
|
|
295 {
|
|
296 v13 = v22 < v23;
|
|
297 v14 = v22 == v23;
|
|
298 v24 = v86;
|
|
299 if ( !(v13 | v14) )
|
|
300 v24 = v79;
|
|
301 v59 = v24;
|
|
302 }
|
|
303 else
|
|
304 {
|
|
305 v24 = v59;
|
|
306 }
|
|
307 if ( HIBYTE(v21) & 1 )
|
|
308 {
|
|
309 if ( !v24 )
|
|
310 v24 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
311 v55 = v23;
|
|
312 v51 = v59;
|
|
313 v47 = pGlobalTXT_LocalizationStrings[96];
|
|
314 }
|
|
315 else
|
|
316 {
|
|
317 if ( !(v21 & 0xC0) )
|
|
318 {
|
|
319 sprintf(pTmpBuf, "%s\r400%2d", pSkillNames[v63], v23);
|
|
320 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, uYa, v59, pTmpBuf, 0, 0, 0);
|
|
321 v17 = pGUIWindow_CurrentMenu;
|
|
322 v18 = v67++ + 1;
|
|
323 continue;
|
|
324 }
|
|
325 v25 = (v21 & 0x80u) != 0;
|
|
326 v26 = pGlobalTXT_LocalizationStrings[432];
|
|
327 if ( !v25 )
|
|
328 v26 = pGlobalTXT_LocalizationStrings[433];
|
|
329 v89 = v26;
|
|
330 if ( !v24 )
|
|
331 v24 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
332 v55 = v23;
|
|
333 v51 = v59;
|
|
334 v47 = v89;
|
|
335 }
|
|
336 sprintf(pTmpBuf, "%s ", pSkillNames[v63], v24, v47, v51, v55);
|
|
337 //LABEL_58:
|
|
338 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 24, uYa, v59, pTmpBuf, 0, 0, 0);
|
|
339 v17 = pGUIWindow_CurrentMenu;
|
|
340 //LABEL_59:
|
|
341 v18 = v67++ + 1;
|
|
342 }
|
|
343 ++v81;
|
|
344 }
|
|
345 while ( v81 <= &pMagicSkills[8]);
|
|
346 if ( !v71 )
|
|
347 v17->DrawText(
|
|
348 pFontLucida,
|
|
349 24,
|
|
350 LOBYTE(pFontLucida->uFontHeight) + uYa - 3,
|
|
351 0,
|
|
352 pGlobalTXT_LocalizationStrings[153],
|
|
353 0,
|
|
354 0,
|
|
355 0);
|
|
356 v27 = 2 * LOBYTE(pFontLucida->uFontHeight) + 13;
|
|
357 sprintf(pTmpBuf, "%s\r177%s", pGlobalTXT_LocalizationStrings[11], pGlobalTXT_LocalizationStrings[131]);
|
|
358 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 248, v27, a5, pTmpBuf, 0, 0, 0);
|
|
359 v28 = pGUIWindow_CurrentMenu;
|
|
360 v72 = 0;
|
|
361 v82 = pArmorSkills;
|
|
362 do
|
|
363 {
|
|
364 v29 = 0;
|
|
365 v68 = 0;
|
|
366 v64 = *v82;
|
|
367 while ( v68 < (signed int)v28->uNumControls )
|
|
368 {
|
|
369 v30 = v28->pControlsHead;
|
|
370 if ( v29 > 0 )
|
|
371 {
|
|
372 do
|
|
373 {
|
|
374 v30 = v30->pNext;
|
|
375 --v29;
|
|
376 }
|
|
377 while ( v29 );
|
|
378 }
|
|
379 v31 = v30->field_1C;
|
|
380 if ( SBYTE1(v31) >= 0 || (BYTE1(v31) &= 0x7Fu, v31 != v64) )
|
|
381 {
|
|
382 v29 = v68++ + 1;
|
|
383 continue;
|
|
384 }
|
|
385 v27 = v30->uY;
|
|
386 ++v72;
|
|
387 v60 = 0;
|
|
388 v90 = pPlayer->pActiveSkills[v64];
|
|
389 v32 = pPlayer->uSkillPoints;
|
|
390 v33 = pPlayer->pActiveSkills[v64] & 0x3F;
|
|
391 uYb = v33;
|
|
392 if ( v32 >= v33 + 1 )
|
|
393 v60 = v84;
|
|
394 if ( v85 == v68 )
|
|
395 {
|
|
396 v13 = v32 < v33;
|
|
397 v14 = v32 == v33;
|
|
398 v34 = v86;
|
|
399 if ( !(v13 | v14) )
|
|
400 v34 = v79;
|
|
401 v60 = v34;
|
|
402 }
|
|
403 else
|
|
404 {
|
|
405 v34 = v60;
|
|
406 }
|
|
407 if ( (pPlayer->pActiveSkills[v64] >> 8) & 1 )
|
|
408 {
|
|
409 if ( !v34 )
|
|
410 v34 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
411 v56 = uYb;
|
|
412 v52 = v60;
|
|
413 v48 = pGlobalTXT_LocalizationStrings[96];
|
|
414 }
|
|
415 else
|
|
416 {
|
|
417 if ( !(v90 & 0xC0) )
|
|
418 {
|
|
419 sprintf(pTmpBuf, "%s\r177%2d", pSkillNames[v64], uYb);
|
|
420 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, v27, v60, pTmpBuf, 0, 0, 0);
|
|
421 v28 = pGUIWindow_CurrentMenu;
|
|
422 v29 = v68++ + 1;
|
|
423 continue;
|
|
424 }
|
|
425 v35 = pGlobalTXT_LocalizationStrings[432];
|
|
426 if ( (v90 & 0x80u) == 0 )
|
|
427 v35 = pGlobalTXT_LocalizationStrings[433];
|
|
428 v91 = v35;
|
|
429 if ( !v34 )
|
|
430 v34 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
431 v56 = uYb;
|
|
432 v52 = v60;
|
|
433 v48 = v91;
|
|
434 }
|
|
435 sprintf(pTmpBuf, "%s ", pSkillNames[v64], v34, v48, v52, v56);
|
|
436 //LABEL_88:
|
|
437 pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, v27, v60, pTmpBuf, 0, 0, 0);
|
|
438 v28 = pGUIWindow_CurrentMenu;
|
|
439 //LABEL_89:
|
|
440 v29 = v68++ + 1;
|
|
441 }
|
|
442 ++v82;
|
|
443 }
|
|
444 while ( v82 <= &pArmorSkills[4]);
|
|
445 if ( !v72 )
|
|
446 {
|
|
447 v27 = v27 + LOBYTE(pFontLucida->uFontHeight) - 3;
|
|
448 v28->DrawText(pFontLucida, 248, v27, 0, pGlobalTXT_LocalizationStrings[153], 0, 0, 0);
|
|
449 }
|
|
450 uYc = v27 + 2 * LOBYTE(pFontLucida->uFontHeight) - 10;
|
|
451 sprintf(pTmpBuf, "%s\r177%s", pGlobalTXT_LocalizationStrings[143], pGlobalTXT_LocalizationStrings[131]);
|
|
452 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 248, uYc, a5, pTmpBuf, 0, 0, 0);
|
|
453 v36 = pGUIWindow_CurrentMenu;
|
|
454 v73 = 0;
|
|
455 v83 = pMiscSkills;
|
|
456 do
|
|
457 {
|
|
458 v37 = 0;
|
|
459 v69 = 0;
|
|
460 v38 = (GUIButton *)*v83;
|
|
461 v65 = *v83;
|
|
462 while ( v69 < (signed int)v36->uNumControls )
|
|
463 {
|
|
464 v38 = v36->pControlsHead;
|
|
465 if ( v37 > 0 )
|
|
466 {
|
|
467 do
|
|
468 {
|
|
469 v38 = v38->pNext;
|
|
470 --v37;
|
|
471 }
|
|
472 while ( v37 );
|
|
473 }
|
|
474 v39 = v38->field_1C;
|
|
475 if ( SBYTE1(v39) >= 0 || (BYTE1(v39) &= 0x7Fu, v39 != v65) )
|
|
476 {
|
|
477 //goto LABEL_119;
|
|
478 v37 = v69++ + 1;
|
|
479 continue;
|
|
480 }
|
|
481 ++v73;
|
|
482 uYc = v38->uY;
|
|
483 v40 = pPlayer->pActiveSkills[v65];
|
|
484 v41 = pPlayer->uSkillPoints;
|
|
485 v42 = pPlayer->pActiveSkills[v65] & 0x3F;
|
|
486 v61 = 0;
|
|
487 if ( v41 >= v42 + 1 )
|
|
488 v61 = v84;
|
|
489 if ( v85 == v69 )
|
|
490 {
|
|
491 v13 = v41 < v42;
|
|
492 v14 = v41 == v42;
|
|
493 v43 = v86;
|
|
494 if ( !(v13 | v14) )
|
|
495 v43 = v79;
|
|
496 v61 = v43;
|
|
497 }
|
|
498 else
|
|
499 {
|
|
500 v43 = v61;
|
|
501 }
|
|
502 if ( HIBYTE(v40) & 1 )
|
|
503 {
|
|
504 if ( !v43 )
|
|
505 v43 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
506 v57 = v42;
|
|
507 v53 = v61;
|
|
508 v49 = pGlobalTXT_LocalizationStrings[96];
|
|
509 }
|
|
510 else
|
|
511 {
|
|
512 if ( !(v40 & 0xC0) )
|
|
513 {
|
|
514 sprintf(pTmpBuf, "%s\r177%2d", pSkillNames[v65], v42);
|
|
515 LOBYTE(v38) = pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, uYc, v61, pTmpBuf, 0, 0, 0);
|
|
516 v36 = pGUIWindow_CurrentMenu;
|
|
517 v37 = v69++ + 1;
|
|
518 continue;
|
|
519 }
|
|
520 v25 = (v40 & 0x80u) != 0;
|
|
521 v44 = pGlobalTXT_LocalizationStrings[432];
|
|
522 if ( !v25 )
|
|
523 v44 = pGlobalTXT_LocalizationStrings[433];
|
|
524 v92 = v44;
|
|
525 if ( !v43 )
|
|
526 v43 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
527 v57 = v42;
|
|
528 v53 = v61;
|
|
529 v49 = v92;
|
|
530 }
|
|
531 sprintf(pTmpBuf, "%s ", pSkillNames[v65], v43, v49, v53, v57);
|
|
532 LOBYTE(v38) = pGUIWindow_CurrentMenu->DrawText(pFontLucida, 248, uYc, v61, pTmpBuf, 0, 0, 0);
|
|
533 v36 = pGUIWindow_CurrentMenu;
|
|
534 v37 = v69++ + 1;
|
|
535 }
|
|
536 ++v83;
|
|
537 }
|
|
538 while ( v83 <= &pMiscSkills[11]);
|
|
539 if ( !v73 )
|
|
540 LOBYTE(v38) = v36->DrawText(
|
|
541 pFontLucida,
|
|
542 248,
|
|
543 LOBYTE(pFontLucida->uFontHeight) + uYc - 3,
|
|
544 0,
|
|
545 pGlobalTXT_LocalizationStrings[153],
|
|
546 0,
|
|
547 0,
|
|
548 0);
|
|
549 return (char)v38;
|
|
550 }
|
|
551
|
|
552 //----- (0041A000) --------------------------------------------------------
|
|
553 void CharacterUI_AwardsTab_Draw( unsigned int uPlayerID )
|
|
554 {
|
|
555 //unsigned int v1; // esi@1
|
|
556 unsigned int v2; // ebx@1
|
|
557 unsigned int award_texture_id; // eax@1
|
|
558 unsigned int result; // eax@1
|
|
559 int v5; // eax@15
|
|
560 char *v6; // ebx@15
|
|
561 int v7; // eax@23
|
|
562 int v8; // eax@24
|
|
563 int v9; // eax@25
|
|
564 int v10; // eax@27
|
|
565 int v11; // eax@32
|
|
566 int v12; // eax@33
|
|
567 int v13; // eax@34
|
|
568 signed int v14; // eax@43
|
|
569 unsigned int v15; // eax@43
|
|
570 int v16; // eax@43
|
|
571 int v17; // [sp-4h] [bp-D4h]@16
|
|
572 char Source[100]; // [sp+Ch] [bp-C4h]@1
|
|
573 GUIWindow a1; // [sp+70h] [bp-60h]@1
|
|
574 unsigned int v20; // [sp+C4h] [bp-Ch]@15
|
|
575 int v21; // [sp+C8h] [bp-8h]@14
|
|
576 int v22; // [sp+CCh] [bp-4h]@40
|
|
577
|
|
578 auto player = &pParty->pPlayers[uPlayerID - 1];
|
|
579 //v1 = uPlayerID;
|
|
580 v2 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
581 award_texture_id = pIcons_LOD->LoadTexture("fr_award", TEXTURE_16BIT_PALETTE);
|
|
582 pRenderer->DrawTextureIndexed(8u, 8u, (Texture *)(award_texture_id != -1 ? &pIcons_LOD->pTextures[award_texture_id] : 0));
|
|
583 sprintfex(pTmpBuf, "%s \f%05d", pGlobalTXT_LocalizationStrings[LOCSTR_AVARDS_FOR], v2);
|
|
584 sprintfex(Source, pGlobalTXT_LocalizationStrings[LOCSTR_S_THE_S], player->pName, pClassNames[player->classType]);
|
|
585 strcat(pTmpBuf, Source);
|
|
586 strcat(pTmpBuf, "\f00000");
|
|
587 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, 18, 0, pTmpBuf, 0, 0, 0);
|
|
588 result = dword_506528;
|
|
589 a1.uFrameX = 12;
|
|
590 a1.uFrameY = 48;
|
|
591 a1.uFrameWidth = 424;
|
|
592 a1.uFrameHeight = 290;
|
|
593 a1.uFrameZ = 435;
|
|
594 a1.uFrameW = 337;
|
|
595 if ( dword_506544 && awards_count + dword_506528 < awards_count2 )
|
|
596 result = dword_506528++ + 1;
|
|
597 if ( dword_506548 && result )
|
|
598 {
|
|
599 --result;
|
|
600 dword_506528 = result;
|
|
601 }
|
|
602 if ( dword_50651C < 0 )
|
|
603 {
|
|
604 result += awards_count;
|
|
605 dword_506528 = result;
|
|
606 if ( (signed int)(awards_count + result) > awards_count2 )
|
|
607 {
|
|
608 result = awards_count2 - awards_count;
|
|
609 dword_506528 = result;
|
|
610 }
|
|
611 }
|
|
612 else if ( dword_50651C > 0 )
|
|
613 {
|
|
614 result -= awards_count;
|
|
615 dword_506528 = result;
|
|
616 if ( (result & 0x80000000u) != 0 )
|
|
617 {
|
|
618 result = 0;
|
|
619 dword_506528 = result;
|
|
620 }
|
|
621 }
|
|
622 //LABEL_14:
|
|
623 dword_506544 = 0;
|
|
624 dword_506548 = 0;
|
|
625 awards_count = 0;
|
|
626 dword_50651C = 0;
|
|
627 v21 = result;
|
|
628 if ( (signed int)result < awards_count2 )
|
|
629 {
|
|
630 while ( 1 )
|
|
631 {
|
|
632 v5 = achievedAwardsIndex[v21];
|
|
633 v20 = achievedAwardsIndex[v21];
|
|
634 v6 = (char *)pAwards[v20].pText;//(char *)dword_723E80_award_related[v20 / 4];
|
|
635 if ( v5 != 1 )
|
|
636 {
|
|
637 if (!( (v5 < 85 || v5 > 91) && (v5 < 103 || v5 > 104) ))
|
|
638 {
|
|
639 if ( v5 > 89 )
|
|
640 {
|
|
641 if ( v5 == 90 )
|
|
642 {
|
|
643 v10 = (unsigned __int8)pParty->uNumArenaKnightWins;
|
|
644 v22 = v10;
|
|
645 }
|
|
646 else if ( v5 == 91 )
|
|
647 {
|
|
648 v10 = (unsigned __int8)pParty->uNumArenaLordWins;
|
|
649 v22 = v10;
|
|
650 }
|
|
651 else if ( v5 == 103 )
|
|
652 {
|
|
653 v10 = pParty->field_874;
|
|
654 v22 = v10;
|
|
655 }
|
|
656 else if ( v5 == 104 )
|
|
657 {
|
|
658 v10 = pParty->field_878;
|
|
659 v22 = v10;
|
|
660 }
|
|
661 }
|
|
662 else
|
|
663 {
|
|
664 if ( v5 == 89 )
|
|
665 {
|
|
666 v10 = (unsigned __int8)pParty->uNumArenaSquireWins;
|
|
667 v22 = v10;
|
|
668 }
|
|
669 else if ( v5 == 85 )
|
|
670 {
|
|
671 v10 = pParty->uNumDeaths;
|
|
672 v22 = v10;
|
|
673 }
|
|
674 else if ( v5 == 86 )
|
|
675 {
|
|
676 v10 = pParty->uNumBountiesCollected;
|
|
677 v22 = v10;
|
|
678 }
|
|
679 else if ( v5 == 87 )
|
|
680 {
|
|
681 v10 = pParty->uNumPrisonTerms;
|
|
682 v22 = v10;
|
|
683 }
|
|
684 else if ( v5 == 88)
|
|
685 {
|
|
686 v10 = (unsigned __int8)pParty->uNumArenaPageWins;
|
|
687 v22 = v10;
|
|
688 }
|
|
689 }
|
|
690 v17 = v22;
|
|
691 sprintf(pTmpBuf, v6, v17);
|
|
692 v6 = pTmpBuf;
|
|
693 }
|
|
694 }
|
|
695 else
|
|
696 {
|
|
697 v17 = pParty->uFine;
|
|
698 sprintf(pTmpBuf, v6, v17);
|
|
699 v6 = pTmpBuf;
|
|
700 }
|
|
701 v14 = pAwards[v20].uSort;//dword_723E84[v20 / 4];
|
|
702 ++awards_count;
|
|
703 v15 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(
|
|
704 pAwardsTextColors[3 * v14 % 6],
|
|
705 pAwardsTextColors[3 * v14 % 6 + 1],
|
|
706 pAwardsTextColors[3 * v14 % 6 + 2]);
|
|
707 a1.DrawText(pFontArrus, 0, 0, v15, v6, 0, 0, 0);
|
|
708 v16 = pFontArrus->CalcTextHeight(v6, &a1, 0, 0);
|
|
709 result = v16 + a1.uFrameY + 4;
|
|
710 if ( (signed int)result <= (signed int)a1.uFrameHeight )
|
|
711 {
|
|
712 ++v21;
|
|
713 a1.uFrameY = result;
|
|
714 result = v21;
|
|
715 if ( v21 < awards_count2 )
|
|
716 continue;
|
|
717 }
|
|
718 return;
|
|
719 }
|
|
720
|
|
721 }
|
|
722 return;
|
|
723 }
|
|
724
|
|
725
|
|
726
|
|
727
|
|
728
|
|
729
|
|
730 //----- (0041A2C1) --------------------------------------------------------
|
|
731 unsigned int __fastcall GetSizeInInventorySlots(unsigned int uNumPixels)
|
|
732 {
|
|
733 if ( (signed int)uNumPixels < 14 )
|
|
734 uNumPixels = 14;
|
|
735 return ((signed int)(uNumPixels - 14) >> 5) + 1;
|
|
736 }
|
|
737
|
|
738 //----- (0041A2D1) --------------------------------------------------------
|
|
739 void __fastcall CharacterUI_InventoryTab_Draw(unsigned int uPlayerID, char a2)
|
|
740 {
|
|
741 Player *pPlayer; // esi@1
|
|
742 char v3; // bl@1
|
|
743 unsigned int v4; // eax@2
|
|
744 ItemGen *pItem; // ebx@5
|
|
745 unsigned int v6; // eax@6
|
|
746 Texture *v7; // esi@6
|
|
747 __int16 v8; // ax@6
|
|
748 signed int v9; // edi@6
|
|
749 signed int v10; // ecx@6
|
|
750 signed int v11; // edx@6
|
|
751 signed int v12; // eax@11
|
|
752 int v13; // eax@13
|
|
753 signed int v14; // edx@13
|
|
754 int v15; // eax@13
|
|
755 unsigned int v16; // ebx@15
|
|
756 unsigned int v17; // edi@15
|
|
757 Texture *pTexture; // ebx@24
|
|
758 double v19; // st7@26
|
|
759 const char *v20; // [sp-8h] [bp-40h]@20
|
|
760 Player *pPlayer2; // [sp+14h] [bp-24h]@1
|
|
761 int uTextureId; // [sp+18h] [bp-20h]@6
|
|
762 int *v23; // [sp+1Ch] [bp-1Ch]@1
|
|
763 int v24; // [sp+20h] [bp-18h]@5
|
|
764 ItemGen *pItem2; // [sp+24h] [bp-14h]@5
|
|
765 int v26; // [sp+28h] [bp-10h]@3
|
|
766 unsigned int uCellID; // [sp+2Ch] [bp-Ch]@3
|
|
767 unsigned int uCellX; // [sp+30h] [bp-8h]@5
|
|
768 unsigned int uCellY; // [sp+34h] [bp-4h]@5
|
|
769
|
|
770 v23 = pRenderer->pActiveZBuffer;
|
|
771 pPlayer = pPlayers[uPlayerID];
|
|
772 v3 = a2;
|
|
773 pPlayer2 = pPlayers[uPlayerID];
|
|
774 pRenderer->DrawTextureIndexed(8, 8, (Texture *)(uTextureID_507958 != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_507958] : 0));
|
|
775 if ( v3 )
|
|
776 {
|
|
777 v4 = pIcons_LOD->LoadTexture("fr_strip", TEXTURE_16BIT_PALETTE);
|
|
778 pRenderer->DrawTextureIndexed(8u, 0x131u, (Texture *)(v4 != -1 ? (int)&pIcons_LOD->pTextures[v4] : 0));
|
|
779 }
|
|
780 uCellID = 0;
|
|
781 v26 = (int)pPlayer->pInventoryIndices;
|
|
782 do
|
|
783 {
|
|
784 if ( *(int *)v26 > 0 )
|
|
785 {
|
|
786 v24 = *(int *)v26 - 1;
|
|
787 uCellY = 32 * (uCellID / 14) + 17;
|
|
788 pItem = &pPlayer->pInventoryItems[v24];
|
|
789 uCellX = 32 * (uCellID % 14) + 14;
|
|
790 pItem2 = pItem;
|
|
791 if ( pItem->uItemID )
|
|
792 {
|
|
793 v6 = pIcons_LOD->LoadTexture(pItemsTable->pItems[pItem->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
|
|
794 uTextureId = v6;
|
|
795 v7 = (Texture *)(v6 != -1 ? (int)&pIcons_LOD->pTextures[v6] : 0);
|
|
796 v8 = (v6 != -1 ? pIcons_LOD->pTextures[v6].uTextureWidth : 24);
|
|
797 v9 = v7->uTextureHeight;
|
|
798 v10 = v7->uTextureWidth;
|
|
799 v11 = v7->uTextureWidth;
|
|
800 if ( v10 < 14 )
|
|
801 v11 = 14;
|
|
802 if ( (v11 - 14) >> 5 == 0 && v8 < 32 )
|
|
803 uCellX += (32 - v10) / 2;
|
|
804 v12 = v7->uTextureWidth;
|
|
805 if ( v10 < 14 )
|
|
806 v12 = 14;
|
|
807 v13 = v12 - 14;
|
|
808 v14 = v7->uTextureHeight;
|
|
809 LOBYTE(v13) = v13 & 0xE0;
|
|
810 v15 = v13 + 32;
|
|
811 if ( v9 < 14 )
|
|
812 v14 = 14;
|
|
813 v16 = pItem->uAttributes;
|
|
814 v17 = uCellX + ((v15 - v10) >> 1) + pSRZBufferLineOffsets[uCellY + ((((v14 - 14) & 0xFFFFFFE0) - v9 + 32) >> 1)];
|
|
815 if ( !(v16 & 0xF0) )
|
|
816 {
|
|
817 if (pItem->Identified() || pCurrentScreen != SCREEN_HOUSE )
|
|
818 {
|
|
819 if (pItem->Broken())
|
|
820 pRenderer->DrawTransparentRedShade(uCellX, uCellY, v7);
|
|
821 else
|
|
822 pRenderer->DrawTextureTransparent(uCellX, uCellY, v7);
|
|
823 }
|
|
824 else
|
|
825 {
|
|
826 pRenderer->DrawTransparentGreenShade(uCellX, uCellY, v7);
|
|
827 }
|
|
828 ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
|
|
829 pPlayer = pPlayer2;
|
|
830 //goto LABEL_34;
|
|
831 ++uCellID;
|
|
832 v26 += 4;
|
|
833 continue;
|
|
834 }
|
|
835 if ( (unsigned __int8)(v16 & 0xF0) != 16 )
|
|
836 {
|
|
837 if ( (unsigned __int8)(v16 & 0xF0) == 32 )
|
|
838 {
|
|
839 v20 = "sp28a";
|
|
840 pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
|
|
841 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
842 if ( dword_50C9A8 <= 0 )
|
|
843 {
|
|
844 dword_50C9A8 = 0;
|
|
845 LOBYTE(pItem2->uAttributes) &= 0xFu;
|
|
846 ptr_50C9A4 = 0;
|
|
847 }
|
|
848 v19 = (double)GetTickCount() * 0.1;
|
|
849 pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
|
|
850 ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
|
|
851 pPlayer = pPlayer2;
|
|
852 //goto LABEL_34;
|
|
853 ++uCellID;
|
|
854 v26 += 4;
|
|
855 continue;
|
|
856 }
|
|
857 if ( (unsigned __int8)(v16 & 0xF0) == 64 )
|
|
858 {
|
|
859 v20 = "sp30a";
|
|
860 pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
|
|
861 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
862 if ( dword_50C9A8 <= 0 )
|
|
863 {
|
|
864 dword_50C9A8 = 0;
|
|
865 LOBYTE(pItem2->uAttributes) &= 0xFu;
|
|
866 ptr_50C9A4 = 0;
|
|
867 }
|
|
868 v19 = (double)GetTickCount() * 0.1;
|
|
869 pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
|
|
870 ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
|
|
871 pPlayer = pPlayer2;
|
|
872 //goto LABEL_34;
|
|
873 ++uCellID;
|
|
874 v26 += 4;
|
|
875 continue;
|
|
876 }
|
|
877 if ( (unsigned __int8)(v16 & 0xF0) == 128 )
|
|
878 {
|
|
879 v20 = "sp91a";
|
|
880 pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
|
|
881 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
882 if ( dword_50C9A8 <= 0 )
|
|
883 {
|
|
884 dword_50C9A8 = 0;
|
|
885 LOBYTE(pItem2->uAttributes) &= 0xFu;
|
|
886 ptr_50C9A4 = 0;
|
|
887 }
|
|
888 v19 = (double)GetTickCount() * 0.1;
|
|
889 pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
|
|
890 ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
|
|
891 pPlayer = pPlayer2;
|
|
892 //goto LABEL_34;
|
|
893 ++uCellID;
|
|
894 v26 += 4;
|
|
895 continue;
|
|
896 }
|
|
897 }
|
|
898 v20 = "sptext01";
|
|
899 pTexture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v20, TEXTURE_16BIT_PALETTE)];
|
|
900 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
901 if ( dword_50C9A8 <= 0 )
|
|
902 {
|
|
903 dword_50C9A8 = 0;
|
|
904 LOBYTE(pItem2->uAttributes) &= 0xFu;
|
|
905 ptr_50C9A4 = 0;
|
|
906 }
|
|
907 v19 = (double)GetTickCount() * 0.1;
|
|
908 pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, (signed __int64)v19, 0, 255);
|
|
909 ZBuffer_Fill(&v23[v17], uTextureId, v24 + 1);
|
|
910 pPlayer = pPlayer2;
|
|
911 }
|
|
912 }
|
|
913 //LABEL_34:
|
|
914 ++uCellID;
|
|
915 v26 += 4;
|
|
916 }
|
|
917 while ( uCellID < 126 );
|
|
918 }
|
|
919
|
|
920 //----- (0041A556) --------------------------------------------------------
|
|
921 void __cdecl draw_leather()
|
|
922 {
|
|
923 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->GetTexture(uTextureID_Leather));
|
|
924 }
|
|
925
|
|
926 //----- (0041A57E) --------------------------------------------------------
|
|
927 void QuickRefDraw()
|
|
928 {
|
|
929 unsigned int v0; // ebx@1
|
|
930 //unsigned int v1; // eax@1
|
|
931 Player *pPlayer; // ebp@2
|
|
932 int v3; // eax@6
|
|
933 int v4; // edi@6
|
|
934 unsigned int v5; // eax@7
|
|
935 unsigned int v6; // edi@9
|
|
936 unsigned int v7; // edi@11
|
|
937 signed int v8; // eax@13
|
|
938 unsigned int v9; // eax@13
|
|
939 unsigned int v10; // edi@13
|
|
940 int v11; // eax@15
|
|
941 unsigned int v12; // eax@15
|
|
942 unsigned int v13; // edi@15
|
|
943 int v14; // eax@17
|
|
944 int v15; // ST18_4@17
|
|
945 int v16; // ebx@17
|
|
946 int v17; // eax@17
|
|
947 unsigned int v18; // eax@17
|
|
948 unsigned int v19; // edi@17
|
|
949 int v20; // eax@19
|
|
950 unsigned int v21; // edi@19
|
|
951 char *v22; // eax@21
|
|
952 unsigned int v23; // edi@21
|
|
953 int v24; // eax@23
|
|
954 unsigned int v25; // edi@23
|
|
955 char *v26; // eax@25
|
|
956 unsigned int v27; // edi@25
|
|
957 int v28; // ecx@27
|
|
958 char *v29; // eax@27
|
|
959 signed int v30; // edx@27
|
|
960 unsigned int v31; // edi@31
|
|
961 unsigned int v32; // edi@33
|
|
962 const char *v33; // ST10_4@35
|
|
963 unsigned int v34; // eax@35
|
|
964 unsigned int v35; // edi@35
|
|
965 unsigned __int8 v36; // al@37
|
|
966 char *v37; // eax@38
|
|
967 int v38; // eax@41
|
|
968 signed int v39; // edi@42
|
|
969 char *v40; // eax@45
|
|
970 unsigned int v41; // eax@45
|
|
971 signed int v43; // [sp+10h] [bp-1Ch]@1
|
|
972 unsigned int v44; // [sp+14h] [bp-18h]@2
|
|
973 int v45; // [sp+18h] [bp-14h]@1
|
|
974 unsigned int v46; // [sp+1Ch] [bp-10h]@1
|
|
975 unsigned int v47; // [sp+20h] [bp-Ch]@1
|
|
976 unsigned int v48; // [sp+24h] [bp-8h]@33
|
|
977 //unsigned int v49; // [sp+28h] [bp-4h]@1
|
|
978
|
|
979 v0 = 0;
|
|
980 v47 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
981 //v49 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0, 0);
|
|
982 v46 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
|
|
983 //v1 = pIcons_LOD->LoadTexture("quikref", TEXTURE_16BIT_PALETTE);
|
|
984 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("quikref", TEXTURE_16BIT_PALETTE));
|
|
985 v43 = 0;
|
|
986 v45 = LOBYTE(pFontArrus->uFontHeight) + 1;
|
|
987 do
|
|
988 {
|
|
989 pPlayer = &pParty->pPlayers[v43];
|
|
990 v44 = 94 * v43 + 89;
|
|
991 if ( v43 == v0 )
|
|
992 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, 0x12u, v0, pGlobalTXT_LocalizationStrings[149], 60, v0);//Name
|
|
993 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 94 * v43 + 89, 0x12u, v47, pPlayer->pName, 84, v0);
|
|
994 if ( v43 == v0 )
|
|
995 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, 0x2Fu, v0, pGlobalTXT_LocalizationStrings[131], 60, v0); //Óðîâ.
|
|
996 v3 = pPlayer->GetActualLevel();
|
|
997 sprintf(pTmpBuf, "%lu", v3);
|
|
998 v4 = pPlayer->GetBaseLevel();
|
|
999 if ( pPlayer->GetActualLevel() <= v4 )
|
|
1000 v5 = pPlayer->GetExperienceDisplayColor();
|
|
1001 else
|
|
1002 v5 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, v0);
|
|
1003 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, 0x2Fu, v5, pTmpBuf, 84, v0);
|
|
1004 v6 = v45 + 47;
|
|
1005 if ( v43 == v0 )
|
|
1006 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v45 + 47, v0, pGlobalTXT_LocalizationStrings[41], 60, v0);//Êëàññ
|
|
1007 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v6, v0, pClassNames[pPlayer->classType], 84, v0);
|
|
1008 v7 = v45 + v6;
|
|
1009 if ( v43 == v0 )
|
|
1010 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v7, v0, pGlobalTXT_LocalizationStrings[107], 60, v0);//Çäîð.
|
|
1011 sprintf(pTmpBuf, "%d", pPlayer->sHealth);
|
|
1012 v8 = pPlayer->GetMaxHealth();
|
|
1013 v9 = UI_GetHealthManaStringColor(pPlayer->sHealth, v8);
|
|
1014 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v7, v9, pTmpBuf, 84, v0);
|
|
1015 v10 = v45 + v7;
|
|
1016 if ( v43 == v0 )
|
|
1017 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v10, v0, pGlobalTXT_LocalizationStrings[209], 60, v0);//Ìàíà
|
|
1018 sprintf(pTmpBuf, "%d", pPlayer->sMana);
|
|
1019 v11 = pPlayer->GetMaxMana();
|
|
1020 v12 = UI_GetHealthManaStringColor(pPlayer->sMana, v11);
|
|
1021 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v10, v12, pTmpBuf, 84, v0);
|
|
1022 v13 = v45 + v10;
|
|
1023 if ( v43 == v0 )
|
|
1024 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v13, v0, pGlobalTXT_LocalizationStrings[0], 60, v0);//Êëàññ áðîíè
|
|
1025 v14 = pPlayer->GetActualAC();
|
|
1026 sprintf(pTmpBuf, "%d", v14);
|
|
1027 v15 = v0;
|
|
1028 v16 = pPlayer->GetBaseAC();
|
|
1029 v17 = pPlayer->GetActualAC();
|
|
1030 v18 = UI_GetHealthManaStringColor(v17, v16);
|
|
1031 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v13, v18, pTmpBuf, 84, v15);
|
|
1032 v0 = 0;
|
|
1033 v19 = v45 + v13;
|
|
1034 if ( !v43 )
|
|
1035 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v19, 0, pGlobalTXT_LocalizationStrings[18], 60, 0);//Àòàêà
|
|
1036 v20 = pPlayer->GetActualAttack(0);
|
|
1037 sprintf(pTmpBuf, "%+d", v20);
|
|
1038 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v19, 0, pTmpBuf, 84, 0);
|
|
1039 v21 = v45 + v19;
|
|
1040 if ( !v43 )
|
|
1041 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v21, 0, pGlobalTXT_LocalizationStrings[66], 60, 0);//Ïîâð.
|
|
1042 v22 = pPlayer->GetMeleeDamageString();
|
|
1043 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v21, 0, v22, 84, 0);
|
|
1044 v23 = v45 + v21;
|
|
1045 if ( !v43 )
|
|
1046 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v23, 0, pGlobalTXT_LocalizationStrings[203], 60, 0);// Ñòðåëÿòü
|
|
1047 v24 = pPlayer->GetRangedAttack();
|
|
1048 sprintf(pTmpBuf, "%+d", v24);
|
|
1049 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v23, 0, pTmpBuf, 84, 0);
|
|
1050 v25 = v45 + v23;
|
|
1051 if ( !v43 )
|
|
1052 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v25, 0, pGlobalTXT_LocalizationStrings[66], 60, 0);//Ïîâð.
|
|
1053 v26 = pPlayer->GetRangedDamageString();
|
|
1054 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v25, 0, v26, 84, 0);
|
|
1055 v27 = v45 + v25;
|
|
1056 if ( !v43 )
|
|
1057 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v27, 0, pGlobalTXT_LocalizationStrings[205], 60, 0);//Íàâûêè
|
|
1058 v28 = 0;
|
|
1059 v29 = (char *)pPlayer->pActiveSkills;
|
|
1060 v30 = 36;
|
|
1061 do
|
|
1062 {
|
|
1063 if ( *(short *)v29 )
|
|
1064 ++v28;
|
|
1065 v29 += 2;
|
|
1066 --v30;
|
|
1067 }
|
|
1068 while ( v30 );
|
|
1069 sprintf(pTmpBuf, "%lu", v28);
|
|
1070 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v27, 0, pTmpBuf, 84, 0);
|
|
1071 v31 = v45 + v27;
|
|
1072 if ( !v43 )
|
|
1073 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v31, 0, pGlobalTXT_LocalizationStrings[168], 60, 0);//Î÷êè
|
|
1074 sprintf(pTmpBuf, "%lu", pPlayer->uSkillPoints);
|
|
1075 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v31, pPlayer->uSkillPoints != 0 ? v46 : 0, pTmpBuf, 84, 0);
|
|
1076 v32 = v45 + v31;
|
|
1077 v48 = pPlayer->GetMajorConditionIdx();
|
|
1078 if ( !v43 )
|
|
1079 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v32, 0, pGlobalTXT_LocalizationStrings[45], 60, 0);//Ñîñò.
|
|
1080 v33 = aCharacterConditionNames[v48];
|
|
1081 v34 = GetConditionDrawColor(v48);
|
|
1082 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v32, v34, v33, 84, 0);
|
|
1083 v35 = v45 + v32;
|
|
1084 if ( !v43 )
|
|
1085 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x16u, v35, 0, pGlobalTXT_LocalizationStrings[170], 60, 0);//Á.Ïðèì.
|
|
1086 v36 = pPlayer->uQuickSpell;
|
|
1087 if ( v36 )
|
|
1088 v37 = pSpellStats->pInfos[v36].pShortName;
|
|
1089 else
|
|
1090 v37 = pGlobalTXT_LocalizationStrings[153];//Íåò
|
|
1091 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v35, 0, v37, 84, 0);
|
|
1092 ++v43;
|
|
1093 }
|
|
1094 while ( v43 < 4 );
|
|
1095
|
|
1096 v38 = GetPartyReputation();
|
|
1097 if ( v38 >= 0 )
|
|
1098 {
|
|
1099 if ( v38 <= 5 )
|
|
1100 v39 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFF, 0xFF, 0xFF);
|
|
1101 else
|
|
1102 v39 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFF, 0, 0);
|
|
1103 }
|
|
1104 else
|
|
1105 v39 = v46;
|
|
1106
|
|
1107 v40 = GetReputationString(v38);
|
|
1108 sprintf(pTmpBuf, "%s: \f%05d%s\f00000", pGlobalTXT_LocalizationStrings[180], v39, v40);//Reputation
|
|
1109 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 22, 323, 0, pTmpBuf, 0, 0, 0);
|
|
1110 v41 = pParty->GetPartyFame();
|
|
1111 sprintf(pTmpBuf, "\r261%s: %d", pGlobalTXT_LocalizationStrings[84], v41);// Fame Ñëàâà
|
|
1112 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 0, 323, 0, pTmpBuf, 0, 0, 0);
|
|
1113 }
|
|
1114
|
|
1115 //----- (0041ABFD) --------------------------------------------------------
|
910
|
1116 void __thiscall CharacterUI_CharacterScreen_Draw(unsigned int uPlayerIdx)
|
|
1117 {
|
|
1118 unsigned int v2; // eax@6
|
|
1119 Texture *pTexture; // ecx@6
|
|
1120 GUIButton *pButton; // eax@6
|
|
1121 unsigned int v5; // eax@7
|
|
1122 unsigned int v6; // eax@10
|
|
1123 unsigned int v7; // eax@11
|
706
|
1124
|
910
|
1125 if ( uPlayerIdx )
|
|
1126 {
|
|
1127 pRenderer->ClearZBuffer(0, 479);
|
|
1128 switch ( pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] )
|
|
1129 {
|
|
1130 case WINDOW_CharacterWindow_Stats: // stats
|
|
1131 sub_4196A0();
|
|
1132 sub_419379();
|
|
1133 CharacterUI_StatsTab_Draw(uPlayerIdx);
|
|
1134 v7 = pIcons_LOD->LoadTexture("ib-cd1-d", TEXTURE_16BIT_PALETTE);
|
|
1135 pTexture = (Texture *)(v7 != -1 ? (int)&pIcons_LOD->pTextures[v7] : 0);
|
|
1136 pButton = pCharacterScreen_StatsBtn;
|
|
1137 pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
|
|
1138 break;
|
|
1139 case WINDOW_CharacterWindow_Skills: // skills
|
|
1140 if ( dword_507CC0 != uActiveCharacter )
|
|
1141 {
|
|
1142 sub_4196A0();
|
|
1143 CharacterUI_SkillScreen_Draw();
|
706
|
1144 }
|
910
|
1145 sub_419379();
|
|
1146 CharacterUI_SkillsTab_Draw(uPlayerIdx);
|
|
1147 v6 = pIcons_LOD->LoadTexture("ib-cd2-d", TEXTURE_16BIT_PALETTE);
|
|
1148 pTexture = (Texture *)(v6 != -1 ? (int)&pIcons_LOD->pTextures[v6] : 0);
|
|
1149 pButton = pCharacterScreen_SkillsBtn;
|
|
1150 pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
|
|
1151 break;
|
|
1152 case WINDOW_CharacterWindow_Awards: // awards
|
|
1153 sub_4196A0();
|
|
1154 sub_419379();
|
|
1155 sub_419220();
|
|
1156 CharacterUI_AwardsTab_Draw(uPlayerIdx);
|
|
1157 v5 = pIcons_LOD->LoadTexture("ib-cd4-d", TEXTURE_16BIT_PALETTE);
|
|
1158 pTexture = (Texture *)(v5 != -1 ? (int)&pIcons_LOD->pTextures[v5] : 0);
|
|
1159 pButton = pCharacterScreen_AwardsBtn;
|
|
1160 pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
|
|
1161 break;
|
|
1162 case WINDOW_CharacterWindow_Inventory: // inventory and other
|
|
1163 sub_4196A0();
|
|
1164 sub_419379();
|
|
1165 CharacterUI_InventoryTab_Draw(uPlayerIdx, 0);
|
|
1166 v2 = pIcons_LOD->LoadTexture("ib-cd3-d", TEXTURE_16BIT_PALETTE);
|
|
1167 pTexture = (Texture *)(v2 != -1 ? (int)&pIcons_LOD->pTextures[v2] : 0);
|
|
1168 pButton = pCharacterScreen_InventoryBtn;
|
|
1169 pRenderer->DrawTextureIndexed(pButton->uX, pButton->uY, pTexture);
|
|
1170 break;
|
|
1171 default:
|
|
1172 break;
|
|
1173 }
|
|
1174 if ( bRingsShownInCharScreen )
|
|
1175 CharacterUI_DrawPaperdollWithRingOverlay(uPlayerIdx);
|
|
1176 else
|
|
1177 CharacterUI_DrawPaperdoll(uPlayerIdx);
|
|
1178 }
|
|
1179 }
|
706
|
1180
|
898
|
1181 //----- (0043CC7C) --------------------------------------------------------
|
|
1182 void __fastcall CharacterUI_DrawPaperdoll(unsigned int uPlayerID)
|
|
1183 {
|
|
1184 signed int pSex; // eax@1
|
|
1185 unsigned int v6; // ecx@9
|
899
|
1186 int v7; // ecx@10
|
|
1187 unsigned int pMainHandNum4; // eax@14
|
|
1188 ItemGen *item_MainHand4; // eax@15
|
|
1189 int v10; // edx@15
|
|
1190 unsigned int pX_MainHand4; // edi@15
|
|
1191 unsigned int v14; // ebx@18
|
|
1192 Texture *v16; // ebp@27
|
|
1193 double v17; // st7@29
|
|
1194 int v18; // edi@30
|
|
1195 char *v19; // eax@30
|
|
1196 unsigned int pBowNum; // eax@37
|
|
1197 ItemGen *itemBow; // edi@38
|
|
1198 int pX_Bow; // ebx@38
|
|
1199 double v28; // st7@51
|
|
1200 char *v30; // eax@54
|
|
1201 unsigned int pCloakNum; // eax@59
|
|
1202 ItemGen *item_Cloak; // edx@60
|
|
1203 int v33; // eax@65
|
|
1204 int v34; // eax@74
|
|
1205 int v35; // ebx@74
|
|
1206 LODFile_IconsBitmaps *v38; // ecx@78
|
|
1207 Texture *v39; // edi@85
|
|
1208 double v40; // st7@87
|
|
1209 int v41; // edi@88
|
|
1210 unsigned int pArmorNum; // eax@93
|
|
1211 ItemGen *item_Armor; // edx@94
|
|
1212 int v45; // eax@98
|
|
1213 int v48; // ebx@106
|
|
1214 LODFile_IconsBitmaps *v50; // ecx@110
|
|
1215 Texture *v51; // edi@117
|
|
1216 double v52; // st7@119
|
|
1217 int v53; // edi@120
|
|
1218 char *v55; // eax@122
|
|
1219 unsigned int pBootNum; // eax@127
|
|
1220 ItemGen *item_Boot; // edi@128
|
|
1221 int v59; // ebx@129
|
|
1222 int v60; // ecx@132
|
|
1223 Texture *v63; // edi@145
|
|
1224 double v64; // st7@147
|
|
1225 int v65; // edi@148
|
|
1226 char *v66; // eax@148
|
|
1227 unsigned int pMainHandNum; // edx@155
|
|
1228 int v70; // edx@156
|
|
1229 unsigned int pBeltNum; // eax@160
|
|
1230 ItemGen *item_Belt; // edi@161
|
|
1231 int v73; // edx@163
|
|
1232 unsigned int v75; // ebx@170
|
|
1233 Texture *v77; // edi@181
|
|
1234 double v78; // st7@183
|
|
1235 int v79; // edi@184
|
|
1236 char *v80; // eax@184
|
|
1237 unsigned int pMainHandNum2; // eax@192
|
|
1238 int v83; // eax@193
|
|
1239 int pArmorShoulderNum; // eax@197
|
|
1240 int v87; // eax@197
|
|
1241 int v88; // eax@198
|
|
1242 int v89; // eax@199
|
|
1243 int v94; // ebx@214
|
|
1244 int v95; // eax@214
|
|
1245 char *v96; // edi@226
|
|
1246 double v97; // st7@228
|
|
1247 int v98; // edi@229
|
|
1248 char *v99; // eax@229
|
|
1249 int pX_ArmorShoulder; // eax@237
|
|
1250 int pY_ArmorShoulder; // ecx@237
|
|
1251 int v106; // edx@238
|
|
1252 int v107; // edx@239
|
938
|
1253 int v108; // edx@240papredoll_flying_feet
|
899
|
1254 int v109; // edi@250
|
|
1255 char *v110; // edx@250
|
|
1256 unsigned int pCloakCollarNum; // eax@259
|
|
1257 ItemGen *item_CloakCollar; // eax@260
|
|
1258 int v114; // eax@265
|
|
1259 int v116; // ebx@274
|
706
|
1260 double v118; // st7@286
|
|
1261 int v119; // edi@287
|
|
1262 char *v120; // eax@287
|
|
1263 unsigned int v122; // edi@295
|
898
|
1264 int pHelmNum; // ebx@297
|
|
1265 ItemGen *item_Helm; // edi@298
|
706
|
1266 int v125; // ecx@303
|
|
1267 unsigned int v127; // ebx@314
|
|
1268 Texture *v129; // edi@325
|
|
1269 double v130; // st7@327
|
|
1270 int v131; // edi@328
|
|
1271 char *v132; // eax@328
|
898
|
1272 unsigned int pMainHandNum3; // eax@335
|
|
1273 ItemGen *item_MainHand3; // eax@336
|
706
|
1274 unsigned int v138; // ebx@339
|
|
1275 Texture *v140; // edi@348
|
|
1276 double v141; // st7@350
|
|
1277 int v142; // edi@351
|
|
1278 char *v143; // eax@351
|
898
|
1279 unsigned int pShieldNum; // eax@358
|
|
1280 ItemGen *item_Shield; // eax@359
|
706
|
1281 int v149; // edx@359
|
898
|
1282 int pX_Shield; // ebx@362
|
706
|
1283 int v151; // ecx@363
|
|
1284 int v152; // ecx@364
|
|
1285 unsigned int v153; // eax@370
|
|
1286 Texture *v157; // ebp@381
|
|
1287 double v158; // st7@383
|
|
1288 char *v160; // eax@386
|
898
|
1289 unsigned int pMainHandNum5; // eax@393
|
|
1290 ItemGen *item_MainHand5; // eax@394
|
706
|
1291 char *v166; // [sp-8h] [bp-54h]@16
|
|
1292 const char *v167; // [sp-8h] [bp-54h]@23
|
|
1293 const char *v168; // [sp-8h] [bp-54h]@43
|
|
1294 const char *v169; // [sp-8h] [bp-54h]@79
|
|
1295 const char *v170; // [sp-8h] [bp-54h]@111
|
|
1296 const char *v171; // [sp-8h] [bp-54h]@141
|
|
1297 const char *v172; // [sp-8h] [bp-54h]@177
|
|
1298 const char *v173; // [sp-8h] [bp-54h]@222
|
|
1299 const char *v178; // [sp-8h] [bp-54h]@242
|
|
1300 const char *v179; // [sp-8h] [bp-54h]@280
|
|
1301 const char *v180; // [sp-8h] [bp-54h]@321
|
|
1302 char *v181; // [sp-8h] [bp-54h]@337
|
|
1303 const char *v182; // [sp-8h] [bp-54h]@344
|
|
1304 const char *v183; // [sp-8h] [bp-54h]@375
|
|
1305 signed int v186; // [sp-4h] [bp-50h]@202
|
|
1306 signed int v191; // [sp-4h] [bp-50h]@266
|
|
1307 signed int v192; // [sp-4h] [bp-50h]@304
|
898
|
1308 int pY_MainHand4; // [sp+10h] [bp-3Ch]@15
|
|
1309 int pY_Bow; // [sp+10h] [bp-3Ch]@38
|
|
1310 unsigned int pY_Cloak; // [sp+10h] [bp-3Ch]@74
|
|
1311 unsigned int pY_Armor; // [sp+10h] [bp-3Ch]@106
|
|
1312 int pY_Boot; // [sp+10h] [bp-3Ch]@129
|
|
1313 int pY_Belt; // [sp+10h] [bp-3Ch]@168
|
|
1314 unsigned int pY_shoulder; // [sp+10h] [bp-3Ch]@216
|
|
1315 unsigned int pY_CloakCollar; // [sp+10h] [bp-3Ch]@274
|
|
1316 int pY_Helm; // [sp+10h] [bp-3Ch]@312
|
|
1317 int pY_MainHand3; // [sp+10h] [bp-3Ch]@336
|
|
1318 int pY_Shield; // [sp+10h] [bp-3Ch]@362
|
706
|
1319 Texture *a2b; // [sp+14h] [bp-38h]@49
|
898
|
1320 int pX_Cloak; // [sp+14h] [bp-38h]@74
|
|
1321 int pX_Armor; // [sp+14h] [bp-38h]@106
|
|
1322 int pX_Boot; // [sp+14h] [bp-38h]@129
|
|
1323 int pX_Belt; // [sp+14h] [bp-38h]@168
|
|
1324 int pX_shoulder; // [sp+14h] [bp-38h]@214
|
|
1325 int pX_CloakCollar; // [sp+14h] [bp-38h]@274
|
706
|
1326 Texture *a2i; // [sp+14h] [bp-38h]@284
|
898
|
1327 int pX_Helm; // [sp+14h] [bp-38h]@312
|
|
1328 int pX_MainHand3; // [sp+14h] [bp-38h]@336
|
706
|
1329 int pBodyComplection; // [sp+24h] [bp-28h]@6
|
898
|
1330 unsigned int pBowTextureNum; // [sp+2Ch] [bp-20h]@38
|
706
|
1331 signed int v245; // [sp+34h] [bp-18h]@361
|
|
1332 signed int IsDwarf; // [sp+40h] [bp-Ch]@4
|
|
1333
|
898
|
1334 pIcons_LOD->LoadTexture("sptext01", TEXTURE_16BIT_PALETTE);
|
|
1335 pSex = pPlayers[uPlayerID]->GetSexByVoice();
|
|
1336 if ( pPlayers[uPlayerID]->GetRace() && pPlayers[uPlayerID]->GetRace() != 1 && pPlayers[uPlayerID]->GetRace() != 2 )
|
|
1337 {
|
|
1338 IsDwarf = 1;
|
|
1339 pBodyComplection = (pSex != 0) + 2;
|
|
1340 }
|
|
1341 else
|
|
1342 {
|
|
1343 IsDwarf = 0;
|
|
1344 pBodyComplection = pSex != 0;
|
|
1345 }
|
|
1346 pRenderer->ResetTextureClipRect();
|
|
1347 pRenderer->DrawTextureIndexed(0x1D3u, 0, pIcons_LOD->GetTexture(uTextureID_BACKDOLL));//Ïîäëîæêà
|
|
1348 if ( IsPlayerWearingWatersuit[uPlayerID] )//àêâàëàíã
|
|
1349 {
|
|
1350 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY,
|
|
1351 (Texture *)(papredoll_dbods[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dbods[uPlayerID - 1]] : 0));
|
|
1352 if ( !bRingsShownInCharScreen )
|
|
1353 pRenderer->DrawMaskToZBuffer(pPaperdoll_BodyX, pPaperdoll_BodyY,
|
|
1354 (Texture *)(papredoll_dbods[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dbods[uPlayerID - 1]] : 0),
|
|
1355 pPlayers[uPlayerID]->pEquipment.uArmor);
|
|
1356 v6 = pPlayers[uPlayerID]->pEquipment.uMainHand;
|
|
1357 if ( !v6 || (v7 = *(int *)&pPlayers[uPlayerID]->pInventoryItems[v6-1], pItemsTable->pItems[v7].uEquipType != 1)
|
|
1358 && (pItemsTable->pItems[v7].uSkillType != 4 || pPlayers[uPlayerID]->pEquipment.uShield) )
|
|
1359 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
|
|
1360 (Texture *)(papredoll_dlads[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dlads[uPlayerID - 1]] : 0));
|
|
1361 pMainHandNum4 = pPlayers[uPlayerID]->pEquipment.uMainHand;
|
|
1362 if ( pMainHandNum4 )
|
|
1363 {
|
|
1364 item_MainHand4 = &pPlayers[uPlayerID]->pInventoryItems[pMainHandNum4 - 1];
|
|
1365 pX_MainHand4 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item_MainHand4->uItemID].uEquipX;
|
|
1366 pY_MainHand4 = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item_MainHand4->uItemID].uEquipY;
|
|
1367 if ( item_MainHand4->uItemID == 64 )
|
|
1368 v166 = "item64v1";
|
|
1369 else
|
|
1370 v166 = pItemsTable->pItems[item_MainHand4->uItemID].pIconName;
|
|
1371 v14 = pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE);
|
|
1372 if ( !( item_MainHand4->uAttributes & 0xF0 ) )
|
|
1373 {
|
|
1374 v18 = v14 + 1;
|
|
1375 v19 = (char *)&pIcons_LOD->pTextures[v14];
|
|
1376 if ( item_MainHand4->uAttributes & 2 )
|
|
1377 pRenderer->DrawTransparentRedShade(pX_MainHand4, pY_MainHand4, (Texture *)(v18 != 0 ? (int)v19 : 0));
|
|
1378 else
|
|
1379 {
|
|
1380 if ( item_MainHand4->uAttributes & 1 )
|
|
1381 pRenderer->DrawTextureTransparent(pX_MainHand4, pY_MainHand4, (Texture *)(v18 != 0 ? (int)v19 : 0));
|
|
1382 else
|
|
1383 pRenderer->DrawTransparentGreenShade(pX_MainHand4, pY_MainHand4, (Texture *)(v18 != 0 ? (int)v19 : 0));
|
|
1384 }
|
|
1385 }
|
|
1386 if ( item_MainHand4->uAttributes & 0xF0 )
|
|
1387 {
|
910
|
1388 if ( ( item_MainHand4->uAttributes & 0xF0) == 16 )
|
898
|
1389 v167 = "sptext01";
|
|
1390 if ( ( item_MainHand4->uAttributes & 0xF0) == 32 )
|
|
1391 v167 = "sp28a";
|
|
1392 if ( (item_MainHand4->uAttributes & 0xF0) == 64 )
|
|
1393 v167 = "sp30a";
|
|
1394 if ( (item_MainHand4->uAttributes & 0xF0) == 128 )
|
|
1395 v167 = "sp91a";
|
|
1396 v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
|
|
1397 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1398 if ( dword_50C9A8 <= 0 )
|
|
1399 {
|
|
1400 dword_50C9A8 = 0;
|
|
1401 item_MainHand4->uAttributes &= 0xFu;
|
|
1402 ptr_50C9A4 = 0;
|
|
1403 }
|
|
1404 v17 = (double)GetTickCount() * 0.1;
|
|
1405 pRenderer->_4A63E6(pX_MainHand4, pY_MainHand4, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
|
|
1406 }
|
|
1407 if ( !bRingsShownInCharScreen )
|
|
1408 pRenderer->DrawMaskToZBuffer(pX_MainHand4, pY_MainHand4, (Texture *)(v18 != 0 ? (int)v19 : 0), pMainHandNum4);
|
|
1409 }
|
|
1410 }
|
|
1411 else// áåç àêâàëàíãà
|
|
1412 {
|
|
1413 pBowNum = pPlayers[uPlayerID]->pEquipment.uBow; //ñíà÷àëà ðèñóåòñÿ ëóê
|
|
1414 if ( pBowNum )
|
|
1415 {
|
|
1416 itemBow = &pPlayers[uPlayerID]->pInventoryItems[pBowNum - 1];
|
|
1417 pX_Bow = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][2][0] - pItemsTable->pItems[itemBow->uItemID].uEquipX;
|
|
1418 pY_Bow = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][2][1] - pItemsTable->pItems[itemBow->uItemID].uEquipY;
|
|
1419 pBowTextureNum = pIcons_LOD->LoadTexture(pItemsTable->pItems[itemBow->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
|
|
1420 if ( !(itemBow->uAttributes & 0xF0) )// åñëè íå ïðèìåí¸í çàêë
|
|
1421 {
|
|
1422 if ( itemBow->uAttributes & 2 )
|
|
1423 pRenderer->DrawTransparentRedShade(pX_Bow, pY_Bow, (Texture *)(pBowTextureNum != -1 ? (int)&pIcons_LOD->pTextures[pBowTextureNum] : 0));
|
706
|
1424 else
|
898
|
1425 {
|
|
1426 v30 = (char *)&pIcons_LOD->pTextures[pBowTextureNum];
|
|
1427 if ( !(itemBow->uAttributes & 1) )//íå îïîçíàííûé ëóê çåë¸íûé
|
|
1428 pRenderer->DrawTransparentGreenShade(pX_Bow, pY_Bow, (Texture *)(pBowTextureNum != -1 ? (int)v30 : 0));
|
|
1429 else // îïîçíàííûé ëóê
|
|
1430 pRenderer->DrawTextureTransparent(pX_Bow, pY_Bow, (Texture *)(pBowTextureNum != -1 ? (int)v30 : 0));
|
|
1431 }
|
|
1432 }
|
|
1433 else
|
|
1434 {
|
|
1435 if ( (itemBow->uAttributes & 0xF0) == 16 )
|
|
1436 v168 = "sptext01";
|
|
1437 if ( (itemBow->uAttributes & 0xF0) == 32 )
|
|
1438 v168 = "sp28a";
|
|
1439 if ( (itemBow->uAttributes & 0xF0) == 64 )
|
|
1440 v168 = "sp30a";
|
|
1441 if ( (itemBow->uAttributes & 0xF0) == 128 )
|
|
1442 v168 = "sp91a";
|
|
1443 a2b = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
|
|
1444 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1445 if ( dword_50C9A8 <= 0 )
|
|
1446 {
|
|
1447 dword_50C9A8 = 0;
|
|
1448 itemBow->uAttributes &= 0xFu;
|
|
1449 ptr_50C9A4 = 0;
|
|
1450 }
|
|
1451 v28 = (double)GetTickCount() * 0.1;
|
|
1452 pRenderer->_4A63E6(pX_Bow, pY_Bow, (Texture *)(pBowTextureNum != -1 ? (int)&pIcons_LOD->pTextures[pBowTextureNum] : 0), a2b, (signed __int64)v28, 0, 255);
|
|
1453 }
|
|
1454 if ( !bRingsShownInCharScreen )
|
|
1455 pRenderer->DrawMaskToZBuffer(pX_Bow, pY_Bow, (Texture *)(pBowTextureNum != -1 ? (int)&pIcons_LOD->pTextures[pBowTextureNum] : 0), pBowNum);
|
|
1456 }
|
|
1457 pCloakNum = pPlayers[uPlayerID]->pEquipment.uCloak;// ïîòîì ïëàù
|
|
1458 if ( pCloakNum )
|
|
1459 {
|
|
1460 item_Cloak = &pPlayers[uPlayerID]->pInventoryItems[pCloakNum - 1];
|
|
1461 switch ( item_Cloak->uItemID )
|
|
1462 {
|
|
1463 case 525:
|
|
1464 v33 = 5;
|
|
1465 break;
|
|
1466 case 530:
|
|
1467 v33 = 6;
|
|
1468 break;
|
|
1469 case 547:
|
|
1470 v33 = 7;
|
|
1471 break;
|
|
1472 case 548:
|
|
1473 v33 = 8;
|
|
1474 break;
|
|
1475 case 550:
|
|
1476 v33 = 9;
|
|
1477 break;
|
|
1478 default:
|
|
1479 v33 = item_Cloak->uItemID - 105;
|
|
1480 break;
|
|
1481 }
|
|
1482 if ( v33 >= 0 && v33 < 10 )
|
|
1483 {
|
899
|
1484 v35 = paperdoll_cloak_texture[pBodyComplection][v33];//Texture_Cloak
|
|
1485 pX_Cloak = pPaperdoll_BodyX + paperdoll_Cloak[pBodyComplection][v33][0];
|
|
1486 pY_Cloak = pPaperdoll_BodyY + paperdoll_Cloak[pBodyComplection][v33][1];
|
898
|
1487 if ( !(item_Cloak->uAttributes & 0xF0) )
|
|
1488 {
|
|
1489 v41 = v35 + 1;
|
|
1490 if ( item_Cloak->uAttributes & 2 )
|
|
1491 pRenderer->DrawTransparentRedShade(pX_Cloak, pY_Cloak, (Texture *)(v41 != 0 ? (int)&pIcons_LOD->pTextures[v35] : 0));
|
|
1492 else
|
|
1493 pRenderer->DrawTextureTransparent(pX_Cloak, pY_Cloak, (Texture *)(v41 != 0 ? (int)&pIcons_LOD->pTextures[v35] : 0));
|
|
1494 }
|
|
1495 else
|
|
1496 {
|
|
1497 if ( (item_Cloak->uAttributes & 0xF0) == 16 )
|
|
1498 v169 = "sptext01";
|
|
1499 if ( (item_Cloak->uAttributes & 0xF0) == 32 )
|
|
1500 v169 = "sp28a";
|
|
1501 if ( (item_Cloak->uAttributes & 0xF0) != 64 )
|
|
1502 v169 = "sp30a";
|
|
1503 if ( (item_Cloak->uAttributes & 0xF0) == 128 )
|
|
1504 v169 = "sp91a";
|
|
1505 v39 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
|
|
1506 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1507 if ( dword_50C9A8 <= 0 )
|
|
1508 {
|
|
1509 dword_50C9A8 = 0;
|
|
1510 item_Cloak->uAttributes &= 0xFu;
|
|
1511 ptr_50C9A4 = 0;
|
|
1512 }
|
|
1513 v40 = (double)GetTickCount() * 0.1;
|
|
1514 pRenderer->_4A63E6(pX_Cloak, pY_Cloak, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39, (signed __int64)v40, 0, 255);
|
|
1515 }
|
|
1516 if ( !bRingsShownInCharScreen )
|
|
1517 pRenderer->DrawMaskToZBuffer(pX_Cloak, pY_Cloak, (Texture *)(v41 != 0 ? (int)&pIcons_LOD->pTextures[v35] : 0), pCloakNum);
|
|
1518 }
|
|
1519 }
|
|
1520 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY,//ðèñóåòñÿ êóêëà
|
|
1521 (Texture *)(papredoll_dbods[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dbods[uPlayerID - 1]] : 0));
|
|
1522 pArmorNum = pPlayers[uPlayerID]->pEquipment.uArmor;// ïîòîì áðîíÿ
|
|
1523 if ( pArmorNum )
|
|
1524 {
|
|
1525 item_Armor = &pPlayers[uPlayerID]->pInventoryItems[pArmorNum - 1];
|
|
1526 switch ( item_Armor->uItemID )
|
|
1527 {
|
|
1528 case 504:
|
|
1529 v45 = 15;
|
|
1530 break;
|
|
1531 case 505:
|
|
1532 v45 = 14;
|
|
1533 break;
|
|
1534 case 516:
|
|
1535 v45 = 13;
|
|
1536 break;
|
|
1537 case 533:
|
|
1538 v45 = 16;
|
|
1539 break;
|
|
1540 default:
|
|
1541 v45 = item_Armor->uItemID - 66;
|
|
1542 break;
|
|
1543 }
|
|
1544 if ( v45 >= 0 && v45 < 17 )
|
|
1545 {
|
899
|
1546 pX_Armor = pPaperdoll_BodyX + paperdoll_Armor[pBodyComplection][v45][0];
|
|
1547 pY_Armor = pPaperdoll_BodyY + paperdoll_Armor[pBodyComplection][v45][1];
|
|
1548 v48 = paperdoll_armor_texture[pBodyComplection][v45][0];
|
898
|
1549 if ( !(item_Armor->uAttributes & 0xF0) )
|
|
1550 {
|
|
1551 v53 = v48 + 1;
|
|
1552 if ( item_Armor->uAttributes & 2 )
|
|
1553 pRenderer->DrawTransparentRedShade(pX_Armor, pY_Armor, (Texture *)(v53 != 0 ? (int)&pIcons_LOD->pTextures[v48] : 0));
|
|
1554 else
|
|
1555 {
|
|
1556 v55 = (char *)&pIcons_LOD->pTextures[v48];
|
|
1557 if ( !(item_Armor->uAttributes & 1) )
|
|
1558 pRenderer->DrawTransparentGreenShade(pX_Armor, pY_Armor, (Texture *)(v53 != 0 ? (int)v55 : 0));
|
|
1559 else
|
|
1560 pRenderer->DrawTextureTransparent(pX_Armor, pY_Armor, (Texture *)(v53 != 0 ? (int)v55 : 0));
|
|
1561 }
|
|
1562 }
|
|
1563 else
|
|
1564 {
|
|
1565 if ( (item_Armor->uAttributes & 0xF0) == 16 )
|
|
1566 v170 = "sptext01";
|
|
1567 if ( (item_Armor->uAttributes & 0xF0) == 32 )
|
|
1568 v170 = "sp28a";
|
|
1569 if ( (item_Armor->uAttributes & 0xF0) == 64 )
|
|
1570 v170 = "sp30a";
|
|
1571 if ( (item_Armor->uAttributes & 0xF0) == 128 )
|
|
1572 v170 = "sp91a";
|
|
1573 v51 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
|
|
1574 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1575 if ( dword_50C9A8 <= 0 )
|
|
1576 {
|
|
1577 dword_50C9A8 = 0;
|
|
1578 item_Armor->uAttributes &= 0xFu;
|
|
1579 ptr_50C9A4 = 0;
|
|
1580 }
|
|
1581 v52 = (double)GetTickCount() * 0.1;
|
|
1582 pRenderer->_4A63E6(pX_Armor, pY_Armor, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0), v51, (signed __int64)v52, 0, 255);
|
|
1583 }
|
|
1584 if ( pPlayers[uPlayerID]->pEquipment.uMainHand //äàëåå ïëå÷è áðîíè
|
|
1585 && (pPlayers[uPlayerID]->GetEquippedItemEquipType(EQUIP_MAIN_HAND) == EQUIP_MAIN_HAND ||
|
|
1586 pPlayers[uPlayerID]->GetEquippedItemSkillType(EQUIP_MAIN_HAND) == EQUIP_SHIELD &&
|
|
1587 !pPlayers[uPlayerID]->pEquipment.uShield) )
|
|
1588 {
|
899
|
1589 v94 = paperdoll_armor_texture[pBodyComplection][v45][2];
|
898
|
1590 if ( v94 == pIcons_LOD->FindTextureByName("pending") )
|
|
1591 {
|
899
|
1592 v94 = paperdoll_armor_texture[pBodyComplection][v45][1];
|
|
1593 pX_shoulder = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][v45][0];
|
|
1594 pY_shoulder = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][v45][1];
|
898
|
1595 }
|
|
1596 else
|
|
1597 {
|
899
|
1598 pX_shoulder = pPaperdoll_BodyX + dword_4E5270[v45][0];
|
|
1599 pY_shoulder = pPaperdoll_BodyY + dword_4E5270[v45][1];
|
898
|
1600 }
|
|
1601 if ( !(item_Armor->uAttributes & 0xF0) )
|
|
1602 {
|
|
1603 v98 = v94 + 1;
|
|
1604 v99 = (char *)&pIcons_LOD->pTextures[v94];
|
|
1605 if ( item_Armor->uAttributes & 2 )
|
|
1606 pRenderer->DrawTransparentRedShade(pX_shoulder, pY_shoulder, (Texture *)(v98 != 0 ? (int)v99 : 0));
|
|
1607 else
|
706
|
1608 {
|
898
|
1609 if ( item_Armor->uAttributes & 1 )
|
|
1610 pRenderer->DrawTextureTransparent(pX_shoulder, pY_shoulder, (Texture *)(v98 != 0 ? (int)v99 : 0));
|
|
1611 else
|
|
1612 pRenderer->DrawTransparentGreenShade(pX_shoulder, pY_shoulder, (Texture *)(v98 != 0 ? (int)v99 : 0));
|
|
1613 }
|
|
1614 }
|
|
1615 else
|
|
1616 {
|
|
1617 if ( v94 != pIcons_LOD->FindTextureByName("pending") )
|
|
1618 {
|
|
1619 if ( item_Armor->uAttributes & 0xF0 )
|
|
1620 {
|
|
1621 if ( (item_Armor->uAttributes & 0xF0) == 16 )
|
|
1622 v173 = "sptext01";
|
|
1623 if ( (item_Armor->uAttributes & 0xF0) == 32 )
|
|
1624 v173 = "sp28a";
|
|
1625 if ( ( item_Armor->uAttributes & 0xF0) == 64 )
|
|
1626 v173 = "sp30a";
|
|
1627 if ( (item_Armor->uAttributes & 0xF0) == 128 )
|
|
1628 v173 = "sp91a";
|
|
1629 v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
|
706
|
1630 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1631 if ( dword_50C9A8 <= 0 )
|
898
|
1632 {
|
|
1633 dword_50C9A8 = 0;
|
|
1634 item_Armor->uAttributes &= 0xFu;
|
|
1635 ptr_50C9A4 = 0;
|
706
|
1636 }
|
898
|
1637 v97 = (double)GetTickCount();
|
|
1638 pRenderer->_4A63E6(pX_shoulder, pY_shoulder, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0), (Texture *)v96, (signed __int64)(v97 * 0.1), 0, 255);
|
|
1639 }
|
|
1640 }
|
|
1641 }
|
|
1642 }
|
|
1643 else
|
|
1644 {
|
899
|
1645 v94 = paperdoll_armor_texture[pBodyComplection][v45][1];
|
898
|
1646 if ( v94 != pIcons_LOD->FindTextureByName("pending") )
|
|
1647 {
|
899
|
1648 pX_ArmorShoulder = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][v45][0];
|
|
1649 pY_ArmorShoulder = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][v45][1];
|
898
|
1650 if ( !(item_Armor->uAttributes & 0xF0) )
|
|
1651 {
|
|
1652 v109 = v94 + 1;
|
|
1653 v110 = (char *)&pIcons_LOD->pTextures[v94];
|
|
1654 if ( item_Armor->uAttributes & 2 )
|
|
1655 pRenderer->DrawTransparentRedShade(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)(v109 != 0 ? (int)v110 : 0));
|
|
1656 else
|
|
1657 {
|
|
1658 if ( item_Armor->uAttributes & 1 )
|
|
1659 pRenderer->DrawTextureTransparent(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)(v109 != 0 ? (int)v110 : 0));
|
|
1660 else
|
|
1661 pRenderer->DrawTransparentGreenShade(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)(v109 != 0 ? (int)v110 : 0));
|
|
1662 }
|
|
1663 }
|
|
1664 else
|
|
1665 {
|
|
1666 if ( (item_Armor->uAttributes & 0xF0) == 16 )
|
|
1667 v178 = "sptext01";
|
|
1668 if ( (item_Armor->uAttributes & 0xF0) == 32 )
|
|
1669 v178 = "sp28a";
|
|
1670 if ( (item_Armor->uAttributes & 0xF0) == 64 )
|
|
1671 v178 = "sp30a";
|
|
1672 if ( (item_Armor->uAttributes & 0xF0) == 128 )
|
|
1673 v178 = "sp91a";
|
|
1674 v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
|
|
1675 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1676 if ( dword_50C9A8 <= 0 )
|
|
1677 {
|
|
1678 dword_50C9A8 = 0;
|
|
1679 item_Armor->uAttributes &= 0xFu;
|
|
1680 ptr_50C9A4 = 0;
|
|
1681 }
|
|
1682 v97 = (double)GetTickCount();
|
|
1683 pRenderer->_4A63E6(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0), (Texture *)v96, (signed __int64)(v97 * 0.1), 0, 255);
|
|
1684 }
|
|
1685 }
|
|
1686 }
|
|
1687 if ( !bRingsShownInCharScreen )
|
|
1688 pRenderer->DrawMaskToZBuffer(pX_Armor, pY_Armor, (Texture *)(v53 != 0 ? (int)v55 : 0), pArmorNum);
|
|
1689 }
|
|
1690 }
|
|
1691 pBootNum = pPlayers[uPlayerID]->pEquipment.uBoot;//äàëåå îáóâü
|
|
1692 if ( pBootNum )
|
|
1693 {
|
|
1694 item_Boot = &pPlayers[uPlayerID]->pInventoryItems[pBootNum - 1];
|
|
1695 switch ( item_Boot->uItemID )
|
|
1696 {
|
|
1697 case 529:
|
|
1698 v60 = 5;
|
|
1699 v59 = papredoll_flying_feet[pPlayers[uPlayerID]->uFace];
|
|
1700 break;
|
|
1701 case 512:
|
|
1702 v60 = 6;
|
899
|
1703 v59 = paperdoll_boots_texture[pBodyComplection][5];
|
898
|
1704 break;
|
|
1705 default:
|
|
1706 v60 = item_Boot->uItemID - 115;
|
899
|
1707 v59 = paperdoll_boots_texture[pBodyComplection][v60];
|
898
|
1708 break;
|
|
1709 }
|
|
1710 if ( v60 >= 0 && v60 < 7 )
|
|
1711 {
|
899
|
1712 pX_Boot = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][v60][0];
|
|
1713 pY_Boot = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][v60][1];
|
898
|
1714 if ( !(item_Boot->uAttributes & 0xF0) )
|
|
1715 {
|
|
1716 v65 = v59 + 1;
|
|
1717 v66 = (char *)&pIcons_LOD->pTextures[v59];
|
|
1718 if ( item_Boot->uAttributes & 2 )
|
|
1719 pRenderer->DrawTransparentRedShade(pX_Boot, pY_Boot, (Texture *)(v65 != 0 ? (int)v66 : 0));
|
|
1720 else
|
|
1721 {
|
|
1722 if ( item_Boot->uAttributes & 1 )
|
|
1723 pRenderer->DrawTextureTransparent(pX_Boot, pY_Boot, (Texture *)(v65 != 0 ? (int)v66 : 0));
|
|
1724 else
|
|
1725 pRenderer->DrawTransparentGreenShade(pX_Boot, pY_Boot, (Texture *)(v65 != 0 ? (int)v66 : 0));
|
|
1726 }
|
|
1727 }
|
|
1728 else
|
|
1729 {
|
|
1730 if ( (item_Boot->uAttributes & 0xF0) == 16 )
|
|
1731 v171 = "sptext01";
|
|
1732 if ( (item_Boot->uAttributes & 0xF0) == 32 )
|
|
1733 v171 = "sp28a";
|
|
1734 if ( (item_Boot->uAttributes & 0xF0) == 64 )
|
|
1735 v171 = "sp30a";
|
|
1736 if ( (item_Boot->uAttributes & 0xF0) == 128 )
|
|
1737 v171 = "sp91a";
|
|
1738 v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
|
|
1739 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1740 if ( dword_50C9A8 <= 0 )
|
|
1741 {
|
|
1742 dword_50C9A8 = 0;
|
|
1743 item_Boot->uAttributes &= 0xFu;
|
|
1744 ptr_50C9A4 = 0;
|
|
1745 }
|
|
1746 v64 = (double)GetTickCount() * 0.1;
|
|
1747 pRenderer->_4A63E6(pX_Boot, pY_Boot, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63, (signed __int64)v64, 0, 255);
|
|
1748 }
|
|
1749 if ( !bRingsShownInCharScreen )
|
|
1750 pRenderer->DrawMaskToZBuffer(pX_Boot, pY_Boot, (Texture *)(v65 != 0 ? (int)v66 : 0), pBootNum);
|
|
1751 }
|
|
1752 }
|
|
1753 pMainHandNum = pPlayers[uPlayerID]->pEquipment.uMainHand;
|
|
1754 if ( !pMainHandNum || (v70 = *(int *)&pPlayers[uPlayerID]->pInventoryItems[pMainHandNum -1], pItemsTable->pItems[v70].uEquipType != 1)
|
|
1755 && (pItemsTable->pItems[v70].uSkillType != 4 || pPlayers[uPlayerID]->pEquipment.uShield) )
|
|
1756 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0],
|
|
1757 pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
|
|
1758 (Texture *)(papredoll_dlads[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dlads[uPlayerID - 1]] : 0));
|
|
1759 pBeltNum = pPlayers[uPlayerID]->pEquipment.uBelt;// äàëåå ïîÿñ
|
|
1760 if ( pBeltNum )
|
|
1761 {
|
|
1762 item_Belt = &pPlayers[uPlayerID]->pInventoryItems[pBeltNum - 1];
|
|
1763 switch ( item_Belt->uItemID )
|
|
1764 {
|
|
1765 case 524:
|
|
1766 v73 = 5;
|
|
1767 break;
|
|
1768 case 535:
|
|
1769 v73 = 6;
|
|
1770 break;
|
|
1771 default:
|
|
1772 v73 = item_Belt->uItemID - 100;
|
|
1773 break;
|
|
1774 }
|
|
1775 if ( v73 >= 0 && v73 < 7 )
|
|
1776 {
|
899
|
1777 pX_Belt = pPaperdoll_BodyX + paperdoll_Belt[pBodyComplection][v73][0];
|
|
1778 pY_Belt = pPaperdoll_BodyY + paperdoll_Belt[pBodyComplection][v73][1];
|
898
|
1779 if ( IsDwarf != 1 || v73 == 5 )
|
899
|
1780 v75 = paperdoll_belt_texture[pBodyComplection][v73];
|
898
|
1781 else
|
899
|
1782 v75 = paperdoll_belt_texture[pBodyComplection - 2][v73];
|
898
|
1783 if ( !(item_Belt->uAttributes & 0xF0) )
|
|
1784 {
|
|
1785 v79 = v75 + 1;
|
|
1786 v80 = (char *)&pIcons_LOD->pTextures[v75];
|
|
1787 if ( item_Belt->uAttributes & 2 )
|
|
1788 pRenderer->DrawTransparentRedShade(pX_Belt, pY_Belt, (Texture *)(v79 != 0 ? (int)v80 : 0));
|
|
1789 else
|
|
1790 {
|
|
1791 if ( item_Belt->uAttributes & 1 )
|
|
1792 pRenderer->DrawTextureTransparent(pX_Belt, pY_Belt, (Texture *)(v79 != 0 ? (int)v80 : 0));
|
|
1793 else
|
|
1794 pRenderer->DrawTransparentGreenShade(pX_Belt, pY_Belt, (Texture *)(v79 != 0 ? (int)v80 : 0));
|
|
1795 }
|
|
1796 if ( !bRingsShownInCharScreen )
|
|
1797 pRenderer->DrawMaskToZBuffer(pX_Belt, pY_Belt, (Texture *)(v79 != 0 ? (int)v80 : 0), pBeltNum);
|
|
1798 }
|
|
1799 else
|
|
1800 {
|
|
1801 if ( (item_Belt->uAttributes & 0xF0) == 16 )
|
|
1802 v172 = "sptext01";
|
|
1803 if ( (item_Belt->uAttributes & 0xF0) == 32 )
|
|
1804 v172 = "sp28a";
|
|
1805 if ( (item_Belt->uAttributes & 0xF0) == 64 )
|
|
1806 v172 = "sp30a";
|
|
1807 if ( (item_Belt->uAttributes & 0xF0) == 128 )
|
|
1808 v172 = "sp91a";
|
|
1809 v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
|
706
|
1810 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1811 if ( dword_50C9A8 <= 0 )
|
898
|
1812 {
|
|
1813 dword_50C9A8 = 0;
|
|
1814 item_Belt->uAttributes &= 0xFu;
|
|
1815 ptr_50C9A4 = 0;
|
706
|
1816 }
|
898
|
1817 v78 = (double)GetTickCount() * 0.1;
|
|
1818 pRenderer->_4A63E6(pX_Belt, pY_Belt, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
|
|
1819 }
|
|
1820 }
|
|
1821 }
|
|
1822 pMainHandNum2 = pPlayers[uPlayerID]->pEquipment.uMainHand;
|
|
1823 if ( pMainHandNum2 )
|
|
1824 {
|
|
1825 v83 = *(int *)&pPlayers[uPlayerID]->pInventoryItems[pMainHandNum2 - 1];
|
|
1826 if ( pItemsTable->pItems[v83].uEquipType == 1
|
|
1827 || pItemsTable->pItems[v83].uSkillType == 4 && !pPlayers[uPlayerID]->pEquipment.uShield )
|
|
1828 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0],
|
|
1829 pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1],
|
|
1830 (Texture *)(papredoll_dlaus[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dlaus[uPlayerID - 1]] : 0));
|
|
1831 }
|
|
1832 pCloakCollarNum = pPlayers[uPlayerID]->pEquipment.uCloak;//äàëåå âîðîòíèê ïëàùà
|
|
1833 if ( pCloakCollarNum )
|
|
1834 {
|
|
1835 item_CloakCollar = &pPlayers[uPlayerID]->pInventoryItems[pCloakCollarNum - 1];
|
|
1836 switch ( item_CloakCollar->uItemID )
|
|
1837 {
|
|
1838 case 525:
|
|
1839 v114 = 5;
|
|
1840 break;
|
|
1841 case 530:
|
|
1842 v114 = 6;
|
|
1843 break;
|
|
1844 case 547:
|
|
1845 v114 = 7;
|
|
1846 break;
|
|
1847 case 548:
|
|
1848 v114 = 8;
|
|
1849 break;
|
|
1850 case 550:
|
|
1851 v114 = 9;
|
|
1852 break;
|
|
1853 default:
|
|
1854 v114 = item_CloakCollar->uItemID - 105;
|
|
1855 }
|
|
1856 if ( v114 >= 0 && v114 < 10 )
|
|
1857 {
|
899
|
1858 v116 = paperdoll_cloak_collar_texture[pBodyComplection][v114];
|
|
1859 pX_CloakCollar = pPaperdoll_BodyX + paperdoll_CloakCollar[pBodyComplection][v114][0];
|
|
1860 pY_CloakCollar = pPaperdoll_BodyY + paperdoll_CloakCollar[pBodyComplection][v114][1];
|
898
|
1861 if ( v116 != pIcons_LOD->FindTextureByName("pending") )
|
|
1862 {
|
|
1863 if ( !(item_CloakCollar->uAttributes & 0xF0) )
|
706
|
1864 {
|
898
|
1865 v119 = v116 + 1;
|
|
1866 v120 = (char *)&pIcons_LOD->pTextures[v116];
|
|
1867 if ( item_CloakCollar->uAttributes & 2 )
|
|
1868 pRenderer->DrawTransparentRedShade(pX_CloakCollar, pY_CloakCollar, (Texture *)(v119 != 0 ? (int)v120 : 0));
|
|
1869 else
|
|
1870 pRenderer->DrawTextureTransparent(pX_CloakCollar, pY_CloakCollar, (Texture *)(v119 != 0 ? (int)v120 : 0));
|
|
1871 if ( !bRingsShownInCharScreen )
|
|
1872 pRenderer->DrawMaskToZBuffer(pX_CloakCollar, pY_CloakCollar, (Texture *)(v119 != 0 ? (int)v120 : 0), pCloakCollarNum);
|
|
1873 }
|
706
|
1874 else
|
898
|
1875 {
|
|
1876 if ( (item_CloakCollar->uAttributes & 0xF0) == 16 )
|
|
1877 v179 = "sptext01";
|
|
1878 if ( (item_CloakCollar->uAttributes & 0xF0) == 32 )
|
|
1879 v179 = "sp28a";
|
|
1880 if ( (item_CloakCollar->uAttributes & 0xF0) == 64 )
|
|
1881 v179 = "sp30a";
|
|
1882 if ( (item_CloakCollar->uAttributes & 0xF0) == 128 )
|
|
1883 v179 = "sp91a";
|
|
1884 a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
|
|
1885 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1886 if ( dword_50C9A8 <= 0 )
|
|
1887 {
|
|
1888 dword_50C9A8 = 0;
|
|
1889 item_CloakCollar->uAttributes &= 0xFu;
|
|
1890 ptr_50C9A4 = 0;
|
|
1891 }
|
|
1892 v118 = (double)GetTickCount() * 0.1;
|
|
1893 pRenderer->_4A63E6(pX_CloakCollar, pY_CloakCollar, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0), a2i, (signed __int64)v118, 0, 255);
|
|
1894 }
|
|
1895 }
|
|
1896 }
|
|
1897 }
|
|
1898 if ( pPlayers[uPlayerID]->uFace == 12 || pPlayers[uPlayerID]->uFace == 13 )
|
|
1899 {
|
|
1900 v122 = papredoll_dbrds[pPlayers[uPlayerID]->uFace];
|
|
1901 if ( v122 != pIcons_LOD->FindTextureByName("Pending") )
|
|
1902 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_Beards[2 * pPlayers[uPlayerID]->uFace - 24],
|
|
1903 pPaperdoll_BodyY + pPaperdoll_Beards[2 * pPlayers[uPlayerID]->uFace - 23],
|
|
1904 (Texture *)(v122 != -1 ? (int)&pIcons_LOD->pTextures[v122] : 0));
|
|
1905 }
|
|
1906 pHelmNum = pPlayers[uPlayerID]->pEquipment.uHelm;//äàëåå øëåì
|
|
1907 if ( pHelmNum )
|
|
1908 {
|
|
1909 item_Helm = &pPlayers[uPlayerID]->pInventoryItems[pHelmNum-1];
|
|
1910 switch ( item_Helm->uItemID )
|
|
1911 {
|
|
1912 case 521:
|
|
1913 v125 = 11;
|
|
1914 break;
|
|
1915 case 522:
|
|
1916 v125 = 12;
|
|
1917 break;
|
|
1918 case 523:
|
|
1919 v125 = 13;
|
|
1920 break;
|
|
1921 case 532:
|
|
1922 v125 = 14;
|
|
1923 break;
|
|
1924 case 544:
|
|
1925 v125 = 15;
|
|
1926 break;
|
|
1927 default:
|
|
1928 v125 = item_Helm->uItemID - 89;
|
|
1929 }
|
|
1930 if ( v125 >= 0 && v125 < 16 )
|
|
1931 {
|
899
|
1932 pX_Helm = pPaperdoll_BodyX + paperdoll_Helm[pBodyComplection][v125][0];
|
|
1933 pY_Helm = pPaperdoll_BodyY + paperdoll_Helm[pBodyComplection][v125][1];
|
898
|
1934 if ( IsDwarf != 1 || item_Helm->uItemID != 92 )
|
899
|
1935 v127 = paperdoll_helm_texture[pSex][v125];
|
898
|
1936 else
|
|
1937 v127 = papredoll_dbrds[11];
|
|
1938 if ( item_Helm->uAttributes & 0xF0 )
|
|
1939 {
|
|
1940 if ( (item_Helm->uAttributes & 0xF0) == 16 )
|
|
1941 v180 = "sptext01";
|
|
1942 if ( (item_Helm->uAttributes & 0xF0) == 32 )
|
|
1943 v180 = "sp28a";
|
|
1944 if ( (item_Helm->uAttributes & 0xF0) == 64 )
|
|
1945 v180 = "sp30a";
|
|
1946 if ( (item_Helm->uAttributes & 0xF0) == 128 )
|
|
1947 v180 = "sp91a";
|
|
1948 v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
|
|
1949 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
1950 if ( dword_50C9A8 <= 0 )
|
|
1951 {
|
|
1952 dword_50C9A8 = 0;
|
|
1953 item_Helm->uAttributes &= 0xFu;
|
|
1954 ptr_50C9A4 = 0;
|
|
1955 }
|
|
1956 v130 = (double)GetTickCount() * 0.1;
|
|
1957 pRenderer->_4A63E6(pX_Helm, pY_Helm, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0), v129, (signed __int64)v130, 0, 255);
|
|
1958 }
|
|
1959 else
|
|
1960 {
|
|
1961 v131 = v127 + 1;
|
|
1962 v132 = (char *)&pIcons_LOD->pTextures[v127];
|
|
1963 if ( item_Helm->uAttributes & 2 )
|
|
1964 pRenderer->DrawTransparentRedShade(pX_Helm, pY_Helm, (Texture *)(v131 != 0 ? (int)v132 : 0));
|
|
1965 else
|
|
1966 {
|
|
1967 if ( item_Helm->uAttributes & 1 )
|
|
1968 pRenderer->DrawTextureTransparent(pX_Helm, pY_Helm, (Texture *)(v131 != 0 ? (int)v132 : 0));
|
706
|
1969 else
|
898
|
1970 pRenderer->DrawTransparentGreenShade(pX_Helm, pY_Helm, (Texture *)(v131 != 0 ? (int)v132 : 0));
|
|
1971 }
|
|
1972 }
|
706
|
1973 if ( !bRingsShownInCharScreen )
|
898
|
1974 pRenderer->DrawMaskToZBuffer(pX_Helm, pY_Helm, (Texture *)(v131 != 0 ? (int)v132 : 0), pHelmNum);
|
|
1975 }
|
|
1976 }
|
|
1977 pMainHandNum3 = pPlayers[uPlayerID]->pEquipment.uMainHand;//weapon in right hand
|
|
1978 if ( pMainHandNum3 )
|
|
1979 {
|
|
1980 item_MainHand3 = &pPlayers[uPlayerID]->pInventoryItems[pMainHandNum3 - 1];
|
|
1981 pX_MainHand3 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item_MainHand3->uItemID].uEquipX;
|
|
1982 pY_MainHand3 = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item_MainHand3->uItemID].uEquipY;
|
|
1983 if ( item_MainHand3->uItemID == 64 )
|
|
1984 v181 = "item64v1";
|
|
1985 else
|
|
1986 v181 = pItemsTable->pItems[item_MainHand3->uItemID].pIconName;
|
|
1987 v138 = pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE);
|
|
1988 if ( !(item_MainHand3->uAttributes & 0xF0) )
|
|
1989 {
|
|
1990 v142 = v138 + 1;
|
|
1991 v143 = (char *)&pIcons_LOD->pTextures[v138];
|
|
1992 if ( item_MainHand3->uAttributes & 2 )
|
|
1993 pRenderer->DrawTransparentRedShade(pX_MainHand3, pY_MainHand3, (Texture *)(v142 != 0 ? (int)v143 : 0));
|
|
1994 else
|
|
1995 {
|
|
1996 if ( item_MainHand3->uAttributes & 1 )
|
|
1997 pRenderer->DrawTextureTransparent(pX_MainHand3, pY_MainHand3, (Texture *)(v142 != 0 ? (int)v143 : 0));
|
|
1998 else
|
|
1999 pRenderer->DrawTransparentGreenShade(pX_MainHand3, pY_MainHand3, (Texture *)(v142 != 0 ? (int)v143 : 0));
|
|
2000 }
|
|
2001 }
|
|
2002 else
|
|
2003 {
|
|
2004 if ( (item_MainHand3->uAttributes & 0xF0) == 16 )
|
|
2005 v182 = "sptext01";
|
|
2006 if ( (item_MainHand3->uAttributes & 0xF0) == 32 )
|
|
2007 v182 = "sp28a";
|
|
2008 if ( (item_MainHand3->uAttributes & 0xF0) == 64 )
|
|
2009 v182 = "sp30a";
|
|
2010 if ( (item_MainHand3->uAttributes & 0xF0) == 128 )
|
|
2011 v182 = "sp91a";
|
|
2012 v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
|
|
2013 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
2014 if ( dword_50C9A8 <= 0 )
|
|
2015 {
|
|
2016 dword_50C9A8 = 0;
|
|
2017 item_MainHand3->uAttributes &= 0xFu;
|
|
2018 ptr_50C9A4 = 0;
|
706
|
2019 }
|
898
|
2020 v141 = (double)GetTickCount() * 0.1;
|
|
2021 pRenderer->_4A63E6(pX_MainHand3, pY_MainHand3, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0), v140, (signed __int64)v141, 0, 255);
|
|
2022 }
|
|
2023 if ( !bRingsShownInCharScreen )
|
|
2024 pRenderer->DrawMaskToZBuffer(pX_MainHand3, pY_MainHand3, (Texture *)(v142 != 0 ? (int)v143 : 0), pMainHandNum3);
|
|
2025 }
|
|
2026 pShieldNum = pPlayers[uPlayerID]->pEquipment.uShield;// äàëåå ùèò
|
|
2027 if ( pShieldNum )
|
|
2028 {
|
|
2029 item_Shield = &pPlayers[uPlayerID]->pInventoryItems[pShieldNum - 1];
|
|
2030 v149 = pItemsTable->pItems[item_Shield->uItemID].uSkillType;
|
|
2031 if ( v149 == 2 || v149 == 1 )
|
|
2032 {
|
|
2033 v151 = item_Shield->uItemID - 400;
|
|
2034 pX_Shield = 596;
|
|
2035 v245 = 1;
|
|
2036 switch ( item_Shield->uItemID )
|
|
2037 {
|
|
2038 case 400:
|
|
2039 pY_Shield = 86;
|
|
2040 break;
|
|
2041 case 403:
|
|
2042 pY_Shield = 28;
|
|
2043 break;
|
|
2044 case 415:
|
|
2045 pX_Shield = 595;
|
|
2046 pY_Shield = 33;
|
|
2047 break;
|
|
2048 default:
|
|
2049 pX_Shield = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item_Shield->uItemID].uEquipX;
|
|
2050 pY_Shield = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item_Shield->uItemID].uEquipY;
|
|
2051 break;
|
|
2052 }
|
|
2053 }
|
|
2054 else
|
|
2055 {
|
|
2056 v245 = 0;
|
|
2057 pX_Shield = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item_Shield->uItemID].uEquipX;
|
|
2058 pY_Shield = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item_Shield->uItemID].uEquipY;
|
|
2059 }
|
|
2060 v153 = pIcons_LOD->LoadTexture(pItemsTable->pItems[item_Shield->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
|
|
2061 if ( !(item_Shield->uAttributes & 0xF0) )
|
|
2062 {
|
|
2063 if ( item_Shield->uAttributes & 2 )
|
|
2064 pRenderer->DrawTransparentRedShade(pX_Shield, pY_Shield, (Texture *)(v153 != -1 ? (int)&pIcons_LOD->pTextures[v153] : 0));
|
|
2065 else
|
|
2066 {
|
|
2067 v160 = (char *)&pIcons_LOD->pTextures[v153];
|
|
2068 if ( !(item_Shield->uAttributes & 1) )
|
|
2069 pRenderer->DrawTransparentGreenShade(pX_Shield, pY_Shield, (Texture *)(v153 != -1 ? (int)v160 : 0));
|
|
2070 else
|
|
2071 pRenderer->DrawTextureTransparent(pX_Shield, pY_Shield, (Texture *)(v153 != -1 ? (int)v160 : 0));
|
|
2072 }
|
|
2073 }
|
|
2074 else
|
|
2075 {
|
|
2076 if ( (item_Shield->uAttributes & 0xF0) == 16 )
|
|
2077 v183 = "sptext01";
|
|
2078 if ( (item_Shield->uAttributes & 0xF0) == 32 )
|
|
2079 v183 = "sp28a";
|
|
2080 if ( (item_Shield->uAttributes & 0xF0) == 64 )
|
|
2081 v183 = "sp30a";
|
|
2082 if ( (item_Shield->uAttributes & 0xF0) == 128 )
|
|
2083 v183 = "sp91a";
|
|
2084 v157 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
|
|
2085 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
2086 if ( dword_50C9A8 <= 0 )
|
|
2087 {
|
|
2088 dword_50C9A8 = 0;
|
|
2089 item_Shield->uAttributes &= 0xFu;
|
|
2090 ptr_50C9A4 = 0;
|
|
2091 }
|
|
2092 v158 = (double)GetTickCount() * 0.1;
|
|
2093 pRenderer->_4A63E6(pX_Shield, pY_Shield, (Texture *)(v153 != -1 ? (int)&pIcons_LOD->pTextures[v153] : 0), v157, (signed __int64)v158, 0, 255);
|
|
2094 if ( v245 )
|
|
2095 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[pBodyComplection][0],
|
|
2096 pPaperdoll_BodyY + pPaperdollLeftEmptyHand[pBodyComplection][1],
|
|
2097 (Texture *)(papredoll_dlhs[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dlhs[uPlayerID - 1]] : 0));
|
|
2098 }
|
|
2099 if ( !bRingsShownInCharScreen )
|
|
2100 pRenderer->DrawMaskToZBuffer(pX_Shield, pY_Shield, (Texture *)(v153 != -1 ? (int)&pIcons_LOD->pTextures[v153] : 0), pShieldNum);
|
|
2101 }
|
|
2102 }
|
|
2103 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_RightHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_RightHand[pBodyComplection][1],
|
|
2104 (Texture *)(papredoll_drhs[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_drhs[uPlayerID - 1]] : 0));
|
|
2105 pMainHandNum5 = pPlayers[uPlayerID]->pEquipment.uMainHand;
|
|
2106 if ( pMainHandNum5 )
|
|
2107 {
|
|
2108 item_MainHand5 = &pPlayers[uPlayerID]->pInventoryItems[pMainHandNum5 - 1];
|
|
2109 if ( pItemsTable->pItems[item_MainHand5->uItemID].uEquipType == 1 || pItemsTable->pItems[item_MainHand5->uItemID].uSkillType == 4 && !pPlayers[uPlayerID]->pEquipment.uShield )
|
|
2110 pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1],
|
|
2111 (Texture *)(papredoll_dlhus[uPlayerID - 1] != -1 ? (int)&pIcons_LOD->pTextures[papredoll_dlhus[uPlayerID - 1]] : 0));
|
|
2112 }
|
|
2113 if ( !bRingsShownInCharScreen )//ðèñîâàíèå ëóïû
|
|
2114 pRenderer->DrawTextureTransparent(603, 299, (Texture *)(uTextureID_MAGNIF_B != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_MAGNIF_B] : 0));
|
910
|
2115 pRenderer->DrawTextureTransparent(468, 0, (Texture *)(uTextureID_right_panel_loop != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_right_panel_loop] : 0));//îáðàìëåíèå
|
898
|
2116 }
|
706
|
2117
|
910
|
2118 //----- (0043E825) --------------------------------------------------------
|
|
2119 void __fastcall CharacterUI_DrawPaperdollWithRingOverlay(unsigned int uPlayerID)
|
|
2120 {
|
913
|
2121 int v3; // ecx@1
|
|
2122 unsigned int pItemTextureNum; // ebx@3
|
|
2123 int v9; // edi@17
|
|
2124 char v13; // sf@24
|
|
2125 unsigned __int8 v14; // of@24
|
|
2126 unsigned int pItemNum; // eax@25
|
|
2127 int v20; // edi@40
|
|
2128 int v21; // eax@41
|
|
2129 int v33; // esi@61
|
|
2130 const char *spell_texture_name; // [sp-8h] [bp-38h]@8
|
|
2131 Texture *spell_texture; // [sp+10h] [bp-20h]@14
|
|
2132 int v41; // [sp+10h] [bp-20h]@26
|
|
2133 unsigned int pY_Ring; // [sp+14h] [bp-1Ch]@3
|
|
2134 unsigned int pX_Ring; // [sp+18h] [bp-18h]@3
|
|
2135 int v48; // [sp+24h] [bp-Ch]@1
|
|
2136 ItemGen *item;
|
706
|
2137
|
910
|
2138 pIcons_LOD->LoadTexture("sptext01", TEXTURE_16BIT_PALETTE);
|
|
2139 CharacterUI_DrawPaperdoll(uPlayerID);
|
|
2140 pRenderer->DrawTextureTransparent(0x1D9u, 0, (Texture *)(uTextureID_BACKHAND != -1 ? &pIcons_LOD->pTextures[uTextureID_BACKHAND] : 0));
|
|
2141 pRenderer->DrawTextureTransparent(0x1D4u, 0, (Texture *)(uTextureID_right_panel_loop != -1 ? &pIcons_LOD->pTextures[uTextureID_right_panel_loop] : 0));
|
|
2142 pRenderer->DrawTextureIndexed(pCharacterScreen_DetalizBtn->uX, pCharacterScreen_DetalizBtn->uY,
|
|
2143 (Texture *)(uTextureID_detaliz_close_button != -1 ? &pIcons_LOD->pTextures[uTextureID_detaliz_close_button] : 0));
|
|
2144 v3 = 0;
|
|
2145 v48 = 0;
|
|
2146 do
|
|
2147 {
|
913
|
2148 pItemNum = pPlayers[uPlayerID]->pEquipment.uRings[v3];
|
910
|
2149 if ( pPlayers[uPlayerID]->pEquipment.uRings[v3] )
|
|
2150 {
|
913
|
2151 item = &pPlayers[uPlayerID]->pInventoryItems[pItemNum - 1];
|
910
|
2152 pX_Ring = pPaperdollRingsX[v3];
|
|
2153 pY_Ring = pPaperdollRingsY[v3];
|
913
|
2154 pItemTextureNum = pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
|
|
2155 if ( item->uAttributes & 0xF0 )
|
910
|
2156 {
|
913
|
2157 if ( (item->uAttributes & 0xF0) == 16 )
|
|
2158 spell_texture_name = "sptext01";
|
|
2159 if ( (item->uAttributes & 0xF0) == 32 )
|
|
2160 spell_texture_name = "sp28a";
|
|
2161 if ( (item->uAttributes & 0xF0) == 64 )
|
|
2162 spell_texture_name = "sp30a";
|
|
2163 if ( (item->uAttributes & 0xF0) == 128 )
|
|
2164 spell_texture_name = "sp91a";
|
|
2165 spell_texture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(spell_texture_name, TEXTURE_16BIT_PALETTE)];
|
910
|
2166 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
2167 if ( dword_50C9A8 <= 0 )
|
|
2168 {
|
|
2169 dword_50C9A8 = 0;
|
913
|
2170 item->uAttributes &= 0xFu;
|
910
|
2171 ptr_50C9A4 = 0;
|
|
2172 }
|
913
|
2173 pRenderer->_4A63E6(pX_Ring, pY_Ring, (Texture *)(pItemTextureNum != -1 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0), spell_texture, GetTickCount() * 0.1, 0, 255);
|
910
|
2174 }
|
|
2175 else
|
|
2176 {
|
913
|
2177 v9 = pItemTextureNum + 1;
|
|
2178 if ( item->uAttributes & 2 )
|
|
2179 pRenderer->DrawTransparentRedShade(pX_Ring, pY_Ring, (Texture *)(v9 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0));
|
910
|
2180 else
|
|
2181 {
|
913
|
2182 if ( (item->uAttributes & 1) == 0 )
|
|
2183 pRenderer->DrawTransparentGreenShade(pX_Ring, pY_Ring, (Texture *)(v9 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0));
|
910
|
2184 else
|
913
|
2185 pRenderer->DrawTextureTransparent(pX_Ring, pY_Ring, (Texture *)(v9 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0));
|
910
|
2186 }
|
913
|
2187 pRenderer->_4A601E(pX_Ring, pY_Ring, (Texture *)(v9 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0), pItemNum);
|
910
|
2188 }
|
|
2189 }
|
|
2190 v3++;
|
913
|
2191 pItemNum = pPlayers[uPlayerID]->pEquipment.uRings[v3];
|
910
|
2192 v14 = (v48 + 1) > 5;
|
|
2193 v13 = v48 - 4 < 0;
|
|
2194 v48++;
|
|
2195 }
|
|
2196 while ( (unsigned __int8)(v13 ^ v14) | (v48 == 4) );
|
913
|
2197 pItemNum = pPlayers[uPlayerID]->pEquipment.uAmulet;
|
|
2198 if ( pItemNum )
|
910
|
2199 {
|
|
2200 v41 = pPlayers[uPlayerID]->pEquipment.uAmulet;
|
913
|
2201 item = &pPlayers[uPlayerID]->pInventoryItems[pItemNum - 1];
|
|
2202 pItemTextureNum = pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
|
|
2203 if ( item->uAttributes & 0xF0 )
|
910
|
2204 {
|
913
|
2205 if ( (item->uAttributes & 0xF0) == 16 )
|
|
2206 spell_texture_name = "sptext01";
|
|
2207 if ( (item->uAttributes & 0xF0) == 32 )
|
|
2208 spell_texture_name = "sp28a";
|
|
2209 if ( (item->uAttributes & 0xF0) == 64 )
|
|
2210 spell_texture_name = "sp30a";
|
|
2211 if ( (item->uAttributes & 0xF0) == 128 )
|
|
2212 spell_texture_name = "sp91a";
|
|
2213 spell_texture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(spell_texture_name, TEXTURE_16BIT_PALETTE)];
|
910
|
2214 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
2215 if ( dword_50C9A8 <= 0 )
|
|
2216 {
|
|
2217 dword_50C9A8 = 0;
|
913
|
2218 item->uAttributes &= 0xFu;
|
910
|
2219 ptr_50C9A4 = 0;
|
|
2220 }
|
913
|
2221 pRenderer->_4A63E6(493, 91, (Texture *)(pItemTextureNum != -1 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0), spell_texture, GetTickCount() * 0.1, 0, 255);
|
910
|
2222 }
|
|
2223 else
|
|
2224 {
|
913
|
2225 v20 = pItemTextureNum + 1;
|
|
2226 if ( item->uAttributes & 2 )
|
910
|
2227 {
|
913
|
2228 v21 = 9 * pItemTextureNum;
|
910
|
2229 pRenderer->DrawTransparentRedShade(493, 91, (Texture *)(v20 != 0 ? (int)&pIcons_LOD->pTextures[8 * v21 / 0x48u] : 0));
|
|
2230 }
|
|
2231 else
|
|
2232 {
|
913
|
2233 v21 = 9 * pItemTextureNum;
|
|
2234 if ( !(item->uAttributes & 1) )
|
910
|
2235 pRenderer->DrawTransparentGreenShade(493, 91, (Texture *)(v20 != 0 ? (int)&pIcons_LOD->pTextures[8 * v21 / 0x48u] : 0));
|
|
2236 else
|
|
2237 pRenderer->DrawTextureTransparent(493, 91, (Texture *)(v20 != 0 ? (int)&pIcons_LOD->pTextures[8 * v21 / 0x48u] : 0));
|
|
2238 }
|
|
2239 pRenderer->_4A601E(493, 91, (Texture *)(v20 != 0 ? (int)&pIcons_LOD->pTextures[8 * v21 / 0x48u] : 0), v41);
|
|
2240 }
|
|
2241 }
|
913
|
2242 pItemNum = pPlayers[uPlayerID]->pEquipment.uGlove;
|
|
2243 if ( !pItemNum )
|
|
2244 return;
|
|
2245 item = &pPlayers[uPlayerID]->pInventoryItems[pItemNum - 1];
|
|
2246 pItemTextureNum = pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
|
|
2247 if ( !(item->uAttributes & 0xF0) )
|
|
2248 {
|
|
2249 v33 = pItemTextureNum + 1;
|
|
2250 if ( item->uAttributes & 2 )
|
|
2251 pRenderer->DrawTransparentRedShade(586, 88, (Texture *)(v33 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0));
|
|
2252 else
|
|
2253 {
|
|
2254 if ( !(item->uAttributes & 1) )
|
|
2255 pRenderer->DrawTransparentGreenShade(586, 88, (Texture *)(v33 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0));
|
|
2256 else
|
|
2257 pRenderer->DrawTextureTransparent(586, 88, (Texture *)(v33 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0));
|
|
2258 }
|
|
2259 pRenderer->_4A601E(586, 88, (Texture *)(v33 != 0 ? (int)&pIcons_LOD->pTextures[pItemTextureNum] : 0), pItemNum);
|
|
2260 }
|
|
2261 else
|
|
2262 {
|
|
2263 if ( (item->uAttributes & 0xF0) == 16 )
|
|
2264 spell_texture_name = "sptext01";
|
|
2265 if ( (item->uAttributes & 0xF0) == 32 )
|
|
2266 spell_texture_name = "sp28a";
|
|
2267 if ( (item->uAttributes & 0xF0) == 64 )
|
|
2268 spell_texture_name = "sp30a";
|
|
2269 if ( (item->uAttributes & 0xF0) == 128 )
|
|
2270 spell_texture_name = "sp91a";
|
|
2271 spell_texture = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(spell_texture_name, TEXTURE_16BIT_PALETTE)];
|
|
2272 dword_50C9A8 -= pEventTimer->uTimeElapsed;
|
|
2273 if ( dword_50C9A8 <= 0 )
|
|
2274 {
|
|
2275 dword_50C9A8 = 0;
|
|
2276 item->uAttributes &= 0xFu;
|
|
2277 ptr_50C9A4 = 0;
|
|
2278 }
|
|
2279 pRenderer->_4A63E6(586, 88, pIcons_LOD->GetTexture(pItemTextureNum), spell_texture, GetTickCount() * 0.1, 0, 255);
|
|
2280 }
|
|
2281 }
|
706
|
2282
|
|
2283 //----- (0043BCA7) --------------------------------------------------------
|
|
2284 void CharacterUI_LoadPaperdollTextures()
|
|
2285 {
|
|
2286 int v0; // edi@7
|
|
2287 enum CHARACTER_RACE pRace; // ebx@7
|
|
2288 signed int pSex; // eax@7
|
|
2289 int v3; // ebx@10
|
|
2290 Player *pPlayer; // edi@12
|
|
2291 unsigned __int8 v5; // cl@12
|
|
2292 int v6; // edi@16
|
|
2293 unsigned int v7; // eax@16
|
|
2294 Player *pPlayer2; // ebx@16
|
|
2295 char *v9; // ebx@16
|
|
2296 char v10; // al@16
|
|
2297 signed int v11; // edi@21
|
|
2298 unsigned int v22; // eax@76
|
|
2299 int v23; // ecx@76
|
|
2300 unsigned int v24; // eax@78
|
|
2301 int v25; // ecx@78
|
|
2302 int v26; // ebx@79
|
|
2303 unsigned int v27; // eax@80
|
|
2304 int v28; // ecx@80
|
|
2305 int v30; // [sp+10h] [bp-28h]@5
|
|
2306 signed int v32; // [sp+10h] [bp-28h]@75
|
|
2307 signed int v33; // [sp+10h] [bp-28h]@77
|
|
2308 int v34; // [sp+10h] [bp-28h]@79
|
899
|
2309 int pItemTXTNum; // [sp+14h] [bp-24h]@75
|
706
|
2310 int v37; // [sp+14h] [bp-24h]@77
|
|
2311 signed int v38; // [sp+14h] [bp-24h]@79
|
|
2312 int v42; // [sp+20h] [bp-18h]@6
|
|
2313 int v43; // [sp+20h] [bp-18h]@73
|
|
2314 char pContainer[128]; // [sp+24h] [bp-14h]@12
|
|
2315
|
|
2316 uTextureID_MAGNIF_B = pIcons_LOD->LoadTexture("MAGNIF-B", TEXTURE_16BIT_PALETTE);
|
|
2317 //if ( !pParty->uAlignment || pParty->uAlignment == 1 || pParty->uAlignment == 2 )
|
|
2318 uTextureID_BACKDOLL = pIcons_LOD->LoadTexture("BACKDOLL", TEXTURE_16BIT_PALETTE);
|
910
|
2319 uTextureID_right_panel_loop = uTextureID_right_panel;
|
706
|
2320 v30 = 0;
|
|
2321 uTextureID_BACKHAND = pIcons_LOD->LoadTexture("BACKHAND", TEXTURE_16BIT_PALETTE);
|
910
|
2322 uTextureID_detaliz_close_button = uExitCancelTextureId;
|
706
|
2323 do
|
|
2324 {
|
|
2325 v42 = v30 + 1;
|
|
2326 if ( sub_43EE77_ProbablyIfUnderwaterSuitIsEquipped(v30 + 1) )
|
|
2327 {
|
|
2328 v0 = v30;
|
|
2329 pRace = pPlayers[v30 + 1]->GetRace();
|
|
2330 pSex = pPlayers[v30 + 1]->GetSexByVoice();
|
|
2331 if ( pRace && pRace != 1 && pRace != 2 )//race == 3
|
|
2332 v3 = (pSex != 0) + 3;
|
|
2333 else
|
|
2334 v3 = (pSex != 0) + 1;
|
|
2335 wsprintfA(pContainer, "pc23v%dBod", v3);
|
|
2336 papredoll_dbods[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);//Body texture
|
|
2337 wsprintfA(pContainer, "pc23v%dlad", v3);
|
|
2338 papredoll_dlads[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand
|
|
2339 wsprintfA(pContainer, "pc23v%dlau", v3);
|
|
2340 papredoll_dlaus[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand2
|
|
2341 wsprintfA(pContainer, "pc23v%drh", v3);
|
|
2342 papredoll_drhs[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Right Hand
|
|
2343 wsprintfA(pContainer, "pc23v%dlh", v3);
|
|
2344 papredoll_dlhs[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Fist
|
|
2345 wsprintfA(pContainer, "pc23v%dlhu", v3);
|
|
2346 papredoll_dlhus[v0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); // Left Fist 2
|
|
2347 pPlayer = pPlayers[v0 + 1];
|
|
2348 v5 = pPlayer->uFace;
|
|
2349 if ( v5 == 12 || v5 == 13 )
|
|
2350 papredoll_dbrds[(char)v5] = 0;
|
|
2351 papredoll_flying_feet[pPlayer->uFace] = 0;
|
|
2352 IsPlayerWearingWatersuit[v30 + 1] = 1;
|
|
2353 }
|
|
2354 else
|
|
2355 {
|
|
2356 v6 = v30;
|
|
2357 papredoll_dbods[v30] = pIcons_LOD->LoadTexture(dbod_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
|
|
2358 papredoll_dlads[v30] = pIcons_LOD->LoadTexture(dlad_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
|
|
2359 papredoll_dlaus[v30] = pIcons_LOD->LoadTexture(dlau_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
|
|
2360 papredoll_drhs[v30] = pIcons_LOD->LoadTexture(drh_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
|
|
2361 papredoll_dlhs[v30] = pIcons_LOD->LoadTexture(dlh_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
|
|
2362 v7 = pIcons_LOD->LoadTexture(dlhu_texnames_by_face[pPlayers[v30 + 1]->uFace], TEXTURE_16BIT_PALETTE);
|
|
2363 pPlayer2 = pPlayers[v30 + 1];
|
|
2364 papredoll_dlhus[v30] = v7;
|
|
2365 v9 = (char *)&pPlayer2->uFace;
|
|
2366 v10 = *v9;
|
|
2367 if ( *v9 == 12 || v10 == 13 )
|
|
2368 {
|
|
2369 wsprintfA(pContainer, "pc%02dbrd", v10 + 1);
|
|
2370 v9 = (char *)&pPlayers[v6 + 1]->uFace;
|
|
2371 papredoll_dbrds[*v9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2372 }
|
|
2373 wsprintfA(pContainer, "item281pc%02d", *v9 + 1);
|
|
2374 papredoll_flying_feet[pPlayers[v6 + 1]->uFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2375 IsPlayerWearingWatersuit[v30 + 1] = 0;
|
|
2376 }
|
|
2377 ++v30;
|
|
2378 }
|
|
2379 while ( v42 < 4 );
|
|
2380 uTextureID_ar_up_up = pIcons_LOD->LoadTexture("ar_up_up", TEXTURE_16BIT_PALETTE);
|
|
2381 uTextureID_ar_up_dn = pIcons_LOD->LoadTexture("ar_up_dn", TEXTURE_16BIT_PALETTE);
|
|
2382 uTextureID_ar_dn_up = pIcons_LOD->LoadTexture("ar_dn_up", TEXTURE_16BIT_PALETTE);
|
|
2383 uTextureID_ar_dn_dn = pIcons_LOD->LoadTexture("ar_dn_dn", TEXTURE_16BIT_PALETTE);
|
|
2384 papredoll_dbrds[9] = pIcons_LOD->LoadTexture("ib-cd1-d", TEXTURE_16BIT_PALETTE);
|
|
2385 papredoll_dbrds[7] = pIcons_LOD->LoadTexture("ib-cd2-d", TEXTURE_16BIT_PALETTE);
|
|
2386 papredoll_dbrds[5] = pIcons_LOD->LoadTexture("ib-cd3-d", TEXTURE_16BIT_PALETTE);
|
|
2387 papredoll_dbrds[3] = pIcons_LOD->LoadTexture("ib-cd4-d", TEXTURE_16BIT_PALETTE);
|
|
2388 papredoll_dbrds[1] = pIcons_LOD->LoadTexture("ib-cd5-d", TEXTURE_16BIT_PALETTE);
|
899
|
2389 for ( v11 = 0; v11 < 54; ++v11 )// test equipment
|
706
|
2390 {
|
899
|
2391 party_has_equipment[v11] = 0;
|
706
|
2392 if ( pParty->pPickedItem.uItemID != v11 + 66 )
|
|
2393 {
|
899
|
2394 for ( uint i = 0; i < 4; ++i)
|
706
|
2395 {
|
899
|
2396 if ( Player_has_item(v11 + 66, &pParty->pPlayers[i], 0) )
|
|
2397 party_has_equipment[v11] = 1;
|
706
|
2398 }
|
|
2399 }
|
|
2400 }
|
|
2401 memset(byte_5111F6, 0, 16);
|
|
2402 for (uint i = 0; i < 4; ++i)
|
|
2403 {
|
|
2404 auto player = pParty->pPlayers + i;
|
|
2405
|
899
|
2406 if (Player_has_item(ITEM_ARTICACT_GOVERNONS_ARMOR, player, 1)) byte_5111F6[0] = 1;
|
|
2407 if (Player_has_item(ITEM_ARTIFACT_YORUBA, player, 1)) byte_5111F6[1] = 1;
|
|
2408 if (Player_has_item(ITEM_RELIC_HARECS_LEATHER, player, 1)) byte_5111F6[2] = 1;
|
|
2409 if (Player_has_item(ITEM_ARTIFACT_LEAGUE_BOOTS, player, 1)) byte_5111F6[3] = 1;
|
|
2410 if (Player_has_item(ITEM_RELIC_TALEDONS_HELM, player, 1)) byte_5111F6[4] = 1;
|
|
2411 if (Player_has_item(ITEM_RELIC_SCHOLARS_CAP, player, 1)) byte_5111F6[5] = 1;
|
|
2412 if (Player_has_item(ITEM_RELIC_PHYNAXIAN_CROWN, player, 1)) byte_5111F6[6] = 1;
|
|
2413 if (Player_has_item(ITEM_ARTIFACT_MINDS_EYE, player, 1)) byte_5111F6[7] = 1;
|
|
2414 if (Player_has_item(ITEM_RARE_SHADOWS_MASK, player, 1)) byte_5111F6[8] = 1;
|
|
2415 if (Player_has_item(ITEM_RILIC_TITANS_BELT, player, 1)) byte_5111F6[9] = 1;
|
|
2416 if (Player_has_item(ITEM_ARTIFACT_HEROS_BELT, player, 1)) byte_5111F6[10] = 1;
|
|
2417 if (Player_has_item(ITEM_RELIC_TWILIGHT, player, 1)) byte_5111F6[11] = 1;
|
|
2418 if (Player_has_item(ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP, player, 1)) byte_5111F6[12] = 1;
|
|
2419 if (Player_has_item(ITEM_RARE_SUN_CLOAK, player, 1)) byte_5111F6[13] = 1;
|
|
2420 if (Player_has_item(ITEM_RARE_MOON_CLOAK, player, 1)) byte_5111F6[14] = 1;
|
|
2421 if (Player_has_item(ITEM_RARE_VAMPIRES_CAPE, player, 1)) byte_5111F6[15] = 1;
|
|
2422 if (Player_has_item(ITEM_ELVEN_CHAINMAIL, player, 1)) byte_5111F6[16] = 1;
|
706
|
2423 }
|
938
|
2424
|
|
2425
|
706
|
2426 for (uint i = 0; i < 2; ++i)
|
|
2427 {
|
899
|
2428 for ( uint j = 0; j < 5; ++j )//Belt
|
706
|
2429 {
|
899
|
2430 GetItemTextureFilename(pContainer, j + 100, i + 1, 0);
|
|
2431 paperdoll_belt_texture[i][j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
706
|
2432 }
|
899
|
2433 GetItemTextureFilename(pContainer, 535, i + 1, 0);
|
|
2434 paperdoll_belt_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2435 for ( uint j = 0; j < 11; ++j )//Helm
|
706
|
2436 {
|
899
|
2437 GetItemTextureFilename(pContainer, j + 89, i + 1, 0);
|
|
2438 paperdoll_helm_texture[i][j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
706
|
2439 }
|
899
|
2440 GetItemTextureFilename(pContainer, 521, i + 1, 0);
|
|
2441 paperdoll_helm_texture[i][11] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2442 GetItemTextureFilename(pContainer, 522, i + 1, 0);
|
|
2443 paperdoll_helm_texture[i][12] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2444 GetItemTextureFilename(pContainer, 523, i + 1, 0);
|
|
2445 paperdoll_helm_texture[i][13] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2446 GetItemTextureFilename(pContainer, 532, i + 1, 0);
|
|
2447 paperdoll_helm_texture[i][14] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2448 GetItemTextureFilename(pContainer, 544, i + 1, 0);
|
|
2449 paperdoll_helm_texture[i][15] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
706
|
2450 if ( _43ED6F_check_party_races(true) )
|
|
2451 papredoll_dbrds[11] = pIcons_LOD->LoadTexture("item092v3", TEXTURE_16BIT_PALETTE);
|
|
2452 }
|
|
2453 v43 = 0;
|
|
2454 for (uint i = 0; i < 4; ++i)
|
|
2455 {
|
|
2456 if ( sub_43EDB9_get_some_race_sex_relation_2(i) )
|
|
2457 {
|
899
|
2458 GetItemTextureFilename(pContainer, 524, i + 1, 0);
|
938
|
2459 paperdoll_belt_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);//Titans belt
|
899
|
2460 pItemTXTNum = 66;
|
|
2461 for ( v32 = 0; v32 < 13; ++v32 )//simple armor
|
706
|
2462 {
|
899
|
2463 GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 0);
|
|
2464 paperdoll_armor_texture[i][v32][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2465 GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 1);
|
|
2466 paperdoll_armor_texture[i][v32][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2467 GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 2);
|
|
2468 paperdoll_armor_texture[i][v32][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2469 pItemTXTNum++;
|
706
|
2470 }
|
899
|
2471 GetItemTextureFilename(pContainer, 516, i + 1, 0);//artefacts
|
|
2472 paperdoll_armor_texture[i][v32][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2473 GetItemTextureFilename(pContainer, 516, i + 1, 1);
|
|
2474 paperdoll_armor_texture[i][v32][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2475 GetItemTextureFilename(pContainer, 516, i + 1, 2);
|
|
2476 paperdoll_armor_texture[i][v32][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2477 GetItemTextureFilename(pContainer, 505, i + 1, 0);
|
|
2478 paperdoll_armor_texture[i][v32 + 1][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2479 GetItemTextureFilename(pContainer, 505, i + 1, 1);
|
|
2480 paperdoll_armor_texture[i][v32 + 1][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2481 GetItemTextureFilename(pContainer, 505, i + 1, 2);
|
|
2482 paperdoll_armor_texture[i][v32 + 1][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2483 GetItemTextureFilename(pContainer, 504, i + 1, 0);
|
|
2484 paperdoll_armor_texture[i][v32 + 2][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2485 GetItemTextureFilename(pContainer, 504, i + 1, 1);
|
|
2486 paperdoll_armor_texture[i][v32 + 2][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2487 GetItemTextureFilename(pContainer, 504, i + 1, 2);
|
|
2488 paperdoll_armor_texture[i][v32 + 2][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2489 GetItemTextureFilename(pContainer, 533, i + 1, 0);
|
|
2490 paperdoll_armor_texture[i][v32 + 3][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2491 GetItemTextureFilename(pContainer, 533, i + 1, 1);
|
|
2492 paperdoll_armor_texture[i][v32 + 3][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2493 GetItemTextureFilename(pContainer, 533, i + 1, 2);
|
|
2494 paperdoll_armor_texture[i][v32 + 3][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2495 for ( v33 = 0; v33 < 5; ++v33 )//boots
|
706
|
2496 {
|
899
|
2497 GetItemTextureFilename(pContainer, v33 + 115, i + 1, 0);
|
|
2498 paperdoll_boots_texture[i][v33] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2499 }
|
|
2500 GetItemTextureFilename(pContainer, 512, i + 1, 0);
|
|
2501 paperdoll_boots_texture[i][v33] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2502 for ( v38 = 0; v38 < 5; ++v38 )//Cloak
|
|
2503 {
|
|
2504 GetItemTextureFilename(pContainer, v38 + 105, i + 1, 0);
|
|
2505 paperdoll_cloak_texture[i][v38] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2506 GetItemTextureFilename(pContainer, v38 + 105, i + 1, 1);
|
|
2507 paperdoll_cloak_collar_texture[i][v38] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
706
|
2508 }
|
899
|
2509 GetItemTextureFilename(pContainer, 525, i + 1, 0);
|
|
2510 paperdoll_cloak_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2511 GetItemTextureFilename(pContainer, 530, i + 1, 0);
|
|
2512 paperdoll_cloak_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2513 GetItemTextureFilename(pContainer, 547, i + 1, 0);
|
|
2514 paperdoll_cloak_texture[i][7] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2515 GetItemTextureFilename(pContainer, 548, i + 1, 0);
|
|
2516 paperdoll_cloak_texture[i][8] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2517 GetItemTextureFilename(pContainer, 550, i + 1, 0);
|
|
2518 paperdoll_cloak_texture[i][9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2519 GetItemTextureFilename(pContainer, 525, i + 1, 1);
|
|
2520 paperdoll_cloak_collar_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2521 GetItemTextureFilename(pContainer, 530, i + 1, 1);
|
|
2522 paperdoll_cloak_collar_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2523 GetItemTextureFilename(pContainer, 547, i + 1, 1);
|
|
2524 paperdoll_cloak_collar_texture[i][7] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2525 GetItemTextureFilename(pContainer, 548, i + 1, 1);
|
|
2526 paperdoll_cloak_collar_texture[i][8] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
|
2527 GetItemTextureFilename(pContainer, 550, i + 1, 1);
|
|
2528 paperdoll_cloak_collar_texture[i][9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
|
706
|
2529 }
|
|
2530 else
|
|
2531 {
|
|
2532 v26 = v43;
|
|
2533 }
|
|
2534 v43 = v26 + 40;
|
|
2535 }
|
|
2536 }
|
|
2537
|
|
2538 //----- (00419401) --------------------------------------------------------
|
|
2539 void __cdecl CharacterUI_SkillScreen_Draw()
|
|
2540 {
|
|
2541 unsigned int v0; // ecx@3
|
|
2542 GUIButton *pButton; // eax@3
|
|
2543 GUIFont *v2; // eax@8
|
|
2544 unsigned int v3; // esi@8
|
|
2545 int v4; // eax@10
|
|
2546 unsigned int v5; // esi@14
|
|
2547 int v6; // eax@17
|
|
2548 unsigned int v7; // esi@19
|
|
2549 int v8; // eax@21
|
|
2550 unsigned int v9; // esi@25
|
|
2551 int v10; // eax@27
|
|
2552 int a2; // [sp+10h] [bp-14h]@1
|
|
2553 int v12; // [sp+14h] [bp-10h]@8
|
|
2554 int v13; // [sp+14h] [bp-10h]@19
|
|
2555 int *v14; // [sp+18h] [bp-Ch]@8
|
|
2556 int *v15; // [sp+18h] [bp-Ch]@14
|
|
2557 int *v16; // [sp+18h] [bp-Ch]@19
|
|
2558 int *v17; // [sp+18h] [bp-Ch]@25
|
|
2559 Player *v18; // [sp+1Ch] [bp-8h]@8
|
|
2560 int a5; // [sp+20h] [bp-4h]@8
|
|
2561
|
|
2562 a2 = 0;
|
|
2563 if ( dword_507CC0 )
|
|
2564 sub_4196A0();
|
|
2565 v0 = uActiveCharacter;
|
|
2566 dword_507CC0 = uActiveCharacter;
|
|
2567 for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext )
|
832
|
2568 {
|
|
2569 if ( pButton->msg == UIMSG_InventoryLeftClick )
|
706
|
2570 {
|
|
2571 dword_50698C = pButton->uX;
|
|
2572 dword_506988 = pButton->uY;
|
|
2573 dword_506984 = pButton->uZ;
|
|
2574 dword_506980 = pButton->uW;
|
|
2575 pButton->uW = 0;
|
|
2576 pButton->uZ = 0;
|
|
2577 pButton->uY = 0;
|
|
2578 pButton->uX = 0;
|
|
2579 v0 = uActiveCharacter;
|
|
2580 }
|
|
2581 }
|
|
2582 v12 = 0;
|
|
2583 a5 = pGUIWindow_CurrentMenu->uNumControls;
|
|
2584 v18 = &pParty->pPlayers[v0-1];
|
|
2585 v2 = pFontLucida;
|
|
2586 v14 = pWeaponSkills;
|
|
2587 v3 = 2 * LOBYTE(pFontLucida->uFontHeight) + 13;
|
|
2588 do
|
|
2589 {
|
|
2590 if ( v18->pActiveSkills[*v14] & 0x3F )//crash
|
|
2591 {
|
|
2592 v4 = LOBYTE(v2->uFontHeight);
|
|
2593 v3 = v3 + v4 - 3;
|
|
2594 ++a2;
|
|
2595 ++v12;
|
832
|
2596 pGUIWindow_CurrentMenu->CreateButton(0x18u, v3, 0xCCu, v4 - 3, 3, *v14 | 0x8000, UIMSG_SkillUp, *v14, 0, "", 0, 0);
|
706
|
2597 v2 = pFontLucida;
|
|
2598 }
|
|
2599 ++v14;
|
|
2600 }
|
|
2601 while ( v14 <= &pWeaponSkills[8] );
|
|
2602 if ( !v12 )
|
|
2603 v3 = v3 + LOBYTE(v2->uFontHeight) - 3;
|
|
2604 v15 = pMagicSkills;
|
|
2605 v5 = v3 + 2 * LOBYTE(v2->uFontHeight) - 6;
|
|
2606 do
|
|
2607 {
|
|
2608 if ( v18->pActiveSkills[*v15] & 0x3F && a2 < 15 )
|
|
2609 {
|
|
2610 v6 = LOBYTE(v2->uFontHeight);
|
|
2611 v5 = v5 + v6 - 3;
|
|
2612 ++a2;
|
832
|
2613 pGUIWindow_CurrentMenu->CreateButton(0x18u, v5, 0xCCu, v6 - 3, 3, *v15 | 0x8000, UIMSG_SkillUp, *v15, 0, "", 0, 0);
|
706
|
2614 v2 = pFontLucida;
|
|
2615 }
|
|
2616 ++v15;
|
|
2617 }
|
|
2618 while ( v15 <= &pMagicSkills[8] );
|
|
2619 v13 = 0;
|
|
2620 v16 = pArmorSkills;
|
|
2621 v7 = 2 * LOBYTE(v2->uFontHeight) + 13;
|
|
2622 do
|
|
2623 {
|
|
2624 if ( v18->pActiveSkills[*v16] & 0x3F )
|
|
2625 {
|
|
2626 v8 = LOBYTE(v2->uFontHeight);
|
|
2627 v7 = v7 + v8 - 3;
|
|
2628 ++a2;
|
|
2629 ++v13;
|
832
|
2630 pGUIWindow_CurrentMenu->CreateButton(0xF6u, v7, 0xCCu, v8 - 3, 3, *v16 | 0x8000, UIMSG_SkillUp, *v16, 0, "", 0, 0);
|
706
|
2631 v2 = pFontLucida;
|
|
2632 }
|
|
2633 ++v16;
|
|
2634 }
|
|
2635 while ( v16 <= &pArmorSkills[4] );
|
|
2636 if ( !v13 )
|
|
2637 v7 = v7 + LOBYTE(v2->uFontHeight) - 3;
|
|
2638 v17 = pMiscSkills;
|
|
2639 v9 = v7 + 2 * LOBYTE(v2->uFontHeight) - 6;
|
|
2640 do
|
|
2641 {
|
|
2642 if ( v18->pActiveSkills[*v17] & 0x3F )
|
|
2643 {
|
|
2644 v10 = LOBYTE(v2->uFontHeight);
|
|
2645 v9 = v9 + v10 - 3;
|
|
2646 ++a2;
|
832
|
2647 pGUIWindow_CurrentMenu->CreateButton(0xF6u, v9, 0xCCu, v10 - 3, 3, *v17 | 0x8000, UIMSG_SkillUp, *v17, 0, "", 0, 0);
|
706
|
2648 v2 = pFontLucida;
|
|
2649 }
|
|
2650 ++v17;
|
|
2651 }
|
|
2652 while ( v17 <= &pMiscSkills[11] );
|
|
2653 if ( a2 )
|
|
2654 pGUIWindow_CurrentMenu->_41D08F(a2, 1, 0, a5);
|
|
2655 }
|
|
2656
|
|
2657 //----- (00418511) --------------------------------------------------------
|
|
2658 char __fastcall CharacterUI_StatsTab_Draw(unsigned int uPlayerID)
|
|
2659 {
|
|
2660 Player *pPlayer; // edi@1
|
|
2661 unsigned int v2; // eax@1
|
|
2662 unsigned int v3; // eax@1
|
|
2663 unsigned int v4; // eax@2
|
|
2664 int v5; // ST20_4@4
|
|
2665 int v6; // ST1C_4@4
|
|
2666 int v7; // ebp@4
|
|
2667 int v8; // eax@4
|
|
2668 unsigned int v9; // eax@4
|
|
2669 int v10; // ST34_4@4
|
|
2670 int v11; // ST20_4@4
|
|
2671 int v12; // ST1C_4@4
|
|
2672 int v13; // ebp@4
|
|
2673 int v14; // eax@4
|
|
2674 unsigned int v15; // eax@4
|
|
2675 int v16; // ST34_4@4
|
|
2676 int v17; // ST20_4@4
|
|
2677 int v18; // ST1C_4@4
|
|
2678 int v19; // ebp@4
|
|
2679 int v20; // eax@4
|
|
2680 unsigned int v21; // eax@4
|
|
2681 int v22; // ST34_4@4
|
|
2682 int v23; // ST20_4@4
|
|
2683 int v24; // ST1C_4@4
|
|
2684 int v25; // ebp@4
|
|
2685 int v26; // eax@4
|
|
2686 unsigned int v27; // eax@4
|
|
2687 int v28; // ST34_4@4
|
|
2688 int v29; // ST20_4@4
|
|
2689 int v30; // ST1C_4@4
|
|
2690 int v31; // ebp@4
|
|
2691 int v32; // eax@4
|
|
2692 unsigned int v33; // eax@4
|
|
2693 int v34; // ST34_4@4
|
|
2694 int v35; // ST20_4@4
|
|
2695 int v36; // ST1C_4@4
|
|
2696 int v37; // ebp@4
|
|
2697 int v38; // eax@4
|
|
2698 unsigned int v39; // eax@4
|
|
2699 int v40; // ST34_4@4
|
|
2700 int v41; // ST20_4@4
|
|
2701 int v42; // ST1C_4@4
|
|
2702 int v43; // ebp@4
|
|
2703 int v44; // eax@4
|
|
2704 unsigned int v45; // eax@4
|
|
2705 int v46; // ebp@4
|
|
2706 signed int v47; // ST20_4@6
|
|
2707 int v48; // ST1C_4@6
|
|
2708 signed int v49; // eax@6
|
|
2709 unsigned int v50; // eax@6
|
|
2710 int v51; // ST20_4@8
|
|
2711 int v52; // ST1C_4@8
|
|
2712 int v53; // eax@8
|
|
2713 unsigned int v54; // eax@8
|
|
2714 int v55; // ST34_4@8
|
|
2715 int v56; // ST20_4@8
|
|
2716 int v57; // ST1C_4@8
|
|
2717 int v58; // ebp@8
|
|
2718 int v59; // eax@8
|
|
2719 unsigned int v60; // eax@8
|
|
2720 unsigned int v61; // ebp@8
|
|
2721 unsigned int v62; // eax@8
|
|
2722 char *v63; // ST20_4@8
|
|
2723 signed int v64; // eax@8
|
|
2724 unsigned int v65; // ebp@8
|
|
2725 unsigned __int8 v66; // al@8
|
|
2726 char *v67; // eax@9
|
|
2727 unsigned int v68; // ST20_4@11
|
|
2728 unsigned int v69; // ST1C_4@11
|
|
2729 signed int v70; // ebp@11
|
|
2730 signed int v71; // eax@11
|
|
2731 unsigned int v72; // eax@11
|
|
2732 int v73; // ST20_4@13
|
|
2733 int v74; // ST1C_4@13
|
|
2734 int v75; // ebp@13
|
|
2735 int v76; // eax@13
|
|
2736 unsigned int v77; // eax@13
|
|
2737 char *v78; // ecx@14
|
|
2738 int v79; // ST20_4@16
|
|
2739 char *v80; // ST40_4@16
|
|
2740 unsigned int v81; // eax@16
|
|
2741 int v82; // ST34_4@16
|
|
2742 int v83; // eax@16
|
|
2743 int v84; // ST34_4@16
|
|
2744 char *v85; // eax@16
|
|
2745 int v86; // ST34_4@16
|
|
2746 int v87; // eax@16
|
|
2747 int v88; // ST34_4@16
|
|
2748 char *v89; // eax@16
|
|
2749 int v90; // eax@16
|
|
2750 int v91; // ST20_4@19
|
|
2751 unsigned int v92; // eax@19
|
|
2752 int v93; // eax@19
|
|
2753 int v94; // ST20_4@22
|
|
2754 unsigned int v95; // eax@22
|
|
2755 int v96; // eax@22
|
|
2756 int v97; // ST20_4@25
|
|
2757 unsigned int v98; // eax@25
|
|
2758 int v99; // eax@25
|
|
2759 int v100; // ST20_4@27
|
|
2760 unsigned int v101; // eax@27
|
|
2761 int v102; // eax@27
|
|
2762 int v103; // ST20_4@30
|
|
2763 unsigned int v104; // eax@30
|
|
2764 char *v105; // ST20_4@32
|
|
2765 unsigned int v106; // eax@32
|
|
2766 int v107; // eax@33
|
|
2767 int v108; // ST20_4@36
|
|
2768 unsigned int v109; // eax@36
|
|
2769 char *v110; // ST20_4@38
|
|
2770 unsigned int v111; // eax@38
|
|
2771 int uY; // [sp+10h] [bp-10h]@6
|
|
2772 int uYa; // [sp+10h] [bp-10h]@11
|
|
2773 int uYb; // [sp+10h] [bp-10h]@13
|
|
2774 int uYc; // [sp+10h] [bp-10h]@16
|
|
2775 int uYd; // [sp+10h] [bp-10h]@19
|
|
2776 int uYe; // [sp+10h] [bp-10h]@22
|
|
2777 int uYf; // [sp+10h] [bp-10h]@25
|
|
2778 int uYg; // [sp+10h] [bp-10h]@27
|
|
2779 int uYh; // [sp+10h] [bp-10h]@33
|
|
2780 const char *a2; // [sp+14h] [bp-Ch]@4
|
|
2781 const char *a2a; // [sp+14h] [bp-Ch]@6
|
|
2782 const char *a2b; // [sp+14h] [bp-Ch]@11
|
|
2783 const char *a2c; // [sp+14h] [bp-Ch]@16
|
|
2784 const char *a2d; // [sp+14h] [bp-Ch]@19
|
|
2785 const char *a2e; // [sp+14h] [bp-Ch]@22
|
|
2786 const char *a2f; // [sp+14h] [bp-Ch]@25
|
|
2787 const char *a2g; // [sp+14h] [bp-Ch]@27
|
|
2788 const char *a2h; // [sp+14h] [bp-Ch]@33
|
|
2789 int v131; // [sp+18h] [bp-8h]@16
|
|
2790 int v132; // [sp+18h] [bp-8h]@19
|
|
2791 int v133; // [sp+18h] [bp-8h]@22
|
|
2792 int v134; // [sp+18h] [bp-8h]@25
|
|
2793 int v135; // [sp+18h] [bp-8h]@27
|
|
2794 int v136; // [sp+18h] [bp-8h]@33
|
|
2795 int v137; // [sp+1Ch] [bp-4h]@27
|
|
2796 int v138; // [sp+1Ch] [bp-4h]@33
|
|
2797
|
|
2798 pPlayer = &pParty->pPlayers[uPlayerID-1];
|
|
2799 v2 = pIcons_LOD->LoadTexture("fr_stats", TEXTURE_16BIT_PALETTE);
|
|
2800 pRenderer->DrawTextureIndexed(8, 8, (Texture *)(v2 != -1 ? (int)&pIcons_LOD->pTextures[v2] : 0));
|
|
2801 v3 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
|
|
2802 sprintf(pTmpBuf, "\f%05d", v3);
|
809
|
2803 sprintfex(pTmpBuf2, pGlobalTXT_LocalizationStrings[429], pPlayer->pName, pClassNames[pPlayer->classType]);//^Pi[%s] %s
|
706
|
2804 strcat(pTmpBuf, pTmpBuf2);
|
|
2805 if ( pPlayer->uSkillPoints )
|
|
2806 v4 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
|
|
2807 else
|
|
2808 v4 = 0xFFFFu;
|
|
2809 sprintf(pTmpBuf2, "\f00000\r180%s: \f%05d%d\f00000\n\n\n", pGlobalTXT_LocalizationStrings[207], v4, pPlayer->uSkillPoints);//Skill points
|
|
2810 strcat(pTmpBuf, pTmpBuf2);
|
|
2811 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, 18, 0, pTmpBuf, 0, 0, 0);
|
|
2812 v5 = pPlayer->GetBaseStrength();
|
|
2813 v6 = pPlayer->GetActualMight();
|
|
2814 v7 = pPlayer->GetBaseStrength();
|
|
2815 v8 = pPlayer->GetActualMight();
|
|
2816 v9 = UI_GetHealthManaStringColor(v8, v7);
|
|
2817 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[144], v9, v6, v5);//Might
|
|
2818 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, 53, 0, pTmpBuf, 0, 0, 0);
|
|
2819 v10 = LOBYTE(pFontArrus->uFontHeight) + 51;
|
|
2820 v11 = pPlayer->GetBaseIntelligence();
|
|
2821 v12 = pPlayer->GetActualIntelligence();
|
|
2822 v13 = pPlayer->GetBaseIntelligence();
|
|
2823 v14 = pPlayer->GetActualIntelligence();
|
|
2824 v15 = UI_GetHealthManaStringColor(v14, v13);
|
|
2825 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[116], v15, v12, v11);//Intellect
|
|
2826 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v10, 0, pTmpBuf, 0, 0, 0);
|
|
2827 v16 = LOBYTE(pFontArrus->uFontHeight) + v10 - 2;
|
|
2828 v17 = pPlayer->GetBaseWillpower();
|
|
2829 v18 = pPlayer->GetActualWillpower();
|
|
2830 v19 = pPlayer->GetBaseWillpower();
|
|
2831 v20 = pPlayer->GetActualWillpower();
|
|
2832 v21 = UI_GetHealthManaStringColor(v20, v19);
|
|
2833 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[163], v21, v18, v17);//
|
|
2834 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v16, 0, pTmpBuf, 0, 0, 0);
|
|
2835 v22 = LOBYTE(pFontArrus->uFontHeight) + v16 - 2;
|
|
2836 v23 = pPlayer->GetBaseEndurance();
|
|
2837 v24 = pPlayer->GetActualEndurance();
|
|
2838 v25 = pPlayer->GetBaseEndurance();
|
|
2839 v26 = pPlayer->GetActualEndurance();
|
|
2840 v27 = UI_GetHealthManaStringColor(v26, v25);
|
|
2841 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[75], v27, v24, v23);//
|
|
2842 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v22, 0, pTmpBuf, 0, 0, 0);
|
|
2843 v28 = LOBYTE(pFontArrus->uFontHeight) + v22 - 2;
|
|
2844 v29 = pPlayer->GetBaseAccuracy();
|
|
2845 v30 = pPlayer->GetActualAccuracy();
|
|
2846 v31 = pPlayer->GetBaseAccuracy();
|
|
2847 v32 = pPlayer->GetActualAccuracy();
|
|
2848 v33 = UI_GetHealthManaStringColor(v32, v31);
|
|
2849 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[1], v33, v30, v29);
|
|
2850 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v28, 0, pTmpBuf, 0, 0, 0);
|
|
2851 v34 = LOBYTE(pFontArrus->uFontHeight) + v28 - 2;
|
|
2852 v35 = pPlayer->GetBaseSpeed();
|
|
2853 v36 = pPlayer->GetActualSpeed();
|
|
2854 v37 = pPlayer->GetBaseSpeed();
|
|
2855 v38 = pPlayer->GetActualSpeed();
|
|
2856 v39 = UI_GetHealthManaStringColor(v38, v37);
|
|
2857 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n", pGlobalTXT_LocalizationStrings[211], v39, v36, v35);
|
|
2858 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v34, 0, pTmpBuf, 0, 0, 0);
|
|
2859 v40 = LOBYTE(pFontArrus->uFontHeight) + v34 - 2;
|
|
2860 v41 = pPlayer->GetBaseLuck();
|
|
2861 v42 = pPlayer->GetActualLuck();
|
|
2862 v43 = pPlayer->GetBaseLuck();
|
|
2863 v44 = pPlayer->GetActualLuck();
|
|
2864 v45 = UI_GetHealthManaStringColor(v44, v43);
|
|
2865 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n\n", pGlobalTXT_LocalizationStrings[136], v45, v42, v41);
|
|
2866 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v40, 0, pTmpBuf, 0, 0, 0);
|
|
2867 a2 = "%s\f%05u\r424%d\f00000 /\t185%d\n";
|
|
2868 v46 = v40 + 2 * LOBYTE(pFontArrus->uFontHeight) + 5;
|
|
2869 if ( pPlayer->GetMaxHealth() >= 1000 )
|
|
2870 a2 = "%s\f%05u\r388%d\f00000 / %d\n";
|
|
2871 v47 = pPlayer->GetMaxHealth();
|
|
2872 v48 = pPlayer->sHealth;
|
|
2873 v49 = pPlayer->GetMaxHealth();
|
|
2874 v50 = UI_GetHealthManaStringColor(pPlayer->sHealth, v49);
|
|
2875 sprintf(pTmpBuf, a2, pGlobalTXT_LocalizationStrings[108], v50, v48, v47);
|
|
2876 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v46, 0, pTmpBuf, 0, 0, 0);
|
|
2877 a2a = "%s\f%05u\r424%d\f00000 /\t185%d\n";
|
|
2878 uY = LOBYTE(pFontArrus->uFontHeight) + v46 - 2;
|
|
2879 if ( pPlayer->GetMaxMana() >= 1000 )
|
|
2880 a2a = "%s\f%05u\r388%d\f00000 / %d\n";
|
|
2881 v51 = pPlayer->GetMaxMana();
|
|
2882 v52 = pPlayer->sMana;
|
|
2883 v53 = pPlayer->GetMaxMana();
|
|
2884 v54 = UI_GetHealthManaStringColor(pPlayer->sMana, v53);
|
|
2885 sprintf(pTmpBuf, a2a, pGlobalTXT_LocalizationStrings[212], v54, v52, v51);
|
|
2886 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, uY, 0, pTmpBuf, 0, 0, 0);
|
|
2887 v55 = LOBYTE(pFontArrus->uFontHeight) + uY - 2;
|
|
2888 v56 = pPlayer->GetBaseAC();
|
|
2889 v57 = pPlayer->GetActualAC();
|
|
2890 v58 = pPlayer->GetBaseAC();
|
|
2891 v59 = pPlayer->GetActualAC();
|
|
2892 v60 = UI_GetHealthManaStringColor(v59, v58);
|
|
2893 sprintf(pTmpBuf, "%s\f%05u\r424%d\f00000 /\t185%d\n\n", pGlobalTXT_LocalizationStrings[12], v60, v57, v56);
|
|
2894 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 26, v55, 0, pTmpBuf, 0, 0, 0);
|
|
2895 v61 = v55 + 2 * LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2896 v62 = pPlayer->GetMajorConditionIdx();
|
|
2897 v63 = aCharacterConditionNames[v62];
|
|
2898 v64 = GetConditionDrawColor(v62);
|
|
2899 sprintf(pTmpBuf, "%s: \f%05d%s\n", pGlobalTXT_LocalizationStrings[47], v64, v63);
|
|
2900 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x1Au, v61, 0, pTmpBuf, 226, 0);
|
|
2901 v65 = LOBYTE(pFontArrus->uFontHeight) + v61 - 1;
|
|
2902 v66 = pPlayer->uQuickSpell;
|
|
2903 if ( v66 )
|
|
2904 v67 = pSpellStats->pInfos[v66].pShortName;
|
|
2905 else
|
|
2906 v67 = pGlobalTXT_LocalizationStrings[153];
|
|
2907 sprintf(pTmpBuf, "%s: %s", pGlobalTXT_LocalizationStrings[172], v67);
|
|
2908 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, 0x1Au, v65, 0, pTmpBuf, 226, 0);
|
|
2909 v68 = pPlayer->GetBaseAge();
|
|
2910 v69 = pPlayer->GetActualAge();
|
|
2911 v70 = pPlayer->GetBaseAge();
|
|
2912 v71 = pPlayer->GetActualAge();
|
|
2913 v72 = UI_GetHealthManaStringColor(v71, v70);
|
|
2914 sprintf(pTmpBuf, "%s\f%05u\t100%d\f00000 / %d\n", pGlobalTXT_LocalizationStrings[5], v72, v69, v68);
|
|
2915 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, 50, 0, pTmpBuf, 0, 0, 0);
|
|
2916 a2b = "%s\f%05u\t100%d\f00000 / %d\n";
|
|
2917 uYa = LOBYTE(pFontArrus->uFontHeight) + 48;
|
|
2918 if ( pPlayer->GetBaseLevel() > 99 )
|
|
2919 a2b = format_4E2E68;
|
|
2920 v73 = pPlayer->GetBaseLevel();
|
|
2921 v74 = pPlayer->GetActualLevel();
|
|
2922 v75 = pPlayer->GetBaseLevel();
|
|
2923 v76 = pPlayer->GetActualLevel();
|
|
2924 v77 = UI_GetHealthManaStringColor(v76, v75);
|
|
2925 sprintf(pTmpBuf, a2b, pGlobalTXT_LocalizationStrings[131], v77, v74, v73);
|
|
2926 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYa, 0, pTmpBuf, 0, 0, 0);
|
|
2927 uYb = uYa + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2928 if ( (signed __int64)pPlayer->uExperience <= 9999999 )
|
|
2929 v78 = pGlobalTXT_LocalizationStrings[83];
|
|
2930 else
|
|
2931 v78 = pGlobalTXT_LocalizationStrings[17];
|
|
2932 v79 = LODWORD(pPlayer->uExperience);
|
|
2933 v80 = v78;
|
|
2934 v81 = pPlayer->GetExperienceDisplayColor();
|
|
2935 sprintf(pTmpBuf, "%s\r180\f%05d%lu\f00000\n\n", v80, v81, v79);
|
|
2936 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYb, 0, pTmpBuf, 0, 0, 0);
|
|
2937 v82 = uYb + 2 * LOBYTE(pFontArrus->uFontHeight);
|
|
2938 v83 = pPlayer->GetActualAttack(0);
|
|
2939 sprintf(pTmpBuf, "%s\t100%+d\n", pGlobalTXT_LocalizationStrings[18], v83);
|
|
2940 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v82, 0, pTmpBuf, 0, 0, 0);
|
|
2941 v84 = v82 + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2942 v85 = pPlayer->GetMeleeDamageString();
|
|
2943 sprintf(pTmpBuf, "%s\t100 %s\n", pGlobalTXT_LocalizationStrings[53], v85);
|
|
2944 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v84, 0, pTmpBuf, 0, 0, 0);
|
|
2945 v86 = v84 + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2946 v87 = pPlayer->GetRangedAttack();
|
|
2947 sprintf(pTmpBuf, "%s\t100%+d\n", pGlobalTXT_LocalizationStrings[203], v87);
|
|
2948 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v86, 0, pTmpBuf, 0, 0, 0);
|
|
2949 v88 = v86 + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2950 v89 = pPlayer->GetRangedDamageString();
|
|
2951 sprintf(pTmpBuf, "%s\t100 %s\n\n", pGlobalTXT_LocalizationStrings[53], v89);
|
|
2952 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, v88, 0, pTmpBuf, 0, 0, 0);
|
|
2953 a2c = format_4E2E10;
|
|
2954 uYc = v88 + 2 * LOBYTE(pFontArrus->uFontHeight) - 4;
|
|
2955 v131 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE);
|
|
2956 v90 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE);
|
|
2957 if ( v131 > 99 || v90 > 99 )
|
|
2958 a2c = format_4E2E68;
|
|
2959 v91 = v90;
|
|
2960 v92 = UI_GetHealthManaStringColor(v131, v90);
|
|
2961 sprintf(pTmpBuf, a2c, pGlobalTXT_LocalizationStrings[87], v92, v131, v91);
|
|
2962 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYc, 0, pTmpBuf, 0, 0, 0);
|
|
2963 a2d = format_4E2E10;
|
|
2964 uYd = uYc + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2965 v132 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_AIR);
|
|
2966 v93 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_AIR);
|
|
2967 if ( v132 > 99 || v93 > 99 )
|
|
2968 a2d = format_4E2E68;
|
|
2969 v94 = v93;
|
|
2970 v95 = UI_GetHealthManaStringColor(v132, v93);
|
|
2971 sprintf(pTmpBuf, a2d, pGlobalTXT_LocalizationStrings[6], v95, v132, v94);
|
|
2972 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYd, 0, pTmpBuf, 0, 0, 0);
|
|
2973 a2e = format_4E2E10;
|
|
2974 uYe = uYd + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2975 v133 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_WATER);
|
|
2976 v96 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_WATER);
|
|
2977 if ( v133 > 99 || v96 > 99 )
|
|
2978 a2e = format_4E2E68;
|
|
2979 v97 = v96;
|
|
2980 v98 = UI_GetHealthManaStringColor(v133, v96);
|
|
2981 sprintf(pTmpBuf, a2e, pGlobalTXT_LocalizationStrings[240], v98, v133, v97);
|
|
2982 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYe, 0, pTmpBuf, 0, 0, 0);
|
|
2983 a2f = format_4E2E10;
|
|
2984 uYf = uYe + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2985 v134 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH);
|
|
2986 v99 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH);
|
|
2987 if ( v134 > 99 )
|
|
2988 a2f = format_4E2E68;
|
|
2989 v100 = v99;
|
|
2990 v101 = UI_GetHealthManaStringColor(v134, v99);
|
|
2991 sprintf(pTmpBuf, a2f, pGlobalTXT_LocalizationStrings[70], v101, v134, v100);
|
|
2992 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYf, 0, pTmpBuf, 0, 0, 0);
|
|
2993 a2g = format_4E2E10;
|
|
2994 uYg = uYf + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
2995 v135 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_MIND);
|
|
2996 v102 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_MIND);
|
|
2997 v137 = v102;
|
|
2998 if ( v135 > 99 || v102 > 99 )
|
|
2999 a2g = format_4E2E68;
|
|
3000 v103 = v102;
|
|
3001 v104 = UI_GetHealthManaStringColor(v135, v102);
|
|
3002 sprintf(pTmpBuf, a2g, pGlobalTXT_LocalizationStrings[142], v104, v135, v103);
|
|
3003 if ( pPlayer->classType == PLAYER_CLASS_LICH && v137 == 200 )
|
|
3004 {
|
|
3005 v105 = pGlobalTXT_LocalizationStrings[625];
|
|
3006 v106 = UI_GetHealthManaStringColor(v135, 200);
|
|
3007 sprintf(pTmpBuf, format_4E2E00, pGlobalTXT_LocalizationStrings[142], v106, v105);
|
|
3008 }
|
|
3009 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYg, 0, pTmpBuf, 0, 0, 0);
|
|
3010 a2h = format_4E2E10;
|
|
3011 uYh = uYg + LOBYTE(pFontArrus->uFontHeight) - 2;
|
|
3012 v136 = pPlayer->GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_BODY);
|
|
3013 v107 = pPlayer->GetBaseResistance(CHARACTER_ATTRIBUTE_RESIST_BODY);
|
|
3014 v138 = v107;
|
|
3015 if ( v136 > 99 || v107 > 99 )
|
|
3016 a2h = format_4E2E68;
|
|
3017 v108 = v107;
|
|
3018 v109 = UI_GetHealthManaStringColor(v136, v107);
|
|
3019 sprintf(pTmpBuf, a2h, pGlobalTXT_LocalizationStrings[29], v109, v136, v108);
|
|
3020 if ( pPlayer->classType == PLAYER_CLASS_LICH && v138 == 200 )
|
|
3021 {
|
|
3022 v110 = pGlobalTXT_LocalizationStrings[625];
|
|
3023 v111 = UI_GetHealthManaStringColor(v136, 200);
|
|
3024 sprintf(pTmpBuf, format_4E2E00, pGlobalTXT_LocalizationStrings[29], v111, v110);
|
|
3025 }
|
|
3026 return pGUIWindow_CurrentMenu->DrawText(pFontArrus, 266, uYh, 0, pTmpBuf, 0, 0, 0);
|
|
3027 }
|
|
3028
|
|
3029 //----- (00419100) --------------------------------------------------------
|
|
3030 void FillAwardsData()
|
|
3031 {
|
|
3032 Player *pPlayer; // esi@1
|
|
3033
|
|
3034 pPlayer = pPlayers[uActiveCharacter];
|
|
3035 memset(&achievedAwardsIndex, 0, 4000);
|
|
3036 memset(pTmpBuf2, 0, 0x7D0u);
|
|
3037 dword_506544 = 0;
|
|
3038 dword_506548 = 0;
|
|
3039 awards_count = 0;
|
|
3040 dword_50651C = 0;
|
|
3041 dword_506528 = 0;
|
|
3042 for(int i=0; i<105; ++i)
|
|
3043 {
|
|
3044 if ( _449B57_test_bit((unsigned char*)&pPlayer->_guilds_member_bits, i) && pAwards[i].pText )
|
|
3045 achievedAwardsIndex[awards_count++] = i;
|
|
3046 }
|
|
3047 awards_count2 = awards_count;
|
|
3048 awards_count = 0;
|
|
3049 //sort awards index
|
|
3050 if ( awards_count2>0 )
|
|
3051 {
|
|
3052 for(int i=0; i<awards_count2; ++i)
|
|
3053 achievedAwardsIndex[awards_count2 + i] = rand() % 16;
|
|
3054
|
|
3055 for(int i=1; i<awards_count2-1; ++i)
|
|
3056 {
|
|
3057 for (int j = i; j < awards_count2-1; ++j )
|
|
3058 {
|
|
3059 int tmp=achievedAwardsIndex[j];
|
|
3060 if(pAwards[j].uSort < pAwards[i].uSort)
|
|
3061 {
|
|
3062 achievedAwardsIndex[j] = achievedAwardsIndex[i];
|
|
3063 achievedAwardsIndex[i] = tmp;
|
|
3064 }
|
|
3065 }
|
|
3066 }
|
|
3067 }
|
|
3068 }
|