comparison mm7_1.cpp @ 578:fdea951756f9

Слияние
author Ritor1
date Tue, 05 Mar 2013 10:45:40 +0600
parents fcbb3c281217
children f451efdb7c8b
comparison
equal deleted inserted replaced
577:7e8f5124056c 578:fdea951756f9
983 ++uCellID; 983 ++uCellID;
984 v26 += 4; 984 v26 += 4;
985 } 985 }
986 while ( uCellID < 126 ); 986 while ( uCellID < 126 );
987 } 987 }
988 // 4E28F8: using guessed type int pCurrentScreen;
989 // 507958: using guessed type int uTextureID_507958;
990 // 50C9A8: using guessed type int dword_50C9A8;
991 988
992 //----- (0041A556) -------------------------------------------------------- 989 //----- (0041A556) --------------------------------------------------------
993 void __cdecl draw_leather() 990 void __cdecl draw_leather()
994 { 991 {
995 pRenderer->DrawTextureIndexed( 992 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->GetTexture(uTextureID_Leather));
996 8u,
997 8u,
998 (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0));
999 } 993 }
1000 994
1001 //----- (0041A57E) -------------------------------------------------------- 995 //----- (0041A57E) --------------------------------------------------------
1002 char __cdecl QuickRefDraw() 996 void QuickRefDraw()
1003 { 997 {
1004 unsigned int v0; // ebx@1 998 unsigned int v0; // ebx@1
1005 unsigned int v1; // eax@1 999 //unsigned int v1; // eax@1
1006 Player *pPlayer; // ebp@2 1000 Player *pPlayer; // ebp@2
1007 int v3; // eax@6 1001 int v3; // eax@6
1008 int v4; // edi@6 1002 int v4; // edi@6
1009 unsigned int v5; // eax@7 1003 unsigned int v5; // eax@7
1010 unsigned int v6; // edi@9 1004 unsigned int v6; // edi@9
1047 unsigned int v44; // [sp+14h] [bp-18h]@2 1041 unsigned int v44; // [sp+14h] [bp-18h]@2
1048 int v45; // [sp+18h] [bp-14h]@1 1042 int v45; // [sp+18h] [bp-14h]@1
1049 unsigned int v46; // [sp+1Ch] [bp-10h]@1 1043 unsigned int v46; // [sp+1Ch] [bp-10h]@1
1050 unsigned int v47; // [sp+20h] [bp-Ch]@1 1044 unsigned int v47; // [sp+20h] [bp-Ch]@1
1051 unsigned int v48; // [sp+24h] [bp-8h]@33 1045 unsigned int v48; // [sp+24h] [bp-8h]@33
1052 unsigned int v49; // [sp+28h] [bp-4h]@1 1046 //unsigned int v49; // [sp+28h] [bp-4h]@1
1053 1047
1054 v0 = 0; 1048 v0 = 0;
1055 v47 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu); 1049 v47 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
1056 v49 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0, 0); 1050 //v49 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0, 0);
1057 v46 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0); 1051 v46 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
1058 v1 = pIcons_LOD->LoadTexture("quikref", TEXTURE_16BIT_PALETTE); 1052 //v1 = pIcons_LOD->LoadTexture("quikref", TEXTURE_16BIT_PALETTE);
1059 pRenderer->DrawTextureIndexed(8u, 8u, (Texture *)(v1 != -1 ? &pIcons_LOD->pTextures[v1] : 0)); 1053 pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("quikref", TEXTURE_16BIT_PALETTE));
1060 v43 = 0; 1054 v43 = 0;
1061 v45 = LOBYTE(pFontArrus->uFontHeight) + 1; 1055 v45 = LOBYTE(pFontArrus->uFontHeight) + 1;
1062 do 1056 do
1063 { 1057 {
1064 pPlayer = &pParty->pPlayers[v43]; 1058 pPlayer = &pParty->pPlayers[v43];
1165 v37 = pGlobalTXT_LocalizationStrings[153];// 1159 v37 = pGlobalTXT_LocalizationStrings[153];//
1166 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v35, 0, v37, 84, 0); 1160 pGUIWindow_CurrentMenu->DrawTextInRect(pFontArrus, v44, v35, 0, v37, 84, 0);
1167 ++v43; 1161 ++v43;
1168 } 1162 }
1169 while ( v43 < 4 ); 1163 while ( v43 < 4 );
1164
1170 v38 = GetPartyReputation(); 1165 v38 = GetPartyReputation();
1171 if ( v38 >= 0 ) 1166 if ( v38 >= 0 )
1172 { 1167 {
1173 v39 = v49;
1174 if ( v38 <= 5 ) 1168 if ( v38 <= 5 )
1175 v39 = 65535; 1169 v39 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFF, 0xFF, 0xFF);
1170 else
1171 v39 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFF, 0, 0);
1176 } 1172 }
1177 else 1173 else
1178 {
1179 v39 = v46; 1174 v39 = v46;
1180 } 1175
1181 v40 = GetReputationString(v38); 1176 v40 = GetReputationString(v38);
1182 sprintf(pTmpBuf, "%s: ", pGlobalTXT_LocalizationStrings[180], v39, v40);//Reputation 1177 sprintf(pTmpBuf, "%s: \xC" "%05d%s\xC" "00000", pGlobalTXT_LocalizationStrings[180], v39, v40);//Reputation
1183 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 22, 323, 0, pTmpBuf, 0, 0, 0); 1178 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 22, 323, 0, pTmpBuf, 0, 0, 0);
1184 v41 = pParty->GetPartyFame(); 1179 v41 = pParty->GetPartyFame();
1185 sprintf(pTmpBuf, "\r261%s: %d", pGlobalTXT_LocalizationStrings[84], v41);// Fame 1180 sprintf(pTmpBuf, "\r261%s: %d", pGlobalTXT_LocalizationStrings[84], v41);// Fame
1186 return pGUIWindow_CurrentMenu->DrawText(pFontArrus, 0, 323, 0, pTmpBuf, 0, 0, 0); 1181 pGUIWindow_CurrentMenu->DrawText(pFontArrus, 0, 323, 0, pTmpBuf, 0, 0, 0);
1187 } 1182 }
1188 1183
1189 //----- (0041ABFD) -------------------------------------------------------- 1184 //----- (0041ABFD) --------------------------------------------------------
1190 void __thiscall CharacterUI_CharacterScreen_Draw(unsigned int uPlayerIdx) 1185 void __thiscall CharacterUI_CharacterScreen_Draw(unsigned int uPlayerIdx)
1191 { 1186 {
2231 return a1->DrawText(a2, 32, uY, 0, pTmpBuf, 0, 0, 0); 2226 return a1->DrawText(a2, 32, uY, 0, pTmpBuf, 0, 0, 0);
2232 } 2227 }
2233 2228
2234 2229
2235 //----- (0041D895) -------------------------------------------------------- 2230 //----- (0041D895) --------------------------------------------------------
2236 void GameUI_DrawItemInfo(ItemGen *ecx0) 2231 void GameUI_DrawItemInfo( struct ItemGen* inspect_item )
2237 { 2232 {
2238 ItemGen *v1; // esi@1 2233 ItemGen *v1; // esi@1
2239 unsigned int v2; // eax@3 2234 unsigned int v2; // eax@3
2240 //char *v3; // edi@5 2235 //char *v3; // edi@5
2241 //unsigned int v4; // eax@5 2236 //unsigned int v4; // eax@5
2242 //unsigned int v5; // esi@5 2237 //unsigned int v5; // esi@5
2243 signed int v6; // eax@5 2238 signed int v6; // eax@5
2244 int v7; // edx@5 2239 int v7; // edx@5
2245 ItemGen *v8; // ecx@10
2246 //unsigned int v9; // eax@12 2240 //unsigned int v9; // eax@12
2247 char v10; // zf@16 2241 char v10; // zf@16
2248 ItemGen *v11; // eax@16 2242 ItemGen *v11; // eax@16
2249 ItemGen *v12; // eax@25 2243 ItemGen *v12; // eax@25
2250 //unsigned int v13; // ecx@32 2244 //unsigned int v13; // ecx@32
2262 int v25; // eax@57 2256 int v25; // eax@57
2263 int v26; // eax@60 2257 int v26; // eax@60
2264 int v27; // eax@67 2258 int v27; // eax@67
2265 const char *v28; // edi@69 2259 const char *v28; // edi@69
2266 int v29; // eax@70 2260 int v29; // eax@70
2267 char *v30; // edi@78 2261 char v30; // edi@78
2268 const char *v31; // eax@78 2262 const char *v31; // eax@78
2269 int v32; // ecx@81 2263 int v32; // ecx@81
2270 unsigned int v33; // eax@81 2264 unsigned int v33; // eax@81
2271 int v34; // esi@81 2265 int v34; // esi@81
2272 const char *v35; // eax@85 2266 const char *v35; // eax@85
2294 unsigned int v57; // [sp-8h] [bp-280h]@36 2288 unsigned int v57; // [sp-8h] [bp-280h]@36
2295 //int v58; // [sp-8h] [bp-280h]@46 2289 //int v58; // [sp-8h] [bp-280h]@46
2296 int v59; // [sp-8h] [bp-280h]@56 2290 int v59; // [sp-8h] [bp-280h]@56
2297 int v60; // [sp-8h] [bp-280h]@58 2291 int v60; // [sp-8h] [bp-280h]@58
2298 unsigned int v61; // [sp-8h] [bp-280h]@110 2292 unsigned int v61; // [sp-8h] [bp-280h]@110
2299 char a1[300]; // [sp+8h] [bp-270h]@40 2293 char out_text[300]; // [sp+8h] [bp-270h]@40
2300 //char Dest[100]; // [sp+6Ch] [bp-20Ch]@40 2294 //char Dest[100]; // [sp+6Ch] [bp-20Ch]@40
2301 //char v64[100]; // [sp+D0h] [bp-1A8h]@40 2295 //char v64[100]; // [sp+D0h] [bp-1A8h]@40
2302 char v65[120]; // [sp+134h] [bp-144h]@92 2296 char v65[120]; // [sp+134h] [bp-144h]@92
2303 char Source[40]; // [sp+1ACh] [bp-CCh]@49 2297 char Source[40]; // [sp+1ACh] [bp-CCh]@49
2304 stru351_summoned_item v67; 2298 stru351_summoned_item v67;
2312 Texture *v73; // [sp+1F4h] [bp-84h]@5 2306 Texture *v73; // [sp+1F4h] [bp-84h]@5
2313 //unsigned int v75; // [sp+1F8h] [bp-80h]@5 2307 //unsigned int v75; // [sp+1F8h] [bp-80h]@5
2314 //char *v76; // [sp+1FCh] [bp-7Ch]@5 2308 //char *v76; // [sp+1FCh] [bp-7Ch]@5
2315 int v77; // [sp+200h] [bp-78h]@12 2309 int v77; // [sp+200h] [bp-78h]@12
2316 int v78; // [sp+204h] [bp-74h]@5 2310 int v78; // [sp+204h] [bp-74h]@5
2317 GUIWindow v79; // [sp+208h] [bp-70h]@2 2311 GUIWindow wHintWindow; // [sp+208h] [bp-70h]@2
2318 POINT a2; // [sp+25Ch] [bp-1Ch]@2 2312 POINT a2; // [sp+25Ch] [bp-1Ch]@2
2319 int v81; // [sp+264h] [bp-14h]@5 2313 int v81; // [sp+264h] [bp-14h]@5
2320 GUIFont *v82; // [sp+268h] [bp-10h]@1 2314 // GUIFont *pFontComic; // [sp+268h] [bp-10h]@1
2321 char *v83; // [sp+26Ch] [bp-Ch]@18 2315 PlayerSpeech v83; // [sp+26Ch] [bp-Ch]@18
2316 char* v84;
2317 int v85;
2322 char *Str; // [sp+270h] [bp-8h]@65 2318 char *Str; // [sp+270h] [bp-8h]@65
2323 ItemGen *_this; // [sp+274h] [bp-4h]@1 2319
2324 2320 v1 = inspect_item;
2325 v1 = ecx0;
2326 _this = ecx0;
2327 var88 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu); 2321 var88 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0x9Bu);
2328 v82 = pFontComic; 2322 if (!inspect_item->uItemID)
2329 if (!v1->uItemID)
2330 return; 2323 return;
2331 2324
2332 v79.Hint = 0; 2325 wHintWindow.Hint = 0;
2333 v79.uFrameWidth = 384; 2326 wHintWindow.uFrameWidth = 384;
2334 v79.uFrameHeight = 180; 2327 wHintWindow.uFrameHeight = 180;
2335 v79.uFrameY = 40; 2328 wHintWindow.uFrameY = 40;
2336 if ( pMouse->GetCursorPos(&a2)->x <= 320 ) 2329 if ( pMouse->GetCursorPos(&a2)->x <= 320 )
2337 v2 = pMouse->GetCursorPos(&a2)->x + 30; 2330 v2 = pMouse->GetCursorPos(&a2)->x + 30;
2338 else 2331 else
2339 v2 = pMouse->GetCursorPos(&a2)->x - v79.uFrameWidth - 30; 2332 v2 = pMouse->GetCursorPos(&a2)->x - wHintWindow.uFrameWidth - 30;
2340 v79.uFrameX = v2; 2333 wHintWindow.uFrameX = v2;
2341 auto item_desc = &pItemsTable->pItems[_this->uItemID]; 2334 auto item_desc = &pItemsTable->pItems[inspect_item->uItemID];
2342 //v3 = (char *)&pItemsTable->pItems[_this->uItemID].pIconName; 2335 //v3 = (char *)&pItemsTable->pItems[_this->uItemID].pIconName;
2343 //v76 = v3; 2336 //v76 = v3;
2344 //v4 = pIcons_LOD->LoadTexture(pItemsTable->pItems[_this->uItemID].pIconName, TEXTURE_16BIT_PALETTE); 2337 //v4 = pIcons_LOD->LoadTexture(pItemsTable->pItems[_this->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
2345 //v5 = v4; 2338 //v5 = v4;
2346 //v4 *= 72; 2339 //v4 *= 72;
2355 v78 = v6 >> 1; 2348 v78 = v6 >> 1;
2356 if ( v81 <= 0 ) 2349 if ( v81 <= 0 )
2357 v81 = 0; 2350 v81 = 0;
2358 else 2351 else
2359 v81 >>= 1; 2352 v81 >>= 1;
2360 v8 = _this;
2361 if ( !item_desc->uItemID_Rep_St ) 2353 if ( !item_desc->uItemID_Rep_St )
2362 _this->SetIdentified(); 2354 inspect_item->SetIdentified();
2363 //v9 = v8->uAttributes; 2355 //v9 = v8->uAttributes;
2364 v77 = 0; 2356 v77 = 0;
2365 //a2.y = v8->uAttributes & 2; 2357 //a2.y = v8->uAttributes & 2;
2366 if (pItemsTable->pItems[v8->uItemID].uEquipType == EQUIP_GOLD) 2358 if (pItemsTable->pItems[inspect_item->uItemID].uEquipType == EQUIP_GOLD)
2367 v77 = v8->uSpecEnchantmentType; 2359 v77 = inspect_item->uSpecEnchantmentType;
2368 if ( uActiveCharacter ) 2360 if ( uActiveCharacter )
2369 { 2361 {
2370 if (!v8->Identified()) 2362 //try to identify
2371 { 2363 if (!inspect_item->Identified())
2372 v10 = pPlayers[uActiveCharacter]->CanIdentify(_this) == 1; 2364 {
2373 v11 = _this; 2365
2374 if ( v10 ) 2366 v11 = inspect_item;
2375 _this->SetIdentified(); 2367 if ( pPlayers[uActiveCharacter]->CanIdentify(inspect_item) == 1 )
2376 v10 = !v11->Identified(); 2368 inspect_item->SetIdentified();
2377 v83 = (char *)9; 2369 v83 = SPEECH_9;
2378 if ( v10 ) 2370 if ( !inspect_item->Identified() )
2379 { 2371 {
2380 ShowStatusBarString(pGlobalTXT_LocalizationStrings[446], 2u); 2372 ShowStatusBarString(pGlobalTXT_LocalizationStrings[446], 2u);//"Identify Failed"
2381 } 2373 }
2382 else 2374 else
2383 { 2375 {
2384 v83 = (char *)SPEECH_8; 2376 v83 = SPEECH_8;
2385 if ( _this->GetValue() < 100 * (pPlayers[uActiveCharacter]->uLevel + 5) ) 2377 if ( inspect_item->GetValue() < 100 * (pPlayers[uActiveCharacter]->uLevel + 5) )
2386 v83 = (char *)SPEECH_7; 2378 v83 = SPEECH_7;
2387 } 2379 }
2388 if ( dword_4E455C ) 2380 if ( dword_4E455C )
2389 { 2381 {
2390 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)(int)v83, 0); 2382 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)(int)v83, 0);
2391 dword_4E455C = 0; 2383 dword_4E455C = 0;
2392 } 2384 }
2393 } 2385 }
2394 _this->UpdateTempBonus(pParty->uTimePlayed); 2386 inspect_item->UpdateTempBonus(pParty->uTimePlayed);
2395 if (v8->Broken()) 2387 if (inspect_item->Broken())
2396 { 2388 {
2397 v10 = pPlayers[uActiveCharacter]->CanRepair(_this) == 1; 2389 if ( pPlayers[uActiveCharacter]->CanRepair(inspect_item) == 1 )
2398 v12 = _this; 2390 inspect_item->uAttributes = inspect_item->uAttributes & 0xFFFFFFFD | 1;
2399 if ( v10 ) 2391 v83 = SPEECH_11;
2400 _this->uAttributes = _this->uAttributes & 0xFFFFFFFD | 1; 2392 if ( !inspect_item->Broken() )
2401 v10 = !v12->Broken(); 2393 v83 = SPEECH_10;
2402 v83 = (char *)SPEECH_11;
2403 if ( v10 )
2404 v83 = (char *)SPEECH_10;
2405 else 2394 else
2406 ShowStatusBarString(pGlobalTXT_LocalizationStrings[448], 2u); 2395 ShowStatusBarString(pGlobalTXT_LocalizationStrings[448], 2u);//"Repair Failed"
2407 if ( dword_4E455C ) 2396 if ( dword_4E455C )
2408 { 2397 {
2409 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)(int)v83, 0); 2398 pPlayers[uActiveCharacter]->PlaySound(v83, 0);
2410 dword_4E455C = 0; 2399 dword_4E455C = 0;
2411 } 2400 }
2412 } 2401 }
2413 } 2402 }
2414 //v13 = _this->uAttributes; 2403 //v13 = _this->uAttributes;
2415 //v14 = _this->Identified(); 2404 //v14 = _this->Identified();
2416 a2.y = _this->Identified(); 2405 //a2.y = inspect_item->Identified();
2417 if (_this->Broken()) 2406 if (inspect_item->Broken())
2418 { 2407 {
2419 v79.DrawMessageBox(0); 2408 wHintWindow.DrawMessageBox(0);
2420 //v15 = &; 2409 //v15 = &;
2421 pRenderer->Clip(v79.uFrameX + 12, v79.uFrameY + 12, 2410 pRenderer->Clip(wHintWindow.uFrameX + 12, wHintWindow.uFrameY + 12,
2422 v79.uFrameX + v79.uFrameWidth - 12, v79.uFrameY + v79.uFrameHeight - 12); 2411 wHintWindow.uFrameX + wHintWindow.uFrameWidth - 12,
2423 v79.uFrameWidth -= 24; 2412 wHintWindow.uFrameY + wHintWindow.uFrameHeight - 12);
2424 v79.uFrameHeight -= 12; 2413 wHintWindow.uFrameWidth -= 24;
2425 v79.uFrameZ = v79.uFrameX + v79.uFrameWidth - 1; 2414 wHintWindow.uFrameHeight -= 12;
2426 v79.uFrameW = v79.uFrameY + v79.uFrameHeight - 1; 2415 wHintWindow.uFrameZ = wHintWindow.uFrameX + wHintWindow.uFrameWidth - 1;
2427 pRenderer->DrawTransparentRedShade(v79.uFrameX + v78, v81 + v79.uFrameY + 30, v73); 2416 wHintWindow.uFrameW = wHintWindow.uFrameY + wHintWindow.uFrameHeight - 1;
2428 if ( a2.y ) 2417 pRenderer->DrawTransparentRedShade(wHintWindow.uFrameX + v78, v81 + wHintWindow.uFrameY + 30, v73);
2429 v16 = _this->GetIdentifiedName(); 2418 if ( inspect_item->Identified())
2419 v16 = inspect_item->GetIdentifiedName();
2430 else 2420 else
2431 v16 = item_desc->pUnidentifiedName; 2421 v16 = item_desc->pUnidentifiedName;
2432 v79.DrawTitleText(pFontArrus, 0, 0xCu, var88, v16, 3u); 2422 wHintWindow.DrawTitleText(pFontArrus, 0, 0xCu, var88, v16, 3u);
2433 v17 = pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[32], &v79, 0, 0); 2423 v17 = pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[32], &wHintWindow, 0, 0); //"Broken Item"
2434 v57 = 3;
2435 v52 = pGlobalTXT_LocalizationStrings[32];
2436 goto LABEL_37;
2437 }
2438 if (!_this->Identified())
2439 {
2440 v79.DrawMessageBox(0);
2441 //v15 = pRenderer;
2442 pRenderer->Clip(v79.uFrameX + 12, v79.uFrameY + 12,
2443 v79.uFrameX + v79.uFrameWidth - 12, v79.uFrameY + v79.uFrameHeight - 12);
2444 v79.uFrameWidth -= 24;
2445 v79.uFrameHeight -= 12;
2446 v79.uFrameZ = v79.uFrameX + v79.uFrameWidth - 1;
2447 v79.uFrameW = v79.uFrameY + v79.uFrameHeight - 1;
2448 pRenderer->DrawTextureTransparent(v79.uFrameX + v78, v81 + v79.uFrameY + 30, v73);
2449 v79.DrawTitleText(pFontArrus, 0, 0xCu, var88, item_desc->pUnidentifiedName, 3u);
2450 v17 = pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[232], &v79, 0, 0);
2451 v57 = 3;
2452 v52 = pGlobalTXT_LocalizationStrings[232];
2453 LABEL_37:
2454 v18 = v17 >> 1; 2424 v18 = v17 >> 1;
2455 v19 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0x19u, 0x19u); 2425 v19 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0x19u, 0x19u);
2456 v79.DrawTitleText(pFontArrus, 0x64u, ((signed int)v79.uFrameHeight >> 1) - v18, v19, v52, v57); 2426 wHintWindow.DrawTitleText(pFontArrus, 0x64u, ((signed int)wHintWindow.uFrameHeight >> 1) - v18, v19, pGlobalTXT_LocalizationStrings[32], 3); //"Broken Item"
2427 goto LABEL_116;
2428 }
2429 if (!inspect_item->Identified())
2430 {
2431 wHintWindow.DrawMessageBox(0);
2432 pRenderer->Clip(wHintWindow.uFrameX + 12, wHintWindow.uFrameY + 12,
2433 wHintWindow.uFrameX + wHintWindow.uFrameWidth - 12,
2434 wHintWindow.uFrameY + wHintWindow.uFrameHeight - 12);
2435 wHintWindow.uFrameWidth -= 24;
2436 wHintWindow.uFrameHeight -= 12;
2437 wHintWindow.uFrameZ = wHintWindow.uFrameX + wHintWindow.uFrameWidth - 1;
2438 wHintWindow.uFrameW = wHintWindow.uFrameY + wHintWindow.uFrameHeight - 1;
2439 pRenderer->DrawTextureTransparent(wHintWindow.uFrameX + v78, v81 + wHintWindow.uFrameY + 30, v73);
2440 wHintWindow.DrawTitleText(pFontArrus, 0, 0xCu, var88, item_desc->pUnidentifiedName, 3u);
2441 v17 = pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[232], &wHintWindow, 0, 0); ///"Not Identified"
2442 v18 = v17 >> 1;
2443 v19 = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0x19u, 0x19u);
2444 wHintWindow.DrawTitleText(pFontArrus, 0x64u, ((signed int)wHintWindow.uFrameHeight >> 1) - v18, v19, pGlobalTXT_LocalizationStrings[232], 3);
2457 goto LABEL_116; 2445 goto LABEL_116;
2458 } 2446 }
2459 2447
2460 sprintfex(a1, pGlobalTXT_LocalizationStrings[463], item_desc->pUnidentifiedName); 2448 sprintfex(out_text, pGlobalTXT_LocalizationStrings[463], item_desc->pUnidentifiedName); //"Type: %s"
2461 a1[100] = 0; 2449 out_text[100] = 0;
2462 a1[200] = 0; 2450 out_text[200] = 0;
2463 //v20 = item_desc->uEquipType; 2451 //v20 = item_desc->uEquipType;
2464 switch (item_desc->uEquipType) 2452 switch (item_desc->uEquipType)
2465 { 2453 {
2466 case EQUIP_ONE_OR_TWO_HANDS: 2454 case EQUIP_ONE_OR_TWO_HANDS:
2467 case EQUIP_TWO_HANDED: 2455 case EQUIP_TWO_HANDED:
2468 sprintfex(a1 + 100, "%s: +%d %s: %dd%d", pGlobalTXT_LocalizationStrings[18], (int)item_desc->uDamageMod, pGlobalTXT_LocalizationStrings[53], (int)item_desc->uDamageDice, (int)item_desc->uDamageRoll); 2456 sprintfex(out_text + 100, "%s: +%d %s: %dd%d", pGlobalTXT_LocalizationStrings[LOCSTR_ATTACK],
2457 (int)item_desc->uDamageMod, pGlobalTXT_LocalizationStrings[53], (int)item_desc->uDamageDice, (int)item_desc->uDamageRoll); //"Damage"
2469 if (item_desc->uDamageMod) 2458 if (item_desc->uDamageMod)
2470 { 2459 {
2471 char mod[16]; 2460 char mod[16];
2472 sprintf(mod, "+%d", (int)item_desc->uDamageMod); 2461 sprintf(mod, "+%d", (int)item_desc->uDamageMod);
2473 strcat(a1 + 100, mod); 2462 strcat(out_text + 100, mod);
2474 } 2463 }
2475 break; 2464 break;
2476 2465
2477 case EQUIP_BOW: 2466 case EQUIP_BOW:
2478 sprintfex(a1 + 100, "%s: +%d %s: %dd%d", pGlobalTXT_LocalizationStrings[203], (int)item_desc->uDamageMod, pGlobalTXT_LocalizationStrings[53], (int)item_desc->uDamageDice, (int)item_desc->uDamageRoll); 2467 sprintfex(out_text + 100, "%s: +%d %s: %dd%d", pGlobalTXT_LocalizationStrings[203], //"Shoot"
2468 (int)item_desc->uDamageMod, pGlobalTXT_LocalizationStrings[53], //"Damage"
2469 (int)item_desc->uDamageDice, (int)item_desc->uDamageRoll);
2479 if (item_desc->uDamageMod) 2470 if (item_desc->uDamageMod)
2480 { 2471 {
2481 char mod[16]; 2472 char mod[16];
2482 sprintf(mod, "+%d", (int)item_desc->uDamageMod); 2473 sprintf(mod, "+%d", (int)item_desc->uDamageMod);
2483 strcat(a1 + 100, mod); 2474 strcat(out_text + 100, mod);
2484 } 2475 }
2485 break; 2476 break;
2486 2477
2487 case EQUIP_ARMOUR: 2478 case EQUIP_ARMOUR:
2488 case EQUIP_SHIELD: 2479 case EQUIP_SHIELD:
2491 case EQUIP_CLOAK: 2482 case EQUIP_CLOAK:
2492 case EQUIP_GAUNTLETS: 2483 case EQUIP_GAUNTLETS:
2493 case EQUIP_BOOTS: 2484 case EQUIP_BOOTS:
2494 case EQUIP_RING: 2485 case EQUIP_RING:
2495 case EQUIP_AMULET: 2486 case EQUIP_AMULET:
2496 if (item_desc->uDamageDice) 2487 if (item_desc->uDamageDice) //"Armor"
2497 sprintfex(a1 + 100, "%s: +%d", pGlobalTXT_LocalizationStrings[11], item_desc->uDamageDice + item_desc->uDamageMod); 2488 sprintfex(out_text + 100, "%s: +%d", pGlobalTXT_LocalizationStrings[11], item_desc->uDamageDice + item_desc->uDamageMod);
2498 break; 2489 break;
2490 case EQUIP_POTION:
2491 if ( inspect_item->uEncantmentType )
2492 sprintf(out_text + 200, "%s: %d",pGlobalTXT_LocalizationStrings[449] , inspect_item->uEncantmentType); //"Power"
2493 break;
2494 case EQUIP_REAGENT:
2495 sprintf(out_text + 200, "%s: %d", pGlobalTXT_LocalizationStrings[449], pItemsTable->pItems[inspect_item->uItemID].uDamageDice); //"Power"
2496 break;
2499 } 2497 }
2500 2498
2501 if ( v77 ) 2499 if ( v77 )
2502 goto LABEL_65; 2500 goto LABEL_65;
2503 //v23 = item_desc->uEquipType; 2501 //v23 = item_desc->uEquipType;
2504 if (item_desc->uEquipType == 14) 2502
2505 { 2503
2506 v24 = _this->uEncantmentType; 2504 if ( inspect_item->uEncantmentType )
2507 if ( v24 ) 2505 {
2508 goto LABEL_56; 2506 sprintf(out_text + 200, "%s: %s +%d", pGlobalTXT_LocalizationStrings[210],
2507 pItemsTable->pEnchantments[inspect_item->uEncantmentType-1].pBonusStat, inspect_item->_bonus_strength); //"Special"
2508 }
2509 else if ( inspect_item->uSpecEnchantmentType )
2510 {
2511 sprintf(out_text + 200, "%s: %s", pGlobalTXT_LocalizationStrings[210],
2512 pItemsTable->pSpecialEnchantments[inspect_item->uSpecEnchantmentType-1].pBonusStatement, inspect_item->_bonus_strength);
2513 }
2514
2515 else if ( inspect_item->uNumCharges )
2516 {
2517 sprintf(out_text + 200, "%s: %lu", pGlobalTXT_LocalizationStrings[464], inspect_item->uNumCharges); //"Charges"
2518
2519 }
2520
2509 LABEL_65: 2521 LABEL_65:
2510 v79.uFrameWidth -= 12; 2522 wHintWindow.uFrameWidth -= 12;
2511 a2.y = 3; 2523 v85 = 3;
2512 v79.uFrameZ = v79.uFrameX + v79.uFrameWidth - 1; 2524 wHintWindow.uFrameZ = wHintWindow.uFrameX + wHintWindow.uFrameWidth - 1;
2513 v79.uFrameW = v79.uFrameY + v79.uFrameHeight - 1; 2525 wHintWindow.uFrameW = wHintWindow.uFrameY + wHintWindow.uFrameHeight - 1;
2514 Str = (char *)(3 * (LOBYTE(pFontArrus->uFontHeight) + 8)); 2526 Str = (char *)(3 * (LOBYTE(pFontArrus->uFontHeight) + 8));
2515 v83 = a1; 2527 v84 = &out_text[0];
2516 do 2528 do
2517 {
2518 if ( *v83 )
2519 { 2529 {
2520 v27 = v82->CalcTextHeight(v83, &v79, 100, 0); 2530 if ( *v84 )
2521 Str += v27 + 3; 2531 {
2532 v27 = pFontComic->CalcTextHeight(v84, &wHintWindow, 100, 0);
2533 Str += v27 + 3;
2534 }
2535 v84 += 100;
2536 --v85;
2522 } 2537 }
2523 v83 += 100; 2538 while ( v85 );
2524 --a2.y; 2539 v28 = item_desc->pDescription;
2525 } 2540 if ( *v28 )
2526 while ( a2.y ); 2541 {
2527 v28 = item_desc->pDescription; 2542 v29 = pFontSmallnum->CalcTextHeight(v28, &wHintWindow, 100, 0);
2528 if ( *v28 ) 2543 Str += v29;
2529 { 2544 }
2530 v29 = pFontSmallnum->CalcTextHeight(v28, &v79, 100, 0); 2545 wHintWindow.uFrameHeight = v73->uTextureHeight + v81 + 54;
2531 Str += v29; 2546 if ( (signed int)Str > (signed int)wHintWindow.uFrameHeight )
2532 } 2547 wHintWindow.uFrameHeight = (unsigned int)Str;
2533 v79.uFrameHeight = v73->uTextureHeight + v81 + 54; 2548 if ( inspect_item->uAttributes & 8 && (inspect_item->uSpecEnchantmentType || inspect_item->uEncantmentType) )
2534 if ( (signed int)Str > (signed int)v79.uFrameHeight ) 2549 wHintWindow.uFrameHeight += LOBYTE(pFontComic->uFontHeight);
2535 v79.uFrameHeight = (unsigned int)Str; 2550 v85 = 0;
2536 if ( _this->uAttributes & 8 && (_this->uSpecEnchantmentType || _this->uEncantmentType) ) 2551 if ( pFontArrus->uFontHeight )
2537 v79.uFrameHeight += LOBYTE(v82->uFontHeight); 2552 {
2538 v83 = 0; 2553 wHintWindow.uFrameWidth -= 24;
2539 if ( LOBYTE(pFontArrus->uFontHeight) ) 2554 v30 = pFontArrus->uFontHeight;
2540 { 2555 v31 = inspect_item->GetIdentifiedName();
2541 v79.uFrameWidth -= 24; 2556 if ( pFontArrus->CalcTextHeight(v31, &wHintWindow, 0, 0) / (signed int)v30 )
2542 v30 = (char *)LOBYTE(pFontArrus->uFontHeight); 2557 v85 = v30;
2543 v31 = _this->GetIdentifiedName(); 2558 wHintWindow.uFrameWidth += 24;
2544 if ( pFontArrus->CalcTextHeight(v31, &v79, 0, 0) / (signed int)v30 ) 2559 }
2545 v83 = v30; 2560 wHintWindow.uFrameWidth += 12;
2546 v79.uFrameWidth += 24; 2561 wHintWindow.uFrameHeight += (unsigned int)v85;
2547 } 2562 wHintWindow.uFrameW = wHintWindow.uFrameY + wHintWindow.uFrameHeight - 1;
2548 v79.uFrameWidth += 12; 2563 wHintWindow.uFrameZ = wHintWindow.uFrameX + wHintWindow.uFrameWidth - 1;
2549 v79.uFrameHeight += (unsigned int)v83; 2564 wHintWindow.DrawMessageBox(0);
2550 v79.uFrameW = v79.uFrameY + v79.uFrameHeight - 1; 2565 //v15 = pRenderer;
2551 v79.uFrameZ = v79.uFrameX + v79.uFrameWidth - 1; 2566 pRenderer->Clip(wHintWindow.uFrameX + 12, wHintWindow.uFrameY + 12,
2552 v79.DrawMessageBox(0); 2567 wHintWindow.uFrameX + wHintWindow.uFrameWidth - 12, wHintWindow.uFrameY + wHintWindow.uFrameHeight - 12);
2553 //v15 = pRenderer; 2568 wHintWindow.uFrameWidth -= 12;
2554 pRenderer->Clip(v79.uFrameX + 12, v79.uFrameY + 12, 2569 v32 = v73->uTextureHeight;
2555 v79.uFrameX + v79.uFrameWidth - 12, v79.uFrameY + v79.uFrameHeight - 12); 2570 v33 = wHintWindow.uFrameHeight;
2556 v79.uFrameWidth -= 12; 2571 wHintWindow.uFrameHeight -= 12;
2557 v32 = v73->uTextureHeight; 2572 wHintWindow.uFrameZ = wHintWindow.uFrameX + wHintWindow.uFrameWidth - 1;
2558 v33 = v79.uFrameHeight; 2573 wHintWindow.uFrameW = wHintWindow.uFrameY + wHintWindow.uFrameHeight - 1;
2559 v79.uFrameHeight -= 12; 2574 pRenderer->DrawTextureTransparent(
2560 v79.uFrameZ = v79.uFrameX + v79.uFrameWidth - 1; 2575 wHintWindow.uFrameX + v78,
2561 v79.uFrameW = v79.uFrameY + v79.uFrameHeight - 1; 2576 wHintWindow.uFrameY + (signed int)(v33 - v32) / 2,
2562 pRenderer->DrawTextureTransparent( 2577 v73);
2563 v79.uFrameX + v78, 2578
2564 v79.uFrameY + (signed int)(v33 - v32) / 2, 2579 v34 = (int)(v85 + 35);
2565 v73); 2580 v85 = 3;
2566 a2.y = 3; 2581 Str = out_text;
2567 v34 = (int)(v83 + 35); 2582 do
2568 Str = a1; 2583 {
2569 do 2584 if ( *Str )
2570 { 2585 {
2571 if ( *Str ) 2586 wHintWindow.DrawText(pFontComic, 100, v34, 0, Str, 0, 0, 0);
2572 { 2587 v34 += pFontComic->CalcTextHeight(Str, &wHintWindow, 100, 0) + 3;
2573 v79.DrawText(v82, 100, v34, 0, Str, 0, 0, 0); 2588 }
2574 v34 += v82->CalcTextHeight(Str, &v79, 100, 0) + 3; 2589 Str += 100;
2575 } 2590 --v85;
2576 Str += 100; 2591 }
2577 --a2.y; 2592 while (v85 );
2578 } 2593 v35 = item_desc->pDescription;
2579 while ( a2.y ); 2594 if ( *v35 )
2580 v35 = item_desc->pDescription; 2595 wHintWindow.DrawText(pFontSmallnum, 100, v34, 0, v35, 0, 0, 0);
2581 if ( *v35 ) 2596 wHintWindow.uFrameX += 12;
2582 v79.DrawText(pFontSmallnum, 100, v34, 0, v35, 0, 0, 0); 2597 wHintWindow.uFrameWidth -= 24;
2583 v79.uFrameX += 12; 2598 v36 = inspect_item->GetIdentifiedName();
2584 v79.uFrameWidth -= 24; 2599 wHintWindow.DrawTitleText(pFontArrus, 0, 0xCu, var88, v36, 3u);
2585 v36 = _this->GetIdentifiedName(); 2600 wHintWindow.uFrameWidth += 24;
2586 v79.DrawTitleText(pFontArrus, 0, 0xCu, var88, v36, 3u); 2601 wHintWindow.uFrameX -= 12;
2587 v79.uFrameWidth += 24; 2602 if ( v77 )
2588 v79.uFrameX -= 12; 2603 {
2589 if ( v77 ) 2604 sprintf(pTmpBuf, "%s: %lu", pGlobalTXT_LocalizationStrings[465], v77);//"Value"
2590 { 2605 v40 = pFontComic;
2591 sprintf(pTmpBuf, "%s: %lu", pGlobalTXT_LocalizationStrings[465], v77); 2606 v61 = 0;
2592 v40 = v82; 2607 v56 = 0;
2593 v61 = 0; 2608 v51 = 0;
2594 v56 = 0; 2609 v47 = pTmpBuf;
2595 v51 = 0; 2610 v44 = 0;
2596 v47 = pTmpBuf; 2611 v42 = wHintWindow.uFrameHeight - LOBYTE(pFontComic->uFontHeight);
2597 v44 = 0; 2612 v41 = 100;
2598 v42 = v79.uFrameHeight - LOBYTE(v82->uFontHeight); 2613 }
2599 v41 = 100; 2614 else
2600 } 2615 {
2601 else 2616 if ( (inspect_item->uAttributes & 8) && (inspect_item->uSpecEnchantmentType || inspect_item->uEncantmentType) )
2602 { 2617 {
2603 if ( _this->uAttributes & 8 && (_this->uSpecEnchantmentType || _this->uEncantmentType) ) 2618 sub_493F79(&v67, inspect_item->uExpireTime - pParty->uTimePlayed);
2604 { 2619 strcpy(pTmpBuf, "Duration:");
2605 sub_493F79(&v67, _this->uExpireTime - pParty->uTimePlayed); 2620 Str = (char *)(v67.field_18_expire_year - game_starting_year);
2606 strcpy(pTmpBuf, "Duration:"); 2621 if (v67.field_18_expire_year != 1168 )
2607 Str = (char *)(v67.field_18_expire_year - game_starting_year); 2622 {
2608 if (v67.field_18_expire_year != 1168 ) 2623 sprintf(v65, " %d:yr", v67.field_18_expire_year - game_starting_year);
2609 { 2624 strcat(pTmpBuf, v65);
2610 sprintf(v65, " %d:yr", v67.field_18_expire_year - game_starting_year); 2625 }
2611 strcat(pTmpBuf, v65); 2626 if ( (((v67.field_14_exprie_month || Str) &&
2612 } 2627 ((sprintf(v65, " %d:mo", v67.field_14_exprie_month), strcat(pTmpBuf, v65), v67.field_14_exprie_month) || Str)
2613 if ( (((v67.field_14_exprie_month || Str) && ((sprintf(v65, " %d:mo", v67.field_14_exprie_month), strcat(pTmpBuf, v65), v67.field_14_exprie_month) || Str) || v67.field_C_expire_day) 2628 || v67.field_C_expire_day)
2614 && ((sprintf(v65, " %d:dy", v67.field_C_expire_day), strcat(pTmpBuf, v65), v67.field_14_exprie_month) || Str || v67.field_C_expire_day) 2629 && ((sprintf(v65, " %d:dy", v67.field_C_expire_day), strcat(pTmpBuf, v65), v67.field_14_exprie_month) || Str ||
2615 || v67.field_8_expire_hour) 2630 v67.field_C_expire_day)
2616 && ((sprintf(v65, " %d:hr", v67.field_8_expire_hour), strcat(pTmpBuf, v65), v67.field_14_exprie_month) || Str || v67.field_C_expire_day || v67.field_8_expire_hour) 2631 || v67.field_8_expire_hour)
2617 || v67.field_4_expire_minute ) 2632 && ((sprintf(v65, " %d:hr", v67.field_8_expire_hour), strcat(pTmpBuf, v65), v67.field_14_exprie_month) || Str ||
2618 { 2633 v67.field_C_expire_day || v67.field_8_expire_hour)
2619 sprintf(v65, " %d:mn", v67.field_4_expire_minute); 2634 || v67.field_4_expire_minute )
2620 strcat(pTmpBuf, v65); 2635 {
2621 } 2636 sprintf(v65, " %d:mn", v67.field_4_expire_minute);
2622 v79.DrawText(v82, 100, v79.uFrameHeight - 2 * LOBYTE(v82->uFontHeight), 0, pTmpBuf, 0, 0, 0); 2637 strcat(pTmpBuf, v65);
2623 } 2638 }
2624 v37 = _this->GetValue(); 2639 wHintWindow.DrawText(pFontComic, 100, wHintWindow.uFrameHeight - 2 * LOBYTE(pFontComic->uFontHeight), 0, pTmpBuf, 0, 0, 0);
2625 sprintf(pTmpBuf, "%s: %lu", pGlobalTXT_LocalizationStrings[465], v37); 2640 }
2626 v79.DrawText(v82, 100, v79.uFrameHeight - LOBYTE(v82->uFontHeight), 0, pTmpBuf, 0, 0, 0); 2641 v37 = inspect_item->GetValue();
2627 v38 = _this->uAttributes; 2642 sprintf(pTmpBuf, "%s: %lu", pGlobalTXT_LocalizationStrings[465], v37);
2628 if ( BYTE1(v38) & 1 ) 2643 wHintWindow.DrawText(pFontComic, 100, wHintWindow.uFrameHeight - LOBYTE(pFontComic->uFontHeight), 0, pTmpBuf, 0, 0, 0);
2629 { 2644 v38 = inspect_item->uAttributes;
2630 v61 = 0; 2645 if ( BYTE1(v38) & 1 )
2631 v56 = 0; 2646 {
2632 v51 = 0; 2647 v61 = 0;
2633 v47 = pGlobalTXT_LocalizationStrings[187]; 2648 v56 = 0;
2634 } 2649 v51 = 0;
2635 else 2650 v47 = pGlobalTXT_LocalizationStrings[187]; //"Stolen"
2636 { 2651 }
2637 if ( !(BYTE1(v38) & 2) ) 2652 else
2638 goto LABEL_116; 2653 {
2639 v61 = 0; 2654 if ( !(BYTE1(v38) & 2) )
2640 v56 = 0; 2655 goto LABEL_116;
2641 v51 = 0; 2656 v61 = 0;
2642 v47 = pGlobalTXT_LocalizationStrings[651]; 2657 v56 = 0;
2643 } 2658 v51 = 0;
2644 LOWORD(v38) = LOWORD(pRenderer->uTargetRMask); 2659 v47 = pGlobalTXT_LocalizationStrings[651]; //"Hardened"
2645 v44 = v38; 2660 }
2646 v42 = v79.uFrameHeight - LOBYTE(v82->uFontHeight); 2661 LOWORD(v38) = LOWORD(pRenderer->uTargetRMask);
2647 v39 = v82->GetLineWidth(pTmpBuf); 2662 v44 = v38;
2648 v40 = v82; 2663 v42 = wHintWindow.uFrameHeight - LOBYTE(pFontComic->uFontHeight);
2649 v41 = v39 + 132; 2664 v39 = pFontComic->GetLineWidth(pTmpBuf);
2650 } 2665 v40 = pFontComic;
2651 v79.DrawText(v40, v41, v42, v44, v47, v51, v56, v61); 2666 v41 = v39 + 132;
2667 }
2668 wHintWindow.DrawText(v40, v41, v42, v44, v47, v51, v56, v61);
2652 LABEL_116: 2669 LABEL_116:
2653 pRenderer->ResetClip(); 2670 pRenderer->ResetClip();
2654 if ( !areWeLoadingTexture ) 2671 if ( !areWeLoadingTexture )
2655 { 2672 {
2656 v73->Release(); 2673 v73->Release();
2657 pIcons_LOD->_40F9C5(); 2674 pIcons_LOD->_40F9C5();
2658 } 2675 }
2659 return; 2676 return;
2660 }
2661 if (item_desc->uEquipType == 13)
2662 {
2663 v24 = pItemsTable->pItems[_this->uItemID].uDamageDice;
2664 LABEL_56:
2665 v59 = v24;
2666 v54 = pGlobalTXT_LocalizationStrings[449];
2667 v49 = "%s: %d";
2668 LABEL_64:
2669 sprintf(a1 + 200, v49, v54, v59);
2670 goto LABEL_65;
2671 }
2672 v25 = _this->uEncantmentType;
2673 if ( v25 )
2674 {
2675 v60 = _this->_bonus_strength;
2676 v55 = *((int *)&pItemsTable->pItems[799].uDamageMod + 5 * v25);
2677 v50 = pGlobalTXT_LocalizationStrings[210];
2678 v46 = "%s: %s +%d";
2679 }
2680 else
2681 {
2682 v26 = _this->uSpecEnchantmentType;
2683 if ( !v26 )
2684 {
2685 if ( _this->uNumCharges )
2686 {
2687 v59 = _this->uNumCharges;
2688 v54 = pGlobalTXT_LocalizationStrings[464];
2689 v49 = "%s: %lu";
2690 goto LABEL_64;
2691 }
2692 goto LABEL_65;
2693 }
2694 v60 = _this->_bonus_strength;
2695 v55 = *((int *)&pItemsTable->pEnchantments[23].pBonusStat + 7 * v26);
2696 v50 = pGlobalTXT_LocalizationStrings[210];
2697 v46 = "%s: %s";
2698 }
2699 sprintf(a1 + 200, v46, v50, v55, v60);
2700 goto LABEL_65;
2701 } 2677 }
2702 // 4E455C: using guessed type int dword_4E455C; 2678 // 4E455C: using guessed type int dword_4E455C;
2703 // 506128: using guessed type int areWeLoadingTexture; 2679 // 506128: using guessed type int areWeLoadingTexture;
2680
2704 2681
2705 //----- (0041E360) -------------------------------------------------------- 2682 //----- (0041E360) --------------------------------------------------------
2706 char *__fastcall MonsterPopup_Draw(unsigned int uActorID, GUIWindow *edx0) 2683 char *__fastcall MonsterPopup_Draw(unsigned int uActorID, GUIWindow *edx0)
2707 { 2684 {
2708 unsigned int v2; // esi@1 2685 unsigned int v2; // esi@1
5816 5793
5817 v79 = 0; 5794 v79 = 0;
5818 _50B924_view_transformed_xs[v1->uNumVertices] = _50B924_view_transformed_xs[0]; 5795 _50B924_view_transformed_xs[v1->uNumVertices] = _50B924_view_transformed_xs[0];
5819 _50B834_view_transformed_zs[v1->uNumVertices] = _50B834_view_transformed_zs[0]; 5796 _50B834_view_transformed_zs[v1->uNumVertices] = _50B834_view_transformed_zs[0];
5820 _50B744_view_transformed_ys[v1->uNumVertices] = _50B744_view_transformed_ys[0]; 5797 _50B744_view_transformed_ys[v1->uNumVertices] = _50B744_view_transformed_ys[0];
5821 thisa = _50B924_view_transformed_xs[0] >= 0x80000u; 5798 thisa = _50B924_view_transformed_xs[0] >= (signed int)0x80000u;
5822 //int i = 1; 5799 //int i = 1;
5823 for (uint i = 1; i < v1->uNumVertices; ++i) 5800 for (uint i = 1; i <= v1->uNumVertices; ++i)
5824 { 5801 {
5825 v10 = _50B924_view_transformed_xs[i]; 5802 v10 = _50B924_view_transformed_xs[i];
5826 v81 = v10 >= (signed int)0x80000u; 5803 v81 = v10 >= (signed int)0x80000u;
5827 if ( thisa ^ v81 ) 5804 if ( thisa ^ v81 )
5828 { 5805 {
5860 dword_50B738[v20] = _50B744_view_transformed_ys[i]; 5837 dword_50B738[v20] = _50B744_view_transformed_ys[i];
5861 } 5838 }
5862 //++i; 5839 //++i;
5863 thisa = v81; 5840 thisa = v81;
5864 } 5841 }
5865 ia = 0;
5866 v21 = v79; 5842 v21 = v79;
5867 dword_50B918[v79] = dword_50B918[0]; 5843 dword_50B918[v79] = dword_50B918[0];
5868 dword_50B828[v79] = dword_50B828[0]; 5844 dword_50B828[v79] = dword_50B828[0];
5869 for ( dword_50B738[v79] = dword_50B738[0]; ia < v79; dword_50BA08[v22] = pBLVRenderParams->uViewportCenterY - v35 ) 5845 dword_50B738[v79] = dword_50B738[0];
5846 for (ia = 0; ia < v79; ++ia)
5870 { 5847 {
5871 v22 = ia; 5848 v22 = ia;
5872 thisc = abs(dword_50B918[ia]); 5849 thisc = abs(dword_50B918[ia]);
5873 if ( abs(dword_50B828[ia]) >> 13 <= thisc ) 5850 if ( abs(dword_50B828[ia]) >> 13 <= thisc )
5874 { 5851 {
5893 v25 = v24 - 1; 5870 v25 = v24 - 1;
5894 v26 = (v25 & 0x800000) - 0x400000; 5871 v26 = (v25 & 0x800000) - 0x400000;
5895 } 5872 }
5896 } 5873 }
5897 v29 = dword_50B738[v22]; 5874 v29 = dword_50B738[v22];
5898 dword_50BAF4_xs[v22 + 1] = v26; 5875 dword_50BAF8_xs[v22] = v26;
5899 if ( abs(v29) >> 13 <= thisc ) 5876 if ( abs(v29) >> 13 <= thisc )
5900 { 5877 {
5901 v33 = dword_50B738[v22]; 5878 v33 = dword_50B738[v22];
5902 LODWORD(v34) = v33 << 16; 5879 LODWORD(v34) = v33 << 16;
5903 HIDWORD(v34) = v33 >> 16; 5880 HIDWORD(v34) = v33 >> 16;
5916 LOBYTE(v30) = dword_50B918[v22] >= v23; 5893 LOBYTE(v30) = dword_50B918[v22] >= v23;
5917 v31 = v30 - 1; 5894 v31 = v30 - 1;
5918 v32 = (v31 & 0x800000) - 0x400000; 5895 v32 = (v31 & 0x800000) - 0x400000;
5919 } 5896 }
5920 } 5897 }
5921 dword_50BA08[v22] = v32; 5898 dword_50BA08_ys[v22] = v32;
5922 dword_50BAF4_xs[v22 + 1] = (unsigned __int64)(SHIWORD(pBLVRenderParams->field_40) * (signed __int64)dword_50BAF4_xs[v22 + 1]) >> 16; 5899 dword_50BAF8_xs[v22] = (unsigned __int64)(SHIWORD(pBLVRenderParams->field_40) * (signed __int64)dword_50BAF8_xs[v22]) >> 16;
5923 v35 = (unsigned __int64)(SHIWORD(pBLVRenderParams->field_40) * (signed __int64)dword_50BA08[v22]) >> 16; 5900 v35 = (unsigned __int64)(SHIWORD(pBLVRenderParams->field_40) * (signed __int64)dword_50BA08_ys[v22]) >> 16;
5924 dword_50BAF4_xs[v22 + 1] = pBLVRenderParams->uViewportCenterX - dword_50BAF4_xs[v22 + 1]; 5901 dword_50BAF8_xs[v22] = pBLVRenderParams->uViewportCenterX - dword_50BAF8_xs[v22];
5925 ++ia; 5902 dword_50BA08_ys[v22] = pBLVRenderParams->uViewportCenterY - v35;
5926 } 5903 }
5927 v36 = 0; 5904 v36 = 0;
5928 dword_50BAF4_xs[v21 + 1] = dword_50BAF4_xs[1]; 5905 dword_50BAF8_xs[v21] = dword_50BAF8_xs[0];
5929 dword_50BA08[v21] = dword_50BA08[0]; 5906 dword_50BA08_ys[v21] = dword_50BA08_ys[0];
5930 v37 = pBLVRenderParams->uViewportX; 5907 v37 = pBLVRenderParams->uViewportX;
5931 v38 = dword_50BAF4_xs[1] < (signed int)pBLVRenderParams->uViewportX; 5908 v38 = dword_50BAF8_xs[0] < (signed int)pBLVRenderParams->uViewportX;
5932 LOBYTE(v38) = dword_50BAF4_xs[1] >= (signed int)pBLVRenderParams->uViewportX; 5909 LOBYTE(v38) = dword_50BAF8_xs[0] >= (signed int)pBLVRenderParams->uViewportX;
5933 v39 = 1; 5910 v39 = 1;
5934 ib = 1; 5911 ib = 1;
5935 if ( v79 < 1 ) 5912 if ( v79 < 1 )
5936 return 0; 5913 return 0;
5937 do 5914 do
5938 { 5915 {
5939 v40 = v39; 5916 v40 = v39;
5940 v41 = dword_50BAF4_xs[v40 + 1]; 5917 v41 = dword_50BAF8_xs[v40];
5941 v82 = v41 >= (signed int)v37; 5918 v82 = v41 >= (signed int)v37;
5942 if ( v38 ^ v82 ) 5919 if ( v38 ^ v82 )
5943 { 5920 {
5944 if ( v41 >= (signed int)v37 ) 5921 if ( v41 >= (signed int)v37 )
5945 { 5922 {
5946 v67 = (signed int)(v37 - dword_50BAF4_xs[v40]) * (signed __int64)(dword_50BA08[v40] - dword_50B9F8[v40 + 3]) / (v41 - dword_50BAF4_xs[v40]); 5923 v67 = (signed int)(v37 - dword_50BAF8_xs[v40 - 1]) * (signed __int64)(dword_50BA08_ys[v40] - dword_50BA08_ys[v40 - 1]) / (v41 - dword_50BAF8_xs[v40 - 1]);
5947 v42 = dword_50B9F8[v40 + 3]; 5924 v42 = dword_50BA08_ys[v40 - 1];
5948 } 5925 }
5949 else 5926 else
5950 { 5927 {
5951 v67 = (signed int)(v37 - v41) * (signed __int64)(dword_50B9F8[v40 + 3] - dword_50BA08[v40]) / (dword_50BAF4_xs[v40] - v41); 5928 v67 = (signed int)(v37 - v41) * (signed __int64)(dword_50BA08_ys[v40 - 1] - dword_50BA08_ys[v40]) / (dword_50BAF8_xs[v40 - 1] - v41);
5952 v42 = dword_50BA08[v40]; 5929 v42 = dword_50BA08_ys[v40];
5953 } 5930 }
5931 dword_50B9FC_ys[v36] = v67 + v42;
5932 v37 = pBLVRenderParams->uViewportX;
5933 dword_50BAEC_xs[v36] = pBLVRenderParams->uViewportX;
5954 ++v36; 5934 ++v36;
5955 dword_50B9F8[v36] = v67 + v42;
5956 v37 = pBLVRenderParams->uViewportX;
5957 dword_50BAE8_xs[v36] = pBLVRenderParams->uViewportX;
5958 } 5935 }
5959 v38 = v82; 5936 v38 = v82;
5960 if ( v82 ) 5937 if ( v82 )
5961 { 5938 {
5962 dword_50BAE8_xs[v36 + 1] = dword_50BAF4_xs[v40 + 1]; 5939 dword_50BAEC_xs[v36] = dword_50BAF8_xs[v40];
5963 dword_50B9F8[v36++ + 1] = dword_50BA08[v40]; 5940 dword_50B9FC_ys[v36] = dword_50BA08_ys[v40];
5941 ++v36;
5964 } 5942 }
5965 v39 = ib++ + 1; 5943 v39 = ib++ + 1;
5966 } 5944 }
5967 while ( ib <= v79 ); 5945 while ( ib <= v79 );
5968 5946
5969 if (v36 < 1) 5947 if (v36 < 1)
5970 return 0; 5948 return 0;
5971 5949
5972 v43 = 0; 5950 v43 = 0;
5973 dword_50BAE8_xs[v36 + 1] = dword_50BAE8_xs[1]; 5951 dword_50BAEC_xs[v36] = dword_50BAEC_xs[0];
5974 dword_50B9F8[v36 + 1] = dword_50B9F8[1]; 5952 dword_50B9FC_ys[v36] = dword_50B9FC_ys[0];
5975 v44 = pBLVRenderParams->uViewportZ; 5953 v44 = pBLVRenderParams->uViewportZ;
5976 thisd = dword_50BAE8_xs[1] <= (signed int)pBLVRenderParams->uViewportZ; 5954 thisd = dword_50BAEC_xs[0] <= (signed int)pBLVRenderParams->uViewportZ;
5977 ic = 1; 5955 ic = 1;
5978 5956
5979 do 5957 do
5980 { 5958 {
5981 v45 = ic; 5959 v45 = ic;
5982 v46 = dword_50BAE8_xs[ic + 1]; 5960 v46 = dword_50BAEC_xs[ic];
5983 v83 = v46 <= (signed int)v44; 5961 v83 = v46 <= (signed int)v44;
5984 if ( thisd ^ v83 ) 5962 if ( thisd ^ v83 )
5985 { 5963 {
5986 if ( v46 <= (signed int)v44 ) 5964 if ( v46 <= (signed int)v44 )
5987 { 5965 {
5988 v68 = (signed int)(v44 - dword_50BAE8_xs[v45]) * (signed __int64)(dword_50B9F8[v45 + 1] - dword_50B9F8[v45]) / (v46 - dword_50BAE8_xs[v45]); 5966 v68 = (signed int)(v44 - dword_50BAEC_xs[v45 - 1]) * (signed __int64)(dword_50B9FC_ys[v45] - dword_50B9FC_ys[v45 - 1]) / (v46 - dword_50BAEC_xs[v45 - 1]);
5989 v47 = dword_50B9F8[v45]; 5967 v47 = dword_50B9FC_ys[v45 - 1];
5990 } 5968 }
5991 else 5969 else
5992 { 5970 {
5993 v68 = (signed int)(v44 - v46) * (signed __int64)(dword_50B9F8[v45] - dword_50B9F8[v45 + 1]) / (dword_50BAE8_xs[v45] - v46); 5971 v68 = (signed int)(v44 - v46) * (signed __int64)(dword_50B9FC_ys[v45 - 1] - dword_50B9FC_ys[v45]) / (dword_50BAEC_xs[v45 - 1] - v46);
5994 v47 = dword_50B9F8[v45 + 1]; 5972 v47 = dword_50B9FC_ys[v45];
5995 } 5973 }
5974 dword_50B9F0[v43] = v68 + v47;
5975 v44 = pBLVRenderParams->uViewportZ;
5976 dword_50BAE0[v43] = pBLVRenderParams->uViewportZ;
5996 ++v43; 5977 ++v43;
5997 dword_50B9EC[v43] = v68 + v47;
5998 v44 = pBLVRenderParams->uViewportZ;
5999 dword_50BADC_xs[v43] = pBLVRenderParams->uViewportZ;
6000 } 5978 }
6001 if ( v83 ) 5979 if ( v83 )
6002 { 5980 {
6003 dword_50BAE0[v43] = dword_50BAE8_xs[v45 + 1]; 5981 dword_50BAE0[v43] = dword_50BAEC_xs[v45];
6004 dword_50B9F0[v43++] = dword_50B9F8[v45 + 1]; 5982 dword_50B9F0[v43++] = dword_50B9FC_ys[v45];
6005 } 5983 }
6006 ++ic; 5984 ++ic;
6007 thisd = v83; 5985 thisd = v83;
6008 } 5986 }
6009 while ( ic <= v36 ); 5987 while ( ic <= v36 );
6026 v84 = v53 >= (signed int)v49; 6004 v84 = v53 >= (signed int)v49;
6027 if ( v50 ^ v84 ) 6005 if ( v50 ^ v84 )
6028 { 6006 {
6029 if ( v53 >= (signed int)v49 ) 6007 if ( v53 >= (signed int)v49 )
6030 { 6008 {
6031 v69 = (signed int)(v49 - dword_50B9EC[v52]) * (signed __int64)(dword_50BAE0[v52] - dword_50BADC_xs[v52]) / (v53 - dword_50B9EC[v52]); 6009 v69 = (signed int)(v49 - dword_50B9F0[v52 - 1]) * (signed __int64)(dword_50BAE0[v52] - dword_50BAE0[v52 - 1]) / (v53 - dword_50B9F0[v52 - 1]);
6032 v54 = dword_50BADC_xs[v52]; 6010 v54 = dword_50BAE0[v52 - 1];
6033 } 6011 }
6034 else 6012 else
6035 { 6013 {
6036 v69 = (signed int)(v49 - v53) * (signed __int64)(dword_50BADC_xs[v52] - dword_50BAE0[v52]) / (dword_50B9EC[v52] - v53); 6014 v69 = (signed int)(v49 - v53) * (signed __int64)(dword_50BAE0[v52 - 1] - dword_50BAE0[v52]) / (dword_50B9F0[v52 - 1] - v53);
6037 v54 = dword_50BAE0[v52]; 6015 v54 = dword_50BAE0[v52];
6038 } 6016 }
6017 dword_50BAD4[v48] = v69 + v54;
6018 v49 = pBLVRenderParams->uViewportY;
6019 dword_50B9E4[v48] = pBLVRenderParams->uViewportY;
6039 ++v48; 6020 ++v48;
6040 dword_50BAD0[v48] = v69 + v54;
6041 v49 = pBLVRenderParams->uViewportY;
6042 dword_50B9E0_ys[v48] = pBLVRenderParams->uViewportY;
6043 } 6021 }
6044 v50 = v84; 6022 v50 = v84;
6045 if ( v84 ) 6023 if ( v84 )
6046 { 6024 {
6047 dword_50BAD4[v48] = dword_50BAE0[v52]; 6025 dword_50BAD4[v48] = dword_50BAE0[v52];
6048 dword_50B9E0_ys[v48++ + 1] = dword_50B9F0[v52]; 6026 dword_50B9E4[v48++] = dword_50B9F0[v52];
6049 } 6027 }
6050 v51 = id++ + 1; 6028 v51 = id++ + 1;
6051 } 6029 }
6052 while ( id <= v43 ); 6030 while ( id <= v43 );
6053 6031
6054 if (v48 < 1) 6032 if (v48 < 1)
6055 return 0; 6033 return 0;
6056 6034
6057 v55 = 0; 6035 v55 = 0;
6058 dword_50BAD4[v48] = dword_50BAD4[0]; 6036 dword_50BAD4[v48] = dword_50BAD4[0];
6059 dword_50B9E0_ys[v48 + 1] = dword_50B9E0_ys[1]; 6037 dword_50B9E4[v48] = dword_50B9E4[0];
6060 v56 = pBLVRenderParams->uViewportW; 6038 v56 = pBLVRenderParams->uViewportW;
6061 thise = dword_50B9E0_ys[1] <= (signed int)pBLVRenderParams->uViewportW; 6039 thise = dword_50B9E4[0] <= (signed int)pBLVRenderParams->uViewportW;
6062 ie = 1; 6040 ie = 1;
6063 do 6041 do
6064 { 6042 {
6065 v57 = ie; 6043 v57 = ie;
6066 v58 = dword_50B9E0_ys[ie + 1]; 6044 v58 = dword_50B9E4[ie];
6067 v85 = v58 <= (signed int)v56; 6045 v85 = v58 <= (signed int)v56;
6068 if ( thise ^ v85 ) 6046 if ( thise ^ v85 )
6069 { 6047 {
6070 if ( v58 <= (signed int)v56 ) 6048 if ( v58 <= (signed int)v56 )
6071 { 6049 {
6072 v70 = (signed int)(v56 - dword_50B9E0_ys[v57]) * (signed __int64)(dword_50BAD4[v57] - dword_50BAD0[v57]) / (v58 - dword_50B9E0_ys[v57]); 6050 v70 = (signed int)(v56 - dword_50B9E4[v57 - 1]) * (signed __int64)(dword_50BAD4[v57] - dword_50BAD4[v57 - 1]) / (v58 - dword_50B9E4[v57 - 1]);
6073 v59 = dword_50BAD0[v57]; 6051 v59 = dword_50BAD4[v57 - 1];
6074 } 6052 }
6075 else 6053 else
6076 { 6054 {
6077 v70 = (signed int)(v56 - v58) * (signed __int64)(dword_50BAD0[v57] - dword_50BAD4[v57]) / (dword_50B9E0_ys[v57] - v58); 6055 v70 = (signed int)(v56 - v58) * (signed __int64)(dword_50BAD4[v57 - 1] - dword_50BAD4[v57]) / (dword_50B9E4[v57 - 1] - v58);
6078 v59 = dword_50BAD4[v57]; 6056 v59 = dword_50BAD4[v57];
6079 } 6057 }
6058 dword_50BAC8[v55] = v70 + v59;
6059 v56 = pBLVRenderParams->uViewportW;
6060 dword_50B9D8_ys[v55] = pBLVRenderParams->uViewportW;
6080 ++v55; 6061 ++v55;
6081 dword_50BAC4[v55] = v70 + v59;
6082 v56 = pBLVRenderParams->uViewportW;
6083 unk_50B9D4[v55] = pBLVRenderParams->uViewportW;
6084 } 6062 }
6085 if ( v85 ) 6063 if ( v85 )
6086 { 6064 {
6087 dword_50BAC8[v55] = dword_50BAD4[v57]; 6065 dword_50BAC8[v55] = dword_50BAD4[v57];
6088 dword_50B9D8_ys[v55++] = dword_50B9E0_ys[v57 + 1]; 6066 dword_50B9D8_ys[v55++] = dword_50B9E4[v57];
6089 } 6067 }
6090 ++ie; 6068 ++ie;
6091 thise = v85; 6069 thise = v85;
6092 } 6070 }
6093 while ( ie <= v48 ); 6071 while ( ie <= v48 );