diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg index d40f2a373..0aa7ea629 100644 --- a/extras/conf/udb/Includes/SRB222_linedefs.cfg +++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg @@ -3821,7 +3821,7 @@ udmf type = 12; enum { - 1 = "Add to current translucency"; + 1 = "Add to current light level"; 2 = "Interrupt ongoing fades"; 4 = "Speed is duration"; } @@ -5417,7 +5417,7 @@ udmf 602 { - title = "Start Adjustable Pulsating Light"; + title = "Adjustable Pulsating Light"; prefix = "(602)"; arg0 { @@ -5475,7 +5475,7 @@ udmf 604 { - title = "Start Adjustable Blinking Light"; + title = "Adjustable Blinking Light"; prefix = "(604)"; arg0 { diff --git a/extras/conf/udb/Includes/SRB222_things.cfg b/extras/conf/udb/Includes/SRB222_things.cfg index 0cb0287c5..c5a881c5c 100644 --- a/extras/conf/udb/Includes/SRB222_things.cfg +++ b/extras/conf/udb/Includes/SRB222_things.cfg @@ -258,11 +258,6 @@ doom sprite = "TRETA1"; width = 16; height = 32; - arg0 - { - title = "Death trigger tag"; - type = 15; - } } 111 { @@ -2709,11 +2704,6 @@ doom sprite = "KOOPA0"; width = 16; height = 48; - arg0 - { - title = "Death trigger tag"; - type = 15; - } } 1807 { @@ -2721,11 +2711,6 @@ doom sprite = "MAXEA0"; width = 8; height = 16; - arg0 - { - title = "Death trigger tag"; - type = 15; - } } 1808 { @@ -3640,6 +3625,11 @@ udmf sprite = "TRETA1"; width = 16; height = 32; + arg0 + { + title = "Death trigger tag"; + type = 15; + } } 111 { @@ -4041,7 +4031,7 @@ udmf { title = "Speed up when hit?"; type = 11; - enum = "noyes"; + enum = "yesno"; } } 202 @@ -5039,7 +5029,7 @@ udmf { title = "Play sound?"; type = 11; - enum = "noyes"; + enum = "yesno"; } } 542 @@ -6009,7 +5999,17 @@ udmf { title = "Flags"; type = 12; - enum = "maceflags"; + enum + { + 1 = "Red spring"; + 2 = "No sounds"; + 4 = "Player-turnable chain"; + 8 = "Swing instead of spin"; + 16 = "Make chain from end item"; + 32 = "Spawn link at origin"; + 64 = "Clip inside ground"; + 128 = "No distance check"; + } } } 1107 @@ -7471,6 +7471,11 @@ udmf sprite = "KOOPA0"; width = 16; height = 48; + arg0 + { + title = "Death trigger tag"; + type = 15; + } } 1807 { @@ -7478,6 +7483,11 @@ udmf sprite = "MAXEA0"; width = 8; height = 16; + arg0 + { + title = "Death trigger tag"; + type = 15; + } } 1808 { diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c index a42c924ca..123082dae 100644 --- a/src/hardware/hw_main.c +++ b/src/hardware/hw_main.c @@ -1435,44 +1435,17 @@ 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) + if (gl_linedef->blendmode && gl_linedef->blendmode != AST_FOG) { - // 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: - if (gl_linedef->blendmode && gl_linedef->blendmode != AST_FOG) - blendmode = HWR_SurfaceBlend(gl_linedef->blendmode, R_GetLinedefTransTable(gl_linedef->alpha), &Surf); - else - blendmode = PF_Translucent; - break; - default: - if (gl_linedef->blendmode && gl_linedef->blendmode != AST_FOG) - { - if (gl_linedef->alpha >= 0 && gl_linedef->alpha < FRACUNIT) - blendmode = HWR_SurfaceBlend(gl_linedef->blendmode, R_GetLinedefTransTable(gl_linedef->alpha), &Surf); - else - blendmode = HWR_GetBlendModeFlag(gl_linedef->blendmode); - } - else 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_SurfaceBlend(gl_linedef->blendmode, R_GetLinedefTransTable(gl_linedef->alpha), &Surf); + else + blendmode = HWR_GetBlendModeFlag(gl_linedef->blendmode); } + else 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 11d08724f..86eecd694 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 5f71a1fbe..de1f10cab 100644 --- a/src/p_floor.c +++ b/src/p_floor.c @@ -207,13 +207,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_mobj.c b/src/p_mobj.c index 11d6305ea..3e4730131 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -12723,7 +12723,7 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean } break; case MT_EGGMOBILE2: - if (mthing->args[5]) + if (!mthing->args[5]) mobj->flags2 |= MF2_AMBUSH; break; case MT_EGGMOBILE3: diff --git a/src/p_setup.c b/src/p_setup.c index 99a0f158a..41384bc97 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -5902,8 +5902,8 @@ static void P_ConvertBinaryThingTypes(void) case 136: //Pyre Fly mapthings[i].args[0] = !!(mapthings[i].options & MTF_AMBUSH); break; - case 202: //Egg Slimer - mapthings[i].args[5] = !!(mapthings[i].options & MTF_AMBUSH); + case 201: //Egg Slimer + mapthings[i].args[5] = !(mapthings[i].options & MTF_AMBUSH); break; case 203: //Egg Colosseum mapthings[i].args[5] = LE_BOSS4DROP + mapthings[i].extrainfo * LE_PARAMWIDTH; @@ -6034,13 +6034,13 @@ static void P_ConvertBinaryThingTypes(void) mapthings[i].args[0] = !(mapthings[i].options & MTF_AMBUSH); break; case 700: //Water ambience A - case 701: //Water ambience A - case 702: //Water ambience A - case 703: //Water ambience A - case 704: //Water ambience A - case 705: //Water ambience A - case 706: //Water ambience A - case 707: //Water ambience A + case 701: //Water ambience B + case 702: //Water ambience C + case 703: //Water ambience D + case 704: //Water ambience E + case 705: //Water ambience F + case 706: //Water ambience G + case 707: //Water ambience H mapthings[i].args[0] = 35; P_WriteConstant(sfx_amwtr1 + mapthings[i].type - 700, &mapthings[i].stringargs[0]); mapthings[i].type = 700; diff --git a/src/p_spec.c b/src/p_spec.c index 337385560..470595937 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_WRAPMIDTEX) // disregard order for efficiency + if (!udmf && triggerline->flags & ML_WRAPMIDTEX) // disregard order for efficiency { for (i = 0; i < linecnt; i++) P_ActivateLinedefExecutor(ctlsector->lines[i], actor, caller);