diff --git a/src/objects/battle-ufo.cpp b/src/objects/battle-ufo.cpp index 055567beb..a980eeb71 100644 --- a/src/objects/battle-ufo.cpp +++ b/src/objects/battle-ufo.cpp @@ -123,6 +123,8 @@ public: ufo->sprzoff(ofs * spawner->scale()); ufo->spawner(spawner); + + ufo->extravalue1 = 0; // Lifetime } }; @@ -134,6 +136,8 @@ void Obj_BattleUFOThink(mobj_t *mobj) { UFO* ufo = static_cast(mobj); + ufo->extravalue1++; + ufo->bob(); if ((leveltime/2) & 1) @@ -141,7 +145,12 @@ void Obj_BattleUFOThink(mobj_t *mobj) ufo->spawn_beam(); } - if (!battleovertime.enabled) + if ((ufo->extravalue1 % (TICRATE*2)) == 0) + { + S_StartSound(ufo, sfx_s3ka5); + } + + if (!battleovertime.enabled && ufo->extravalue1 <= 5*TICRATE) { Obj_PointPlayersToXY(mobj->x, mobj->y); } diff --git a/src/p_inter.c b/src/p_inter.c index 5dae5dc82..dfe72f981 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3163,6 +3163,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da Obj_EndBungee(player); K_BumperInflate(target->player); + // Explosions are explicit combo setups. + if (damagetype & DMG_EXPLODE) + player->bumperinflate = 0; + if (player->spectator == false && !(player->charflags & SF_IRONMAN)) { UINT32 skinflags = (demo.playback) diff --git a/src/sounds.c b/src/sounds.c index 1339fd384..f40be3c58 100644 --- a/src/sounds.c +++ b/src/sounds.c @@ -566,7 +566,7 @@ sfxinfo_t S_sfx[NUMSFX] = {"s3ka2", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Launch"}, {"s3ka3", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Rising charge"}, {"s3ka4", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Powering up"}, - {"s3ka5", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, ""}, + {"s3ka5", false, 64, 16, -1, NULL, 0, -1, -1, LUMPERROR, ""}, // bufo x8away {"s3ka6", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Attraction fizzle"}, {"s3ka7", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Countdown beep"}, {"s3ka8", false, 64, 0, -1, NULL, 0, -1, -1, LUMPERROR, "Energy"},