mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Add P_IsRelinkItem, fix Hyudoro not being relinked correctly
- MT_HYUDORO itself was being relinked, causing the Hyudoro to not disappear after delivery - MT_HYUDORO_CENTER is relinked instead; this is the object that actually holds a player reference
This commit is contained in:
parent
f12153cb8b
commit
885a8c2557
2 changed files with 36 additions and 2 deletions
37
src/p_mobj.c
37
src/p_mobj.c
|
|
@ -5337,6 +5337,39 @@ boolean P_IsKartFieldItem(INT32 type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This item keeps track of its owner by the mobj target
|
||||||
|
boolean P_IsRelinkItem(INT32 type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case MT_POGOSPRING:
|
||||||
|
case MT_EGGMANITEM:
|
||||||
|
case MT_EGGMANITEM_SHIELD:
|
||||||
|
case MT_BANANA:
|
||||||
|
case MT_BANANA_SHIELD:
|
||||||
|
case MT_ORBINAUT:
|
||||||
|
case MT_ORBINAUT_SHIELD:
|
||||||
|
case MT_JAWZ:
|
||||||
|
case MT_JAWZ_SHIELD:
|
||||||
|
case MT_SSMINE:
|
||||||
|
case MT_SSMINE_SHIELD:
|
||||||
|
case MT_LANDMINE:
|
||||||
|
case MT_DROPTARGET:
|
||||||
|
case MT_DROPTARGET_SHIELD:
|
||||||
|
case MT_BALLHOG:
|
||||||
|
case MT_SPB:
|
||||||
|
case MT_BUBBLESHIELDTRAP:
|
||||||
|
case MT_GARDENTOP:
|
||||||
|
case MT_HYUDORO_CENTER:
|
||||||
|
case MT_SINK:
|
||||||
|
case MT_GACHABOM:
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
boolean K_IsMissileOrKartItem(mobj_t *mo)
|
boolean K_IsMissileOrKartItem(mobj_t *mo)
|
||||||
{
|
{
|
||||||
if (mo->flags & MF_MISSILE)
|
if (mo->flags & MF_MISSILE)
|
||||||
|
|
@ -10355,7 +10388,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
I_Assert(mobj != NULL);
|
I_Assert(mobj != NULL);
|
||||||
I_Assert(!P_MobjWasRemoved(mobj));
|
I_Assert(!P_MobjWasRemoved(mobj));
|
||||||
|
|
||||||
if (P_IsKartItem(mobj->type) && mobj->target && !P_MobjWasRemoved(mobj->target))
|
if (P_IsRelinkItem(mobj->type) && mobj->target && !P_MobjWasRemoved(mobj->target))
|
||||||
{
|
{
|
||||||
player_t *link = mobj->target->player;
|
player_t *link = mobj->target->player;
|
||||||
if (link && playeringame[link-players] && !link->spectator)
|
if (link && playeringame[link-players] && !link->spectator)
|
||||||
|
|
@ -10366,7 +10399,7 @@ void P_MobjThinker(mobj_t *mobj)
|
||||||
if (mobj->target && P_MobjWasRemoved(mobj->target))
|
if (mobj->target && P_MobjWasRemoved(mobj->target))
|
||||||
{
|
{
|
||||||
P_SetTarget(&mobj->target, NULL);
|
P_SetTarget(&mobj->target, NULL);
|
||||||
if (P_IsKartItem(mobj->type) && mobj->relinkplayer && mobj->relinkplayer <= MAXPLAYERS)
|
if (P_IsRelinkItem(mobj->type) && mobj->relinkplayer && mobj->relinkplayer <= MAXPLAYERS)
|
||||||
{
|
{
|
||||||
player_t *relink = &players[mobj->relinkplayer-1];
|
player_t *relink = &players[mobj->relinkplayer-1];
|
||||||
if (playeringame[relink-players] && !relink->spectator && relink->mo && !P_MobjWasRemoved(relink->mo))
|
if (playeringame[relink-players] && !relink->spectator && relink->mo && !P_MobjWasRemoved(relink->mo))
|
||||||
|
|
|
||||||
|
|
@ -547,6 +547,7 @@ void P_AddCachedAction(mobj_t *mobj, INT32 statenum);
|
||||||
|
|
||||||
boolean P_IsKartItem(INT32 type);
|
boolean P_IsKartItem(INT32 type);
|
||||||
boolean P_IsKartFieldItem(INT32 type);
|
boolean P_IsKartFieldItem(INT32 type);
|
||||||
|
boolean P_IsRelinkItem(INT32 type);
|
||||||
boolean K_IsMissileOrKartItem(mobj_t *mo);
|
boolean K_IsMissileOrKartItem(mobj_t *mo);
|
||||||
boolean P_CanDeleteKartItem(INT32 type);
|
boolean P_CanDeleteKartItem(INT32 type);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue