comparison mm7_3.cpp @ 569:f451efdb7c8b

* Party buff icons drawing (right panel) * Water Walk works & draws * Fly works & draws * Invisibility sfx works * Some player buff icons draw
author Nomad
date Tue, 05 Mar 2013 16:14:22 +0200
parents 9caf59edb1ee
children bcae3e06cadb
comparison
equal deleted inserted replaced
568:6f7d936edc9b 569:f451efdb7c8b
1700 pParty->uFallStartY = v80; 1700 pParty->uFallStartY = v80;
1701 } 1701 }
1702 LABEL_20: 1702 LABEL_20:
1703 if ( v6 - party_z > 512 && !bFeatherFall && party_z <= v80 + 1 ) 1703 if ( v6 - party_z > 512 && !bFeatherFall && party_z <= v80 + 1 )
1704 { 1704 {
1705 if ( BYTE1(pParty->uFlags) & 1 ) 1705 if (pParty->uFlags & PARTY_FLAGS_1_LANDING)
1706 { 1706 {
1707 BYTE1(pParty->uFlags) &= 0xFEu; 1707 pParty->uFlags &= ~PARTY_FLAGS_1_LANDING;
1708 } 1708 }
1709 else for (uint i = 0; i < 4; ++i) 1709 else for (uint i = 0; i < 4; ++i)
1710 { // receive falling damage 1710 { // receive falling damage
1711 auto pPlayer = pParty->pPlayers + i; 1711 auto pPlayer = pParty->pPlayers + i;
1712 1712
1925 if ( pIndoor->pFaces[v68].pFacePlane_old.vNormal.z < 32768 ) 1925 if ( pIndoor->pFaces[v68].pFacePlane_old.vNormal.z < 32768 )
1926 { 1926 {
1927 v89 -= pEventTimer->uTimeElapsed * GetGravityStrength(); 1927 v89 -= pEventTimer->uTimeElapsed * GetGravityStrength();
1928 goto LABEL_92; 1928 goto LABEL_92;
1929 } 1929 }
1930 if ( BYTE1(pParty->uFlags) & 1 ) 1930 if (pParty->uFlags & PARTY_FLAGS_1_LANDING)
1931 goto LABEL_92; 1931 goto LABEL_92;
1932 v89 = 0; 1932 v89 = 0;
1933 } 1933 }
1934 if ( bJumping != v36 && v89 <= v36 ) 1934 if ( bJumping != v36 && v89 <= v36 )
1935 { 1935 {
2179 pAudioPlayer->_4AA258(804); 2179 pAudioPlayer->_4AA258(804);
2180 pParty->field_6F8 = 64; 2180 pParty->field_6F8 = 64;
2181 } 2181 }
2182 } 2182 }
2183 if ( !bJumping || bFeatherFall ) 2183 if ( !bJumping || bFeatherFall )
2184 pParty->uFlags &= 0xFFFFFFF7u; 2184 pParty->uFlags &= ~PARTY_FLAGS_1_FALLING;
2185 else 2185 else
2186 pParty->uFlags |= 8u; 2186 pParty->uFlags |= PARTY_FLAGS_1_FALLING;
2187 BYTE1(pParty->uFlags) &= 0xFDu; 2187 pParty->uFlags &= ~0x200;
2188 pParty->vPosition.x = new_party_x; 2188 pParty->vPosition.x = new_party_x;
2189 pParty->vPosition.z = new_party_z; 2189 pParty->vPosition.z = new_party_z;
2190 pParty->vPosition.y = new_party_y; 2190 pParty->vPosition.y = new_party_y;
2191 pParty->uFallSpeed = v89; 2191 pParty->uFallSpeed = v89;
2192 if ( !bJumping && BYTE3(pIndoor->pFaces[uFaceID].uAttributes) & 0x40 ) 2192 if ( !bJumping && BYTE3(pIndoor->pFaces[uFaceID].uAttributes) & 0x40 )
2193 BYTE1(pParty->uFlags) |= 2u; 2193 pParty->uFlags |= 0x200;
2194 if (uFaceEvent) 2194 if (uFaceEvent)
2195 EventProcessor(uFaceEvent, 0, 1); 2195 EventProcessor(uFaceEvent, 0, 1);
2196 } 2196 }
2197 2197
2198 2198
2368 break; 2368 break;
2369 } 2369 }
2370 } 2370 }
2371 // bFeatherFall = 1; 2371 // bFeatherFall = 1;
2372 //LABEL_9: 2372 //LABEL_9:
2373 LOBYTE(pParty->uFlags) &= 0x7Fu; 2373 pParty->uFlags &= ~PARTY_FLAGS_1_STANDING_ON_WATER;
2374 if (pParty->WaterWalkActive()) 2374 if (pParty->WaterWalkActive())
2375 { 2375 {
2376 //LOBYTE(pParty->uFlags) &= 0x7Fu; 2376 //LOBYTE(pParty->uFlags) &= 0x7Fu;
2377 bWaterWalk = 1; 2377 bWaterWalk = 1;
2378 *(short *)&stru_5E4C90._decor_events[20 * pParty->pPartyBuffs[18].uOverlayID + 119] |= 1u; 2378 *(short *)&stru_5E4C90._decor_events[20 * pParty->pPartyBuffs[18].uOverlayID + 119] |= 1u;
2474 break; 2474 break;
2475 2475
2476 pParty->bFlying = false; 2476 pParty->bFlying = false;
2477 if (bUnderwater || 2477 if (bUnderwater ||
2478 pParty->pPartyBuffs[PARTY_BUFF_FLY].uFlags & 1 || 2478 pParty->pPartyBuffs[PARTY_BUFF_FLY].uFlags & 1 ||
2479 pParty->pPlayers[pParty->pPartyBuffs[PARTY_BUFF_FLY].uCaster - 1].sMana <= 0 ) 2479 pParty->pPlayers[pParty->pPartyBuffs[PARTY_BUFF_FLY].uCaster - 1].sMana > 0 )
2480 { 2480 {
2481 if ( pParty->vPosition.z < 4000 || bJumping ) 2481 if ( pParty->vPosition.z < 4000 || bJumping )
2482 { 2482 {
2483 v123 += 30; 2483 v123 += 30;
2484 v113 += 30; 2484 v113 += 30;
2495 if ( v102 && v123 < v109 && (signed int)(pParty->uPartyHeight + v123) >= v109 ) 2495 if ( v102 && v123 < v109 && (signed int)(pParty->uPartyHeight + v123) >= v109 )
2496 { 2496 {
2497 pParty->field_6E0 = 0; 2497 pParty->field_6E0 = 0;
2498 pParty->field_6E4 = 0; 2498 pParty->field_6E4 = 0;
2499 pPartyActionQueue->uNumActions = 0; 2499 pPartyActionQueue->uNumActions = 0;
2500 BYTE1(pParty->uFlags) |= 1u; 2500 pParty->uFlags |= PARTY_FLAGS_1_LANDING;
2501 pParty->vPosition.z = v109 - pParty->uPartyHeight - 31; 2501 pParty->vPosition.z = v109 - pParty->uPartyHeight - 31;
2502 pParty->field_6F0 = v123; 2502 pParty->field_6F0 = v123;
2503 pParty->bFlying = 0; 2503 pParty->bFlying = 0;
2504 v123 = v109 - pParty->uPartyHeight - 31; 2504 v123 = v109 - pParty->uPartyHeight - 31;
2505 v113 = pParty->field_6F0; 2505 v113 = pParty->field_6F0;
2515 if (pParty->FlyActive() || bUnderwater) 2515 if (pParty->FlyActive() || bUnderwater)
2516 { 2516 {
2517 pParty->bFlying = 0; 2517 pParty->bFlying = 0;
2518 if ( bUnderwater 2518 if ( bUnderwater
2519 || pParty->pPartyBuffs[7].uFlags & 1 2519 || pParty->pPartyBuffs[7].uFlags & 1
2520 || pParty->pPlayers[pParty->pPartyBuffs[7].uCaster-1].sMana <= 0 )//*(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[7].uCaster + 10] > 0 ) 2520 || pParty->pPlayers[pParty->pPartyBuffs[7].uCaster - 1].sMana > 0 )//*(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[7].uCaster + 10] > 0 )
2521 { 2521 {
2522 v123 -= 30; 2522 v123 -= 30;
2523 v113 -= 30; 2523 v113 -= 30;
2524 pParty->uFallSpeed = 0; 2524 pParty->uFallSpeed = 0;
2525 v121 = 0; 2525 v121 = 0;
3145 pAudioPlayer->_4AA258(804); 3145 pAudioPlayer->_4AA258(804);
3146 pParty->field_6F8 = 64; 3146 pParty->field_6F8 = 64;
3147 } 3147 }
3148 } 3148 }
3149 if ( !bJumping || v101 ) 3149 if ( !bJumping || v101 )
3150 pParty->uFlags &= 0xFFFFFFF7u; 3150 pParty->uFlags &= ~PARTY_FLAGS_1_FALLING;
3151 else 3151 else
3152 pParty->uFlags |= 8u; 3152 pParty->uFlags |= PARTY_FLAGS_1_FALLING;
3153 v126 = WorldPosToGridCellX(pParty->vPosition.x); 3153 v126 = WorldPosToGridCellX(pParty->vPosition.x);
3154 v65 = WorldPosToGridCellZ(pParty->vPosition.y) - 1; 3154 v65 = WorldPosToGridCellZ(pParty->vPosition.y) - 1;
3155 v114 = WorldPosToGridCellX(v116); 3155 v114 = WorldPosToGridCellX(v116);
3156 v66 = WorldPosToGridCellZ(v117) - 1; 3156 v66 = WorldPosToGridCellZ(v117) - 1;
3157 v127 = (BSPModel *)(((unsigned int)~pOutdoor->ActuallyGetSomeOtherTileInfo(v126, v65) >> 1) & 1); 3157 v127 = (BSPModel *)(((unsigned int)~pOutdoor->ActuallyGetSomeOtherTileInfo(v126, v65) >> 1) & 1);
3190 pParty->uFallSpeed = 0; 3190 pParty->uFallSpeed = 0;
3191 v73 = v105; 3191 v73 = v105;
3192 pParty->vPosition.z = v105; 3192 pParty->vPosition.z = v105;
3193 if ( pParty->uFallStartY - v70 > 512 && !bFeatherFall && v70 <= v105 && !bUnderwater ) 3193 if ( pParty->uFallStartY - v70 > 512 && !bFeatherFall && v70 <= v105 && !bUnderwater )
3194 { 3194 {
3195 if ( pParty->uFlags & 0x100 ) 3195 if ( pParty->uFlags & PARTY_FLAGS_1_LANDING )
3196 { 3196 {
3197 BYTE1(pParty->uFlags) &= 0xFEu; 3197 pParty->uFlags &= ~PARTY_FLAGS_1_LANDING;
3198 } 3198 }
3199 else 3199 else
3200 { 3200 {
3201 v74 = &pPlayers[1]; 3201 v74 = &pPlayers[1];
3202 do 3202 do
3223 { 3223 {
3224 pParty->vPosition.z = v109 - pParty->uPartyHeight - 1; 3224 pParty->vPosition.z = v109 - pParty->uPartyHeight - 1;
3225 pParty->field_6F0 = v109 - pParty->uPartyHeight - 1; 3225 pParty->field_6F0 = v109 - pParty->uPartyHeight - 1;
3226 } 3226 }
3227 } 3227 }
3228 LOWORD(pParty->uFlags) &= 0xFDFBu; 3228 pParty->uFlags &= ~0x204;
3229 } 3229 }
3230 return; 3230 return;
3231 } 3231 }
3232 v76 = pParty->bFlying; 3232 v76 = pParty->bFlying;
3233 if ( pParty->bFlying || v101 == 0 || bWaterWalk || !v127 ) 3233 if ( pParty->bFlying || v101 == 0 || bWaterWalk || !v127 )
3258 LABEL_312: 3258 LABEL_312:
3259 pParty->vPosition.y = v117; 3259 pParty->vPosition.y = v117;
3260 LABEL_313: 3260 LABEL_313:
3261 if ( bWaterWalk ) 3261 if ( bWaterWalk )
3262 { 3262 {
3263 LOBYTE(pParty->uFlags) &= 0x7Fu; 3263 pParty->uFlags &= ~PARTY_FLAGS_1_STANDING_ON_WATER;
3264 v79 = 20 * pParty->pPartyBuffs[18].uOverlayID + 6180178; 3264 //v79 = 20 * pParty->pPartyBuffs[18].uOverlayID + 6180178;
3265 *(short *)&stru_5E4C90._decor_events[20 * pParty->pPartyBuffs[18].uOverlayID + 119] |= 1u; 3265 //*(short *)&stru_5E4C90._decor_events[20 * pParty->pPartyBuffs[18].uOverlayID + 119] |= 1u;
3266 v79 = (int)&stru_5E4C90._decor_events[20 * pParty->pPartyBuffs[18].uOverlayID + 119];
3267 *(short *)v79 |= 1u;
3266 if ( !v122 || !v69 ) 3268 if ( !v122 || !v69 )
3267 { 3269 {
3268 if ( !v76 ) 3270 if ( !v76 )
3269 { 3271 {
3270 v80 = *(short *)v79; 3272 v80 = *(short *)v79;
3271 LOBYTE(pParty->uFlags) |= 0x80u; 3273 pParty->uFlags |= PARTY_FLAGS_1_STANDING_ON_WATER;
3272 *(short *)v79 = v80 & 0xFFFE; 3274 *(short *)v79 = v80 & 0xFFFE;
3273 } 3275 }
3274 } 3276 }
3275 } 3277 }
3276 goto LABEL_318; 3278 goto LABEL_318;
3310 v82 = v105; 3312 v82 = v105;
3311 pParty->uFallSpeed = 0; 3313 pParty->uFallSpeed = 0;
3312 pParty->vPosition.z = v105; 3314 pParty->vPosition.z = v105;
3313 if ( pParty->uFallStartY - v81 > 512 && !bFeatherFall && v81 <= v105 && !bUnderwater ) 3315 if ( pParty->uFallStartY - v81 > 512 && !bFeatherFall && v81 <= v105 && !bUnderwater )
3314 { 3316 {
3315 if ( pParty->uFlags & 0x100 ) 3317 if ( pParty->uFlags & PARTY_FLAGS_1_LANDING )
3316 { 3318 {
3317 BYTE1(pParty->uFlags) &= 0xFEu; 3319 pParty->uFlags &= ~PARTY_FLAGS_1_LANDING;
3318 } 3320 }
3319 else 3321 else
3320 { 3322 {
3321 v84 = &pPlayers[1]; 3323 v84 = &pPlayers[1];
3322 do 3324 do
11651 } 11653 }
11652 11654
11653 //----- (0044100D) -------------------------------------------------------- 11655 //----- (0044100D) --------------------------------------------------------
11654 bool __cdecl sub_44100D() 11656 bool __cdecl sub_44100D()
11655 { 11657 {
11656 return pCurrentScreen == SCREEN_NPC_DIALOGUE 11658 return pCurrentScreen == SCREEN_NPC_DIALOGUE || pCurrentScreen == SCREEN_CHARACTERS ||
11657 || pCurrentScreen == SCREEN_CHARACTERS 11659 pCurrentScreen > SCREEN_LOADGAME && pCurrentScreen <= SCREEN_E ||
11658 || pCurrentScreen > SCREEN_LOADGAME 11660 pCurrentScreen > SCREEN_VIDEO && pCurrentScreen <= SCREEN_INPUT_BLV || pCurrentScreen == SCREEN_CASTING;
11659 && (pCurrentScreen <= SCREEN_E
11660 || pCurrentScreen > SCREEN_VIDEO
11661 && (pCurrentScreen <= SCREEN_INPUT_BLV
11662 || pCurrentScreen == SCREEN_CASTING));
11663 } 11661 }
11664 // 4E28F8: using guessed type int pCurrentScreen; 11662 // 4E28F8: using guessed type int pCurrentScreen;
11665 11663
11666 //----- (00441498) -------------------------------------------------------- 11664 //----- (00441498) --------------------------------------------------------
11667 void __cdecl GameUI_DrawTorchlightAndWizardEye() 11665 void __cdecl GameUI_DrawTorchlightAndWizardEye()
11668 { 11666 {
11669 unsigned int v0; // eax@15 11667 if (pCurrentScreen == SCREEN_GAME
11670 IconFrame *v1; // eax@15
11671 unsigned int v2; // eax@19
11672 IconFrame *v3; // eax@19
11673
11674 if ( !pCurrentScreen
11675 || pCurrentScreen == SCREEN_MENU 11668 || pCurrentScreen == SCREEN_MENU
11676 || pCurrentScreen == SCREEN_OPTIONS 11669 || pCurrentScreen == SCREEN_OPTIONS
11677 || pCurrentScreen == SCREEN_REST 11670 || pCurrentScreen == SCREEN_REST
11678 || pCurrentScreen == SCREEN_SPELL_BOOK 11671 || pCurrentScreen == SCREEN_SPELL_BOOK
11679 || pCurrentScreen == SCREEN_CHEST 11672 || pCurrentScreen == SCREEN_CHEST
11681 || pCurrentScreen == SCREEN_LOADGAME 11674 || pCurrentScreen == SCREEN_LOADGAME
11682 || pCurrentScreen == SCREEN_F 11675 || pCurrentScreen == SCREEN_F
11683 || pCurrentScreen == SCREEN_BOOKS 11676 || pCurrentScreen == SCREEN_BOOKS
11684 || pCurrentScreen == SCREEN_BRANCHLESS_NPC_DIALOG ) 11677 || pCurrentScreen == SCREEN_BRANCHLESS_NPC_DIALOG )
11685 { 11678 {
11686 if ( SHIDWORD(pParty->pPartyBuffs[16].uExpireTime) >= 0 11679 if (pParty->TorchlightActive())
11687 && (SHIDWORD(pParty->pPartyBuffs[16].uExpireTime) > 0 || LODWORD(pParty->pPartyBuffs[16].uExpireTime)) ) 11680 {
11688 { 11681 auto icon = pIconsFrameTable->GetFrame((signed __int16)pUIAnum_Torchlight->uIconID, pEventTimer->Time());
11689 v0 = pEventTimer->Time(); 11682 pRenderer->DrawTextureTransparent(pUIAnum_Torchlight->x, pUIAnum_Torchlight->y, pIcons_LOD->GetTexture(icon->uTextureID));
11690 v1 = pIconsFrameTable->GetFrame((signed __int16)pUIAnum_Torchlight->uIconID, v0); 11683 }
11691 pRenderer->DrawTextureTransparent( 11684 if (pParty->WizardEyeActive())
11692 pUIAnum_Torchlight->x, 11685 {
11693 pUIAnum_Torchlight->y, 11686 auto icon = pIconsFrameTable->GetFrame((signed __int16)pUIAnim_WizardEye->uIconID, pEventTimer->Time());
11694 &pIcons_LOD->pTextures[v1->uTextureID]); 11687 pRenderer->DrawTextureTransparent(pUIAnim_WizardEye->x, pUIAnim_WizardEye->y, pIcons_LOD->GetTexture(icon->uTextureID));
11695 }
11696 if ( SHIDWORD(pParty->pPartyBuffs[19].uExpireTime) >= 0
11697 && (SHIDWORD(pParty->pPartyBuffs[19].uExpireTime) > 0 || LODWORD(pParty->pPartyBuffs[19].uExpireTime)) )
11698 {
11699 v2 = pEventTimer->Time();
11700 v3 = pIconsFrameTable->GetFrame((signed __int16)pUIAnim_WizardEye->uIconID, v2);
11701 pRenderer->DrawTextureTransparent(
11702 pUIAnim_WizardEye->x,
11703 pUIAnim_WizardEye->y,
11704 &pIcons_LOD->pTextures[v3->uTextureID]);
11705 } 11688 }
11706 } 11689 }
11707 } 11690 }
11708 // 4E28F8: using guessed type int pCurrentScreen; 11691 // 4E28F8: using guessed type int pCurrentScreen;
11709 11692
11717 &pIcons_LOD->pTextures[dword_50C98C]); 11700 &pIcons_LOD->pTextures[dword_50C98C]);
11718 } 11701 }
11719 11702
11720 11703
11721 //----- (004415C5) -------------------------------------------------------- 11704 //----- (004415C5) --------------------------------------------------------
11722 void __cdecl Load_isn_spells_21_27() 11705 void LoadPartyBuffIcons()
11723 { 11706 {
11724 signed int v0; // esi@1 11707 for (uint i = 0; i < 14; ++i)
11725 char pContainer[120]; // [sp+8h] [bp-20h]@2 11708 {
11726 11709 char filename[200];
11727 v0 = 0; 11710 sprintf(filename, "isn-%02d", i + 1);
11728 do 11711 pTextureIDs_PartyBuffIcons[i] = pIcons_LOD->LoadTexture(filename, TEXTURE_16BIT_PALETTE);
11729 { 11712 }
11730 sprintf(pContainer, "isn-%02d", v0 + 1); 11713
11731 pTextureIDs_isns[v0++] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); 11714 uIconIdx_FlySpell = pIconsFrameTable->FindIcon("spell21");
11732 } 11715 uIconIdx_WaterWalk = pIconsFrameTable->FindIcon("spell27");
11733 while ( v0 < 14 );
11734 uIconIdx_Spell21 = pIconsFrameTable->FindIcon("spell21");
11735 uIconIdx_Spell27 = pIconsFrameTable->FindIcon("spell27");
11736 } 11716 }
11737 11717
11738 //----- (0044162D) -------------------------------------------------------- 11718 //----- (0044162D) --------------------------------------------------------
11739 void __cdecl GameUI_DrawPartySpells() 11719 void __cdecl GameUI_DrawPartySpells()
11740 { 11720 {
11741 unsigned int v0; // ebp@1 11721 unsigned int v0; // ebp@1
11742 signed int v1; // edi@1 11722 //signed int v1; // edi@1
11743 int v2; // eax@2 11723 //int v2; // eax@2
11744 int v3; // ecx@5 11724 //int v3; // ecx@5
11745 __int16 *v4; // ebx@25 11725 //__int16 *v4; // ebx@25
11746 Player *v5; // edi@26 11726 //Player *v5; // edi@26
11747 unsigned int v6; // [sp-4h] [bp-1Ch]@11 11727 //unsigned int v6; // [sp-4h] [bp-1Ch]@11
11748 Texture *v7; // [sp-4h] [bp-1Ch]@12 11728 Texture *v7; // [sp-4h] [bp-1Ch]@12
11749 unsigned int v8; // [sp-4h] [bp-1Ch]@20 11729 //unsigned int v8; // [sp-4h] [bp-1Ch]@20
11750 Texture *v9; // [sp-4h] [bp-1Ch]@21 11730 Texture *v9; // [sp-4h] [bp-1Ch]@21
11751 Player **v10; // [sp+10h] [bp-8h]@25 11731 //Player **v10; // [sp+10h] [bp-8h]@25
11752 11732
11753 v0 = (signed __int64)((double)GetTickCount() * 0.050000001); 11733 v0 = (signed __int64)((double)GetTickCount() * 0.050000001);
11754 v1 = 0; 11734 //v1 = 0;
11755 do 11735 for (uint i = 0; i < 14; ++i)
11756 { 11736 {
11757 v2 = (unsigned __int8)byte_4E5DD8[v1]; 11737 //v2 = byte_4E5DD8[v1];
11758 if ( SHIDWORD(pParty->pPartyBuffs[v2].uExpireTime) >= 0 11738 if (pParty->pPartyBuffs[byte_4E5DD8[i]].uExpireTime)
11759 && (SHIDWORD(pParty->pPartyBuffs[v2].uExpireTime) > 0 || LODWORD(pParty->pPartyBuffs[v2].uExpireTime) > 0) ) 11739 {
11760 { 11740 auto tex = pIcons_LOD->GetTexture(pTextureIDs_PartyBuffIcons[i]);
11761 v3 = pTextureIDs_isns[v1]; 11741 //v3 = pTextureIDs_PartyBuffIcons[i];
11762 pRenderer->_4A65CC( 11742 if (tex)
11763 pPartySpellbuffsUI_XYs[v1][0], 11743 pRenderer->_4A65CC(pPartySpellbuffsUI_XYs[i][0],
11764 pPartySpellbuffsUI_XYs[v1][1], 11744 pPartySpellbuffsUI_XYs[i][1], tex, tex,
11765 (Texture *)(v3 != -1 ? &pIcons_LOD->pTextures[v3] : 0), 11745 v0 + 20 * pPartySpellbuffsUI_smthns[i], 0, 63);
11766 (Texture *)(v3 != -1 ? &pIcons_LOD->pTextures[v3] : 0), 11746 }
11767 v0 + 20 * pPartySpellbuffsUI_smthns[v1], 11747 //++v1;
11768 0, 11748 }
11769 63); 11749 //while ( v1 < 14 );
11770 } 11750
11771 ++v1; 11751 if (pCurrentScreen == SCREEN_GAME || pCurrentScreen == SCREEN_NPC_DIALOGUE)
11772 } 11752 {
11773 while ( v1 < 14 ); 11753 if (pParty->FlyActive())
11774 if ( !pCurrentScreen
11775 || pCurrentScreen == SCREEN_NPC_DIALOGUE )
11776 {
11777 if ( (signed __int64)pParty->pPartyBuffs[7].uExpireTime > 0 )
11778 { 11754 {
11779 if ( pParty->bFlying ) 11755 if ( pParty->bFlying )
11780 v6 = v0; 11756 v7 = &pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(uIconIdx_FlySpell, v0)->uTextureID];
11781 else 11757 else
11782 v6 = 0; 11758 v7 = &pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(uIconIdx_FlySpell, 0)->uTextureID];
11783 v7 = &pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(uIconIdx_Spell21, v6)->uTextureID];
11784 if ( pRenderer->pRenderD3D ) 11759 if ( pRenderer->pRenderD3D )
11785 pRenderer->DrawTextureIndexed(8u, 8u, v7); 11760 pRenderer->DrawTextureIndexed(8u, 8u, v7);
11786 else 11761 else
11787 pRenderer->DrawTextureTransparent(8u, 8u, v7); 11762 pRenderer->DrawTextureTransparent(8u, 8u, v7);
11788 } 11763 }
11789 if ( SHIDWORD(pParty->pPartyBuffs[18].uExpireTime) >= 0 11764 if (pParty->WaterWalkActive())
11790 && (SHIDWORD(pParty->pPartyBuffs[18].uExpireTime) > 0 || LODWORD(pParty->pPartyBuffs[18].uExpireTime)) ) 11765 {
11791 { 11766 if ( pParty->uFlags & PARTY_FLAGS_1_STANDING_ON_WATER)
11792 if ( pParty->uFlags & 0x80 ) 11767 v9 = &pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(uIconIdx_WaterWalk, v0)->uTextureID];
11793 v8 = v0;
11794 else 11768 else
11795 v8 = 0; 11769 v9 = &pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(uIconIdx_WaterWalk, 0)->uTextureID];
11796 v9 = &pIcons_LOD->pTextures[pIconsFrameTable->GetFrame(uIconIdx_Spell27, v8)->uTextureID];
11797 if ( pRenderer->pRenderD3D ) 11770 if ( pRenderer->pRenderD3D )
11798 pRenderer->DrawTextureIndexed(396u, 8u, v9); 11771 pRenderer->DrawTextureIndexed(396u, 8u, v9);
11799 else 11772 else
11800 pRenderer->DrawTextureTransparent(396u, 8u, v9); 11773 pRenderer->DrawTextureTransparent(396u, 8u, v9);
11801 } 11774 }
11802 } 11775 }
11803 11776
11804 uint _it = 0; 11777 for (uint i = 0; i < 4; ++i)
11805 v10 = &pPlayers[1]; 11778 {
11806 v4 = pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing; 11779 auto player = pParty->pPlayers + i;
11807 do 11780
11808 { 11781 if (player->pPlayerBuffs[PLAYER_BUFF_HAMMERHANDS].uExpireTime)
11809 v5 = *v10; 11782 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 427, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_Hammerhands));
11810 if ( (signed __int64)(*v10)->pPlayerBuffs[6].uExpireTime > 0 ) 11783 if (player->pPlayerBuffs[PLAYER_BUFF_BLESS].uExpireTime)
11811 pRenderer->DrawTextureIndexed( 11784 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 393, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_Bless));
11812 *v4 + 72, 11785 if (player->pPlayerBuffs[PLAYER_BUFF_PRESERVATION].uExpireTime)
11813 0x1ABu, 11786 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 410, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_Preservation));
11814 (Texture *)(dword_507964 != -1 ? &pIcons_LOD->pTextures[dword_507964] : 0)); 11787 if (player->pPlayerBuffs[PLAYER_BUFF_PAIN_REFLECTION].uExpireTime)
11815 if ( (signed __int64)v5->pPlayerBuffs[1].uExpireTime > 0 ) 11788 pRenderer->DrawTextureIndexed(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[i] + 72, 444, pIcons_LOD->GetTexture(uTextureID_PlayerBuff_PainReflection));
11816 pRenderer->DrawTextureIndexed( 11789 }
11817 *v4 + 72,
11818 0x189u,
11819 (Texture *)(dword_50796C != -1 ? &pIcons_LOD->pTextures[dword_50796C] : 0));
11820 if ( (signed __int64)v5->pPlayerBuffs[11].uExpireTime > 0 )
11821 pRenderer->DrawTextureIndexed(
11822 *v4 + 72,
11823 0x19Au,
11824 (Texture *)(dword_507968 != -1 ? &pIcons_LOD->pTextures[dword_507968] : 0));
11825 if ( (signed __int64)v5->pPlayerBuffs[10].uExpireTime > 0 )
11826 pRenderer->DrawTextureIndexed(
11827 *v4 + 72,
11828 0x1BCu,
11829 (Texture *)(dword_507960 != -1 ? &pIcons_LOD->pTextures[dword_507960] : 0));
11830 ++v10;
11831 ++v4;
11832 }
11833 //while ( (signed int)v4 < (signed int)pBaseHealthByClass );
11834 while (++_it != 4);
11835 } 11790 }
11836 11791
11837 //----- (00441A4E) -------------------------------------------------------- 11792 //----- (00441A4E) --------------------------------------------------------
11838 __int16 __fastcall sub_441A4E(int a1) 11793 __int16 __fastcall sub_441A4E(int a1)
11839 { 11794 {
15520 unsigned __int16 v27; // ax@59 15475 unsigned __int16 v27; // ax@59
15521 int j; // esi@60 15476 int j; // esi@60
15522 signed int v29; // edx@66 15477 signed int v29; // edx@66
15523 char *v30; // ecx@67 15478 char *v30; // ecx@67
15524 unsigned __int16 v31; // ax@70 15479 unsigned __int16 v31; // ax@70
15525 Player *v32; // eax@80 15480 //Player *v32; // eax@80
15526 unsigned __int16 v33; // si@85 15481 //unsigned __int16 v33; // si@85
15527 int v34; // eax@96 15482 int v34; // eax@96
15528 int v35; // eax@97 15483 int v35; // eax@97
15529 unsigned __int64 v36; // qax@99 15484 unsigned __int64 v36; // qax@99
15530 SpellBuff *v37; // ecx@99 15485 SpellBuff *v37; // ecx@99
15531 int v38; // esi@103 15486 int v38; // esi@103
15533 int v40; // ebx@108 15488 int v40; // ebx@108
15534 int v41; // ebx@109 15489 int v41; // ebx@109
15535 int v42; // esi@111 15490 int v42; // esi@111
15536 int v43; // ebx@111 15491 int v43; // ebx@111
15537 int v44; // eax@117 15492 int v44; // eax@117
15538 unsigned __int16 v45; // si@137 15493 //unsigned __int16 v45; // si@137
15539 unsigned __int16 v46; // [sp-8h] [bp-BCh]@99 15494 unsigned __int16 v46; // [sp-8h] [bp-BCh]@99
15540 int v47; // [sp-4h] [bp-B8h]@35 15495 int v47; // [sp-4h] [bp-B8h]@35
15541 unsigned __int16 v48; // [sp-4h] [bp-B8h]@99 15496 unsigned __int16 v48; // [sp-4h] [bp-B8h]@99
15542 int v49; // [sp+0h] [bp-B4h]@35 15497 int v49; // [sp+0h] [bp-B4h]@35
15543 int v50; // [sp+0h] [bp-B4h]@99 15498 int v50; // [sp+0h] [bp-B4h]@99
15549 unsigned int yaw; // [sp+30h] [bp-84h]@7 15504 unsigned int yaw; // [sp+30h] [bp-84h]@7
15550 int pitch; // [sp+34h] [bp-80h]@7 15505 int pitch; // [sp+34h] [bp-80h]@7
15551 //SpriteObject a1; // [sp+38h] [bp-7Ch]@12 15506 //SpriteObject a1; // [sp+38h] [bp-7Ch]@12
15552 int v59; // [sp+A8h] [bp-Ch]@1 15507 int v59; // [sp+A8h] [bp-Ch]@1
15553 int v60; // [sp+ACh] [bp-8h]@1 15508 int v60; // [sp+ACh] [bp-8h]@1
15554 int spellnum_; // [sp+B0h] [bp-4h]@1 15509 //int spellnum_; // [sp+B0h] [bp-4h]@1
15555 signed int levela; // [sp+BCh] [bp+8h]@80 15510 //signed int levela; // [sp+BCh] [bp+8h]@80
15556 int a6_4; // [sp+C8h] [bp+14h]@117 15511 int a6_4; // [sp+C8h] [bp+14h]@117
15557 float a7a; // [sp+CCh] [bp+18h]@6 15512 float a7a; // [sp+CCh] [bp+18h]@6
15558 signed int a7b; // [sp+CCh] [bp+18h]@12 15513 signed int a7b; // [sp+CCh] [bp+18h]@12
15559 int a7c; // [sp+CCh] [bp+18h]@29 15514 int a7c; // [sp+CCh] [bp+18h]@29
15560 int a7d; // [sp+CCh] [bp+18h]@55 15515 int a7d; // [sp+CCh] [bp+18h]@55
15563 int a8c; // [sp+D0h] [bp+1Ch]@55 15518 int a8c; // [sp+D0h] [bp+1Ch]@55
15564 float toza; // [sp+D4h] [bp+20h]@6 15519 float toza; // [sp+D4h] [bp+20h]@6
15565 15520
15566 v9 = 0; 15521 v9 = 0;
15567 v59 = rank + 1; 15522 v59 = rank + 1;
15568 spellnum_ = spellnum; 15523 //spellnum_ = spellnum;
15569 v60 = 0; 15524 v60 = 0;
15570 if ( tox || toy || toz ) 15525 if ( tox || toy || toz )
15571 { 15526 {
15572 v10 = (double)tox - (double)fromx; 15527 v10 = (double)tox - (double)fromx;
15573 v53 = v10; 15528 v53 = v10;
15606 a7b = v15; 15561 a7b = v15;
15607 15562
15608 SpriteObject a1; // [sp+38h] [bp-7Ch]@12 15563 SpriteObject a1; // [sp+38h] [bp-7Ch]@12
15609 //SpriteObject::SpriteObject(&a1); 15564 //SpriteObject::SpriteObject(&a1);
15610 15565
15611 a1.uType = stru_4E3ACC[spellnum_].field_0; 15566 a1.uType = stru_4E3ACC[spellnum].field_0;
15612 if ( spellnum_ > 58 ) 15567 if ( spellnum > 58 )
15613 { 15568 {
15614 if ( spellnum_ == 69 ) 15569 if ( spellnum == 69 )
15615 goto LABEL_117; 15570 goto LABEL_117;
15616 if ( spellnum_ != 83 ) 15571 if ( spellnum != 83 )
15617 return; 15572 return;
15618 v40 = v15 - 2; 15573 v40 = v15 - 2;
15619 if ( v40 ) 15574 if ( v40 )
15620 { 15575 {
15621 v41 = v40 - 1; 15576 v41 = v40 - 1;
15649 v36 = pParty->uTimePlayed + v39; 15604 v36 = pParty->uTimePlayed + v39;
15650 LABEL_116: 15605 LABEL_116:
15651 v37->Apply(v36, v46, v48, v50, v52); 15606 v37->Apply(v36, v46, v48, v50, v52);
15652 goto LABEL_139; 15607 goto LABEL_139;
15653 } 15608 }
15654 if ( spellnum_ != 58 ) 15609 if ( spellnum != 58 )
15655 { 15610 {
15656 switch ( spellnum_ ) 15611 switch ( spellnum )
15657 { 15612 {
15658 case 2: 15613 case 2:
15659 case 6: 15614 case 6:
15660 case 18: 15615 case 18:
15661 case 26: 15616 case 26:
15663 case 32: 15618 case 32:
15664 case 39: 15619 case 39:
15665 case 41: 15620 case 41:
15666 a1.stru_24.Reset(); 15621 a1.stru_24.Reset();
15667 v16 = 0; 15622 v16 = 0;
15668 a1.field_48 = spellnum_; 15623 a1.field_48 = spellnum;
15669 a1.field_4C = level; 15624 a1.field_4C = level;
15670 a1.field_50 = v15; 15625 a1.field_50 = v15;
15671 if ( (signed int)pObjectList->uNumObjects <= 0 ) 15626 if ( (signed int)pObjectList->uNumObjects <= 0 )
15672 goto LABEL_34; 15627 goto LABEL_34;
15673 v17 = (char *)&pObjectList->pObjects->uObjectID; 15628 v17 = (char *)&pObjectList->pObjects->uObjectID;
15701 if ( v60 != 1 ) 15656 if ( v60 != 1 )
15702 { 15657 {
15703 a8b = a7c / (v60 - 1); 15658 a8b = a7c / (v60 - 1);
15704 a1.stru_24.Reset(); 15659 a1.stru_24.Reset();
15705 v21 = 0; 15660 v21 = 0;
15706 a1.field_48 = spellnum_; 15661 a1.field_48 = spellnum;
15707 a1.field_4C = level; 15662 a1.field_4C = level;
15708 a1.field_50 = v15; 15663 a1.field_50 = v15;
15709 if ( (signed int)pObjectList->uNumObjects <= 0 ) 15664 if ( (signed int)pObjectList->uNumObjects <= 0 )
15710 { 15665 {
15711 LABEL_41: 15666 LABEL_41:
15744 } 15699 }
15745 goto LABEL_139; 15700 goto LABEL_139;
15746 } 15701 }
15747 a1.stru_24.Reset(); 15702 a1.stru_24.Reset();
15748 v16 = 0; 15703 v16 = 0;
15749 a1.field_48 = spellnum_; 15704 a1.field_48 = spellnum;
15750 a1.field_4C = level; 15705 a1.field_4C = level;
15751 a1.field_50 = v15; 15706 a1.field_50 = v15;
15752 if ( (signed int)pObjectList->uNumObjects <= 0 ) 15707 if ( (signed int)pObjectList->uNumObjects <= 0 )
15753 goto LABEL_34; 15708 goto LABEL_34;
15754 v19 = (char *)&pObjectList->pObjects->uObjectID; 15709 v19 = (char *)&pObjectList->pObjects->uObjectID;
15797 } 15752 }
15798 a7d = (signed int)(60 * stru_5C6E00->uIntegerDoublePi) / 360; 15753 a7d = (signed int)(60 * stru_5C6E00->uIntegerDoublePi) / 360;
15799 a8c = (signed int)(60 * stru_5C6E00->uIntegerDoublePi) / 360 / (v60 - 1); 15754 a8c = (signed int)(60 * stru_5C6E00->uIntegerDoublePi) / 360 / (v60 - 1);
15800 a1.stru_24.Reset(); 15755 a1.stru_24.Reset();
15801 v25 = 0; 15756 v25 = 0;
15802 a1.field_48 = spellnum_; 15757 a1.field_48 = spellnum;
15803 a1.field_4C = level; 15758 a1.field_4C = level;
15804 a1.field_50 = v15; 15759 a1.field_50 = v15;
15805 if ( (signed int)pObjectList->uNumObjects <= 0 ) 15760 if ( (signed int)pObjectList->uNumObjects <= 0 )
15806 goto LABEL_59; 15761 goto LABEL_59;
15807 v26 = (char *)&pObjectList->pObjects->uObjectID; 15762 v26 = (char *)&pObjectList->pObjects->uObjectID;
15841 case 43: 15796 case 43:
15842 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) 15797 if ( uCurrentlyLoadedLevelType == LEVEL_Indoor )
15843 return; 15798 return;
15844 a1.stru_24.Reset(); 15799 a1.stru_24.Reset();
15845 v29 = 0; 15800 v29 = 0;
15846 a1.field_48 = spellnum_; 15801 a1.field_48 = spellnum;
15847 a1.field_4C = level; 15802 a1.field_4C = level;
15848 a1.field_50 = v15; 15803 a1.field_50 = v15;
15849 if ( (signed int)pObjectList->uNumObjects <= 0 ) 15804 if ( (signed int)pObjectList->uNumObjects <= 0 )
15850 goto LABEL_70; 15805 goto LABEL_70;
15851 v30 = (char *)&pObjectList->pObjects->uObjectID; 15806 v30 = (char *)&pObjectList->pObjects->uObjectID;
15852 break; 15807 break;
15853 case 5: 15808
15809 case SPELL_FIRE_HASTE:
15854 if ( v15 > 0 ) 15810 if ( v15 > 0 )
15855 { 15811 {
15856 if ( v15 <= 2 ) 15812 if ( v15 <= 2 )
15857 { 15813 {
15858 v9 = 60 * (level + 60); 15814 v9 = 60 * (level + 60);
15868 if ( v15 == 4 ) 15824 if ( v15 == 4 )
15869 v9 = 240 * (level + 15); 15825 v9 = 240 * (level + 15);
15870 } 15826 }
15871 } 15827 }
15872 } 15828 }
15873 levela = 1; 15829 //levela = 1;
15874 v32 = pParty->pPlayers;//[0].pConditions[1]; 15830 //v32 = pParty->pPlayers;//[0].pConditions[1];
15875 do 15831 //do
15876 { 15832 for (uint i = 0; i < 4; ++i)
15877 if ( v32->pConditions[1] ) 15833 if (pParty->pPlayers[i].pConditions[Player::Condition_Weak])
15878 levela = 0; 15834 return;
15879 ++v32; 15835 //while ( v32 <= &pParty->pPlayers[3] );
15880 } 15836 //if ( !levela )
15881 while ( v32 <= &pParty->pPlayers[3] ); 15837 // return;
15882 if ( !levela ) 15838 pParty->pPartyBuffs[PARTY_BUFF_HASTE].Apply(pParty->uTimePlayed + (signed int)(signed __int64)((double)(v9 * 128) * 0.033333335),
15883 return;
15884 pParty->pPartyBuffs[8].Apply(
15885 pParty->uTimePlayed + (signed int)(signed __int64)((double)(v9 << 7) * 0.033333335),
15886 v15, 15839 v15,
15887 0, 15840 0,
15888 0, 15841 0,
15889 0); 15842 0);
15890 v33 = spellnum_; 15843 //v33 = spellnum_;
15891 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 0); 15844 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 0);
15892 pGame->pStru6Instance->SetPlayerBuffAnim(v33, 1u); 15845 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 1);
15893 pGame->pStru6Instance->SetPlayerBuffAnim(v33, 2u); 15846 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 2);
15894 pGame->pStru6Instance->SetPlayerBuffAnim(v33, 3u); 15847 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 3);
15895 goto LABEL_138; 15848 goto LABEL_138;
15896 case 17: 15849 case 17:
15897 case 38: 15850 case 38:
15898 case 51: 15851 case 51:
15899 switch ( v15 ) 15852 switch ( v15 )
15907 break; 15860 break;
15908 case 4: 15861 case 4:
15909 v9 = 3600 * (level + 1); 15862 v9 = 3600 * (level + 1);
15910 break; 15863 break;
15911 } 15864 }
15912 switch ( spellnum_ ) 15865 switch ( spellnum )
15913 { 15866 {
15914 case 17: 15867 case 17:
15915 v60 = 0; 15868 v60 = 0;
15916 level = 14; 15869 level = 14;
15917 break; 15870 break;
15924 v34 = level + 5; 15877 v34 = level + 5;
15925 level = 9; 15878 level = 9;
15926 v60 = v34; 15879 v60 = v34;
15927 break; 15880 break;
15928 } 15881 }
15929 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 0); 15882 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 0);
15930 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 1u); 15883 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 1);
15931 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 2u); 15884 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 2);
15932 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 3u); 15885 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 3);
15933 v52 = 0; 15886 v52 = 0;
15934 v50 = 0; 15887 v50 = 0;
15935 v48 = v60; 15888 v48 = v60;
15936 v46 = v15; 15889 v46 = v15;
15937 v36 = pParty->uTimePlayed + (signed int)(signed __int64)((double)(v9 << 7) * 0.033333335); 15890 v36 = pParty->uTimePlayed + (signed int)(signed __int64)((double)(v9 << 7) * 0.033333335);
15940 case 8: 15893 case 8:
15941 if ( v15 == 2 || v15 == 3 || v15 != 4 ) 15894 if ( v15 == 2 || v15 == 3 || v15 != 4 )
15942 v38 = 60 * level; 15895 v38 = 60 * level;
15943 else 15896 else
15944 v38 = 600 * level; 15897 v38 = 600 * level;
15945 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 0); 15898 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 0);
15946 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 1u); 15899 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 1);
15947 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 2u); 15900 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 2);
15948 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 3u); 15901 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 3);
15949 v52 = 0; 15902 v52 = 0;
15950 v50 = 0; 15903 v50 = 0;
15951 v48 = level; 15904 v48 = level;
15952 v46 = v15; 15905 v46 = v15;
15953 v39 = (signed __int64)((double)(v38 << 7) * 0.033333335); 15906 v39 = (signed __int64)((double)(v38 << 7) * 0.033333335);
16015 { 15968 {
16016 v44 = 4 * level; 15969 v44 = 4 * level;
16017 goto LABEL_124; 15970 goto LABEL_124;
16018 } 15971 }
16019 LABEL_125: 15972 LABEL_125:
16020 switch ( spellnum_ ) 15973 switch ( spellnum )
16021 { 15974 {
16022 case 3: 15975 case 3:
16023 level = 6; 15976 level = 6;
16024 break; 15977 break;
16025 case 14: 15978 case 14:
16036 break; 15989 break;
16037 case 69: 15990 case 69:
16038 level = 1; 15991 level = 1;
16039 break; 15992 break;
16040 } 15993 }
16041 v45 = spellnum_; 15994 //v45 = spellnum_;
16042 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum_, 0); 15995 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 0);
16043 pGame->pStru6Instance->SetPlayerBuffAnim(v45, 1u); 15996 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 1);
16044 pGame->pStru6Instance->SetPlayerBuffAnim(v45, 2u); 15997 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 2);
16045 pGame->pStru6Instance->SetPlayerBuffAnim(v45, 3u); 15998 pGame->pStru6Instance->SetPlayerBuffAnim(spellnum, 3);
16046 pParty->pPartyBuffs[level].Apply( 15999 pParty->pPartyBuffs[level].Apply(
16047 pParty->uTimePlayed + (signed int)(signed __int64)((double)a6_4 * 4.2666669), 16000 pParty->uTimePlayed + (signed int)(signed __int64)((double)a6_4 * 4.2666669),
16048 v15, 16001 v15,
16049 v60, 16002 v60,
16050 0, 16003 0,
16051 0); 16004 0);
16052 levela = 1; 16005 //levela = 1;
16053 LABEL_138: 16006 LABEL_138:
16054 if ( levela ) 16007 //if ( levela )
16055 LABEL_139: 16008 LABEL_139:
16056 pAudioPlayer->PlaySound((SoundID)word_4EE088_sound_ids[spellnum_], 0, 0, fromx, fromy, 0, 0, 0); 16009 pAudioPlayer->PlaySound((SoundID)word_4EE088_sound_ids[spellnum], 0, 0, fromx, fromy, 0, 0, 0);
16057 } 16010 }
16058 // 4EE088: using guessed type __int16 word_4EE088_sound_ids[]; 16011 // 4EE088: using guessed type __int16 word_4EE088_sound_ids[];
16059 16012
16060 //----- (0044987B) -------------------------------------------------------- 16013 //----- (0044987B) --------------------------------------------------------
16061 char *__fastcall sub_44987B(const char *pMapName, unsigned int uStartingPointType) 16014 char *__fastcall sub_44987B(const char *pMapName, unsigned int uStartingPointType)