diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 34ab268be..9d6362c5c 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -4920,11 +4920,11 @@ static void HWR_ProjectSprite(mobj_t *thing) if (thing->renderflags & RF_ABSOLUTEOFFSETS) { - spr_offset = interp.spritexoffset; + spr_offset = FixedDiv(interp.spritexoffset,highresscale); #ifdef ROTSPRITE - spr_topoffset = (interp.spriteyoffset + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); + spr_topoffset = (FixedDiv(interp.spriteyoffset,highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); #else - spr_topoffset = interp.spriteyoffset; + spr_topoffset = FixedDiv(interp.spriteyoffset,highresscale); #endif } else diff --git a/src/k_collide.c b/src/k_collide.c index e66d35f40..eefd54f9b 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -63,7 +63,7 @@ boolean K_OrbinautJawzCollide(mobj_t *t1, mobj_t *t2) if (t2->player->hyudorotimer) return true; // no interaction - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -159,7 +159,7 @@ boolean K_BananaBallhogCollide(mobj_t *t1, mobj_t *t2) damageitem = true; - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -249,7 +249,7 @@ boolean K_EggItemCollide(mobj_t *t1, mobj_t *t2) t2->player->roulettetype = KROULETTETYPE_EGGMAN; } - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); @@ -381,7 +381,7 @@ boolean K_LandMineCollide(mobj_t *t1, mobj_t *t2) if (t1->health > 1) S_StartSound(t2, sfx_bsnipe); - if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KITEM_FLAMESHIELD)) + if (t2->player->flamestore && (K_GetShieldFromPlayer(t2->player) == KSHIELD_FLAME)) { // Melt item S_StartSound(t2, sfx_s3k43); diff --git a/src/p_enemy.c b/src/p_enemy.c index beab8cb18..dbd35965b 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -10632,7 +10632,8 @@ void A_ItemPop(mobj_t *actor) remains->skin = NULL; remains->spawnpoint = actor->spawnpoint; - P_SetTarget(&g_tm.thing, remains); + // a pointless modification of global state causing bizarre collision problems... who could've thought? + //P_SetTarget(&g_tm.thing, remains); //if (actor->info->deathsound) //S_StartSound(remains, actor->info->deathsound); @@ -11187,7 +11188,7 @@ void A_SSMineExplode(mobj_t *actor) INT32 locvar1 = var1; mobjtype_t type; skincolornum_t color = SKINCOLOR_KETCHUP; - explodedist = FixedMul((3*actor->info->painchance)/2, actor->scale); + explodedist = FixedMul((3*actor->info->painchance)/2, mapobjectscale); if (LUA_CallAction(A_SSMINEEXPLODE, actor)) return; diff --git a/src/r_things.cpp b/src/r_things.cpp index bac424e52..e5309cf3a 100644 --- a/src/r_things.cpp +++ b/src/r_things.cpp @@ -1968,11 +1968,11 @@ static void R_ProjectSprite(mobj_t *thing) if (thing->renderflags & RF_ABSOLUTEOFFSETS) { - spr_offset = interp.spritexoffset; + spr_offset = FixedDiv(interp.spritexoffset, highresscale); #ifdef ROTSPRITE - spr_topoffset = (interp.spriteyoffset + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); + spr_topoffset = (FixedDiv(interp.spriteyoffset, highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)); #else - spr_topoffset = interp.spriteyoffset; + spr_topoffset = FixedDiv(interp.spriteyoffset, highresscale); #endif } else @@ -1984,7 +1984,7 @@ static void R_ProjectSprite(mobj_t *thing) spr_offset += FixedDiv(interp.spritexoffset, highresscale) * flipoffset; #ifdef ROTSPRITE - spr_topoffset += (FixedDiv(interp.spritexoffset, highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)) * flipoffset; + spr_topoffset += (FixedDiv(interp.spriteyoffset, highresscale) + FixedDiv((visoffs.y * visoffymul), mapobjectscale) + (rotoffset.y * visoffymul)) * flipoffset; #else spr_topoffset += FixedDiv(interp.spriteyoffset, highresscale) * flipoffset; #endif