Mercurial > mm7
changeset 1340:22cb507446a4
turnengine refactoring continue
author | Gloval |
---|---|
date | Sat, 06 Jul 2013 00:29:29 +0400 |
parents | 8bfdc44cebfd |
children | 67e47fc3133d 47975067d6a8 |
files | Actor.cpp CastSpellInfo.cpp Indoor.cpp Mouse.cpp Overlays.cpp Party.cpp Player.cpp Spells.cpp Spells.h TurnEngine.cpp TurnEngine.h UI/UiGame.cpp Viewport.cpp mm7_3.cpp mm7_4.cpp mm7_5.cpp mm7_6.cpp |
diffstat | 17 files changed, 183 insertions(+), 300 deletions(-) [+] |
line wrap: on
line diff
--- a/Actor.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Actor.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -4188,7 +4188,7 @@ for (uint j = 0; j < 22; ++j) { if (j != 10) - pActor->pActorBuffs[j]._4585CA(pParty->uTimePlayed); + pActor->pActorBuffs[j].IsBuffExpiredToTime(pParty->uTimePlayed); } /*do { @@ -4287,7 +4287,7 @@ { if ( i != 10 ) { - pActor->pActorBuffs[i]._4585CA(pParty->uTimePlayed); + pActor->pActorBuffs[i].IsBuffExpiredToTime(pParty->uTimePlayed); } } if ( (signed __int64)pActor->pActorBuffs[ACTOR_BUFF_SHRINK].uExpireTime < 0 )
--- a/CastSpellInfo.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/CastSpellInfo.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -4165,7 +4165,7 @@ // || (result = pTurnEngine->field_4, pTurnEngine->field_4 != 1) && pTurnEngine->field_4 != 3 ) if (pParty->bTurnBasedModeOn) { - if (pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 3) + if (pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 3) return; }
--- a/Indoor.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Indoor.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -3893,7 +3893,7 @@ v6 *= 2; v61 = v6; } - if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->field_4 == 1 ) + if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->turn_stage == 1 ) v6 = (signed __int64)((double)v61 * flt_6BE3AC_debug_recmod1_x_1_6); if ( v6 > 1000 ) v6 = 1000; @@ -4196,7 +4196,7 @@ Actor::AI_FaceObject(v63, v36, v22, (AIDirection *)v22); goto LABEL_119; } - if ( pParty->bTurnBasedModeOn == 1 && (pTurnEngine->field_4 == 2 || pTurnEngine->field_4 == 3) ) + if ( pParty->bTurnBasedModeOn == 1 && (pTurnEngine->turn_stage == 2 || pTurnEngine->turn_stage == 3) ) goto LABEL_119; if ( v0->pMonsterInfo.uHostilityType ) { @@ -4224,7 +4224,7 @@ } else { - if ( pParty->bTurnBasedModeOn == 1 && (pTurnEngine->field_4 == 2 || pTurnEngine->field_4 == 3) ) + if ( pParty->bTurnBasedModeOn == 1 && (pTurnEngine->turn_stage == 2 || pTurnEngine->turn_stage == 3) ) goto LABEL_123; if ( !v0->pMonsterInfo.uHostilityType || v56 != v22 ) {
--- a/Mouse.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Mouse.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -630,7 +630,7 @@ if ( pParty->bTurnBasedModeOn == 1 ) { - if ( pTurnEngine->field_4 == 3 ) + if ( pTurnEngine->turn_stage == 3 ) pTurnEngine->field_18 |= TE_FLAG_8; } }
--- a/Overlays.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Overlays.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -110,14 +110,14 @@ if ( pCurrentScreen != SCREEN_GAME || !pParty->bTurnBasedModeOn) return; - if ( pTurnEngine->field_4 == 3 ) + if ( pTurnEngine->turn_stage == 3 ) { v6 = pEventTimer->uStartTime; v5 = pIconIDs_Turn[5 - pTurnEngine->uActionPointsLeft / 26]; } else { - if ( pTurnEngine->field_4 == 1 ) + if ( pTurnEngine->turn_stage == 1 ) { v6 = dword_50C994; v3 = pIconsFrameTable; @@ -127,7 +127,7 @@ v5 = uIconID_TurnHour; goto LABEL_12; } - if ( pTurnEngine->field_4 != 2 ) + if ( pTurnEngine->turn_stage != 2 ) { v4 = this; goto LABEL_14;
--- a/Party.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Party.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -164,7 +164,7 @@ v12 = 0; if ( pParty->bTurnBasedModeOn == 1 ) { - if ( pTurnEngine->field_4 != 2 || PID_TYPE(pTurnEngine->pQueue[0].uPackedID) != OBJECT_Player) + if ( pTurnEngine->turn_stage != 2 || PID_TYPE(pTurnEngine->pQueue[0].uPackedID) != OBJECT_Player) return 0; v2 = PID_ID(pTurnEngine->pQueue[0].uPackedID); return v2 + 1;
--- a/Player.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Player.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -6518,7 +6518,7 @@ thisb = this; v3 = &pParty->pPlayers[player_num-1]; v73 = 1; - if ( pParty->bTurnBasedModeOn == 1 && (pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 3) ) + if ( pParty->bTurnBasedModeOn == 1 && (pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 3) ) return; if ( pItemsTable->pItems[pParty->pPickedItem.uItemID].uEquipType == EQUIP_REAGENT ) {
--- a/Spells.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Spells.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -256,9 +256,9 @@ } //----- (004585CA) -------------------------------------------------------- -signed int SpellBuff::_4585CA(__int64 a2) -{ - if (uExpireTime && uExpireTime < a2) +bool SpellBuff::IsBuffExpiredToTime( __int64 time_end ) + { + if (uExpireTime && (uExpireTime < time_end)) { uExpireTime = 0; uPower = 0; @@ -270,9 +270,9 @@ } //----- (004584E0) -------------------------------------------------------- -bool SpellBuff::Apply(unsigned __int64 uExpireTime, unsigned __int16 uSkillLevel, unsigned __int16 uPower, int uOverlayID, unsigned __int8 caster) -{ - if (this->uExpireTime && uExpireTime < this->uExpireTime) +bool SpellBuff::Apply( signed __int64 uExpireTime, unsigned __int16 uSkillLevel, unsigned __int16 uPower, int uOverlayID, unsigned __int8 caster ) + { + if (this->uExpireTime && (uExpireTime < this->uExpireTime)) return false; this->uSkill = uSkillLevel;
--- a/Spells.h Fri Jul 05 17:37:30 2013 +0600 +++ b/Spells.h Sat Jul 06 00:29:29 2013 +0400 @@ -155,12 +155,12 @@ uFlags = 0; } - bool Apply(unsigned __int64 uExpireTime, unsigned __int16 uSkillLevel, unsigned __int16 uPower, int uOverlayID, unsigned __int8 caster); + bool Apply(signed __int64 uExpireTime, unsigned __int16 uSkillLevel, unsigned __int16 uPower, int uOverlayID, unsigned __int8 caster); void Reset(); - signed int _4585CA(__int64 a2); + bool IsBuffExpiredToTime(__int64 time_end); bool NotExpired(); - unsigned __int64 uExpireTime; + signed __int64 uExpireTime; unsigned __int16 uPower; unsigned __int16 uSkill; unsigned __int16 uOverlayID;
--- a/TurnEngine.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/TurnEngine.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -111,7 +111,7 @@ { if ( pParty->bTurnBasedModeOn == 1 ) { - if ( pTurnEngine->field_4 == 2 ) + if ( pTurnEngine->turn_stage == 2 ) _406457(0); } } @@ -174,7 +174,7 @@ this->field_10 = 100; this->field_0 = 0; this->field_8 = 64; - this->field_4 = 1; + this->turn_stage = 1; this->uActorQueueSize = 0; for ( v3 = 0; v3 < 4 ; ++v3 ) @@ -285,7 +285,7 @@ int objID; // esi@13 int i; - this->field_4 = 0; + this->turn_stage = 0; for( i=0; i<uActorQueueSize; ++i) { @@ -327,161 +327,104 @@ //----- (00405E14) -------------------------------------------------------- void stru262_TurnBased::_405E14() { - stru262_TurnBased *v1; // esi@1 - int v2; // ecx@1 - SpellBuff *v3; // edi@2 - Actor *v4; // ebx@3 - signed int v5; // edx@20 AIDirection *v6; // esi@21 int v7; // eax@21 - int v8; // eax@21 - int v9; // eax@22 - int v10; // eax@23 - int v11; // eax@37 - int v12; // eax@44 AIDirection a3; // [sp+4h] [bp-68h]@21 AIDirection v14; // [sp+20h] [bp-4Ch]@21 AIDirection v15; // [sp+3Ch] [bp-30h]@21 - Actor *v16; // [sp+58h] [bp-14h]@2 - int v17; // [sp+5Ch] [bp-10h]@6 - stru262_TurnBased *v18; // [sp+60h] [bp-Ch]@1 - int v19; // [sp+64h] [bp-8h]@8 - unsigned int v20; // [sp+68h] [bp-4h]@1 + Actor *curr_actor; // [sp+58h] [bp-14h]@2 + int target_pid; // [sp+5Ch] [bp-10h]@6 + int shrinked; + int i,j; - v1 = this; - v2 = 0; - v18 = v1; - v20 = 0; - if ( (signed int)uNumActors > 0 ) + for (i =0; i<uNumActors; ++i ) { - //v3 = pActors;//[0].pActorBuffs; - v16 = pActors.data();//[0].pActorBuffs; - v3 = v16->pActorBuffs; - do + curr_actor=&pActors[i]; + shrinked=pActors[i].pActorBuffs[ACTOR_BUFF_SHRINK].uExpireTime > 0; + for (j =0; j<22; ++j) //check expired spell Buffs + { + if(j != 10) + pActors[i].pActorBuffs[j].IsBuffExpiredToTime(pParty->uTimePlayed); + } + if (shrinked && pActors[i].pActorBuffs[ACTOR_BUFF_SHRINK].uExpireTime <=0) //buff 3 expired { - v4 = v16; - if ( SHIDWORD(v3[3].uExpireTime) < v2 || SHIDWORD(v3[3].uExpireTime) <= v2 && LODWORD(v3[3].uExpireTime) <= v2 ) - v17 = v2; - else - v17 = 1; - v19 = v2; - do + pActors[i].uActorHeight = pMonsterList->pMonsters[pActors[i].pMonsterInfo.uID - 1].uMonsterHeight; + } + if(!(curr_actor->uAttributes&0x80)&& + (!curr_actor->pActorBuffs[ACTOR_BUFF_STONED].uExpireTime)&& + (!curr_actor->pActorBuffs[ACTOR_BUFF_PARALYZED].uExpireTime)) + { + curr_actor->uCurrentActionTime += pMiscTimer->uTimeElapsed; + if (curr_actor->uCurrentActionTime>=curr_actor->uCurrentActionLength) { - if ( v19 != 10 ) + target_pid = ai_near_actors_targets_pid[i]; + v6 = Actor::GetDirectionInfo(PID(OBJECT_Actor,i), target_pid, &a3, 0); + memcpy(&v15, v6, sizeof(AIDirection)); + memcpy(&v14, &v15, sizeof(AIDirection)); + v7 = curr_actor->uAIState; + if(v7==Dying) { - v3->_4585CA(pParty->uTimePlayed); - v2 = 0; + curr_actor->uCurrentActionTime = 0; + curr_actor->uCurrentActionLength = 0; + curr_actor->uAIState = Dead; + curr_actor->UpdateAnimation(); } - ++v19; - ++v3; - } - while ( v19 < 22 ); - if ( v17 != 0 - && SHIDWORD(v4->pActorBuffs[3].uExpireTime) <= 0 - && (SHIDWORD(v4->pActorBuffs[3].uExpireTime) < 0 || LODWORD(v4->pActorBuffs[3].uExpireTime) <= 0) ) - v4->uActorHeight = pMonsterList->pMonsters[v4->pMonsterInfo.uID - 1].uMonsterHeight; - if ( !(v4->uAttributes & 0x80) ) + else if ( (v7 > Removed)&&(v7 < Disabled)) { - if ( !v4->pActorBuffs[5].uExpireTime ) - { - if ( !v4->pActorBuffs[6].uExpireTime ) - { - v5 = v4->uCurrentActionLength; - v4->uCurrentActionTime += pMiscTimer->uTimeElapsed; - if ( (signed int)v4->uCurrentActionTime >= v5 ) - { - v17 = ai_near_actors_targets_pid[v20]; - v6 = Actor::GetDirectionInfo(PID(OBJECT_Actor,v20), v17, &a3, 0); - v7 = v4->uAIState; - memcpy(&v15, v6, sizeof(v15)); - v8 = v7 - 4; - memcpy(&v14, &v15, sizeof(v14)); - if ( v8 ) - { - v9 = v8 - 1; - if ( v9 ) - { - v10 = v9 - 6; - if ( v10 ) - { - if ( v10 != 8 ) - Actor::AI_StandOrBored(v20, v17, 32, &v14); - } - } - } - else - { - v4->uCurrentActionTime = 0; - v4->uCurrentActionLength = 0; - v4->uAIState = Dead; - v4->UpdateAnimation(); - } - v1 = v18; - v2 = 0; - } - } - } + Actor::AI_StandOrBored(i, target_pid, 32, &v14); } - ++v20; - v3 = v16[1].pActorBuffs; - ++v16; + } + } + } + + if ( turn_stage == 1 ) + { + if ( field_8 == 64 ) + { + _406A63(); } - while ( (signed int)v20 < (signed int)uNumActors ); + else if ( field_8 > 0 ) + { + _406B9F(); + } + else + { + _406AFE(); + field_10 = 100; + } + field_8 -= pEventTimer->uTimeElapsed; + } - if ( v1->field_4 == 1 ) + else if ( turn_stage == 2 ) { - v12 = v1->field_8; - if ( v12 == 64 ) + if ( !(field_18 & TE_FLAG_1) ) { - v1->_406A63(); + if ( field_10 == 100 ) + { + StartTurn(); + _40652A(); + } + if ( field_10 > 0 || pQueue[0].field_4 <= 0 ) + { + _4065B0(); + _40652A(); + } + } + else + NextTurn(); + + } + else if ( turn_stage == 3 ) + { + if ( uActionPointsLeft <= 0 || field_18 & TE_FLAG_8 ) + { + field_18 &= ~TE_FLAG_8; + turn_stage = 1; + field_8 = 64; } else { - if ( v12 > 0 ) - { - v1->_406B9F(); - } - else - { - v1->_406AFE(); - v1->field_10 = 100; - } - } - v1->field_8 -= pEventTimer->uTimeElapsed; - return; - } - if ( v1->field_4 == 2 ) - { - if ( !(v1->field_18 & TE_FLAG_1) ) - { - v11 = v1->field_10; - if ( v11 == 100 ) - { - v1->StartTurn(); -LABEL_39: - v1->_40652A(); - return; - } - if ( v11 > 0 || v1->pQueue[0].field_4 <= 0 ) - { - v1->_4065B0(); - goto LABEL_39; - } - } - v1->NextTurn(); - return; - } - if ( v1->field_4 == 3 ) - { - if ( v1->uActionPointsLeft <= 0 || v1->field_18 & TE_FLAG_8 ) - { - v1->field_18 &= ~TE_FLAG_8; - v1->field_4 = 1; - v1->field_8 = 64; - } - else - { - v1->_406FA8(); + _406FA8(); } } } @@ -747,7 +690,7 @@ } while ( v8 < v1->uActorQueueSize ); } - v1->field_4 = 3; + v1->turn_stage = 3; pParty->uTimePlayed += __PAIR__(v3, 213); _494035_timed_effects__water_walking_damage__etc(); v1->uActionPointsLeft = 130; @@ -844,7 +787,7 @@ } //----- (00406457) -------------------------------------------------------- -int stru262_TurnBased::_406457(int a2) +void stru262_TurnBased::_406457( int a2 ) { stru262_TurnBased *v2; // esi@1 signed int v3; // eax@1 @@ -855,16 +798,13 @@ int v8; // edx@13 int v9; // ecx@14 char v10; // zf@15 + int i; - v2 = this; - v3 = *(&this->field_0 + 4 * (a2 + 2)); - if ( (*((char *)&this->field_0 + 16 * PID_TYPE(a2 + 2))) == OBJECT_Player) + if ( PID_TYPE(pQueue[a2].uPackedID) == OBJECT_Player) { - v4 = PID_ID(v3); - v5 = (char *)&pParty->pTurnBasedPlayerRecoveryTimes[PID_ID(v3)]; - v6 = *(int *)v5; - if ( *(int *)v5 ) - *(int *)v5 = 0; + v4 = PID_ID(pQueue[a2].uPackedID); + if ( pParty->pTurnBasedPlayerRecoveryTimes[v4] ) + pParty->pTurnBasedPlayerRecoveryTimes[v4] = 0; else v6 = pPlayers[v4 + 1]->GetAttackRecoveryTime(0); if ( v6 < 30 ) @@ -872,44 +812,34 @@ } else { - v6 = pMonsterStats->pInfos[pActors[PID_ID(v3)].pMonsterInfo.uID].uRecoveryTime; + v6 = pMonsterStats->pInfos[pActors[PID_ID(pQueue[a2].uPackedID)].pMonsterInfo.uID].uRecoveryTime; } - v2->pQueue[a2].field_4 = v6; - v2->SortTurnQueue(); - if (PID_TYPE(v2->pQueue[0].uPackedID) == OBJECT_Player) - uActiveCharacter = PID_ID(v2->pQueue[0].uPackedID) + 1; + + pQueue[a2].field_4 = v6; + SortTurnQueue(); + if (PID_TYPE(pQueue[0].uPackedID) == OBJECT_Player) + uActiveCharacter = PID_ID(pQueue[0].uPackedID) + 1; else uActiveCharacter = 0; - result = (int)&v2->pQueue[0].field_4; viewparams->bRedrawGameUI = 1; - while ( *(int *)result > 0 ) + if (pQueue[0].field_4 > 0) { - if ( v2->field_10 <= 0 ) - break; - v8 = 0; - if ( v2->uActorQueueSize > 0 ) + while(field_10 > 0) { - v9 = (int)&v2->pQueue[0].field_4; - do + for (i=0; i<uActorQueueSize; ++i) { - v10 = (*(int *)v9)-- == 1; - if ( v10 ) - *(int *)(v9 + 4) = 0; - ++v8; - v9 += 16; + --pQueue[i].field_4; + if (pQueue[i].field_4==0) + pQueue[i].uActionLength=0; } - while ( v8 < v2->uActorQueueSize ); + --field_10; } - --v2->field_10; - if ( v2->field_10 <= 0 ) - break; } - return result; } //----- (0040652A) -------------------------------------------------------- void stru262_TurnBased::_40652A() -{ + { int i; int monster_ai_state; Actor *monster; // eax@5 @@ -929,11 +859,10 @@ pQueue[i].field_4 == pMonsterStats->pInfos[monster->pMonsterInfo.uID].uRecoveryTime; if (monster->pActorBuffs[7].uExpireTime > 0) pQueue[i].field_4*=2; - } } } -} + } //----- (004065B0) -------------------------------------------------------- void stru262_TurnBased::_4065B0() @@ -1270,92 +1199,50 @@ //----- (00406A63) -------------------------------------------------------- void stru262_TurnBased::_406A63() { - stru262_TurnBased *v1; // ebx@1 - int v2; // esi@1 - unsigned __int8 v3; // zf@1 - unsigned __int8 v4; // sf@1 - signed int v5; // ecx@4 + AIDirection a3; // [sp+8h] [bp-44h]@5 AIDirection v7; // [sp+24h] [bp-28h]@5 - unsigned int v8; // [sp+40h] [bp-Ch]@5 - signed int a2; // [sp+44h] [bp-8h]@1 - TurnBased_QueueElem *v10; // [sp+48h] [bp-4h]@2 + unsigned int target_pid; // [sp+40h] [bp-Ch]@5 + int i; - v1 = this; - v2 = 0; this->field_8 = 64; dword_50C994 = 0; uActiveCharacter = 0; - v3 = this->uActorQueueSize == 0; - v4 = this->uActorQueueSize < 0; - a2 = 0; - if ( !(v4 | v3) ) + for (i=0; i<uActorQueueSize; ++i ) { - v10 = this->pQueue; - while ( 1 ) + if (PID_TYPE(pQueue[i].uPackedID) == OBJECT_Actor) { - v5 = v10->uPackedID; - if (PID_TYPE(v10->uPackedID) == OBJECT_Actor) - { - v8 = ai_near_actors_targets_pid[PID_ID(v5)]; - memcpy(&v7, Actor::GetDirectionInfo(v5, v8, &a3, 0), sizeof(v7)); - if ( !v1->ActorTurn(a2) ) - Actor::AI_Stand(PID_ID(v10->uPackedID), v8, 32, &v7); - } - ++a2; - ++v10; - if ( a2 >= v1->uActorQueueSize ) - break; - v2 = 0; + target_pid = ai_near_actors_targets_pid[PID_ID(pQueue[i].uPackedID)]; + memcpy(&v7, Actor::GetDirectionInfo(pQueue[i].uPackedID, target_pid, &a3, 0), sizeof(AIDirection)); + if ( !ActorTurn(i) ) + Actor::AI_Stand(PID_ID(pQueue[i].uPackedID), target_pid, 32, &v7); } - } + } } // 50C994: using guessed type int dword_50C994; //----- (00406AFE) -------------------------------------------------------- void stru262_TurnBased::_406AFE() { - stru262_TurnBased *v1; // edi@1 - TurnBased_QueueElem *v2; // ebx@2 - int v3; // esi@4 - int v4; // ecx@5 AIDirection a3; // [sp+4h] [bp-48h]@5 - AIDirection v6; // [sp+20h] [bp-2Ch]@5 - stru262_TurnBased *v7; // [sp+3Ch] [bp-10h]@1 - unsigned int v8; // [sp+40h] [bp-Ch]@4 - unsigned int v9; // [sp+44h] [bp-8h]@5 - int v10; // [sp+48h] [bp-4h]@1 + AIDirection v7; // [sp+20h] [bp-2Ch]@5 + unsigned int target_pid; + int i; - v10 = 0; - v1 = this; - v7 = this; - if ( this->uActorQueueSize > 0 ) + for (i=0; i<uActorQueueSize; ++i ) { - v2 = this->pQueue; - do + if (PID_TYPE(pQueue[i].uPackedID) == OBJECT_Actor) { - if (PID_TYPE(v2->uPackedID) == OBJECT_Actor) - { - v3 = PID_ID(v2->uPackedID); - v8 = v3; - if ( pActors[v3].CanAct() ) - { - v4 = v2->uPackedID; - v9 = ai_near_actors_targets_pid[v3]; - memcpy(&v6, Actor::GetDirectionInfo(v4, v9, &a3, 0), sizeof(v6)); - Actor::AI_Stand(v8, v9, 32, &v6); - v2->field_C = 0; - v2->uActionLength = 0; - v1 = v7; - } - } - ++v10; - ++v2; + target_pid = ai_near_actors_targets_pid[PID_ID(pQueue[i].uPackedID)]; + memcpy(&v7, Actor::GetDirectionInfo(pQueue[i].uPackedID, target_pid, &a3, 0), sizeof(AIDirection)); + Actor::AI_Stand(PID_ID(pQueue[i].uPackedID), target_pid, 32, &v7); + pQueue[i].field_C = 0; + pQueue[i].uActionLength = 0; } - while ( v10 < v1->uActorQueueSize ); - } - v1->field_4 = 2; - v1->field_8 = 100; + } + turn_stage = 2; + field_8 = 100; + } //----- (00406B9F) -------------------------------------------------------- @@ -1460,10 +1347,6 @@ TurnBased_QueueElem *v17; // eax@25 double v18; // st7@33 double v19; // st6@33 - int v21; // [sp-8h] [bp-5Ch]@23 - int v22; // [sp-8h] [bp-5Ch]@26 - AIDirection *v23; // [sp-4h] [bp-58h]@23 - int v24; // [sp-4h] [bp-58h]@26 AIDirection a3; // [sp+Ch] [bp-48h]@10 AIDirection pDir; // [sp+28h] [bp-2Ch]@10 int v27; // [sp+44h] [bp-10h]@33 @@ -1692,20 +1575,20 @@ uActorID = v4; v5 = &pActors[v4]; v6 = v5->uAIState; - if ( v6 != 5 ) + if ( v6 != 5 ) // Dead { - if ( v6 != 11 ) + if ( v6 != 11 )// Removed { - if ( v6 != 19 ) + if ( v6 != 19 ) //Disabled { - if ( v6 != 17 ) + if ( v6 != 17 ) //Summoned { v7 = (unsigned int *)&ai_near_actors_targets_pid[v4]; a2 = *v7; v8 = a2; Actor::_SelectTarget(v4, (int *)v7, true); - memcpy(&v11, Actor::GetDirectionInfo(*(int *)((char *)&v3->uPackedID + v18), v8, &a3, 0), sizeof(v11)); - memcpy(&a4, &v11, sizeof(a4)); + memcpy(&v11, Actor::GetDirectionInfo(*(int *)((char *)&v3->uPackedID + v18), v8, &a3, 0), sizeof(AIDirection)); + memcpy(&a4, &v11, sizeof(AIDirection)); v5->uCurrentActionTime += pMiscTimer->uTimeElapsed; if ( (signed int)v5->uCurrentActionTime >= v5->uCurrentActionLength ) {
--- a/TurnEngine.h Fri Jul 05 17:37:30 2013 +0600 +++ b/TurnEngine.h Sat Jul 06 00:29:29 2013 +0400 @@ -35,7 +35,7 @@ inline stru262_TurnBased() { field_0 = 0; - field_4 = 0; + turn_stage = 0; field_8 = 0; uActorQueueSize = 0; field_10 = 0; @@ -52,7 +52,7 @@ __int16 StartTurn(); void NextTurn(); int _4063A1(); - int _406457(int a2); + void _406457(int a2); void _40652A(); void _4065B0(); void _406648(unsigned int a2); @@ -65,7 +65,7 @@ int field_0; - int field_4; + int turn_stage; int field_8; int uActorQueueSize; //c int field_10;
--- a/UI/UiGame.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/UI/UiGame.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -2289,7 +2289,7 @@ } if ( pParty->bTurnBasedModeOn == 1 ) { - if ( pTurnEngine->field_4 != 1 ) + if ( pTurnEngine->turn_stage != 1 ) { if (PID_TYPE(pTurnEngine->pQueue[0].uPackedID) == OBJECT_Player) {
--- a/Viewport.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/Viewport.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -467,7 +467,7 @@ pMessageQueue_50CBD0->AddMessage(UIMSG_StartNPCDialogue, v18, 0); return; } - if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->field_4 == 3 ) + if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->turn_stage == 3 ) { pTurnEngine->field_18 |= TE_FLAG_8; return; @@ -476,7 +476,7 @@ } else { - if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->field_4 == 3 ) + if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->turn_stage == 3 ) { pParty->uFlags |= PARTY_FLAGS_1_FALLING; return;
--- a/mm7_3.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/mm7_3.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -997,7 +997,7 @@ v8 *= 2; v73 = v8; } - if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->field_4 == 1 ) + if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->turn_stage == 1 ) v8 = (signed __int64)((double)v73 * flt_6BE3AC_debug_recmod1_x_1_6); if ( v8 > 1000 ) v8 = 1000; @@ -1176,7 +1176,7 @@ switch ( PID_TYPE(v38) ) { case OBJECT_Actor: - if ( pTurnEngine->field_4 != 2 && pTurnEngine->field_4 != 3 || pParty->bTurnBasedModeOn != 1 ) + if ( pTurnEngine->turn_stage != 2 && pTurnEngine->turn_stage != 3 || pParty->bTurnBasedModeOn != 1 ) { //if(pParty->bTurnBasedModeOn == 1) //v34 = 0; @@ -1874,7 +1874,7 @@ stru_721530.field_24 = pParty->uFallSpeed; stru_721530.uSectorID = uSectorID; v38 = 0; - if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->field_4 == 3 ) + if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->turn_stage == 3 ) v38 = 13312; if ( stru_721530._47050A(v38) ) break; @@ -2778,7 +2778,7 @@ stru_721530.field_24 = v121; v36 = 0; stru_721530.uSectorID = 0; - if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->field_4 == 3 ) + if ( pParty->bTurnBasedModeOn == 1 && pTurnEngine->turn_stage == 3 ) v36 = 13312; if ( stru_721530._47050A(v36) ) break;
--- a/mm7_4.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/mm7_4.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -1875,7 +1875,7 @@ v43 = (signed __int64)v21->pPlayerBuffs[7].uExpireTime > 0; for (uint k = 0; k < 24; ++k) - v21->pPlayerBuffs[k]._4585CA(pParty->uTimePlayed); + v21->pPlayerBuffs[k].IsBuffExpiredToTime(pParty->uTimePlayed); if ( v43 && (signed __int64)v21->pPlayerBuffs[7].uExpireTime <= 0 ) v21->SetCondition(1u, 0); @@ -1886,7 +1886,7 @@ for (uint i = 0; i < 20; ++i) { - if (pParty->pPartyBuffs[i]._4585CA(pParty->uTimePlayed) == 1) + if (pParty->pPartyBuffs[i].IsBuffExpiredToTime(pParty->uTimePlayed) == 1) viewparams->bRedrawGameUI = 1; }
--- a/mm7_5.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/mm7_5.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -2427,7 +2427,7 @@ Actor::StealFrom(uMessageParam); continue; } - if ( pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 3 ) + if ( pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 3 ) continue; if ( !(pTurnEngine->field_18 & TE_FLAG_2) ) { @@ -2446,7 +2446,7 @@ _42ECB5_PlayerAttacksActor(); continue; } - if ( pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 3 ) + if ( pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 3 ) continue; if ( !(pTurnEngine->field_18 & TE_FLAG_2) ) _42ECB5_PlayerAttacksActor(); @@ -2720,7 +2720,7 @@ pAudioPlayer->PlaySound((SoundID)v127, 0, 0, -1, 0, 0, 0, 0); continue; case UIMSG_OpenSpellbookPage: - if ( pTurnEngine->field_4 == 3 || !uActiveCharacter || uMessageParam == pPlayers[uActiveCharacter]->lastOpenedSpellbookPage ) + if ( pTurnEngine->turn_stage == 3 || !uActiveCharacter || uMessageParam == pPlayers[uActiveCharacter]->lastOpenedSpellbookPage ) continue; sub_41140B(); pPlayers[uActiveCharacter]->lastOpenedSpellbookPage = uMessageParam; @@ -2730,7 +2730,7 @@ continue; case UIMSG_SelectSpell: { - if (pTurnEngine->field_4 == 3) + if (pTurnEngine->turn_stage == 3) continue; if (!uActiveCharacter) continue; @@ -2768,17 +2768,17 @@ continue; case UIMSG_CastSpellFromBook: - if ( pTurnEngine->field_4 != 3 ) + if ( pTurnEngine->turn_stage != 3 ) _42777D_CastSpell_UseWand_ShootArrow(uMessageParam, v199, 0, 0, 0); continue; case UIMSG_SpellScrollUse: __debugbreak(); - if ( pTurnEngine->field_4 != 3 ) + if ( pTurnEngine->turn_stage != 3 ) _42777D_CastSpell_UseWand_ShootArrow(uMessageParam, v199, 133, 1, 0); continue; case UIMSG_SpellBookWindow: - if ( pTurnEngine->field_4 == 3 ) + if ( pTurnEngine->turn_stage == 3 ) continue; if ( bUnderwater == 1 ) {
--- a/mm7_6.cpp Fri Jul 05 17:37:30 2013 +0600 +++ b/mm7_6.cpp Sat Jul 06 00:29:29 2013 +0400 @@ -2919,7 +2919,7 @@ pPartyActionQueue->Add(partyAction); break; } - if (pTurnEngine->field_4 != 1 && pTurnEngine->field_4 != 2 && pTurnEngine->uActionPointsLeft > 0 ) + if (pTurnEngine->turn_stage != 1 && pTurnEngine->turn_stage != 2 && pTurnEngine->uActionPointsLeft > 0 ) { pTurnEngine->uActionPointsLeft -= 26; if ( pParty->uFlags2 & PARTY_FLAGS_2_RUNNING) @@ -2942,7 +2942,7 @@ pPartyActionQueue->Add(partyAction); break; } - if ( pTurnEngine->field_4 != 1 && pTurnEngine->field_4 != 2 && pTurnEngine->uActionPointsLeft > 0 ) + if ( pTurnEngine->turn_stage != 1 && pTurnEngine->turn_stage != 2 && pTurnEngine->uActionPointsLeft > 0 ) { pTurnEngine->uActionPointsLeft -= 26; if ( pParty->uFlags2 & 2 ) @@ -2962,7 +2962,7 @@ pPartyActionQueue->Add(partyAction); break; } - if ( pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 2 || pTurnEngine->uActionPointsLeft <= 0 ) + if ( pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 2 || pTurnEngine->uActionPointsLeft <= 0 ) break; pTurnEngine->uActionPointsLeft -= 26; partyAction = PARTY_StrafeLeft; @@ -2977,7 +2977,7 @@ pPartyActionQueue->Add(partyAction); break; } - if ( pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 2 || pTurnEngine->uActionPointsLeft <= 0 ) + if ( pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 2 || pTurnEngine->uActionPointsLeft <= 0 ) break; pTurnEngine->uActionPointsLeft -= 26; partyAction = PARTY_StrafeRight; @@ -2990,7 +2990,7 @@ { if (pParty->bTurnBasedModeOn) { - if ( pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 2 || pTurnEngine->uActionPointsLeft <= 0 ) + if ( pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 2 || pTurnEngine->uActionPointsLeft <= 0 ) break; pTurnEngine->uActionPointsLeft -= 26; } @@ -3016,7 +3016,7 @@ { if (pParty->bTurnBasedModeOn) { - if ( pTurnEngine->field_4 == 1 || pTurnEngine->field_4 == 2 || pTurnEngine->uActionPointsLeft <= 0 ) + if ( pTurnEngine->turn_stage == 1 || pTurnEngine->turn_stage == 2 || pTurnEngine->uActionPointsLeft <= 0 ) break; pTurnEngine->uActionPointsLeft -= 26; } @@ -3051,7 +3051,7 @@ case INPUT_Pass: if ( pCurrentScreen ) break; - if (pParty->bTurnBasedModeOn && pTurnEngine->field_4 == 3) + if (pParty->bTurnBasedModeOn && pTurnEngine->turn_stage == 3) { pTurnEngine->field_18 |= TE_FLAG_8; break; @@ -3073,7 +3073,7 @@ { if (pParty->bTurnBasedModeOn) { - if (pTurnEngine->field_4 == 3 || PID_TYPE(pTurnEngine->pQueue[0].uPackedID) == OBJECT_Player) + if (pTurnEngine->turn_stage == 3 || PID_TYPE(pTurnEngine->pQueue[0].uPackedID) == OBJECT_Player) { pParty->bTurnBasedModeOn = 0; pTurnEngine->End(true); @@ -3089,7 +3089,7 @@ case INPUT_CastReady: if (pCurrentScreen != SCREEN_GAME) break; - if (pParty->bTurnBasedModeOn && pTurnEngine->field_4 == 3) + if (pParty->bTurnBasedModeOn && pTurnEngine->turn_stage == 3) { pTurnEngine->field_18 |= TE_FLAG_8; break; @@ -3118,7 +3118,7 @@ case INPUT_Attack: if (pCurrentScreen != SCREEN_GAME) break; - if (pParty->bTurnBasedModeOn == 1 && pTurnEngine->field_4 == 3) + if (pParty->bTurnBasedModeOn == 1 && pTurnEngine->turn_stage == 3) { pTurnEngine->field_18 |= TE_FLAG_8; break;