mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-30 08:47:58 +03:00
Fixed meshes and cleaned code
This commit is contained in:
parent
7f25a5dfa2
commit
abc5ece111
4 changed files with 18 additions and 254 deletions
|
@ -6,11 +6,9 @@
|
||||||
#include "../../Game/people.h"
|
#include "../../Game/people.h"
|
||||||
#include "../../Game/tomb4fx.h"
|
#include "../../Game/tomb4fx.h"
|
||||||
#include "../../Game/draw.h"
|
#include "../../Game/draw.h"
|
||||||
|
|
||||||
BITE_INFO SwatGun = { 80, 200, 13, 0 };
|
BITE_INFO SwatGun = { 80, 200, 13, 0 };
|
||||||
BITE_INFO SniperGun = { 0, 480, 110, 13 };
|
BITE_INFO SniperGun = { 0, 480, 110, 13 };
|
||||||
BITE_INFO ArmedBaddy2Gun = { -50, 220, 60, 13 };
|
BITE_INFO ArmedBaddy2Gun = { -50, 220, 60, 13 };
|
||||||
|
|
||||||
#define STATE_GUARD_STOP 1
|
#define STATE_GUARD_STOP 1
|
||||||
#define STATE_GUARD_TURN180 2
|
#define STATE_GUARD_TURN180 2
|
||||||
#define STATE_GUARD_FIRE_SINGLE 3
|
#define STATE_GUARD_FIRE_SINGLE 3
|
||||||
|
@ -36,11 +34,9 @@ BITE_INFO ArmedBaddy2Gun = { -50, 220, 60, 13 };
|
||||||
#define STATE_GUARD_START_USE_COMPUTER 37
|
#define STATE_GUARD_START_USE_COMPUTER 37
|
||||||
#define STATE_GUARD_USE_COMPUTER 38
|
#define STATE_GUARD_USE_COMPUTER 38
|
||||||
#define STATE_GUARD_SURREND 39
|
#define STATE_GUARD_SURREND 39
|
||||||
|
|
||||||
#define ANIMATION_GUARD_DEATH1 11
|
#define ANIMATION_GUARD_DEATH1 11
|
||||||
#define ANIMATION_GUARD_DEATH2 16
|
#define ANIMATION_GUARD_DEATH2 16
|
||||||
#define ANIMATION_GUARD_START_JUMP 41
|
#define ANIMATION_GUARD_START_JUMP 41
|
||||||
|
|
||||||
#define STATE_MAFIA2_STOP 1
|
#define STATE_MAFIA2_STOP 1
|
||||||
#define STATE_MAFIA2_TURN180_UNDRAW_GUNS 2
|
#define STATE_MAFIA2_TURN180_UNDRAW_GUNS 2
|
||||||
#define STATE_MAFIA2_FIRE 3
|
#define STATE_MAFIA2_FIRE 3
|
||||||
|
@ -55,26 +51,22 @@ BITE_INFO ArmedBaddy2Gun = { -50, 220, 60, 13 };
|
||||||
#define STATE_MAFIA2_LANDING 29
|
#define STATE_MAFIA2_LANDING 29
|
||||||
#define STATE_MAFIA2_TURN180 32
|
#define STATE_MAFIA2_TURN180 32
|
||||||
#define STATE_MAFIA2_UNDRAW_GUNS 37
|
#define STATE_MAFIA2_UNDRAW_GUNS 37
|
||||||
|
|
||||||
#define STATE_SNIPER_STOP 1
|
#define STATE_SNIPER_STOP 1
|
||||||
#define STATE_SNIPER_UNHIDE 2
|
#define STATE_SNIPER_UNHIDE 2
|
||||||
#define STATE_SNIPER_AIM 3
|
#define STATE_SNIPER_AIM 3
|
||||||
#define STATE_SNIPER_FIRE 4
|
#define STATE_SNIPER_FIRE 4
|
||||||
#define STATE_SNIPER_HIDE 5
|
#define STATE_SNIPER_HIDE 5
|
||||||
#define STATE_SNIPER_DEATH 6
|
#define STATE_SNIPER_DEATH 6
|
||||||
|
|
||||||
void InitialiseGuard(short itemNum)
|
void InitialiseGuard(short itemNum)
|
||||||
{
|
{
|
||||||
ITEM_INFO* item, *item2;
|
ITEM_INFO* item, *item2;
|
||||||
short anim;
|
short anim;
|
||||||
short roomItemNumber;
|
short roomItemNumber;
|
||||||
|
|
||||||
item = &Items[itemNum];
|
item = &Items[itemNum];
|
||||||
ClearItem(itemNum);
|
ClearItem(itemNum);
|
||||||
anim = Objects[ID_SWAT].animIndex;
|
anim = Objects[ID_SWAT].animIndex;
|
||||||
if (!Objects[ID_SWAT].loaded)
|
if (!Objects[ID_SWAT].loaded)
|
||||||
anim = Objects[ID_GUARD1].animIndex;
|
anim = Objects[ID_GUARD1].animIndex;
|
||||||
|
|
||||||
switch (item->triggerFlags)
|
switch (item->triggerFlags)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -122,7 +114,6 @@ void InitialiseGuard(short itemNum)
|
||||||
case 5:
|
case 5:
|
||||||
FLOOR_INFO *floor;
|
FLOOR_INFO *floor;
|
||||||
short roomNumber;
|
short roomNumber;
|
||||||
|
|
||||||
item->animNumber = anim + 26;
|
item->animNumber = anim + 26;
|
||||||
item->goalAnimState = STATE_GUARD_ROPE_DOWN;
|
item->goalAnimState = STATE_GUARD_ROPE_DOWN;
|
||||||
roomNumber = item->roomNumber;
|
roomNumber = item->roomNumber;
|
||||||
|
@ -153,11 +144,9 @@ void InitialiseGuard(short itemNum)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitialiseSniper(short itemNum)
|
void InitialiseSniper(short itemNum)
|
||||||
{
|
{
|
||||||
ITEM_INFO* item;
|
ITEM_INFO* item;
|
||||||
|
|
||||||
item = &Items[itemNum];
|
item = &Items[itemNum];
|
||||||
ClearItem(itemNum);
|
ClearItem(itemNum);
|
||||||
item->animNumber = Objects[item->objectNumber].animIndex;
|
item->animNumber = Objects[item->objectNumber].animIndex;
|
||||||
|
@ -168,11 +157,9 @@ void InitialiseSniper(short itemNum)
|
||||||
item->pos.xPos += SIN(item->pos.yRot);
|
item->pos.xPos += SIN(item->pos.yRot);
|
||||||
item->pos.zPos += COS(item->pos.yRot);
|
item->pos.zPos += COS(item->pos.yRot);
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitialiseGuardLaser(short itemNum)
|
void InitialiseGuardLaser(short itemNum)
|
||||||
{
|
{
|
||||||
ITEM_INFO* item;
|
ITEM_INFO* item;
|
||||||
|
|
||||||
item = &Items[itemNum];
|
item = &Items[itemNum];
|
||||||
ClearItem(itemNum);
|
ClearItem(itemNum);
|
||||||
item->animNumber = Objects[item->objectNumber].animIndex + 6;
|
item->animNumber = Objects[item->objectNumber].animIndex + 6;
|
||||||
|
@ -180,53 +167,40 @@ void InitialiseGuardLaser(short itemNum)
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
item->currentAnimState = STATE_GUARD_STOP;
|
item->currentAnimState = STATE_GUARD_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuardControl(short itemNum)
|
void GuardControl(short itemNum)
|
||||||
{
|
{
|
||||||
if (!CreatureActive(itemNum))
|
if (!CreatureActive(itemNum))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int animIndex = 0;
|
int animIndex = 0;
|
||||||
if (Objects[ID_SWAT].loaded)
|
if (Objects[ID_SWAT].loaded)
|
||||||
animIndex= Objects[ID_SWAT].animIndex;
|
animIndex= Objects[ID_SWAT].animIndex;
|
||||||
else
|
else
|
||||||
animIndex = Objects[ID_GUARD1].animIndex;
|
animIndex = Objects[ID_GUARD1].animIndex;
|
||||||
|
|
||||||
ITEM_INFO* item = &Items[itemNum];
|
ITEM_INFO* item = &Items[itemNum];
|
||||||
CREATURE_INFO* creature = (CREATURE_INFO*)item->data;
|
CREATURE_INFO* creature = (CREATURE_INFO*)item->data;
|
||||||
|
|
||||||
short angle = 0;
|
short angle = 0;
|
||||||
short joint2 = 0;
|
short joint2 = 0;
|
||||||
short joint1 = 0;
|
short joint1 = 0;
|
||||||
short joint0 = 0;
|
short joint0 = 0;
|
||||||
|
|
||||||
int x = item->pos.xPos;
|
int x = item->pos.xPos;
|
||||||
int z = item->pos.zPos;
|
int z = item->pos.zPos;
|
||||||
|
|
||||||
int dx = 870 * SIN(item->pos.yRot) >> W2V_SHIFT;
|
int dx = 870 * SIN(item->pos.yRot) >> W2V_SHIFT;
|
||||||
int dz = 870 * COS(item->pos.yRot) >> W2V_SHIFT;
|
int dz = 870 * COS(item->pos.yRot) >> W2V_SHIFT;
|
||||||
|
|
||||||
x += dx;
|
x += dx;
|
||||||
z += dz;
|
z += dz;
|
||||||
|
|
||||||
short roomNumber = item->roomNumber;
|
short roomNumber = item->roomNumber;
|
||||||
FLOOR_INFO* floor = GetFloor(x, item->pos.yPos, z, &roomNumber);
|
FLOOR_INFO* floor = GetFloor(x, item->pos.yPos, z, &roomNumber);
|
||||||
int height1 = GetFloorHeight(floor, x, item->pos.yPos, z);
|
int height1 = GetFloorHeight(floor, x, item->pos.yPos, z);
|
||||||
|
|
||||||
x += dx;
|
x += dx;
|
||||||
z += dz;
|
z += dz;
|
||||||
|
|
||||||
roomNumber = item->roomNumber;
|
roomNumber = item->roomNumber;
|
||||||
floor = GetFloor(x, item->pos.yPos, z, &roomNumber);
|
floor = GetFloor(x, item->pos.yPos, z, &roomNumber);
|
||||||
int height2 = GetFloorHeight(floor, x, item->pos.yPos, z);
|
int height2 = GetFloorHeight(floor, x, item->pos.yPos, z);
|
||||||
|
|
||||||
x += dx;
|
x += dx;
|
||||||
z += dz;
|
z += dz;
|
||||||
|
|
||||||
roomNumber = item->roomNumber;
|
roomNumber = item->roomNumber;
|
||||||
floor = GetFloor(x, item->pos.yPos, z, &roomNumber);
|
floor = GetFloor(x, item->pos.yPos, z, &roomNumber);
|
||||||
int height3 = GetFloorHeight(floor, x, item->pos.yPos, z);
|
int height3 = GetFloorHeight(floor, x, item->pos.yPos, z);
|
||||||
|
|
||||||
bool canJump1block;
|
bool canJump1block;
|
||||||
if (item->boxNumber == LaraItem->boxNumber
|
if (item->boxNumber == LaraItem->boxNumber
|
||||||
|| item->pos.yPos >= height1 - 384
|
|| item->pos.yPos >= height1 - 384
|
||||||
|
@ -235,7 +209,6 @@ void GuardControl(short itemNum)
|
||||||
canJump1block = false;
|
canJump1block = false;
|
||||||
else
|
else
|
||||||
canJump1block = true;
|
canJump1block = true;
|
||||||
|
|
||||||
bool canJump2blocks;
|
bool canJump2blocks;
|
||||||
if (item->boxNumber == LaraItem->boxNumber
|
if (item->boxNumber == LaraItem->boxNumber
|
||||||
|| item->pos.yPos >= height1 - 384
|
|| item->pos.yPos >= height1 - 384
|
||||||
|
@ -245,7 +218,6 @@ void GuardControl(short itemNum)
|
||||||
canJump2blocks = false;
|
canJump2blocks = false;
|
||||||
else
|
else
|
||||||
canJump2blocks = true;
|
canJump2blocks = true;
|
||||||
|
|
||||||
if (item->firedWeapon)
|
if (item->firedWeapon)
|
||||||
{
|
{
|
||||||
PHD_VECTOR pos;
|
PHD_VECTOR pos;
|
||||||
|
@ -256,17 +228,13 @@ void GuardControl(short itemNum)
|
||||||
TriggerDynamicLight(pos.x, pos.y, pos.z, 2 * item->firedWeapon + 10, 192, 128, 32);
|
TriggerDynamicLight(pos.x, pos.y, pos.z, 2 * item->firedWeapon + 10, 192, 128, 32);
|
||||||
item->firedWeapon--;
|
item->firedWeapon--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->aiBits)
|
if (item->aiBits)
|
||||||
GetAITarget(creature);
|
GetAITarget(creature);
|
||||||
else
|
else
|
||||||
creature->enemy = LaraItem;
|
creature->enemy = LaraItem;
|
||||||
|
|
||||||
AI_INFO info;
|
AI_INFO info;
|
||||||
AI_INFO laraInfo;
|
AI_INFO laraInfo;
|
||||||
|
|
||||||
CreatureAIInfo(item, &info);
|
CreatureAIInfo(item, &info);
|
||||||
|
|
||||||
if (creature->enemy == LaraItem)
|
if (creature->enemy == LaraItem)
|
||||||
{
|
{
|
||||||
laraInfo.angle = info.angle;
|
laraInfo.angle = info.angle;
|
||||||
|
@ -276,7 +244,6 @@ void GuardControl(short itemNum)
|
||||||
{
|
{
|
||||||
int dx = LaraItem->pos.xPos - item->pos.xPos;
|
int dx = LaraItem->pos.xPos - item->pos.xPos;
|
||||||
int dz = LaraItem->pos.zPos - item->pos.zPos;
|
int dz = LaraItem->pos.zPos - item->pos.zPos;
|
||||||
|
|
||||||
laraInfo.angle = ATAN(dz, dx) - item->pos.yRot;
|
laraInfo.angle = ATAN(dz, dx) - item->pos.yRot;
|
||||||
laraInfo.distance = SQUARE(dx) + SQUARE(dz);
|
laraInfo.distance = SQUARE(dx) + SQUARE(dz);
|
||||||
}
|
}
|
||||||
|
@ -303,7 +270,6 @@ void GuardControl(short itemNum)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GetCreatureMood(item, &info, creature->enemy != LaraItem);
|
GetCreatureMood(item, &info, creature->enemy != LaraItem);
|
||||||
|
|
||||||
if (item->objectNumber == ID_SCIENTIST)
|
if (item->objectNumber == ID_SCIENTIST)
|
||||||
{
|
{
|
||||||
if (item->hitPoints >= Objects[ID_SCIENTIST].hitPoints)
|
if (item->hitPoints >= Objects[ID_SCIENTIST].hitPoints)
|
||||||
|
@ -316,7 +282,6 @@ void GuardControl(short itemNum)
|
||||||
creature->mood = ESCAPE_MOOD;
|
creature->mood = ESCAPE_MOOD;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Rooms[item->roomNumber].flags & ENV_FLAG_NO_LENSFLARE) // CHECK
|
if (Rooms[item->roomNumber].flags & ENV_FLAG_NO_LENSFLARE) // CHECK
|
||||||
{
|
{
|
||||||
if (item->objectNumber == ID_SWAT_PLUS)
|
if (item->objectNumber == ID_SWAT_PLUS)
|
||||||
|
@ -341,13 +306,10 @@ void GuardControl(short itemNum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CreatureMood(item, &info, creature->enemy != LaraItem);
|
CreatureMood(item, &info, creature->enemy != LaraItem);
|
||||||
|
|
||||||
ITEM_INFO * enemy = creature->enemy;
|
ITEM_INFO * enemy = creature->enemy;
|
||||||
angle = CreatureTurn(item, creature->maximumTurn);
|
angle = CreatureTurn(item, creature->maximumTurn);
|
||||||
creature->enemy = LaraItem;
|
creature->enemy = LaraItem;
|
||||||
|
|
||||||
if (laraInfo.distance < 0x400000 && LaraItem->speed > 20
|
if (laraInfo.distance < 0x400000 && LaraItem->speed > 20
|
||||||
|| item->hitStatus
|
|| item->hitStatus
|
||||||
|| TargetVisible(item, &laraInfo))
|
|| TargetVisible(item, &laraInfo))
|
||||||
|
@ -358,38 +320,28 @@ void GuardControl(short itemNum)
|
||||||
AlertAllGuards(itemNum);
|
AlertAllGuards(itemNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
creature->enemy = enemy;
|
creature->enemy = enemy;
|
||||||
|
|
||||||
GAME_VECTOR src;
|
GAME_VECTOR src;
|
||||||
src.x = item->pos.xPos;
|
src.x = item->pos.xPos;
|
||||||
src.y = item->pos.yPos - 384;
|
src.y = item->pos.yPos - 384;
|
||||||
src.z = item->pos.zPos;
|
src.z = item->pos.zPos;
|
||||||
src.roomNumber = item->roomNumber;
|
src.roomNumber = item->roomNumber;
|
||||||
|
|
||||||
short* frame = GetBestFrame(LaraItem);
|
short* frame = GetBestFrame(LaraItem);
|
||||||
|
|
||||||
GAME_VECTOR dest;
|
GAME_VECTOR dest;
|
||||||
dest.x = LaraItem->pos.xPos;
|
dest.x = LaraItem->pos.xPos;
|
||||||
dest.y = LaraItem->pos.yPos + ((frame[3] + 3 * frame[2]) >> 2);
|
dest.y = LaraItem->pos.yPos + ((frame[3] + 3 * frame[2]) >> 2);
|
||||||
dest.z = LaraItem->pos.zPos;
|
dest.z = LaraItem->pos.zPos;
|
||||||
|
|
||||||
bool los = !LOS(&src, &dest) && item->triggerFlags != 10;
|
bool los = !LOS(&src, &dest) && item->triggerFlags != 10;
|
||||||
|
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
|
|
||||||
ITEM_INFO* currentItem;
|
ITEM_INFO* currentItem;
|
||||||
short currentItemNumber;
|
short currentItemNumber;
|
||||||
|
|
||||||
PHD_VECTOR pos1, pos2;
|
PHD_VECTOR pos1, pos2;
|
||||||
|
|
||||||
switch (item->currentAnimState)
|
switch (item->currentAnimState)
|
||||||
{
|
{
|
||||||
case STATE_GUARD_STOP:
|
case STATE_GUARD_STOP:
|
||||||
creature->LOT.isJumping = false;
|
creature->LOT.isJumping = false;
|
||||||
joint2 = laraInfo.angle;
|
joint2 = laraInfo.angle;
|
||||||
creature->flags = 0;
|
creature->flags = 0;
|
||||||
|
|
||||||
if (info.ahead)
|
if (info.ahead)
|
||||||
{
|
{
|
||||||
if (!(item->aiBits & FOLLOW))
|
if (!(item->aiBits & FOLLOW))
|
||||||
|
@ -398,7 +350,6 @@ void GuardControl(short itemNum)
|
||||||
joint1 = info.xAngle;
|
joint1 = info.xAngle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->objectNumber == ID_SCIENTIST && item == Lara.target)
|
if (item->objectNumber == ID_SCIENTIST && item == Lara.target)
|
||||||
{
|
{
|
||||||
item->goalAnimState = STATE_GUARD_SURREND;
|
item->goalAnimState = STATE_GUARD_SURREND;
|
||||||
|
@ -413,7 +364,6 @@ void GuardControl(short itemNum)
|
||||||
joint2 = 0;
|
joint2 = 0;
|
||||||
else
|
else
|
||||||
joint2 = AIGuard(creature);
|
joint2 = AIGuard(creature);
|
||||||
|
|
||||||
if (item->aiBits & PATROL1)
|
if (item->aiBits & PATROL1)
|
||||||
{
|
{
|
||||||
item->triggerFlags--;
|
item->triggerFlags--;
|
||||||
|
@ -472,11 +422,9 @@ void GuardControl(short itemNum)
|
||||||
{
|
{
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->triggerFlags == 11)
|
if (item->triggerFlags == 11)
|
||||||
item->triggerFlags = 0;
|
item->triggerFlags = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_TURN180:
|
case STATE_GUARD_TURN180:
|
||||||
creature->flags = 0;
|
creature->flags = 0;
|
||||||
if (info.angle >= 0)
|
if (info.angle >= 0)
|
||||||
|
@ -486,7 +434,6 @@ void GuardControl(short itemNum)
|
||||||
if (item->frameNumber == Anims[item->animNumber].frameEnd)
|
if (item->frameNumber == Anims[item->animNumber].frameEnd)
|
||||||
item->pos.yRot += -ANGLE(180);
|
item->pos.yRot += -ANGLE(180);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_FIRE_SINGLE:
|
case STATE_GUARD_FIRE_SINGLE:
|
||||||
case STATE_GUARD_FIRE_FAST:
|
case STATE_GUARD_FIRE_FAST:
|
||||||
joint0 = laraInfo.angle >> 1;
|
joint0 = laraInfo.angle >> 1;
|
||||||
|
@ -504,7 +451,6 @@ void GuardControl(short itemNum)
|
||||||
{
|
{
|
||||||
item->pos.yRot += info.angle;
|
item->pos.yRot += info.angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->currentAnimState == STATE_GUARD_FIRE_FAST)
|
if (item->currentAnimState == STATE_GUARD_FIRE_FAST)
|
||||||
{
|
{
|
||||||
if (creature->flags)
|
if (creature->flags)
|
||||||
|
@ -514,7 +460,6 @@ void GuardControl(short itemNum)
|
||||||
creature->flags = 0;
|
creature->flags = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!creature->flags)
|
if (!creature->flags)
|
||||||
{
|
{
|
||||||
creature->flags = 1;
|
creature->flags = 1;
|
||||||
|
@ -523,11 +468,9 @@ void GuardControl(short itemNum)
|
||||||
ShotLara(item, &info, &SwatGun, joint0, 30);
|
ShotLara(item, &info, &SwatGun, joint0, 30);
|
||||||
else
|
else
|
||||||
ShotLara(item, &info, &SwatGun, joint0, 10);
|
ShotLara(item, &info, &SwatGun, joint0, 10);
|
||||||
|
|
||||||
TriggerEnergyArc((PHD_VECTOR*)& item->pos, (PHD_VECTOR*)& LaraItem->pos, 0, 0, 128, 256, 150);
|
TriggerEnergyArc((PHD_VECTOR*)& item->pos, (PHD_VECTOR*)& LaraItem->pos, 0, 0, 128, 256, 150);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_AIM:
|
case STATE_GUARD_AIM:
|
||||||
creature->flags = 0;
|
creature->flags = 0;
|
||||||
joint0 = laraInfo.angle >> 1;
|
joint0 = laraInfo.angle >> 1;
|
||||||
|
@ -545,7 +488,6 @@ void GuardControl(short itemNum)
|
||||||
{
|
{
|
||||||
item->pos.yRot += info.angle;
|
item->pos.yRot += info.angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Targetable(item, &info))
|
if (!Targetable(item, &info))
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
else if (item->objectNumber == ID_GUARD1 || item->objectNumber == ID_GUARD2)
|
else if (item->objectNumber == ID_GUARD1 || item->objectNumber == ID_GUARD2)
|
||||||
|
@ -553,7 +495,6 @@ void GuardControl(short itemNum)
|
||||||
else
|
else
|
||||||
item->goalAnimState = STATE_GUARD_FIRE_FAST;
|
item->goalAnimState = STATE_GUARD_FIRE_FAST;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_WALK:
|
case STATE_GUARD_WALK:
|
||||||
creature->LOT.isJumping = false;
|
creature->LOT.isJumping = false;
|
||||||
creature->maximumTurn = ANGLE(5);
|
creature->maximumTurn = ANGLE(5);
|
||||||
|
@ -599,7 +540,6 @@ void GuardControl(short itemNum)
|
||||||
item->goalAnimState = STATE_GUARD_AIM;
|
item->goalAnimState = STATE_GUARD_AIM;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_RUN:
|
case STATE_GUARD_RUN:
|
||||||
creature->LOT.isJumping = false;
|
creature->LOT.isJumping = false;
|
||||||
creature->maximumTurn = ANGLE(10);
|
creature->maximumTurn = ANGLE(10);
|
||||||
|
@ -633,10 +573,8 @@ void GuardControl(short itemNum)
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_ROPE_DOWN:
|
case STATE_GUARD_ROPE_DOWN:
|
||||||
joint2 = laraInfo.angle;
|
joint2 = laraInfo.angle;
|
||||||
|
|
||||||
if (item->pos.yPos <= item->floor - 2048 || item->triggerFlags != 5)
|
if (item->pos.yPos <= item->floor - 2048 || item->triggerFlags != 5)
|
||||||
{
|
{
|
||||||
if (item->pos.yPos >= item->floor - 512)
|
if (item->pos.yPos >= item->floor - 512)
|
||||||
|
@ -663,13 +601,11 @@ void GuardControl(short itemNum)
|
||||||
item->pos.yRot += info.angle;
|
item->pos.yRot += info.angle;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_SITTING:
|
case STATE_GUARD_SITTING:
|
||||||
joint2 = AIGuard(creature);
|
joint2 = AIGuard(creature);
|
||||||
if (creature->alerted)
|
if (creature->alerted)
|
||||||
item->goalAnimState = STATE_GUARD_STAND_UP;
|
item->goalAnimState = STATE_GUARD_STAND_UP;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_STAND_UP:
|
case STATE_GUARD_STAND_UP:
|
||||||
case 18:
|
case 18:
|
||||||
if (item->frameNumber == Anims[item->animNumber].frameBase)
|
if (item->frameNumber == Anims[item->animNumber].frameBase)
|
||||||
|
@ -680,20 +616,16 @@ void GuardControl(short itemNum)
|
||||||
TestTriggers(TriggerIndex, 1, 0);
|
TestTriggers(TriggerIndex, 1, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->frameNumber == Anims[item->animNumber].frameBase + 44)
|
if (item->frameNumber == Anims[item->animNumber].frameBase + 44)
|
||||||
{
|
{
|
||||||
item->swapMeshFlags = 0;
|
item->swapMeshFlags = 0;
|
||||||
short currentItemNumber = Rooms[item->roomNumber].itemNumber;
|
short currentItemNumber = Rooms[item->roomNumber].itemNumber;
|
||||||
if (currentItemNumber == NO_ITEM)
|
if (currentItemNumber == NO_ITEM)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
ITEM_INFO * currentItem;
|
ITEM_INFO * currentItem;
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
currentItem = &Items[currentItemNumber];
|
currentItem = &Items[currentItemNumber];
|
||||||
|
|
||||||
if (currentItem->objectNumber >= ID_ANIMATING1
|
if (currentItem->objectNumber >= ID_ANIMATING1
|
||||||
&& currentItem->objectNumber <= ID_ANIMATING15
|
&& currentItem->objectNumber <= ID_ANIMATING15
|
||||||
&& currentItem->roomNumber == item->roomNumber)
|
&& currentItem->roomNumber == item->roomNumber)
|
||||||
|
@ -705,10 +637,8 @@ void GuardControl(short itemNum)
|
||||||
if (currentItemNumber == -1)
|
if (currentItemNumber == -1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentItemNumber == NO_ITEM)
|
if (currentItemNumber == NO_ITEM)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
currentItem->meshBits = -3;
|
currentItem->meshBits = -3;
|
||||||
}
|
}
|
||||||
else if (item->frameNumber == Anims[item->animNumber].frameEnd)
|
else if (item->frameNumber == Anims[item->animNumber].frameEnd)
|
||||||
|
@ -716,7 +646,6 @@ void GuardControl(short itemNum)
|
||||||
item->pos.yRot -= ANGLE(90);
|
item->pos.yRot -= ANGLE(90);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 17:
|
case 17:
|
||||||
joint2 = 0;
|
joint2 = 0;
|
||||||
if (!item->hitStatus && LaraItem->speed < 40 && !Lara.hasFired)
|
if (!item->hitStatus && LaraItem->speed < 40 && !Lara.hasFired)
|
||||||
|
@ -724,13 +653,11 @@ void GuardControl(short itemNum)
|
||||||
if (creature->alerted)
|
if (creature->alerted)
|
||||||
item->goalAnimState = 18;
|
item->goalAnimState = 18;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_WAITING_ON_WALL:
|
case STATE_GUARD_WAITING_ON_WALL:
|
||||||
joint2 = AIGuard(creature);
|
joint2 = AIGuard(creature);
|
||||||
if (creature->alerted)
|
if (creature->alerted)
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_HUNTING:
|
case STATE_GUARD_HUNTING:
|
||||||
case STATE_GUARD_HUNTING_IDLE:
|
case STATE_GUARD_HUNTING_IDLE:
|
||||||
if (item->currentAnimState == STATE_GUARD_HUNTING_IDLE)
|
if (item->currentAnimState == STATE_GUARD_HUNTING_IDLE)
|
||||||
|
@ -738,13 +665,11 @@ void GuardControl(short itemNum)
|
||||||
if (item->triggerFlags != 8 || !los || item->hitStatus)
|
if (item->triggerFlags != 8 || !los || item->hitStatus)
|
||||||
item->goalAnimState = STATE_GUARD_HUNTING;
|
item->goalAnimState = STATE_GUARD_HUNTING;
|
||||||
}
|
}
|
||||||
|
|
||||||
creature->LOT.isJumping = false;
|
creature->LOT.isJumping = false;
|
||||||
creature->maximumTurn = ANGLE(5);
|
creature->maximumTurn = ANGLE(5);
|
||||||
if (canJump1block || canJump2blocks || info.distance < 0x100000 || !los || item->hitStatus)
|
if (canJump1block || canJump2blocks || info.distance < 0x100000 || !los || item->hitStatus)
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_INSERT_CODE:
|
case STATE_GUARD_INSERT_CODE:
|
||||||
if (item->frameNumber == Anims[item->animNumber].frameBase + 39)
|
if (item->frameNumber == Anims[item->animNumber].frameBase + 39)
|
||||||
{
|
{
|
||||||
|
@ -754,7 +679,6 @@ void GuardControl(short itemNum)
|
||||||
TestTriggers(TriggerIndex, 1, 0);
|
TestTriggers(TriggerIndex, 1, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_START_USE_COMPUTER:
|
case STATE_GUARD_START_USE_COMPUTER:
|
||||||
currentItem = NULL;
|
currentItem = NULL;
|
||||||
for (currentItemNumber = Rooms[item->roomNumber].itemNumber; currentItemNumber != NO_ITEM; currentItemNumber = currentItem->nextItem)
|
for (currentItemNumber = Rooms[item->roomNumber].itemNumber; currentItemNumber != NO_ITEM; currentItemNumber = currentItem->nextItem)
|
||||||
|
@ -763,7 +687,6 @@ void GuardControl(short itemNum)
|
||||||
if (item->objectNumber == ID_PUZZLE_HOLE8)
|
if (item->objectNumber == ID_PUZZLE_HOLE8)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->frameNumber == Anims[item->animNumber].frameBase)
|
if (item->frameNumber == Anims[item->animNumber].frameBase)
|
||||||
{
|
{
|
||||||
currentItem->meshBits = 0x1FFF;
|
currentItem->meshBits = 0x1FFF;
|
||||||
|
@ -806,7 +729,6 @@ void GuardControl(short itemNum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_USE_COMPUTER:
|
case STATE_GUARD_USE_COMPUTER:
|
||||||
if ((item->objectNumber != ID_SCIENTIST || item != Lara.target)
|
if ((item->objectNumber != ID_SCIENTIST || item != Lara.target)
|
||||||
&& (GetRandomControl() & 0x7F || item->triggerFlags >= 10 || item->triggerFlags == 9))
|
&& (GetRandomControl() & 0x7F || item->triggerFlags >= 10 || item->triggerFlags == 9))
|
||||||
|
@ -829,7 +751,6 @@ void GuardControl(short itemNum)
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_GUARD_SURREND:
|
case STATE_GUARD_SURREND:
|
||||||
if (item != Lara.target && !(GetRandomControl() & 0x3F))
|
if (item != Lara.target && !(GetRandomControl() & 0x3F))
|
||||||
{
|
{
|
||||||
|
@ -837,7 +758,6 @@ void GuardControl(short itemNum)
|
||||||
item->requiredAnimState = STATE_GUARD_USE_COMPUTER;
|
item->requiredAnimState = STATE_GUARD_USE_COMPUTER;
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->frameNumber == Anims[item->animNumber].frameBase + 39)
|
if (item->frameNumber == Anims[item->animNumber].frameBase + 39)
|
||||||
{
|
{
|
||||||
roomNumber = item->roomNumber;
|
roomNumber = item->roomNumber;
|
||||||
|
@ -846,17 +766,13 @@ void GuardControl(short itemNum)
|
||||||
TestTriggers(TriggerIndex, 1, 0);
|
TestTriggers(TriggerIndex, 1, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CreatureJoint(item, 0, joint0);
|
CreatureJoint(item, 0, joint0);
|
||||||
CreatureJoint(item, 1, joint1);
|
CreatureJoint(item, 1, joint1);
|
||||||
CreatureJoint(item, 2, joint2);
|
CreatureJoint(item, 2, joint2);
|
||||||
|
|
||||||
if (creature->reachedGoal && creature->enemy)
|
if (creature->reachedGoal && creature->enemy)
|
||||||
{
|
{
|
||||||
ITEM_INFO* enemy = creature->enemy;
|
ITEM_INFO* enemy = creature->enemy;
|
||||||
|
@ -902,7 +818,6 @@ void GuardControl(short itemNum)
|
||||||
item->requiredAnimState = 37;
|
item->requiredAnimState = 37;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((item->currentAnimState >= 20
|
if ((item->currentAnimState >= 20
|
||||||
|| item->currentAnimState == 6
|
|| item->currentAnimState == 6
|
||||||
|| item->currentAnimState == 8)
|
|| item->currentAnimState == 8)
|
||||||
|
@ -920,35 +835,30 @@ void GuardControl(short itemNum)
|
||||||
item->currentAnimState = 23;
|
item->currentAnimState = 23;
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
item->animNumber = animIndex + 39;
|
item->animNumber = animIndex + 39;
|
||||||
item->currentAnimState = 24;
|
item->currentAnimState = 24;
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
item->animNumber = animIndex + 40;
|
item->animNumber = animIndex + 40;
|
||||||
item->currentAnimState = 25;
|
item->currentAnimState = 25;
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
item->animNumber = animIndex + 35;
|
item->animNumber = animIndex + 35;
|
||||||
item->currentAnimState = 20;
|
item->currentAnimState = 20;
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
item->animNumber = animIndex + 36;
|
item->animNumber = animIndex + 36;
|
||||||
item->currentAnimState = 21;
|
item->currentAnimState = 21;
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
item->animNumber = animIndex + 37;
|
item->animNumber = animIndex + 37;
|
||||||
|
@ -958,7 +868,6 @@ void GuardControl(short itemNum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SniperControl(short itemNumber)
|
void SniperControl(short itemNumber)
|
||||||
{
|
{
|
||||||
if (CreatureActive(itemNumber))
|
if (CreatureActive(itemNumber))
|
||||||
|
@ -967,24 +876,18 @@ void SniperControl(short itemNumber)
|
||||||
short joint0 = 0;
|
short joint0 = 0;
|
||||||
short joint2 = 0;
|
short joint2 = 0;
|
||||||
short joint1 = 0;
|
short joint1 = 0;
|
||||||
|
|
||||||
ITEM_INFO* item = &Items[itemNumber];
|
ITEM_INFO* item = &Items[itemNumber];
|
||||||
CREATURE_INFO* creature = (CREATURE_INFO*)item->data;
|
CREATURE_INFO* creature = (CREATURE_INFO*)item->data;
|
||||||
|
|
||||||
if (item->firedWeapon)
|
if (item->firedWeapon)
|
||||||
{
|
{
|
||||||
PHD_VECTOR pos;
|
PHD_VECTOR pos;
|
||||||
|
|
||||||
pos.x = SniperGun.x;
|
pos.x = SniperGun.x;
|
||||||
pos.y = SniperGun.y;
|
pos.y = SniperGun.y;
|
||||||
pos.z = SniperGun.z;
|
pos.z = SniperGun.z;
|
||||||
|
|
||||||
GetJointAbsPosition(item, &pos, SniperGun.meshNum);
|
GetJointAbsPosition(item, &pos, SniperGun.meshNum);
|
||||||
TriggerDynamicLight(pos.x, pos.y, pos.z, 2 * item->firedWeapon + 10, 192, 128, 32);
|
TriggerDynamicLight(pos.x, pos.y, pos.z, 2 * item->firedWeapon + 10, 192, 128, 32);
|
||||||
|
|
||||||
item->firedWeapon--;
|
item->firedWeapon--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->hitPoints > 0)
|
if (item->hitPoints > 0)
|
||||||
{
|
{
|
||||||
if (item->aiBits)
|
if (item->aiBits)
|
||||||
|
@ -995,24 +898,18 @@ void SniperControl(short itemNumber)
|
||||||
{
|
{
|
||||||
creature->enemy = LaraItem;
|
creature->enemy = LaraItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
AI_INFO info;
|
AI_INFO info;
|
||||||
CreatureAIInfo(item, &info);
|
CreatureAIInfo(item, &info);
|
||||||
|
|
||||||
GetCreatureMood(item, &info, VIOLENT);
|
GetCreatureMood(item, &info, VIOLENT);
|
||||||
CreatureMood(item, &info, VIOLENT);
|
CreatureMood(item, &info, VIOLENT);
|
||||||
|
|
||||||
angle = CreatureTurn(item, creature->maximumTurn);
|
angle = CreatureTurn(item, creature->maximumTurn);
|
||||||
|
|
||||||
if (info.ahead)
|
if (info.ahead)
|
||||||
{
|
{
|
||||||
joint0 = info.angle >> 1;
|
joint0 = info.angle >> 1;
|
||||||
joint2 = info.angle >> 1;
|
joint2 = info.angle >> 1;
|
||||||
joint1 = info.xAngle;
|
joint1 = info.xAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
|
|
||||||
switch (item->currentAnimState)
|
switch (item->currentAnimState)
|
||||||
{
|
{
|
||||||
case STATE_SNIPER_STOP:
|
case STATE_SNIPER_STOP:
|
||||||
|
@ -1020,11 +917,9 @@ void SniperControl(short itemNumber)
|
||||||
if (TargetVisible(item, &info))
|
if (TargetVisible(item, &info))
|
||||||
item->goalAnimState = STATE_SNIPER_UNHIDE;
|
item->goalAnimState = STATE_SNIPER_UNHIDE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_SNIPER_UNHIDE:
|
case STATE_SNIPER_UNHIDE:
|
||||||
item->meshBits = -1;
|
item->meshBits = -1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
creature->flags = 0;
|
creature->flags = 0;
|
||||||
if (!TargetVisible(item, &info)
|
if (!TargetVisible(item, &info)
|
||||||
|
@ -1038,7 +933,6 @@ void SniperControl(short itemNumber)
|
||||||
item->goalAnimState = STATE_SNIPER_FIRE;
|
item->goalAnimState = STATE_SNIPER_FIRE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_SNIPER_FIRE:
|
case STATE_SNIPER_FIRE:
|
||||||
if (!creature->flags)
|
if (!creature->flags)
|
||||||
{
|
{
|
||||||
|
@ -1047,7 +941,6 @@ void SniperControl(short itemNumber)
|
||||||
item->firedWeapon = 2;
|
item->firedWeapon = 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1062,7 +955,6 @@ void SniperControl(short itemNumber)
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CreatureTilt(item, 0);
|
CreatureTilt(item, 0);
|
||||||
CreatureJoint(item, 0, joint0);
|
CreatureJoint(item, 0, joint0);
|
||||||
CreatureJoint(item, 1, joint1);
|
CreatureJoint(item, 1, joint1);
|
||||||
|
@ -1070,63 +962,47 @@ void SniperControl(short itemNumber)
|
||||||
CreatureAnimation(itemNumber, angle, 0);
|
CreatureAnimation(itemNumber, angle, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void InitialiseMafia2(short itemNum)
|
void InitialiseMafia2(short itemNum)
|
||||||
{
|
{
|
||||||
ITEM_INFO* item = &Items[itemNum];
|
ITEM_INFO* item = &Items[itemNum];
|
||||||
|
|
||||||
ClearItem(itemNum);
|
ClearItem(itemNum);
|
||||||
|
|
||||||
item->animNumber = Objects[item->objectNumber].animIndex;
|
item->animNumber = Objects[item->objectNumber].animIndex;
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
item->goalAnimState = STATE_GUARD_STOP;
|
item->goalAnimState = STATE_GUARD_STOP;
|
||||||
item->currentAnimState = STATE_GUARD_STOP;
|
item->currentAnimState = STATE_GUARD_STOP;
|
||||||
item->swapMeshFlags = 9216;
|
item->swapMeshFlags = 9216;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mafia2Control(short itemNum)
|
void Mafia2Control(short itemNum)
|
||||||
{
|
{
|
||||||
if (!CreatureActive(itemNum))
|
if (!CreatureActive(itemNum))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ITEM_INFO* item = &Items[itemNum];
|
ITEM_INFO* item = &Items[itemNum];
|
||||||
CREATURE_INFO* creature = (CREATURE_INFO*)item->data;
|
CREATURE_INFO* creature = (CREATURE_INFO*)item->data;
|
||||||
|
|
||||||
short angle = 0;
|
short angle = 0;
|
||||||
short joint2 = 0;
|
short joint2 = 0;
|
||||||
short joint1 = 0;
|
short joint1 = 0;
|
||||||
short joint0 = 0;
|
short joint0 = 0;
|
||||||
|
|
||||||
// Can baddy jump? Check for a distance of 1 and 2 sectors
|
// Can baddy jump? Check for a distance of 1 and 2 sectors
|
||||||
int x = item->pos.xPos;
|
int x = item->pos.xPos;
|
||||||
int y = item->pos.yPos;
|
int y = item->pos.yPos;
|
||||||
int z = item->pos.zPos;
|
int z = item->pos.zPos;
|
||||||
|
|
||||||
int dx = 870 * SIN(item->pos.yRot) >> W2V_SHIFT;
|
int dx = 870 * SIN(item->pos.yRot) >> W2V_SHIFT;
|
||||||
int dz = 870 * COS(item->pos.yRot) >> W2V_SHIFT;
|
int dz = 870 * COS(item->pos.yRot) >> W2V_SHIFT;
|
||||||
|
|
||||||
x += dx;
|
x += dx;
|
||||||
z += dz;
|
z += dz;
|
||||||
|
|
||||||
short roomNumber = item->roomNumber;
|
short roomNumber = item->roomNumber;
|
||||||
FLOOR_INFO* floor = GetFloor(x, y, z, &roomNumber);
|
FLOOR_INFO* floor = GetFloor(x, y, z, &roomNumber);
|
||||||
int height1 = GetFloorHeight(floor, x, y, z);
|
int height1 = GetFloorHeight(floor, x, y, z);
|
||||||
|
|
||||||
x += dx;
|
x += dx;
|
||||||
z += dz;
|
z += dz;
|
||||||
|
|
||||||
roomNumber = item->roomNumber;
|
roomNumber = item->roomNumber;
|
||||||
floor = GetFloor(x, y, z, &roomNumber);
|
floor = GetFloor(x, y, z, &roomNumber);
|
||||||
int height2 = GetFloorHeight(floor, x, y, z);
|
int height2 = GetFloorHeight(floor, x, y, z);
|
||||||
|
|
||||||
x += dx;
|
x += dx;
|
||||||
z += dz;
|
z += dz;
|
||||||
|
|
||||||
roomNumber = item->roomNumber;
|
roomNumber = item->roomNumber;
|
||||||
floor = GetFloor(x, y, z, &roomNumber);
|
floor = GetFloor(x, y, z, &roomNumber);
|
||||||
int height3 = GetFloorHeight(floor, x, y, z);
|
int height3 = GetFloorHeight(floor, x, y, z);
|
||||||
|
|
||||||
int height = 0;
|
int height = 0;
|
||||||
bool canJump1sector = true;
|
bool canJump1sector = true;
|
||||||
if (item->boxNumber == LaraItem->boxNumber
|
if (item->boxNumber == LaraItem->boxNumber
|
||||||
|
@ -1137,7 +1013,6 @@ void Mafia2Control(short itemNum)
|
||||||
height = height2;
|
height = height2;
|
||||||
canJump1sector = false;
|
canJump1sector = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool canJump2sectors = true;
|
bool canJump2sectors = true;
|
||||||
if (item->boxNumber == LaraItem->boxNumber
|
if (item->boxNumber == LaraItem->boxNumber
|
||||||
|| y >= height1 - 384
|
|| y >= height1 - 384
|
||||||
|
@ -1147,34 +1022,26 @@ void Mafia2Control(short itemNum)
|
||||||
{
|
{
|
||||||
canJump2sectors = false;
|
canJump2sectors = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->firedWeapon)
|
if (item->firedWeapon)
|
||||||
{
|
{
|
||||||
PHD_VECTOR pos;
|
PHD_VECTOR pos;
|
||||||
|
|
||||||
pos.x = ArmedBaddy2Gun.x;
|
pos.x = ArmedBaddy2Gun.x;
|
||||||
pos.y = ArmedBaddy2Gun.y;
|
pos.y = ArmedBaddy2Gun.y;
|
||||||
pos.z = ArmedBaddy2Gun.z;
|
pos.z = ArmedBaddy2Gun.z;
|
||||||
|
|
||||||
GetJointAbsPosition(item, &pos, ArmedBaddy2Gun.meshNum);
|
GetJointAbsPosition(item, &pos, ArmedBaddy2Gun.meshNum);
|
||||||
TriggerDynamicLight(pos.x, pos.y, pos.z, 4 * item->firedWeapon + 8, 24, 16, 4);
|
TriggerDynamicLight(pos.x, pos.y, pos.z, 4 * item->firedWeapon + 8, 24, 16, 4);
|
||||||
item->firedWeapon--;
|
item->firedWeapon--;
|
||||||
}
|
}
|
||||||
|
|
||||||
AI_INFO info;
|
AI_INFO info;
|
||||||
AI_INFO laraInfo;
|
AI_INFO laraInfo;
|
||||||
|
|
||||||
ZeroMemory(&info, sizeof(AI_INFO));
|
ZeroMemory(&info, sizeof(AI_INFO));
|
||||||
|
|
||||||
if (item->hitPoints > 0)
|
if (item->hitPoints > 0)
|
||||||
{
|
{
|
||||||
if (item->aiBits)
|
if (item->aiBits)
|
||||||
GetAITarget(creature);
|
GetAITarget(creature);
|
||||||
else
|
else
|
||||||
creature->enemy = LaraItem;
|
creature->enemy = LaraItem;
|
||||||
|
|
||||||
CreatureAIInfo(item, &info);
|
CreatureAIInfo(item, &info);
|
||||||
|
|
||||||
if (creature->enemy == LaraItem)
|
if (creature->enemy == LaraItem)
|
||||||
{
|
{
|
||||||
laraInfo.angle = info.angle;
|
laraInfo.angle = info.angle;
|
||||||
|
@ -1184,17 +1051,13 @@ void Mafia2Control(short itemNum)
|
||||||
{
|
{
|
||||||
dx = LaraItem->pos.xPos - item->pos.xPos;
|
dx = LaraItem->pos.xPos - item->pos.xPos;
|
||||||
dz = LaraItem->pos.zPos - item->pos.zPos;
|
dz = LaraItem->pos.zPos - item->pos.zPos;
|
||||||
|
|
||||||
laraInfo.angle = ATAN(dz, dx) - item->pos.yRot;
|
laraInfo.angle = ATAN(dz, dx) - item->pos.yRot;
|
||||||
laraInfo.distance = SQUARE(dx) + SQUARE(dz);
|
laraInfo.distance = SQUARE(dx) + SQUARE(dz);
|
||||||
}
|
}
|
||||||
|
|
||||||
GetCreatureMood(item, &info, creature->enemy != LaraItem);
|
GetCreatureMood(item, &info, creature->enemy != LaraItem);
|
||||||
CreatureMood(item, &info, creature->enemy != LaraItem);
|
CreatureMood(item, &info, creature->enemy != LaraItem);
|
||||||
|
|
||||||
angle = CreatureTurn(item, creature->maximumTurn);
|
angle = CreatureTurn(item, creature->maximumTurn);
|
||||||
creature->enemy = LaraItem;
|
creature->enemy = LaraItem;
|
||||||
|
|
||||||
if (laraInfo.distance < SQUARE(2048) && LaraItem->speed > 20 || item->hitStatus || TargetVisible(item, &laraInfo))
|
if (laraInfo.distance < SQUARE(2048) && LaraItem->speed > 20 || item->hitStatus || TargetVisible(item, &laraInfo))
|
||||||
{
|
{
|
||||||
if (!(item->aiBits & FOLLOW))
|
if (!(item->aiBits & FOLLOW))
|
||||||
|
@ -1203,7 +1066,6 @@ void Mafia2Control(short itemNum)
|
||||||
AlertAllGuards(itemNum);
|
AlertAllGuards(itemNum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (item->currentAnimState)
|
switch (item->currentAnimState)
|
||||||
{
|
{
|
||||||
case STATE_MAFIA2_STOP:
|
case STATE_MAFIA2_STOP:
|
||||||
|
@ -1211,19 +1073,16 @@ void Mafia2Control(short itemNum)
|
||||||
joint2 = laraInfo.angle;
|
joint2 = laraInfo.angle;
|
||||||
creature->flags = 0;
|
creature->flags = 0;
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
|
|
||||||
if (info.ahead && !(item->aiBits & GUARD))
|
if (info.ahead && !(item->aiBits & GUARD))
|
||||||
{
|
{
|
||||||
joint0 = info.angle >> 1;
|
joint0 = info.angle >> 1;
|
||||||
joint1 = info.xAngle;
|
joint1 = info.xAngle;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item->aiBits & GUARD)
|
if (item->aiBits & GUARD)
|
||||||
{
|
{
|
||||||
joint2 = AIGuard(creature);
|
joint2 = AIGuard(creature);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (laraInfo.angle <= 20480 && laraInfo.angle >= -20480)
|
if (laraInfo.angle <= 20480 && laraInfo.angle >= -20480)
|
||||||
{
|
{
|
||||||
if (item->swapMeshFlags == 9216)
|
if (item->swapMeshFlags == 9216)
|
||||||
|
@ -1237,7 +1096,6 @@ void Mafia2Control(short itemNum)
|
||||||
item->goalAnimState = STATE_MAFIA2_TURN180;
|
item->goalAnimState = STATE_MAFIA2_TURN180;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Targetable(item, &info))
|
if (Targetable(item, &info))
|
||||||
{
|
{
|
||||||
if (info.distance < SQUARE(1024) || info.zoneNumber != info.enemyZone)
|
if (info.distance < SQUARE(1024) || info.zoneNumber != info.enemyZone)
|
||||||
|
@ -1282,7 +1140,6 @@ void Mafia2Control(short itemNum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_MAFIA2_TURN180_UNDRAW_GUNS:
|
case STATE_MAFIA2_TURN180_UNDRAW_GUNS:
|
||||||
case STATE_MAFIA2_TURN180:
|
case STATE_MAFIA2_TURN180:
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
|
@ -1290,7 +1147,6 @@ void Mafia2Control(short itemNum)
|
||||||
item->pos.yRot -= ANGLE(2);
|
item->pos.yRot -= ANGLE(2);
|
||||||
else
|
else
|
||||||
item->pos.yRot += ANGLE(2);
|
item->pos.yRot += ANGLE(2);
|
||||||
|
|
||||||
if (item->frameNumber != Anims[item->animNumber].frameBase + 16
|
if (item->frameNumber != Anims[item->animNumber].frameBase + 16
|
||||||
|| item->swapMeshFlags != 9216)
|
|| item->swapMeshFlags != 9216)
|
||||||
{
|
{
|
||||||
|
@ -1302,7 +1158,6 @@ void Mafia2Control(short itemNum)
|
||||||
item->swapMeshFlags = 128;
|
item->swapMeshFlags = 128;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_MAFIA2_FIRE:
|
case STATE_MAFIA2_FIRE:
|
||||||
joint0 = laraInfo.angle >> 1;
|
joint0 = laraInfo.angle >> 1;
|
||||||
joint2 = laraInfo.angle >> 1;
|
joint2 = laraInfo.angle >> 1;
|
||||||
|
@ -1327,7 +1182,6 @@ void Mafia2Control(short itemNum)
|
||||||
item->firedWeapon = 2;
|
item->firedWeapon = 2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_MAFIA2_AIM:
|
case STATE_MAFIA2_AIM:
|
||||||
joint0 = laraInfo.angle >> 1;
|
joint0 = laraInfo.angle >> 1;
|
||||||
joint2 = laraInfo.angle >> 1;
|
joint2 = laraInfo.angle >> 1;
|
||||||
|
@ -1359,7 +1213,6 @@ void Mafia2Control(short itemNum)
|
||||||
item->goalAnimState = STATE_MAFIA2_STOP;
|
item->goalAnimState = STATE_MAFIA2_STOP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_MAFIA2_WALK:
|
case STATE_MAFIA2_WALK:
|
||||||
creature->LOT.isJumping = false;
|
creature->LOT.isJumping = false;
|
||||||
creature->maximumTurn = ANGLE(5);
|
creature->maximumTurn = ANGLE(5);
|
||||||
|
@ -1394,7 +1247,6 @@ void Mafia2Control(short itemNum)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_MAFIA2_RUN:
|
case STATE_MAFIA2_RUN:
|
||||||
creature->LOT.isJumping = false;
|
creature->LOT.isJumping = false;
|
||||||
creature->maximumTurn = ANGLE(10);
|
creature->maximumTurn = ANGLE(10);
|
||||||
|
@ -1419,7 +1271,6 @@ void Mafia2Control(short itemNum)
|
||||||
item->goalAnimState = STATE_MAFIA2_WALK;
|
item->goalAnimState = STATE_MAFIA2_WALK;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STATE_MAFIA2_UNDRAW_GUNS:
|
case STATE_MAFIA2_UNDRAW_GUNS:
|
||||||
creature->maximumTurn = 0;
|
creature->maximumTurn = 0;
|
||||||
if (info.angle >= 0)
|
if (info.angle >= 0)
|
||||||
|
@ -1430,7 +1281,6 @@ void Mafia2Control(short itemNum)
|
||||||
&& item->swapMeshFlags == 9216)
|
&& item->swapMeshFlags == 9216)
|
||||||
item->swapMeshFlags = 128;
|
item->swapMeshFlags = 128;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1454,11 +1304,9 @@ void Mafia2Control(short itemNum)
|
||||||
item->frameNumber = Anims[item->animNumber].frameBase;
|
item->frameNumber = Anims[item->animNumber].frameBase;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CreatureJoint(item, 0, joint0);
|
CreatureJoint(item, 0, joint0);
|
||||||
CreatureJoint(item, 1, joint1);
|
CreatureJoint(item, 1, joint1);
|
||||||
CreatureJoint(item, 2, joint2);
|
CreatureJoint(item, 2, joint2);
|
||||||
|
|
||||||
if (item->currentAnimState >= 20 || item->currentAnimState == 6 || item->currentAnimState == 8)
|
if (item->currentAnimState >= 20 || item->currentAnimState == 6 || item->currentAnimState == 8)
|
||||||
{
|
{
|
||||||
CreatureAnimation(itemNum, angle, 0);
|
CreatureAnimation(itemNum, angle, 0);
|
||||||
|
@ -1507,4 +1355,9 @@ void Mafia2Control(short itemNum)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ControlGuardLaser(short itemNumber)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -488,17 +488,17 @@ bool Renderer11::PrepareDataForTheRenderer()
|
||||||
// HACK: mesh pointer 0 is the placeholder for Lara's body parts and is right hand with pistols
|
// HACK: mesh pointer 0 is the placeholder for Lara's body parts and is right hand with pistols
|
||||||
// We need to override the bone index because the engine will take mesh 0 while drawing pistols anim,
|
// We need to override the bone index because the engine will take mesh 0 while drawing pistols anim,
|
||||||
// and vertices have bone index 0 and not 10
|
// and vertices have bone index 0 and not 10
|
||||||
int boneIndex = (Meshes[obj->meshIndex + j] == Meshes[0] ? LM_RHAND : j);
|
|
||||||
|
|
||||||
RendererMesh * mesh = getRendererMeshFromTrMesh(moveable,
|
RendererMesh * mesh = getRendererMeshFromTrMesh(moveable,
|
||||||
Meshes[obj->meshIndex + j],
|
Meshes[obj->meshIndex + j],
|
||||||
boneIndex, MoveablesIds[i] == ID_LARA_SKIN_JOINTS,
|
j, MoveablesIds[i] == ID_LARA_SKIN_JOINTS,
|
||||||
MoveablesIds[i] == ID_LARA_HAIR);
|
MoveablesIds[i] == ID_LARA_HAIR);
|
||||||
moveable->ObjectMeshes.push_back(mesh);
|
moveable->ObjectMeshes.push_back(mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (objNum == ID_IMP_ROCK || objNum == ID_ENERGY_BUBBLES || objNum == ID_BUBBLES)
|
if (objNum == ID_IMP_ROCK || objNum == ID_ENERGY_BUBBLES || objNum == ID_BUBBLES || objNum == ID_BODY_PART)
|
||||||
{
|
{
|
||||||
|
// HACK: these objects must have nmeshes = 0 because engine will use them in a different way while drawing Effects.
|
||||||
|
// In Core's code this was done in SETUP.C but we must do it here because we need to create renderer's meshes.
|
||||||
obj->nmeshes = 0;
|
obj->nmeshes = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -747,21 +747,6 @@ bool Renderer11::PrepareDataForTheRenderer()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create missing meshes (effect objects like ID_BODY_PART have nmeshes = 0 and they are "lost" with current procedures)
|
|
||||||
/*for (int i = 0; i < NumMeshPointers; i++)
|
|
||||||
{
|
|
||||||
unsigned int mp = reinterpret_cast<unsigned int>(Meshes[i]);
|
|
||||||
//RendererMesh* mesh = m_meshPointersToMesh[mp];
|
|
||||||
if (m_meshPointersToMesh.find(mp) == m_meshPointersToMesh.end())
|
|
||||||
{
|
|
||||||
RendererMesh* mesh = getRendererMeshFromTrMesh(NULL,
|
|
||||||
Meshes[i],
|
|
||||||
0,
|
|
||||||
false,
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Create a single vertex buffer and a single index buffer for all statics
|
// Create a single vertex buffer and a single index buffer for all statics
|
||||||
m_staticsVertexBuffer = VertexBuffer::Create(m_device, staticsVertices.size(), staticsVertices.data());
|
m_staticsVertexBuffer = VertexBuffer::Create(m_device, staticsVertices.size(), staticsVertices.data());
|
||||||
m_staticsIndexBuffer = IndexBuffer::Create(m_device, staticsIndices.size(), staticsIndices.data());
|
m_staticsIndexBuffer = IndexBuffer::Create(m_device, staticsIndices.size(), staticsIndices.data());
|
||||||
|
|
|
@ -1481,7 +1481,7 @@ bool Renderer11::drawRats()
|
||||||
|
|
||||||
if (rat->on)
|
if (rat->on)
|
||||||
{
|
{
|
||||||
short* meshPtr = Meshes[Objects[ID_RATS_EMITTER].meshIndex + (((i + Wibble) >> 1) & 0xE)];
|
short* meshPtr = Meshes[Objects[ID_RATS_EMITTER].meshIndex + (rand() % 8)];
|
||||||
RendererMesh * mesh = m_meshPointersToMesh[reinterpret_cast<unsigned int>(meshPtr)];
|
RendererMesh * mesh = m_meshPointersToMesh[reinterpret_cast<unsigned int>(meshPtr)];
|
||||||
Matrix translation = Matrix::CreateTranslation(rat->pos.xPos, rat->pos.yPos, rat->pos.zPos);
|
Matrix translation = Matrix::CreateTranslation(rat->pos.xPos, rat->pos.yPos, rat->pos.zPos);
|
||||||
Matrix rotation = Matrix::CreateFromYawPitchRoll(rat->pos.yRot, rat->pos.xRot, rat->pos.zRot);
|
Matrix rotation = Matrix::CreateFromYawPitchRoll(rat->pos.yRot, rat->pos.xRot, rat->pos.zRot);
|
||||||
|
|
|
@ -189,10 +189,6 @@ void NewObjects()
|
||||||
Bones[obj->boneIndex + 28 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 28 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 88 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 88 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 88 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 88 * 4] |= ROT_X;
|
||||||
|
|
||||||
/*Meshes[obj->meshIndex + 18] = Meshes[Objects[ID_MESHSWAP_BADDY1].meshIndex + 16];
|
|
||||||
Meshes[obj->meshIndex + 30] = Meshes[Objects[ID_MESHSWAP_BADDY1].meshIndex + 28];
|
|
||||||
Meshes[obj->meshIndex + 18] = Meshes[Objects[ID_MESHSWAP_BADDY1].meshIndex + 11];*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_BADDY2];
|
obj = &Objects[ID_BADDY2];
|
||||||
|
@ -929,11 +925,6 @@ void NewObjects()
|
||||||
|
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X | ROT_Y;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X | ROT_Y;
|
||||||
Bones[obj->boneIndex + 20 * 4] |= ROT_X | ROT_Y;
|
Bones[obj->boneIndex + 20 * 4] |= ROT_X | ROT_Y;
|
||||||
|
|
||||||
// TODO: check if constants are byte, short or int
|
|
||||||
Meshes[obj->meshIndex + 60] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 60];
|
|
||||||
Meshes[obj->meshIndex + 72] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 72];
|
|
||||||
Meshes[obj->meshIndex + 84] = Meshes[Objects[ID_MESHSWAP2].meshIndex + 84];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_CROCODILE];
|
obj = &Objects[ID_CROCODILE];
|
||||||
|
@ -1046,13 +1037,7 @@ void NewObjects()
|
||||||
obj->saveAnim = true;
|
obj->saveAnim = true;
|
||||||
obj->saveFlags = true;
|
obj->saveFlags = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: fix this
|
|
||||||
obj = &Objects[ID_ENERGY_BUBBLES];
|
|
||||||
obj->loaded = true;
|
|
||||||
obj->control = BubblesControl;
|
|
||||||
obj->nmeshes = 0;
|
|
||||||
|
|
||||||
obj = &Objects[ID_MP_WITH_GUN];
|
obj = &Objects[ID_MP_WITH_GUN];
|
||||||
if (obj->loaded)
|
if (obj->loaded)
|
||||||
{
|
{
|
||||||
|
@ -1219,8 +1204,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
//Meshes[obj->meshIndex + 10] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 10];
|
|
||||||
//Meshes[obj->meshIndex + 13] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 13];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_GUARD1];
|
obj = &Objects[ID_GUARD1];
|
||||||
|
@ -1249,8 +1232,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
Meshes[obj->meshIndex + 10] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 10];
|
|
||||||
Meshes[obj->meshIndex + 13] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 13];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_SWAT_PLUS];
|
obj = &Objects[ID_SWAT_PLUS];
|
||||||
|
@ -1282,8 +1263,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
//Meshes[obj->meshIndex + 10] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 10];
|
|
||||||
//Meshes[obj->meshIndex + 13] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 13];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_MAFIA];
|
obj = &Objects[ID_MAFIA];
|
||||||
|
@ -1316,8 +1295,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
Meshes[obj->meshIndex + 10] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 10];
|
|
||||||
Meshes[obj->meshIndex + 13] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 13];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_SCIENTIST];
|
obj = &Objects[ID_SCIENTIST];
|
||||||
|
@ -1347,8 +1324,6 @@ void BaddyObjects()
|
||||||
Bones[Objects[69].boneIndex + 6 * 4] |= ROT_X;
|
Bones[Objects[69].boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[Objects[69].boneIndex + 13 * 4] |= ROT_Y;
|
Bones[Objects[69].boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[Objects[69].boneIndex + 13 * 4] |= ROT_X;
|
Bones[Objects[69].boneIndex + 13 * 4] |= ROT_X;
|
||||||
//Meshes[Objects[69].meshIndex + 10] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 10];
|
|
||||||
//Meshes[Objects[69].meshIndex + 13] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 13];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_GUARD2];
|
obj = &Objects[ID_GUARD2];
|
||||||
|
@ -1381,8 +1356,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
Meshes[obj->meshIndex + 10] = Meshes[Objects[405].meshIndex + 10];
|
|
||||||
Meshes[obj->meshIndex + 13] = Meshes[Objects[405].meshIndex + 13];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_GUARD3];
|
obj = &Objects[ID_GUARD3];
|
||||||
|
@ -1415,8 +1388,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
Meshes[obj->meshIndex + 10] = Meshes[Objects[405].meshIndex + 10];
|
|
||||||
Meshes[obj->meshIndex + 13] = Meshes[Objects[405].meshIndex + 13];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_ATTACK_SUB];
|
obj = &Objects[ID_ATTACK_SUB];
|
||||||
|
@ -1546,10 +1517,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
|
|
||||||
/*Meshes[obj->meshIndex + 7] = Meshes[Objects[ID_MESHSWAP_MAFIA2].meshIndex + 7];
|
|
||||||
Meshes[obj->meshIndex + 10] = Meshes[Objects[ID_MESHSWAP_MAFIA2].meshIndex + 10];
|
|
||||||
Meshes[obj->meshIndex + 13] = Meshes[Objects[ID_MESHSWAP_MAFIA2].meshIndex + 13];*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_PIERRE];
|
obj = &Objects[ID_PIERRE];
|
||||||
|
@ -1676,7 +1643,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex] |= ROT_X;
|
Bones[obj->boneIndex] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 4] |= ROT_Y;
|
Bones[obj->boneIndex + 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 4] |= ROT_X;
|
Bones[obj->boneIndex + 4] |= ROT_X;
|
||||||
Meshes[obj->meshIndex + 10] = Meshes[Objects[ID_MESHSWAP1].meshIndex + 2];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_HYDRA];
|
obj = &Objects[ID_HYDRA];
|
||||||
|
@ -1726,8 +1692,6 @@ void BaddyObjects()
|
||||||
Bones[obj->meshIndex + 4 * 4] |= ROT_X;
|
Bones[obj->meshIndex + 4 * 4] |= ROT_X;
|
||||||
Bones[obj->meshIndex + 9 * 4] |= ROT_Z;
|
Bones[obj->meshIndex + 9 * 4] |= ROT_Z;
|
||||||
Bones[obj->meshIndex + 9 * 4] |= ROT_X;
|
Bones[obj->meshIndex + 9 * 4] |= ROT_X;
|
||||||
|
|
||||||
//Meshes[obj->meshIndex + 10] = Meshes[Objects[ID_MESHSWAP_IMP].meshIndex + 10];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_WILLOWISP];
|
obj = &Objects[ID_WILLOWISP];
|
||||||
|
@ -1881,20 +1845,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 6 * 4] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
Bones[obj->boneIndex + 13 * 4] |= ROT_X;
|
||||||
|
|
||||||
for (int i = (obj->nmeshes - 1); i > 0; i--)
|
|
||||||
{
|
|
||||||
Meshes[obj->meshIndex + i] = Meshes[Objects[ID_MESHSWAP1].meshIndex + i];
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
do
|
|
||||||
{
|
|
||||||
(&Meshes[v36 + 1])[obj->meshIndex] = Meshes[v36 + Objects[ID_MESHSWAP1].meshIndex];
|
|
||||||
v36 = v45 + 2;
|
|
||||||
v25 = v42 == 1;
|
|
||||||
v45 += 2;
|
|
||||||
--v42;
|
|
||||||
} while (!v25);*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_ROMAN_GOD];
|
obj = &Objects[ID_ROMAN_GOD];
|
||||||
|
@ -1920,21 +1870,6 @@ void BaddyObjects()
|
||||||
Bones[obj->boneIndex + 24] |= ROT_X;
|
Bones[obj->boneIndex + 24] |= ROT_X;
|
||||||
Bones[obj->boneIndex + 52] |= ROT_Y;
|
Bones[obj->boneIndex + 52] |= ROT_Y;
|
||||||
Bones[obj->boneIndex + 52] |= ROT_X;
|
Bones[obj->boneIndex + 52] |= ROT_X;
|
||||||
|
|
||||||
/*for (int i = (obj->nmeshes - 1); i > 0; i--)
|
|
||||||
{
|
|
||||||
Meshes[obj->meshIndex + i] = Meshes[Objects[ID_MESHSWAP_ROMAN_GOD].meshIndex + i];
|
|
||||||
}
|
|
||||||
|
|
||||||
do
|
|
||||||
{
|
|
||||||
(&meshes[v38 + 1])[Objects[61].mesh_index] = meshes[v38 + Objects[405].mesh_index];
|
|
||||||
v38 = v46 + 2;
|
|
||||||
v25 = v43 == 1;
|
|
||||||
v46 += 2;
|
|
||||||
--v43;
|
|
||||||
} while (!v25);
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_GUARDIAN];
|
obj = &Objects[ID_GUARDIAN];
|
||||||
|
@ -2618,18 +2553,6 @@ void ObjectObjects()
|
||||||
obj->savePosition = true;
|
obj->savePosition = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
v25 = 0;
|
|
||||||
do
|
|
||||||
{
|
|
||||||
v26 = v25 + Objects[ID_SCUBA_HARPOON].mesh_index;
|
|
||||||
v27 = v25 + Objects[ID_BURNING_ROOTS].mesh_index;
|
|
||||||
v25 += 2;
|
|
||||||
meshes[v27 + 1] = meshes[v26];
|
|
||||||
}
|
|
||||||
while ( v25 < 56 );
|
|
||||||
*/
|
|
||||||
|
|
||||||
obj = &Objects[ID_XRAY_CONTROLLER];
|
obj = &Objects[ID_XRAY_CONTROLLER];
|
||||||
if (obj->loaded)
|
if (obj->loaded)
|
||||||
{
|
{
|
||||||
|
@ -2642,7 +2565,6 @@ void ObjectObjects()
|
||||||
// by default loaded, explosion time :D
|
// by default loaded, explosion time :D
|
||||||
obj = &Objects[ID_BODY_PART];
|
obj = &Objects[ID_BODY_PART];
|
||||||
obj->loaded = true;
|
obj->loaded = true;
|
||||||
obj->nmeshes = 0;
|
|
||||||
|
|
||||||
obj = &Objects[ID_EARTHQUAKE];
|
obj = &Objects[ID_EARTHQUAKE];
|
||||||
if (obj->loaded)
|
if (obj->loaded)
|
||||||
|
@ -2706,18 +2628,22 @@ void ObjectObjects()
|
||||||
obj->saveFlags = true;
|
obj->saveFlags = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obj = &Objects[ID_ENERGY_BUBBLES];
|
||||||
|
if (obj->loaded)
|
||||||
|
{
|
||||||
|
obj->control = BubblesControl;
|
||||||
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_BUBBLES];
|
obj = &Objects[ID_BUBBLES];
|
||||||
if (obj->loaded)
|
if (obj->loaded)
|
||||||
{
|
{
|
||||||
obj->control = MissileControl;
|
obj->control = MissileControl;
|
||||||
obj->nmeshes = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_IMP_ROCK];
|
obj = &Objects[ID_IMP_ROCK];
|
||||||
if (obj->loaded)
|
if (obj->loaded)
|
||||||
{
|
{
|
||||||
obj->control = MissileControl;
|
obj->control = MissileControl;
|
||||||
//obj->nmeshes = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = &Objects[ID_WATERFALLMIST];
|
obj = &Objects[ID_WATERFALLMIST];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue