mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-02 14:12:47 +00:00
Merge branch 'mt-reorder' into 'master'
Reorder stuff in P_SpawnMobjFromMapThing See merge request KartKrew/Kart!1293
This commit is contained in:
commit
abd6e183e9
1 changed files with 28 additions and 39 deletions
67
src/p_mobj.c
67
src/p_mobj.c
|
|
@ -12321,7 +12321,7 @@ static boolean P_SetupEmblem(mapthing_t *mthing, mobj_t *mobj)
|
|||
return true;
|
||||
}
|
||||
|
||||
static boolean P_SetupMace(mapthing_t *mthing, mobj_t *mobj, boolean *doangle)
|
||||
static boolean P_SetupMace(mapthing_t *mthing, mobj_t *mobj)
|
||||
{
|
||||
fixed_t mlength, mmaxlength, mlengthset, mspeed, mphase, myaw, mpitch, mminlength, mnumspokes, mpinch, mroll, mnumnospokes, mwidth, mwidthset, mmin, msound, radiusfactor, widthfactor;
|
||||
angle_t mspokeangle;
|
||||
|
|
@ -12366,7 +12366,6 @@ static boolean P_SetupMace(mapthing_t *mthing, mobj_t *mobj, boolean *doangle)
|
|||
mobj->lastlook = mspeed;
|
||||
mobj->movecount = mobj->lastlook;
|
||||
mobj->angle = FixedAngle(myaw << FRACBITS);
|
||||
*doangle = false;
|
||||
mobj->threshold = (FixedAngle(mpitch << FRACBITS) >> ANGLETOFINESHIFT);
|
||||
mobj->movefactor = mpinch;
|
||||
mobj->movedir = 0;
|
||||
|
|
@ -12761,7 +12760,7 @@ static boolean P_MapAlreadyHasStarPost(mobj_t *mobj)
|
|||
return false;
|
||||
}
|
||||
|
||||
static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean *doangle)
|
||||
static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
|
||||
{
|
||||
boolean override = LUA_HookMapThingSpawn(mobj, mthing);
|
||||
|
||||
|
|
@ -12873,7 +12872,7 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
|
|||
case MT_CHAINPOINT:
|
||||
case MT_FIREBARPOINT:
|
||||
case MT_CUSTOMMACEPOINT:
|
||||
if (!P_SetupMace(mthing, mobj, doangle))
|
||||
if (!P_SetupMace(mthing, mobj))
|
||||
return false;
|
||||
break;
|
||||
case MT_PARTICLEGEN:
|
||||
|
|
@ -13366,23 +13365,18 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
|
|||
}
|
||||
case MT_DUELBOMB:
|
||||
{
|
||||
// Duel Bomb needs init to match real map thing's angle
|
||||
mobj->angle = FixedAngle(mthing->angle << FRACBITS);
|
||||
Obj_DuelBombInit(mobj);
|
||||
|
||||
if (mthing->args[1])
|
||||
{
|
||||
Obj_DuelBombReverse(mobj);
|
||||
}
|
||||
|
||||
*doangle = false;
|
||||
break;
|
||||
}
|
||||
case MT_BANANA:
|
||||
{
|
||||
// Give Duel bananas a random angle
|
||||
mobj->angle = FixedMul(P_RandomFixed(PR_DECORATION), ANGLE_MAX);
|
||||
*doangle = false;
|
||||
break;
|
||||
}
|
||||
case MT_HYUDORO_CENTER:
|
||||
|
|
@ -13414,37 +13408,9 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean
|
|||
mobj->flags2 |= MF2_BOSSNOTRAP;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static mobj_t *P_SpawnMobjFromMapThing(mapthing_t *mthing, fixed_t x, fixed_t y, fixed_t z, mobjtype_t i)
|
||||
{
|
||||
mobj_t *mobj = NULL;
|
||||
boolean doangle = true;
|
||||
size_t arg = SIZE_MAX;
|
||||
|
||||
mobj = P_SpawnMobj(x, y, z, i);
|
||||
mobj->spawnpoint = mthing;
|
||||
|
||||
P_SetScale(mobj, FixedMul(mobj->scale, mthing->scale));
|
||||
mobj->destscale = FixedMul(mobj->destscale, mthing->scale);
|
||||
|
||||
if (!P_SetupSpawnedMapThing(mthing, mobj, &doangle))
|
||||
{
|
||||
if (P_MobjWasRemoved(mobj))
|
||||
return NULL;
|
||||
|
||||
return mobj;
|
||||
}
|
||||
|
||||
if (doangle)
|
||||
{
|
||||
mobj->angle = FixedAngle(mthing->angle << FRACBITS);
|
||||
}
|
||||
|
||||
if ((mobj->flags & MF_SPRING)
|
||||
&& mobj->info->damage != 0
|
||||
&& mobj->info->mass == 0)
|
||||
&& mobj->info->damage != 0
|
||||
&& mobj->info->mass == 0)
|
||||
{
|
||||
// Offset sprite of horizontal springs
|
||||
angle_t a = mobj->angle + ANGLE_180;
|
||||
|
|
@ -13452,9 +13418,24 @@ static mobj_t *P_SpawnMobjFromMapThing(mapthing_t *mthing, fixed_t x, fixed_t y,
|
|||
mobj->spryoff = FixedMul(mobj->radius, FINESINE(a >> ANGLETOFINESHIFT));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static mobj_t *P_SpawnMobjFromMapThing(mapthing_t *mthing, fixed_t x, fixed_t y, fixed_t z, mobjtype_t i)
|
||||
{
|
||||
mobj_t *mobj = NULL;
|
||||
size_t arg = SIZE_MAX;
|
||||
|
||||
mobj = P_SpawnMobj(x, y, z, i);
|
||||
mobj->spawnpoint = mthing;
|
||||
|
||||
mobj->angle = FixedAngle(mthing->angle << FRACBITS);
|
||||
mobj->pitch = FixedAngle(mthing->pitch << FRACBITS);
|
||||
mobj->roll = FixedAngle(mthing->roll << FRACBITS);
|
||||
|
||||
P_SetScale(mobj, FixedMul(mobj->scale, mthing->scale));
|
||||
mobj->destscale = FixedMul(mobj->destscale, mthing->scale);
|
||||
|
||||
P_SetThingTID(mobj, mthing->tid);
|
||||
|
||||
mobj->special = mthing->special;
|
||||
|
|
@ -13484,6 +13465,14 @@ static mobj_t *P_SpawnMobjFromMapThing(mapthing_t *mthing, fixed_t x, fixed_t y,
|
|||
M_Memcpy(mobj->stringargs[arg], mthing->stringargs[arg], len + 1);
|
||||
}
|
||||
|
||||
if (!P_SetupSpawnedMapThing(mthing, mobj))
|
||||
{
|
||||
if (P_MobjWasRemoved(mobj))
|
||||
return NULL;
|
||||
|
||||
return mobj;
|
||||
}
|
||||
|
||||
mthing->mobj = mobj;
|
||||
|
||||
// Generic reverse gravity for individual objects flag.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue