# HG changeset patch
# User Ritor1
# Date 1402309567 -21600
# Node ID 48dbf99c0f7f3743858741c400a2169fc1756335
# Parent 6eb63623cbe87b432b56bf9ac1349db15d9cec77
spawn_light_elemental cleaned
diff -r 6eb63623cbe8 -r 48dbf99c0f7f Actor.cpp
--- a/Actor.cpp Mon Jun 02 12:31:28 2014 +0600
+++ b/Actor.cpp Mon Jun 09 16:26:07 2014 +0600
@@ -240,18 +240,13 @@
int v48; // ecx@110
int v51; // ecx@130
int v54; // ecx@138
- //Player *v57; // esi@145
- //int v58; // eax@146
int v59; // edi@146
- //int v60; // eax@146
int v61; // edi@146
- //int v62; // eax@146
signed int v63; // edi@146
int v68; // edi@168
signed int v70; // ecx@172
int v79; // edx@185
int v80; // eax@185
- //signed int v89; // ecx@192
signed int v91; // eax@200
int v94; // ecx@208
int v96; // ecx@217
@@ -706,11 +701,13 @@
unsigned int v3; // edi@1
v2 = a1->uAlly;
- v3 = a2->uAlly;
- if ( !v2 )
+ if ( !a1->uAlly )
v2 = (a1->pMonsterInfo.uID - 1) / 3 + 1;
- if ( !v3 )
+
+ v3 = a2->uAlly;
+ if ( !a2->uAlly )
v3 = (a2->pMonsterInfo.uID - 1) / 3 + 1;
+
if ( v2 >= 39 && v2 <= 44 && v3 >= 39 && v3 <= 44
|| v2 >= 45 && v2 <= 50 && v3 >= 45 && v3 <= 50
|| v2 >= 51 && v2 <= 62 && v3 >= 51 && v3 <= 62
@@ -760,12 +757,9 @@
//----- (00404874) --------------------------------------------------------
void Actor::AI_RangedAttack( unsigned int uActorID, struct AIDirection *pDir, int type, char a4 )
{
- //Actor *actPtr; // esi@1
char specAb; // al@1
int v13; // edx@28
- //actPtr = &pActors[uActorID];
-
SpriteObject a1; // [sp+Ch] [bp-74h]@1
switch ( type )
@@ -825,12 +819,12 @@
return;
}
a1.stru_24.Reset();
+ a1.spell_id = 0;
a1.vPosition.x = pActors[uActorID].vPosition.x;
- a1.spell_id = 0;
a1.vPosition.y = pActors[uActorID].vPosition.y;
+ a1.vPosition.z = pActors[uActorID].vPosition.z - (unsigned int)(pActors[uActorID].uActorHeight * -0.75);
a1.spell_level = 0;
a1.spell_skill = 0;
- a1.vPosition.z = pActors[uActorID].vPosition.z - (unsigned int)(pActors[uActorID].uActorHeight * -0.75);
a1.uFacing = pDir->uYawAngle;
a1.uSoundID = 0;
a1.uAttributes = 0;
@@ -1103,7 +1097,6 @@
{
AIDirection *v7; // eax@3
AIDirection v1; // eax@3
- //Actor *v9; // ebx@3
AIDirection a3; // [sp+8h] [bp-38h]@4
if ( rand() % 100 >= 5 )
@@ -1133,7 +1126,8 @@
//----- (00403F58) --------------------------------------------------------
void Actor::AI_StandOrBored(unsigned int uActorID, signed int uObjID, int uActionLength, AIDirection *a4)
{
- if (rand() % 2)
+ //движется или стоит определяется случайно(1 - движется, 0 - стоит)
+ if (rand() % 2)//0 or 1
AI_Bored(uActorID, uObjID, a4);
else
AI_Stand(uActorID, uObjID, uActionLength, a4);
@@ -1154,7 +1148,7 @@
pActors[uActorID].uAIState = Standing;
if (!uActionLength)
- pActors[uActorID].uCurrentActionLength = rand() % 256 + 256;
+ pActors[uActorID].uCurrentActionLength = rand() % 256 + 256;// от 256 до 256 + 256
else
pActors[uActorID].uCurrentActionLength = uActionLength;
pActors[uActorID].uCurrentActionTime = 0;
@@ -1181,7 +1175,7 @@
//----- (00403C6C) --------------------------------------------------------
void Actor::AI_MeleeAttack(unsigned int uActorID, signed int sTargetPid, struct AIDirection *arg0)
{
- Actor *v3; // ebx@1
+ //Actor *v3; // ebx@1
int16_t v6; // esi@6
int16_t v7; // edi@6
signed int v8; // eax@7
@@ -1192,8 +1186,10 @@
int v23; // [sp+4Ch] [bp-8h]@6
unsigned int v25; // [sp+5Ch] [bp+8h]@13
- v3 = &pActors[uActorID];
- if ( v3->pMonsterInfo.uMovementType == MONSTER_MOVEMENT_TYPE_STAIONARY && v3->pMonsterInfo.uAIType == 1 )
+ assert(uActorID < uNumActors);
+
+ //v3 = &pActors[uActorID];
+ if ( pActors[uActorID].pMonsterInfo.uMovementType == MONSTER_MOVEMENT_TYPE_STAIONARY && pActors[uActorID].pMonsterInfo.uAIType == 1 )
{
Actor::AI_Stand(uActorID, sTargetPid, 0, arg0);
return;
@@ -1217,9 +1213,10 @@
Error("Should not get here");
return;
}
- v10.z = (int32_t)(v3->uActorHeight * 0.75 + v3->vPosition.z);
- v10.y = v3->vPosition.y;
- v10.x = v3->vPosition.x;
+
+ v10.x = pActors[uActorID].vPosition.x;
+ v10.y = pActors[uActorID].vPosition.y;
+ v10.z = (int32_t)(pActors[uActorID].uActorHeight * 0.75 + pActors[uActorID].vPosition.z);
if ( sub_407A1C((int)v6, (int)v7, v23, v10) )
{
@@ -1230,22 +1227,22 @@
Actor::GetDirectionInfo(PID(OBJECT_Actor, uActorID), sTargetPid, &a3, 0);
v12 = &a3;
}
- v3->uYawAngle = LOWORD(v12->uYawAngle);
- v3->uCurrentActionLength = pSpriteFrameTable->pSpriteSFrames[v3->pSpriteIDs[ANIM_AtkMelee]].uAnimLength * 8;
- v3->uCurrentActionTime = 0;
- v3->uAIState = AttackingMelee;
+ pActors[uActorID].uYawAngle = LOWORD(v12->uYawAngle);
+ pActors[uActorID].uCurrentActionLength = pSpriteFrameTable->pSpriteSFrames[pActors[uActorID].pSpriteIDs[ANIM_AtkMelee]].uAnimLength * 8;
+ pActors[uActorID].uCurrentActionTime = 0;
+ pActors[uActorID].uAIState = AttackingMelee;
Actor::PlaySound(uActorID, 0);
- v25 = pMonsterStats->pInfos[v3->pMonsterInfo.uID].uRecoveryTime;
- if ( v3->pActorBuffs[ACTOR_BUFF_SLOWED].uExpireTime > 0 )
+ v25 = pMonsterStats->pInfos[pActors[uActorID].pMonsterInfo.uID].uRecoveryTime;
+ if ( pActors[uActorID].pActorBuffs[ACTOR_BUFF_SLOWED].uExpireTime > 0 )
v25 *= 2;
if ( pParty->bTurnBasedModeOn != 1 )
- v3->pMonsterInfo.uRecoveryTime = (int)(flt_6BE3A8_debug_recmod2 * v25 * 2.133333333333333);
+ pActors[uActorID].pMonsterInfo.uRecoveryTime = (int)(flt_6BE3A8_debug_recmod2 * v25 * 2.133333333333333);
else
- v3->pMonsterInfo.uRecoveryTime = v25;
- v3->vVelocity.z = 0;
- v3->vVelocity.y = 0;
- v3->vVelocity.x = 0;
- v3->UpdateAnimation();
+ pActors[uActorID].pMonsterInfo.uRecoveryTime = v25;
+ pActors[uActorID].vVelocity.z = 0;
+ pActors[uActorID].vVelocity.y = 0;
+ pActors[uActorID].vVelocity.x = 0;
+ pActors[uActorID].UpdateAnimation();
}
else
Actor::AI_Pursue1(uActorID, sTargetPid, rand() % 2, 64, arg0);
@@ -4541,51 +4538,19 @@
//----- (004016FA) --------------------------------------------------------
int Actor::MakeActorAIList_BLV()
{
- //Actor *v0; // esi@2
int v1; // eax@4
- // int v2; // ebx@4
- // unsigned int v3; // ecx@4
- // int v4; // edx@5
- // int v5; // edx@7
- // unsigned int v6; // edx@9
- unsigned int v7; // ST24_4@10
- // int v8; // eax@10
int v9; // edi@10
- // int v10; // ebx@14
- // char v11; // zf@16
- int v12; // eax@22
int v13; // edx@24
- // int v14; // ecx@25
- int v15; // ebx@26
- // unsigned int *v16; // ecx@27
- unsigned int v17; // esi@27
int v18; // ecx@31
signed int v19; // edi@31
- // Actor *v20; // esi@32
- // bool v21; // eax@33
- // int v22; // eax@34
- // signed int v23; // ebx@36
- // Actor *v24; // esi@37
signed int v25; // eax@40
- // int v26; // eax@43
- int v27; // ebx@45
int j; // edi@45
- // unsigned int v29; // eax@46
int v30; // eax@48
- // int v31; // ecx@51
- // int v32; // eax@51
- // signed int v33; // eax@53
- // __int64 v34; // qax@55
- // char *v35; // ecx@56
int v37; // [sp+Ch] [bp-18h]@1
int v38; // [sp+10h] [bp-14h]@4
int v39; // [sp+14h] [bp-10h]@4
- //int v40; // [sp+18h] [bp-Ch]@10
- // int v41; // [sp+18h] [bp-Ch]@29
int i; // [sp+18h] [bp-Ch]@31
- //signed int v43; // [sp+1Ch] [bp-8h]@1
- // signed int v44; // [sp+1Ch] [bp-8h]@25
- int v45; // [sp+20h] [bp-4h]@1
+ uint v45; // [sp+20h] [bp-4h]@1
// __debugbreak(); // refactor for blv ai
pParty->uFlags &= 0xFFFFFFCFu;
@@ -4599,11 +4564,11 @@
pActors[i].uAttributes &= 0xBF00;
continue;
}
- v39 = abs(pParty->vPosition.z - pActors[i].vPosition.z);
+ v1 = abs(pParty->vPosition.x - pActors[i].vPosition.x);
v38 = abs(pParty->vPosition.y - pActors[i].vPosition.y);
- v1 = abs(pParty->vPosition.x - pActors[i].vPosition.x);
- v7 = int_get_vector_length(v39, v38, v1);
- v9 = v7 - pActors[i].uActorRadius;
+ v39 = abs(pParty->vPosition.z - pActors[i].vPosition.z);
+
+ v9 = int_get_vector_length(v39, v38, v1) - pActors[i].uActorRadius;
if ( v9 < 0 )
v9 = 0;
if ( v9 < 10240 )
@@ -4617,9 +4582,9 @@
if ( !(pParty->uFlags & 0x20) && v9 < 5120 )
pParty->uFlags |= 0x20;
}
- v12 = v45++;
- ai_near_actors_distances[v12] = v9;
- ai_near_actors_ids[v12] = i;
+ ai_near_actors_distances[v45] = v9;
+ ai_near_actors_ids[v45] = i;
+ v45++;
}
else
pActors[i].uAttributes &= 0xBF00;
@@ -4631,14 +4596,12 @@
{
for ( uint j = 1; j < v45; ++j )
{
- v15 = ai_near_actors_distances[v13];
if ( ai_near_actors_distances[v13] > ai_near_actors_distances[j] )
{
- v17 = ai_near_actors_ids[v13];
ai_near_actors_ids[v13] = ai_near_actors_ids[j];
- ai_near_actors_ids[j] = v17;
+ ai_near_actors_ids[j] = ai_near_actors_ids[v13];
ai_near_actors_distances[v13] = ai_near_actors_distances[j];
- ai_near_actors_distances[j] = v15;
+ ai_near_actors_distances[j] = ai_near_actors_distances[v13];
}
}
++v13;
@@ -4687,21 +4650,19 @@
}
}
}
- v27 = ai_arrays_size;
for ( j = 0; j < v45; ++j )
{
- //v29 = ai_near_actors_ids[j];
if ( pActors[ai_near_actors_ids[j]].uAttributes & 0xC000 && pActors[ai_near_actors_ids[j]].CanAct() )
{
v30 = 0;
- if ( v27 <= 0 )
+ if ( ai_arrays_size <= 0 )
ai_array_4F6638_actor_ids[ai_arrays_size++] = ai_near_actors_ids[j];
else
{
while ( ai_array_4F6638_actor_ids[v30] != ai_near_actors_ids[j] )
{
++v30;
- if ( v30 >= v27 )
+ if ( v30 >= ai_arrays_size )
{
ai_array_4F6638_actor_ids[ai_arrays_size++] = ai_near_actors_ids[j];
break;
@@ -4724,20 +4685,13 @@
bool __fastcall sub_4070EF_prolly_detect_player(unsigned int uObjID, unsigned int uObj2ID)
{
signed int v2; // eax@1
-// int v5; // ecx@2
int obj1_sector; // eax@4
float v8; // ST24_4@5
-// double v9; // ST18_8@5
-// int v11; // ecx@6
signed int v12; // eax@7
-// int v13; // esi@7
-// int v14; // esi@8
-// int v15; // esi@9
int obj2_z; // edi@11
int obj2_x; // esi@11
int obj2_sector; // eax@13
float v20; // ST24_4@14
-// double v21; // ST18_8@14
int dist_x; // ebx@16
signed int dist_3d; // ecx@16
int v25; // eax@18
@@ -4748,10 +4702,7 @@
int v33; // ST54_4@44
int v34; // eax@44
signed int v38; // esi@45
-// signed __int64 v40; // qtt@50
__int16 next_sector; // bx@58
-// int v43; // [sp-8h] [bp-70h]@11
-// int v44; // [sp-4h] [bp-6Ch]@11
int v47; // [sp+18h] [bp-50h]@20
int v48; // [sp+1Ch] [bp-4Ch]@20
int v49; // [sp+20h] [bp-48h]@20
@@ -4909,8 +4860,9 @@
}
v32 = fixpoint_mul(v29->pFacePlane_old.vNormal.x,v49);
+ v34 = fixpoint_mul(v29->pFacePlane_old.vNormal.y,v48);
v33 = fixpoint_mul(v29->pFacePlane_old.vNormal.z,v47);
- v34 = fixpoint_mul(v29->pFacePlane_old.vNormal.y,v48);
+
v59 = v32 + v33 + v34;
if ( v59 )
{
@@ -4989,35 +4941,27 @@
{
unsigned int v1; // ebx@1
bool result; // eax@2
- MonsterDesc *v3; // esi@5
- MonsterInfo *v4; // edi@5
- Vec3_int_ v5; // ST08_12@5
unsigned int v6; // ecx@5
- Actor *v7; // eax@7
Actor actor; // [sp+4h] [bp-350h]@5
Vec3_int_ pOut; // [sp+348h] [bp-Ch]@5
v1 = uMonsterID;
if ( uNumActors == 499 )
- {
result = 0;
- }
else
{
if ( (signed int)uMonsterID >= (signed int)pMonsterList->uNumMonsters )
v1 = 0;
- v3 = &pMonsterList->pMonsters[v1];
- v4 = &pMonsterStats->pInfos[v1 + 1];
- memset(&actor, 0, 0x344u);
- strcpy(actor.pActorName, v4->pName);
- actor.sCurrentHP = LOWORD(v4->uHP);
- memcpy(&actor.pMonsterInfo, &pMonsterStats->pInfos[v1 + 1], 0x58u);
+ memset(&actor, 0, sizeof(Actor));
+ strcpy(actor.pActorName, pMonsterStats->pInfos[v1 + 1].pName);
+ actor.sCurrentHP = LOWORD(pMonsterStats->pInfos[v1 + 1].uHP);
+ memcpy(&actor.pMonsterInfo, &pMonsterStats->pInfos[v1 + 1], sizeof(MonsterInfo));
actor.word_000086_some_monster_id = v1 + 1;
- actor.uActorRadius = v3->uMonsterRadius;
- actor.uActorHeight = v3->uMonsterHeight;
- actor.uMovementSpeed = v3->uMovementSpeed;
- v5 = pParty->vPosition;
- Vec3_int_::Rotate(200, pParty->sRotationY, 0, v5, &pOut.x, &pOut.z, &pOut.y);
+ actor.uActorRadius = pMonsterList->pMonsters[v1].uMonsterRadius;
+ actor.uActorHeight = pMonsterList->pMonsters[v1].uMonsterHeight;
+ actor.uMovementSpeed = pMonsterList->pMonsters[v1].uMovementSpeed;
+
+ Vec3_int_::Rotate(200, pParty->sRotationY, 0, pParty->vPosition, &pOut.x, &pOut.z, &pOut.y);
actor.vInitialPosition.x = pOut.x;
actor.vPosition.x = pOut.x;
actor.uTetherDistance = 256;
@@ -5033,9 +4977,8 @@
dword_5C6DF8 = 0;
v6 = uNumActors++;
}
- v7 = &pActors[v6];
- memcpy(v7, &actor, 0x344u);
- v7->PrepareSprites(1);
+ memcpy(&pActors[v6], &actor, sizeof(Actor));
+ pActors[v6].PrepareSprites(1);
result = 1;
}
return result;
@@ -5046,163 +4989,99 @@
//----- (0044FA4C) --------------------------------------------------------
signed int __fastcall sub_44FA4C_spawn_light_elemental(int a1, int a2, int a3)
{
- signed int v3; // ecx@6
- Actor *v4; // edx@7
signed int result; // eax@13
- Actor *v6; // esi@16
- char *v7; // ebx@16
- MonsterDesc *v8; // edi@16
- unsigned __int16 v9; // ax@16
int v10; // ebx@16
- //int v11; // edi@16
- //int v12; // eax@16
- //int v13; // ecx@16
- //int v14; // ebx@16
const char *v15; // [sp-4h] [bp-24h]@2
- //unsigned __int16 v16; // [sp+0h] [bp-20h]@1
- //int v17; // [sp+4h] [bp-1Ch]@1
unsigned int uFaceID; // [sp+8h] [bp-18h]@16
int v19; // [sp+Ch] [bp-14h]@16
size_t v20; // [sp+10h] [bp-10h]@6
int v21; // [sp+14h] [bp-Ch]@14
- //int v22; // [sp+18h] [bp-8h]@14
unsigned int v23; // [sp+1Ch] [bp-4h]@6
- //v16 = a2;
- //v17 = a1;
if ( a2 == 4 )
- {
v15 = "Elemental Light C";
- }
else if ( a2 == 3 )
v15 = "Elemental Light B";
else
v15 = "Elemental Light A";
v23 = pMonsterList->GetMonsterIDByName(v15);
- v3 = 0;
- v20 = uNumActors;
- if ( (signed int)uNumActors > 0 )
+ v20 = 0;
+ for ( v20; v20 < uNumActors; v20++ )
{
- v4 = pActors.data();//[0].uAIState;
- while ( v4->uAIState != Removed )
- {
- ++v3;
- ++v4;
- if ( v3 >= (signed int)uNumActors )
- break;
- }
- if( v3 < (signed int)uNumActors )
- v20 = v3;
+ if ( pActors[v20].uAIState == Removed )
+ break;
}
- if ( v20 != uNumActors || (result = uNumActors + 1, (signed int)(uNumActors + 1) < 500) )
+
+ result = uNumActors + 1;
+ if ( v20 != uNumActors || result < 500 )
{
v21 = 0;
- //v22 = pParty->vPosition.z;
if ( uCurrentlyLoadedLevelType == LEVEL_Indoor )
v21 = pIndoor->GetSector(pParty->vPosition.x, pParty->vPosition.y, pParty->vPosition.z);
- v6 = &pActors[v20];
- v7 = (char *)&pMonsterStats->pInfos[v23 + 1];
v19 = (((uCurrentlyLoadedLevelType != LEVEL_Outdoor) - 1) & 0x40) + 64;
- v6->Reset();
- v8 = &pMonsterList->pMonsters[v23];
- strcpy(v6->pActorName, *(const char **)v7);
- v6->sCurrentHP = *((short *)v7 + 32);
- memcpy(&v6->pMonsterInfo, v7, 0x58u);
- v6->word_000086_some_monster_id = v23 + 1;
- v6->uActorRadius = v8->uMonsterRadius;
- v6->uActorHeight = v8->uMonsterHeight;
- v9 = v8->uMovementSpeed;
- v6->pMonsterInfo.uTreasureDiceRolls = 0;
- v6->pMonsterInfo.uTreasureType = 0;
- v6->pMonsterInfo.uExp = 0;
- v6->uMovementSpeed = v9;
+ pActors[v20].Reset();
+ strcpy(pActors[v20].pActorName, pMonsterStats->pInfos[v23 + 1].pName);
+ pActors[v20].sCurrentHP = pMonsterStats->pInfos[v23 + 1].uHP;
+ memcpy(&pActors[v20].pMonsterInfo, &pMonsterStats->pInfos[v23 + 1], sizeof(MonsterInfo));
+ pActors[v20].word_000086_some_monster_id = v23 + 1;
+ pActors[v20].uActorRadius = pMonsterList->pMonsters[v23].uMonsterRadius;
+ pActors[v20].uActorHeight = pMonsterList->pMonsters[v23].uMonsterHeight;
+ pActors[v20].pMonsterInfo.uTreasureDiceRolls = 0;
+ pActors[v20].pMonsterInfo.uTreasureType = 0;
+ pActors[v20].pMonsterInfo.uExp = 0;
+ pActors[v20].uMovementSpeed = pMonsterList->pMonsters[v23].uMovementSpeed;
v10 = rand() % 2048;
- //v11 = pParty->vPosition.x + fixpoint_mul(stru_5C6E00->Cos(v10), v19);
- uFaceID = stru_5C6E00->Sin(v10);
- //v12 = pParty->vPosition.y;
- //v13 = fixpoint_mul(uFaceID, v19);
- //v14 = pParty->vPosition.y + fixpoint_mul(uFaceID, v19);
- //LOWORD(v12) = v22;
- v6->vInitialPosition.x = pParty->vPosition.x + fixpoint_mul(stru_5C6E00->Cos(v10), v19);
- v6->vPosition.x = v6->vInitialPosition.x;
- v6->vInitialPosition.y = pParty->vPosition.y + fixpoint_mul(uFaceID, v19);
- v6->vPosition.y = v6->vInitialPosition.y;
- v6->vInitialPosition.z = pParty->vPosition.z;
- v6->vPosition.z = v6->vInitialPosition.z;
- //LOWORD(v12) = v21;
- v6->uTetherDistance = 256;
- v6->uSectorID = v21;
- v6->PrepareSprites(0);
- v6->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Friendly;
- v6->uAlly = 9999;
- v6->uGroup = 0;
- v6->uCurrentActionTime = 0;
- v6->uAIState = Summoned;
- v6->uCurrentActionLength = 256;
- v6->UpdateAnimation();
+ pActors[v20].vInitialPosition.x = pParty->vPosition.x + fixpoint_mul(stru_5C6E00->Cos(v10), v19);
+ pActors[v20].vPosition.x = pActors[v20].vInitialPosition.x;
+ pActors[v20].vInitialPosition.y = pParty->vPosition.y + fixpoint_mul(stru_5C6E00->Sin(v10), v19);
+ pActors[v20].vPosition.y = pActors[v20].vInitialPosition.y;
+ pActors[v20].vInitialPosition.z = pParty->vPosition.z;
+ pActors[v20].vPosition.z = pActors[v20].vInitialPosition.z;
+ pActors[v20].uTetherDistance = 256;
+ pActors[v20].uSectorID = v21;
+ pActors[v20].PrepareSprites(0);
+ pActors[v20].pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Friendly;
+ pActors[v20].uAlly = 9999;
+ pActors[v20].uGroup = 0;
+ pActors[v20].uCurrentActionTime = 0;
+ pActors[v20].uAIState = Summoned;
+ pActors[v20].uCurrentActionLength = 256;
+ pActors[v20].UpdateAnimation();
+
+ result = pIndoor->GetSector(pActors[v20].vPosition.x, pActors[v20].vPosition.y, pActors[v20].vPosition.z);
if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor
- || (result = pIndoor->GetSector(v6->vPosition.x, v6->vPosition.y, v6->vPosition.z),
- result == v21)
- && (result = BLV_GetFloorLevel(v6->vPosition.x, v6->vPosition.y, v6->vPosition.z, result, &uFaceID), result != -30000)
+ || result == v21
+ && (result = BLV_GetFloorLevel(pActors[v20].vPosition.x, pActors[v20].vPosition.y, pActors[v20].vPosition.z, result, &uFaceID), result != -30000)
&& (result = abs(result - pParty->vPosition.z), result <= 1024) )
{
if ( v20 == uNumActors )
++uNumActors;
- v6->uSummonerID = PID(OBJECT_Player, a1);
- result = v6->pActorBuffs[ACTOR_BUFF_SUMMONED].Apply(pParty->uTimePlayed + (a3 * 128) / 30.0f,
- a2,
- a1,
- 0,
- 0);
+ pActors[v20].uSummonerID = PID(OBJECT_Player, a1);
+ result = pActors[v20].pActorBuffs[ACTOR_BUFF_SUMMONED].Apply(pParty->uTimePlayed + (a3 * 128) / 30.0f, a2, a1, 0, 0);
}
}
return result;
}
-
//----- (0044F57C) --------------------------------------------------------
void SpawnEncounter(MapInfo *pMapInfo, SpawnPointMM7 *spawn, int a3, int a4, int a5)
{
- //MapInfo *v5; // esi@1
- //SpawnPointMM7 *v6; // ebx@1
int v7; // eax@2
char v8; // zf@5
- // int v9; // edi@9
- // int v10; // eax@9
- // int v11; // ecx@9
int v12; // edx@9
- // int v13; // eax@9
- // int v14; // eax@14
- // int v15; // ecx@14
- // int v16; // eax@19
- // int v17; // ecx@19
int v18; // esi@31
- //int pPosX; // ecx@32
- //int v20; // edx@32
- //int v21; // eax@32
Actor *pMonster; // esi@35
int v23; // edx@36
signed int v24; // edi@36
int v25; // ecx@36
- // unsigned __int16 v26; // ax@47
MonsterDesc *v27; // edi@48
signed int v28; // eax@48
- // __int16 v29; // cx@50
- // __int16 v30; // ax@50
- // __int16 v31; // ax@50
int v32; // eax@50
- // int v33; // edi@50
- // int v34; // eax@50
- // int v35; // eax@50
- // int v36; // eax@50
int v37; // eax@51
int v38; // eax@52
int v39; // edi@52
std::string v40; // [sp-18h] [bp-100h]@60
- // void *v41; // [sp-14h] [bp-FCh]@50
- //void *v42; // [sp-10h] [bp-F8h]@50
- //size_t v43; // [sp-Ch] [bp-F4h]@50
const char *v44; // [sp-8h] [bp-F0h]@13
char *pTexture; // [sp-4h] [bp-ECh]@9
char Str[32]; // [sp+Ch] [bp-DCh]@60
@@ -5355,9 +5234,7 @@
v24 = 2;
}
else
- {
v24 = 1;
- }
if ( v24 == 1 )
{
pTexture = Source;
diff -r 6eb63623cbe8 -r 48dbf99c0f7f Build/Visual Studio 2010/World of Might and Magic.vcxproj
--- a/Build/Visual Studio 2010/World of Might and Magic.vcxproj Mon Jun 02 12:31:28 2014 +0600
+++ b/Build/Visual Studio 2010/World of Might and Magic.vcxproj Mon Jun 09 16:26:07 2014 +0600
@@ -227,6 +227,7 @@
+
@@ -479,6 +480,7 @@
+
diff -r 6eb63623cbe8 -r 48dbf99c0f7f Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters
--- a/Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters Mon Jun 02 12:31:28 2014 +0600
+++ b/Build/Visual Studio 2010/World of Might and Magic.vcxproj.filters Mon Jun 09 16:26:07 2014 +0600
@@ -530,6 +530,9 @@
+
+ UI
+
@@ -959,6 +962,9 @@
+
+ UI
+
diff -r 6eb63623cbe8 -r 48dbf99c0f7f Items.cpp
--- a/Items.cpp Mon Jun 02 12:31:28 2014 +0600
+++ b/Items.cpp Mon Jun 09 16:26:07 2014 +0600
@@ -1199,7 +1199,7 @@
}
}
- v46 = rand()%spc_sum+1;
+ v46 = rand()%spc_sum+1;//случайные значения от 1 до spc_sum
j=0;
v45 = 0;
while (v45= (unsigned int)(result - 1) )
++result;
return result;
diff -r 6eb63623cbe8 -r 48dbf99c0f7f Texture.cpp
--- a/Texture.cpp Mon Jun 02 12:31:28 2014 +0600
+++ b/Texture.cpp Mon Jun 09 16:26:07 2014 +0600
@@ -283,22 +283,22 @@
//----- (0044E0ED) --------------------------------------------------------
void TextureFrameTable::LoadAnimationSequenceAndPalettes( signed int uIconID )
- {
- TextureFrameTable *v3; // ebx@1
+{
+ //TextureFrameTable *v3; // ebx@1
unsigned int i; // edi@3
- v3 = this;
+ //v3 = this;
if ( (uIconID <= this->sNumTextures) && uIconID >= 0 )
{
for ( i = uIconID; ; ++i )
{
- v3->pTextures[i].uTextureID = pBitmaps_LOD->LoadTexture(v3->pTextures[i].pTextureName, TEXTURE_DEFAULT);
+ this->pTextures[i].uTextureID = pBitmaps_LOD->LoadTexture(this->pTextures[i].pTextureName, TEXTURE_DEFAULT);
- if (v3->pTextures[i].uTextureID != -1)
- pBitmaps_LOD->pTextures[v3->pTextures[i].uTextureID].palette_id2 = pPaletteManager->LoadPalette(pBitmaps_LOD->pTextures[v3->pTextures[i].uTextureID].palette_id1);
+ if (this->pTextures[i].uTextureID != -1)
+ pBitmaps_LOD->pTextures[this->pTextures[i].uTextureID].palette_id2 = pPaletteManager->LoadPalette(pBitmaps_LOD->pTextures[this->pTextures[i].uTextureID].palette_id1);
//result = (unsigned int)v3->pTextures;
//if ( !(*(char *)(result + i * 20 + 18) & 1) )
- if( v3->pTextures[i].uFlags & 1)
+ if( this->pTextures[i].uFlags & 1)
break;
}
}
diff -r 6eb63623cbe8 -r 48dbf99c0f7f UI/UICharacter.cpp
--- a/UI/UICharacter.cpp Mon Jun 02 12:31:28 2014 +0600
+++ b/UI/UICharacter.cpp Mon Jun 09 16:26:07 2014 +0600
@@ -2235,7 +2235,7 @@
if (full_num_items_in_book>0)
{
for (int i = 0; i< full_num_items_in_book; ++i)
- achieved_awards[full_num_items_in_book+i] = (AwardType)(rand()%16);
+ achieved_awards[full_num_items_in_book+i] = (AwardType)(rand()%16);//случайные значения от 0 до 15
for (int i = 1; i< full_num_items_in_book; ++i)
{
for (int j = i; j< full_num_items_in_book; ++j)
diff -r 6eb63623cbe8 -r 48dbf99c0f7f Vis.cpp
--- a/Vis.cpp Mon Jun 02 12:31:28 2014 +0600
+++ b/Vis.cpp Mon Jun 09 16:26:07 2014 +0600
@@ -411,13 +411,7 @@
//----- (004C1944) --------------------------------------------------------
int Vis::PickClosestActor(int object_id, unsigned int pick_depth, int a4, int a5, int a6)
{
- //float v6; // ST00_4@3
- //int result; // eax@4
Vis_SelectionFilter v8; // [sp+18h] [bp-20h]@3
- //__int64 v9; // [sp+2Ch] [bp-Ch]@3
- //Vis *v14; // [sp+34h] [bp-4h]@1
-
- //v14 = this;
static Vis_SelectionList Vis_static_sub_4C1944_stru_F8BDE8;
@@ -429,10 +423,7 @@
Vis_static_sub_4C1944_stru_F8BDE8.uNumPointers = 0;
PickBillboards_Keyboard(pick_depth, &Vis_static_sub_4C1944_stru_F8BDE8, &v8);
Vis_static_sub_4C1944_stru_F8BDE8.create_object_pointers(Vis_SelectionList::Unique);
- sort_object_pointers(
- Vis_static_sub_4C1944_stru_F8BDE8.object_pointers,
- 0,
- Vis_static_sub_4C1944_stru_F8BDE8.uNumPointers - 1);
+ sort_object_pointers(Vis_static_sub_4C1944_stru_F8BDE8.object_pointers, 0, Vis_static_sub_4C1944_stru_F8BDE8.uNumPointers - 1);
if (!Vis_static_sub_4C1944_stru_F8BDE8.uNumPointers)
return -1;
@@ -1290,12 +1281,12 @@
{
//stru157 *v3; // esi@1
//int result; // eax@1
- int v5; // edx@2
+ //int v5; // edx@2
//int v6; // ecx@2
//char v7; // zf@3
- int v8; // esi@5
+ //int v8; // esi@5
// std::string *v9; // ecx@7
- Actor *v10; // edi@18
+ //Actor *v10; // edi@18
//const char *v12; // [sp-20h] [bp-2Ch]@7
// int v13; // [sp-1Ch] [bp-28h]@7
//std::string v14; // [sp-18h] [bp-24h]@7
@@ -1309,21 +1300,21 @@
case VisObjectType_Sprite:
{
- v5 = filter->select_flags;
+ //v5 = filter->select_flags;
int object_idx = PID_ID(pBillboardRenderList[pRenderer->pBillboardRenderListD3D[(int)uD3DBillboardIdx_or_pBLVFace_or_pODMFace].sParentBillboardID].object_pid);
int object_type = PID_TYPE(pBillboardRenderList[pRenderer->pBillboardRenderListD3D[(int)uD3DBillboardIdx_or_pBLVFace_or_pODMFace].sParentBillboardID].object_pid);
- if ( v5 & 2 )
+ if ( filter->select_flags & 2 )
{
if (object_type == filter->object_id)
return false;
return true;
}
- if ( v5 & 4 )
+ if ( filter->select_flags & 4 )
{
- v8 = filter->object_id;
+ //v8 = filter->object_id;
if ( object_type != filter->object_id)
return true;
- if (v8 != OBJECT_Decoration)
+ if (filter->object_id != OBJECT_Decoration)
{
MessageBoxA(nullptr, "Unsupported \"exclusion if no event\" type in CVis::is_part_of_selection", "E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Vis.cpp:207", 0);
return true;
@@ -1340,16 +1331,16 @@
return true;
}
- v10 = &pActors[object_idx];
- int result = 1 << LOBYTE(v10->uAIState);
+ //v10 = &pActors[object_idx];
+ int result = 1 << LOBYTE(pActors[object_idx].uAIState);
if ( result & filter->no_at_ai_state
|| !(result & filter->at_ai_state)
- || v5 & 8 && (result = MonsterStats::BelongsToSupertype(v10->pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD)) == 0 )
+ || filter->select_flags & 8 && (result = MonsterStats::BelongsToSupertype(pActors[object_idx].pMonsterInfo.uID, MONSTER_SUPERTYPE_UNDEAD)) == 0 )
return false;
if ( !(filter->select_flags & 1) )
return true;
- result = v10->GetActorsRelation(nullptr);
+ result = pActors[object_idx].GetActorsRelation(nullptr);
if (result == 0)
return false;
return true;