# HG changeset patch # User Ritor1 # Date 1390154542 -21600 # Node ID 5b27c035a241adbb68a0efa1c8382e914881bf51 # Parent 7cd99cb129118d1073c114261e57b043244f2fa2 small cleaning diff -r 7cd99cb12911 -r 5b27c035a241 Actor.cpp --- a/Actor.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/Actor.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -3919,11 +3919,8 @@ Actor::AddBloodsplatOnDamageOverlay(uActorID_Monster, 1, v61); } //----- (004BBF61) -------------------------------------------------------- -void Actor::_4BBF61_summon_actor( int a1, __int16 x, int y, int z ) +void Actor::Arena_summon_actor( int monster_id, __int16 x, int y, int z ) { - Actor *v7; // esi@5 - //MonsterInfo *v9; // edi@5 - //MonsterDesc *v10; // ebx@5 int v12; // ebx@7 int v13; // eax@8 __int16 v16; // [sp+10h] [bp-4h]@3 @@ -3933,43 +3930,40 @@ v16 = 0; if ( uCurrentlyLoadedLevelType == LEVEL_Indoor ) v16 = pIndoor->GetSector(x, y, z); - v7 = &pActors[uNumActors]; - v7->Reset(); - //v9 = &pMonsterStats->pInfos[a1]; - //v10 = &pMonsterList->pMonsters[a1 - 1]; - strcpy(v7->pActorName, pMonsterStats->pInfos[a1].pName); - v7->sCurrentHP = LOWORD(pMonsterStats->pInfos[a1].uHP); - memcpy(&v7->pMonsterInfo, &pMonsterStats->pInfos[a1], 0x58u); - v7->word_000086_some_monster_id = a1; - v7->uActorRadius = pMonsterList->pMonsters[a1 - 1].uMonsterRadius; - v7->uActorHeight = pMonsterList->pMonsters[a1 - 1].uMonsterHeight; - v7->uMovementSpeed = pMonsterList->pMonsters[a1 - 1].uMovementSpeed; - v7->vInitialPosition.x = x; - v7->vPosition.x = x; - v7->uAttributes |= 80000; - v7->pMonsterInfo.uTreasureType = 0; - v7->pMonsterInfo.uTreasureLevel = 0; - v7->pMonsterInfo.uTreasureDiceSides = 0; - v7->pMonsterInfo.uTreasureDiceRolls = 0; - v7->pMonsterInfo.uTreasureDropChance = 0; - v7->vInitialPosition.y = y; - v7->vPosition.y = y; - v7->vInitialPosition.z = z; - v7->vPosition.z = z; - v7->uTetherDistance = 256; - v7->uSectorID = v16; - v7->uGroup = 1; - v7->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Long; - v7->PrepareSprites(0); - for ( int i = 0; i < 4; i++) - pSoundList->LoadSound(pMonsterList->pMonsters[a1 - 1].pSoundSampleIDs[i], 0); - //v12 = 0; - //do//бесконечный цикл - //{ - //LOWORD(v13) = pSoundList->LoadSound(v12 + word_4EE088_sound_ids[pMonsterStats->pInfos[a1].uSpell1ID], 1); - //v12++; - //} - //while ( v13 ); + pActors[uNumActors].Reset(); + strcpy(pActors[uNumActors].pActorName, pMonsterStats->pInfos[monster_id].pName); + pActors[uNumActors].sCurrentHP = LOWORD(pMonsterStats->pInfos[monster_id].uHP); + memcpy(&pActors[uNumActors].pMonsterInfo, &pMonsterStats->pInfos[monster_id], 0x58u); + pActors[uNumActors].word_000086_some_monster_id = monster_id; + pActors[uNumActors].uActorRadius = pMonsterList->pMonsters[monster_id - 1].uMonsterRadius; + pActors[uNumActors].uActorHeight = pMonsterList->pMonsters[monster_id - 1].uMonsterHeight; + pActors[uNumActors].uMovementSpeed = pMonsterList->pMonsters[monster_id - 1].uMovementSpeed; + pActors[uNumActors].vInitialPosition.x = x; + pActors[uNumActors].vPosition.x = x; + pActors[uNumActors].uAttributes |= 80000; + pActors[uNumActors].pMonsterInfo.uTreasureType = 0; + pActors[uNumActors].pMonsterInfo.uTreasureLevel = 0; + pActors[uNumActors].pMonsterInfo.uTreasureDiceSides = 0; + pActors[uNumActors].pMonsterInfo.uTreasureDiceRolls = 0; + pActors[uNumActors].pMonsterInfo.uTreasureDropChance = 0; + pActors[uNumActors].vInitialPosition.y = y; + pActors[uNumActors].vPosition.y = y; + pActors[uNumActors].vInitialPosition.z = z; + pActors[uNumActors].vPosition.z = z; + pActors[uNumActors].uTetherDistance = 256; + pActors[uNumActors].uSectorID = v16; + pActors[uNumActors].uGroup = 1; + pActors[uNumActors].pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Long; + pActors[uNumActors].PrepareSprites(0); + for ( int i = 0; i < 4; i++) + pSoundList->LoadSound(pMonsterList->pMonsters[monster_id - 1].pSoundSampleIDs[i], 0); + v12 = 0; + do + { + v13 = pSoundList->LoadSound(v12 + word_4EE088_sound_ids[pMonsterStats->pInfos[monster_id].uSpell1ID], 1); + v12++; + } + while ( v13 ); ++uNumActors; } } diff -r 7cd99cb12911 -r 5b27c035a241 Actor.h --- a/Actor.h Fri Jan 17 22:44:57 2014 +0600 +++ b/Actor.h Mon Jan 20 00:02:22 2014 +0600 @@ -248,7 +248,7 @@ static void AddBloodsplatOnDamageOverlay(unsigned int uActorID, int a2, signed int a3); static bool _46DF1A_collide_against_actor(int a1, int a2); - static void _4BBF61_summon_actor(int a1, __int16 x, int y, int z); // idb + static void Arena_summon_actor(int monster_id, __int16 x, int y, int z); void LootActor(); diff -r 7cd99cb12911 -r 5b27c035a241 Outdoor.cpp --- a/Outdoor.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/Outdoor.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -365,7 +365,6 @@ //----- (0048902E) -------------------------------------------------------- bool OutdoorLocation::GetTravelDestination(signed int sPartyX, signed int sPartyZ, char *pOut, signed int a5) { - OutdoorLocation *v5; // esi@1 char *v6; // eax@3 int v7; // eax@3 //int v8; // edx@3 @@ -373,46 +372,27 @@ //int v10; // esi@23 signed int v11; // eax@23 //int v12; // ST14_4@25 - signed int v14; // [sp-4h] [bp-84h]@6 + //signed int v14; // [sp-4h] [bp-84h]@6 char Str[140]; // [sp+8h] [bp-78h]@3 //int a5a; // [sp+94h] [bp+14h]@3 - OutdoorLocation* Source = this; - - v5 = Source; - if ( a5 < 10 - || strlen(Source->pLevelFilename) != 9 - || (strcpy(Str, v5->pLevelFilename), - _strlwr(Str), - v6 = strtok(Str, "out"), - v6[2] = 0, - v7 = atoi(v6), - //v8 = v7, - //a5a = v7, - v7 < 1) - || v7 > 15 ) - return 0; - if ( sPartyX < -22528 ) - { - v14 = 4; -LABEL_7: - v9 = v14; - goto LABEL_14; - } - if ( sPartyX > 22528 ) - { - v14 = 3; - goto LABEL_7; - } - if ( sPartyZ < -22528 ) - { - v14 = 2; - goto LABEL_7; - } - if ( sPartyZ <= 22528 ) + strcpy(Str, this->pLevelFilename);//настоящая локация + _strlwr(Str); + v6 = strtok(Str, "out"); + v6[2] = 0; + v7 = atoi(v6); + if ( a5 < 10 || strlen(this->pLevelFilename) != 9 || v7 < 1 || v7 > 15 ) //длина .odm и количество локаций return 0; v9 = 1; -LABEL_14: + if ( sPartyX < -22528 )//граница карты + v9 = 4; + else if ( sPartyX > 22528 ) + v9 = 3; + else if ( sPartyZ < -22528 ) + v9 = 2; + else if ( sPartyZ <= 22528 ) + return 0; + if ( v7 == 14 ) { if ( v9 == 4 ) // to & from Shoals @@ -425,7 +405,6 @@ uDefaultTravelTime_ByFoot = 1; strcpy(pOut, "out15.odm"); uLevel_StartingPointType = MapStartPoint_East; -LABEL_18: LOWORD(pParty->uFlags) &= 0xFD7Bu; return 1; } @@ -437,9 +416,10 @@ if ( v7 == 15 && v9 == 3 ) { uDefaultTravelTime_ByFoot = 1; - strcpy(pOut, "out14.odm"); + strcpy(pOut, "out14.odm");//Авли uLevel_StartingPointType = MapStartPoint_West; - goto LABEL_18; + LOWORD(pParty->uFlags) &= 0xFD7Bu; + return 1; } } //v10 = v9 + 4 * v7; @@ -452,7 +432,7 @@ uDefaultTravelTime_ByFoot = foot_travel_times[v7 - 1][v9 - 1]; uLevel_StartingPointType = foot_travel_arrival_points[v7 - 1][v9 - 1]; - sprintf(pOut, "out%02d.odm", v11); + sprintf(pOut, "out%02d.odm", v11); //локация направления return 1; //} //return 0; @@ -463,92 +443,64 @@ //----- (0048917E) -------------------------------------------------------- void OutdoorLocation::MessWithLUN() { - OutdoorLocation *v1; // esi@1 - unsigned int *v2; // ebp@1 - unsigned int v3; // eax@1 - unsigned __int16 v4; // ax@1 - signed int v5; // ebx@1 - - v1 = this; - v2 = this->pSpriteIDs_LUN; this->pSpriteIDs_LUN[0] = -1; + this->pSpriteIDs_LUN[1] = 0; this->pSpriteIDs_LUN[2] = pSpriteFrameTable->FastFindSprite("LUN1-4"); - v1->pSpriteIDs_LUN[4] = pSpriteFrameTable->FastFindSprite("LUN1-2"); - v1->pSpriteIDs_LUN[6] = pSpriteFrameTable->FastFindSprite("LUN3-4"); - v1->uSpriteID_LUNFULL = pSpriteFrameTable->FastFindSprite("LUNFULL"); - v1->uSpriteID_LUN3_4_cp = pSpriteFrameTable->FastFindSprite("LUN3-4"); - v1->uSpriteID_LUN1_2_cp = pSpriteFrameTable->FastFindSprite("LUN1-2"); - v3 = pSpriteFrameTable->FastFindSprite("LUN1-4"); - v1->field_D60 = -1; - v1->uSpriteID_LUN1_4_cp = v3; - v1->field_CF0 = 4; - v1->field_CF8 = 4; - v1->field_D00 = 4; - LOWORD(v3) = *(short *)v2; - v1->pSpriteIDs_LUN[1] = 0; - v1->pSpriteIDs_LUN[3] = 0; - v1->pSpriteIDs_LUN[5] = 0; - v1->pSpriteIDs_LUN[7] = 0; - v1->field_CE8 = 0; - LOWORD(v1->field_D3C) = v3; - v1->field_D40 = 0; - v1->field_D44 = 0; - v1->field_D48 = 0; - v1->field_D4C = 131072; - v1->field_D5C = 0; - v1->field_D64 = 0; - v4 = pSpriteFrameTable->FastFindSprite("LUN-SUN"); - v1->field_D28 = -1; - v1->field_D08 = 0; - v1->field_D0C = 0; - v1->field_D10 = 0; - v1->field_D24 = 0; - v1->field_D2C = 0; - v1->uSpriteID_LUN_SUN = v4; - v1->field_D14 = -131072; - v5 = 8; - do - { - pSpriteFrameTable->InitializeSprite(*v2); - v2 += 2; - --v5; - } - while ( v5 ); - pSpriteFrameTable->InitializeSprite(v1->uSpriteID_LUN_SUN); + this->pSpriteIDs_LUN[3] = 0; + this->pSpriteIDs_LUN[4] = pSpriteFrameTable->FastFindSprite("LUN1-2"); + this->pSpriteIDs_LUN[5] = 0; + this->pSpriteIDs_LUN[6] = pSpriteFrameTable->FastFindSprite("LUN3-4"); + this->pSpriteIDs_LUN[7] = 0; + this->uSpriteID_LUNFULL = pSpriteFrameTable->FastFindSprite("LUNFULL"); + this->uSpriteID_LUN1_2_cp = pSpriteFrameTable->FastFindSprite("LUN1-2"); + this->uSpriteID_LUN1_4_cp = pSpriteFrameTable->FastFindSprite("LUN1-4"); + this->uSpriteID_LUN3_4_cp = pSpriteFrameTable->FastFindSprite("LUN3-4"); + this->field_D60 = -1; + this->field_CF0 = 4; + this->field_CF8 = 4; + this->field_D00 = 4; + this->field_CE8 = 0; + this->field_D3C = (int)this->pSpriteIDs_LUN; + this->field_D40 = 0; + this->field_D44 = 0; + this->field_D48 = 0; + this->field_D4C = 131072; + this->field_D5C = 0; + this->field_D64 = 0; + this->field_D28 = -1; + this->field_D08 = 0; + this->field_D0C = 0; + this->field_D10 = 0; + this->field_D24 = 0; + this->field_D2C = 0; + this->uSpriteID_LUN_SUN = pSpriteFrameTable->FastFindSprite("LUN-SUN"); + this->field_D14 = -131072; + for ( uint i = 0; i < 8; i++ ) + pSpriteFrameTable->InitializeSprite(this->pSpriteIDs_LUN[i]);//v2 += 2; + pSpriteFrameTable->InitializeSprite(this->uSpriteID_LUN_SUN); } //----- (004892E6) -------------------------------------------------------- void OutdoorLocation::UpdateSunlightVectors() { - //unsigned int result; // eax@1 - OutdoorLocation *v2; // esi@1 unsigned int v3; // edi@3 - //int v4; // ebx@3 - int v5; // eax@3 - //int v6; // eax@3 - //int v7; // ecx@3 double v8; // st7@4 - v2 = this; if ( pParty->uCurrentHour >= 5 && pParty->uCurrentHour < 21 ) { v3 = pParty->uCurrentMinute + 60 * (pParty->uCurrentHour - 5); - //v4 = (signed int)(v3 * stru_5C6E00->uIntegerPi) / 960; - v5 = stru_5C6E00->Cos((signed int)(v3 * stru_5C6E00->uIntegerPi) / 960); - v2->inv_sunlight_y = 0; - v2->inv_sunlight_x = v5; - //v6 = stru_5C6E00->Sin(v4); - //v7 = v2->field_D18; - v2->inv_sunlight_z = stru_5C6E00->Sin((signed int)(v3 * stru_5C6E00->uIntegerPi) / 960); - v2->vSunlight.x = -v2->inv_sunlight_x; - v2->vSunlight.y = -v2->inv_sunlight_y; - v2->vSunlight.z = -v2->inv_sunlight_z; + this->inv_sunlight_y = 0; + this->inv_sunlight_x = stru_5C6E00->Cos((signed int)(v3 * stru_5C6E00->uIntegerPi) / 960); + this->inv_sunlight_z = stru_5C6E00->Sin((signed int)(v3 * stru_5C6E00->uIntegerPi) / 960); + this->vSunlight.x = -this->inv_sunlight_x; + this->vSunlight.y = -this->inv_sunlight_y; + this->vSunlight.z = -this->inv_sunlight_z; if ( (signed int)v3 >= 480 ) v8 = (double)(signed int)(960 - v3); else v8 = (double)(signed int)v3; - v2->max_terrain_dimming_level = (signed __int64)(20.0 - v8 / 480.0 * 20.0); - v2->uLastSunlightUpdateMinute = pParty->uCurrentMinute; + this->max_terrain_dimming_level = (signed __int64)(20.0 - v8 / 480.0 * 20.0); + this->uLastSunlightUpdateMinute = pParty->uCurrentMinute; } } @@ -633,10 +585,8 @@ } //----- (00482170) -------------------------------------------------------- -bool ODMFace::IsBackfaceCulled(ODMFace *a1, RenderVertexSoft *a2, struct Polygon *a3) +bool ODMFace::IsBackfaceCulled(RenderVertexSoft *a2, struct Polygon *polygon) { - struct Polygon *v3; // edi@1 - RenderVertexSoft *v4; // esi@1 unsigned int v5; // edx@1 RenderVertexSoft *v6; // ecx@2 double v7; // st7@5 @@ -645,7 +595,6 @@ double v10; // st6@9 double v11; // st5@9 double v12; // st4@9 - bool result; // eax@16 double v14; // ST2C_8@17 double v15; // ST20_8@17 double v16; // ST0C_8@17 @@ -667,26 +616,24 @@ float a3d; // [sp+48h] [bp+8h]@17 float a3e; // [sp+48h] [bp+8h]@17 - v3 = a3; - v4 = a2; - v5 = a3->uNumVertices; + v5 = polygon->uNumVertices; if ( (signed int)v5 < 3 ) - goto LABEL_20; - v6 = &v4[v5 - 1]; - if ( v4->vWorldPosition.z == v4[1].vWorldPosition.z && v4[1].vWorldPosition.z == v6->vWorldPosition.z ) - *(int *)&a3->flags |= 0x10u; - v19 = v4[1].vWorldViewPosition.x - v4->vWorldViewPosition.x; - v18 = v4[1].vWorldViewPosition.y - v4->vWorldViewPosition.y; - v20 = v4[1].vWorldViewPosition.z - v4->vWorldViewPosition.z; - v21 = v6->vWorldViewPosition.x - v4->vWorldViewPosition.x; - v22 = v6->vWorldViewPosition.y - v4->vWorldViewPosition.y; - v23 = v6->vWorldViewPosition.z - v4->vWorldViewPosition.z; - v28 = v4[1].vWorldPosition.x - v4->vWorldPosition.x; - v27 = v4[1].vWorldPosition.y - v4->vWorldPosition.y; - a3a = v4[1].vWorldPosition.z - v4->vWorldPosition.z; - v7 = v6->vWorldPosition.x - v4->vWorldPosition.x; - v8 = v6->vWorldPosition.y - v4->vWorldPosition.y; - v9 = v6->vWorldPosition.z - v4->vWorldPosition.z; + return false; + v6 = &a2[v5 - 1]; + if ( a2->vWorldPosition.z == a2[1].vWorldPosition.z && a2[1].vWorldPosition.z == v6->vWorldPosition.z ) + *(int *)&polygon->flags |= 0x10u; + v19 = a2[1].vWorldViewPosition.x - a2->vWorldViewPosition.x; + v18 = a2[1].vWorldViewPosition.y - a2->vWorldViewPosition.y; + v20 = a2[1].vWorldViewPosition.z - a2->vWorldViewPosition.z; + v21 = v6->vWorldViewPosition.x - a2->vWorldViewPosition.x; + v22 = v6->vWorldViewPosition.y - a2->vWorldViewPosition.y; + v23 = v6->vWorldViewPosition.z - a2->vWorldViewPosition.z; + v28 = a2[1].vWorldPosition.x - a2->vWorldPosition.x; + v27 = a2[1].vWorldPosition.y - a2->vWorldPosition.y; + a3a = a2[1].vWorldPosition.z - a2->vWorldPosition.z; + v7 = v6->vWorldPosition.x - a2->vWorldPosition.x; + v8 = v6->vWorldPosition.y - a2->vWorldPosition.y; + v9 = v6->vWorldPosition.z - a2->vWorldPosition.z; v26 = v27 * v9 - v8 * a3a; v24 = v7 * a3a - v9 * v28; v25 = v8 * v28 - v7 * v27; @@ -697,9 +644,9 @@ --v5; if ( (signed int)v5 < 2 ) break; - v10 = v6->vWorldPosition.x - v4->vWorldPosition.x; - v11 = v6->vWorldPosition.y - v4->vWorldPosition.y; - v12 = v6->vWorldPosition.z - v4->vWorldPosition.z; + v10 = v6->vWorldPosition.x - a2->vWorldPosition.x; + v11 = v6->vWorldPosition.y - a2->vWorldPosition.y; + v12 = v6->vWorldPosition.z - a2->vWorldPosition.z; v26 = v27 * v12 - v11 * a3a; v24 = v10 * a3a - v12 * v28; v25 = v11 * v28 - v10 * v27; @@ -709,37 +656,33 @@ break; --v6; } - v21 = v6->vWorldViewPosition.x - v4->vWorldViewPosition.x; - v22 = v6->vWorldViewPosition.y - v4->vWorldViewPosition.y; - v23 = v6->vWorldViewPosition.z - v4->vWorldViewPosition.z; + v21 = v6->vWorldViewPosition.x - a2->vWorldViewPosition.x; + v22 = v6->vWorldViewPosition.y - a2->vWorldViewPosition.y; + v23 = v6->vWorldViewPosition.z - a2->vWorldViewPosition.z; } - if ( ((double)pGame->pIndoorCameraD3D->vPartyPos.x - v4->vWorldPosition.x) * v26 - + ((double)pGame->pIndoorCameraD3D->vPartyPos.z - v4->vWorldPosition.z) * v25 - + ((double)pGame->pIndoorCameraD3D->vPartyPos.y - v4->vWorldPosition.y) * v24 > 0.0 ) + if ( ((double)pGame->pIndoorCameraD3D->vPartyPos.x - a2->vWorldPosition.x) * v26 + + ((double)pGame->pIndoorCameraD3D->vPartyPos.z - a2->vWorldPosition.z) * v25 + + ((double)pGame->pIndoorCameraD3D->vPartyPos.y - a2->vWorldPosition.y) * v24 > 0.0 ) { a3b = v23 * v18 - v22 * v20; v14 = a3b + 6.7553994e15; - v3->v_18.x = LODWORD(v14); + polygon->v_18.x = LODWORD(v14); a3c = v21 * v20 - v23 * v19; v15 = a3c + 6.7553994e15; - v3->v_18.y = LODWORD(v15); + polygon->v_18.y = LODWORD(v15); a3d = v22 * v19 - v21 * v18; v16 = a3d + 6.7553994e15; - v3->v_18.z = LODWORD(v16); - v3->_normalize_v_18(); - a3e = -((double)v3->v_18.x * v4->vWorldViewPosition.x) - - (double)v3->v_18.y * v4->vWorldViewPosition.y - - (double)v3->v_18.z * v4->vWorldViewPosition.z; + polygon->v_18.z = LODWORD(v16); + polygon->_normalize_v_18(); + a3e = -((double)polygon->v_18.x * a2->vWorldViewPosition.x) + - (double)polygon->v_18.y * a2->vWorldViewPosition.y + - (double)polygon->v_18.z * a2->vWorldViewPosition.z; v17 = a3e + 6.7553994e15; - v3->field_24 = LODWORD(v17); - result = 1; + polygon->field_24 = LODWORD(v17); + return true; } else - { -LABEL_20: - result = 0; - } - return result; + return false; } //----- (0047C7A9) -------------------------------------------------------- @@ -782,8 +725,7 @@ //----- (0047C80A) -------------------------------------------------------- void OutdoorLocationTerrain::FillDMap( int X, int Y, int W, int Z ) - { - OutdoorLocationTerrain *pOutLocTerrain; // ebx@1 +{ double v6; // st7@1 double v7; // st7@2 double v8; // st7@2 @@ -821,12 +763,11 @@ int v40; // [sp+18h] [bp-30h]@15 int v41; // [sp+1Ch] [bp-2Ch]@15 int v42; // [sp+20h] [bp-28h]@15 - OutdoorLocationTerrain *pOutLocTerrain2; // [sp+24h] [bp-24h]@1 int v44; // [sp+28h] [bp-20h]@21 float v45; // [sp+2Ch] [bp-1Ch]@1 float v46; // [sp+30h] [bp-18h]@1 float v47; // [sp+34h] [bp-14h]@1 - int v48; // [sp+38h] [bp-10h]@7 + //int v48; // [sp+38h] [bp-10h]@7 int v49; // [sp+3Ch] [bp-Ch]@10 int v50; // [sp+40h] [bp-8h]@9 float v51; // [sp+44h] [bp-4h]@15 @@ -839,9 +780,7 @@ v46 = -64.0; v47 = -64.0; - pOutLocTerrain = this; v45 = 64.0; - pOutLocTerrain2 = this; v6 = sqrt(12288.0); if ( v6 != 0.0 ) { @@ -865,39 +804,37 @@ W ^= X ^ W; v11 = W ^ v12; } - v13 = result - 1; - v48 = result - 1; + //v48 = result - 1; if ( result - 1 <= Z ) { v39 = v11 - 1; - do + for ( v13 = result - 1; v13 <= Z; v13++ ) { - v14 = v39; v50 = v39; if ( v39 <= W ) { result = (v39 - 63) << 9; v49 = (v39 - 63) << 9; - do + for ( v14 = v39; v14 <= W; v14++ ) { if ( v13 >= 0 && result >= -32256 && v13 <= 127 && result <= 32768 ) { - v15 = pOutLocTerrain->field_10; - v55 = v15; - pMapHeight = pOutLocTerrain->pHeightmap; - v17 = (int)(&pMapHeight[v13 * v15] + v14); + //v15 = pOutLocTerrain->field_10; + //v55 = pOutLocTerrain->field_10; + pMapHeight = this->pHeightmap; + v17 = (int)(&pMapHeight[v13 * this->field_10] + v14); v18 = -v13; v19 = (64 - v13) << 9; v20 = 32 * *(char *)v17; v21 = 32 * *(char *)(v17 + 1); + v22 = (v18 + 63) << 9; v41 = v22; - v23 = (int)(&pMapHeight[v55 * (v48 + 1)] + v50); + v23 = (int)(&pMapHeight[this->field_10 * (v13 + 1)] + v14); v24 = v22 - v19; v40 = 32 * *(char *)v23; v42 = 32 * *(char *)(v23 + 1); - v25 = v49 - 512 - v49; v26 = (double)-((v20 - v21) * v24); v51 = v26; @@ -918,9 +855,9 @@ v31 = 0.0; if ( v31 > 31.0 ) v31 = 31.0; - v44 = 2 * (v50 + v48 * pOutLocTerrain2->field_10); - pOutLocTerrain = pOutLocTerrain2; - *((char *)pOutLocTerrain2->pDmap + v44 + 1) = (signed __int64)v31; + v44 = 2 * (v14 + v13 * this->field_10); + //pOutLocTerrain = pOutLocTerrain2; + *((char *)this->pDmap + v44 + 1) = (signed __int64)v31; v32 = v49 - (v49 - 512); v33 = (double)-((v42 - v40) * (v19 - v41)); @@ -942,22 +879,21 @@ v38 = 0.0; if ( v38 > 31.0 ) v38 = 31.0; - v13 = v48; - *((char *)pOutLocTerrain2->pDmap + v44) = (signed __int64)v38; - v14 = v50; + //v13 = v48; + *((char *)this->pDmap + v44) = (signed __int64)v38; + //v14 = v50; result = v49; } - ++v14; + //++v14; result += 512; - v50 = v14; + //v50 = v14; v49 = result; } - while ( v14 <= W ); } - ++v13; - v48 = v13; + //++v13; + //v48 = v13; } - while ( v13 <= Z ); + //while ( v13 <= Z ); } } @@ -3440,40 +3376,18 @@ pOMAP = 0; } - - - //----- (00481E55) -------------------------------------------------------- void ODM_Project(unsigned int uNumVertices) { - double v1; // st7@2 - double v2; // st6@2 - double v3; // st5@2 - int v4; // eax@2 - unsigned int v5; // edx@2 - double v6; // st4@3 - double v7; // st3@3 - - if ( (signed int)uNumVertices > 0 ) - { - v1 = (double)pODMRenderParams->int_fov_rad; - v2 = (double)pViewport->uScreenCenterX; - v3 = (double)pViewport->uScreenCenterY; - v4 = 0; - v5 = uNumVertices; - do - { - v6 = v1 * array_507D30[v4]._rhw; - v7 = v6 * array_507D30[v4].vWorldViewPosition.y; - memcpy(&array_50AC10[v4], &array_507D30[v4], sizeof(array_50AC10[v4])); - array_50AC10[v4].vWorldViewProjX = v2 - v7; - array_50AC10[v4].vWorldViewProjY = v3 - v6 * array_507D30[v4].vWorldViewPosition.z; - ++v4; - --v5; - } - while ( v5 ); - } -} + for ( uint i = 0; i < uNumVertices; i++ ) + { + memcpy(&array_50AC10[i], &array_507D30[i], sizeof(array_50AC10[i])); + array_50AC10[i].vWorldViewProjX = (double)pViewport->uScreenCenterX + - ((double)pODMRenderParams->int_fov_rad * array_507D30[i]._rhw) * array_507D30[i].vWorldViewPosition.y; + array_50AC10[i].vWorldViewProjY = (double)pViewport->uScreenCenterY + - ((double)pODMRenderParams->int_fov_rad * array_507D30[i]._rhw) * array_507D30[i].vWorldViewPosition.z; + } + } //----- (00485F64) -------------------------------------------------------- void ODMRenderParams::Initialize() { diff -r 7cd99cb12911 -r 5b27c035a241 Outdoor.h --- a/Outdoor.h Fri Jan 17 22:44:57 2014 +0600 +++ b/Outdoor.h Mon Jan 20 00:02:22 2014 +0600 @@ -82,7 +82,7 @@ bool HasEventHint(); - static bool IsBackfaceCulled(struct ODMFace *a1, struct RenderVertexSoft *a2, struct Polygon *a3); + static bool IsBackfaceCulled(struct RenderVertexSoft *a2, struct Polygon *polygon); inline bool Invisible() const {return (uAttributes & FACE_INVISIBLE) != 0;} inline bool Visible() const {return !Invisible();} diff -r 7cd99cb12911 -r 5b27c035a241 Render.cpp --- a/Render.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/Render.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -8874,7 +8874,7 @@ array_77EC08[pODMRenderParams->uNumPolygons].dimming_level = 31; if ( pODMRenderParams->uNumPolygons >= 1999 + 5000) return; - if ( ODMFace::IsBackfaceCulled(&pOutdoor->pBModels[model_id].pFaces[face_id], array_73D150, &array_77EC08[pODMRenderParams->uNumPolygons]) ) + if ( ODMFace::IsBackfaceCulled(array_73D150, &array_77EC08[pODMRenderParams->uNumPolygons]) ) { pOutdoor->pBModels[model_id].pFaces[face_id].bVisible = 1; array_77EC08[pODMRenderParams->uNumPolygons].uBModelFaceID = face_id; diff -r 7cd99cb12911 -r 5b27c035a241 UI/Books/UIMapBook.cpp --- a/UI/Books/UIMapBook.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/UI/Books/UIMapBook.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -433,12 +433,12 @@ v20 = pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y - pCenterY; v95 = pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x - viewparams->sViewCenterX; - v88 = (unsigned __int64)((pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x - viewparams->sViewCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16; - v87 = (unsigned __int64)((signed int)screenHeight * (signed __int64)viewparams->uMapBookMapZoom) >> 16; - v93 = (unsigned __int16 *)((unsigned __int64)((pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x - viewparams->sViewCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16); - screenHeight = (unsigned __int64)(v20 * (signed __int64)viewparams->uMapBookMapZoom) >> 16; + v88 = fixpoint_mul((pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x - viewparams->sViewCenterX), viewparams->uMapBookMapZoom); + v87 = fixpoint_mul(screenHeight, viewparams->uMapBookMapZoom); + v93 = (unsigned __int16 *)(fixpoint_mul((pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x - viewparams->sViewCenterX), viewparams->uMapBookMapZoom)); + screenHeight = fixpoint_mul(v20, viewparams->uMapBookMapZoom); pRenderer->RasterLine2D(screenCenter_X + v88, screenCenterY - v87, - screenCenter_X + ((unsigned __int64)((pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x - viewparams->sViewCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16), screenCenterY - screenHeight, black); + screenCenter_X + (fixpoint_mul((pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x - viewparams->sViewCenterX), viewparams->uMapBookMapZoom)), screenCenterY - screenHeight, black); } } } @@ -452,32 +452,32 @@ v28 = pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[pBlueFacesInBLVMinimapIDs[j]].uVertex1ID].y - pCenterY; v29 = pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[pBlueFacesInBLVMinimapIDs[j]].uVertex2ID].y - pCenterY; - v87 = (unsigned __int64)((signed int)v27 * (signed __int64)viewparams->uMapBookMapZoom) >> 16; - v88 = (unsigned __int64)(v28 * (signed __int64)viewparams->uMapBookMapZoom) >> 16; - uint i = (unsigned __int64)((v26 - pCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16; - v95 = (unsigned __int64)(v29 * (signed __int64)viewparams->uMapBookMapZoom) >> 16; - pRenderer->RasterLine2D(screenCenter_X + ((unsigned __int64)((signed int)v27 * (signed __int64)viewparams->uMapBookMapZoom) >> 16), - screenCenterY - v88, screenCenter_X + ((unsigned __int64)((v26 - pCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16), screenCenterY - v95, teal); + v87 = fixpoint_mul((signed int)v27, viewparams->uMapBookMapZoom); + v88 = fixpoint_mul(v28, viewparams->uMapBookMapZoom); + uint i = fixpoint_mul((v26 - pCenterX), viewparams->uMapBookMapZoom); + v95 = fixpoint_mul(v29, viewparams->uMapBookMapZoom); + pRenderer->RasterLine2D(screenCenter_X + (fixpoint_mul((signed int)v27, viewparams->uMapBookMapZoom)), + screenCenterY - v88, screenCenter_X + (fixpoint_mul((v26 - pCenterX), viewparams->uMapBookMapZoom)), screenCenterY - v95, teal); } viewparams->sViewCenterX = pCenterX; } } - v47 = ((unsigned __int64)((pParty->vPosition.x - viewparams->sViewCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16) + screenCenter_X - 3; - v97 = (const void *)((unsigned __int64)((pParty->vPosition.y - pCenterY) * (signed __int64)viewparams->uMapBookMapZoom) >> 16); + v47 = (fixpoint_mul((pParty->vPosition.x - viewparams->sViewCenterX), viewparams->uMapBookMapZoom)) + screenCenter_X - 3; + v97 = (const void *)(fixpoint_mul((pParty->vPosition.y - pCenterY), viewparams->uMapBookMapZoom)); v48 = 1; v49 = screenCenterY - (int)v97 - 3; if ( v47 >= (signed int)tl_x ) { if ( v47 > (signed int)br_x ) { - if ( (signed int)(((unsigned __int64)((pParty->vPosition.x - viewparams->sViewCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16) + screenCenter_X - 6) > (signed int)br_x ) + if ( (signed int)((fixpoint_mul((pParty->vPosition.x - viewparams->sViewCenterX), viewparams->uMapBookMapZoom)) + screenCenter_X - 6) > (signed int)br_x ) v48 = 0; v47 = br_x; } } else { - if ( (signed int)(((unsigned __int64)((pParty->vPosition.x - viewparams->sViewCenterX) * (signed __int64)viewparams->uMapBookMapZoom) >> 16) + screenCenter_X) < (signed int)tl_x ) + if ( (signed int)((fixpoint_mul((pParty->vPosition.x - viewparams->sViewCenterX), viewparams->uMapBookMapZoom)) + screenCenter_X) < (signed int)tl_x ) v48 = 0; v47 = tl_x; } @@ -525,8 +525,8 @@ { screenHeight = pLevelDecorations[i].vPosition.y - pCenterY; v93 = (unsigned __int16 *)(pLevelDecorations[i].vPosition.x - viewparams->sViewCenterX); - v54 = ((unsigned __int64)((signed int)v93 * (signed __int64)viewparams->uMapBookMapZoom) >> 16) + screenCenter_X; - v97 = (const void *)((unsigned __int64)(screenHeight * (signed __int64)viewparams->uMapBookMapZoom) >> 16); + v54 = (fixpoint_mul((signed int)v93, viewparams->uMapBookMapZoom)) + screenCenter_X; + v97 = (const void *)(fixpoint_mul(screenHeight, viewparams->uMapBookMapZoom)); v55 = screenCenterY - (int)v97; //if ( v54 >= pRenderer->raster_clip_x && v54 <= pRenderer->raster_clip_z // && v55 >= pRenderer->raster_clip_y && v55 <= pRenderer->raster_clip_w ) @@ -539,7 +539,7 @@ } else pRenderer->RasterLine2D(v54, screenCenterY - (int)v97, - ((unsigned __int64)((signed int)v93 * (signed __int64)viewparams->uMapBookMapZoom) >> 16) + screenCenter_X, + (fixpoint_mul((signed int)v93, viewparams->uMapBookMapZoom)) + screenCenter_X, screenCenterY - (int)v97, Color16(0xFFu, 0xFFu, 0xFFu)); } } diff -r 7cd99cb12911 -r 5b27c035a241 UI/UiGame.cpp --- a/UI/UiGame.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/UI/UiGame.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -1956,55 +1956,64 @@ BLVMapOutline* pOutline = &pIndoor->pMapOutlines->pOutlines[i]; BLVFace* pFace1 = pIndoor->pFaces + pOutline->uFace1ID; BLVFace* pFace2 = pIndoor->pFaces + pOutline->uFace2ID; - //v9 = pIndoor->pFaces[pMapVertex->uFace1ID].uAttributes; - //v10 = pIndoor->pFaces[pMapVertex->uFace2ID].uAttributes; if (pFace1->Visible() && pFace2->Visible()) { if ( pOutline->uFlags & 1 ) - goto LABEL_15; + { + if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 && + (pFace1->Clickable() || pFace2->Clickable()) && + (pIndoor->pFaceExtras[pFace1->uFaceExtraID].uEventID || pIndoor->pFaceExtras[pFace2->uFaceExtraID].uEventID)) + { + if (uNumBlueFacesInBLVMinimap < 49) + pBlueFacesInBLVMinimapIDs[uNumBlueFacesInBLVMinimap++] = i; + } + else + { + pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16); + pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16); + pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16); + pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16); + v15 = abs(pOutline->sZ - pParty->vPosition.z) / 8; + if ( v15 > 100 ) + v15 = 100; + pRenderer->RasterLine2D(pX, pY, pZ, pW, viewparams->pPalette[-v15 + 200]); + } + continue; + } if (pFace1->uAttributes & 0x80 || pFace2->uAttributes & 0x80) - goto LABEL_ABC; - } - continue; - -LABEL_ABC: - pOutline->uFlags = pOutline->uFlags | 1; - pIndoor->_visible_outlines[i >> 3] |= 1 << (7 - i % 8); - -LABEL_15: - //v12 = &pIndoor->pFaces[pOutline->uFace1ID]; - if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 && - (pFace1->Clickable() || pFace2->Clickable()) && - (pIndoor->pFaceExtras[pFace1->uFaceExtraID].uEventID || pIndoor->pFaceExtras[pFace2->uFaceExtraID].uEventID)) - { - if (uNumBlueFacesInBLVMinimap < 49) - pBlueFacesInBLVMinimapIDs[uNumBlueFacesInBLVMinimap++] = i; - } - else - { - long long _a = (uZoom * (signed __int64)pIndoor->pVertices[pOutline->uVertex1ID].x); - uint _b = ((unsigned int)((unsigned __int64)_a >> 16) << 16); - int _c = ((signed int)(_b - uZoom * pParty->vPosition.x) >> 16); - pX = uCenterX + fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x) << 16) - uZoom, pParty->vPosition.x); - pY = uCenterY - fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].y) << 16) - uZoom, pParty->vPosition.y); - pZ = uCenterX + fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x) << 16) - uZoom, pParty->vPosition.x); - pW = uCenterY - fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y) << 16) - uZoom, pParty->vPosition.y); - v15 = abs(pOutline->sZ - pParty->vPosition.z) / 8; - if ( v15 > 100 ) - v15 = 100; - //if ( i == 1000 )//pY < 0 && pW > 16 ) - //__debugbreak(); - pRenderer->RasterLine2D(pX, pY, pZ, pW, viewparams->pPalette[-v15 + 200]); + { + pOutline->uFlags = pOutline->uFlags | 1; + pIndoor->_visible_outlines[i >> 3] |= 1 << (7 - i % 8); + if (bWizardEyeActive && uWizardEyeSkillLevel >= 3 && + (pFace1->Clickable() || pFace2->Clickable()) && + (pIndoor->pFaceExtras[pFace1->uFaceExtraID].uEventID || pIndoor->pFaceExtras[pFace2->uFaceExtraID].uEventID)) + { + if (uNumBlueFacesInBLVMinimap < 49) + pBlueFacesInBLVMinimapIDs[uNumBlueFacesInBLVMinimap++] = i; + } + else + { + pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16); + pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16); + pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16); + pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pIndoor->pMapOutlines->pOutlines[i].uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16); + v15 = abs(pOutline->sZ - pParty->vPosition.z) / 8; + if ( v15 > 100 ) + v15 = 100; + pRenderer->RasterLine2D(pX, pY, pZ, pW, viewparams->pPalette[-v15 + 200]); + } + continue; + } } } for (uint i = 0; i < uNumBlueFacesInBLVMinimap; ++i) { BLVMapOutline* pOutline = &pIndoor->pMapOutlines->pOutlines[pBlueFacesInBLVMinimapIDs[i]]; - pX = uCenterX + fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].x) << 16) - uZoom, pParty->vPosition.x); - pY = uCenterY - fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].y) << 16) - uZoom, pParty->vPosition.y); - pZ = uCenterX + fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].x) << 16) - uZoom, pParty->vPosition.x); - pW = uCenterY - fixpoint_mul((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].y) << 16) - uZoom, pParty->vPosition.y); + pX = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16); + pY = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex1ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16); + pZ = uCenterX + ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].x)) << 16) - uZoom * pParty->vPosition.x) >> 16); + pW = uCenterY - ((signed int)(((unsigned int)(fixpoint_mul(uZoom, pIndoor->pVertices[pOutline->uVertex2ID].y)) << 16) - uZoom * pParty->vPosition.y) >> 16); pRenderer->RasterLine2D(pX, pY, pZ, pW, ui_game_minimap_outline_color); } } diff -r 7cd99cb12911 -r 5b27c035a241 _deleted.cpp --- a/_deleted.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/_deleted.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -1489,7 +1489,7 @@ return result; ++pODMRenderParams->uNumPolygons; ++pODMRenderParams->field_44; - if ( !ODMFace::IsBackfaceCulled(v3, array_73D150, v12) ) + if ( !ODMFace::IsBackfaceCulled(array_73D150, v12) ) { LABEL_71: --pODMRenderParams->uNumPolygons; diff -r 7cd99cb12911 -r 5b27c035a241 mm7_2.cpp --- a/mm7_2.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/mm7_2.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -594,11 +594,7 @@ } gold_transaction_amount = v26 * v13; for ( i = 0; i < v14; ++i ) - { - //monster_y = pMonsterArenaPlacements[i].y; - //v21 = rand(); - Actor::_4BBF61_summon_actor(monster_ids[rand() % num_monsters], pMonsterArenaPlacements[i].x, pMonsterArenaPlacements[i].y, 1); - } + Actor::Arena_summon_actor(monster_ids[rand() % num_monsters], pMonsterArenaPlacements[i].x, pMonsterArenaPlacements[i].y, 1); pAudioPlayer->PlaySound((SoundID)14060, 0, 0, -1, 0, 0, 0, 0); } diff -r 7cd99cb12911 -r 5b27c035a241 mm7_data.cpp --- a/mm7_data.cpp Fri Jan 17 22:44:57 2014 +0600 +++ b/mm7_data.cpp Mon Jan 20 00:02:22 2014 +0600 @@ -725,11 +725,11 @@ std::array pMonsterArenaPlacements = {{ - Vec2_int_(0x5F4, 0x208C), - Vec2_int_(0x88A, 0x228C), - Vec2_int_(0xC93, 0x247B), - Vec2_int_(0x1194, 0x247B), - Vec2_int_(0x14CB, 0x232C), + Vec2_int_(1524, 8332), + Vec2_int_(2186, 8844), + Vec2_int_(3219, 9339), + Vec2_int_(4500, 9339), + Vec2_int_(5323, 9004), Vec2_int_(0x177D, 0x2098), Vec2_int_(0x50B, 0x1E15), Vec2_int_(0x18FF, 0x1E15),