mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-01-10 00:34:32 +00:00
Merge branch 'beyond-the-relink' into 'master'
Use ChangePlayerReferences to relink kartitems See merge request kart-krew-dev/ring-racers-internal!2622
This commit is contained in:
commit
f5c2031ea5
5 changed files with 1 additions and 38 deletions
|
|
@ -3153,7 +3153,7 @@ void G_ChangePlayerReferences(mobj_t *oldmo, mobj_t *newmo)
|
|||
|
||||
mo2 = (mobj_t *)th;
|
||||
|
||||
if (!(mo2->flags & MF_MISSILE))
|
||||
if (!((mo2->flags & MF_MISSILE) || P_IsRelinkItem(mo2->type)))
|
||||
continue;
|
||||
|
||||
if (mo2->target == oldmo)
|
||||
|
|
|
|||
|
|
@ -111,7 +111,6 @@ enum mobj_e {
|
|||
mobj_reappear,
|
||||
mobj_punt_ref,
|
||||
mobj_owner,
|
||||
mobj_relinkplayer,
|
||||
};
|
||||
|
||||
static const char *const mobj_opt[] = {
|
||||
|
|
@ -202,7 +201,6 @@ static const char *const mobj_opt[] = {
|
|||
"reappear",
|
||||
"punt_ref",
|
||||
"owner",
|
||||
"relinkplayer",
|
||||
NULL};
|
||||
|
||||
#define UNIMPLEMENTED luaL_error(L, LUA_QL("mobj_t") " field " LUA_QS " is not implemented for Lua and cannot be accessed.", mobj_opt[field])
|
||||
|
|
@ -521,9 +519,6 @@ static int mobj_get(lua_State *L)
|
|||
}
|
||||
LUA_PushUserdata(L, mo->owner, META_MOBJ);
|
||||
break;
|
||||
case mobj_relinkplayer:
|
||||
lua_pushinteger(L, mo->relinkplayer);
|
||||
break;
|
||||
default: // extra custom variables in Lua memory
|
||||
lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS);
|
||||
I_Assert(lua_istable(L, -1));
|
||||
|
|
@ -939,9 +934,6 @@ static int mobj_set(lua_State *L)
|
|||
P_SetTarget(&mo->owner, owner);
|
||||
}
|
||||
break;
|
||||
case mobj_relinkplayer:
|
||||
mo->relinkplayer = luaL_checkinteger(L, 3);
|
||||
break;
|
||||
default:
|
||||
lua_getfield(L, LUA_REGISTRYINDEX, LREG_EXTVARS);
|
||||
I_Assert(lua_istable(L, -1));
|
||||
|
|
|
|||
16
src/p_mobj.c
16
src/p_mobj.c
|
|
@ -10469,25 +10469,9 @@ void P_MobjThinker(mobj_t *mobj)
|
|||
{
|
||||
I_Assert(mobj != NULL);
|
||||
I_Assert(!P_MobjWasRemoved(mobj));
|
||||
|
||||
if (P_IsRelinkItem(mobj->type) && mobj->target && !P_MobjWasRemoved(mobj->target))
|
||||
{
|
||||
player_t *link = mobj->target->player;
|
||||
if (link && playeringame[link-players] && !link->spectator)
|
||||
mobj->relinkplayer = (link-players) + 1;
|
||||
}
|
||||
|
||||
// Remove dead target/tracer.
|
||||
if (mobj->target && P_MobjWasRemoved(mobj->target))
|
||||
{
|
||||
P_SetTarget(&mobj->target, NULL);
|
||||
if (P_IsRelinkItem(mobj->type) && mobj->relinkplayer && mobj->relinkplayer <= MAXPLAYERS)
|
||||
{
|
||||
player_t *relink = &players[mobj->relinkplayer-1];
|
||||
if (playeringame[relink-players] && !relink->spectator && relink->mo && !P_MobjWasRemoved(relink->mo))
|
||||
P_SetTarget(&mobj->target, relink->mo);
|
||||
}
|
||||
}
|
||||
if (mobj->tracer && P_MobjWasRemoved(mobj->tracer))
|
||||
P_SetTarget(&mobj->tracer, NULL);
|
||||
if (mobj->hnext && P_MobjWasRemoved(mobj->hnext))
|
||||
|
|
|
|||
|
|
@ -450,8 +450,6 @@ struct mobj_t
|
|||
|
||||
INT32 po_movecount; // Polyobject carrying (NOT savegame, NOT Lua)
|
||||
|
||||
UINT8 relinkplayer; // reassociate kartitem target when it dies. ACHTUNG 1-INDEXED
|
||||
|
||||
// WARNING: New fields must be added separately to savegame and Lua.
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -3015,7 +3015,6 @@ typedef enum
|
|||
MD3_REAPPEAR = 1<<1,
|
||||
MD3_PUNT_REF = 1<<2,
|
||||
MD3_OWNER = 1<<3,
|
||||
MD3_RELINK_PLAYER = 1<<4,
|
||||
} mobj_diff3_t;
|
||||
|
||||
typedef enum
|
||||
|
|
@ -3339,8 +3338,6 @@ static void SaveMobjThinker(savebuffer_t *save, const thinker_t *th, const UINT8
|
|||
diff3 |= MD3_PUNT_REF;
|
||||
if (mobj->owner)
|
||||
diff3 |= MD3_OWNER;
|
||||
if (mobj->relinkplayer)
|
||||
diff3 |= MD3_RELINK_PLAYER;
|
||||
|
||||
if (diff3 != 0)
|
||||
diff2 |= MD2_MORE;
|
||||
|
|
@ -3631,10 +3628,6 @@ static void SaveMobjThinker(savebuffer_t *save, const thinker_t *th, const UINT8
|
|||
{
|
||||
WRITEUINT32(save->p, mobj->owner->mobjnum);
|
||||
}
|
||||
if (diff3 & MD3_RELINK_PLAYER)
|
||||
{
|
||||
WRITEUINT8(save->p, mobj->relinkplayer);
|
||||
}
|
||||
|
||||
WRITEUINT32(save->p, mobj->mobjnum);
|
||||
}
|
||||
|
|
@ -4948,10 +4941,6 @@ static thinker_t* LoadMobjThinker(savebuffer_t *save, actionf_p1 thinker)
|
|||
{
|
||||
mobj->owner = (mobj_t *)(size_t)READUINT32(save->p);
|
||||
}
|
||||
if (diff3 & MD3_RELINK_PLAYER)
|
||||
{
|
||||
mobj->relinkplayer = READUINT8(save->p);
|
||||
}
|
||||
|
||||
// link tid set earlier
|
||||
P_AddThingTID(mobj);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue