diff --git a/src/info.c b/src/info.c index 7dfefaade..79fe99d2a 100644 --- a/src/info.c +++ b/src/info.c @@ -3299,8 +3299,8 @@ state_t states[NUMSTATES] = {SPR_BUMP, FF_ANIMATE|4, 12, {A_Pain}, 1, 3, S_BUMPER}, //S_BUMPERHIT // Balloons - {SPR_BLON, FF_ANIMATE, -1, {NULL}, 2, 5, S_NULL}, // S_BALLOON - {SPR_BLON, 3, 0, {A_RemoteDamage}, 0, 1, S_BALLOONPOP2}, // S_BALLOONPOP1 + {SPR_BLON, FF_ANIMATE|FF_RANDOMANIM, -1, {NULL}, 7, 5, S_BALLOON}, // S_BALLOON + {SPR_NULL, 0, 2, {NULL}, 0, 0, S_BALLOONPOP2}, // S_BALLOONPOP1 {SPR_BLON, 3, 1, {A_Pain}, 0, 0, S_BALLOONPOP3}, // S_BALLOONPOP2 {SPR_BLON, 4, 1, {NULL}, 0, 0, S_BALLOONPOP4}, // S_BALLOONPOP3 {SPR_NULL, 0, TICRATE, {A_CheckFlags2}, MF2_AMBUSH, S_BALLOONPOP5, S_NULL}, // S_BALLOONPOP4 diff --git a/src/p_mobj.c b/src/p_mobj.c index 76d2daa6d..e971299e5 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10286,6 +10286,14 @@ static boolean P_MobjRegularThink(mobj_t *mobj) break; } + case MT_BALLOON: + { + fixed_t sine = FixedMul(16 * FSIN((M_TAU_FIXED * (4*TICRATE)) * (leveltime + mobj->extravalue2)), mobj->scale); + + mobj->z = (mobj->extravalue1 - (16 * mobj->scale)) + sine; + break; + } + default: // check mobj against possible water content, before movement code P_MobjCheckWater(mobj); @@ -11109,6 +11117,7 @@ static void P_DefaultMobjShadowScale(mobj_t *thing) case MT_SPB: case MT_DUELBOMB: case MT_GACHABOM: + case MT_BALLOON: thing->shadowscale = 3*FRACUNIT/2; break; case MT_BANANA_SHIELD: @@ -11160,6 +11169,9 @@ static void P_DefaultMobjShadowScale(mobj_t *thing) case MT_AIRIVOBALL: thing->shadowscale = FRACUNIT/2; break; + case MT_BUMPER: + thing->shadowscale = 7*FRACUNIT/4; + break; default: if (thing->flags & (MF_ENEMY|MF_BOSS)) thing->shadowscale = FRACUNIT; @@ -11431,6 +11443,9 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) }; mobj->color = BALLOONCOLORS[P_RandomKey(PR_DECORATION, sizeof(BALLOONCOLORS))]; + + mobj->extravalue1 = mobj->z; + mobj->extravalue2 = P_RandomRange(PR_DECORATION, 0, 4*TICRATE); } break; case MT_POGOSPRING: