comparison Player.cpp @ 1818:253194aba8b8

Player::SubtractVariable helper functions
author Grumpy7
date Mon, 07 Oct 2013 07:56:07 +0200
parents 4dee76d79c78
children 1641ab7f21ec
comparison
equal deleted inserted replaced
1817:0f1543750bf8 1818:253194aba8b8
6610 __int16 v22; // dx@112 6610 __int16 v22; // dx@112
6611 int v23; // [sp-8h] [bp-14h]@45 6611 int v23; // [sp-8h] [bp-14h]@45
6612 signed int v24; // [sp-4h] [bp-10h]@4 6612 signed int v24; // [sp-4h] [bp-10h]@4
6613 int v25; // [sp-4h] [bp-10h]@45 6613 int v25; // [sp-4h] [bp-10h]@45
6614 6614
6615 v4 = 0;
6616 if ( this == pPlayers[2] )
6617 v4 = 1;
6618 else if ( this == pPlayers[3] )
6619 v4 = 2;
6620 else if ( this == pPlayers[4] )
6621 v4 = 3;
6622
6615 v3 = 0; 6623 v3 = 0;
6616 v4 = uActiveCharacter - 1;
6617 result = false; 6624 result = false;
6618 if ( (signed int)VarNum > 222 ) 6625 if ( VarNum >= VAR_AutoNotes )
6619 { 6626 {
6620 if ( (signed int)VarNum <= 307 ) 6627 if ( VarNum <= VAR_NumDeaths )
6621 { 6628 {
6622 if ( VarNum == 307 ) 6629 if ( VarNum == VAR_NumDeaths )
6623 { 6630 {
6624 pParty->uNumDeaths -= (unsigned int)pValue; 6631 pParty->uNumDeaths -= (unsigned int)pValue;
6625 return pValue; 6632 return pValue;
6626 } 6633 }
6627 if ( VarNum == 223 ) 6634 if ( VarNum == VAR_AutoNotes )
6628 { 6635 {
6629 v11 = (char *)pParty->_autonote_bits; 6636 v11 = (char *)pParty->_autonote_bits;
6630 v22 = (short)pValue - 1; 6637 v22 = (short)pValue - 1;
6631 } 6638 }
6632 else 6639 else
6633 { 6640 {
6634 if ( VarNum != 231 ) 6641 if ( VarNum != VAR_PlayerBits )
6635 { 6642 {
6636 switch ( VarNum ) 6643 switch ( VarNum )
6637 { 6644 {
6638 case 232: 6645 case VAR_NPCs2:
6639 VarNum = (VariableType)0; 6646 v18 = 0;
6640 GetNewNPCData(sDialogue_SpeakingActorNPC_ID, (int*)&VarNum); 6647 GetNewNPCData(sDialogue_SpeakingActorNPC_ID, &v18);
6641 result = (bool) pValue; 6648 result = (bool) pValue;
6642 npcIdToDismissAfterDialogue = 0; 6649 if ( v18 == pValue )
6643 if ( (int)VarNum == pValue )
6644 { 6650 {
6645 npcIdToDismissAfterDialogue = (int)pValue; 6651 npcIdToDismissAfterDialogue = pValue;
6646 } 6652 }
6647 else 6653 else
6648 { 6654 {
6655 npcIdToDismissAfterDialogue = 0;
6649 pParty->hirelingScrollPosition = 0; 6656 pParty->hirelingScrollPosition = 0;
6650 LOBYTE(pNPCStats->pNewNPCData[(int)pValue].uFlags) &= 0x7Fu; 6657 LOBYTE(pNPCStats->pNewNPCData[(int)pValue].uFlags) &= 0x7Fu;
6651 pParty->CountHirelings(); 6658 pParty->CountHirelings();
6652 viewparams->bRedrawGameUI = true; 6659 viewparams->bRedrawGameUI = true;
6653 } 6660 }
6654 break; 6661 break;
6655 case 241: 6662 case VAR_HiredNPCHasSpeciality:
6656 if ( (signed int)pNPCStats->uNumNewNPCs > 0 ) 6663 if ( (signed int)pNPCStats->uNumNewNPCs > 0 )
6657 { 6664 {
6658 v20 = (char *)&pNPCStats->pNewNPCData[0].uFlags; 6665 v20 = (char *)&pNPCStats->pNewNPCData[0].uFlags;
6659 for ( v19 = 0; v19 < (signed int)pNPCStats->uNumNewNPCs; ++v19 ) 6666 for ( v19 = 0; v19 < (signed int)pNPCStats->uNumNewNPCs; ++v19 )
6660 { 6667 {
6675 if ( pParty->pHirelings[1].uProfession == pValue ) 6682 if ( pParty->pHirelings[1].uProfession == pValue )
6676 memset(&pParty->pHirelings[1], 0, 0x4Cu); 6683 memset(&pParty->pHirelings[1], 0, 0x4Cu);
6677 pParty->hirelingScrollPosition = 0; 6684 pParty->hirelingScrollPosition = 0;
6678 pParty->CountHirelings(); 6685 pParty->CountHirelings();
6679 break; 6686 break;
6680 case 243: 6687 case VAR_NumSkillPoints:
6681 v17 = (char *)&this->uSkillPoints; 6688 v17 = (char *)&this->uSkillPoints;
6682 result = *v17 != NULL; 6689 result = *v17 != NULL;
6683 if ( (unsigned int)pValue <= *(int *)v17 ) 6690 if ( (unsigned int)pValue <= *(int *)v17 )
6684 { 6691 {
6685 *(int *)v17 -= (int)pValue; 6692 *(int *)v17 -= (int)pValue;
6686 result = (v17 != NULL); 6693 result = (v17 != NULL);
6687 } 6694 }
6688 else 6695 else
6689 *(int *)v17 = 0; 6696 *(int *)v17 = 0;
6690 break; 6697 break;
6691 case 275: 6698 case VAR_ReputationInCurrentLocation:
6692 v16 = (char *)&pOutdoor->ddm; 6699 v16 = (char *)&pOutdoor->ddm;
6693 if ( uCurrentlyLoadedLevelType != LEVEL_Outdoor ) 6700 if ( uCurrentlyLoadedLevelType != LEVEL_Outdoor )
6694 v16 = (char *)&pIndoor->dlv; 6701 v16 = (char *)&pIndoor->dlv;
6695 *((int *)v16 + 2) -= (int)pValue; 6702 *((int *)v16 + 2) -= (int)pValue;
6696 if ( *((int *)v16 + 2) < -10000 ) 6703 if ( *((int *)v16 + 2) < -10000 )
6697 *((int *)v16 + 2) = -10000; 6704 *((int *)v16 + 2) = -10000;
6698 break; 6705 break;
6699 case 306: 6706 case VAR_GoldInBank:
6700 result = VarNum - 306; 6707 result = VarNum - 306;
6701 if ( (unsigned int)pValue <= pParty->uNumGoldInBank ) 6708 if ( (unsigned int)pValue <= pParty->uNumGoldInBank )
6702 { 6709 {
6703 result = (bool)pValue; 6710 result = (bool)pValue;
6704 pParty->uNumGoldInBank -= (unsigned int)pValue; 6711 pParty->uNumGoldInBank -= (unsigned int)pValue;
6716 _449B7E_toggle_bit((unsigned char *)v11, v22, 0); 6723 _449B7E_toggle_bit((unsigned char *)v11, v22, 0);
6717 return result; 6724 return result;
6718 } 6725 }
6719 switch ( VarNum ) 6726 switch ( VarNum )
6720 { 6727 {
6721 case 308: 6728 case VAR_NumBounties:
6722 result = (bool)pValue; 6729 result = (bool)pValue;
6723 pParty->uNumBountiesCollected -= (unsigned int)pValue; 6730 pParty->uNumBountiesCollected -= (unsigned int)pValue;
6724 break; 6731 break;
6725 case 309: 6732 case VAR_PrisonTerms:
6726 result = (bool)pValue; 6733 result = (bool)pValue;
6727 pParty->uNumPrisonTerms -= (int)pValue; 6734 pParty->uNumPrisonTerms -= (int)pValue;
6728 break; 6735 break;
6729 case 310: 6736 case VAR_ArenaWinsPage:
6730 result = (bool)pValue; 6737 result = (bool)pValue;
6731 pParty->uNumArenaPageWins -= (char)pValue; 6738 pParty->uNumArenaPageWins -= (char)pValue;
6732 break; 6739 break;
6733 case 311: 6740 case VAR_ArenaWinsSquire:
6734 result = (bool)pValue; 6741 result = (bool)pValue;
6735 pParty->uNumArenaSquireWins -= (char)pValue; 6742 pParty->uNumArenaSquireWins -= (char)pValue;
6736 break; 6743 break;
6737 case 312: 6744 case VAR_ArenaWinsKnight:
6738 result = (bool)pValue; 6745 result = (bool)pValue;
6739 pParty->uNumArenaKnightWins -= (char)pValue; 6746 pParty->uNumArenaKnightWins -= (char)pValue;
6740 break; 6747 break;
6741 case 313: 6748 case VAR_ArenaWinsLord:
6742 result = (bool)pValue; 6749 result = (bool)pValue;
6743 pParty->uNumArenaLordWins -= (char)pValue; 6750 pParty->uNumArenaLordWins -= (char)pValue;
6744 break; 6751 break;
6745 } 6752 }
6746 Error("Function not returning any value! (%u)", VarNum); 6753 Error("Function not returning any value! (%u)", VarNum);
6747 } 6754 }
6748 else 6755 else
6749 { 6756 {
6750 if ( (signed int)VarNum >= 123 ) 6757 if ( VarNum >= VAR_MapPersistentVariable_0 )
6751 { 6758 {
6752 byte_5E4C15[VarNum] -= (char)pValue; 6759 byte_5E4C15[VarNum] -= (char)pValue;
6753 } 6760 }
6754 else 6761 else
6755 { 6762 {
6770 v7 = pParty->uNumFoodRations; 6777 v7 = pParty->uNumFoodRations;
6771 Party::TakeFood(v7); 6778 Party::TakeFood(v7);
6772 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[504], v7); 6779 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[504], v7);
6773 ShowStatusBarString(pTmpBuf.data(), 2u); 6780 ShowStatusBarString(pTmpBuf.data(), 2u);
6774 GameUI_DrawFoodAndGold(); 6781 GameUI_DrawFoodAndGold();
6775 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 6782 PlayAwardSound_Anim98(v4);
6776 v8 = 8 * v4 + 400;
6777 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6778 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6779 return result; 6783 return result;
6780 case VAR_CurrentHP: 6784 case VAR_CurrentHP:
6781 ReceiveDamage((signed int)pValue, DMGT_PHISYCAL); 6785 ReceiveDamage((signed int)pValue, DMGT_PHISYCAL);
6782 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 6786 PlayAwardSound_Anim98(v4);
6783 v8 = 8 * v4 + 400;
6784 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6785 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6786 return result; 6787 return result;
6787 case VAR_CurrentSP: 6788 case VAR_CurrentSP:
6788 v9 = (char *)&this->sMana; 6789 this->sMana = max(this->sMana - pValue, 0);
6789 v10 = this->sMana - (signed int)pValue < 0; 6790 PlayAwardSound_Anim98(v4);
6790 *(int *)v9 -= (int)pValue;
6791 if ( v10 )
6792 *(int *)v9 = 0;
6793 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6794 v8 = 8 * v4 + 400;
6795 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6796 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6797 return result; 6791 return result;
6798 case VAR_ACModifier: 6792 case VAR_ACModifier:
6799 this->sACModifier -= (unsigned __int8)pValue; 6793 this->sACModifier -= (unsigned __int8)pValue;
6800 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 6794 PlayAwardSound_Anim98(v4);
6801 v8 = 8 * v4 + 400;
6802 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6803 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6804 return result; 6795 return result;
6805 case VAR_BaseLevel: 6796 case VAR_BaseLevel:
6806 this->uLevel -= (unsigned __int8)pValue; 6797 this->uLevel -= (unsigned __int8)pValue;
6807 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 6798 PlayAwardSound_Anim98(v4);
6808 v8 = 8 * v4 + 400;
6809 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6810 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6811 return result; 6799 return result;
6812 case VAR_LevelModifier: 6800 case VAR_LevelModifier:
6813 this->sLevelModifier -= (unsigned __int8)pValue; 6801 this->sLevelModifier -= (unsigned __int8)pValue;
6814 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 6802 PlayAwardSound_Anim98(v4);
6815 v8 = 8 * v4 + 400;
6816 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6817 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6818 return result; 6803 return result;
6819 case VAR_Age: 6804 case VAR_Age:
6820 this->sAgeModifier -= (signed __int16)pValue; 6805 this->sAgeModifier -= (signed __int16)pValue;
6821 return result; 6806 return result;
6822 case VAR_Award: 6807 case VAR_Award:
6823 _449B7E_toggle_bit((unsigned char *)this->_achieved_awards_bits, (signed __int16)pValue, 0); 6808 _449B7E_toggle_bit(this->_achieved_awards_bits, (signed __int16)pValue, 0);
6824 return result; 6809 return result;
6825 case VAR_Experience: 6810 case VAR_Experience:
6826 v12 = (char *)&this->uExperience; 6811 this->uExperience -= pValue;
6827 v13 = (signed int)pValue; 6812 PlayAwardSound_Anim98(v4);
6828 v14 = *(int *)v12 < (unsigned int)pValue;
6829 *(int *)v12 -= (int)pValue;
6830 *((int *)v12 + 1) -= v14 + HIDWORD(v13);
6831 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6832 v8 = 8 * v4 + 400;
6833 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6834 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6835 return result; 6813 return result;
6836 case VAR_QBits_QuestsDone: 6814 case VAR_QBits_QuestsDone:
6837 _449B7E_toggle_bit(pParty->_quest_bits, (__int16)pValue, 0); 6815 _449B7E_toggle_bit(pParty->_quest_bits, (__int16)pValue, 0);
6838 pPlayers[v4 + 1]->PlaySound(SPEECH_96, 0); 6816 this->PlaySound(SPEECH_96, 0);
6839 return true; 6817 return true;
6840 case VAR_PlayerItemInHands: 6818 case VAR_PlayerItemInHands:
6841 v15 = this->pInventoryMatrix; 6819 v15 = this->pInventoryMatrix;
6842 break; 6820 break;
6843 case VAR_FixedGold: 6821 case VAR_FixedGold:
6846 Party::TakeGold((unsigned int)pValue); 6824 Party::TakeGold((unsigned int)pValue);
6847 return result; 6825 return result;
6848 case VAR_MightBonus: 6826 case VAR_MightBonus:
6849 case VAR_ActualMight: 6827 case VAR_ActualMight:
6850 this->uMightBonus -= (unsigned __int16)pValue; 6828 this->uMightBonus -= (unsigned __int16)pValue;
6851 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6829 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
6852 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6853 v8 = 8 * v4 + 400;
6854 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6855 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6856 return result; 6830 return result;
6857 case VAR_IntellectBonus: 6831 case VAR_IntellectBonus:
6858 case VAR_ActualIntellect: 6832 case VAR_ActualIntellect:
6859 this->uIntelligenceBonus -= (unsigned __int16)pValue; 6833 this->uIntelligenceBonus -= (unsigned __int16)pValue;
6860 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6834 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
6861 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6862 v8 = 8 * v4 + 400;
6863 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6864 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6865 return result; 6835 return result;
6866 case VAR_PersonalityBonus: 6836 case VAR_PersonalityBonus:
6867 case VAR_ActualPersonality: 6837 case VAR_ActualPersonality:
6868 this->uWillpowerBonus -= (unsigned __int16)pValue; 6838 this->uWillpowerBonus -= (unsigned __int16)pValue;
6869 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6839 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
6870 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6871 v8 = 8 * v4 + 400;
6872 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6873 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6874 return result; 6840 return result;
6875 case VAR_EnduranceBonus: 6841 case VAR_EnduranceBonus:
6876 case VAR_ActualEndurance: 6842 case VAR_ActualEndurance:
6877 this->uEnduranceBonus -= (unsigned __int16)pValue; 6843 this->uEnduranceBonus -= (unsigned __int16)pValue;
6878 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6844 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
6879 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6880 v8 = 8 * v4 + 400;
6881 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6882 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6883 return result; 6845 return result;
6884 case VAR_SpeedBonus: 6846 case VAR_SpeedBonus:
6885 case VAR_ActualSpeed: 6847 case VAR_ActualSpeed:
6886 this->uSpeedBonus -= (unsigned __int16)pValue; 6848 this->uSpeedBonus -= (unsigned __int16)pValue;
6887 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6849 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
6888 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6889 v8 = 8 * v4 + 400;
6890 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6891 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6892 return result; 6850 return result;
6893 case VAR_AccuracyBonus: 6851 case VAR_AccuracyBonus:
6894 case VAR_ActualAccuracy: 6852 case VAR_ActualAccuracy:
6895 this->uAccuracyBonus -= (unsigned __int16)pValue; 6853 this->uAccuracyBonus -= (unsigned __int16)pValue;
6896 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6854 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
6897 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6898 v8 = 8 * v4 + 400;
6899 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6900 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6901 return result; 6855 return result;
6902 case VAR_LuckBonus: 6856 case VAR_LuckBonus:
6903 case VAR_ActualLuck: 6857 case VAR_ActualLuck:
6904 this->uLuckBonus -= (unsigned __int16)pValue; 6858 this->uLuckBonus -= (unsigned __int16)pValue;
6905 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6859 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
6906 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6907 v8 = 8 * v4 + 400;
6908 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6909 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6910 return result; 6860 return result;
6911 case VAR_BaseMight: 6861 case VAR_BaseMight:
6912 this->uMight -= (unsigned __int16)pValue; 6862 this->uMight -= (unsigned __int16)pValue;
6913 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6863 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6914 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6915 v8 = 8 * v4 + 400;
6916 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6917 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6918 return result; 6864 return result;
6919 case VAR_BaseIntellect: 6865 case VAR_BaseIntellect:
6920 this->uIntelligence -= (unsigned __int16)pValue; 6866 this->uIntelligence -= (unsigned __int16)pValue;
6921 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6867 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6922 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6923 v8 = 8 * v4 + 400;
6924 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6925 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6926 return result; 6868 return result;
6927 case VAR_BasePersonality: 6869 case VAR_BasePersonality:
6928 this->uWillpower -= (unsigned __int16)pValue; 6870 this->uWillpower -= (unsigned __int16)pValue;
6929 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6871 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6930 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6931 v8 = 8 * v4 + 400;
6932 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6933 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6934 return result; 6872 return result;
6935 case VAR_BaseEndurance: 6873 case VAR_BaseEndurance:
6936 this->uEndurance -= (unsigned __int16)pValue; 6874 this->uEndurance -= (unsigned __int16)pValue;
6937 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6875 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6938 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6939 v8 = 8 * v4 + 400;
6940 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6941 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6942 return result; 6876 return result;
6943 case VAR_BaseSpeed: 6877 case VAR_BaseSpeed:
6944 this->uSpeed -= (unsigned __int16)pValue; 6878 this->uSpeed -= (unsigned __int16)pValue;
6945 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6879 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6946 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6947 v8 = 8 * v4 + 400;
6948 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6949 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6950 return result; 6880 return result;
6951 case VAR_BaseAccuracy: 6881 case VAR_BaseAccuracy:
6952 this->uAccuracy -= (unsigned __int16)pValue; 6882 this->uAccuracy -= (unsigned __int16)pValue;
6953 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6883 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6954 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6955 v8 = 8 * v4 + 400;
6956 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6957 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6958 return result; 6884 return result;
6959 case VAR_BaseLuck: 6885 case VAR_BaseLuck:
6960 this->uLuck -= (unsigned __int16)pValue; 6886 this->uLuck -= (unsigned __int16)pValue;
6961 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6887 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6962 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6963 v8 = 8 * v4 + 400;
6964 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6965 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6966 return result; 6888 return result;
6967 case VAR_FireResistance: 6889 case VAR_FireResistance:
6968 this->sResFireBase -= (signed __int16)pValue; 6890 this->sResFireBase -= (signed __int16)pValue;
6969 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6891 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6970 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6971 v8 = 8 * v4 + 400;
6972 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6973 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6974 return result; 6892 return result;
6975 case VAR_AirResistance: 6893 case VAR_AirResistance:
6976 this->sResAirBase -= (signed __int16)pValue; 6894 this->sResAirBase -= (signed __int16)pValue;
6977 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6895 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6978 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6979 v8 = 8 * v4 + 400;
6980 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6981 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6982 return result; 6896 return result;
6983 case VAR_WaterResistance: 6897 case VAR_WaterResistance:
6984 this->sResWaterBase -= (signed __int16)pValue; 6898 this->sResWaterBase -= (signed __int16)pValue;
6985 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6899 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6986 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6987 v8 = 8 * v4 + 400;
6988 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6989 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6990 return result; 6900 return result;
6991 case VAR_EarthResistance: 6901 case VAR_EarthResistance:
6992 this->sResEarthBase -= (signed __int16)pValue; 6902 this->sResEarthBase -= (signed __int16)pValue;
6993 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6903 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
6994 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
6995 v8 = 8 * v4 + 400;
6996 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
6997 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
6998 return result; 6904 return result;
6999 case VAR_SpiritResistance: 6905 case VAR_SpiritResistance:
7000 this->sResSpiritBase -= (signed __int16)pValue; 6906 this->sResSpiritBase -= (signed __int16)pValue;
7001 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6907 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7002 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7003 v8 = 8 * v4 + 400;
7004 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7005 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7006 return result; 6908 return result;
7007 case VAR_MindResistance: 6909 case VAR_MindResistance:
7008 this->sResMindBase -= (signed __int16)pValue; 6910 this->sResMindBase -= (signed __int16)pValue;
7009 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6911 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7010 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7011 v8 = 8 * v4 + 400;
7012 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7013 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7014 return result; 6912 return result;
7015 case VAR_BodyResistance: 6913 case VAR_BodyResistance:
7016 this->sResBodyBase -= (signed __int16)pValue; 6914 this->sResBodyBase -= (signed __int16)pValue;
7017 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6915 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7018 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7019 v8 = 8 * v4 + 400;
7020 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7021 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7022 return result; 6916 return result;
7023 case VAR_LightResistance: 6917 case VAR_LightResistance:
7024 this->sResLightBase -= (signed __int16)pValue; 6918 this->sResLightBase -= (signed __int16)pValue;
7025 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6919 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7026 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7027 v8 = 8 * v4 + 400;
7028 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7029 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7030 return result; 6920 return result;
7031 case VAR_DarkResistance: 6921 case VAR_DarkResistance:
7032 this->sResDarkBase -= (signed __int16)pValue; 6922 this->sResDarkBase -= (signed __int16)pValue;
7033 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6923 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7034 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7035 v8 = 8 * v4 + 400;
7036 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7037 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7038 return result; 6924 return result;
7039 case VAR_MagicResistance: 6925 case VAR_MagicResistance:
7040 this->sResMagicBase -= (signed __int16)pValue; 6926 this->sResMagicBase -= (signed __int16)pValue;
7041 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6927 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7042 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7043 v8 = 8 * v4 + 400;
7044 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7045 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7046 return result; 6928 return result;
7047 case VAR_FireResistanceBonus: 6929 case VAR_FireResistanceBonus:
7048 this->sResFireBonus -= (signed __int16)pValue; 6930 this->sResFireBonus -= (signed __int16)pValue;
7049 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6931 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7050 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7051 v8 = 8 * v4 + 400;
7052 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7053 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7054 return result; 6932 return result;
7055 case VAR_AirResistanceBonus: 6933 case VAR_AirResistanceBonus:
7056 this->sResAirBonus -= (signed __int16)pValue; 6934 this->sResAirBonus -= (signed __int16)pValue;
7057 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)92, 0); 6935 this->PlayAwardSound_Anim98_Face(v4, SPEECH_92);
7058 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7059 v8 = 8 * v4 + 400;
7060 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7061 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7062 return result; 6936 return result;
7063 case VAR_WaterResistanceBonus: 6937 case VAR_WaterResistanceBonus:
7064 this->sResWaterBonus -= (signed __int16)pValue; 6938 this->sResWaterBonus -= (signed __int16)pValue;
7065 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6939 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7066 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7067 v8 = 8 * v4 + 400;
7068 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7069 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7070 return result; 6940 return result;
7071 case VAR_EarthResistanceBonus: 6941 case VAR_EarthResistanceBonus:
7072 this->sResEarthBonus -= (signed __int16)pValue; 6942 this->sResEarthBonus -= (signed __int16)pValue;
7073 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6943 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7074 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7075 v8 = 8 * v4 + 400;
7076 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7077 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7078 return result; 6944 return result;
7079 case VAR_SpiritResistanceBonus: 6945 case VAR_SpiritResistanceBonus:
7080 this->sResSpiritBonus -= (signed __int16)pValue; 6946 this->sResSpiritBonus -= (signed __int16)pValue;
7081 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6947 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7082 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7083 v8 = 8 * v4 + 400;
7084 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7085 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7086 return result; 6948 return result;
7087 case VAR_MindResistanceBonus: 6949 case VAR_MindResistanceBonus:
7088 this->sResMindBonus -= (signed __int16)pValue; 6950 this->sResMindBonus -= (signed __int16)pValue;
7089 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6951 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7090 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7091 v8 = 8 * v4 + 400;
7092 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7093 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7094 return result; 6952 return result;
7095 case VAR_BodyResistanceBonus: 6953 case VAR_BodyResistanceBonus:
7096 this->sResBodyBonus -= (signed __int16)pValue; 6954 this->sResBodyBonus -= (signed __int16)pValue;
7097 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6955 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7098 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7099 v8 = 8 * v4 + 400;
7100 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7101 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7102 return result; 6956 return result;
7103 case VAR_LightResistanceBonus: 6957 case VAR_LightResistanceBonus:
7104 this->sResLightBonus -= (signed __int16)pValue; 6958 this->sResLightBonus -= (signed __int16)pValue;
7105 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6959 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7106 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7107 v8 = 8 * v4 + 400;
7108 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7109 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7110 return result; 6960 return result;
7111 case VAR_DarkResistanceBonus: 6961 case VAR_DarkResistanceBonus:
7112 this->sResDarkBonus -= (signed __int16)pValue; 6962 this->sResDarkBonus -= (signed __int16)pValue;
7113 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)SPEECH_91, 0); 6963 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7114 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7115 v8 = 8 * v4 + 400;
7116 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7117 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7118 return result; 6964 return result;
7119 case VAR_MagicResistanceBonus: 6965 case VAR_MagicResistanceBonus:
7120 this->sResMagicBonus -= (signed __int16)pValue; 6966 this->sResMagicBonus -= (signed __int16)pValue;
7121 v25 = 0; 6967 this->PlayAwardSound_Anim98_Face(v4, SPEECH_91);
7122 v23 = SPEECH_91;
7123 pPlayers[v4 + 1]->PlaySound((PlayerSpeech)v23, v25);
7124 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4);
7125 v8 = 8 * v4 + 400;
7126 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7127 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7128 return result; 6968 return result;
7129 case VAR_FixedFood: 6969 case VAR_FixedFood:
7130 Party::TakeFood((unsigned int)pValue); 6970 Party::TakeFood((unsigned int)pValue);
7131 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 6971 PlayAwardSound_Anim98(v4);
7132 v8 = 8 * v4 + 400;
7133 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7134 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7135 return result; 6972 return result;
7136 case VAR_StaffSkill: 6973 case VAR_StaffSkill:
7137 case VAR_SwordSkill: 6974 case VAR_SwordSkill:
7138 case VAR_DaggerSkill: 6975 case VAR_DaggerSkill:
7139 case VAR_AxeSkill: 6976 case VAR_AxeSkill:
7162 case VAR_PerceptionSkill: 6999 case VAR_PerceptionSkill:
7163 case VAR_DiplomacySkill: 7000 case VAR_DiplomacySkill:
7164 case VAR_DisarmTrapSkill: 7001 case VAR_DisarmTrapSkill:
7165 case VAR_LearningSkill: 7002 case VAR_LearningSkill:
7166 *((short *)&this->pConditions[16] + VarNum) -= (unsigned __int8)pValue; 7003 *((short *)&this->pConditions[16] + VarNum) -= (unsigned __int8)pValue;
7167 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 7004 PlayAwardSound_Anim98(v4);
7168 v8 = 8 * v4 + 400;
7169 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7170 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7171 return result; 7005 return result;
7172 case VAR_Cursed: 7006 case VAR_Cursed:
7173 case VAR_Weak: 7007 case VAR_Weak:
7174 case VAR_Asleep: 7008 case VAR_Asleep:
7175 case VAR_Afraid: 7009 case VAR_Afraid:
7186 case VAR_Dead: 7020 case VAR_Dead:
7187 case VAR_Stoned: 7021 case VAR_Stoned:
7188 case VAR_Eradicated: 7022 case VAR_Eradicated:
7189 //*((int *)this + 2 * VarNum - 210) = 0; 7023 //*((int *)this + 2 * VarNum - 210) = 0;
7190 //*((int *)this + 2 * result - 209) = 0; 7024 //*((int *)this + 2 * result - 209) = 0;
7191 this->pConditions[VarNum] = 0; 7025 this->pConditions[VarNum] = 0;
7192 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, v4); 7026 PlayAwardSound_Anim98(v4);
7193 v8 = 8 * v4 + 400;
7194 LOBYTE(v8) = PID(OBJECT_Player,v4 - 112);
7195 pAudioPlayer->PlaySound(SOUND_20001, v8, 0, -1, 0, 0, 0, 0);
7196 return result; 7027 return result;
7197 default: 7028 default:
7198 return result; 7029 return result;
7199 } 7030 }
7200 for (v3 = 1; v3 < 126; v3++) 7031 for (v3 = 1; v3 < 126; v3++)
7218 return false; 7049 return false;
7219 } 7050 }
7220 // 5B65C4: using guessed type int dword_5B65C4; 7051 // 5B65C4: using guessed type int dword_5B65C4;
7221 // 5B65CC: using guessed type int dword_5B65CC; 7052 // 5B65CC: using guessed type int dword_5B65CC;
7222 7053
7054 //----- (new function) --------------------------------------------------------
7055 void Player::PlayAwardSound_Anim98(int currPlayerId)
7056 {
7057 pGame->pStru6Instance->SetPlayerBuffAnim(0x98u, currPlayerId);
7058 PlayAwardSound(currPlayerId);
7059 }
7060
7061 //----- (new function) --------------------------------------------------------
7062 void Player::PlayAwardSound_Anim98_Face(int currPlayerId, PlayerSpeech speech)
7063 {
7064 this->PlaySound(speech, 0);
7065 PlayAwardSound_Anim98(currPlayerId);
7066 }
7223 7067
7224 //----- (00467E7F) -------------------------------------------------------- 7068 //----- (00467E7F) --------------------------------------------------------
7225 void Player::EquipBody(ITEM_EQUIP_TYPE uEquipType) 7069 void Player::EquipBody(ITEM_EQUIP_TYPE uEquipType)
7226 { 7070 {
7227 int v2; // ebx@1 7071 int v2; // ebx@1