diff --git a/src/game/prop.c b/src/game/prop.c index 471d86b93..5d3a952dc 100644 --- a/src/game/prop.c +++ b/src/game/prop.c @@ -1861,7 +1861,8 @@ void propsTickPlayer(bool islastplayer) op = objTickPlayer(prop); - if (op == TICKOP_NONE && door->mode == DOORMODE_IDLE && door->frac <= 0) { + if (op == TICKOP_NONE && door->mode == DOORMODE_IDLE && door->frac <= 0 + && (door->base.hidden & OBJHFLAG_REAPABLE) == 0) { propPause(prop); op = TICKOP_CHANGEDLIST; } diff --git a/src/game/propobj.c b/src/game/propobj.c index de5c7cd0c..175f2b456 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -211,6 +211,11 @@ void objUpdateLinkedScenery(struct defaultobj *obj, struct prop *prop) link->trigger->flags2 |= OBJFLAG2_INVISIBLE; link->trigger->hidden |= OBJHFLAG_REAPABLE; + link->trigger->prop->forcetick; + + if (!link->trigger->prop->active) { + propUnpause(link->trigger->prop); + } if (link->unexp) { link->unexp->flags2 |= OBJFLAG2_INVISIBLE; @@ -15643,6 +15648,20 @@ struct defaultobj *debrisAllocate(void) void playerActivateRemoteMineDetonator(s32 playernum) { + struct prop *prop = g_Vars.activeprops; + + while (prop) { + if (prop->type == PROPTYPE_WEAPON && prop->weapon->weaponnum == WEAPON_REMOTEMINE) { + if (!prop->active) { + propUnpause(prop); + } + + prop->forceonetick = true; + } + + prop = prop->next; + } + g_PlayersDetonatingMines |= 1 << playernum; sndStart(var80095200, SFX_DETONATE, 0, -1, -1, -1, -1, -1);