diff --git a/src/f_finale.c b/src/f_finale.c index 0ca9949a4..6ccf2da24 100644 --- a/src/f_finale.c +++ b/src/f_finale.c @@ -914,10 +914,13 @@ static const char *blancredits[] = { "\"WumboSpasm\"", "", "\1External Programming", + "\"Hanicef\"", + "\"Lactozilla\"", "\"xyzzy\"", "\"SuperJustinBros\"", "", "\1Ring Racers Programming", + "\"JugadorXEI\"", "Kart Krew Dev", "", "\1New Graphics Creation", diff --git a/src/k_collide.c b/src/k_collide.c index ef0e931d3..1b009f792 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -809,6 +809,7 @@ boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2) K_StatPlayerSink(t1->player, P_MobjWasRemoved(t2->target) ? NULL : t2->target->player); + S_StartSound(NULL, sfx_bsnipe); //let all players hear it. S_StartSound(NULL, sfx_cgot); //let all players hear it. HU_SetCEchoFlags(0); @@ -816,6 +817,7 @@ boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2) HU_DoCEcho(va("%s\\was hit by a kitchen sink.\\\\\\\\", player_names[t2->player-players])); I_OutputMsg("%s was hit by a kitchen sink.\n", player_names[t2->player-players]); + P_PlayerRingBurst(t2->player, t2->player->rings); P_DamageMobj(t2, t1, t1->target, 1, DMG_INSTAKILL); P_KillMobj(t1, t2, t2, DMG_NORMAL); } diff --git a/src/k_kart.c b/src/k_kart.c index 0e3a753cd..61c1246b6 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3746,7 +3746,7 @@ void K_ApplyTripWire(player_t *player, tripwirestate_t state) INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) // A bit of a hack, we just throw the player up higher here and extend their spinout timer { - INT32 ringburst = 10; + INT32 ringburst = 5; (void)source; @@ -3766,7 +3766,7 @@ INT32 K_ExplodePlayer(player_t *player, mobj_t *inflictor, mobj_t *source) // A { player->spinouttimer = ((5*player->spinouttimer)/2)+1; player->mo->momz *= 2; - ringburst = 20; + ringburst = 10; } } @@ -5363,7 +5363,6 @@ void K_DropHnextList(player_t *player, boolean keepshields) break; case KSHIELD_FLAME: S_StartSound(player->mo, sfx_s3k47); - player->flametimer = 0; break; } diff --git a/src/p_enemy.c b/src/p_enemy.c index fd9b831c6..dd796dd4f 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -3643,7 +3643,7 @@ void A_AttractChase(mobj_t *actor) actor->threshold--; // Rings flicker before disappearing - if (actor->fuse && actor->fuse < 5*TICRATE && (leveltime & 1)) + if (actor->fuse && actor->fuse < 2*TICRATE && (leveltime & 1)) actor->renderflags |= RF_DONTDRAW; else actor->renderflags &= ~RF_DONTDRAW; diff --git a/src/p_inter.c b/src/p_inter.c index d9c78af6f..838aff900 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -2161,7 +2161,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da { const UINT8 type = (damagetype & DMG_TYPEMASK); const boolean explosioncombo = (type == DMG_EXPLODE); // This damage type can do evil stuff like ALWAYS combo - INT16 ringburst = 5; // Check if the player is allowed to be damaged! // If not, then spawn the instashield effect instead. @@ -2241,21 +2240,75 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da player->sneakertimer = 0; player->driftboost = 0; player->bubblepop = 0; + player->flametimer = 0; + //player->flamestore = 0 + //player->flamedash = 0; player->ringboost = 0; player->glanceDir = 0; player->pflags &= ~PF_GAINAX; + INT16 ringburst = 3; + + // Handle ringloss based on hittype. + if (inflictor) + { + switch(inflictor->type) + { + case MT_BANANA: + if (inflictor->health > 1) + { + // Sniped! + ringburst = 10; + } + else + // FALLTHRU + case MT_BALLHOG: + case MT_BANANA_SHIELD: + ringburst = 3; + break; + + case MT_ORBINAUT: + case MT_ORBINAUT_SHIELD: + case MT_JAWZ: + case MT_JAWZ_DUD: + case MT_JAWZ_SHIELD: + ringburst = 5; + break; + + case MT_PLAYER: + if (inflictor->player) + { + if (inflictor->player->invincibilitytimer) + { + // Hit by invincibility + ringburst = 5; + } + } + break; + + default: + ringburst = 3; + break; + } + + } + switch (type) { case DMG_EXPLODE: case DMG_KARMA: + // 10 on SPB hit, 5 on normal explosion ringburst = K_ExplodePlayer(player, inflictor, source); LUA_HookPlayerExplode(target, inflictor, source, damage, damagetype); break; case DMG_SQUISH: + if (inflictor) + { + // Squished by player or object + ringburst = 5; + } K_SquishPlayer(player, inflictor, source); LUA_HookPlayerSquish(target, inflictor, source, damage, damagetype); - ringburst = 5; break; case DMG_WIPEOUT: if (P_IsDisplayPlayer(player)) @@ -2422,6 +2475,6 @@ void P_PlayerRingBurst(player_t *player, INT32 num_rings) for (i = 0; i < num_fling_rings; i++) { - P_FlingBurst(player, fa, MT_FLINGRING, 60*TICRATE, FRACUNIT, i); + P_FlingBurst(player, fa, MT_FLINGRING, 20*TICRATE, FRACUNIT, i); } }