From f4e28f5cc4b1684091e9f2d05d6c1872efe17c48 Mon Sep 17 00:00:00 2001 From: MascaraSnake Date: Fri, 12 Jun 2020 10:23:16 +0200 Subject: [PATCH] Revamp alpha setup for quicksand FOFs --- extras/conf/udb/Includes/SRB222_linedefs.cfg | 17 +++++++++++++---- src/p_setup.c | 9 ++++++--- src/p_spec.c | 10 ++++++---- src/p_spec.h | 6 ++++++ 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg index 84ff06385..50d59f1a4 100644 --- a/extras/conf/udb/Includes/SRB222_linedefs.cfg +++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg @@ -2122,15 +2122,24 @@ udmf } arg1 { - title = "Ripple effect?"; - type = 11; - enum = "yesno"; + title = "Alpha"; + default = 255; } arg2 { - title = "Sinking speed"; + title = "Ripple effect?"; + type = 12; + enum + { + 1 = "No ripple effect"; + 2 = "Cut cyan flat pixels"; + } } arg3 + { + title = "Sinking speed"; + } + arg4 { title = "Friction"; } diff --git a/src/p_setup.c b/src/p_setup.c index 2ae01f869..79a030e6d 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -3366,10 +3366,13 @@ static void P_ConvertBinaryMap(void) break; case 257: //FOF: Quicksand lines[i].args[0] = lines[i].tag; + lines[i].args[1] = 255; if (!(lines[i].flags & ML_EFFECT5)) - lines[i].args[1] = 1; //No ripple effect - lines[i].args[2] = lines[i].dx >> FRACBITS; //Sinking speed - lines[i].args[3] = lines[i].dy >> FRACBITS; //Friction + lines[i].args[2] |= TMFQ_NORIPPLE; + if (lines[i].flags & ML_EFFECT6) + lines[i].args[2] |= TMFQ_SPLAT; + lines[i].args[3] = lines[i].dx >> FRACBITS; //Sinking speed + lines[i].args[4] = lines[i].dy >> FRACBITS; //Friction break; case 258: //FOF: Laser lines[i].args[0] = lines[i].tag; diff --git a/src/p_spec.c b/src/p_spec.c index 66ad1893a..86f153bce 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -6915,14 +6915,16 @@ void P_SpawnSpecials(boolean fromnetsave) } case 257: // Quicksand ffloorflags = FF_EXISTS|FF_QUICKSAND|FF_RENDERALL|FF_ALLSIDES|FF_CUTSPRITES; - if (!(lines[i].args[1])) + if (!(lines[i].args[2] & TMFQ_NORIPPLE)) ffloorflags |= FF_RIPPLE; + if (lines[i].args[2] & TMFQ_SPLAT) + ffloorflags |= FF_SPLAT; for (s = -1; (s = P_FindSectorFromTag(lines[i].args[0], s)) >= 0 ;) { - ffloor_t *fflr = P_AddFakeFloor(§ors[s], lines[i].frontsector, lines + i, 0xff, ffloorflags, secthinkers); - fflr->sinkspeed = abs(lines[i].args[2]) << (FRACBITS - 1); - fflr->friction = abs(lines[i].args[3]) << (FRACBITS - 6); + ffloor_t *fflr = P_AddFakeFloor(§ors[s], lines[i].frontsector, lines + i, lines[i].args[1], ffloorflags, secthinkers); + fflr->sinkspeed = abs(lines[i].args[3]) << (FRACBITS - 1); + fflr->friction = abs(lines[i].args[4]) << (FRACBITS - 6); } break; diff --git a/src/p_spec.h b/src/p_spec.h index 661b74738..ef4c003a8 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -97,6 +97,12 @@ typedef enum TMFB_ONLYBOTTOM = 1<<2, } textmapfofbustflags_t; +typedef enum +{ + TMFQ_NORIPPLE = 1, + TMFQ_SPLAT = 1<<1, +} textmapfofquicksandflags_t; + typedef enum { TMFL_NOBOSSES = 1,