diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg index c8b7ccf5f..0ddbaa4e8 100644 --- a/extras/conf/udb/Includes/SRB222_linedefs.cfg +++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg @@ -3392,7 +3392,7 @@ udmf type = 12; enum { - 1 = "Add to current translucency"; + 1 = "Add to current light level"; 2 = "Interrupt ongoing fades"; 4 = "Speed is duration"; } @@ -4923,7 +4923,7 @@ udmf 602 { - title = "Start Adjustable Pulsating Light"; + title = "Adjustable Pulsating Light"; prefix = "(602)"; arg0 { @@ -4981,7 +4981,7 @@ udmf 604 { - title = "Start Adjustable Blinking Light"; + title = "Adjustable Blinking Light"; prefix = "(604)"; arg0 { diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index 83a8595d1..b6c22004b 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -1434,34 +1434,10 @@ static void HWR_ProcessSeg(void) // Sort of like GLWall::Process in GZDoom // set alpha for transparent walls // ooops ! this do not work at all because render order we should render it in backtofront order - switch (gl_linedef->special) - { - // Translucent - case 102: - case 121: - case 123: - case 124: - case 125: - case 141: - case 142: - case 144: - case 145: - case 174: - case 175: - case 192: - case 195: - case 221: - case 253: - case 256: - blendmode = PF_Translucent; - break; - default: - if (gl_linedef->alpha >= 0 && gl_linedef->alpha < FRACUNIT) - blendmode = HWR_TranstableToAlpha(R_GetLinedefTransTable(gl_linedef->alpha), &Surf); - else - blendmode = PF_Masked; - break; - } + if (gl_linedef->alpha >= 0 && gl_linedef->alpha < FRACUNIT) + blendmode = HWR_TranstableToAlpha(R_GetLinedefTransTable(gl_linedef->alpha), &Surf); + else + blendmode = PF_Masked; if (gl_curline->polyseg && gl_curline->polyseg->translucency > 0) { diff --git a/src/p_ceilng.c b/src/p_ceilng.c index ed385be33..aa31e4301 100644 --- a/src/p_ceilng.c +++ b/src/p_ceilng.c @@ -86,14 +86,17 @@ void T_MoveCeiling(ceiling_t *ceiling) if (dest == lines[ceiling->sourceline].frontsector->ceilingheight) { dest = lines[ceiling->sourceline].backsector->ceilingheight; - ceiling->speed = ceiling->origspeed = lines[ceiling->sourceline].args[3] << (FRACBITS - 2); // return trip, use args[3] + ceiling->origspeed = lines[ceiling->sourceline].args[3] << (FRACBITS - 2); // return trip, use args[3] } else { dest = lines[ceiling->sourceline].frontsector->ceilingheight; - ceiling->speed = ceiling->origspeed = lines[ceiling->sourceline].args[2] << (FRACBITS - 2); // going frontways, use args[2] + ceiling->origspeed = lines[ceiling->sourceline].args[2] << (FRACBITS - 2); // going frontways, use args[2] } + if (ceiling->type == bounceCeilingCrush) + ceiling->speed = ceiling->origspeed; + if (dest < ceiling->sector->ceilingheight) // must move down { ceiling->direction = -1; diff --git a/src/p_floor.c b/src/p_floor.c index c3a13d802..f9dd9eb78 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -206,13 +206,15 @@ void T_MoveFloor(floormove_t *movefloor) if (movefloor->floordestheight == lines[movefloor->sourceline].frontsector->floorheight) { movefloor->floordestheight = lines[movefloor->sourceline].backsector->floorheight; - movefloor->speed = movefloor->origspeed = lines[movefloor->sourceline].args[3] << (FRACBITS - 2); // return trip, use args[3] + movefloor->origspeed = lines[movefloor->sourceline].args[3] << (FRACBITS - 2); // return trip, use args[3] } else { movefloor->floordestheight = lines[movefloor->sourceline].frontsector->floorheight; - movefloor->speed = movefloor->origspeed = lines[movefloor->sourceline].args[2] << (FRACBITS - 2); // forward again, use args[2] + movefloor->origspeed = lines[movefloor->sourceline].args[2] << (FRACBITS - 2); // forward again, use args[2] } + if (movefloor->type == bounceFloorCrush) + movefloor->speed = movefloor->origspeed; movefloor->direction = (movefloor->floordestheight < movefloor->sector->floorheight) ? -1 : 1; movefloor->delaytimer = movefloor->delay; remove = false; diff --git a/src/p_setup.c b/src/p_setup.c index bed7291f3..720be7f6f 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -3709,10 +3709,10 @@ static void P_ConvertBinaryMap(void) //Flags if (lines[i].flags & ML_EFFECT1) - lines[i].args[2] = TMFL_NOBOSSES; + lines[i].args[2] |= TMFL_NOBOSSES; //Replicate old hack: Translucent FOFs set to full opacity cut cyan pixels if (lines[i].flags & ML_EFFECT6 || lines[i].args[1] == 256) - lines[i].args[2] = TMFL_SPLAT; + lines[i].args[2] |= TMFL_SPLAT; break; case 259: //Custom FOF @@ -4664,13 +4664,13 @@ static void P_ConvertBinaryMap(void) lines[i].special = 0; break; } - lines[i].args[1] = sides[lines[i].sidenum[1]].rowoffset >> FRACBITS; - lines[i].args[2] = sides[lines[i].sidenum[1]].textureoffset >> FRACBITS; + lines[i].args[1] = sides[lines[i].sidenum[1]].textureoffset >> FRACBITS; + lines[i].args[2] = sides[lines[i].sidenum[1]].rowoffset >> FRACBITS; } else { - lines[i].args[1] = sides[lines[i].sidenum[0]].rowoffset >> FRACBITS; - lines[i].args[2] = sides[lines[i].sidenum[0]].textureoffset >> FRACBITS; + lines[i].args[1] = sides[lines[i].sidenum[0]].textureoffset >> FRACBITS; + lines[i].args[2] = sides[lines[i].sidenum[0]].rowoffset >> FRACBITS; } lines[i].special = 500; break; diff --git a/src/p_spec.c b/src/p_spec.c index ece239127..947372489 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -1647,7 +1647,7 @@ static boolean P_ActivateLinedefExecutorsInSector(line_t *triggerline, mobj_t *a size_t linecnt = ctlsector->linecount; size_t i; - if (triggerline->flags & ML_EFFECT5) // disregard order for efficiency + if (!udmf && triggerline->flags & ML_EFFECT5) // disregard order for efficiency { for (i = 0; i < linecnt; i++) P_ActivateLinedefExecutor(ctlsector->lines[i], actor, caller);