diff --git a/extras/conf/udb/Includes/SRB222_linedefs.cfg b/extras/conf/udb/Includes/SRB222_linedefs.cfg index e8ec7de2b74f7e1d69defd544e9f3cde876f122e..e2e1d187ae047d23960b271d7e1aeac18785d671 100644 --- a/extras/conf/udb/Includes/SRB222_linedefs.cfg +++ b/extras/conf/udb/Includes/SRB222_linedefs.cfg @@ -3677,6 +3677,43 @@ udmf enum = "setadd"; } } + + 469 + { + title = "Change Tagged Sector's Gravity"; + prefix = "(469)"; + arg0 + { + title = "Target sector tag"; + type = 13; + } + arg1 + { + title = "Set/Multiply?"; + type = 11; + enum + { + 0 = "Set"; + 1 = "Multiply"; + } + } + arg2 + { + title = "Flip flag"; + type = 11; + enum + { + 0 = "Don't change"; + 1 = "Set"; + 2 = "Remove"; + } + } + stringarg0 + { + title = "Gravity value"; + type = 2; + } + } } linedefexecplane diff --git a/src/p_spec.c b/src/p_spec.c index 6049214455a7d6612ab41f41d17c2afe8abe5c02..2e6094ef2c67526559e428b0c0e8b3a7c9b72718 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -3801,6 +3801,33 @@ static void P_ProcessLineSpecial(line_t *line, mobj_t *mo, sector_t *callsec) } break; + case 469: // Change sector gravity + { + fixed_t gravityvalue; + + if (!udmf) + break; + + if (!line->stringargs[0]) + break; + + gravityvalue = FloatToFixed(atof(line->stringargs[0])); + + TAG_ITER_SECTORS(line->args[0], secnum) + { + if (line->args[1]) + sectors[secnum].gravity = FixedMul(sectors[secnum].gravity, gravityvalue); + else + sectors[secnum].gravity = gravityvalue; + + if (line->args[2] == TMF_ADD) + sectors[secnum].flags |= MSF_GRAVITYFLIP; + else if (line->args[2] == TMF_REMOVE) + sectors[secnum].flags &= ~MSF_GRAVITYFLIP; + } + } + break; + case 480: // Polyobj_DoorSlide case 481: // Polyobj_DoorSwing PolyDoor(line); @@ -6112,6 +6139,9 @@ void P_SpawnSpecials(boolean fromnetsave) ffloortype_e ffloorflags; case 1: // Definable gravity per sector + if (udmf) + break; + sec = sides[*lines[i].sidenum].sector - sectors; TAG_ITER_SECTORS(tag, s) { diff --git a/src/p_spec.h b/src/p_spec.h index 82f858a059f4977222b07319b7ab3baccf44c37a..c1f25b3d6ee3f98ab42e64383209956f721f37df 100644 --- a/src/p_spec.h +++ b/src/p_spec.h @@ -412,6 +412,13 @@ typedef enum //TMP_FREEZETHINKERS = 1<<6, } textmappromptflags_t; +typedef enum +{ + TMF_NOCHANGE = 0, + TMF_ADD = 1, + TMF_REMOVE = 2, +} textmapsetflagflags_t; + typedef enum { TMSD_FRONT = 0,