From 8f3b2db7d3b99a60f93e29d0817c7796fb76ef58 Mon Sep 17 00:00:00 2001 From: NepDisk <16447892+NepDisk@users.noreply.github.com> Date: Mon, 29 Jul 2024 03:24:40 -0400 Subject: [PATCH] Remove hitlag. --- src/deh_tables.c | 3 -- src/g_demo.c | 2 - src/hardware/hw_main.c | 38 +-------------- src/hardware/hw_md2.c | 30 ++---------- src/info.c | 6 +-- src/k_boss.c | 4 -- src/k_collide.c | 44 ++--------------- src/k_color.c | 60 +---------------------- src/k_color.h | 28 ----------- src/k_hud.c | 17 ------- src/k_kart.c | 105 ++--------------------------------------- src/k_kart.h | 5 -- src/lua_baselib.c | 14 ------ src/lua_mobjlib.c | 8 ---- src/objects/hyudoro.c | 2 - src/p_enemy.c | 6 --- src/p_inter.c | 17 +------ src/p_map.c | 14 +----- src/p_mobj.c | 25 +--------- src/p_mobj.h | 9 ++-- src/p_saveg.c | 12 +---- src/p_user.c | 11 +---- src/r_draw.c | 3 -- src/r_draw.h | 1 - src/r_things.c | 47 +----------------- 25 files changed, 29 insertions(+), 482 deletions(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index c5e6446d1..fac091e37 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -5611,7 +5611,6 @@ const char *const MOBJFLAG_LIST[] = { "DONTENCOREMAP", "PICKUPFROMBELOW", "NOSQUISH", - "NOHITLAGFORME", NULL }; @@ -5664,7 +5663,6 @@ const char *const MOBJEFLAG_LIST[] = { "APPLYPMOMZ", // Platform movement "TRACERANGLE", // Compute and trigger on mobj angle relative to tracer "JUSTBOUNCEDWALL", - "DAMAGEHITLAG", "SLOPELAUNCHED", NULL }; @@ -6674,7 +6672,6 @@ struct int_const_s const INT_CONST[] = { {"TC_RAINBOW",TC_RAINBOW}, {"TC_BLINK",TC_BLINK}, {"TC_DASHMODE",TC_DASHMODE}, - {"TC_HITLAG",TC_HITLAG}, // marathonmode flags {"MA_INIT",MA_INIT}, diff --git a/src/g_demo.c b/src/g_demo.c index 24ee6cd4e..24842b5bd 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -1509,8 +1509,6 @@ void G_PreviewRewind(tic_t previewtime) players[i].mo->sprite2 = info->playerinfo[i].mobj.sprite2; players[i].mo->frame = info->playerinfo[i].mobj.frame; - players[i].mo->hitlag = info->playerinfo[i].mobj.hitlag; - players[i].realtime = info->playerinfo[i].player.realtime; // Genuinely CANNOT be fucked. I can redo lua and I can redo netsaves but I draw the line at this abysmal hack. /*for (j = 0; j < NUMKARTSTUFF; j++) diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 01e900c38..446aa2a8b 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -44,7 +44,7 @@ #include "hw_md2.h" // SRB2Kart -#include "../k_kart.h" // HITLAGJITTERS +#include "../k_kart.h" #include "../r_fps.h" #ifdef NEWCLIP @@ -3676,21 +3676,6 @@ static void HWR_DrawDropShadow(mobj_t *thing, fixed_t scale) R_InterpolateMobjState(thing, FRACUNIT, &interp); } - // hitlag vibrating (todo: interp somehow?) - if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG)) - { - fixed_t mul = thing->hitlag * HITLAGJITTERS; - - if (leveltime & 1) - { - mul = -mul; - } - - interp.x += FixedMul(thing->momx, mul); - interp.y += FixedMul(thing->momy, mul); - interp.z += FixedMul(thing->momz, mul); - } - // sprite offset interp.x += thing->sprxoff; interp.y += thing->spryoff; @@ -5131,21 +5116,6 @@ static void HWR_ProjectSprite(mobj_t *thing) dispoffset = thing->dispoffset; - // hitlag vibrating (todo: interp somehow?) - if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG)) - { - fixed_t mul = thing->hitlag * HITLAGJITTERS; - - if (leveltime & 1) - { - mul = -mul; - } - - interp.x += FixedMul(thing->momx, mul); - interp.y += FixedMul(thing->momy, mul); - interp.z += FixedMul(thing->momz, mul); - } - // sprite offset interp.x += thing->sprxoff; interp.y += thing->spryoff; @@ -5500,10 +5470,6 @@ static void HWR_ProjectSprite(mobj_t *thing) vis->mobj = thing; //Hurdler: 25/04/2000: now support colormap in hardware mode - if (R_ThingIsFlashing(vis->mobj)) - { - vis->colormap = R_GetTranslationColormap(TC_HITLAG, 0, GTC_CACHE); - } /* else if ((vis->mobj->flags & (MF_ENEMY|MF_BOSS)) && (vis->mobj->flags2 & MF2_FRET) && !(vis->mobj->flags & MF_GRENADEBOUNCE) && (leveltime & 1)) // Bosses "flash" { @@ -5515,7 +5481,7 @@ static void HWR_ProjectSprite(mobj_t *thing) vis->colormap = R_GetTranslationColormap(TC_BOSS, 0, GTC_CACHE); } */ - else if (thing->color) + if (thing->color) { // New colormap stuff for skins Tails 06-07-2002 if (thing->colorized) diff --git a/src/hardware/hw_md2.c b/src/hardware/hw_md2.c index 32b7ff7f4..046406847 100644 --- a/src/hardware/hw_md2.c +++ b/src/hardware/hw_md2.c @@ -46,7 +46,7 @@ // SRB2Kart #include "../k_color.h" -#include "../k_kart.h" // HITLAGJITTERS +#include "../k_kart.h" #include "../r_fps.h" #ifdef HAVE_PNG @@ -822,12 +822,7 @@ static void HWR_CreateBlendedTexture(patch_t *gpatch, patch_t *blendgpatch, GLMi while (size--) { - if (skinnum == TC_HITLAG) - { - cur->s.red = cur->s.green = cur->s.blue = K_HitlagColorValue(*image); - cur->s.alpha = image->s.alpha; - } - else if (skinnum == TC_BOSS) + if (skinnum == TC_BOSS) { // Turn everything below a certain threshold white if ((image->s.red == image->s.green) && (image->s.green == image->s.blue) && image->s.blue < 127) @@ -1381,21 +1376,6 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) R_InterpolateMobjState(spr->mobj, FRACUNIT, &interp); } - // hitlag vibrating - if (spr->mobj->hitlag > 0 && (spr->mobj->eflags & MFE_DAMAGEHITLAG)) - { - fixed_t mul = spr->mobj->hitlag * HITLAGJITTERS; - - if (leveltime & 1) - { - mul = -mul; - } - - interp.x += FixedMul(spr->mobj->momx, mul); - interp.y += FixedMul(spr->mobj->momy, mul); - interp.z += FixedMul(spr->mobj->momz, mul); - } - // sprite offset interp.x += spr->mobj->sprxoff; interp.y += spr->mobj->spryoff; @@ -1506,10 +1486,6 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) { INT32 skinnum = TC_DEFAULT; - if (R_ThingIsFlashing(spr->mobj)) - { - skinnum = TC_HITLAG; - } /* else if ((spr->mobj->flags & (MF_ENEMY|MF_BOSS)) && (spr->mobj->flags2 & MF2_FRET) && !(spr->mobj->flags & MF_GRENADEBOUNCE) && (leveltime & 1)) // Bosses "flash" { @@ -1521,7 +1497,7 @@ boolean HWR_DrawModel(gl_vissprite_t *spr) skinnum = TC_BOSS; } */ - else if ((skincolornum_t)spr->mobj->color != SKINCOLOR_NONE) + if ((skincolornum_t)spr->mobj->color != SKINCOLOR_NONE) { if (spr->mobj->colorized) skinnum = TC_RAINBOW; diff --git a/src/info.c b/src/info.c index d977de136..5ce5b0c2f 100644 --- a/src/info.c +++ b/src/info.c @@ -8754,7 +8754,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 4, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP|MF_SCENERY|MF_NOCLIPHEIGHT|MF_NOHITLAGFORME, // flags + MF_NOBLOCKMAP|MF_SCENERY|MF_NOCLIPHEIGHT, // flags S_NULL // raisestate }, @@ -8781,7 +8781,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 4, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY|MF_NOCLIPHEIGHT|MF_PAPERCOLLISION|MF_NOHITLAGFORME, // flags + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_SCENERY|MF_NOCLIPHEIGHT|MF_PAPERCOLLISION, // flags S_NULL // raisestate }, @@ -8808,7 +8808,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = 4, // mass 0, // damage sfx_None, // activesound - MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING|MF_NOHITLAGFORME, // flags + MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPTHING, // flags S_NULL // raisestate }, diff --git a/src/k_boss.c b/src/k_boss.c index 490adb27e..dfdfe19ec 100644 --- a/src/k_boss.c +++ b/src/k_boss.c @@ -85,10 +85,6 @@ void K_BossInfoTicker(void) if (bossinfo.weakspots[i].spot == NULL) continue; - // Damaged quickly? Make it disappear immediately (making sure to match the flashing). - if ((bossinfo.weakspots[i].spot->hitlag > 0) && (bossinfo.weakspots[i].time > TICRATE/2)) - bossinfo.weakspots[i].time = (TICRATE/2) & ~(bossinfo.weakspots[i].time & 1); - // Handle counter. if (!bossinfo.weakspots[i].time) continue; diff --git a/src/k_collide.c b/src/k_collide.c index 128364cfc..8eff80bda 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -41,9 +41,6 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) boolean damageitem = false; boolean sprung = false; - if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0)) - return true; - if (((t1->target == t2) || (!(t2->flags & (MF_ENEMY|MF_BOSS)) && (t1->target == t2->target))) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0))) return true; @@ -57,9 +54,6 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if ((t2->player->flashing > 0 && t2->hitlag == 0) - && !(t1->type == MT_ORBINAUT || t1->type == MT_JAWZ || t1->type == MT_JAWZ_DUD)) - return true; if (t2->player->hyudorotimer) return true; // no interaction @@ -138,9 +132,6 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) { boolean damageitem = false; - if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0)) - return true; - if (((t1->target == t2) || (!(t2->flags & (MF_ENEMY|MF_BOSS)) && (t1->target == t2->target))) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0))) return true; @@ -156,8 +147,6 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->flashing > 0 && t2->hitlag == 0) - return true; // Banana snipe! if (t1->type == MT_BANANA && t1->health > 1) @@ -223,9 +212,6 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) { - if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0)) - return true; - // Push fakes out of other item boxes if (t2->type == MT_RANDOMITEM || t2->type == MT_EGGMANITEM) { @@ -407,9 +393,6 @@ void K_MineExplodeAttack(mobj_t *actor, fixed_t size, boolean spin) boolean K_MineCollide(mobj_t *t1, mobj_t *t2) { - if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0)) - return true; - if (((t1->target == t2) || (!(t2->flags & (MF_ENEMY|MF_BOSS)) && (t1->target == t2->target))) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0))) return true; @@ -418,7 +401,7 @@ boolean K_MineCollide(mobj_t *t1, mobj_t *t2) if (t2->player) { - if (t2->player->flashing > 0 && t2->hitlag == 0) + if (t2->player->flashing > 0) return true; // Bomb punting @@ -460,9 +443,6 @@ boolean K_MineCollide(mobj_t *t1, mobj_t *t2) boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2) { - if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0)) - return true; - if (((t1->target == t2) || (!(t2->flags & (MF_ENEMY|MF_BOSS)) && (t1->target == t2->target))) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0))) return true; @@ -534,7 +514,7 @@ boolean K_DropTargetCollide(mobj_t *t1, mobj_t *t2) { mobj_t *draggeddroptarget = (t1->type == MT_DROPTARGET_SHIELD) ? t1->target : NULL; - if ((t1->threshold > 0 && (t2->hitlag > 0 || !draggeddroptarget)) || (t2->threshold > 0 && t1->hitlag > 0)) + if ((t1->threshold > 0 && (!draggeddroptarget)) || (t2->threshold > 0)) return true; if (((t1->target == t2) || (t1->target == t2->target)) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0))) @@ -593,13 +573,8 @@ boolean K_DropTargetCollide(mobj_t *t1, mobj_t *t2) t1->momx = (t1->momx + t2->momx)/2; t1->momy = (t1->momy + t2->momy)/2; t1->momz = (t1->momz + t2->momz)/2; - - K_AddHitLag(t1->target, 6, false); } - K_AddHitLag(t1, 6, true); - K_AddHitLag(t2, 6, false); - { mobj_t *ghost = P_SpawnGhostMobj(t1); UINT8 i; @@ -793,15 +768,12 @@ boolean K_BubbleShieldCollide(mobj_t *t1, mobj_t *t2) boolean K_KitchenSinkCollide(mobj_t *t1, mobj_t *t2) { - if ((t1->threshold > 0 && t2->hitlag > 0) || (t2->threshold > 0 && t1->hitlag > 0)) - return true; - if (((t1->target == t2) || (!(t2->flags & (MF_ENEMY|MF_BOSS)) && (t1->target == t2->target))) && (t1->threshold > 0 || (t2->type != MT_PLAYER && t2->threshold > 0))) return true; if (t2->player) { - if (t2->player->flashing > 0 && t2->hitlag == 0) + if (t2->player->flashing > 0) return true; S_StartSound(NULL, sfx_bsnipe); // let all players hear it. @@ -953,15 +925,5 @@ boolean K_PvPTouchDamage(mobj_t *t1, mobj_t *t2) P_PlayerRingBurst(t1->player, 1); } - // No damage hitlag for stinging. - if (stungT1 == true && stungT2 == false) - { - t2->eflags &= ~MFE_DAMAGEHITLAG; - } - else if (stungT2 == true && stungT1 == false) - { - t1->eflags &= ~MFE_DAMAGEHITLAG; - } - return (stungT1 || stungT2); } diff --git a/src/k_color.c b/src/k_color.c index ac1a2e6c8..7d8c49be8 100644 --- a/src/k_color.c +++ b/src/k_color.c @@ -90,59 +90,6 @@ void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor) } } -/*-------------------------------------------------- - UINT8 K_HitlagColorValue(RGBA_t color) - - See header file for description. ---------------------------------------------------*/ -UINT8 K_HitlagColorValue(RGBA_t color) -{ - // Outputs a raw brightness value (makes OGL support easier) - INT32 output = K_ColorRelativeLuminance(color.s.red, color.s.green, color.s.blue); - - // Invert the color - output = 255 - output; - - // Increase the contrast - output = ((output-128) * 2) + 128; - - // Make sure to cap it. - if (output > 255) - { - output = 255; - } - else if (output < 0) - { - output = 0; - } - - return output; -} - -/*-------------------------------------------------- - void K_HitlagColormap(UINT8 *dest_colormap) - - See header file for description. ---------------------------------------------------*/ -void K_HitlagColormap(UINT8 *dest_colormap) -{ - RGBA_t color; - UINT8 v, offset; - INT32 i; - - // for every colour in the palette, invert, greyscale, and increase the contrast. - for (i = 0; i < NUM_PALETTE_ENTRIES; i++) - { - color = V_GetColor(i); - v = K_HitlagColorValue(color); - - // Convert raw brightness value to an offset from the greyscale palette line - offset = (255 - v) / 8; - - dest_colormap[i] = offset; // Starts from 0, add it if greyscale moves. - } -} - /*-------------------------------------------------- void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color) @@ -153,12 +100,7 @@ void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color) INT32 i; INT32 starttranscolor; - if (skinnum == TC_HITLAG) - { - K_HitlagColormap(dest_colormap); - return; - } - else if (skinnum == TC_BOSS + if (skinnum == TC_BOSS || skinnum == TC_ALLWHITE || skinnum == TC_METALSONIC || skinnum == TC_BLINK diff --git a/src/k_color.h b/src/k_color.h index 6e6778d75..c85c61771 100644 --- a/src/k_color.h +++ b/src/k_color.h @@ -66,34 +66,6 @@ UINT16 K_RainbowColor(tic_t time); void K_RainbowColormap(UINT8 *dest_colormap, UINT8 skincolor); -/*-------------------------------------------------- - UINT8 K_HitlagColorValue(RGBA_t color); - - Gets the new replacement brightness value for the hitlag effect. - - Input Arguments:- - color - Input color we intend to replace. - - Return:- - 0 to 255 brightness value. ---------------------------------------------------*/ - -UINT8 K_HitlagColorValue(RGBA_t color); - -/*-------------------------------------------------- - void K_HitlagColormap(UINT8 *dest_colormap); - - Generates a inverted hi-contrast greyscale colormap, - for the hitlag effect. - - Input Arguments:- - dest_colormap - Colormap to populate. - - Return:- - None ---------------------------------------------------*/ - -void K_HitlagColormap(UINT8 *dest_colormap); /*-------------------------------------------------- void K_GenerateKartColormap(UINT8 *dest_colormap, INT32 skinnum, UINT8 color); diff --git a/src/k_hud.c b/src/k_hud.c index cd4ce30ab..ba4c23956 100644 --- a/src/k_hud.c +++ b/src/k_hud.c @@ -4163,23 +4163,6 @@ static void K_drawKartFirstPerson(void) fixed_t xoffs = -P_ReturnThrustY(stplyr->mo, ang, (BASEVIDWIDTH<<(FRACBITS-2))/2); fixed_t yoffs = -P_ReturnThrustX(stplyr->mo, ang, 4*FRACUNIT); - // hitlag vibrating - if (stplyr->mo->hitlag > 0 && (stplyr->mo->eflags & MFE_DAMAGEHITLAG)) - { - fixed_t mul = stplyr->mo->hitlag * HITLAGJITTERS; - if (r_splitscreen && mul > FRACUNIT) - mul = FRACUNIT; - - if (leveltime & 1) - { - mul = -mul; - } - - xoffs = FixedMul(xoffs, mul); - yoffs = FixedMul(yoffs, mul); - - } - if ((yoffs += 4*FRACUNIT) < 0) yoffs = 0; diff --git a/src/k_kart.c b/src/k_kart.c index f08975392..f53ac5ec9 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -3435,75 +3435,6 @@ angle_t K_MomentumAngle(mobj_t *mo) } } -void K_AddHitLag(mobj_t *mo, INT32 tics, boolean fromDamage) -{ - if (mo == NULL || P_MobjWasRemoved(mo) || (mo->flags & MF_NOHITLAGFORME && mo->type != MT_PLAYER)) - { - return; - } - - mo->hitlag += tics; - mo->hitlag = min(mo->hitlag, MAXHITLAGTICS); - - if (mo->player != NULL) - { - // Reset each time. We want to explicitly set this for bananas afterwards, - // so make sure an old value doesn't possibly linger. - mo->player->flipDI = false; - } - - if (fromDamage == true) - { - // Dunno if this should flat-out &~ the flag out too. - // Decided it probably just just keep it since it's "adding" hitlag. - mo->eflags |= MFE_DAMAGEHITLAG; - } -} - -void K_SetHitLagForObjects(mobj_t *mo1, mobj_t *mo2, INT32 tics, boolean fromDamage) -{ - INT32 finalTics = tics; - - if (tics <= 0) - { - return; - } - - if ((mo1 && !P_MobjWasRemoved(mo1)) == true && (mo2 && !P_MobjWasRemoved(mo2)) == true) - { - const fixed_t speedTicFactor = (mapobjectscale * 8); - const INT32 angleTicFactor = ANGLE_22h; - - const fixed_t mo1speed = FixedHypot(FixedHypot(mo1->momx, mo1->momy), mo1->momz); - const fixed_t mo2speed = FixedHypot(FixedHypot(mo2->momx, mo2->momy), mo2->momz); - const fixed_t speedDiff = abs(mo2speed - mo1speed); - - const fixed_t scaleDiff = abs(mo2->scale - mo1->scale); - - angle_t mo1angle = K_MomentumAngle(mo1); - angle_t mo2angle = K_MomentumAngle(mo2); - INT32 angleDiff = 0; - - if (mo1speed > 0 && mo2speed > 0) - { - // If either object is completely not moving, their speed doesn't matter. - angleDiff = AngleDelta(mo1angle, mo2angle); - } - - // Add extra "damage" based on what was happening to the objects on impact. - finalTics += (FixedMul(speedDiff, FRACUNIT + scaleDiff) / speedTicFactor) + (angleDiff / angleTicFactor); - - // This shouldn't happen anymore, but just in case something funky happens. - if (finalTics < tics) - { - finalTics = tics; - } - } - - K_AddHitLag(mo1, finalTics, fromDamage); - K_AddHitLag(mo2, finalTics, false); // mo2 is the inflictor, so don't use the damage property. -} - void K_AwardPlayerRings(player_t *player, INT32 rings, boolean overload) { UINT16 superring; @@ -3557,8 +3488,6 @@ void K_DoPowerClash(player_t *t1, player_t *t2) { t2->instashield = 1; S_StartSound(t1->mo, sfx_parry); - K_AddHitLag(t1->mo, 6, false); - K_AddHitLag(t2->mo, 6, false); clash = P_SpawnMobj((t1->mo->x/2) + (t2->mo->x/2), (t1->mo->y/2) + (t2->mo->y/2), (t1->mo->z/2) + (t2->mo->z/2), MT_POWERCLASH); @@ -3759,10 +3688,6 @@ static void K_HandleTumbleBounce(player_t *player) } } - // A bit of damage hitlag. - // This gives a window for DI!! - K_AddHitLag(player->mo, 3, true); - if (P_IsDisplayPlayer(player) && player->tumbleHeight >= 40) P_StartQuake((player->tumbleHeight*3/2)<mo, sfx_kc40); player->tripwireState = state; - K_AddHitLag(player->mo, 10, false); if (state == TRIPSTATE_PASSED && player->spinouttimer && player->speed > 2 * K_GetKartSpeed(player, false, true)) @@ -5279,9 +5203,6 @@ void K_PuntMine(mobj_t *origMine, mobj_t *punter) if (!origMine || P_MobjWasRemoved(origMine)) return; - if (punter->hitlag > 0) - return; - // This guarantees you hit a mine being dragged if (origMine->type == MT_SSMINE_SHIELD) // Create a new mine, and clean up the old one { @@ -5330,7 +5251,7 @@ void K_PuntMine(mobj_t *origMine, mobj_t *punter) if (!mine || P_MobjWasRemoved(mine)) return; - if (mine->threshold > 0 || mine->hitlag > 0) + if (mine->threshold > 0) return; spd = FixedMul(82 * punter->scale, K_GetKartGameSpeedScalar(gamespeed)); // Avg Speed is 41 in Normal @@ -5345,8 +5266,6 @@ void K_PuntMine(mobj_t *origMine, mobj_t *punter) mine->momy = punter->momy + FixedMul(FINESINE(fa >> ANGLETOFINESHIFT), spd); P_SetObjectMomZ(mine, z, false); - //K_SetHitLagForObjects(punter, mine, 5); - mine->flags &= ~MF_NOCLIPTHING; } @@ -5687,7 +5606,7 @@ void K_DoPogoSpring(mobj_t *mo, fixed_t vertispeed, UINT8 sound) thrust = FixedMul(thrust, 9*FRACUNIT/8); } - mo->player->tricktime = 0; // Reset post-hitlag timer + mo->player->tricktime = 0; // Setup the boost for potential upwards trick, at worse, make it your regular max speed. (boost = curr speed*1.25) mo->player->trickboostpower = max(FixedDiv(mo->player->speed, K_GetKartSpeed(mo->player, false, false)) - FRACUNIT, 0)*125/100; //CONS_Printf("Got boost: %d%\n", mo->player->trickboostpower*100 / FRACUNIT); @@ -5926,7 +5845,6 @@ void K_DropHnextList(player_t *player, boolean keepshields) dropwork->ceilingz = work->ceilingz; dropwork->health = work->health; // will never be set to 0 as long as above guard exists - dropwork->hitlag = work->hitlag; // Copy interp data dropwork->old_angle = work->old_angle; @@ -6002,15 +5920,6 @@ void K_DropHnextList(player_t *player, boolean keepshields) { dropwork->threshold = 10; dropwork->flags &= ~MF_NOCLIPTHING; - - if (type == MT_DROPTARGET && dropwork->hitlag) - { - dropwork->momx = work->momx; - dropwork->momy = work->momy; - dropwork->momz = work->momz; - dropwork->reactiontime = work->reactiontime; - P_SetMobjState(dropwork, mobjinfo[type].painstate); - } } P_RemoveMobj(work); @@ -9246,7 +9155,7 @@ static void K_KartSpindash(player_t *player) UINT16 buttons = K_GetKartButtons(player); boolean spawnWind = (leveltime % 2 == 0); - if (player->mo->hitlag > 0 || P_PlayerInPain(player)) + if (P_PlayerInPain(player)) { player->spindash = 0; } @@ -9507,7 +9416,7 @@ void K_AdjustPlayerFriction(player_t *player) // // K_trickPanelTimingVisual // Spawns the timing visual for trick panels depending on the given player's momz. -// If the player has tricked and is not in hitlag, this will send the half circles flying out. +// If the player has tricked, this will send the half circles flying out. // if you tumble, they'll fall off instead. // @@ -10440,9 +10349,6 @@ void K_MoveKartPlayer(player_t *player, boolean onground) // Finalise everything. if (player->trickpanel != 1) // just changed from 1? { - player->mo->hitlag = TRICKLAG; - player->mo->eflags &= ~MFE_DAMAGEHITLAG; - K_trickPanelTimingVisual(player, momz); if (abs(momz) < FRACUNIT*99) // Let's use that as baseline for PERFECT trick. @@ -10658,9 +10564,6 @@ void K_HandleDirectionalInfluence(player_t *player) return; } - // DI attempted!! - player->justDI = MAXHITLAGTICS; - cmd = &player->cmd; inputX = cmd->throwdir; diff --git a/src/k_kart.h b/src/k_kart.h index a6484adce..5a32ff630 100644 --- a/src/k_kart.h +++ b/src/k_kart.h @@ -19,9 +19,6 @@ Make sure this matches the actual number of states */ #define KART_NUMINVSPARKLESANIM 12 -#define MAXHITLAGTICS 18 //12 -#define HITLAGJITTERS (FRACUNIT / 20) - #define GROW_SCALE (2*FRACUNIT) #define SHRINK_SCALE (FRACUNIT/2) @@ -65,8 +62,6 @@ void K_KartResetPlayerColor(player_t *player); void K_KartPlayerThink(player_t *player, ticcmd_t *cmd); void K_KartPlayerAfterThink(player_t *player); angle_t K_MomentumAngle(mobj_t *mo); -void K_AddHitLag(mobj_t *mo, INT32 tics, boolean fromDamage); -void K_SetHitLagForObjects(mobj_t *mo1, mobj_t *mo2, INT32 tics, boolean fromDamage); void K_AwardPlayerRings(player_t *player, INT32 rings, boolean overload); void K_DoInstashield(player_t *player); void K_DoPowerClash(player_t *t1, player_t *t2); diff --git a/src/lua_baselib.c b/src/lua_baselib.c index e172ea978..6ef082ea4 100644 --- a/src/lua_baselib.c +++ b/src/lua_baselib.c @@ -3758,19 +3758,6 @@ static int lib_kGetCollideAngle(lua_State *L) return 1; } -static int lib_kAddHitLag(lua_State *L) -{ - mobj_t *mo = *((mobj_t **)luaL_checkudata(L, 1, META_MOBJ)); - tic_t tics = (tic_t)luaL_checkinteger(L, 2); - boolean fromdamage = lua_opttrueboolean(L, 3); - NOHUD - if (!mo) - return LUA_ErrInvalid(L, "mobj_t"); - K_AddHitLag(mo, tics, fromdamage); - return 0; -} - - static int lib_kInitBossHealthBar(lua_State *L) { const char *enemyname = luaL_checkstring(L, 1); @@ -4084,7 +4071,6 @@ static luaL_Reg lib[] = { {"K_GetItemPatch",lib_kGetItemPatch}, {"K_GetCollideAngle",lib_kGetCollideAngle}, - {"K_AddHitLag",lib_kAddHitLag}, // k_boss {"K_InitBossHealthBar", lib_kInitBossHealthBar}, diff --git a/src/lua_mobjlib.c b/src/lua_mobjlib.c index 418a43bf9..0a2400624 100644 --- a/src/lua_mobjlib.c +++ b/src/lua_mobjlib.c @@ -99,7 +99,6 @@ enum mobj_e { mobj_sprxoff, mobj_spryoff, mobj_sprzoff, - mobj_hitlag, mobj_dispoffset }; @@ -180,7 +179,6 @@ static const char *const mobj_opt[] = { "sprxoff", "spryoff", "sprzoff", - "hitlag", "dispoffset", NULL}; @@ -457,9 +455,6 @@ static int mobj_get(lua_State *L) case mobj_sprzoff: lua_pushfixed(L, mo->sprzoff); break; - case mobj_hitlag: - lua_pushinteger(L, mo->hitlag); - break; case mobj_dispoffset: lua_pushinteger(L, mo->dispoffset); break; @@ -832,9 +827,6 @@ static int mobj_set(lua_State *L) case mobj_sprzoff: mo->sprzoff = luaL_checkfixed(L, 3); break; - case mobj_hitlag: - mo->hitlag = luaL_checkinteger(L, 3); - break; case mobj_dispoffset: mo->dispoffset = luaL_checkinteger(L, 3); break; diff --git a/src/objects/hyudoro.c b/src/objects/hyudoro.c index 0a362aa89..635c9474a 100644 --- a/src/objects/hyudoro.c +++ b/src/objects/hyudoro.c @@ -302,8 +302,6 @@ hyudoro_patrol_hit_player if (!player->itemamount) return false; - K_AddHitLag(toucher, TICRATE/2, true); - hyudoro_mode(hyu) = HYU_RETURN; hyudoro_itemtype(hyu) = player->itemtype; hyudoro_itemcount(hyu) = player->itemamount; diff --git a/src/p_enemy.c b/src/p_enemy.c index 87bd26745..2aeb58b41 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -13607,12 +13607,6 @@ void A_SPBChase(mobj_t *actor) actor->lastlook = actor->tracer->player-players; // Save the player num for death scumming... actor->tracer->player->pflags |= PF_RINGLOCK; // set ring lock - if (actor->tracer->hitlag) - { - // If the player is frozen through no fault of their own, the SPB should be too. - actor->hitlag = actor->tracer->hitlag; - } - if (!P_IsObjectOnGround(actor->tracer)) { // In the air you have no control; basically don't hit unless you make a near complete stop diff --git a/src/p_inter.c b/src/p_inter.c index 597dd5ccb..22b617da0 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -394,9 +394,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck) if (special->threshold > 0) return; - if (toucher->hitlag > 0) - return; - player->emeralds |= special->extravalue1; K_CheckEmeralds(player); break; @@ -972,8 +969,6 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget if (LUAh_MobjDeath(target, inflictor, source, damagetype) || P_MobjWasRemoved(target)) return; - //K_SetHitLagForObjects(target, inflictor, MAXHITLAGTICS, true); - // SRB2kart // I wish I knew a better way to do this if (target->target && target->target->player && target->target->player->mo) @@ -1251,8 +1246,6 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget { kart->angle = target->angle; kart->color = target->color; - kart->hitlag = target->hitlag; - kart->eflags |= MFE_DAMAGEHITLAG; P_SetObjectMomZ(kart, 6*FRACUNIT, false); kart->extravalue1 = target->player->kartweight; @@ -1754,7 +1747,6 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, } K_DropEmeraldsFromPlayer(player, player->emeralds); - K_SetHitLagForObjects(player->mo, inflictor, MAXHITLAGTICS, true); player->carry = CR_NONE; @@ -1855,7 +1847,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (!(target->flags & MF_SHOOTABLE)) return false; // shouldn't happen... - if (!(damagetype & DMG_DEATHMASK) && target->hitlag > 0 && inflictor == NULL) + if (!(damagetype & DMG_DEATHMASK) && inflictor == NULL) return false; } @@ -1949,7 +1941,7 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da allowcombo = false; } - if ((target->hitlag == 0 || allowcombo == false) && player->flashing > 0) + if ((allowcombo == false) && player->flashing > 0) { // Post-hit invincibility K_DoInstashield(player); @@ -2088,7 +2080,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } player->instashield = 15; - K_SetHitLagForObjects(target, inflictor, laglength, true); if (inflictor && !P_MobjWasRemoved(inflictor) && inflictor->type == MT_BANANA) { @@ -2116,16 +2107,12 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (source && source->player && target) G_GhostAddHit((INT32) (source->player - players), target); - K_SetHitLagForObjects(target, inflictor, laglength, true); - if (target->health <= 0) { P_KillMobj(target, inflictor, source, damagetype); return true; } - //K_SetHitLagForObjects(target, inflictor, laglength, true); - if (player) P_ResetPlayer(target->player); else diff --git a/src/p_map.c b/src/p_map.c index 365427300..d8d95065b 100644 --- a/src/p_map.c +++ b/src/p_map.c @@ -446,7 +446,7 @@ boolean P_DoSpring(mobj_t *spring, mobj_t *object) { if (spring->reactiontime == 0) { - object->player->tricktime = 0; // Reset post-hitlag timer + object->player->tricktime = 0; // Setup the boost for potential upwards trick, at worse, make it your regular max speed. (boost = curr speed*1.25) object->player->trickboostpower = max(FixedDiv(object->player->speed, K_GetKartSpeed(object->player, false, false)) - FRACUNIT, 0)*125/100; //CONS_Printf("Got boost: %d%\n", mo->player->trickboostpower*100 / FRACUNIT); @@ -569,10 +569,6 @@ static BlockItReturn_t PIT_CheckThing(mobj_t *thing) || (thing->player && thing->player->spectator)) return BMIT_CONTINUE; - // Ignore the collision if BOTH things are in hitlag. - if (thing->hitlag > 0 && tmthing->hitlag > 0) - return BMIT_CONTINUE; - if ((thing->flags & MF_NOCLIPTHING) || !(thing->flags & (MF_SOLID|MF_SPECIAL|MF_PAIN|MF_SHOOTABLE|MF_SPRING))) return BMIT_CONTINUE; @@ -2509,14 +2505,6 @@ boolean P_TryMove(mobj_t *thing, fixed_t x, fixed_t y, boolean allowdropoff) // And Big Large (tm) movements can skip over slopes. radius = min(radius, 16*mapobjectscale); -#if 0 - if (thing->hitlag > 0) - { - // Do not move during hitlag - return false; - } -#endif - do { if (thing->flags & MF_NOCLIP) { diff --git a/src/p_mobj.c b/src/p_mobj.c index 9b64fb457..c900fff92 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -5492,8 +5492,6 @@ static void P_MobjSceneryThink(mobj_t *mobj) } else P_AddOverlay(mobj); - if (mobj->target->hitlag) // move to the correct position, update to the correct properties, but DON'T STATE-ANIMATE - return; break; case MT_WATERDROP: P_SceneryCheckWater(mobj); @@ -9342,26 +9340,7 @@ void P_MobjThinker(mobj_t *mobj) if ((mobj->flags & MF_BOSS) && mobj->spawnpoint && (bossdisabled & (1<spawnpoint->extrainfo))) return; - // Don't run any thinker code while in hitlag - if (mobj->hitlag > 0) - { - mobj->hitlag--; - - if (mobj->type == MT_DROPTARGET && mobj->reactiontime > 0 && mobj->hitlag == 2) - { - mobj->spritexscale = FRACUNIT; - mobj->spriteyscale = 5*FRACUNIT; - } - - if (mobj->player != NULL && mobj->hitlag == 0 && (mobj->eflags & MFE_DAMAGEHITLAG)) - { - K_HandleDirectionalInfluence(mobj->player); - } - - return; - } - - mobj->eflags &= ~(MFE_PUSHED|MFE_SPRUNG|MFE_JUSTBOUNCEDWALL|MFE_DAMAGEHITLAG|MFE_SLOPELAUNCHED); + mobj->eflags &= ~(MFE_PUSHED|MFE_SPRUNG|MFE_JUSTBOUNCEDWALL|MFE_SLOPELAUNCHED); tmfloorthing = tmhitthing = NULL; @@ -10009,8 +9988,6 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) mobj->colorized = false; - mobj->hitlag = 0; - // Set shadowscale here, before spawn hook so that Lua can change it P_DefaultMobjShadowScale(mobj); diff --git a/src/p_mobj.h b/src/p_mobj.h index 9f54c3608..f232608ea 100644 --- a/src/p_mobj.h +++ b/src/p_mobj.h @@ -161,8 +161,8 @@ typedef enum MF_PICKUPFROMBELOW = 1<<29, // Disable momentum-based squash and stretch. MF_NOSQUISH = 1<<30, - // Disable hitlag for this object - MF_NOHITLAGFORME = (INT32)(1U<<31), + // Free + // = (INT32)(1U<<31), // no more free slots, next up I suppose we can get rid of shit like MF_BOXICON? } mobjflag_t; @@ -251,8 +251,8 @@ typedef enum MFE_TRACERANGLE = 1<<11, // SRB2Kart: The mobj just hit & bounced off a wall, this is cleared on next frame MFE_JUSTBOUNCEDWALL = 1<<12, - // SRB2Kart: In damage hitlag (displays different visual efx) - MFE_DAMAGEHITLAG = 1<<13, + // SRB2Kart: free + // = 1<<13, // Slope physics sent you airborne MFE_SLOPELAUNCHED = 1<<14, // free: to and including 1<<15 @@ -406,7 +406,6 @@ typedef struct mobj_s fixed_t sprxoff, spryoff, sprzoff; // Sprite offsets in real space, does NOT affect position or collision struct terrain_s *terrain; // Terrain definition of the floor this object last hit. NULL when in the air. - INT32 hitlag; // Sal-style hit lag, straight from Captain Fetch's jowls INT32 dispoffset; diff --git a/src/p_saveg.c b/src/p_saveg.c index 3333c94e2..89e2fac07 100644 --- a/src/p_saveg.c +++ b/src/p_saveg.c @@ -1603,7 +1603,7 @@ typedef enum MD2_SPRITEYOFFSET = 1<<21, MD2_FLOORSPRITESLOPE = 1<<22, MD2_DISPOFFSET = 1<<23, - MD2_HITLAG = 1<<24, + //free = 1<<24, MD2_WAYPOINTCAP = 1<<25, MD2_KITEMCAP = 1<<26, MD2_ITNEXT = 1<<27, @@ -1841,8 +1841,6 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type) || (slope->normal.z != FRACUNIT)) diff2 |= MD2_FLOORSPRITESLOPE; } - if (mobj->hitlag) - diff2 |= MD2_HITLAG; if (mobj->dispoffset) diff2 |= MD2_DISPOFFSET; if (mobj == waypointcap) @@ -2049,10 +2047,6 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type) WRITEFIXED(save_p, slope->normal.y); WRITEFIXED(save_p, slope->normal.z); } - if (diff2 & MD2_HITLAG) - { - WRITEINT32(save_p, mobj->hitlag); - } if (diff2 & MD2_DISPOFFSET) { WRITEINT32(save_p, mobj->dispoffset); @@ -3158,10 +3152,6 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker) P_UpdateSlopeLightOffset(slope); } - if (diff2 & MD2_HITLAG) - { - mobj->hitlag = READINT32(save_p); - } if (diff2 & MD2_DISPOFFSET) { mobj->dispoffset = READINT32(save_p); diff --git a/src/p_user.c b/src/p_user.c index 2bf101428..6dc3ec981 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -3079,11 +3079,9 @@ boolean P_MoveChaseCamera(player_t *player, camera_t *thiscam, boolean resetcall mo = player->mo; - if (mo->hitlag > 0 || player->playerstate == PST_DEAD) + if (player->playerstate == PST_DEAD) { - // Do not move the camera while in hitlag! - // The camera zooming out after you got hit makes it hard to focus on the vibration. - // of course, if you're in chase, don't forget the postimage - otherwise encore will flip back + // Do not move the camera while dead! if (thiscam->chase) P_CalcChasePostImg(player, thiscam); @@ -4101,11 +4099,6 @@ void P_PlayerThink(player_t *player) if (player->awayviewtics && player->awayviewtics != -1) player->awayviewtics--; - if (player->mo->hitlag > 0) - { - return; - } - // Track airtime if (P_IsObjectOnGround(player->mo) && !P_PlayerInPain(player)) // This isn't airtime, but it's control loss all the same. diff --git a/src/r_draw.c b/src/r_draw.c index 7488ab5aa..cbf673e9e 100644 --- a/src/r_draw.c +++ b/src/r_draw.c @@ -147,7 +147,6 @@ UINT32 nflatxshift, nflatyshift, nflatshiftup, nflatmask; #define RAINBOW_TT_CACHE_INDEX (MAXSKINS + 4) #define BLINK_TT_CACHE_INDEX (MAXSKINS + 5) #define DASHMODE_TT_CACHE_INDEX (MAXSKINS + 6) -#define HITLAG_TT_CACHE_INDEX (MAXSKINS + 7) #define TT_CACHE_SIZE (MAXSKINS + 8) #define SKIN_RAMP_LENGTH 16 @@ -168,7 +167,6 @@ static INT32 SkinToCacheIndex(INT32 skinnum) case TC_RAINBOW: return RAINBOW_TT_CACHE_INDEX; case TC_BLINK: return BLINK_TT_CACHE_INDEX; case TC_DASHMODE: return DASHMODE_TT_CACHE_INDEX; - case TC_HITLAG: return HITLAG_TT_CACHE_INDEX; default: break; } @@ -186,7 +184,6 @@ static INT32 CacheIndexToSkin(INT32 ttc) case RAINBOW_TT_CACHE_INDEX: return TC_RAINBOW; case BLINK_TT_CACHE_INDEX: return TC_BLINK; case DASHMODE_TT_CACHE_INDEX: return TC_DASHMODE; - case HITLAG_TT_CACHE_INDEX: return TC_HITLAG; default: break; } diff --git a/src/r_draw.h b/src/r_draw.h index a570bc5b9..f99ea5aed 100644 --- a/src/r_draw.h +++ b/src/r_draw.h @@ -123,7 +123,6 @@ enum TC_RAINBOW, // For single colour TC_BLINK, // For item blinking, according to kart TC_DASHMODE, // For Metal Sonic's dashmode - TC_HITLAG, // Damage hitlag effect TC_DEFAULT }; diff --git a/src/r_things.c b/src/r_things.c index cc5694dff..b3f0c2f9c 100644 --- a/src/r_things.c +++ b/src/r_things.c @@ -46,7 +46,7 @@ // SRB2kart #include "k_color.h" -#include "k_kart.h" // HITLAGJITTERS +#include "k_kart.h" #include "r_fps.h" #define MINZ (FRACUNIT*4) @@ -789,13 +789,6 @@ void R_DrawFlippedMaskedColumn(column_t *column, column_t *brightmap) dc_texturemid = basetexturemid; } -static boolean hitlag_is_flashing(mobj_t *thing) -{ - return - (thing->hitlag > 0) && - (thing->eflags & (MFE_DAMAGEHITLAG)); -} - static boolean baddie_is_flashing(mobj_t *thing) { return @@ -807,17 +800,11 @@ static boolean baddie_is_flashing(mobj_t *thing) boolean R_ThingIsFlashing(mobj_t *thing) { return - hitlag_is_flashing(thing) || baddie_is_flashing(thing); } UINT8 *R_GetSpriteTranslation(vissprite_t *vis) { - if (!(vis->cut & SC_PRECIP) && - R_ThingIsFlashing(vis->mobj)) - { - return R_GetTranslationColormap(TC_HITLAG, 0, GTC_CACHE); - } /* else if (R_SpriteIsFlashing(vis)) // Bosses "flash" { @@ -829,7 +816,7 @@ UINT8 *R_GetSpriteTranslation(vissprite_t *vis) return R_GetTranslationColormap(TC_BOSS, 0, GTC_CACHE); } */ - else if (vis->mobj->color) + if (vis->mobj->color) { // New colormap stuff for skins Tails 06-07-2002 if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized) @@ -1537,21 +1524,6 @@ static void R_ProjectSprite(mobj_t *thing) this_scale = interp.scale; - // hitlag vibrating (todo: interp somehow?) - if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG)) - { - fixed_t mul = thing->hitlag * HITLAGJITTERS; - - if (leveltime & 1) - { - mul = -mul; - } - - interp.x += FixedMul(thing->momx, mul); - interp.y += FixedMul(thing->momy, mul); - interp.z += FixedMul(thing->momz, mul); - } - // sprite offset interp.x += thing->sprxoff; interp.y += thing->spryoff; @@ -1877,21 +1849,6 @@ static void R_ProjectSprite(mobj_t *thing) R_InterpolateMobjState(thing, FRACUNIT, &tracer_interp); } - // hitlag vibrating (todo: interp somehow?) - if (thing->hitlag > 0 && (thing->eflags & MFE_DAMAGEHITLAG)) - { - fixed_t mul = thing->hitlag * (FRACUNIT / 10); - - if (leveltime & 1) - { - mul = -mul; - } - - tracer_interp.x += FixedMul(thing->momx, mul); - tracer_interp.y += FixedMul(thing->momy, mul); - tracer_interp.z += FixedMul(thing->momz, mul); - } - // sprite offset tracer_interp.x += thing->sprxoff; tracer_interp.y += thing->spryoff;