From 605b32a7cca90ff483ac3be1337b0ea2eb757f24 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Fri, 27 Dec 2024 00:52:05 -0500 Subject: [PATCH] Making Following rocks on binary work like kart v1 --- src/p_enemy.c | 18 +++++++++++++++--- src/p_mobj.c | 6 +++--- src/p_setup.c | 8 ++------ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index 61a8901fa..16276b9fc 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -5144,15 +5144,27 @@ void A_RockSpawn(mobj_t *actor) if (LUA_CallAction(A_ROCKSPAWN, actor)) return; - type = actor->stringargs[0] ? get_number(actor->stringargs[0]) : MT_ROCKCRUMBLE1; + if (udmf) + type = actor->stringargs[0] ? get_number(actor->stringargs[0]) : MT_ROCKCRUMBLE1; + else + type = MT_ROCKCRUMBLE1 + actor->args[3]; // APPPLES!!!!!!! if (type < MT_NULL || type >= NUMMOBJTYPES) { - CONS_Debug(DBG_GAMELOGIC, "A_RockSpawn: Invalid mobj type %s!\n", actor->stringargs[0]); + CONS_Debug(DBG_GAMELOGIC, "A_RockSpawn: Invalid mobj type %s!\n", udmf ? actor->stringargs[0] : va("%d",actor->args[3])); return; } - dist = max(actor->args[0] << (FRACBITS - 4), 1); + if (udmf) + dist = max(actor->args[0] << (FRACBITS - 4), 1); + else + { + dist = actor->args[0]; + + if (dist < 1) + dist = 1; + } + if (actor->args[2]) dist += P_RandomByte() * (FRACUNIT/32); // random oomph diff --git a/src/p_mobj.c b/src/p_mobj.c index 9c43b8b07..f3ca42141 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -6603,10 +6603,10 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; case MT_FALLINGROCK: // Despawn rocks here in case zmovement code can't do so (blame slopes) - if (!mobj->momx && !mobj->momy && !mobj->momz + if (!mobj->fuse && !mobj->momx && !mobj->momy && !mobj->momz && ((mobj->eflags & MFE_VERTICALFLIP) ? - mobj->z + mobj->height >= mobj->ceilingz - : mobj->z <= mobj->floorz)) + mobj->z + mobj->height >= mobj->ceilingz + : mobj->z <= mobj->floorz)) { mobj->fuse = TICRATE; } diff --git a/src/p_setup.c b/src/p_setup.c index 8eb3b597a..ea7af87c0 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -7221,14 +7221,10 @@ static void P_ConvertBinaryThingTypes(void) break; } mapthings[i].angle = AngleFixed(R_PointToAngle2(lines[j].v2->x, lines[j].v2->y, lines[j].v1->x, lines[j].v1->y)) >> FRACBITS; - mapthings[i].args[0] = P_AproxDistance(lines[j].dx, lines[j].dy) >> FRACBITS; + mapthings[i].args[0] = P_AproxDistance(lines[j].dx, lines[j].dy)/16; mapthings[i].args[1] = sides[lines[j].sidenum[0]].textureoffset >> FRACBITS; mapthings[i].args[2] = !!(lines[j].flags & ML_NOCLIMB); - INT32 id = (sides[lines[j].sidenum[0]].rowoffset >> FRACBITS); - // Rather than introduce deh_tables.h as a dependency for literally one - // conversion, we just... recreate the string expected to be produced. - if (id > 0 && id < 16) - P_WriteDuplicateText(va("MT_ROCKCRUMBLE%d", id+1), &mapthings[i].stringargs[0]); + mapthings[i].args[3] = (sides[lines[j].sidenum[0]].rowoffset >> FRACBITS); // Rock conversion break; } case 1221: //Minecart saloon door