Potentially fixed ID_PULLEY

This commit is contained in:
MontyTRC89 2021-06-08 06:32:51 +02:00
parent 54e48e4c52
commit 4baeab5ab9
2 changed files with 54 additions and 30 deletions

View file

@ -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*/

View file

@ -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)