From 96a464c8817845c11955702c42ef642a2b55f722 Mon Sep 17 00:00:00 2001 From: MascaraSnake Date: Sun, 3 May 2020 08:43:16 +0200 Subject: [PATCH] Move FOF modifier linedef type to the 70s range, to avoid being considered FOFs themselves --- extras/conf/udb/Includes/SRB222_linedefs.cfg | 305 ++++++++++--------- src/p_spec.c | 126 ++++---- 2 files changed, 218 insertions(+), 213 deletions(-) diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg index 0494ae544..2b70e9a7d 100644 --- a/extras/conf/udb/Includes/SRB222_linedefs.cfg +++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg @@ -1516,6 +1516,161 @@ udmf } } + fofmodifiers + { + title = "FOF Modifiers"; + + 70 + { + title = "Add Raise Thinker"; + prefix = "(70)"; + arg0 + { + title = "Control linedef tag"; + type = 15; + } + arg1 + { + title = "Speed"; + } + arg2 + { + title = "Destination height"; + } + arg3 + { + title = "Require spindash?"; + type = 11; + enum = "noyes"; + } + } + + 71 + { + title = "Add Air Bobbing Thinker"; + prefix = "(71)"; + arg0 + { + title = "Control linedef tag"; + type = 15; + } + arg1 + { + title = "Bobbing distance"; + } + arg2 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Raise"; + 2 = "Require spindash"; + 4 = "Dynamic"; + } + } + } + + 72 + { + title = "Add Thwomp Thinker"; + prefix = "(72)"; + arg0 + { + title = "Control linedef tag"; + type = 15; + } + arg1 + { + title = "Falling speed"; + } + arg2 + { + title = "Rising speed"; + } + stringarg0 + { + title = "Crushing sound"; + type = 2; + } + } + + 73 + { + title = "Add Laser Thinker"; + prefix = "(73)"; + arg0 + { + title = "Control linedef tag"; + type = 15; + } + arg1 + { + title = "Damage bosses?"; + type = 11; + enum = "yesno"; + } + } + + 74 + { + title = "Make FOF Bustable"; + prefix = "(74)"; + arg0 + { + title = "Control linedef tag"; + type = 15; + } + arg1 + { + title = "Bustable type"; + type = 11; + enum + { + 0 = "Touch"; + 1 = "Spin"; + 2 = "Regular"; + 3 = "Strong"; + } + } + arg2 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Bustable by pushables"; + 2 = "Trigger linedef executor"; + 4 = "Only bustable from below"; + } + } + arg3 + { + title = "Linedef executor tag"; + type = 15; + } + } + + 75 + { + title = "Make FOF Quicksand"; + prefix = "(75)"; + arg0 + { + title = "Control linedef tag"; + type = 15; + } + arg1 + { + title = "Sinking speed"; + } + arg2 + { + title = "Friction"; + } + } + } + fof { title = "FOF"; @@ -1962,156 +2117,6 @@ udmf } } } - - 260 - { - title = "Add Raise Thinker"; - prefix = "(260)"; - arg0 - { - title = "Control linedef tag"; - type = 15; - } - arg1 - { - title = "Speed"; - } - arg2 - { - title = "Destination height"; - } - arg3 - { - title = "Require spindash?"; - type = 11; - enum = "noyes"; - } - } - - 261 - { - title = "Add Air Bobbing Thinker"; - prefix = "(261)"; - arg0 - { - title = "Control linedef tag"; - type = 15; - } - arg1 - { - title = "Bobbing distance"; - } - arg2 - { - title = "Flags"; - type = 12; - enum - { - 1 = "Raise"; - 2 = "Require spindash"; - 4 = "Dynamic"; - } - } - } - - 262 - { - title = "Add Thwomp Thinker"; - prefix = "(262)"; - arg0 - { - title = "Control linedef tag"; - type = 15; - } - arg1 - { - title = "Falling speed"; - } - arg2 - { - title = "Rising speed"; - } - stringarg0 - { - title = "Crushing sound"; - type = 2; - } - } - - 263 - { - title = "Add Laser Thinker"; - prefix = "(263)"; - arg0 - { - title = "Control linedef tag"; - type = 15; - } - arg1 - { - title = "Damage bosses?"; - type = 11; - enum = "yesno"; - } - } - - 264 - { - title = "Make FOF Bustable"; - prefix = "(264)"; - arg0 - { - title = "Control linedef tag"; - type = 15; - } - arg1 - { - title = "Bustable type"; - type = 11; - enum - { - 0 = "Touch"; - 1 = "Spin"; - 2 = "Regular"; - 3 = "Strong"; - } - } - arg2 - { - title = "Flags"; - type = 12; - enum - { - 1 = "Bustable by pushables"; - 2 = "Trigger linedef executor"; - 4 = "Only bustable from below"; - } - } - arg3 - { - title = "Linedef executor tag"; - type = 15; - } - } - - 265 - { - title = "Make FOF Quicksand"; - prefix = "(265)"; - arg0 - { - title = "Control linedef tag"; - type = 15; - } - arg1 - { - title = "Sinking speed"; - } - arg2 - { - title = "Friction"; - } - } } linedefexecmisc diff --git a/src/p_spec.c b/src/p_spec.c index ddd09f173..a7d773e20 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -6617,6 +6617,67 @@ void P_SpawnSpecials(boolean fromnetsave) P_AddPlaneDisplaceThinker(pd_both, P_AproxDistance(lines[i].dx, lines[i].dy)>>8, sides[lines[i].sidenum[0]].sector-sectors, s, !!(lines[i].flags & ML_NOCLIMB)); break; + case 70: // Add raise thinker to FOF + if (udmf) + { + fixed_t destheight = lines[i].args[2] << FRACBITS; + fixed_t startheight, topheight, bottomheight; + + for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) + { + if (lines[l].special < 100 || lines[l].special >= 300) + continue; + + startheight = lines[l].frontsector->ceilingheight; + topheight = max(startheight, destheight); + bottomheight = min(startheight, destheight); + + P_AddRaiseThinker(lines[l].frontsector, lines[l].args[0], lines[i].args[1] << FRACBITS, topheight, bottomheight, (destheight < startheight), !!(lines[i].args[3])); + } + } + break; + + case 71: // Add air bob thinker to FOF + if (udmf) + { + for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) + { + if (lines[l].special < 100 || lines[l].special >= 300) + continue; + + P_AddAirbob(lines[l].frontsector, lines[l].args[0], lines[i].args[1] << FRACBITS, !!(lines[i].args[2] & TMFB_REVERSE), !!(lines[i].args[2] & TMFB_SPINDASH), !!(lines[i].args[2] & TMFB_DYNAMIC)); + } + } + break; + + case 72: // Add thwomp thinker to FOF + if (udmf) + { + UINT16 sound = (lines[i].stringargs[0]) ? get_number(lines[i].stringargs[0]) : sfx_thwomp; + + for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) + { + if (lines[l].special < 100 || lines[l].special >= 300) + continue; + + P_AddThwompThinker(lines[l].frontsector, lines[l].args[0], &lines[l], lines[i].args[1] << FRACBITS, lines[i].args[2] << FRACBITS, sound); + } + } + break; + + case 73: // Add laser thinker to FOF + if (udmf) + { + for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) + { + if (lines[l].special < 100 || lines[l].special >= 300) + continue; + + P_AddLaserThinker(lines[l].args[0], lines + l, !!(lines[i].args[1])); + } + } + break; + case 100: // FOF (solid) ffloorflags = FF_EXISTS|FF_SOLID|FF_RENDERALL; @@ -6985,67 +7046,6 @@ void P_SpawnSpecials(boolean fromnetsave) } break; - case 260: // Add raise thinker to FOF - if (udmf) - { - fixed_t destheight = lines[i].args[2] << FRACBITS; - fixed_t startheight, topheight, bottomheight; - - for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) - { - if (lines[l].special < 100 || lines[l].special >= 300) - continue; - - startheight = lines[l].frontsector->ceilingheight; - topheight = max(startheight, destheight); - bottomheight = min(startheight, destheight); - - P_AddRaiseThinker(lines[l].frontsector, lines[l].args[0], lines[i].args[1] << FRACBITS, topheight, bottomheight, (destheight < startheight), !!(lines[i].args[3])); - } - } - break; - - case 261: // Add air bob thinker to FOF - if (udmf) - { - for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) - { - if (lines[l].special < 100 || lines[l].special >= 300) - continue; - - P_AddAirbob(lines[l].frontsector, lines[l].args[0], lines[i].args[1] << FRACBITS, !!(lines[i].args[2] & TMFB_REVERSE), !!(lines[i].args[2] & TMFB_SPINDASH), !!(lines[i].args[2] & TMFB_DYNAMIC)); - } - } - break; - - case 262: // Add thwomp thinker to FOF - if (udmf) - { - UINT16 sound = (lines[i].stringargs[0]) ? get_number(lines[i].stringargs[0]) : sfx_thwomp; - - for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) - { - if (lines[l].special < 100 || lines[l].special >= 300) - continue; - - P_AddThwompThinker(lines[l].frontsector, lines[l].args[0], &lines[l], lines[i].args[1] << FRACBITS, lines[i].args[2] << FRACBITS, sound); - } - } - break; - - case 263: // Add laser thinker to FOF - if (udmf) - { - for (l = -1; (l = P_FindLineFromTag(lines[i].args[0], l)) >= 0 ;) - { - if (lines[l].special < 100 || lines[l].special >= 300) - continue; - - P_AddLaserThinker(lines[l].args[0], lines + l, !!(lines[i].args[1])); - } - } - break; - case 300: // Linedef executor (combines with sector special 974/975) and commands case 302: case 303: @@ -7299,7 +7299,7 @@ void P_SpawnSpecials(boolean fromnetsave) INT32 s; INT32 l; - case 264: // Make FOF bustable + case 74: // Make FOF bustable { UINT8 busttype = BT_REGULAR; UINT8 bustflags = 0; @@ -7357,7 +7357,7 @@ void P_SpawnSpecials(boolean fromnetsave) break; } - case 265: // Make FOF quicksand + case 75: // Make FOF quicksand { if (!udmf) break;