diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg index da54414da166ba09be21f84ca103d31e73ec0781..e8ec7de2b74f7e1d69defd544e9f3cde876f122e 100644 --- a/extras/conf/udb/Includes/SRB222_linedefs.cfg +++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg @@ -1721,6 +1721,12 @@ udmf } } + 8 + { + title = "Set Camera Collision Planes"; + prefix = "(8)"; + } + 11 { title = "Rope Hang Parameters"; diff --git a/src/p_setup.c b/src/p_setup.c index b83d950f2305feb5acb17e3402fe2b400c074977..987f4f6f5a0ac6823413b6262decfbba065a9a3a 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -3245,6 +3245,34 @@ static void P_ConvertBinaryMap(void) lines[i].special = 0; } break; + case 8: //Special sector properties + { + INT32 s; + + TAG_ITER_SECTORS(tag, s) + { + if (lines[i].flags & ML_NOCLIMB) + { + sectors[s].flags &= ~MSF_FLIPSPECIAL_FLOOR; + sectors[s].flags |= MSF_FLIPSPECIAL_CEILING; + } + else if (lines[i].flags & ML_EFFECT4) + sectors[s].flags |= MSF_FLIPSPECIAL_BOTH; + + if (lines[i].flags & ML_EFFECT3) + sectors[s].flags |= MSF_TRIGGERSPECIAL_TOUCH; + if (lines[i].flags & ML_EFFECT2) + sectors[s].flags |= MSF_TRIGGERSPECIAL_HEADBUMP; + + if (lines[i].flags & ML_EFFECT1) + sectors[s].flags |= MSF_INVERTPRECIP; + } + + if (GETSECSPECIAL(lines[i].frontsector->special, 4) != 12) + lines[i].special = 0; + + break; + } case 10: //Culling plane lines[i].args[0] = tag; lines[i].args[1] = !!(lines[i].flags & ML_NOCLIMB); diff --git a/src/p_spec.c b/src/p_spec.c index 37b07753560aa35a7465749c62958aae3e3bc7b4..ef48fbf62565520862605afd6038d5ff7899f7e8 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -6143,28 +6143,10 @@ void P_SpawnSpecials(boolean fromnetsave) break; } - case 8: // Sector Parameters - TAG_ITER_SECTORS(tag, s) - { - if (lines[i].flags & ML_NOCLIMB) - { - sectors[s].flags &= ~MSF_FLIPSPECIAL_FLOOR; - sectors[s].flags |= MSF_FLIPSPECIAL_CEILING; - } - else if (lines[i].flags & ML_EFFECT4) - sectors[s].flags |= MSF_FLIPSPECIAL_BOTH; - - if (lines[i].flags & ML_EFFECT3) - sectors[s].flags |= MSF_TRIGGERSPECIAL_TOUCH; - if (lines[i].flags & ML_EFFECT2) - sectors[s].flags |= MSF_TRIGGERSPECIAL_HEADBUMP; - - if (lines[i].flags & ML_EFFECT1) - sectors[s].flags |= MSF_INVERTPRECIP; - - if (lines[i].frontsector && GETSECSPECIAL(lines[i].frontsector->special, 4) == 12) - sectors[s].camsec = sides[*lines[i].sidenum].sector-sectors; - } + case 8: // Set camera collision planes + if (lines[i].frontsector) + TAG_ITER_SECTORS(tag, s) + sectors[s].camsec = lines[i].frontsector-sectors; break; case 10: // Vertical culling plane for sprites and FOFs