Disable MBF codepointers for BOOM demo compatibility (#125)

* disable mbf codepointers for boom demo compatibility

* disable other mbf codepointers

* fix gcc build
This commit is contained in:
Roman Fomin 2021-02-12 16:03:04 +07:00 committed by GitHub
parent 77310d7f66
commit d14c65fe02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2069,6 +2069,8 @@ void A_Fall(mobj_t *actor)
// killough 11/98: kill an object
void A_Die(mobj_t *actor)
{
if (demo_version < 203)
return;
P_DamageMobj(actor, NULL, NULL, actor->health);
}
@ -2087,6 +2089,8 @@ void A_Explode(mobj_t *thingy)
void A_Detonate(mobj_t *mo)
{
if (demo_version < 203)
return;
P_RadiusAttack(mo, mo->target, mo->info->damage);
}
@ -2098,11 +2102,13 @@ void A_Detonate(mobj_t *mo)
void A_Mushroom(mobj_t *actor)
{
int i, j, n = actor->info->damage;
// Mushroom parameters are part of code pointer's state
fixed_t misc1 = actor->state->misc1 ? actor->state->misc1 : FRACUNIT*4;
fixed_t misc2 = actor->state->misc2 ? actor->state->misc2 : FRACUNIT/2;
if (demo_version < 203)
return;
A_Explode(actor); // make normal explosion
for (i = -n; i <= n; i += 8) // launch mushroom cloud
@ -2538,6 +2544,8 @@ void A_KeenDie(mobj_t* mo)
void A_Spawn(mobj_t *mo)
{
if (demo_version < 203)
return;
if (mo->state->misc1)
{
mobj_t *newmobj = P_SpawnMobj(mo->x, mo->y,
@ -2550,16 +2558,22 @@ void A_Spawn(mobj_t *mo)
void A_Turn(mobj_t *mo)
{
if (demo_version < 203)
return;
mo->angle += (angle_t)(((ULong64) mo->state->misc1 << 32) / 360);
}
void A_Face(mobj_t *mo)
{
if (demo_version < 203)
return;
mo->angle = (angle_t)(((ULong64) mo->state->misc1 << 32) / 360);
}
void A_Scratch(mobj_t *mo)
{
if (demo_version < 203)
return;
mo->target && (A_FaceTarget(mo), P_CheckMeleeRange(mo)) ?
mo->state->misc2 ? S_StartSound(mo, mo->state->misc2) : (void) 0,
P_DamageMobj(mo->target, mo, mo, mo->state->misc1) : (void) 0;
@ -2567,11 +2581,15 @@ void A_Scratch(mobj_t *mo)
void A_PlaySound(mobj_t *mo)
{
if (demo_version < 203)
return;
S_StartSound(mo->state->misc2 ? NULL : mo, mo->state->misc1);
}
void A_RandomJump(mobj_t *mo)
{
if (demo_version < 203)
return;
if (P_Random(pr_randomjump) < mo->state->misc2)
P_SetMobjState(mo, mo->state->misc1);
}
@ -2582,6 +2600,8 @@ void A_RandomJump(mobj_t *mo)
void A_LineEffect(mobj_t *mo)
{
if (demo_version < 203)
return;
if (!(mo->intflags & MIF_LINEDONE)) // Unless already used up
{
line_t junk = *lines; // Fake linedef set to 1st