diff --git a/Build/Configurations/Includes/SRB222_things.cfg b/Build/Configurations/Includes/SRB222_things.cfg index 3eb3fed2..02ea4287 100644 --- a/Build/Configurations/Includes/SRB222_things.cfg +++ b/Build/Configurations/Includes/SRB222_things.cfg @@ -2341,7 +2341,7 @@ udmf arrow = 1; title = "Special Placement Patterns"; width = 16; - height = 384; + height = 64; sprite = "RINGA0"; 600 @@ -2349,6 +2349,7 @@ udmf arrow = 0; title = "5 Vertical Rings (Yellow Spring)"; sprite = "internal:ringverticalyellow"; + height = 384; } 601 { @@ -2382,6 +2383,7 @@ udmf title = "Circle of Rings (Big)"; sprite = "internal:circlebigring"; width = 192; + height = 384; centerhitbox = true; } 606 @@ -2397,6 +2399,7 @@ udmf title = "Circle of Blue Spheres (Big)"; sprite = "internal:circlebigsphere"; width = 192; + height = 384; centerhitbox = true; } 608 @@ -2412,23 +2415,29 @@ udmf title = "Circle of Rings and Spheres (Big)"; sprite = "internal:circlebigringsphere"; width = 192; + height = 384; centerhitbox = true; } 610 { title = "Row of Items"; - sprite = "RINGA0"; + sprite = "internal:customrow"; + width = 32; + height = 384; arg0 { title = "Number of items"; + default = 5; } arg1 { title = "Horizontal spacing"; + default = 64; } arg2 { title = "Vertical spacing"; + default = 64; } stringarg0 { @@ -2439,17 +2448,21 @@ udmf 611 { title = "Circle of Items"; - sprite = "RINGA0"; + sprite = "internal:customcircle"; + width = 32; + height = 64; centerhitbox = true; arg0 { title = "Number of items"; + default = 8; } arg1 { title = "Radius"; renderstyle = "circle"; rendercolor = "#6600FF"; + default = 192; } stringarg0 { @@ -4538,6 +4551,7 @@ udmf arg0 { title = "Radius"; + default = 96; } } } diff --git a/Build/Sprites/customcircle.png b/Build/Sprites/customcircle.png new file mode 100644 index 00000000..2a0c80d6 Binary files /dev/null and b/Build/Sprites/customcircle.png differ diff --git a/Build/Sprites/customrow.png b/Build/Sprites/customrow.png new file mode 100644 index 00000000..4fb4d7a7 Binary files /dev/null and b/Build/Sprites/customrow.png differ diff --git a/Source/Core/GZBuilder/Data/LinksCollector.cs b/Source/Core/GZBuilder/Data/LinksCollector.cs index d6949820..2d24b930 100755 --- a/Source/Core/GZBuilder/Data/LinksCollector.cs +++ b/Source/Core/GZBuilder/Data/LinksCollector.cs @@ -497,7 +497,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data if(tti == null) continue; Vector3D pos = t.Position; - pos.z += GetCorrectHeight(t, blockmap, false); + if (t.AbsoluteZ) + pos.z = GetCorrectHeight(t, blockmap, tti.CenterHitbox); + else + pos.z += GetCorrectHeight(t, blockmap, tti.CenterHitbox); for(int i = 0; i < t.Args.Length; i++) { @@ -1051,10 +1054,16 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data // Required only when called from VisualMode private static double GetCorrectHeight(Thing thing, VisualBlockMap blockmap, bool usethingcenter) { - if(blockmap == null) return 0f; - double height = (usethingcenter ? thing.Height / 2f : 0f); - if(thing.Sector == null) thing.DetermineSector(blockmap); - if(thing.Sector != null) height += thing.Sector.FloorHeight; + if (blockmap == null) return 0f; + double height = (usethingcenter ? 0f : (thing.IsFlipped ? thing.Height : 0f)); + + if (thing.AbsoluteZ) + height = thing.Position.z + height; + else + { + if (thing.Sector == null) thing.DetermineSector(blockmap); + if (thing.Sector != null) height += thing.Sector.FloorHeight; + } return height; }