mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-04-30 16:57:57 +03:00
74 lines
No EOL
1.3 KiB
C++
74 lines
No EOL
1.3 KiB
C++
#include "..\newobjects.h"
|
|
|
|
short GetNextRat()
|
|
{
|
|
short ratNum = NextRat;
|
|
int i = 0;
|
|
RAT_STRUCT* rat = &Rats[NextRat];
|
|
|
|
while (rat->on)
|
|
{
|
|
if (ratNum == 31)
|
|
{
|
|
rat = &Rats[0];
|
|
ratNum = 0;
|
|
}
|
|
else
|
|
{
|
|
ratNum++;
|
|
rat++;
|
|
}
|
|
|
|
i++;
|
|
|
|
if (i >= 32)
|
|
return NO_ITEM;
|
|
}
|
|
|
|
NextRat = (ratNum + 1) & 0x1F;
|
|
return ratNum;
|
|
}
|
|
|
|
void ControlLittleRats(short itemNumber)
|
|
{
|
|
ITEM_INFO* item = &Items[itemNumber];
|
|
|
|
if (item->triggerFlags)
|
|
{
|
|
if (!item->itemFlags[2] || !(GetRandomControl() & 0xF))
|
|
{
|
|
item->triggerFlags--;
|
|
|
|
if (item->itemFlags[2] && GetRandomControl() & 1)
|
|
item->itemFlags[2]--;
|
|
|
|
short ratNum = GetNextRat();
|
|
if (ratNum != -1)
|
|
{
|
|
RAT_STRUCT* rat = &Rats[ratNum];
|
|
|
|
rat->pos.xPos = item->pos.xPos;
|
|
rat->pos.yPos = item->pos.yPos;
|
|
rat->pos.zPos = item->pos.zPos;
|
|
rat->roomNumber = item->roomNumber;
|
|
|
|
if (item->itemFlags[0])
|
|
{
|
|
rat->pos.yRot = 2 * GetRandomControl();
|
|
rat->fallspeed = -16 - (GetRandomControl() & 0x1F);
|
|
}
|
|
else
|
|
{
|
|
rat->fallspeed = 0;
|
|
rat->pos.yRot = item->pos.yRot + (GetRandomControl() & 0x3FFF) - ANGLE(45);
|
|
}
|
|
|
|
rat->pos.xRot = 0;
|
|
rat->pos.zRot = 0;
|
|
rat->on = 1;
|
|
rat->flags = GetRandomControl() & 0x1E;
|
|
rat->speed = (GetRandomControl() & 0x1F) + 1;
|
|
}
|
|
}
|
|
}
|
|
} |