mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-28 04:51:42 +00:00
Fix various minus carrying bugs
This commit is contained in:
parent
d0879a61e6
commit
e75767ece8
2 changed files with 39 additions and 3 deletions
|
|
@ -5177,20 +5177,28 @@ static mobj_t *minus;
|
||||||
|
|
||||||
static boolean PIT_MinusCarry(mobj_t *thing)
|
static boolean PIT_MinusCarry(mobj_t *thing)
|
||||||
{
|
{
|
||||||
|
if (minus->tracer)
|
||||||
|
return true;
|
||||||
|
|
||||||
if (minus->type == thing->type)
|
if (minus->type == thing->type)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!(thing->flags & MF_SHOOTABLE) || !(thing->flags & MF_ENEMY))
|
if (!(thing->flags & (MF_PUSHABLE|MF_ENEMY)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (P_AproxDistance(minus->x - thing->x, minus->y - thing->y) >= minus->radius * 3)
|
if (P_AproxDistance(minus->x - thing->x, minus->y - thing->y) >= minus->radius*3)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (abs(thing->z - minus->z) > minus->height)
|
if (abs(thing->z - minus->z) > minus->height)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
P_SetTarget(&minus->tracer, thing);
|
P_SetTarget(&minus->tracer, thing);
|
||||||
minus->tracer->flags &= ~MF_PUSHABLE;
|
P_SetTarget(&thing->tracer, minus);
|
||||||
|
if (thing->flags & MF_PUSHABLE)
|
||||||
|
{
|
||||||
|
minus->flags2 |= MF2_STRONGBOX;
|
||||||
|
thing->flags &= ~MF_PUSHABLE;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -5276,7 +5284,15 @@ void A_MinusDigging(mobj_t *actor)
|
||||||
if (P_TryMove(actor->tracer, actor->x, actor->y, false))
|
if (P_TryMove(actor->tracer, actor->x, actor->y, false))
|
||||||
actor->tracer->z = mz;
|
actor->tracer->z = mz;
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
if (actor->flags2 & MF2_STRONGBOX)
|
||||||
|
{
|
||||||
|
actor->flags2 &= ~MF2_STRONGBOX;
|
||||||
|
actor->tracer->flags |= MF_PUSHABLE;
|
||||||
|
}
|
||||||
|
P_SetTarget(&actor->tracer->tracer, NULL);
|
||||||
P_SetTarget(&actor->tracer, NULL);
|
P_SetTarget(&actor->tracer, NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -13096,6 +13112,13 @@ void A_TNTExplode(mobj_t *actor)
|
||||||
if (LUA_CallAction("A_TNTExplode", actor))
|
if (LUA_CallAction("A_TNTExplode", actor))
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (actor->tracer)
|
||||||
|
{
|
||||||
|
P_SetTarget(&actor->tracer->tracer, NULL);
|
||||||
|
P_SetTarget(&actor->tracer, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
P_UnsetThingPosition(actor);
|
P_UnsetThingPosition(actor);
|
||||||
if (sector_list)
|
if (sector_list)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -2631,6 +2631,19 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
||||||
P_KillMobj(target->target, target, source, 0);
|
P_KillMobj(target->target, target, source, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MT_MINUS:
|
||||||
|
if (target->tracer)
|
||||||
|
{
|
||||||
|
if (target->flags2 & MF2_STRONGBOX)
|
||||||
|
{
|
||||||
|
target->flags2 &= ~MF2_STRONGBOX;
|
||||||
|
target->tracer->flags |= MF_PUSHABLE;
|
||||||
|
}
|
||||||
|
P_SetTarget(&target->tracer->tracer, NULL);
|
||||||
|
P_SetTarget(&target->tracer, NULL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case MT_PLAYER:
|
case MT_PLAYER:
|
||||||
{
|
{
|
||||||
target->fuse = TICRATE*3; // timer before mobj disappears from view (even if not an actual player)
|
target->fuse = TICRATE*3; // timer before mobj disappears from view (even if not an actual player)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue