diff --git a/src/command.c b/src/command.c index 8b8001363..651540b5f 100644 --- a/src/command.c +++ b/src/command.c @@ -730,7 +730,7 @@ static void COM_ExecuteString(char *ptext) // check cvars // Hurdler: added at Ebola's request ;) // (don't flood the console in software mode with bad gl_xxx command) - if (!CV_Command() && con_destlines) + if (!CV_Command() && (con_destlines || dedicated)) CONS_Printf(M_GetText("Unknown command '%s'\n"), COM_Argv(0)); } diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 32f46bda3..d729439cc 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -5362,21 +5362,24 @@ static void HWR_ProjectSprite(mobj_t *thing) if (thing->renderflags & RF_SHADOWEFFECTS) { mobj_t *caster = thing->target; - interpmobjstate_t casterinterp = {0}; - - if (R_UsingFrameInterpolation() && !paused) - { - R_InterpolateMobjState(caster, rendertimefrac, &casterinterp); - } - else - { - R_InterpolateMobjState(caster, FRACUNIT, &casterinterp); - } if (caster && !P_MobjWasRemoved(caster)) { - fixed_t groundz = R_GetShadowZ(thing, NULL); - fixed_t floordiff = abs(((thing->eflags & MFE_VERTICALFLIP) ? caster->height : 0) + casterinterp.z - groundz); + interpmobjstate_t casterinterp = {0}; + fixed_t groundz; + fixed_t floordiff; + + if (R_UsingFrameInterpolation() && !paused) + { + R_InterpolateMobjState(caster, rendertimefrac, &casterinterp); + } + else + { + R_InterpolateMobjState(caster, FRACUNIT, &casterinterp); + } + + groundz = R_GetShadowZ(thing, NULL); + floordiff = abs(((thing->eflags & MFE_VERTICALFLIP) ? caster->height : 0) + casterinterp.z - groundz); shadowheight = FIXED_TO_FLOAT(floordiff); shadowscale = FIXED_TO_FLOAT(FixedMul(FRACUNIT - floordiff/640, casterinterp.scale)); diff --git a/src/p_floor.c b/src/p_floor.c index a81287102..2d25e8208 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -591,7 +591,6 @@ void T_BounceCheese(bouncecheese_t *bouncer) if (bouncer->sector->crumblestate == CRUMBLE_RESTORE || bouncer->sector->crumblestate == CRUMBLE_WAIT || bouncer->sector->crumblestate == CRUMBLE_ACTIVATED) // Oops! Crumbler says to remove yourself! { - bouncer->sector->crumblestate = CRUMBLE_WAIT; bouncer->sector->ceilingdata = NULL; bouncer->sector->ceilspeed = 0; bouncer->sector->floordata = NULL; @@ -2149,12 +2148,11 @@ void EV_CrumbleChain(sector_t *sec, ffloor_t *rover) } } -#undef controlsec - - // soundorg z height never gets set normally, so MEH. - sec->soundorg.z = sec->floorheight; + sec->soundorg.z = (controlsec->floorheight + controlsec->ceilingheight)/2; S_StartSound(&sec->soundorg, mobjinfo[type].activesound); +#undef controlsec + // Find the outermost vertexes in the subsector for (i = 0; i < sec->linecount; i++) { diff --git a/src/p_setup.c b/src/p_setup.c index 7a9b8d03b..9b99bc01b 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -4588,7 +4588,7 @@ static void P_ConvertBinaryLinedefTypes(void) //Flags if (lines[i].flags & ML_BLOCKPLAYERS) lines[i].args[6] |= TMFR_REVERSE; - if (lines[i].flags & ML_BLOCKPLAYERS) + if (lines[i].flags & ML_NOCLIMB) lines[i].args[6] |= TMFR_SPINDASH; lines[i].special = 190; diff --git a/src/p_slopes.c b/src/p_slopes.c index 5b4ead3e3..4a4e84332 100644 --- a/src/p_slopes.c +++ b/src/p_slopes.c @@ -201,10 +201,14 @@ void P_ReconfigureViaVertexes (pslope_t *slope, const vector3_t v1, const vector static void ReconfigureViaConstants (pslope_t *slope, const fixed_t a, const fixed_t b, const fixed_t c, const fixed_t d) { fixed_t m; + fixed_t o = 0; vector3_t *normal = &slope->normal; + if (c) + o = abs(c) <= FRACUNIT ? -FixedMul(d, FixedDiv(FRACUNIT, c)) : -FixedDiv(d, c); + // Set origin. - FV3_Load(&slope->o, 0, 0, c ? -FixedDiv(d, c) : 0); + FV3_Load(&slope->o, 0, 0, o); // Get slope's normal. FV3_Load(normal, a, b, c); diff --git a/src/p_spec.c b/src/p_spec.c index 4438401a6..40501ff62 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -1608,7 +1608,7 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller // "Trigger on X calls" linedefs reset if args[2] is set if (specialtype == 321 && triggerline->args[2]) - triggerline->callcount = triggerline->args[3]; + triggerline->callcount = triggerline->args[1]; else { // These special types work only once diff --git a/src/screen.c b/src/screen.c index f1b53a7f2..9b1036d7c 100644 --- a/src/screen.c +++ b/src/screen.c @@ -675,7 +675,13 @@ void SCR_ClosedCaptions(void) y = basey-((i + 2)*10); if (closedcaptions[i].b) - y -= (closedcaptions[i].b--)*vid.dupy; + { + y -= closedcaptions[i].b * vid.dupy; + if (renderisnewtic) + { + closedcaptions[i].b--; + } + } if (closedcaptions[i].t < CAPTIONFADETICS) flags |= (((CAPTIONFADETICS-closedcaptions[i].t)/2)*V_10TRANS);