Mercurial > mm7
changeset 1258:eb1a22f7dfef
Player::SetVariable cleanup - removed some labels at the cost of 2 extra small functions
author | Grumpy7 |
---|---|
date | Wed, 12 Jun 2013 03:59:08 +0200 |
parents | 7e5e328454c7 |
children | d6e5b6b76612 |
files | Player.cpp Player.h |
diffstat | 2 files changed, 128 insertions(+), 95 deletions(-) [+] |
line wrap: on
line diff
--- a/Player.cpp Tue Jun 11 23:10:30 2013 +0200 +++ b/Player.cpp Wed Jun 12 03:59:08 2013 +0200 @@ -7871,11 +7871,11 @@ void Player::SetVariable(enum VariableType var_type, signed int var_value) { signed int currPlayerId; // ebx@1 - Player *unused4; // esi@1 - unsigned int v5; // edi@1 + Player *v4_unused; // esi@1 + unsigned int v5_unused; // edi@1 unsigned int v6; // esi@13 unsigned int v7; // esi@14 - signed int v8; // eax@17 + signed int v8_unused; // eax@17 ItemGen *v9; // ecx@17 int v10; // eax@21 signed int v11; // eax@30 @@ -7897,12 +7897,11 @@ signed int unused27; // [sp-4h] [bp-38h]@4 int v28; // [sp-4h] [bp-38h]@84 ItemGen item; // [sp+Ch] [bp-28h]@52 - char v30; // [sp+32h] [bp-2h]@1 - char v31; // [sp+33h] [bp-1h]@1 - - v30 = 0; - v31 = 0; - v5 = 0; + char v30_drawanim; // [sp+32h] [bp-2h]@1 + char v31_playsound; // [sp+33h] [bp-1h]@1 + + v30_drawanim = 0; + v31_playsound = 0; currPlayerId = -1; for (int i = 1; i <= 4; i++) //TODO: add a member variable for playerid in the future @@ -7979,10 +7978,9 @@ return; bFlashHistoryBook = 1; } -LABEL_172: v25 = 8 * currPlayerId + 400; LOBYTE(v25) = PID(OBJECT_Player,currPlayerId - 112); - pAudioPlayer->PlaySound(SOUND_20001, v25, v5, -1, v5, v5, v5, v5); + pAudioPlayer->PlaySound(SOUND_20001, v25, 0, -1, 0, 0, 0, 0); return; } if ( var_type != VAR_NumDeaths ) @@ -8010,18 +8008,13 @@ } return; } - pParty->uNumDeaths = var_value; -LABEL_168: - if (v30 == 1) - { -LABEL_169: - pGame->pStru6Instance->SetPlayerBuffAnim(0x96u, currPlayerId); - } -LABEL_170: - if ( v31 != 1 ) + else + { + pParty->uNumDeaths = var_value; + DrawPlayerBuffAnimBasedOnCondition(v30_drawanim == 1, currPlayerId); + PlaySoundBasedOnCondition(v31_playsound == 1, currPlayerId); return; - v5 = 0; - goto LABEL_172; + } } if ( var_type == VAR_AutoNotes ) { @@ -8030,15 +8023,17 @@ && pAutonoteTxt[var_value-1].pText ) { v20 = pPlayers[currPlayerId + 1]; - v30 = 1; + v30_drawanim = 1; v20->PlaySound(SPEECH_96, 0); v21 = pAutonoteTxt[var_value-1].eType;// dword_72371C[2 * a3]; bFlashAutonotesBook = 1; _506568_autonote_type = v21; } _449B7E_toggle_bit(pParty->_autonote_bits, var_value, 1u); - v31 = 1; - goto LABEL_168; + v31_playsound = 1; + DrawPlayerBuffAnimBasedOnCondition(v30_drawanim == 1, currPlayerId); + PlaySoundBasedOnCondition(v31_playsound == 1, currPlayerId); + return; } if ( var_type <= VAR_BaseLuck ) { @@ -8051,19 +8046,19 @@ this->classType = (PLAYER_CLASS_TYPE)var_value; if ( (char)var_value == PLAYER_CLASS_LICH ) { - v8 = 0; - v9 = this->pInventoryItems; - while ( v9->uItemID != 615 ) + v9 = NULL; + for (int i = 0; i < 138; i++) { - ++v8; - ++v9; - if ( v8 >= 138 ) - goto LABEL_22; + v9 = &this->pInventoryItems[i]; + if (v9->uItemID == 615) + break; } - v10 = (int)((char *)this + 36 * v8); - *(int *)(v10 + 532) = 601; - *(char *)(v10 + 558) = currPlayerId + 1; -LABEL_22: + if (v9 != NULL || v9->uItemID != 615) + { + v10 = (int)((char *)this + 36 * 138); //originally 36 * v8. the code got to this condition only if v8 was equal to 138 + *(int *)(v10 + 532) = 601; + *(char *)(v10 + 558) = currPlayerId + 1; + } if ( this->sResFireBase < 20 ) this->sResFireBase = 20; if ( this->sResAirBase < 20 ) @@ -8120,12 +8115,14 @@ //&& dword_723E80_award_related[2 * a3] ) && pAwards[var_value].pText ) { - v30 = 1; - v31 = 1; + v30_drawanim = 1; + v31_playsound = 1; pPlayers[currPlayerId + 1]->PlaySound(SPEECH_96, 0); } _449B7E_toggle_bit((unsigned char *)this->_guilds_member_bits, var_value, 1u); - goto LABEL_168; + DrawPlayerBuffAnimBasedOnCondition(v30_drawanim == 1, currPlayerId); + PlaySoundBasedOnCondition(v31_playsound == 1, currPlayerId); + return; case VAR_Experience: this->uExperience = var_value; goto LABEL_124; @@ -8136,22 +8133,15 @@ { v14 = pPlayers[currPlayerId + 1]; bFlashQuestBook = 1; - v30 = 1; - v31 = 1; + v30_drawanim = 1; + v31_playsound = 1; v14->PlaySound(SPEECH_93, 0); } v13 = (char *)pParty->_quest_bits; LABEL_51: _449B7E_toggle_bit((unsigned char *)v13, var_value, 1u); - if (( v30 != 1 )&&( v31 != 1 )) - return; - else - pGame->pStru6Instance->SetPlayerBuffAnim(0x96u, currPlayerId); - if ( v31 != 1 ) - return; - v25 = 8 * currPlayerId + 400; - LOBYTE(v25) = PID(OBJECT_Player,currPlayerId - 112); - pAudioPlayer->PlaySound(SOUND_20001, v25, 0, -1, 0, 0, 0, 0); + DrawPlayerBuffAnimBasedOnCondition(v30_drawanim == 1, currPlayerId); + PlaySoundBasedOnCondition(v31_playsound == 1, currPlayerId); return; case VAR_PlayerItemInHands: item.Reset(); @@ -8198,25 +8188,39 @@ goto LABEL_73; case VAR_BaseMight: this->uMight = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_BaseIntellect: this->uIntelligence = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_BasePersonality: this->uWillpower = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_BaseEndurance: this->uEndurance = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_BaseSpeed: this->uSpeed = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_BaseAccuracy: this->uAccuracy = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_BaseLuck: this->uLuck = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; default: return; } @@ -8225,9 +8229,11 @@ v26 = SPEECH_91; LABEL_112: v19 = pPlayers[currPlayerId + 1]; - v31 = 1; + v31_playsound = 1; v19->PlaySound((PlayerSpeech)v26, v28); - goto LABEL_169; + DrawPlayerBuffAnimBasedOnCondition(true, currPlayerId); + PlaySoundBasedOnCondition(v31_playsound == 1, currPlayerId); + return; } if ( var_type <= VAR_MagicResistance ) { @@ -8263,34 +8269,51 @@ goto LABEL_111; case VAR_FireResistance: this->sResFireBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_AirResistance: this->sResAirBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_WaterResistance: this->sResWaterBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_EarthResistance: this->sResEarthBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_SpiritResistance: this->sResSpiritBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_MindResistance: this->sResMindBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_BodyResistance: this->sResBodyBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_LightResistance: this->sResLightBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_DarkResistance: this->sResDarkBase = (unsigned __int8)var_value; - goto LABEL_84; + v28 = 0; + v26 = 92; + goto LABEL_112; case VAR_MagicResistance: this->sResMagicBase = (unsigned __int8)var_value; -LABEL_84: v28 = 0; v26 = 92; goto LABEL_112; @@ -8321,8 +8344,10 @@ memset(this, 0, 0xA0u); } LABEL_124: - v31 = 1; - goto LABEL_169; + v31_playsound = 1; + DrawPlayerBuffAnimBasedOnCondition(true, currPlayerId); + PlaySoundBasedOnCondition(v31_playsound = 1, currPlayerId); + return; } LABEL_106: v16 = (int)((char *)&this->pConditions[16] + 2 * var_type); @@ -8340,15 +8365,9 @@ goto LABEL_124; } if ( var_type == VAR_DisarmTrapSkill ) - if ( v30 != 1 ) - { - if ( v31 != 1 ) - return; - v5 = 0; - goto LABEL_172; - } - pGame->pStru6Instance->SetPlayerBuffAnim(0x96u, currPlayerId); - goto LABEL_170; + PlaySoundBasedOnCondition(v31_playsound == 1, currPlayerId); + DrawPlayerBuffAnimBasedOnCondition(v30_drawanim == 1, currPlayerId); + return; if ( var_type <= VAR_MagicResistanceBonus ) { switch ( var_type ) @@ -8395,20 +8414,33 @@ goto LABEL_111; } if ( var_type > VAR_MagicResistanceBonus && var_type <= VAR_DiplomacySkill ) - if ( v30 != 1 ) - { - if ( v31 != 1 ) - return; - v5 = 0; - v25 = 8 * currPlayerId + 400; - LOBYTE(v25) = PID(OBJECT_Player,currPlayerId - 112); - pAudioPlayer->PlaySound(SOUND_20001, v25, 0, -1, 0, 0, 0, 0); - return; - } - pGame->pStru6Instance->SetPlayerBuffAnim(0x96u, currPlayerId); - goto LABEL_170; -} - + { + PlaySoundBasedOnCondition(v31_playsound == 1, currPlayerId); + DrawPlayerBuffAnimBasedOnCondition(v30_drawanim == 1, currPlayerId); + return; + } +} + + +//----- (new function) -------------------------------------------------------- +void Player::PlaySoundBasedOnCondition(bool condition, int currPlayerId) +{ + if (condition) + { + signed int v25 = 8 * currPlayerId + 400; + LOBYTE(v25) = PID(OBJECT_Player,currPlayerId - 112); + pAudioPlayer->PlaySound(SOUND_20001, v25, 0, -1, 0, 0, 0, 0); + } +} + +//----- (new function) -------------------------------------------------------- +void Player::DrawPlayerBuffAnimBasedOnCondition(bool condition, int currPlayerId) +{ + if (condition) + { + pGame->pStru6Instance->SetPlayerBuffAnim(0x96u, currPlayerId); + } +} //----- (0044AFFB) -------------------------------------------------------- void Player::AddVariable(enum VariableType var_type, signed int val)
--- a/Player.h Tue Jun 11 23:10:30 2013 +0200 +++ b/Player.h Wed Jun 12 03:59:08 2013 +0200 @@ -590,6 +590,8 @@ void SalesProcess(unsigned int inventory_idnx, int item_index, int _2devent_idx);//0x4BE2DD bool Recover(signed int a2); bool CanCastSpell(unsigned int uRequiredMana); + void PlaySoundBasedOnCondition(bool condition, int currPlayerId); + void DrawPlayerBuffAnimBasedOnCondition(bool condition, int currPlayerId); inline bool Weak() {return pConditions[Condition_Weak] != 0;} inline bool Dead() {return pConditions[Condition_Dead] != 0;} @@ -619,7 +621,6 @@ - __int64 pConditions[20]; unsigned __int64 uExperience; char pName[16];