TombEngine/TR5Main/Objects/TR5/tr5_reaper.cpp

58 lines
1.2 KiB
C++
Raw Normal View History

#include "../newobjects.h"
#include "../../Game/items.h"
2019-12-29 20:53:05 +01:00
#include "../../Game/Box.h"
void InitialiseReaper(short itemNum)
{
ITEM_INFO* item;
ClearItem(itemNum);
item = &Items[itemNum];
item->animNumber = Objects[item->objectNumber].animIndex + 1;
item->frameNumber = Anims[item->animNumber].frameBase;
item->goalAnimState = 2;
item->currentAnimState = 2;
2019-12-29 20:53:05 +01:00
}
void ControlReaper(short itemNumber)
{
if (CreatureActive(itemNumber))
{
ITEM_INFO* item = &Items[itemNumber];
CREATURE_INFO* creature = (CREATURE_INFO*)item->data;
if (item->aiBits)
GetAITarget(creature);
else
creature->enemy = LaraItem;
AI_INFO info;
CreatureAIInfo(item, &info);
GetCreatureMood(item, &info, TIMID);
CreatureMood(item, &info, TIMID);
short angle = CreatureTurn(item, ANGLE(2));
if (item->currentAnimState == 2
&& !(GetRandomControl() & 0x3F))
item->goalAnimState = 1;
if (creature->reachedGoal)
{
if (creature->enemy)
{
if (creature->enemy->flags & 2)
item->itemFlags[3] = item->pad2[6] - 1;
item->itemFlags[3]++;
creature->reachedGoal = false;
creature->enemy = NULL;
}
}
item->pos.xRot = -12288;
CreatureAnimation(itemNumber, angle, 0);
CreatureUnderwater(item, 1024);
}
}