comparison UI/UIPopup.cpp @ 1705:a395359afc8f

MonsterPopup
author Ritor1
date Mon, 23 Sep 2013 17:33:12 +0600
parents 33c7cc2d48d5
children 0f6cd60ca987 5863074ed9ba
comparison
equal deleted inserted replaced
1704:cc1d68c17e19 1705:a395359afc8f
105 } 105 }
106 106
107 //----- (0041D895) -------------------------------------------------------- 107 //----- (0041D895) --------------------------------------------------------
108 void GameUI_DrawItemInfo( struct ItemGen* inspect_item ) 108 void GameUI_DrawItemInfo( struct ItemGen* inspect_item )
109 { 109 {
110 unsigned int v2; // eax@3 110 unsigned int v2; // eax@3
111 const char *v28; // edi@69 111 const char *v28; // edi@69
112 int v34; // esi@81 112 int v34; // esi@81
113 char *pText; // [sp-14h] [bp-28Ch]@110 113 char *pText; // [sp-14h] [bp-28Ch]@110
114 char out_text[300]; // [sp+8h] [bp-270h]@40 114 char out_text[300]; // [sp+8h] [bp-270h]@40
115 char v65[120]; // [sp+134h] [bp-144h]@92 115 char v65[120]; // [sp+134h] [bp-144h]@92
116 stru351_summoned_item v67; 116 stru351_summoned_item v67;
117 int v77; // [sp+200h] [bp-78h]@12 117 int v77; // [sp+200h] [bp-78h]@12
118 int v78; // [sp+204h] [bp-74h]@5 118 int v78; // [sp+204h] [bp-74h]@5
119 GUIWindow iteminfo_window; // [sp+208h] [bp-70h]@2 119 GUIWindow iteminfo_window; // [sp+208h] [bp-70h]@2
120 POINT a2; // [sp+25Ch] [bp-1Ch]@2 120 POINT a2; // [sp+25Ch] [bp-1Ch]@2
121 int v81; // [sp+264h] [bp-14h]@5 121 int v81; // [sp+264h] [bp-14h]@5
122 PlayerSpeech v83; // [sp+26Ch] [bp-Ch]@18 122 PlayerSpeech v83; // [sp+26Ch] [bp-Ch]@18
123 char* v84; 123 char* v84;
124 int v85; 124 int v85;
125 char *Str; // [sp+270h] [bp-8h]@65 125 char *Str; // [sp+270h] [bp-8h]@65
126 126
127 if (!inspect_item->uItemID) 127 if (!inspect_item->uItemID)
128 return; 128 return;
129 iteminfo_window.Hint = 0; 129 iteminfo_window.Hint = 0;
130 iteminfo_window.uFrameWidth = 384; 130 iteminfo_window.uFrameWidth = 384;
151 if ( uActiveCharacter ) 151 if ( uActiveCharacter )
152 { 152 {
153 //try to identify 153 //try to identify
154 if (!inspect_item->IsIdentified()) 154 if (!inspect_item->IsIdentified())
155 { 155 {
156 //v11 = inspect_item;
157 if ( pPlayers[uActiveCharacter]->CanIdentify(inspect_item) == 1 ) 156 if ( pPlayers[uActiveCharacter]->CanIdentify(inspect_item) == 1 )
158 inspect_item->SetIdentified(); 157 inspect_item->SetIdentified();
159 v83 = SPEECH_9; 158 v83 = SPEECH_9;
160 if ( !inspect_item->IsIdentified() ) 159 if ( !inspect_item->IsIdentified() )
161 ShowStatusBarString(pGlobalTXT_LocalizationStrings[446], 2);//"Identify Failed" 160 ShowStatusBarString(pGlobalTXT_LocalizationStrings[446], 2);//"Identify Failed"
330 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1; 329 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
331 iteminfo_window.DrawMessageBox(0); 330 iteminfo_window.DrawMessageBox(0);
332 pRenderer->SetTextureClipRect(iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12, 331 pRenderer->SetTextureClipRect(iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12,
333 iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12, iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12); 332 iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12, iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12);
334 iteminfo_window.uFrameWidth -= 12; 333 iteminfo_window.uFrameWidth -= 12;
335 //v32 = pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[inspect_item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)->uTextureHeight;
336 iteminfo_window.uFrameHeight -= 12; 334 iteminfo_window.uFrameHeight -= 12;
337 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1; 335 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
338 iteminfo_window.uFrameW = iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1; 336 iteminfo_window.uFrameW = iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
339 pRenderer->DrawTextureTransparent(iteminfo_window.uFrameX + v78, 337 pRenderer->DrawTextureTransparent(iteminfo_window.uFrameX + v78,
340 iteminfo_window.uFrameY + (signed int)(iteminfo_window.uFrameHeight - pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[inspect_item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)->uTextureHeight) / 2, 338 iteminfo_window.uFrameY + (signed int)(iteminfo_window.uFrameHeight - pIcons_LOD->LoadTexturePtr(pItemsTable->pItems[inspect_item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)->uTextureHeight) / 2,
445 int v41; // edi@61 443 int v41; // edi@61
446 unsigned int v42; // eax@61 444 unsigned int v42; // eax@61
447 int v43; // eax@62 445 int v43; // eax@62
448 int v44; // eax@63 446 int v44; // eax@63
449 signed int v45; // edi@65 447 signed int v45; // edi@65
450 int v50; // edi@90 448 int pTextHeight; // edi@90
451 SpellBuff *v51; // eax@91
452 char *v52; // ecx@98
453 char *v53; // ecx@101
454 char *v54; // ST0C_4@118
455 unsigned int v55; // eax@118
456 GUIFont *v56; // edi@124
457 unsigned __int8 v57; // al@128
458 int v58; // eax@132
459 Actor *v59; // ecx@133
460 unsigned __int8 v60; // dl@138
461 char *v62; // eax@147
462 int v63; // eax@152
463 int v65; // eax@155
464 const char *v67; // [sp-10h] [bp-1FCh]@125
465 const char *v68; // [sp-10h] [bp-1FCh]@142
466 char *v70; // [sp-Ch] [bp-1F8h]@125
467 char *v71; // [sp-Ch] [bp-1F8h]@142
468 char *v72; // [sp-8h] [bp-1F4h]@54
469 int v73; // [sp-8h] [bp-1F4h]@79 449 int v73; // [sp-8h] [bp-1F4h]@79
470 int v75; // [sp-8h] [bp-1F4h]@125
471 int v76; // [sp-8h] [bp-1F4h]@142
472 size_t v77; // [sp-4h] [bp-1F0h]@54
473 unsigned int v79; // [sp-4h] [bp-1F0h]@125
474 char *v80; // [sp-4h] [bp-1F0h]@142
475 char *v81; // [sp-4h] [bp-1F0h]@148
476 DDBLTFX Dst; // [sp+Ch] [bp-1E0h]@18 450 DDBLTFX Dst; // [sp+Ch] [bp-1E0h]@18
477 DDSURFACEDESC2 pDesc; // [sp+70h] [bp-17Ch]@18 451 DDSURFACEDESC2 pDesc; // [sp+70h] [bp-17Ch]@18
478 RECT v84; // [sp+ECh] [bp-100h]@26 452 RECT v84; // [sp+ECh] [bp-100h]@26
479 char *v85[10]; // [sp+FCh] [bp-F0h]@145 453 char *string_name[10]; // [sp+FCh] [bp-F0h]@145
480 char *v95[11]; // [sp+124h] [bp-C8h]@127 454 char *content[11]; // [sp+124h] [bp-C8h]@127
481 RenderBillboardTransform_local0 v106; // [sp+150h] [bp-9Ch]@3 455 RenderBillboardTransform_local0 v106; // [sp+150h] [bp-9Ch]@3
482 unsigned int v107; // [sp+1A0h] [bp-4Ch]@18 456 unsigned int v107; // [sp+1A0h] [bp-4Ch]@18
483 unsigned __int16 *v108; // [sp+1A4h] [bp-48h]@34 457 unsigned __int16 *v108; // [sp+1A4h] [bp-48h]@34
484 unsigned int v109; // [sp+1A8h] [bp-44h]@32 458 unsigned int v109; // [sp+1A8h] [bp-44h]@32
485 LPVOID v110; // [sp+1ACh] [bp-40h]@28 459 LPVOID v110; // [sp+1ACh] [bp-40h]@28
486 int v112; // [sp+1B4h] [bp-38h]@3
487 int v222; // [sp+1B8h] [bp-34h]@18
488 unsigned __int8 v114; // [sp+1BFh] [bp-2Dh]@133
489 int v115; // [sp+1C0h] [bp-2Ch]@3 460 int v115; // [sp+1C0h] [bp-2Ch]@3
490 unsigned int v116; // [sp+1C4h] [bp-28h]@18 461 bool normal_level; // [sp+1D0h] [bp-1Ch]@18
491 int i; // [sp+1C8h] [bp-24h]@18 462 bool expert_level; // [sp+1C4h] [bp-28h]@18
492 int v119; // [sp+1D0h] [bp-1Ch]@18 463 bool master_level; // [sp+1C8h] [bp-24h]@18
493 SpellBuff *v120; // [sp+1D4h] [bp-18h]@18 464 bool grandmaster_level; // [sp+1B4h] [bp-38h]@3
494 int v124; // [sp+1E4h] [bp-8h]@18 465 char *pText; // [sp+1D4h] [bp-18h]@18
466 int pTextColorID; // [sp+1E4h] [bp-8h]@18
495 int a4; // [sp+1E8h] [bp-4h]@18 467 int a4; // [sp+1E8h] [bp-4h]@18
496 468
469 bool monster_full_informations = true;
497 static Actor pMonsterInfoUI_Doll; 470 static Actor pMonsterInfoUI_Doll;
498 /*if ( !(bMonsterInfoUI_bDollInitialized & 1) ) 471 /*if ( !(bMonsterInfoUI_bDollInitialized & 1) )
499 { 472 {
500 bMonsterInfoUI_bDollInitialized |= 1u; 473 bMonsterInfoUI_bDollInitialized |= 1u;
501 Actor::Actor(&pMonsterInfoUI_Doll); 474 Actor::Actor(&pMonsterInfoUI_Doll);
561 Dst.dwFillColor = 0; 534 Dst.dwFillColor = 0;
562 memset(&pDesc, 0, 0x7Cu); 535 memset(&pDesc, 0, 0x7Cu);
563 pDesc.dwSize = 124; 536 pDesc.dwSize = 124;
564 pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface->GetSurfaceDesc(&pDesc); 537 pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface->GetSurfaceDesc(&pDesc);
565 v107 = 0; 538 v107 = 0;
566 i = 0; 539 uint i = 0;
567 int dst_x = v106.uScreenSpaceX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaX - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth / 2; 540 int dst_x = v106.uScreenSpaceX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaX - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth / 2;
568 int dst_y = v106.uScreenSpaceY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaY - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferHeight; 541 int dst_y = v106.uScreenSpaceY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaY - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferHeight;
569 uint dst_z = v106.uScreenSpaceX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaWidth + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth / 2 - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth; 542 uint dst_z = v106.uScreenSpaceX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaWidth + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth / 2 - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth;
570 uint dst_w = v106.uScreenSpaceY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaHeight - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferHeight; 543 uint dst_w = v106.uScreenSpaceY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaHeight - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferHeight;
571 if (dst_x < v106.uViewportX) 544 if (dst_x < v106.uViewportX)
598 pDesc.dwSize = 124; 571 pDesc.dwSize = 124;
599 if ( pRenderer->LockSurface_DDraw4(pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface, &pDesc, DDLOCK_WAIT)) 572 if ( pRenderer->LockSurface_DDraw4(pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface, &pDesc, DDLOCK_WAIT))
600 { 573 {
601 v20 = (char *)dst_y; 574 v20 = (char *)dst_y;
602 v110 = pDesc.lpSurface; 575 v110 = pDesc.lpSurface;
603 //a2 = dst_y;
604 if (dst_y < dst_w) 576 if (dst_y < dst_w)
605 { 577 {
606 v21 = dst_x; 578 v21 = dst_x;
607 v22 = &pRenderer->pTargetSurface[dst_y * pRenderer->uTargetSurfacePitch + dst_x]; 579 v22 = &pRenderer->pTargetSurface[dst_y * pRenderer->uTargetSurfacePitch + dst_x];
608 auto _v22_2 = v22; 580 auto _v22_2 = v22;
670 { 642 {
671 pRenderer->FillRectFast(v106.uViewportX, v106.uViewportY, v106.uViewportZ - v106.uViewportX, v106.uViewportW - v106.uViewportY, 0); 643 pRenderer->FillRectFast(v106.uViewportX, v106.uViewportY, v106.uViewportZ - v106.uViewportX, v106.uViewportW - v106.uViewportY, 0);
672 if ( v10->pHwSpriteIDs[0] >= 0 ) 644 if ( v10->pHwSpriteIDs[0] >= 0 )
673 pSprites_LOD->pSpriteHeaders[v10->pHwSpriteIDs[0]].DrawSprite_sw(&v106, 0); 645 pSprites_LOD->pSpriteHeaders[v10->pHwSpriteIDs[0]].DrawSprite_sw(&v106, 0);
674 } 646 }
675 647 //name and profession
676 if ( pActors[uActorID].sNPC_ID ) 648 if ( pActors[uActorID].sNPC_ID )
677 { 649 {
678 if (GetNPCData(pActors[uActorID].sNPC_ID)->uProfession) 650 if (GetNPCData(pActors[uActorID].sNPC_ID)->uProfession)
679 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], GetNPCData(pActors[uActorID].sNPC_ID)->pName, aNPCProfessionNames[GetNPCData(pActors[uActorID].sNPC_ID)->uProfession]); // "%s the %s" / ^Pi[%s] %s 651 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], GetNPCData(pActors[uActorID].sNPC_ID)->pName, aNPCProfessionNames[GetNPCData(pActors[uActorID].sNPC_ID)->uProfession]); // "%s the %s" / ^Pi[%s] %s
680 else 652 else
681 { 653 strncpy(pTmpBuf.data(), GetNPCData(pActors[uActorID].sNPC_ID)->pName, 2000);
682 v77 = 2000;
683 v72 = GetNPCData(pActors[uActorID].sNPC_ID)->pName;
684 }
685 } 654 }
686 else 655 else
687 { 656 {
688 v77 = 2000;
689 if ( pActors[uActorID].dword_000334_unique_name ) 657 if ( pActors[uActorID].dword_000334_unique_name )
690 v72 = pMonsterStats->pPlaceStrings[pActors[uActorID].dword_000334_unique_name]; 658 strncpy(pTmpBuf.data(), pMonsterStats->pPlaceStrings[pActors[uActorID].dword_000334_unique_name], 2000);
691 else 659 else
692 v72 = pMonsterStats->pInfos[pActors[uActorID].pMonsterInfo.uID].pName; 660 strncpy(pTmpBuf.data(), pMonsterStats->pInfos[pActors[uActorID].pMonsterInfo.uID].pName, 2000);
693 } 661 }
694 if(!pActors[uActorID].sNPC_ID || (pActors[uActorID].sNPC_ID && !GetNPCData(pActors[uActorID].sNPC_ID)->uProfession))
695 strncpy(pTmpBuf.data(), v72, v77);
696 window->DrawTitleText(pFontComic, 0, 0xCu, TargetColor(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3); 662 window->DrawTitleText(pFontComic, 0, 0xCu, TargetColor(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3);
663 //health bar
697 Actor::DrawHealthBar(&pActors[uActorID], window); 664 Actor::DrawHealthBar(&pActors[uActorID], window);
698 v119 = 0; 665
666 normal_level = 0;
667 expert_level = 0;
668 master_level = 0;
669 grandmaster_level = 0;
699 pMonsterInfoUI_Doll.uCurrentActionTime += pMiscTimer->uTimeElapsed; 670 pMonsterInfoUI_Doll.uCurrentActionTime += pMiscTimer->uTimeElapsed;
700 v115 = 0; 671 v115 = 0;
701 v116 = 0;
702 i = 0;
703 v112 = 0;
704 if ( !uActiveCharacter ) 672 if ( !uActiveCharacter )
705 v45 = 1; 673 v45 = 1;
706 else 674 else
707 { 675 {
708 LOBYTE(v40) = pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID); 676 int i = pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID);
709 v120 = v40; 677 if ( !i )
710 if ( !v40 )
711 v45 = 1; 678 v45 = 1;
712 else 679 else
713 { 680 {
714 v41 = (unsigned __int8)v40 & 0x3F; 681 v41 = (unsigned __int8)i & 0x3F;
715 v42 = SkillToMastery((unsigned __int16)v40) - 1; 682 v42 = SkillToMastery(i) - 1;
716 if ( !v42 ) 683 if ( !v42 )//not master
717 { 684 {
718 if ( v41 + 10 >= pActors[uActorID].pMonsterInfo.uLevel ) 685 if ( v41 + 10 >= pActors[uActorID].pMonsterInfo.uLevel )
719 { 686 {
720 v45 = 1; 687 v45 = 1;
721 v119 = 1; 688 normal_level = 1;
722 } 689 }
723 else 690 else
724 v45 = 1; 691 v45 = 1;
725 } 692 }
726 else 693 else//he is master
727 { 694 {
728 v43 = v42 - 1; 695 v43 = v42 - 1;
729 if ( !v43 ) 696 if ( !v43 )
730 { 697 {
731 if ( 2 * v41 + 10 >= pActors[uActorID].pMonsterInfo.uLevel ) 698 if ( 2 * v41 + 10 >= pActors[uActorID].pMonsterInfo.uLevel )
732 { 699 {
733 v45 = 1; 700 v45 = 1;
734 v119 = 1; 701 normal_level = 1;
735 v116 = 1; 702 expert_level = 1;
736 } 703 }
737 else 704 else
738 v45 = 1; 705 v45 = 1;
739 } 706 }
740 else 707 else
743 if ( !v44 ) 710 if ( !v44 )
744 { 711 {
745 if ( 3 * v41 + 10 >= pActors[uActorID].pMonsterInfo.uLevel ) 712 if ( 3 * v41 + 10 >= pActors[uActorID].pMonsterInfo.uLevel )
746 { 713 {
747 v45 = 1; 714 v45 = 1;
748 v119 = 1; 715 normal_level = 1;
749 v116 = 1; 716 expert_level = 1;
750 i = 1; 717 master_level = 1;
751 } 718 }
752 else 719 else
753 v45 = 1; 720 v45 = 1;
754 } 721 }
755 else 722 else
757 if ( v44 != 1 ) 724 if ( v44 != 1 )
758 v45 = 1; 725 v45 = 1;
759 else 726 else
760 { 727 {
761 v45 = 1; 728 v45 = 1;
762 v119 = 1; 729 normal_level = 1;
763 v116 = 1; 730 expert_level = 1;
764 i = 1; 731 master_level = 1;
765 v112 = 1; 732 grandmaster_level = 1;
766 } 733 }
767 } 734 }
768 } 735 }
769 } 736 }
770 } 737 }
771 if ( pActors[uActorID].uAIState != Dead 738 if ( pActors[uActorID].uAIState != Dead
772 && pActors[uActorID].uAIState != Dying 739 && pActors[uActorID].uAIState != Dying
773 && !dword_507BF0_is_there_popup_onscreen && v120 ) 740 && !dword_507BF0_is_there_popup_onscreen && i )
774 { 741 {
775 if ( v119 | v116 | i | (unsigned int)v112 ) 742 if ( normal_level | expert_level | master_level | grandmaster_level )
776 { 743 {
777 if ( pActors[uActorID].pMonsterInfo.uLevel >= pPlayers[uActiveCharacter]->uLevel - 5 ) 744 if ( pActors[uActorID].pMonsterInfo.uLevel >= pPlayers[uActiveCharacter]->uLevel - 5 )
778 v73 = SPEECH_105; 745 v73 = SPEECH_105;
779 else 746 else
780 v73 = SPEECH_104; 747 v73 = SPEECH_104;
783 v73 = SPEECH_106; 750 v73 = SPEECH_106;
784 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)v73, 0); 751 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)v73, 0);
785 } 752 }
786 } 753 }
787 754
788 for (uint i = 0; i < 4; ++i) 755 if ( (signed int)SkillToMastery(pParty->pPlayers[uActiveCharacter].GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID)) >= 3 )
789 { 756 v115 = v45;
790 v120 = (SpellBuff *)138; 757
791 do 758 if ( monster_full_informations == true )
792 { 759 {
793 if ( (signed int)SkillToMastery(pParty->pPlayers[i].GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID)) >= 3 ) 760 normal_level = 1;//
794 v115 = v45; 761 expert_level = 1;//
795 v120 = (SpellBuff *)((char *)v120 - 1); 762 master_level = 1;//
796 } 763 grandmaster_level = 1;//
797 while ( v120 ); 764 v115 = 1;
798 } 765 }
799 766
800 window->DrawText(pFontSmallnum, 12, 196, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[631], 0, 0, 0); 767 window->DrawText(pFontSmallnum, 12, 196, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[631], 0, 0, 0);//Effects
801 if ( !v115 ) 768 if ( !v115 )
802 window->DrawText(pFontSmallnum, 28, LOBYTE(pFontSmallnum->uFontHeight) + 193, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[630], 0, 0, 0); 769 window->DrawText(pFontSmallnum, 28, LOBYTE(pFontSmallnum->uFontHeight) + 193, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[630], 0, 0, 0);//?
803 else 770 else
804 { 771 {
805 a4 = 0; 772 pText = "";
806 v51 = &pActors[uActorID].pActorBuffs[1]; 773 pTextHeight = LOBYTE(pFontSmallnum->uFontHeight) + 193;
807 v222 = 0; 774 for ( uint i = 1; i <= 21; ++i )
808 v120 = &pActors[uActorID].pActorBuffs[1]; 775 {
809 do 776 if ( pActors[uActorID].pActorBuffs[i].uExpireTime > 0 )
810 { 777 {
811 if ( (signed __int64)v51->uExpireTime > 0 ) 778 switch ( i - 1 )
812 { 779 {
813 switch ( (int)v51 ) 780 case 0:
814 { 781 pTextColorID = 60;
815 case 0u: 782 pText = pGlobalTXT_LocalizationStrings[591];//Charmed
816 v124 = 60; 783 break;
817 a4 = (int)pGlobalTXT_LocalizationStrings[591]; 784 case 1:
818 break; 785 pTextColorID = 82;
819 case 1u: 786 pText = pGlobalTXT_LocalizationStrings[649];//Summoned
820 v124 = 82; 787 break;
821 a4 = (int)pGlobalTXT_LocalizationStrings[649]; 788 case 2:
822 break; 789 pTextColorID = 92;
823 case 2u: 790 pText = pGlobalTXT_LocalizationStrings[592];//Shrunk
824 v124 = 92; 791 break;
825 a4 = (int)pGlobalTXT_LocalizationStrings[592]; 792 case 3:
826 break; 793 pTextColorID = 63;
827 case 3u: 794 pText = pGlobalTXT_LocalizationStrings[4];//Afraid
828 v124 = 63; 795 break;
829 a4 = (int)pGlobalTXT_LocalizationStrings[4]; 796 case 4:
830 break; 797 pText = pGlobalTXT_LocalizationStrings[220];//Stoned
831 case 4u: 798 pTextColorID = 81;
832 v52 = pGlobalTXT_LocalizationStrings[220]; 799 break;
833 a4 = (int)v52; 800 case 5:
834 v124 = 81; 801 pText = pGlobalTXT_LocalizationStrings[162];//Paralyzed
835 break; 802 pTextColorID = 81;
836 case 5u: 803 break;
837 v52 = pGlobalTXT_LocalizationStrings[162]; 804 case 6:
838 a4 = (int)v52; 805 pText = pGlobalTXT_LocalizationStrings[593];//Slowed
839 v124 = 81; 806 pTextColorID = 35;
840 break; 807 break;
841 case 6u: 808 case 8:
842 v53 = pGlobalTXT_LocalizationStrings[593]; 809 pText = pGlobalTXT_LocalizationStrings[608];//Berserk
843 v124 = 35; 810 pTextColorID = 62;
844 a4 = (int)v53; 811 break;
845 break; 812 case 7:
846 case 8u: 813 case 9:
847 v53 = pGlobalTXT_LocalizationStrings[608]; 814 pText = "";
848 v124 = 62; 815 pTextColorID = 0;
849 a4 = (int)v53; 816 continue;
850 break; 817 case 10:
851 case 7u: 818 pTextColorID = 47;
852 case 9u: 819 pText = pGlobalTXT_LocalizationStrings[221];//Fate
853 a4 = 0; 820 break;
854 v124 = 0; 821 case 11:
855 ++v51; 822 pTextColorID = 66;
856 v222 = v222 + 1; 823 pText = pGlobalTXT_LocalizationStrings[607];//Enslaved
857 v120 = v51; 824 break;
858 __debugbreak(); // fix condition 825 case 12:
859 continue; 826 pTextColorID = 85;
860 case 0xAu: 827 pText = pGlobalTXT_LocalizationStrings[610];//Day of Protection
861 v124 = 47; 828 break;
862 a4 = (int)pGlobalTXT_LocalizationStrings[221]; 829 case 13:
863 break; 830 pTextColorID = 86;
864 case 0xBu: 831 pText = pGlobalTXT_LocalizationStrings[609];//Hour of Power
865 v124 = 66; 832 break;
866 a4 = (int)pGlobalTXT_LocalizationStrings[607]; 833 case 14:
867 break; 834 pTextColorID = 17;
868 case 0xCu: 835 pText = pGlobalTXT_LocalizationStrings[279];//Shield
869 v124 = 85; 836 break;
870 a4 = (int)pGlobalTXT_LocalizationStrings[610]; 837 case 15:
871 break; 838 pTextColorID = 38;
872 case 0xDu: 839 pText = pGlobalTXT_LocalizationStrings[442];//Stoneskin
873 v124 = 86; 840 break;
874 a4 = (int)pGlobalTXT_LocalizationStrings[609]; 841 case 16:
875 break; 842 pTextColorID = 46;
876 case 0xEu: 843 pText = pGlobalTXT_LocalizationStrings[443];//Bless
877 v124 = 17; 844 break;
878 a4 = (int)pGlobalTXT_LocalizationStrings[279]; 845 case 17:
879 break; 846 pTextColorID = 51;
880 case 0xFu: 847 pText = pGlobalTXT_LocalizationStrings[440];//Heroism
881 v124 = 38; 848 break;
882 a4 = (int)pGlobalTXT_LocalizationStrings[442]; 849 case 18:
883 break; 850 pTextColorID = 5;
884 case 0x10u: 851 pText = pGlobalTXT_LocalizationStrings[441];//Haste
885 v124 = 46; 852 break;
886 a4 = (int)pGlobalTXT_LocalizationStrings[443]; 853 case 19:
887 break; 854 pTextColorID = 95;
888 case 0x11u: 855 pText = pGlobalTXT_LocalizationStrings[229];//Pain Reflection
889 v124 = 51; 856 break;
890 a4 = (int)pGlobalTXT_LocalizationStrings[440]; 857 case 20:
891 break; 858 pTextColorID = 73;
892 case 0x12u: 859 pText = pGlobalTXT_LocalizationStrings[228];//Hammerhands
893 v124 = 5; 860 break;
894 a4 = (int)pGlobalTXT_LocalizationStrings[441]; 861 default:
895 break; 862 pText = "";
896 case 0x13u: 863 break;
897 v124 = 95; 864 }
898 a4 = (int)pGlobalTXT_LocalizationStrings[229]; 865 if ( pText != "" )
899 break; 866 {
900 case 0x14u: 867 window->DrawText(pFontSmallnum, 28, pTextHeight, GetSpellColor(pTextColorID), pText, 0, 0, 0);
901 v124 = 73; 868 pTextHeight = pTextHeight + *(char *)((int)pFontSmallnum + 5) - 3;
902 a4 = (int)pGlobalTXT_LocalizationStrings[228]; 869 }
903 break; 870 }
904 default: 871 }
905 a4 = 0; 872 if ( pText == "" )
906 break; 873 window->DrawText(pFontSmallnum, 28, pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[153], 0, 0, 0);//Νες
907 } 874 }
908 if ( a4 ) 875
909 { 876 if ( normal_level )
910 v54 = (char *)a4;
911 v55 = GetSpellColor(v124);
912 window->DrawText(pFontSmallnum, 28, LOBYTE(pFontSmallnum->uFontHeight) + 193, v55, v54, 0, 0, 0);
913 v50 = (LOBYTE(pFontSmallnum->uFontHeight) + 193) + *(char *)((int)pFontSmallnum + 5) - 3;
914 v51 = v120;
915 }
916 }
917
918 ++v51;
919 v222 = v222 + 1;
920 v120 = v51;
921
922 __debugbreak(); // fix condition
923 }
924 //while ( (signed int)((char *)&v222->lpVtbl + 1) < 22 );
925 while (true);
926
927 if ( !a4 )
928 window->DrawText(pFontSmallnum, 28, v50, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[153], 0, 0, 0);
929 }
930 v56 = pFontSmallnum;
931 a4 = v106.uViewportY;
932 if ( v119 )
933 { 877 {
934 sprintf(pTmpBuf.data(), "%s\f%05u\t100%d\n", pGlobalTXT_LocalizationStrings[108], 0, pActors[uActorID].pMonsterInfo.uHP); 878 sprintf(pTmpBuf.data(), "%s\f%05u\t100%d\n", pGlobalTXT_LocalizationStrings[108], 0, pActors[uActorID].pMonsterInfo.uHP);
935 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 879 window->DrawText(pFontSmallnum, 150, (int)v106.uViewportY, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
936 a4 = a4 + LOBYTE(v56->uFontHeight) - 3; 880 pTextHeight = v106.uViewportY + LOBYTE(pFontSmallnum->uFontHeight) - 3;
937 v79 = pActors[uActorID].pMonsterInfo.uAC; 881 sprintf(pTmpBuf.data(), "%s\f%05u\t100%d\n", pGlobalTXT_LocalizationStrings[12], 0, pActors[uActorID].pMonsterInfo.uAC);//Armor Class
938 v75 = 0;
939 v70 = pGlobalTXT_LocalizationStrings[12];
940 v67 = "%s\f%05u\t100%d\n";
941 } 882 }
942 else 883 else
943 { 884 {
944 sprintf(pTmpBuf.data(), "%s\f%05u\t100%s\n", pGlobalTXT_LocalizationStrings[108], 0, pGlobalTXT_LocalizationStrings[630]); 885 sprintf(pTmpBuf.data(), "%s\f%05u\t100%s\n", pGlobalTXT_LocalizationStrings[108], 0, pGlobalTXT_LocalizationStrings[630]);//?
945 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 886 window->DrawText(pFontSmallnum, 150, (int)v106.uViewportY, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
946 v79 = (unsigned int)pGlobalTXT_LocalizationStrings[630]; 887 pTextHeight = v106.uViewportY + LOBYTE(pFontSmallnum->uFontHeight) - 3;
947 v75 = 0; 888 sprintf(pTmpBuf.data(), "%s\f%05u\t100%s\n", pGlobalTXT_LocalizationStrings[12], 0, (unsigned int)pGlobalTXT_LocalizationStrings[630]);//?
948 v70 = pGlobalTXT_LocalizationStrings[12]; 889 }
949 a4 = a4 + LOBYTE(v56->uFontHeight) - 3; 890 window->DrawText(pFontSmallnum, 150, pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
950 v67 = "%s\f%05u\t100%s\n"; 891 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 6 + LOBYTE(pFontSmallnum->uFontHeight);
951 } 892
952 sprintf(pTmpBuf.data(), v67, v70, v75, v79); 893 content[0] = pGlobalTXT_LocalizationStrings[87];
953 window->DrawText(v56, 150, a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 894 content[1] = pGlobalTXT_LocalizationStrings[6];
954 a4 = a4 + LOBYTE(v56->uFontHeight) - 6 + LOBYTE(v56->uFontHeight); 895 content[2] = pGlobalTXT_LocalizationStrings[240];
955 v95[0] = pGlobalTXT_LocalizationStrings[87]; 896 content[3] = pGlobalTXT_LocalizationStrings[70];
956 v95[1] = pGlobalTXT_LocalizationStrings[6]; 897 content[4] = pGlobalTXT_LocalizationStrings[624];
957 v95[2] = pGlobalTXT_LocalizationStrings[240]; 898 content[5] = pGlobalTXT_LocalizationStrings[138];
958 v95[3] = pGlobalTXT_LocalizationStrings[70]; 899 content[6] = pGlobalTXT_LocalizationStrings[214];
959 v95[4] = pGlobalTXT_LocalizationStrings[624]; 900 content[7] = pGlobalTXT_LocalizationStrings[142];
960 v95[5] = pGlobalTXT_LocalizationStrings[138]; 901 content[8] = pGlobalTXT_LocalizationStrings[29];
961 v95[6] = pGlobalTXT_LocalizationStrings[214]; 902 content[9] = pGlobalTXT_LocalizationStrings[133];
962 v95[7] = pGlobalTXT_LocalizationStrings[142]; 903 content[10] = pGlobalTXT_LocalizationStrings[54];
963 v95[8] = pGlobalTXT_LocalizationStrings[29]; 904
964 v95[9] = pGlobalTXT_LocalizationStrings[133]; 905 if ( expert_level )
965 v95[10] = pGlobalTXT_LocalizationStrings[54]; 906 {
966 if ( v116 ) 907 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[18], 0, content[pActors[uActorID].pMonsterInfo.uAttack1Type]);//Attack
967 { 908 window->DrawText(pFontSmallnum, 150, (int)pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
968 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[18], 0, v95[pActors[uActorID].pMonsterInfo.uAttack1Type]); 909 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
969 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 910 if ( pActors[uActorID].pMonsterInfo.uAttack1DamageBonus )
970 a4 = a4 + LOBYTE(v56->uFontHeight) - 3;
971 v57 = pActors[uActorID].pMonsterInfo.uAttack1DamageBonus;
972 if ( v57 )
973 sprintf(pTmpBuf.data(), "%s\f%05u\t080%dd%d+%d\n", pGlobalTXT_LocalizationStrings[53], 911 sprintf(pTmpBuf.data(), "%s\f%05u\t080%dd%d+%d\n", pGlobalTXT_LocalizationStrings[53],
974 0, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides, v57); 912 0, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides, pActors[uActorID].pMonsterInfo.uAttack1DamageBonus);
975 else 913 else
976 sprintf(pTmpBuf.data(), "%s\f%05u\t080%dd%d\n", pGlobalTXT_LocalizationStrings[53], 914 sprintf(pTmpBuf.data(), "%s\f%05u\t080%dd%d\n", pGlobalTXT_LocalizationStrings[53],
977 0, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides); 915 0, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides);
978 } 916 }
979 else 917 else
980 { 918 {
981 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[18], 0, pGlobalTXT_LocalizationStrings[630]); 919 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[18], 0, pGlobalTXT_LocalizationStrings[630]);
982 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 920 window->DrawText(pFontSmallnum, 150, (int)pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
983 a4 = a4 + LOBYTE(v56->uFontHeight) - 3; 921 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
984 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[53], 0, pGlobalTXT_LocalizationStrings[630]); 922 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[53], 0, pGlobalTXT_LocalizationStrings[630]);
985 } 923 }
986 window->DrawText(v56, 150, a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 924 window->DrawText(pFontSmallnum, 150, pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
987 v58 = LOBYTE(v56->uFontHeight); 925 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 6 + LOBYTE(pFontSmallnum->uFontHeight);
988 a4 = a4 + v58 - 6 + v58; 926
989 if ( !i ) 927 if ( !master_level )
990 { 928 {
991 v80 = pGlobalTXT_LocalizationStrings[630]; 929 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[628], 0, pGlobalTXT_LocalizationStrings[630]);//"Spell" "?"
992 v76 = 0; 930 window->DrawText(pFontSmallnum, 150, (int)pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
993 v71 = pGlobalTXT_LocalizationStrings[628]; 931 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
994 v68 = "%s\f%05u\t080%s\n";
995 sprintf(pTmpBuf.data(), v68, v71, v76, v80);
996 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
997 v58 = LOBYTE(v56->uFontHeight);
998 a4 = a4 + v58 - 3;
999 } 932 }
1000 else 933 else
1001 { 934 {
1002 v120 = (SpellBuff *)pGlobalTXT_LocalizationStrings[628]; 935 pText = pGlobalTXT_LocalizationStrings[628];//Spell
1003 v59 = &pActors[uActorID]; 936 if ( pActors[uActorID].pMonsterInfo.uSpell1ID && pActors[uActorID].pMonsterInfo.uSpell2ID )
1004 v114 = pActors[uActorID].pMonsterInfo.uSpell1ID; 937 pText = pGlobalTXT_LocalizationStrings[629];//Spells
1005 if ( v114 && pActors[uActorID].pMonsterInfo.uSpell2ID ) 938 if ( pActors[uActorID].pMonsterInfo.uSpell1ID )
1006 v120 = (SpellBuff *)pGlobalTXT_LocalizationStrings[629]; 939 {
1007 if ( v114 ) 940 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", pText, 0, pSpellStats->pInfos[pActors[uActorID].pMonsterInfo.uSpell1ID].pShortName);
1008 { 941 window->DrawText(pFontSmallnum, 150, (int)pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
1009 sprintf(pTmpBuf.data(), "%s\f%05u\t060%s\n", v120, 0, pSpellStats->pInfos[v114].pShortName); 942 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
1010 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 943 }
1011 v58 = LOBYTE(v56->uFontHeight); 944 if ( pActors[uActorID].pMonsterInfo.uSpell2ID )
1012 a4 = a4 + v58 - 3; 945 {
1013 v59 = &pActors[uActorID]; 946 sprintf(pTmpBuf.data(), "\f%05u\t070%s\n", 0, pSpellStats->pInfos[pActors[uActorID].pMonsterInfo.uSpell2ID].pShortName);
1014 } 947 window->DrawText(pFontSmallnum, 150, (int)pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
1015 v60 = v59->pMonsterInfo.uSpell2ID; 948 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
1016 if ( v60 ) 949 }
1017 { 950 if ( !pActors[uActorID].pMonsterInfo.uSpell1ID && !pActors[uActorID].pMonsterInfo.uSpell2ID )
1018 sprintf(pTmpBuf.data(), "\f%05u\t060%s\n", 0, pSpellStats->pInfos[v60].pShortName); 951 {
1019 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 952 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", pGlobalTXT_LocalizationStrings[628], 0, pGlobalTXT_LocalizationStrings[153]);
1020 v58 = LOBYTE(v56->uFontHeight); 953 window->DrawText(pFontSmallnum, 150, (int)pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
1021 a4 = a4 + v58 - 3; 954 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
1022 v59 = &pActors[uActorID]; 955 }
1023 } 956 }
1024 if ( !v59->pMonsterInfo.uSpell1ID && !v59->pMonsterInfo.uSpell2ID ) 957 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
1025 { 958 window->DrawText(pFontSmallnum, 150, pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[626], 0, 0, 0);//Immune
1026 v80 = pGlobalTXT_LocalizationStrings[153]; 959 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
1027 v76 = 0; 960
1028 v71 = pGlobalTXT_LocalizationStrings[628]; 961 string_name[0] = pGlobalTXT_LocalizationStrings[87];//Fire
1029 v68 = "%s\f%05u\t060%s\n"; 962 string_name[1] = pGlobalTXT_LocalizationStrings[6];//Air
1030 sprintf(pTmpBuf.data(), v68, v71, v76, v80); 963 string_name[2] = pGlobalTXT_LocalizationStrings[240];
1031 window->DrawText(v56, 150, (int)a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 964 string_name[3] = pGlobalTXT_LocalizationStrings[70];
1032 v58 = LOBYTE(v56->uFontHeight); 965 string_name[4] = pGlobalTXT_LocalizationStrings[142];
1033 a4 = a4 + v58 - 3; 966 string_name[5] = pGlobalTXT_LocalizationStrings[214];
1034 } 967 string_name[6] = pGlobalTXT_LocalizationStrings[29];
1035 } 968 string_name[7] = pGlobalTXT_LocalizationStrings[133];
1036 a4 = a4 + v58 - 3; 969 string_name[8] = pGlobalTXT_LocalizationStrings[54];
1037 window->DrawText(v56, 150, a4, TargetColor(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[626], 0, 0, 0); 970 string_name[9] = pGlobalTXT_LocalizationStrings[624];
1038 a4 = a4 + LOBYTE(v56->uFontHeight) - 3; 971
1039 v85[0] = pGlobalTXT_LocalizationStrings[87]; 972 content[0] = (char *)pActors[uActorID].pMonsterInfo.uResFire;
1040 v85[1] = pGlobalTXT_LocalizationStrings[6]; 973 content[1] = (char *)pActors[uActorID].pMonsterInfo.uResAir;
1041 v85[2] = pGlobalTXT_LocalizationStrings[240]; 974 content[2] = (char *)pActors[uActorID].pMonsterInfo.uResWater;
1042 v85[3] = pGlobalTXT_LocalizationStrings[70]; 975 content[3] = (char *)pActors[uActorID].pMonsterInfo.uResEarth;
1043 v85[4] = pGlobalTXT_LocalizationStrings[142]; 976 content[4] = (char *)pActors[uActorID].pMonsterInfo.uResMind;
1044 v85[5] = pGlobalTXT_LocalizationStrings[214]; 977 content[5] = (char *)pActors[uActorID].pMonsterInfo.uResSpirit;
1045 v85[6] = pGlobalTXT_LocalizationStrings[29]; 978 content[6] = (char *)pActors[uActorID].pMonsterInfo.uResBody;
1046 v85[7] = pGlobalTXT_LocalizationStrings[133]; 979 content[7] = (char *)pActors[uActorID].pMonsterInfo.uResLight;
1047 v85[8] = pGlobalTXT_LocalizationStrings[54]; 980 content[8] = (char *)pActors[uActorID].pMonsterInfo.uResPhysical;
1048 v85[9] = pGlobalTXT_LocalizationStrings[624]; 981 content[9] = (char *)pActors[uActorID].pMonsterInfo.uResDark;
1049 v95[1] = (char *)pActors[uActorID].pMonsterInfo.uResFire; 982
1050 v95[2] = (char *)pActors[uActorID].pMonsterInfo.uResAir; 983 if ( grandmaster_level )
1051 v95[3] = (char *)pActors[uActorID].pMonsterInfo.uResWater; 984 {
1052 v95[4] = (char *)pActors[uActorID].pMonsterInfo.uResEarth; 985 for ( uint i = 0; i < 10; i++ )
1053 v95[5] = (char *)pActors[uActorID].pMonsterInfo.uResMind; 986 {
1054 v95[6] = (char *)pActors[uActorID].pMonsterInfo.uResSpirit; 987 if ( content[i] == (char *)200 )
1055 v95[7] = (char *)pActors[uActorID].pMonsterInfo.uResBody; 988 {
1056 v95[8] = (char *)pActors[uActorID].pMonsterInfo.uResLight; 989 pText = pGlobalTXT_LocalizationStrings[625];//Immune
1057 v95[9] = (char *)pActors[uActorID].pMonsterInfo.uResPhysical;
1058 v95[10] = (char *)pActors[uActorID].pMonsterInfo.uResDark;
1059 if ( v112 )
1060 {
1061 v124 = 0;
1062 do
1063 {
1064 v62 = v95[v124+1];
1065 if ( v62 == (char *)200 )
1066 {
1067 v81 = pGlobalTXT_LocalizationStrings[625];
1068 } 990 }
1069 else 991 else
1070 { 992 {
1071 if ( v62 ) 993 if ( content[i] )
1072 v81 = pGlobalTXT_LocalizationStrings[627]; 994 pText = pGlobalTXT_LocalizationStrings[627];//Resistant
1073 else 995 else
1074 v81 = pGlobalTXT_LocalizationStrings[153]; 996 pText = pGlobalTXT_LocalizationStrings[153];//None
1075 } 997 }
1076 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", v85[v124], 0, v81); 998 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", string_name[i], 0, pText);
1077 window->DrawText(v56, 170, a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 999 window->DrawText(pFontSmallnum, 170, pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
1078 v63 = LOBYTE(v56->uFontHeight); 1000 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
1079 v124 += 4; 1001 }
1080 a4 = a4 + v63 - 3;
1081 }
1082 while ( v124 < 40 );
1083 } 1002 }
1084 else 1003 else
1085 { 1004 {
1086 i = 0; 1005 for ( uint i = 0; i < 10; ++i )
1087 do 1006 {
1088 { 1007 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", string_name[i], 0, pGlobalTXT_LocalizationStrings[630]); // "?"
1089 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", v85[i], 0, pGlobalTXT_LocalizationStrings[630]); // "?" 1008 window->DrawText(pFontSmallnum, 170, pTextHeight, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
1090 window->DrawText(v56, 170, a4, TargetColor(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0); 1009 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
1091 v65 = LOBYTE(v56->uFontHeight); 1010 }
1092 ++i;
1093 a4 = a4 + v65 - 3;
1094 }
1095 while ( i < 10 );
1096 } 1011 }
1097 if ( (signed __int64)pParty->pPartyBuffs[PARTY_BUFF_DETECT_LIFE].uExpireTime > 0 ) 1012 if ( (signed __int64)pParty->pPartyBuffs[PARTY_BUFF_DETECT_LIFE].uExpireTime > 0 )
1098 { 1013 {
1099 sprintf(pTmpBuf.data(), "%s: %d", pGlobalTXT_LocalizationStrings[650], pActors[uActorID].sCurrentHP); 1014 sprintf(pTmpBuf.data(), "%s: %d", pGlobalTXT_LocalizationStrings[650], pActors[uActorID].sCurrentHP);//Current Hit Points
1100 pFontSmallnum->GetLineWidth(pTmpBuf.data()); 1015 pFontSmallnum->GetLineWidth(pTmpBuf.data());
1101 window->DrawTitleText(pFontSmallnum, 0, window->uFrameHeight - LOBYTE(pFontSmallnum->uFontHeight) - 12, 0, pTmpBuf.data(), 3); 1016 window->DrawTitleText(pFontSmallnum, 0, window->uFrameHeight - LOBYTE(pFontSmallnum->uFontHeight) - 12, 0, pTmpBuf.data(), 3);
1102 } 1017 }
1103 } 1018 }
1104 1019