Merge branch 'chaclon' into 'master'

Chaclon

See merge request KartKrew/Kart!1299
This commit is contained in:
Oni 2023-06-25 17:16:09 +00:00
commit d0ce442850
4 changed files with 37 additions and 12 deletions

View file

@ -101,25 +101,35 @@ Obj_AudienceInit
mobj->destscale = FixedMul(3*mobj->destscale, followers[followerpick].scale);
P_SetScale(mobj, mobj->destscale);
audience_mainstate(mobj) = followers[followerpick].followstate;
P_SetMobjState(mobj, audience_mainstate(mobj));
if (P_MobjWasRemoved(mobj))
return;
// The following is derived from the default bobamp
if (mobj->type != MT_EMBLEM && !(mobj->flags & MF_NOGRAVITY) && followers[followerpick].bobamp < 4*FRACUNIT)
if (mobj->flags2 & MF2_BOSSNOTRAP)
{
audience_bobamp(mobj) = 4*mobj->scale;
audience_bobamp(mobj) = 0;
}
else
{
audience_bobamp(mobj) = FixedMul(mobj->scale, followers[followerpick].bobamp);
// The following is derived from the default bobamp
if (mobj->type != MT_EMBLEM && !(mobj->flags & MF_NOGRAVITY) && followers[followerpick].bobamp < 4*FRACUNIT)
{
audience_bobamp(mobj) = 4*mobj->scale;
}
else
{
audience_bobamp(mobj) = FixedMul(mobj->scale, followers[followerpick].bobamp);
}
}
audience_bobspeed(mobj) = followers[followerpick].bobspeed;
audience_focusplayer(mobj) = MAXPLAYERS;
audience_mainstate(mobj) =
audience_bobamp(mobj) != 0
? followers[followerpick].followstate
: followers[followerpick].idlestate;
P_SetMobjState(mobj, audience_mainstate(mobj));
if (P_MobjWasRemoved(mobj))
return;
if (P_RandomChance(PR_RANDOMAUDIENCE, FRACUNIT/2))
{
audience_animoffset(mobj) = 5;

View file

@ -13192,11 +13192,16 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj)
}
case MT_RANDOMAUDIENCE:
{
if (mthing->args[2] != 0)
if (mthing->args[2] & TMAUDIM_FLOAT)
{
mobj->flags |= MF_NOGRAVITY;
}
if (mthing->args[2] & TMAUDIM_BORED)
{
mobj->flags2 |= MF2_BOSSNOTRAP;
}
if (mthing->args[3] != 0)
{
mobj->flags2 |= MF2_AMBUSH;

View file

@ -6959,7 +6959,11 @@ static void P_ConvertBinaryThingTypes(void)
mapthings[i].args[0] = !!(mapthings[i].options & MTF_AMBUSH);
break;
case 1488: // Follower Audience (unfortunately numbered)
mapthings[i].args[2] = !!(mapthings[i].options & MTF_OBJECTSPECIAL);
if (mapthings[i].options & MTF_OBJECTSPECIAL)
mapthings[i].args[2] |= TMAUDIM_FLOAT;
if (mapthings[i].options & MTF_EXTRA)
mapthings[i].args[2] |= TMAUDIM_BORED;
mapthings[i].args[3] = !!(mapthings[i].options & MTF_AMBUSH);
break;
case 1500: //Glaregoyle

View file

@ -135,6 +135,12 @@ typedef enum
TMWPF_FINISHLINE = 1<<3,
} textmapwaypointflags_t;
typedef enum
{
TMAUDIM_FLOAT = 1,
TMAUDIM_BORED = 1<<1,
} textmapaudiencemovementflags_t;
typedef enum
{
TMBCF_BACKANDFORTH = 1,