Merge branch 'master' into Input
152
Content.Benchmarks/ColorInterpolateBenchmark.cs
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using BenchmarkDotNet.Attributes;
|
||||||
|
using Robust.Shared.Maths;
|
||||||
|
using SysVector4 = System.Numerics.Vector4;
|
||||||
|
|
||||||
|
namespace Content.Benchmarks
|
||||||
|
{
|
||||||
|
public class ColorInterpolateBenchmark
|
||||||
|
{
|
||||||
|
private readonly List<(Color, Color)> _colors = new List<(Color, Color)>();
|
||||||
|
|
||||||
|
[Params(100)] public int N { get; set; }
|
||||||
|
|
||||||
|
[GlobalSetup]
|
||||||
|
public void Setup()
|
||||||
|
{
|
||||||
|
var random = new Random(3005);
|
||||||
|
|
||||||
|
for (var i = 0; i < N; i++)
|
||||||
|
{
|
||||||
|
var r1 = random.NextFloat();
|
||||||
|
var g1 = random.NextFloat();
|
||||||
|
var b1 = random.NextFloat();
|
||||||
|
var a1 = random.NextFloat();
|
||||||
|
|
||||||
|
var r2 = random.NextFloat();
|
||||||
|
var g2 = random.NextFloat();
|
||||||
|
var b2 = random.NextFloat();
|
||||||
|
var a2 = random.NextFloat();
|
||||||
|
|
||||||
|
_colors.Add((new Color(r1, g1, b1, a1), new Color(r2, g2, b2, a2)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Benchmark]
|
||||||
|
public void BenchSimple()
|
||||||
|
{
|
||||||
|
foreach (var (a, b) in _colors)
|
||||||
|
{
|
||||||
|
InterpolateSimple(a, b, 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//[Benchmark]
|
||||||
|
public void BenchSysVector4()
|
||||||
|
{
|
||||||
|
foreach (var (a, b) in _colors)
|
||||||
|
{
|
||||||
|
InterpolateSysVector4(a, b, 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//[Benchmark]
|
||||||
|
public void BenchSysVector4Blit()
|
||||||
|
{
|
||||||
|
foreach (var (a, b) in _colors)
|
||||||
|
{
|
||||||
|
InterpolateSysVector4Blit(a, b, 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//[Benchmark]
|
||||||
|
public void BenchSysVector4BlitNoException()
|
||||||
|
{
|
||||||
|
foreach (var (a, b) in _colors)
|
||||||
|
{
|
||||||
|
InterpolateSysVector4BlitNoException(a, b, 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Benchmark]
|
||||||
|
public void BenchSysVector4AsRefNoException()
|
||||||
|
{
|
||||||
|
foreach (var (a, b) in _colors)
|
||||||
|
{
|
||||||
|
InterpolateSysVector4BlitNoExceptionAsRef(a, b, 0.5f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Color InterpolateSimple(Color endPoint1, Color endPoint2, float lambda)
|
||||||
|
{
|
||||||
|
if (lambda < 0 || lambda > 1)
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(lambda));
|
||||||
|
return new Color(
|
||||||
|
endPoint1.R * lambda + endPoint2.R * (1 - lambda),
|
||||||
|
endPoint1.G * lambda + endPoint2.G * (1 - lambda),
|
||||||
|
endPoint1.B * lambda + endPoint2.B * (1 - lambda),
|
||||||
|
endPoint1.A * lambda + endPoint2.A * (1 - lambda)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Color InterpolateSysVector4(Color endPoint1, Color endPoint2, float lambda)
|
||||||
|
{
|
||||||
|
if (lambda < 0 || lambda > 1)
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(lambda));
|
||||||
|
|
||||||
|
var vec1 = new SysVector4(endPoint1.R, endPoint1.G, endPoint1.B, endPoint1.A);
|
||||||
|
var vec2 = new SysVector4(endPoint2.R, endPoint2.G, endPoint2.B, endPoint2.A);
|
||||||
|
|
||||||
|
var res = SysVector4.Lerp(vec1, vec2, 1 - lambda);
|
||||||
|
|
||||||
|
return new Color(
|
||||||
|
res.X, res.Y, res.Z, res.W);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static unsafe Color InterpolateSysVector4Blit(in Color endPoint1, in Color endPoint2, float lambda)
|
||||||
|
{
|
||||||
|
if (lambda < 0 || lambda > 1)
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(lambda));
|
||||||
|
|
||||||
|
|
||||||
|
fixed (Color* p1 = &endPoint1)
|
||||||
|
fixed (Color* p2 = &endPoint2)
|
||||||
|
{
|
||||||
|
var vp1 = (SysVector4*) p1;
|
||||||
|
var vp2 = (SysVector4*) p2;
|
||||||
|
|
||||||
|
var res = SysVector4.Lerp(*vp1, *vp2, 1 - lambda);
|
||||||
|
|
||||||
|
return *(Color*) (&res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static unsafe Color InterpolateSysVector4BlitNoException(in Color endPoint1, in Color endPoint2,
|
||||||
|
float lambda)
|
||||||
|
{
|
||||||
|
fixed (Color* p1 = &endPoint1)
|
||||||
|
fixed (Color* p2 = &endPoint2)
|
||||||
|
{
|
||||||
|
var vp1 = (SysVector4*) p1;
|
||||||
|
var vp2 = (SysVector4*) p2;
|
||||||
|
|
||||||
|
var res = SysVector4.Lerp(*vp2, *vp1, lambda);
|
||||||
|
|
||||||
|
return *(Color*) (&res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static unsafe Color InterpolateSysVector4BlitNoExceptionAsRef(in Color endPoint1, in Color endPoint2,
|
||||||
|
float lambda)
|
||||||
|
{
|
||||||
|
ref var sv1 = ref Unsafe.As<Color, SysVector4>(ref Unsafe.AsRef(endPoint1));
|
||||||
|
ref var sv2 = ref Unsafe.As<Color, SysVector4>(ref Unsafe.AsRef(endPoint2));
|
||||||
|
|
||||||
|
var res = SysVector4.Lerp(sv2, sv1, lambda);
|
||||||
|
|
||||||
|
return Unsafe.As<SysVector4, Color>(ref res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,8 @@
|
|||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
<Platforms>x64</Platforms>
|
<Platforms>x64</Platforms>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
|
<LangVersion>7.3</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="BenchmarkDotNet" Version="0.11.5" />
|
<PackageReference Include="BenchmarkDotNet" Version="0.11.5" />
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
using BenchmarkDotNet.Configs;
|
using BenchmarkDotNet.Running;
|
||||||
using BenchmarkDotNet.Running;
|
|
||||||
|
|
||||||
namespace Content.Benchmarks
|
namespace Content.Benchmarks
|
||||||
{
|
{
|
||||||
internal class Program
|
internal static class Program
|
||||||
{
|
{
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using Nett;
|
using Nett;
|
||||||
using SixLabors.ImageSharp;
|
using SixLabors.ImageSharp;
|
||||||
@@ -7,9 +8,9 @@ using SixLabors.ImageSharp.PixelFormats;
|
|||||||
using SixLabors.Primitives;
|
using SixLabors.Primitives;
|
||||||
using Robust.Client.Utility;
|
using Robust.Client.Utility;
|
||||||
using Robust.Shared.Interfaces.Log;
|
using Robust.Shared.Interfaces.Log;
|
||||||
using Robust.Shared.Log;
|
|
||||||
using Robust.Shared.Maths;
|
using Robust.Shared.Maths;
|
||||||
using Robust.Shared.Noise;
|
using Robust.Shared.Noise;
|
||||||
|
using SixLabors.ImageSharp.Advanced;
|
||||||
using BlendFactor = Robust.Shared.Maths.Color.BlendFactor;
|
using BlendFactor = Robust.Shared.Maths.Color.BlendFactor;
|
||||||
|
|
||||||
namespace Content.Client.Parallax
|
namespace Content.Client.Parallax
|
||||||
@@ -24,6 +25,9 @@ namespace Content.Client.Parallax
|
|||||||
var generator = new ParallaxGenerator();
|
var generator = new ParallaxGenerator();
|
||||||
generator._loadConfig(config);
|
generator._loadConfig(config);
|
||||||
|
|
||||||
|
sawmill.Debug("Timing start!");
|
||||||
|
var sw = new Stopwatch();
|
||||||
|
sw.Start();
|
||||||
var image = new Image<Rgba32>(Configuration.Default, size.Width, size.Height, Rgba32.Black);
|
var image = new Image<Rgba32>(Configuration.Default, size.Width, size.Height, Rgba32.Black);
|
||||||
var count = 0;
|
var count = 0;
|
||||||
foreach (var layer in generator.Layers)
|
foreach (var layer in generator.Layers)
|
||||||
@@ -32,6 +36,9 @@ namespace Content.Client.Parallax
|
|||||||
sawmill.Debug("Layer {0} done!", count++);
|
sawmill.Debug("Layer {0} done!", count++);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sw.Stop();
|
||||||
|
sawmill.Debug("Total time: {0}", sw.Elapsed.TotalSeconds);
|
||||||
|
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,12 +76,12 @@ namespace Content.Client.Parallax
|
|||||||
private readonly Color OuterColor = Color.Black;
|
private readonly Color OuterColor = Color.Black;
|
||||||
private readonly NoiseGenerator.NoiseType NoiseType = NoiseGenerator.NoiseType.Fbm;
|
private readonly NoiseGenerator.NoiseType NoiseType = NoiseGenerator.NoiseType.Fbm;
|
||||||
private readonly uint Seed = 1234;
|
private readonly uint Seed = 1234;
|
||||||
private readonly double Persistence = 0.5;
|
private readonly float Persistence = 0.5f;
|
||||||
private readonly double Lacunarity = Math.PI * 2 / 3;
|
private readonly float Lacunarity = (float) (Math.PI * 2 / 3);
|
||||||
private readonly double Frequency = 1;
|
private readonly float Frequency = 1;
|
||||||
private readonly uint Octaves = 3;
|
private readonly uint Octaves = 3;
|
||||||
private readonly double Threshold;
|
private readonly float Threshold;
|
||||||
private readonly double Power = 1;
|
private readonly float Power = 1;
|
||||||
private readonly BlendFactor SrcFactor = BlendFactor.One;
|
private readonly BlendFactor SrcFactor = BlendFactor.One;
|
||||||
private readonly BlendFactor DstFactor = BlendFactor.One;
|
private readonly BlendFactor DstFactor = BlendFactor.One;
|
||||||
|
|
||||||
@@ -97,17 +104,17 @@ namespace Content.Client.Parallax
|
|||||||
|
|
||||||
if (table.TryGetValue("persistence", out tomlObject))
|
if (table.TryGetValue("persistence", out tomlObject))
|
||||||
{
|
{
|
||||||
Persistence = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
Persistence = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("lacunarity", out tomlObject))
|
if (table.TryGetValue("lacunarity", out tomlObject))
|
||||||
{
|
{
|
||||||
Lacunarity = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
Lacunarity = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("frequency", out tomlObject))
|
if (table.TryGetValue("frequency", out tomlObject))
|
||||||
{
|
{
|
||||||
Frequency = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
Frequency = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("octaves", out tomlObject))
|
if (table.TryGetValue("octaves", out tomlObject))
|
||||||
@@ -117,7 +124,7 @@ namespace Content.Client.Parallax
|
|||||||
|
|
||||||
if (table.TryGetValue("threshold", out tomlObject))
|
if (table.TryGetValue("threshold", out tomlObject))
|
||||||
{
|
{
|
||||||
Threshold = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
Threshold = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("sourcefactor", out tomlObject))
|
if (table.TryGetValue("sourcefactor", out tomlObject))
|
||||||
@@ -132,7 +139,7 @@ namespace Content.Client.Parallax
|
|||||||
|
|
||||||
if (table.TryGetValue("power", out tomlObject))
|
if (table.TryGetValue("power", out tomlObject))
|
||||||
{
|
{
|
||||||
Power = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
Power = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("noise_type", out tomlObject))
|
if (table.TryGetValue("noise_type", out tomlObject))
|
||||||
@@ -163,9 +170,12 @@ namespace Content.Client.Parallax
|
|||||||
noise.SetPeriodY(bitmap.Height);
|
noise.SetPeriodY(bitmap.Height);
|
||||||
var threshVal = 1 / (1 - Threshold);
|
var threshVal = 1 / (1 - Threshold);
|
||||||
var powFactor = 1 / Power;
|
var powFactor = 1 / Power;
|
||||||
for (var x = 0; x < bitmap.Width; x++)
|
|
||||||
{
|
var span = bitmap.GetPixelSpan();
|
||||||
|
|
||||||
for (var y = 0; y < bitmap.Height; y++)
|
for (var y = 0; y < bitmap.Height; y++)
|
||||||
|
{
|
||||||
|
for (var x = 0; x < bitmap.Width; x++)
|
||||||
{
|
{
|
||||||
// Do noise calculations.
|
// Do noise calculations.
|
||||||
var noiseVal = Math.Min(1, Math.Max(0, (noise.GetNoiseTiled(x, y) + 1) / 2));
|
var noiseVal = Math.Min(1, Math.Max(0, (noise.GetNoiseTiled(x, y) + 1) / 2));
|
||||||
@@ -173,15 +183,16 @@ namespace Content.Client.Parallax
|
|||||||
// Threshold
|
// Threshold
|
||||||
noiseVal = Math.Max(0, noiseVal - Threshold);
|
noiseVal = Math.Max(0, noiseVal - Threshold);
|
||||||
noiseVal *= threshVal;
|
noiseVal *= threshVal;
|
||||||
noiseVal = Math.Pow(noiseVal, powFactor);
|
noiseVal = (float) Math.Pow(noiseVal, powFactor);
|
||||||
|
|
||||||
// Get colors based on noise values.
|
// Get colors based on noise values.
|
||||||
var srcColor = Color.InterpolateBetween(InnerColor, OuterColor, (float) noiseVal)
|
var srcColor = Color.InterpolateBetween(OuterColor, InnerColor, noiseVal)
|
||||||
.WithAlpha((float) noiseVal);
|
.WithAlpha(noiseVal);
|
||||||
|
|
||||||
// Apply blending factors & write back.
|
// Apply blending factors & write back.
|
||||||
var dstColor = bitmap[x, y].ConvertImgSharp();
|
var i = y * bitmap.Width + x;
|
||||||
bitmap[x, y] = Color.Blend(dstColor, srcColor, DstFactor, SrcFactor).ConvertImgSharp();
|
var dstColor = span[i].ConvertImgSharp();
|
||||||
|
span[i] = Color.Blend(dstColor, srcColor, DstFactor, SrcFactor).ConvertImgSharp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -202,13 +213,13 @@ namespace Content.Client.Parallax
|
|||||||
private readonly bool Masked;
|
private readonly bool Masked;
|
||||||
private readonly NoiseGenerator.NoiseType MaskNoiseType = NoiseGenerator.NoiseType.Fbm;
|
private readonly NoiseGenerator.NoiseType MaskNoiseType = NoiseGenerator.NoiseType.Fbm;
|
||||||
private readonly uint MaskSeed = 1234;
|
private readonly uint MaskSeed = 1234;
|
||||||
private readonly double MaskPersistence = 0.5;
|
private readonly float MaskPersistence = 0.5f;
|
||||||
private readonly double MaskLacunarity = Math.PI * 2 / 3;
|
private readonly float MaskLacunarity = (float) Math.PI * 2 / 3;
|
||||||
private readonly double MaskFrequency = 1;
|
private readonly float MaskFrequency = 1;
|
||||||
private readonly uint MaskOctaves = 3;
|
private readonly uint MaskOctaves = 3;
|
||||||
private readonly double MaskThreshold;
|
private readonly float MaskThreshold;
|
||||||
private readonly int PointSize = 1;
|
private readonly int PointSize = 1;
|
||||||
private readonly double MaskPower = 1;
|
private readonly float MaskPower = 1;
|
||||||
|
|
||||||
|
|
||||||
public LayerPoints(TomlTable table)
|
public LayerPoints(TomlTable table)
|
||||||
@@ -261,17 +272,17 @@ namespace Content.Client.Parallax
|
|||||||
|
|
||||||
if (table.TryGetValue("maskpersistence", out tomlObject))
|
if (table.TryGetValue("maskpersistence", out tomlObject))
|
||||||
{
|
{
|
||||||
MaskPersistence = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
MaskPersistence = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("masklacunarity", out tomlObject))
|
if (table.TryGetValue("masklacunarity", out tomlObject))
|
||||||
{
|
{
|
||||||
MaskLacunarity = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
MaskLacunarity = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("maskfrequency", out tomlObject))
|
if (table.TryGetValue("maskfrequency", out tomlObject))
|
||||||
{
|
{
|
||||||
MaskFrequency = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
MaskFrequency = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("maskoctaves", out tomlObject))
|
if (table.TryGetValue("maskoctaves", out tomlObject))
|
||||||
@@ -281,7 +292,7 @@ namespace Content.Client.Parallax
|
|||||||
|
|
||||||
if (table.TryGetValue("maskthreshold", out tomlObject))
|
if (table.TryGetValue("maskthreshold", out tomlObject))
|
||||||
{
|
{
|
||||||
MaskThreshold = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
MaskThreshold = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (table.TryGetValue("masknoise_type", out tomlObject))
|
if (table.TryGetValue("masknoise_type", out tomlObject))
|
||||||
@@ -301,7 +312,7 @@ namespace Content.Client.Parallax
|
|||||||
|
|
||||||
if (table.TryGetValue("maskpower", out tomlObject))
|
if (table.TryGetValue("maskpower", out tomlObject))
|
||||||
{
|
{
|
||||||
MaskPower = double.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
MaskPower = float.Parse(tomlObject.Get<string>(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -319,14 +330,22 @@ namespace Content.Client.Parallax
|
|||||||
GenPoints(buffer);
|
GenPoints(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var x = 0; x < bitmap.Width; x++)
|
var srcSpan = buffer.GetPixelSpan();
|
||||||
{
|
var dstSpan = bitmap.GetPixelSpan();
|
||||||
for (var y = 0; y < bitmap.Height; y++)
|
|
||||||
{
|
|
||||||
var dstColor = bitmap[x, y].ConvertImgSharp();
|
|
||||||
var srcColor = buffer[x, y].ConvertImgSharp();
|
|
||||||
|
|
||||||
bitmap[x, y] = Color.Blend(dstColor, srcColor, DstFactor, SrcFactor).ConvertImgSharp();
|
var width = bitmap.Width;
|
||||||
|
var height = bitmap.Height;
|
||||||
|
|
||||||
|
for (var y = 0; y < height; y++)
|
||||||
|
{
|
||||||
|
for (var x = 0; x < width; x++)
|
||||||
|
{
|
||||||
|
var i = y * width + x;
|
||||||
|
|
||||||
|
var dstColor = dstSpan[i].ConvertImgSharp();
|
||||||
|
var srcColor = srcSpan[i].ConvertImgSharp();
|
||||||
|
|
||||||
|
dstSpan[i] = Color.Blend(dstColor, srcColor, DstFactor, SrcFactor).ConvertImgSharp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -335,28 +354,30 @@ namespace Content.Client.Parallax
|
|||||||
{
|
{
|
||||||
var o = PointSize - 1;
|
var o = PointSize - 1;
|
||||||
var random = new Random(Seed);
|
var random = new Random(Seed);
|
||||||
|
var span = buffer.GetPixelSpan();
|
||||||
|
|
||||||
for (var i = 0; i < PointCount; i++)
|
for (var i = 0; i < PointCount; i++)
|
||||||
{
|
{
|
||||||
var relX = random.NextDouble();
|
var x = random.Next(0, buffer.Width);
|
||||||
var relY = random.NextDouble();
|
var y = random.Next(0, buffer.Height);
|
||||||
|
|
||||||
var x = (int) (relX * buffer.Width);
|
var dist = random.NextFloat();
|
||||||
var y = (int) (relY * buffer.Height);
|
|
||||||
|
|
||||||
var dist = random.NextDouble();
|
|
||||||
|
|
||||||
for (var ox = x - o; ox <= x + o; ox++)
|
|
||||||
{
|
|
||||||
for (var oy = y - o; oy <= y + o; oy++)
|
for (var oy = y - o; oy <= y + o; oy++)
|
||||||
{
|
{
|
||||||
var color = Color.InterpolateBetween(FarColor, CloseColor, (float) dist).ConvertImgSharp();
|
for (var ox = x - o; ox <= x + o; ox++)
|
||||||
buffer[MathHelper.Mod(ox, buffer.Width), MathHelper.Mod(oy, buffer.Width)] = color;
|
{
|
||||||
|
var ix = MathHelper.Mod(ox, buffer.Width);
|
||||||
|
var iy = MathHelper.Mod(oy, buffer.Height);
|
||||||
|
|
||||||
|
var color = Color.InterpolateBetween(FarColor, CloseColor, dist).ConvertImgSharp();
|
||||||
|
span[iy * buffer.Width + ix] = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenPointsMasked(Image<Rgba32> buffer)
|
private void GenPointsMasked(Image<Rgba32> buffer)
|
||||||
{
|
{
|
||||||
var o = PointSize - 1;
|
var o = PointSize - 1;
|
||||||
var random = new Random(Seed);
|
var random = new Random(Seed);
|
||||||
@@ -375,22 +396,21 @@ namespace Content.Client.Parallax
|
|||||||
const int maxPointAttemptCount = 9999;
|
const int maxPointAttemptCount = 9999;
|
||||||
var pointAttemptCount = 0;
|
var pointAttemptCount = 0;
|
||||||
|
|
||||||
|
var span = buffer.GetPixelSpan();
|
||||||
|
|
||||||
for (var i = 0; i < PointCount; i++)
|
for (var i = 0; i < PointCount; i++)
|
||||||
{
|
{
|
||||||
var relX = random.NextDouble();
|
var x = random.Next(0, buffer.Width);
|
||||||
var relY = random.NextDouble();
|
var y = random.Next(0, buffer.Height);
|
||||||
|
|
||||||
var x = (int) (relX * buffer.Width);
|
|
||||||
var y = (int) (relY * buffer.Height);
|
|
||||||
|
|
||||||
// Grab noise at this point.
|
// Grab noise at this point.
|
||||||
var noiseVal = Math.Min(1, Math.Max(0, (noise.GetNoiseTiled(x, y) + 1) / 2));
|
var noiseVal = Math.Min(1, Math.Max(0, (noise.GetNoiseTiled(x, y) + 1) / 2));
|
||||||
// Threshold
|
// Threshold
|
||||||
noiseVal = Math.Max(0, noiseVal - MaskThreshold);
|
noiseVal = Math.Max(0, noiseVal - MaskThreshold);
|
||||||
noiseVal *= threshVal;
|
noiseVal *= threshVal;
|
||||||
noiseVal = Math.Pow(noiseVal, powFactor);
|
noiseVal = (float) Math.Pow(noiseVal, powFactor);
|
||||||
|
|
||||||
var randomThresh = random.NextDouble();
|
var randomThresh = random.NextFloat();
|
||||||
if (randomThresh > noiseVal)
|
if (randomThresh > noiseVal)
|
||||||
{
|
{
|
||||||
if (++pointAttemptCount <= maxPointAttemptCount)
|
if (++pointAttemptCount <= maxPointAttemptCount)
|
||||||
@@ -401,14 +421,17 @@ namespace Content.Client.Parallax
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var dist = random.NextDouble();
|
var dist = random.NextFloat();
|
||||||
|
|
||||||
for (var ox = x - o; ox <= x + o; ox++)
|
|
||||||
{
|
|
||||||
for (var oy = y - o; oy <= y + o; oy++)
|
for (var oy = y - o; oy <= y + o; oy++)
|
||||||
{
|
{
|
||||||
var color = Color.InterpolateBetween(FarColor, CloseColor, (float) dist).ConvertImgSharp();
|
for (var ox = x - o; ox <= x + o; ox++)
|
||||||
buffer[MathHelper.Mod(ox, buffer.Width), MathHelper.Mod(oy, buffer.Height)] = color;
|
{
|
||||||
|
var ix = MathHelper.Mod(ox, buffer.Width);
|
||||||
|
var iy = MathHelper.Mod(oy, buffer.Height);
|
||||||
|
|
||||||
|
var color = Color.InterpolateBetween(FarColor, CloseColor, dist).ConvertImgSharp();
|
||||||
|
span[iy * buffer.Width + ix] = color;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,5 +29,5 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<RobustToolsPath>..\RobustToolbox\Tools\</RobustToolsPath>
|
<RobustToolsPath>..\RobustToolbox\Tools\</RobustToolsPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Target Name="RobustAfterBuild" DependsOnTargets="CopySS14Noise;CopyMiscDependencies;CopySwnfd" AfterTargets="Build" />
|
<Target Name="RobustAfterBuild" DependsOnTargets="CopyMiscDependencies;CopySwnfd" AfterTargets="Build" />
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -20,9 +20,11 @@ namespace Content.Server.AI
|
|||||||
[AiLogicProcessor("AimShootLife")]
|
[AiLogicProcessor("AimShootLife")]
|
||||||
class AimShootLifeProcessor : AiLogicProcessor
|
class AimShootLifeProcessor : AiLogicProcessor
|
||||||
{
|
{
|
||||||
private readonly IPhysicsManager _physMan;
|
#pragma warning disable 649
|
||||||
private readonly IServerEntityManager _entMan;
|
[Dependency] private readonly IPhysicsManager _physMan;
|
||||||
private readonly IGameTiming _timeMan;
|
[Dependency] private readonly IServerEntityManager _entMan;
|
||||||
|
[Dependency] private readonly IGameTiming _timeMan;
|
||||||
|
#pragma warning restore 649
|
||||||
|
|
||||||
private readonly List<IEntity> _workList = new List<IEntity>();
|
private readonly List<IEntity> _workList = new List<IEntity>();
|
||||||
|
|
||||||
@@ -32,16 +34,6 @@ namespace Content.Server.AI
|
|||||||
|
|
||||||
private IEntity _curTarget;
|
private IEntity _curTarget;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Creates an instance of this LogicProcessor.
|
|
||||||
/// </summary>
|
|
||||||
public AimShootLifeProcessor()
|
|
||||||
{
|
|
||||||
_physMan = IoCManager.Resolve<IPhysicsManager>();
|
|
||||||
_entMan = IoCManager.Resolve<IServerEntityManager>();
|
|
||||||
_timeMan = IoCManager.Resolve<IGameTiming>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
{
|
{
|
||||||
|
|||||||
71
Content.Server/AI/StaticBarkerProcessor.cs
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Content.Server.Interfaces.Chat;
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using Robust.Server.AI;
|
||||||
|
using Robust.Shared.Interfaces.Timing;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
|
namespace Content.Server.AI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Designed for a a stationary entity that regularly advertises things (vending machine).
|
||||||
|
/// </summary>
|
||||||
|
[AiLogicProcessor("StaticBarker")]
|
||||||
|
class StaticBarkerProcessor : AiLogicProcessor
|
||||||
|
{
|
||||||
|
#pragma warning disable 649
|
||||||
|
[Dependency] private readonly IGameTiming _timeMan;
|
||||||
|
[Dependency] private readonly IChatManager _chatMan;
|
||||||
|
#pragma warning restore 649
|
||||||
|
|
||||||
|
private static readonly TimeSpan MinimumDelay = TimeSpan.FromSeconds(15);
|
||||||
|
private TimeSpan _nextBark;
|
||||||
|
|
||||||
|
|
||||||
|
private static List<string> slogans = new List<string>
|
||||||
|
{
|
||||||
|
"Come try my great products today!",
|
||||||
|
"More value for the way you live.",
|
||||||
|
"Quality you'd expect at prices you wouldn't.",
|
||||||
|
"The right stuff. The right price.",
|
||||||
|
};
|
||||||
|
|
||||||
|
public override void Update(float frameTime)
|
||||||
|
{
|
||||||
|
if(_timeMan.CurTime < _nextBark)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var rngState = GenSeed();
|
||||||
|
_nextBark = _timeMan.CurTime + MinimumDelay + TimeSpan.FromSeconds(Random01(ref rngState) * 10);
|
||||||
|
|
||||||
|
var pick = (int)Math.Round(Random01(ref rngState) * (slogans.Count - 1));
|
||||||
|
_chatMan.EntitySay(SelfEntity, slogans[pick]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private uint GenSeed()
|
||||||
|
{
|
||||||
|
return RotateRight((uint)_timeMan.CurTick.GetHashCode(), 11) ^ (uint)SelfEntity.Uid.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
private uint RotateRight(uint n, int s)
|
||||||
|
{
|
||||||
|
return (n << (32 - s)) | (n >> s);
|
||||||
|
}
|
||||||
|
|
||||||
|
private float Random01(ref uint state)
|
||||||
|
{
|
||||||
|
DebugTools.Assert(state != 0);
|
||||||
|
|
||||||
|
//xorshift32
|
||||||
|
state ^= state << 13;
|
||||||
|
state ^= state >> 17;
|
||||||
|
state ^= state << 5;
|
||||||
|
return state / (float)uint.MaxValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
249
Content.Server/AI/WanderProcessor.cs
Normal file
@@ -0,0 +1,249 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Content.Server.GameObjects.Components.Movement;
|
||||||
|
using Content.Server.GameObjects.EntitySystems;
|
||||||
|
using Content.Server.Interfaces.Chat;
|
||||||
|
using Content.Shared.Physics;
|
||||||
|
using Robust.Server.AI;
|
||||||
|
using Robust.Server.Interfaces.GameObjects;
|
||||||
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
|
using Robust.Shared.Interfaces.Physics;
|
||||||
|
using Robust.Shared.Interfaces.Timing;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
|
using Robust.Shared.Maths;
|
||||||
|
using Robust.Shared.Utility;
|
||||||
|
|
||||||
|
namespace Content.Server.AI
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Designed to control a mob. The mob will wander around, then idle at a the destination for awhile.
|
||||||
|
/// </summary>
|
||||||
|
[AiLogicProcessor("Wander")]
|
||||||
|
class WanderProcessor : AiLogicProcessor
|
||||||
|
{
|
||||||
|
#pragma warning disable 649
|
||||||
|
[Dependency] private readonly IPhysicsManager _physMan;
|
||||||
|
[Dependency] private readonly IServerEntityManager _entMan;
|
||||||
|
[Dependency] private readonly IGameTiming _timeMan;
|
||||||
|
[Dependency] private readonly IEntitySystemManager _entSysMan;
|
||||||
|
[Dependency] private readonly IChatManager _chatMan;
|
||||||
|
#pragma warning restore 649
|
||||||
|
|
||||||
|
private static readonly TimeSpan IdleTimeSpan = TimeSpan.FromSeconds(1);
|
||||||
|
private static readonly TimeSpan WalkingTimeout = TimeSpan.FromSeconds(3);
|
||||||
|
private static readonly TimeSpan DisabledTimeout = TimeSpan.FromSeconds(10);
|
||||||
|
|
||||||
|
private static List<string> _normalAssistantConversation = new List<string>
|
||||||
|
{
|
||||||
|
"stat me",
|
||||||
|
"roll it easy!",
|
||||||
|
"waaaaaagh!!!",
|
||||||
|
"red wonz go fasta",
|
||||||
|
"FOR TEH EMPRAH",
|
||||||
|
"lol2cat",
|
||||||
|
"dem dwarfs man, dem dwarfs",
|
||||||
|
"SPESS MAHREENS",
|
||||||
|
"hwee did eet fhor khayosss",
|
||||||
|
"lifelike texture ;_;",
|
||||||
|
"luv can bloooom",
|
||||||
|
"PACKETS!!!",
|
||||||
|
"SARAH HALE DID IT!!!",
|
||||||
|
"Don't tell Chase",
|
||||||
|
"not so tough now huh",
|
||||||
|
"WERE NOT BAY!!",
|
||||||
|
"IF YOU DONT LIKE THE CYBORGS OR SLIMES WHY DONT YU O JUST MAKE YORE OWN!",
|
||||||
|
"DONT TALK TO ME ABOUT BALANCE!!!!",
|
||||||
|
"YOU AR JUS LAZY AND DUMB JAMITORS AND SERVICE ROLLS",
|
||||||
|
"BLAME HOSHI!!!",
|
||||||
|
"ARRPEE IZ DED!!!",
|
||||||
|
"THERE ALL JUS MEATAFRIENDS!",
|
||||||
|
"SOTP MESING WITH THE ROUNS SHITMAN!!!",
|
||||||
|
"SKELINGTON IS 4 SHITERS!",
|
||||||
|
"MOMMSI R THE WURST SCUM!!",
|
||||||
|
"How do we engiener=",
|
||||||
|
"try to live freely and automatically good bye",
|
||||||
|
"why woud i take a pin pointner??",
|
||||||
|
"How do I set up the. SHow do I set u p the Singu. how I the scrungularity????",
|
||||||
|
};
|
||||||
|
|
||||||
|
private const float MaxWalkDistance = 3; // meters
|
||||||
|
private const float AdditionalIdleTime = 2; // 0 to this many more seconds
|
||||||
|
|
||||||
|
private FsmState _CurrentState;
|
||||||
|
private TimeSpan _startStateTime;
|
||||||
|
private Vector2 _walkTargetPos;
|
||||||
|
|
||||||
|
public override void Update(float frameTime)
|
||||||
|
{
|
||||||
|
if (SelfEntity == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ProcessState();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessState()
|
||||||
|
{
|
||||||
|
switch (_CurrentState)
|
||||||
|
{
|
||||||
|
case FsmState.None:
|
||||||
|
_CurrentState = FsmState.Idle;
|
||||||
|
break;
|
||||||
|
case FsmState.Idle:
|
||||||
|
IdleState();
|
||||||
|
break;
|
||||||
|
case FsmState.Walking:
|
||||||
|
WalkingState();
|
||||||
|
break;
|
||||||
|
case FsmState.Disabled:
|
||||||
|
DisabledState();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IdlePositiveEdge(ref uint rngState)
|
||||||
|
{
|
||||||
|
_startStateTime = _timeMan.CurTime + IdleTimeSpan + TimeSpan.FromSeconds(Random01(ref rngState) * AdditionalIdleTime);
|
||||||
|
_CurrentState = FsmState.Idle;
|
||||||
|
|
||||||
|
EmitProfanity(ref rngState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void IdleState()
|
||||||
|
{
|
||||||
|
if (!ActionBlockerSystem.CanMove(SelfEntity))
|
||||||
|
{
|
||||||
|
DisabledPositiveEdge();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_timeMan.CurTime < _startStateTime + IdleTimeSpan)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var entWorldPos = SelfEntity.Transform.WorldPosition;
|
||||||
|
|
||||||
|
if (SelfEntity.TryGetComponent<BoundingBoxComponent>(out var bounds))
|
||||||
|
entWorldPos = bounds.WorldAABB.Center;
|
||||||
|
|
||||||
|
var rngState = GenSeed();
|
||||||
|
for (var i = 0; i < 3; i++) // you get 3 chances to find a place to walk
|
||||||
|
{
|
||||||
|
var dir = new Vector2(Random01(ref rngState) * 2 - 1, Random01(ref rngState) *2 -1);
|
||||||
|
var ray = new Ray(entWorldPos, dir, (int) CollisionGroup.Grid);
|
||||||
|
var rayResult = _physMan.IntersectRay(ray, MaxWalkDistance, SelfEntity);
|
||||||
|
|
||||||
|
if (rayResult.DidHitObject && rayResult.Distance > 1) // hit an impassable object
|
||||||
|
{
|
||||||
|
// set the new position back from the wall a bit
|
||||||
|
_walkTargetPos = entWorldPos + dir * (rayResult.Distance - 0.5f);
|
||||||
|
WalkingPositiveEdge();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rayResult.DidHitObject) // hit nothing (path clear)
|
||||||
|
{
|
||||||
|
_walkTargetPos = dir * MaxWalkDistance;
|
||||||
|
WalkingPositiveEdge();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// can't find clear spot, do nothing, sleep longer
|
||||||
|
_startStateTime = _timeMan.CurTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WalkingPositiveEdge()
|
||||||
|
{
|
||||||
|
_startStateTime = _timeMan.CurTime;
|
||||||
|
_CurrentState = FsmState.Walking;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void WalkingState()
|
||||||
|
{
|
||||||
|
var rngState = GenSeed();
|
||||||
|
if (_timeMan.CurTime > _startStateTime + WalkingTimeout) // walked too long, go idle
|
||||||
|
{
|
||||||
|
IdlePositiveEdge(ref rngState);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var targetDiff = _walkTargetPos - SelfEntity.Transform.WorldPosition;
|
||||||
|
|
||||||
|
if (targetDiff.LengthSquared < 0.1) // close enough
|
||||||
|
{
|
||||||
|
// stop walking
|
||||||
|
if (SelfEntity.TryGetComponent<AiControllerComponent>(out var mover))
|
||||||
|
{
|
||||||
|
mover.VelocityDir = Vector2.Zero;
|
||||||
|
}
|
||||||
|
|
||||||
|
IdlePositiveEdge(ref rngState);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// continue walking
|
||||||
|
if (SelfEntity.TryGetComponent<AiControllerComponent>(out var moverTwo))
|
||||||
|
{
|
||||||
|
moverTwo.VelocityDir = targetDiff.Normalized;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisabledPositiveEdge()
|
||||||
|
{
|
||||||
|
_startStateTime = _timeMan.CurTime;
|
||||||
|
_CurrentState = FsmState.Disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DisabledState()
|
||||||
|
{
|
||||||
|
if(_timeMan.CurTime < _startStateTime + DisabledTimeout)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (ActionBlockerSystem.CanMove(SelfEntity))
|
||||||
|
{
|
||||||
|
var rngState = GenSeed();
|
||||||
|
IdlePositiveEdge(ref rngState);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DisabledPositiveEdge();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void EmitProfanity(ref uint rngState)
|
||||||
|
{
|
||||||
|
if(Random01(ref rngState) < 0.5f)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var pick = (int) Math.Round(Random01(ref rngState) * (_normalAssistantConversation.Count - 1));
|
||||||
|
_chatMan.EntitySay(SelfEntity, _normalAssistantConversation[pick]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private uint GenSeed()
|
||||||
|
{
|
||||||
|
return RotateRight((uint)_timeMan.CurTick.GetHashCode(), 11) ^ (uint)SelfEntity.Uid.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
private uint RotateRight(uint n, int s)
|
||||||
|
{
|
||||||
|
return (n << (32 - s)) | (n >> s);
|
||||||
|
}
|
||||||
|
|
||||||
|
private float Random01(ref uint state)
|
||||||
|
{
|
||||||
|
DebugTools.Assert(state != 0);
|
||||||
|
|
||||||
|
//xorshift32
|
||||||
|
state ^= state << 13;
|
||||||
|
state ^= state >> 17;
|
||||||
|
state ^= state << 5;
|
||||||
|
return state / (float)uint.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum FsmState
|
||||||
|
{
|
||||||
|
None,
|
||||||
|
Idle,
|
||||||
|
Walking,
|
||||||
|
Disabled
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,11 +1,15 @@
|
|||||||
using Content.Server.Interfaces.GameObjects.Components.Movement;
|
using Content.Server.Interfaces.GameObjects.Components.Movement;
|
||||||
using Robust.Server.AI;
|
using Robust.Server.AI;
|
||||||
|
using Robust.Server.GameObjects;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
using Robust.Shared.Maths;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
|
using Robust.Shared.ViewVariables;
|
||||||
|
|
||||||
namespace Content.Server.GameObjects.Components.Movement
|
namespace Content.Server.GameObjects.Components.Movement
|
||||||
{
|
{
|
||||||
[RegisterComponent]
|
[RegisterComponent, ComponentReference(typeof(IMoverComponent))]
|
||||||
public class AiControllerComponent : Component, IMoverComponent
|
public class AiControllerComponent : Component, IMoverComponent
|
||||||
{
|
{
|
||||||
private string _logicName;
|
private string _logicName;
|
||||||
@@ -13,15 +17,37 @@ namespace Content.Server.GameObjects.Components.Movement
|
|||||||
|
|
||||||
public override string Name => "AiController";
|
public override string Name => "AiController";
|
||||||
|
|
||||||
public string LogicName => _logicName;
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public string LogicName
|
||||||
|
{
|
||||||
|
get => _logicName;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_logicName = value;
|
||||||
|
Processor = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public AiLogicProcessor Processor { get; set; }
|
public AiLogicProcessor Processor { get; set; }
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
public float VisionRadius
|
public float VisionRadius
|
||||||
{
|
{
|
||||||
get => _visionRadius;
|
get => _visionRadius;
|
||||||
set => _visionRadius = value;
|
set => _visionRadius = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void Initialize()
|
||||||
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
|
// This component requires a physics component.
|
||||||
|
if (!Owner.HasComponent<PhysicsComponent>())
|
||||||
|
Owner.AddComponent<PhysicsComponent>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
public override void ExposeData(ObjectSerializer serializer)
|
public override void ExposeData(ObjectSerializer serializer)
|
||||||
{
|
{
|
||||||
base.ExposeData(serializer);
|
base.ExposeData(serializer);
|
||||||
@@ -29,5 +55,34 @@ namespace Content.Server.GameObjects.Components.Movement
|
|||||||
serializer.DataField(ref _logicName, "logic", null);
|
serializer.DataField(ref _logicName, "logic", null);
|
||||||
serializer.DataField(ref _visionRadius, "vision", 8.0f);
|
serializer.DataField(ref _visionRadius, "vision", 8.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Movement speed (m/s) that the entity walks.
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public float WalkMoveSpeed { get; set; } = 4.0f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Movement speed (m/s) that the entity sprints.
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public float SprintMoveSpeed { get; set; } = 10.0f;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is the entity Sprinting (running)?
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables]
|
||||||
|
public bool Sprinting { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Calculated linear velocity direction of the entity.
|
||||||
|
/// </summary>
|
||||||
|
[ViewVariables]
|
||||||
|
public Vector2 VelocityDir { get; set; }
|
||||||
|
|
||||||
|
public GridCoordinates LastPosition { get; set; }
|
||||||
|
|
||||||
|
[ViewVariables(VVAccess.ReadWrite)]
|
||||||
|
public float StepSoundDistance { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Content.Server.GameObjects.Components.Movement;
|
using Content.Server.GameObjects.Components.Movement;
|
||||||
|
using Content.Server.Interfaces.GameObjects.Components.Movement;
|
||||||
using Robust.Server.AI;
|
using Robust.Server.AI;
|
||||||
|
using Robust.Server.Interfaces.Console;
|
||||||
|
using Robust.Server.Interfaces.Player;
|
||||||
using Robust.Server.Interfaces.Timing;
|
using Robust.Server.Interfaces.Timing;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
using Robust.Shared.GameObjects.Systems;
|
using Robust.Shared.GameObjects.Systems;
|
||||||
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
using Robust.Shared.Interfaces.Reflection;
|
using Robust.Shared.Interfaces.Reflection;
|
||||||
using Robust.Shared.IoC;
|
using Robust.Shared.IoC;
|
||||||
|
|
||||||
@@ -12,17 +16,23 @@ namespace Content.Server.GameObjects.EntitySystems
|
|||||||
{
|
{
|
||||||
internal class AiSystem : EntitySystem
|
internal class AiSystem : EntitySystem
|
||||||
{
|
{
|
||||||
private readonly Dictionary<string, Type> _processorTypes = new Dictionary<string, Type>();
|
#pragma warning disable 649
|
||||||
private IPauseManager _pauseManager;
|
[Dependency] private readonly IPauseManager _pauseManager;
|
||||||
|
[Dependency] private readonly IDynamicTypeFactory _typeFactory;
|
||||||
|
[Dependency] private readonly IReflectionManager _reflectionManager;
|
||||||
|
#pragma warning restore 649
|
||||||
|
|
||||||
public AiSystem()
|
private readonly Dictionary<string, Type> _processorTypes = new Dictionary<string, Type>();
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
|
base.Initialize();
|
||||||
|
|
||||||
// register entity query
|
// register entity query
|
||||||
EntityQuery = new TypeEntityQuery(typeof(AiControllerComponent));
|
EntityQuery = new TypeEntityQuery(typeof(AiControllerComponent));
|
||||||
_pauseManager = IoCManager.Resolve<IPauseManager>();
|
|
||||||
|
|
||||||
var reflectionMan = IoCManager.Resolve<IReflectionManager>();
|
var processors = _reflectionManager.GetAllChildren<AiLogicProcessor>();
|
||||||
var processors = reflectionMan.GetAllChildren<AiLogicProcessor>();
|
|
||||||
foreach (var processor in processors)
|
foreach (var processor in processors)
|
||||||
{
|
{
|
||||||
var att = (AiLogicProcessorAttribute)Attribute.GetCustomAttribute(processor, typeof(AiLogicProcessorAttribute));
|
var att = (AiLogicProcessorAttribute)Attribute.GetCustomAttribute(processor, typeof(AiLogicProcessorAttribute));
|
||||||
@@ -33,6 +43,7 @@ namespace Content.Server.GameObjects.EntitySystems
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
public override void Update(float frameTime)
|
public override void Update(float frameTime)
|
||||||
{
|
{
|
||||||
var entities = EntityManager.GetEntities(EntityQuery);
|
var entities = EntityManager.GetEntities(EntityQuery);
|
||||||
@@ -61,11 +72,45 @@ namespace Content.Server.GameObjects.EntitySystems
|
|||||||
{
|
{
|
||||||
if (_processorTypes.TryGetValue(name, out var type))
|
if (_processorTypes.TryGetValue(name, out var type))
|
||||||
{
|
{
|
||||||
return (AiLogicProcessor)Activator.CreateInstance(type);
|
return (AiLogicProcessor)_typeFactory.CreateInstance(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
// processor needs to inherit AiLogicProcessor, and needs an AiLogicProcessorAttribute to define the YAML name
|
// processor needs to inherit AiLogicProcessor, and needs an AiLogicProcessorAttribute to define the YAML name
|
||||||
throw new ArgumentException($"Processor type {name} could not be found.", nameof(name));
|
throw new ArgumentException($"Processor type {name} could not be found.", nameof(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class AddAiCommand : IClientCommand
|
||||||
|
{
|
||||||
|
public string Command => "addai";
|
||||||
|
public string Description => "Add an ai component with a given processor to an entity.";
|
||||||
|
public string Help => "addai <processorId> <entityId>";
|
||||||
|
public void Execute(IConsoleShell shell, IPlayerSession player, string[] args)
|
||||||
|
{
|
||||||
|
if(args.Length != 2)
|
||||||
|
{
|
||||||
|
shell.SendText(player, "Wrong number of args.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var processorId = args[0];
|
||||||
|
var entId = new EntityUid(int.Parse(args[1]));
|
||||||
|
var ent = IoCManager.Resolve<IEntityManager>().GetEntity(entId);
|
||||||
|
|
||||||
|
if (ent.HasComponent<AiControllerComponent>())
|
||||||
|
{
|
||||||
|
shell.SendText(player, "Entity already has an AI component.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ent.HasComponent<IMoverComponent>())
|
||||||
|
{
|
||||||
|
ent.RemoveComponent<IMoverComponent>();
|
||||||
|
}
|
||||||
|
|
||||||
|
var comp = ent.AddComponent<AiControllerComponent>();
|
||||||
|
comp.LogicName = processorId;
|
||||||
|
shell.SendText(player, "AI component added.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ using Robust.Shared.Players;
|
|||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
using Content.Server.GameObjects.Components.Sound;
|
using Content.Server.GameObjects.Components.Sound;
|
||||||
using Content.Shared.GameObjects.Components.Inventory;
|
using Content.Shared.GameObjects.Components.Inventory;
|
||||||
|
using Robust.Shared.Log;
|
||||||
|
|
||||||
namespace Content.Server.GameObjects.EntitySystems
|
namespace Content.Server.GameObjects.EntitySystems
|
||||||
{
|
{
|
||||||
@@ -45,7 +46,7 @@ namespace Content.Server.GameObjects.EntitySystems
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public override void Initialize()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
EntityQuery = new TypeEntityQuery(typeof(PlayerInputMoverComponent));
|
EntityQuery = new TypeEntityQuery(typeof(IMoverComponent));
|
||||||
|
|
||||||
var moveUpCmdHandler = InputCmdHandler.FromDelegate(
|
var moveUpCmdHandler = InputCmdHandler.FromDelegate(
|
||||||
session => HandleDirChange(session, Direction.North, true),
|
session => HandleDirChange(session, Direction.North, true),
|
||||||
@@ -116,14 +117,14 @@ namespace Content.Server.GameObjects.EntitySystems
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
var mover = entity.GetComponent<PlayerInputMoverComponent>();
|
var mover = entity.GetComponent<IMoverComponent>();
|
||||||
var physics = entity.GetComponent<PhysicsComponent>();
|
var physics = entity.GetComponent<PhysicsComponent>();
|
||||||
|
|
||||||
UpdateKinematics(entity.Transform, mover, physics);
|
UpdateKinematics(entity.Transform, mover, physics);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateKinematics(ITransformComponent transform, PlayerInputMoverComponent mover, PhysicsComponent physics)
|
private void UpdateKinematics(ITransformComponent transform, IMoverComponent mover, PhysicsComponent physics)
|
||||||
{
|
{
|
||||||
if (mover.VelocityDir.LengthSquared < 0.001 || !ActionBlockerSystem.CanMove(mover.Owner))
|
if (mover.VelocityDir.LengthSquared < 0.001 || !ActionBlockerSystem.CanMove(mover.Owner))
|
||||||
{
|
{
|
||||||
@@ -234,9 +235,17 @@ namespace Content.Server.GameObjects.EntitySystems
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ok well we know the position of the
|
// Ok well we know the position of the
|
||||||
|
try
|
||||||
|
{
|
||||||
var soundCollection = _prototypeManager.Index<SoundCollectionPrototype>(soundCollectionName);
|
var soundCollection = _prototypeManager.Index<SoundCollectionPrototype>(soundCollectionName);
|
||||||
var file = _footstepRandom.Pick(soundCollection.PickFiles);
|
var file = _footstepRandom.Pick(soundCollection.PickFiles);
|
||||||
_audioSystem.Play(file, coordinates);
|
_audioSystem.Play(file, coordinates);
|
||||||
}
|
}
|
||||||
|
catch (UnknownPrototypeException)
|
||||||
|
{
|
||||||
|
// Shouldn't crash over a sound
|
||||||
|
Logger.ErrorS("sound", $"Unable to find sound collection for {soundCollectionName}");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
using Robust.Shared.Interfaces.GameObjects;
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
|
using Robust.Shared.Map;
|
||||||
|
using Robust.Shared.Maths;
|
||||||
|
|
||||||
namespace Content.Server.Interfaces.GameObjects.Components.Movement
|
namespace Content.Server.Interfaces.GameObjects.Components.Movement
|
||||||
{
|
{
|
||||||
@@ -6,6 +8,28 @@ namespace Content.Server.Interfaces.GameObjects.Components.Movement
|
|||||||
// There can only be one.
|
// There can only be one.
|
||||||
public interface IMoverComponent : IComponent
|
public interface IMoverComponent : IComponent
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Movement speed (m/s) that the entity walks.
|
||||||
|
/// </summary>
|
||||||
|
float WalkMoveSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Movement speed (m/s) that the entity sprints.
|
||||||
|
/// </summary>
|
||||||
|
float SprintMoveSpeed { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Is the entity Sprinting (running)?
|
||||||
|
/// </summary>
|
||||||
|
bool Sprinting { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Calculated linear velocity direction of the entity.
|
||||||
|
/// </summary>
|
||||||
|
Vector2 VelocityDir { get; }
|
||||||
|
|
||||||
|
GridCoordinates LastPosition { get; set; }
|
||||||
|
|
||||||
|
float StepSoundDistance { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Resources/Audio/effects/footsteps/carpet1.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/carpet2.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/carpet3.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/carpet4.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/carpet5.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/hull1.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/hull2.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/hull3.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/hull4.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/hull5.ogg
Normal file
BIN
Resources/Audio/effects/footsteps/tile1.wav
Normal file
BIN
Resources/Audio/effects/footsteps/tile2.wav
Normal file
BIN
Resources/Audio/effects/footsteps/tile3.wav
Normal file
BIN
Resources/Audio/effects/footsteps/tile4.wav
Normal file
@@ -5,7 +5,7 @@ meta:
|
|||||||
postmapinit: false
|
postmapinit: false
|
||||||
tilemap:
|
tilemap:
|
||||||
0: space
|
0: space
|
||||||
1: floor
|
1: floor_steel
|
||||||
2: floor_techmaint
|
2: floor_techmaint
|
||||||
3: floor_white
|
3: floor_white
|
||||||
4: plating
|
4: plating
|
||||||
@@ -99,112 +99,112 @@ entities:
|
|||||||
pos: 1.412994,7.507263
|
pos: 1.412994,7.507263
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 9
|
uid: 9
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,0.5
|
pos: -7.5,0.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 10
|
uid: 10
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-0.5
|
pos: -7.5,-0.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 11
|
uid: 11
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-1.5
|
pos: -7.5,-1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 12
|
uid: 12
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-2.5
|
pos: -7.5,-2.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 13
|
uid: 13
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-3.5
|
pos: -7.5,-3.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 14
|
uid: 14
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 0.5,-14.5
|
pos: 0.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 15
|
uid: 15
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -0.5,-14.5
|
pos: -0.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 16
|
uid: 16
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 3.5,-14.5
|
pos: 3.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 17
|
uid: 17
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,-14.5
|
pos: 4.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 18
|
uid: 18
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-10.5
|
pos: -7.5,-10.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 19
|
uid: 19
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-11.5
|
pos: -7.5,-11.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 20
|
uid: 20
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-12.5
|
pos: -7.5,-12.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 21
|
uid: 21
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-13.5
|
pos: -7.5,-13.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 22
|
uid: 22
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 2.5,-14.5
|
pos: 2.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 23
|
uid: 23
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 1.5,-14.5
|
pos: 1.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 24
|
uid: 24
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -271,266 +271,266 @@ entities:
|
|||||||
pos: -6.5,-11.5
|
pos: -6.5,-11.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 31
|
uid: 31
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-9.5
|
pos: -7.5,-9.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 32
|
uid: 32
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-7.5
|
pos: -10.5,-7.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 33
|
uid: 33
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-6.5
|
pos: -10.5,-6.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 34
|
uid: 34
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-5.5
|
pos: -10.5,-5.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 35
|
uid: 35
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-4.5
|
pos: -10.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 36
|
uid: 36
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-3.5
|
pos: -10.5,-3.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 37
|
uid: 37
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-2.5
|
pos: -10.5,-2.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 38
|
uid: 38
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-1.5
|
pos: -10.5,-1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 39
|
uid: 39
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -3.5,-14.5
|
pos: -3.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 40
|
uid: 40
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 1.5,-4.5
|
pos: 1.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 41
|
uid: 41
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 0.5,-4.5
|
pos: 0.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 42
|
uid: 42
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -0.5,-4.5
|
pos: -0.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 43
|
uid: 43
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -1.5,-4.5
|
pos: -1.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 44
|
uid: 44
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -2.5,-4.5
|
pos: -2.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 45
|
uid: 45
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -3.5,-4.5
|
pos: -3.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 46
|
uid: 46
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -4.5,-4.5
|
pos: -4.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 47
|
uid: 47
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -5.5,-4.5
|
pos: -5.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 48
|
uid: 48
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -6.5,-4.5
|
pos: -6.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 49
|
uid: 49
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,-4.5
|
pos: 4.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 50
|
uid: 50
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 5.5,-4.5
|
pos: 5.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 51
|
uid: 51
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-4.5
|
pos: 6.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 52
|
uid: 52
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-14.5
|
pos: -7.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 53
|
uid: 53
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -2.5,-14.5
|
pos: -2.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 54
|
uid: 54
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -6.5,-14.5
|
pos: -6.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 55
|
uid: 55
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -5.5,-14.5
|
pos: -5.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 56
|
uid: 56
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -4.5,-14.5
|
pos: -4.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 57
|
uid: 57
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-10.5
|
pos: 6.5,-10.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 58
|
uid: 58
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-11.5
|
pos: 6.5,-11.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 59
|
uid: 59
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-12.5
|
pos: 6.5,-12.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 60
|
uid: 60
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-13.5
|
pos: 6.5,-13.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 61
|
uid: 61
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-14.5
|
pos: 6.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 62
|
uid: 62
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 5.5,-14.5
|
pos: 5.5,-14.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 63
|
uid: 63
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-8.5
|
pos: -7.5,-8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 64
|
uid: 64
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,-7.5
|
pos: -7.5,-7.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 65
|
uid: 65
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -8.5,-8.5
|
pos: -8.5,-8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 66
|
uid: 66
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -9.5,-8.5
|
pos: -9.5,-8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 67
|
uid: 67
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-8.5
|
pos: -10.5,-8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 68
|
uid: 68
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -551,28 +551,28 @@ entities:
|
|||||||
pos: -8.5,-6.5
|
pos: -8.5,-6.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 71
|
uid: 71
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 5.5,-7.5
|
pos: 5.5,-7.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 72
|
uid: 72
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 5.5,-9.5
|
pos: 5.5,-9.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 73
|
uid: 73
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-9.5
|
pos: 6.5,-9.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 74
|
uid: 74
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -595,7 +595,7 @@ entities:
|
|||||||
type: Transform
|
type: Transform
|
||||||
- load: 120
|
- load: 120
|
||||||
type: PowerProvider
|
type: PowerProvider
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 77
|
uid: 77
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -637,14 +637,14 @@ entities:
|
|||||||
pos: 2.5,-4.5
|
pos: 2.5,-4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 83
|
uid: 83
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 6.5,-6.5
|
pos: 6.5,-6.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 84
|
uid: 84
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -1068,7 +1068,7 @@ entities:
|
|||||||
pos: -0.5,-10.5
|
pos: -0.5,-10.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 143
|
uid: 143
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -1593,14 +1593,14 @@ entities:
|
|||||||
pos: -9.5,1.5
|
pos: -9.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 229
|
uid: 229
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,-0.5
|
pos: -10.5,-0.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 230
|
uid: 230
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -1983,7 +1983,7 @@ entities:
|
|||||||
type: Transform
|
type: Transform
|
||||||
- load: 280
|
- load: 280
|
||||||
type: PowerProvider
|
type: PowerProvider
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 277
|
uid: 277
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
@@ -2146,287 +2146,287 @@ entities:
|
|||||||
pos: -1.94591,7.485576
|
pos: -1.94591,7.485576
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 381
|
uid: 381
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,1.5
|
pos: -10.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 382
|
uid: 382
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -11.5,4.5
|
pos: -11.5,4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 383
|
uid: 383
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -10.5,4.5
|
pos: -10.5,4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 384
|
uid: 384
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -9.5,4.5
|
pos: -9.5,4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 385
|
uid: 385
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -8.5,4.5
|
pos: -8.5,4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 386
|
uid: 386
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,4.5
|
pos: -7.5,4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 387
|
uid: 387
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -8.5,1.5
|
pos: -8.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 388
|
uid: 388
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -5.5,1.5
|
pos: -5.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 389
|
uid: 389
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -6.5,1.5
|
pos: -6.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 390
|
uid: 390
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,1.5
|
pos: -7.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 391
|
uid: 391
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -0.5,1.5
|
pos: -0.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 392
|
uid: 392
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 0.5,1.5
|
pos: 0.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 393
|
uid: 393
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 1.5,1.5
|
pos: 1.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 394
|
uid: 394
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 1.5,0.5
|
pos: 1.5,0.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 395
|
uid: 395
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 1.5,-3.5
|
pos: 1.5,-3.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 396
|
uid: 396
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,-3.5
|
pos: 4.5,-3.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 397
|
uid: 397
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,-2.5
|
pos: 4.5,-2.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 398
|
uid: 398
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,-1.5
|
pos: 4.5,-1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 399
|
uid: 399
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,-0.5
|
pos: 4.5,-0.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 400
|
uid: 400
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,0.5
|
pos: 4.5,0.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 401
|
uid: 401
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,1.5
|
pos: 4.5,1.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 402
|
uid: 402
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,2.5
|
pos: 4.5,2.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 403
|
uid: 403
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,3.5
|
pos: 4.5,3.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 404
|
uid: 404
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,4.5
|
pos: 4.5,4.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 405
|
uid: 405
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,5.5
|
pos: 4.5,5.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 406
|
uid: 406
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,6.5
|
pos: 4.5,6.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 407
|
uid: 407
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,7.5
|
pos: 4.5,7.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 408
|
uid: 408
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 4.5,8.5
|
pos: 4.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 409
|
uid: 409
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 1.5,8.5
|
pos: 1.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 410
|
uid: 410
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: 0.5,8.5
|
pos: 0.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 411
|
uid: 411
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -0.5,8.5
|
pos: -0.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 412
|
uid: 412
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -1.5,8.5
|
pos: -1.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 413
|
uid: 413
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -2.5,8.5
|
pos: -2.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 414
|
uid: 414
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -3.5,8.5
|
pos: -3.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 415
|
uid: 415
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -4.5,8.5
|
pos: -4.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 416
|
uid: 416
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -5.5,8.5
|
pos: -5.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 417
|
uid: 417
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -6.5,8.5
|
pos: -6.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 418
|
uid: 418
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,8.5
|
pos: -7.5,8.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 419
|
uid: 419
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,7.5
|
pos: -7.5,7.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 420
|
uid: 420
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
pos: -7.5,6.5
|
pos: -7.5,6.5
|
||||||
rot: -1.5707963267949 rad
|
rot: -1.5707963267949 rad
|
||||||
type: Transform
|
type: Transform
|
||||||
- type: wall
|
- type: solid_wall
|
||||||
uid: 421
|
uid: 421
|
||||||
components:
|
components:
|
||||||
- grid: 0
|
- grid: 0
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
drawdepth: WallMountedItems
|
drawdepth: WallMountedItems
|
||||||
texture: Buildings/TurrTop.png
|
texture: Buildings/TurrTop.png
|
||||||
|
directional: false
|
||||||
- type: AiController
|
- type: AiController
|
||||||
logic: AimShootLife
|
logic: AimShootLife
|
||||||
vision: 6.0
|
vision: 6.0
|
||||||
@@ -29,6 +30,7 @@
|
|||||||
- type: Sprite
|
- type: Sprite
|
||||||
drawdepth: WallMountedItems
|
drawdepth: WallMountedItems
|
||||||
texture: Buildings/TurrLamp.png
|
texture: Buildings/TurrLamp.png
|
||||||
|
directional: false
|
||||||
- type: AiController
|
- type: AiController
|
||||||
logic: AimShootLife
|
logic: AimShootLife
|
||||||
vision: 6.0
|
vision: 6.0
|
||||||
|
|||||||
@@ -1,18 +1,13 @@
|
|||||||
- type: entity
|
- type: entity
|
||||||
id: wall
|
id: base_wall
|
||||||
name: Wall
|
name: BaseWall
|
||||||
components:
|
components:
|
||||||
- type: Clickable
|
- type: Clickable
|
||||||
- type: Sprite
|
- type: Sprite
|
||||||
netsync: false
|
netsync: false
|
||||||
color: "#71797a"
|
|
||||||
drawdepth: Walls
|
drawdepth: Walls
|
||||||
sprite: Buildings/wall.rsi
|
|
||||||
|
|
||||||
- type: Icon
|
- type: Icon
|
||||||
sprite: Buildings/wall.rsi
|
|
||||||
state: full
|
state: full
|
||||||
|
|
||||||
- type: BoundingBox
|
- type: BoundingBox
|
||||||
- type: Collidable
|
- type: Collidable
|
||||||
- type: Damageable
|
- type: Damageable
|
||||||
@@ -28,7 +23,298 @@
|
|||||||
- type: IconSmooth
|
- type: IconSmooth
|
||||||
key: walls
|
key: walls
|
||||||
base: solid
|
base: solid
|
||||||
|
|
||||||
placement:
|
placement:
|
||||||
snap:
|
snap:
|
||||||
- Wall
|
- Wall
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: brick_wall
|
||||||
|
name: Brick wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/brick.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/brick.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: brick
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: clock_wall
|
||||||
|
name: Clock wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/clock.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/clock.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: clock
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: clown_wall
|
||||||
|
name: Clown wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/clown.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/clown.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: clown
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: cult_wall
|
||||||
|
name: Cult wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/cult.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/cult.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: cult
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: debug_wall
|
||||||
|
name: Debug wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/debug.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/debug.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: debug
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: diamond_wall
|
||||||
|
name: Diamond wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/diamond.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/diamond.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: diamond
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: gold_wall
|
||||||
|
name: Gold wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/gold.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/gold.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: gold
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: ice_wall
|
||||||
|
name: Ice wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/ice.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/ice.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: ice
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: metal_wall
|
||||||
|
name: Metal wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/metal.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/metal.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: metal
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: plasma_wall
|
||||||
|
name: Plasma wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/plasma.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/plasma.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: plasma
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: plastic_wall
|
||||||
|
name: Plastic wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/plastic.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/plastic.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: plastic
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: reinforced_wall
|
||||||
|
name: Reinforced wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/reinforced.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/reinforced.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 300
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: reinforced
|
||||||
|
|
||||||
|
# Riveting
|
||||||
|
- type: entity
|
||||||
|
id: riveted_wall
|
||||||
|
name: Riveted wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/riveted.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/riveted.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: riveted
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: sandstone_wall
|
||||||
|
name: Sandstone wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/sandstone.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/sandstone.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: sandstone
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: silver_wall
|
||||||
|
name: Silver wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/silver.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/silver.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: silver
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: solid_wall
|
||||||
|
name: Solid wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
color: "#71797a"
|
||||||
|
sprite: Buildings/Walls/solid.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/solid.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: solid
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: uranium_wall
|
||||||
|
name: Uranium wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/uranium.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/uranium.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: uranium
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
id: wood_wall
|
||||||
|
name: Wood wall
|
||||||
|
parent: base_wall
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Buildings/Walls/wood.rsi
|
||||||
|
- type: Icon
|
||||||
|
sprite: Buildings/Walls/wood.rsi
|
||||||
|
- type: Destructible
|
||||||
|
thresholdvalue: 100
|
||||||
|
spawnondestroy: girder
|
||||||
|
- type: IconSmooth
|
||||||
|
key: walls. Seriously, just a wall. Nothing extraordinary here.
|
||||||
|
base: wood
|
||||||
|
|||||||
@@ -24,3 +24,5 @@
|
|||||||
sprite: Clothing/belt_utility.rsi
|
sprite: Clothing/belt_utility.rsi
|
||||||
- type: Storage
|
- type: Storage
|
||||||
Capacity: 30
|
Capacity: 30
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,3 +54,18 @@
|
|||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Clothing/gloves_leather.rsi
|
sprite: Clothing/gloves_leather.rsi
|
||||||
HeatResistance: 1500
|
HeatResistance: 1500
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: GlovesBase
|
||||||
|
id: WhiteGloves
|
||||||
|
name: White Gloves
|
||||||
|
description: These look pretty fancy.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/gloves_white.rsi
|
||||||
|
state: white
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/gloves_white.rsi
|
||||||
|
state: white
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/gloves_white.rsi
|
||||||
76
Resources/Prototypes/Entities/items/clothing/hats.yml
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
- type: entity
|
||||||
|
parent: Clothing
|
||||||
|
id: HatBase
|
||||||
|
abstract: true
|
||||||
|
components:
|
||||||
|
- type: Clothing
|
||||||
|
Slots: [helmet]
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: HatBase
|
||||||
|
id: HatChef
|
||||||
|
name: Chef's Hat
|
||||||
|
description: It's a hat used by chefs to keep hair out of your food. Judging by the food in the mess, they don't work.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/chef_hat.rsi
|
||||||
|
state: chef
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/chef_hat.rsi
|
||||||
|
state: chef
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/chef_hat.rsi
|
||||||
|
Slots:
|
||||||
|
- helmet
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: HatBase
|
||||||
|
id: HatCaptain
|
||||||
|
name: Captain's Hat
|
||||||
|
description: It's good to be king.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/captain_hat.rsi
|
||||||
|
state: captain
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/captain_hat.rsi
|
||||||
|
state: captain
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/captain_hat.rsi
|
||||||
|
Slots:
|
||||||
|
- helmet
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: HatBase
|
||||||
|
id: HatHOP
|
||||||
|
name: Head of Personnel's Hat
|
||||||
|
description: Papers, please.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/hop_hat.rsi
|
||||||
|
state: hop
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/hop_hat.rsi
|
||||||
|
state: hop
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/hop_hat.rsi
|
||||||
|
Slots:
|
||||||
|
- helmet
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: HatBase
|
||||||
|
id: HatBeret
|
||||||
|
name: Beret
|
||||||
|
description: A beret, an artists favorite headwear.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/beret.rsi
|
||||||
|
state: beret
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/beret.rsi
|
||||||
|
state: beret
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/beret.rsi
|
||||||
|
Slots:
|
||||||
|
- helmet
|
||||||
@@ -48,3 +48,18 @@
|
|||||||
state: icon
|
state: icon
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Clothing/mask_clown.rsi
|
sprite: Clothing/mask_clown.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: MasksBase
|
||||||
|
id: MaskMime
|
||||||
|
name: Mime Mask
|
||||||
|
description: The traditional mime's mask. It has an eerie facial posture.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/mask_mime.rsi
|
||||||
|
state: mime
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/mask_mime.rsi
|
||||||
|
state: mime
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/mask_mime.rsi
|
||||||
@@ -83,3 +83,38 @@
|
|||||||
- type: Sound
|
- type: Sound
|
||||||
- type: FootstepModifier
|
- type: FootstepModifier
|
||||||
footstepSoundCollection: footstep_heavy
|
footstepSoundCollection: footstep_heavy
|
||||||
|
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: ShoesBase
|
||||||
|
id: ShoesBrown
|
||||||
|
name: Brown Shoes
|
||||||
|
description: A pair of brown shoes.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/shoes_brown.rsi
|
||||||
|
state: brown
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/shoes_brown.rsi
|
||||||
|
state: brown
|
||||||
|
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/shoes_brown.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: ShoesBase
|
||||||
|
id: ShoesMime
|
||||||
|
name: Mime Shoes
|
||||||
|
description: Comfortable-looking shoes.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/shoes_mime.rsi
|
||||||
|
state: mime
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/shoes_mime.rsi
|
||||||
|
state: mime
|
||||||
|
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/shoes_mime.rsi
|
||||||
@@ -41,3 +41,35 @@
|
|||||||
|
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Clothing/vest_hazard.rsi
|
sprite: Clothing/vest_hazard.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: SuitBase
|
||||||
|
id: ChefApronClothing
|
||||||
|
name: Chef's Apron
|
||||||
|
description: An apron used by a high class chef.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/chef_apron.rsi
|
||||||
|
state: apron
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/chef_apron.rsi
|
||||||
|
state: apron
|
||||||
|
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/chef_apron.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: SuitBase
|
||||||
|
id: BeltSuspenders
|
||||||
|
name: Suspenders
|
||||||
|
description: They suspend the illusion of the mime's play.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/suspenders.rsi
|
||||||
|
state: suspenders
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/suspenders.rsi
|
||||||
|
state: suspenders
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/suspenders.rsi
|
||||||
@@ -108,3 +108,71 @@
|
|||||||
|
|
||||||
- type: Clothing
|
- type: Clothing
|
||||||
sprite: Clothing/uniform_sec.rsi
|
sprite: Clothing/uniform_sec.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: UniformBase
|
||||||
|
id: UniformChef
|
||||||
|
name: Chef's Uniform
|
||||||
|
description: Can't cook without this.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/chef_uniform.rsi
|
||||||
|
state: chef
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/chef_uniform.rsi
|
||||||
|
state: chef
|
||||||
|
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/chef_uniform.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: UniformBase
|
||||||
|
id: UniformCaptain
|
||||||
|
name: Captain's Jumpsuit
|
||||||
|
description: It's a blue jumpsuit with some gold markings denoting the rank of "Captain".
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/captain_uniform.rsi
|
||||||
|
state: captain
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/captain_uniform.rsi
|
||||||
|
state: captain
|
||||||
|
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/captain_uniform.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: UniformBase
|
||||||
|
id: UniformHOP
|
||||||
|
name: Head of Personnel's Jumpsuit
|
||||||
|
description: It's a jumpsuit worn by someone who works in the position of "Head of Personnel".
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/hop_jumpsuit.rsi
|
||||||
|
state: hop
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/hop_jumpsuit.rsi
|
||||||
|
state: hop
|
||||||
|
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/hop_jumpsuit.rsi
|
||||||
|
|
||||||
|
- type: entity
|
||||||
|
parent: UniformBase
|
||||||
|
id: UniformMime
|
||||||
|
name: Mime's Outfit
|
||||||
|
description: It's not very colourful.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Clothing/mime_outfit.rsi
|
||||||
|
state: mime
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Clothing/mime_outfit.rsi
|
||||||
|
state: mime
|
||||||
|
|
||||||
|
- type: Clothing
|
||||||
|
sprite: Clothing/mime_outfit.rsi
|
||||||
20
Resources/Prototypes/Entities/items/weapons/kitchen.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
- type: entity
|
||||||
|
name: Butcher's Cleaver
|
||||||
|
parent: BaseItem
|
||||||
|
id: ButchCleaver
|
||||||
|
desc: A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products.
|
||||||
|
components:
|
||||||
|
- type: Sprite
|
||||||
|
sprite: Objects/items/cleaver.rsi
|
||||||
|
size: 4
|
||||||
|
state: butch
|
||||||
|
|
||||||
|
- type: Icon
|
||||||
|
sprite: Objects/items/cleaver.rsi
|
||||||
|
state: butch
|
||||||
|
|
||||||
|
- type: MeleeWeapon
|
||||||
|
- type: Item
|
||||||
|
Size: 10
|
||||||
|
sprite: Objects/items/cleaver.rsi
|
||||||
|
prefix: inhand
|
||||||
@@ -1,3 +1,12 @@
|
|||||||
|
- type: sound_collection
|
||||||
|
id: footstep_carpet
|
||||||
|
files:
|
||||||
|
- /Audio/effects/footsteps/carpet1.ogg
|
||||||
|
- /Audio/effects/footsteps/carpet2.ogg
|
||||||
|
- /Audio/effects/footsteps/carpet3.ogg
|
||||||
|
- /Audio/effects/footsteps/carpet4.ogg
|
||||||
|
- /Audio/effects/footsteps/carpet5.ogg
|
||||||
|
|
||||||
- type: sound_collection
|
- type: sound_collection
|
||||||
id: footstep_catwalk
|
id: footstep_catwalk
|
||||||
files:
|
files:
|
||||||
@@ -16,6 +25,15 @@
|
|||||||
- /Audio/effects/footsteps/floor4.ogg
|
- /Audio/effects/footsteps/floor4.ogg
|
||||||
- /Audio/effects/footsteps/floor5.ogg
|
- /Audio/effects/footsteps/floor5.ogg
|
||||||
|
|
||||||
|
- type: sound_collection
|
||||||
|
id: footstep_hull
|
||||||
|
files:
|
||||||
|
- /Audio/effects/footsteps/hull1.ogg
|
||||||
|
- /Audio/effects/footsteps/hull2.ogg
|
||||||
|
- /Audio/effects/footsteps/hull3.ogg
|
||||||
|
- /Audio/effects/footsteps/hull4.ogg
|
||||||
|
- /Audio/effects/footsteps/hull5.ogg
|
||||||
|
|
||||||
- type: sound_collection
|
- type: sound_collection
|
||||||
id: footstep_plating
|
id: footstep_plating
|
||||||
files:
|
files:
|
||||||
@@ -25,6 +43,15 @@
|
|||||||
- /Audio/effects/footsteps/plating4.ogg
|
- /Audio/effects/footsteps/plating4.ogg
|
||||||
- /Audio/effects/footsteps/plating5.ogg
|
- /Audio/effects/footsteps/plating5.ogg
|
||||||
|
|
||||||
|
- type: sound_collection
|
||||||
|
id: footstep_tile
|
||||||
|
files:
|
||||||
|
- /Audio/effects/footsteps/tile1.ogg
|
||||||
|
- /Audio/effects/footsteps/tile2.ogg
|
||||||
|
- /Audio/effects/footsteps/tile3.ogg
|
||||||
|
- /Audio/effects/footsteps/tile4.ogg
|
||||||
|
- /Audio/effects/footsteps/tile5.ogg
|
||||||
|
|
||||||
- type: sound_collection
|
- type: sound_collection
|
||||||
id: footstep_clown
|
id: footstep_clown
|
||||||
files:
|
files:
|
||||||
|
|||||||
@@ -1,7 +1,17 @@
|
|||||||
- type: tile
|
- type: tile
|
||||||
name: floor
|
name: floor_carpet
|
||||||
display_name: Floor
|
display_name: Carpet
|
||||||
texture: "floor_steel"
|
texture: "carpet"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_carpet
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_dark
|
||||||
|
display_name: Dark floor
|
||||||
|
texture: "dark"
|
||||||
is_subfloor: false
|
is_subfloor: false
|
||||||
can_crowbar: true
|
can_crowbar: true
|
||||||
footstep_sounds: footstep_floor
|
footstep_sounds: footstep_floor
|
||||||
@@ -9,21 +19,131 @@
|
|||||||
subfloor: plating
|
subfloor: plating
|
||||||
|
|
||||||
- type: tile
|
- type: tile
|
||||||
name: floor_white
|
name: floor_elevator_shaft
|
||||||
display_name: White Floor
|
display_name: Elevator shaft
|
||||||
texture: "floor_white"
|
texture: "elevator_shaft"
|
||||||
is_subfloor: false
|
is_subfloor: false
|
||||||
can_crowbar: true
|
can_crowbar: true
|
||||||
footstep_sounds: footstep_floor
|
footstep_sounds: footstep_floor
|
||||||
friction: 0.1
|
friction: 0.35
|
||||||
subfloor: underplating
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_freezer
|
||||||
|
display_name: Freezer
|
||||||
|
texture: "freezer"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_hydro
|
||||||
|
display_name: Hydro floor
|
||||||
|
texture: "hydro"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_green_circuit
|
||||||
|
display_name: Green circuit floor
|
||||||
|
texture: "green_circuit"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_lino
|
||||||
|
display_name: Linoleum floor
|
||||||
|
texture: "lino"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_mono
|
||||||
|
display_name: Mono floor
|
||||||
|
texture: "mono"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_reinforced
|
||||||
|
display_name: Reinforced floor
|
||||||
|
texture: "reinforced"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_rock_vault
|
||||||
|
display_name: Rock vault floor
|
||||||
|
texture: "rock_vault"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_showroom
|
||||||
|
display_name: Showroom floor
|
||||||
|
texture: "showroom"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_steel
|
||||||
|
display_name: Steel floor
|
||||||
|
texture: "steel"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_steel_dirty
|
||||||
|
display_name: Dirty steel floor
|
||||||
|
texture: "steel_dirty"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
- type: tile
|
- type: tile
|
||||||
name: floor_techmaint
|
name: floor_techmaint
|
||||||
display_name: Techmaint Floor
|
display_name: Techmaint Floor
|
||||||
texture: "floor_techmaint"
|
texture: "tech_maint"
|
||||||
is_subfloor: false
|
is_subfloor: false
|
||||||
can_crowbar: true
|
can_crowbar: true
|
||||||
footstep_sounds: footstep_floor
|
footstep_sounds: footstep_floor
|
||||||
friction: 0.5
|
friction: 0.5
|
||||||
subfloor: underplating
|
subfloor: underplating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
name: floor_white
|
||||||
|
display_name: White Floor
|
||||||
|
texture: "white"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_floor
|
||||||
|
friction: 0.1
|
||||||
|
subfloor: underplating
|
||||||
|
|||||||
397
Resources/Prototypes/Tiles/floors/hull/hull.yml
Normal file
@@ -0,0 +1,397 @@
|
|||||||
|
# TODO: Change code to avoid the DRY
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center0
|
||||||
|
display_name: Hull Center 0
|
||||||
|
texture: "Hull/hullcenter0"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center1
|
||||||
|
display_name: Hull Center 1
|
||||||
|
texture: "Hull/hullcenter1"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center2
|
||||||
|
display_name: Hull Center 2
|
||||||
|
texture: "Hull/hullcenter2"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center3
|
||||||
|
display_name: Hull Center 3
|
||||||
|
texture: "Hull/hullcenter3"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center4
|
||||||
|
display_name: Hull Center 4
|
||||||
|
texture: "Hull/hullcenter4"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center5
|
||||||
|
display_name: Hull Center 5
|
||||||
|
texture: "Hull/hullcenter5"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center6
|
||||||
|
display_name: Hull Center 6
|
||||||
|
texture: "Hull/hullcenter6"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center7
|
||||||
|
display_name: Hull Center 7
|
||||||
|
texture: "Hull/hullcenter7"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center8
|
||||||
|
display_name: Hull Center 8
|
||||||
|
texture: "Hull/hullcenter8"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center9
|
||||||
|
display_name: Hull Center 9
|
||||||
|
texture: "Hull/hullcenter9"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center10
|
||||||
|
display_name: Hull Center 10
|
||||||
|
texture: "Hull/hullcenter10"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center11
|
||||||
|
display_name: Hull Center 11
|
||||||
|
texture: "Hull/hullcenter11"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center12
|
||||||
|
display_name: Hull Center 12
|
||||||
|
texture: "Hull/hullcenter12"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center13
|
||||||
|
display_name: Hull Center 13
|
||||||
|
texture: "Hull/hullcenter13"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center14
|
||||||
|
display_name: Hull Center 14
|
||||||
|
texture: "Hull/hullcenter14"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center15
|
||||||
|
display_name: Hull Center 15
|
||||||
|
texture: "Hull/hullcenter15"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center16
|
||||||
|
display_name: Hull Center 16
|
||||||
|
texture: "Hull/hullcenter16"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center17
|
||||||
|
display_name: Hull Center 17
|
||||||
|
texture: "Hull/hullcenter17"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center18
|
||||||
|
display_name: Hull Center 18
|
||||||
|
texture: "Hull/hullcenter18"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center19
|
||||||
|
display_name: Hull Center 19
|
||||||
|
texture: "Hull/hullcenter19"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center20
|
||||||
|
display_name: Hull Center 20
|
||||||
|
texture: "Hull/hullcenter20"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center21
|
||||||
|
display_name: Hull Center 21
|
||||||
|
texture: "Hull/hullcenter21"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center22
|
||||||
|
display_name: Hull Center 22
|
||||||
|
texture: "Hull/hullcenter22"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center23
|
||||||
|
display_name: Hull Center 23
|
||||||
|
texture: "Hull/hullcenter23"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center24
|
||||||
|
display_name: Hull Center 24
|
||||||
|
texture: "Hull/hullcenter24"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center25
|
||||||
|
display_name: Hull Center 25
|
||||||
|
texture: "Hull/hullcenter25"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center26
|
||||||
|
display_name: Hull Center 26
|
||||||
|
texture: "Hull/hullcenter26"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center27
|
||||||
|
display_name: Hull Center 27
|
||||||
|
texture: "Hull/hullcenter27"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center28
|
||||||
|
display_name: Hull Center 28
|
||||||
|
texture: "Hull/hullcenter28"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center29
|
||||||
|
display_name: Hull Center 29
|
||||||
|
texture: "Hull/hullcenter29"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center30
|
||||||
|
display_name: Hull Center 30
|
||||||
|
texture: "Hull/hullcenter30"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center31
|
||||||
|
display_name: Hull Center 31
|
||||||
|
texture: "Hull/hullcenter31"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center32
|
||||||
|
display_name: Hull Center 32
|
||||||
|
texture: "Hull/hullcenter32"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center33
|
||||||
|
display_name: Hull Center 33
|
||||||
|
texture: "Hull/hullcenter33"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center34
|
||||||
|
display_name: Hull Center 34
|
||||||
|
texture: "Hull/hullcenter34"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
|
|
||||||
|
- type: tile
|
||||||
|
parent: floor_hull_base
|
||||||
|
name: floor_hull_center35
|
||||||
|
display_name: Hull Center 35
|
||||||
|
texture: "Hull/hullcenter35"
|
||||||
|
is_subfloor: false
|
||||||
|
can_crowbar: true
|
||||||
|
footstep_sounds: footstep_hull
|
||||||
|
friction: 0.35
|
||||||
|
subfloor: plating
|
||||||
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick0.png
Normal file
|
After Width: | Height: | Size: 758 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick1.png
Normal file
|
After Width: | Height: | Size: 558 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick2.png
Normal file
|
After Width: | Height: | Size: 758 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick3.png
Normal file
|
After Width: | Height: | Size: 558 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick4.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick5.png
Normal file
|
After Width: | Height: | Size: 715 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick6.png
Normal file
|
After Width: | Height: | Size: 580 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/brick7.png
Normal file
|
After Width: | Height: | Size: 715 B |
BIN
Resources/Textures/Buildings/Walls/brick.rsi/full.png
Normal file
|
After Width: | Height: | Size: 473 B |
1
Resources/Textures/Buildings/Walls/brick.rsi/meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "brick0", "directions": 4}, {"name": "brick1", "directions": 4}, {"name": "brick2", "directions": 4}, {"name": "brick3", "directions": 4}, {"name": "brick4", "directions": 4}, {"name": "brick5", "directions": 4}, {"name": "brick6", "directions": 4}, {"name": "brick7", "directions": 4}, {"name": "full", "directions": 1}]}
|
||||||
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock0.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock1.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock2.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock3.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock4.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock5.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock6.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/clock7.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
Resources/Textures/Buildings/Walls/clock.rsi/full.png
Normal file
|
After Width: | Height: | Size: 978 B |
1
Resources/Textures/Buildings/Walls/clock.rsi/meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "clock0", "directions": 4}, {"name": "clock1", "directions": 4}, {"name": "clock2", "directions": 4}, {"name": "clock3", "directions": 4}, {"name": "clock4", "directions": 4}, {"name": "clock5", "directions": 4}, {"name": "clock6", "directions": 4}, {"name": "clock7", "directions": 4}, {"name": "full", "directions": 1}]}
|
||||||
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown0.png
Normal file
|
After Width: | Height: | Size: 674 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown1.png
Normal file
|
After Width: | Height: | Size: 441 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown2.png
Normal file
|
After Width: | Height: | Size: 674 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown3.png
Normal file
|
After Width: | Height: | Size: 441 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown4.png
Normal file
|
After Width: | Height: | Size: 469 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown5.png
Normal file
|
After Width: | Height: | Size: 653 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown6.png
Normal file
|
After Width: | Height: | Size: 469 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/clown7.png
Normal file
|
After Width: | Height: | Size: 653 B |
BIN
Resources/Textures/Buildings/Walls/clown.rsi/full.png
Normal file
|
After Width: | Height: | Size: 424 B |
1
Resources/Textures/Buildings/Walls/clown.rsi/meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "clown0", "directions": 4}, {"name": "clown1", "directions": 4}, {"name": "clown2", "directions": 4}, {"name": "clown3", "directions": 4}, {"name": "clown4", "directions": 4}, {"name": "clown5", "directions": 4}, {"name": "clown6", "directions": 4}, {"name": "clown7", "directions": 4}, {"name": "full", "directions": 1}]}
|
||||||
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult0.png
Normal file
|
After Width: | Height: | Size: 916 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult1.png
Normal file
|
After Width: | Height: | Size: 1017 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult2.png
Normal file
|
After Width: | Height: | Size: 916 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult3.png
Normal file
|
After Width: | Height: | Size: 1017 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult4.png
Normal file
|
After Width: | Height: | Size: 1021 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult5.png
Normal file
|
After Width: | Height: | Size: 932 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult6.png
Normal file
|
After Width: | Height: | Size: 1021 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/cult7.png
Normal file
|
After Width: | Height: | Size: 932 B |
BIN
Resources/Textures/Buildings/Walls/cult.rsi/full.png
Normal file
|
After Width: | Height: | Size: 591 B |
1
Resources/Textures/Buildings/Walls/cult.rsi/meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "cult0", "directions": 4}, {"name": "cult1", "directions": 4}, {"name": "cult2", "directions": 4}, {"name": "cult3", "directions": 4}, {"name": "cult4", "directions": 4}, {"name": "cult5", "directions": 4}, {"name": "cult6", "directions": 4}, {"name": "cult7", "directions": 4}, {"name": "full", "directions": 1}]}
|
||||||
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug0.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug1.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug2.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug3.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug4.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug5.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug6.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
Resources/Textures/Buildings/Walls/debug.rsi/debug7.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 269 B |
65
Resources/Textures/Buildings/Walls/debug.rsi/meta.json
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"license": "CC-BY-SA-3.0",
|
||||||
|
"copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/c34c1b30abf18aa552e19294523924c39e5ea127/icons/turf/wall_masks.dmi and modified.",
|
||||||
|
"size": {
|
||||||
|
"x": 32,
|
||||||
|
"y": 32
|
||||||
|
},
|
||||||
|
"states": [
|
||||||
|
{
|
||||||
|
"name": "full",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug0",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug1",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug2",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug3",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug4",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug5",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug6",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "debug7",
|
||||||
|
"select": [],
|
||||||
|
"flags": {},
|
||||||
|
"directions": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond0.png
Normal file
|
After Width: | Height: | Size: 758 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond1.png
Normal file
|
After Width: | Height: | Size: 566 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond2.png
Normal file
|
After Width: | Height: | Size: 758 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond3.png
Normal file
|
After Width: | Height: | Size: 566 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond4.png
Normal file
|
After Width: | Height: | Size: 576 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond5.png
Normal file
|
After Width: | Height: | Size: 770 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond6.png
Normal file
|
After Width: | Height: | Size: 576 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/diamond7.png
Normal file
|
After Width: | Height: | Size: 770 B |
BIN
Resources/Textures/Buildings/Walls/diamond.rsi/full.png
Normal file
|
After Width: | Height: | Size: 470 B |
1
Resources/Textures/Buildings/Walls/diamond.rsi/meta.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/vgstation-coders/vgstation13/raw/99cc2ab62d65a3a7b554dc7b21ff5f57c835f973/icons/turf/walls.dmi", "states": [{"name": "diamond0", "directions": 4}, {"name": "diamond1", "directions": 4}, {"name": "diamond2", "directions": 4}, {"name": "diamond3", "directions": 4}, {"name": "diamond4", "directions": 4}, {"name": "diamond5", "directions": 4}, {"name": "diamond6", "directions": 4}, {"name": "diamond7", "directions": 4}, {"name": "full", "directions": 1}]}
|
||||||