mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-06 19:01:06 +03:00
Potentially fixed ID_PULLEY
This commit is contained in:
parent
54e48e4c52
commit
4baeab5ab9
2 changed files with 54 additions and 30 deletions
|
@ -168,14 +168,14 @@ void lara_as_pulley(ITEM_INFO* item, COLL_INFO* coll)
|
|||
{
|
||||
/*state 104*/
|
||||
/*collision: lara_default_col*/
|
||||
ITEM_INFO* p = (ITEM_INFO*)Lara.generalPtr;
|
||||
ITEM_INFO* pulley = (ITEM_INFO*)Lara.generalPtr;
|
||||
|
||||
Lara.look = false;
|
||||
|
||||
coll->enableSpaz = false;
|
||||
coll->enableBaddiePush = false;
|
||||
|
||||
if (TrInput & IN_ACTION && p->triggerFlags)
|
||||
if (TrInput & IN_ACTION && pulley->triggerFlags)
|
||||
{
|
||||
item->goalAnimState = LS_PULLEY;
|
||||
}
|
||||
|
@ -184,36 +184,41 @@ void lara_as_pulley(ITEM_INFO* item, COLL_INFO* coll)
|
|||
item->goalAnimState = LS_STOP;
|
||||
}
|
||||
|
||||
if (item->animNumber == LA_PULLEY_PULL && item->frameNumber == g_Level.Anims[LA_PULLEY_PULL].frameBase + 44)
|
||||
if (item->animNumber == LA_PULLEY_PULL
|
||||
&& item->frameNumber == g_Level.Anims[item->animNumber].frameBase + 44)
|
||||
{
|
||||
if (p->triggerFlags)
|
||||
if (pulley->triggerFlags)
|
||||
{
|
||||
p->triggerFlags--;
|
||||
|
||||
if (p->triggerFlags)
|
||||
if (!pulley->itemFlags[1])
|
||||
{
|
||||
if (p->itemFlags[2])
|
||||
pulley->triggerFlags--;
|
||||
if (pulley->triggerFlags)
|
||||
{
|
||||
p->itemFlags[2] = 0;
|
||||
p->status = ITEM_DEACTIVATED;
|
||||
if (pulley->itemFlags[2])
|
||||
{
|
||||
pulley->itemFlags[2] = 0;
|
||||
pulley->status = ITEM_DEACTIVATED;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!p->itemFlags[1])
|
||||
p->status = ITEM_DEACTIVATED;
|
||||
|
||||
p->itemFlags[2] = 1;
|
||||
|
||||
if (p->itemFlags[3] >= 0)
|
||||
p->triggerFlags = abs(p->itemFlags[3]);
|
||||
else
|
||||
p->itemFlags[0] = 1;
|
||||
{
|
||||
pulley->status = ITEM_DEACTIVATED;
|
||||
pulley->itemFlags[2] = 1;
|
||||
if (pulley->itemFlags[3] >= 0)
|
||||
{
|
||||
pulley->triggerFlags = abs(pulley->itemFlags[3]);
|
||||
}
|
||||
else
|
||||
{
|
||||
pulley->itemFlags[0] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (item->animNumber == LA_PULLEY_RELEASE && item->frameNumber == g_Level.Anims[item->animNumber].frameEnd - 1)
|
||||
if (item->animNumber == LA_PULLEY_RELEASE
|
||||
&& item->frameNumber == g_Level.Anims[item->animNumber].frameEnd - 1)
|
||||
Lara.gunStatus = LG_NO_ARMS;
|
||||
}
|
||||
/*end pulley*/
|
||||
|
|
|
@ -808,9 +808,13 @@ void PulleyCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
|
|||
ITEM_INFO* item = &g_Level.Items[itemNum];
|
||||
|
||||
if (item->flags & 0x100
|
||||
|| (!(TrInput & IN_ACTION) || Lara.gunStatus || l->currentAnimState != LS_STOP || l->animNumber != LA_STAND_IDLE ||
|
||||
item->status || item->gravityStatus)
|
||||
&& (!Lara.isMoving || Lara.generalPtr != (void*)itemNum))
|
||||
|| (!(TrInput & IN_ACTION)
|
||||
|| Lara.gunStatus
|
||||
|| l->currentAnimState != LS_STOP
|
||||
|| l->animNumber != LA_STAND_IDLE
|
||||
|| item->gravityStatus)
|
||||
&& (!Lara.isMoving
|
||||
|| Lara.generalPtr != (void*)itemNum))
|
||||
{
|
||||
if (l->currentAnimState != LS_PULLEY)
|
||||
ObjectCollision(itemNum, l, coll);
|
||||
|
@ -821,7 +825,17 @@ void PulleyCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll)
|
|||
item->pos.yRot = l->pos.yRot;
|
||||
if (TestLaraPosition(&PulleyBounds, item, l))
|
||||
{
|
||||
if (MoveLaraPosition(&PulleyPos, item, l))
|
||||
if (item->itemFlags[1])
|
||||
{
|
||||
if (OldPickupPos.x != l->pos.xPos || OldPickupPos.y != l->pos.yPos || OldPickupPos.z != l->pos.zPos)
|
||||
{
|
||||
OldPickupPos.x = l->pos.xPos;
|
||||
OldPickupPos.y = l->pos.yPos;
|
||||
OldPickupPos.z = l->pos.zPos;
|
||||
SayNo();
|
||||
}
|
||||
}
|
||||
else if (MoveLaraPosition(&PulleyPos, item, l))
|
||||
{
|
||||
l->animNumber = LA_PULLEY_GRAB;
|
||||
l->currentAnimState = LS_PULLEY;
|
||||
|
@ -1133,10 +1147,12 @@ void SwitchControl(short itemNumber)
|
|||
item->goalAnimState = 0;
|
||||
item->timer = 0;
|
||||
AnimateItem(item);
|
||||
return;
|
||||
}
|
||||
item->goalAnimState = 1;
|
||||
item->timer = 0;
|
||||
else
|
||||
{
|
||||
item->goalAnimState = 1;
|
||||
item->timer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1297,8 +1313,11 @@ void InitialisePulleySwitch(short itemNumber)
|
|||
item->itemFlags[3] = item->triggerFlags;
|
||||
item->triggerFlags = abs(item->triggerFlags);
|
||||
|
||||
if (itemNumber == PulleyItemNumber)
|
||||
if (item->status == ITEM_INVISIBLE)
|
||||
{
|
||||
item->itemFlags[1] = 1;
|
||||
item->status = ITEM_NOT_ACTIVE;
|
||||
}
|
||||
}
|
||||
|
||||
void InitialiseCrowDoveSwitch(short itemNumber)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue