Planetarization (#1040)
* tiers to level demiplanes * Update demiplane_keys.yml * demiplane on planets * migrate to wizden dayCycle + planetarize Comoss * Update comoss_d.yml * Update audio_music.yml * Update dev_map.yml * add shadows to demiplanes * remove outdated systems * fix silvas * silva fix * Update factoria.yml * Update island.yml
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
using System.Numerics;
|
||||
using Content.Client.Parallax;
|
||||
using Content.Client.Weather;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.CloudShadow;
|
||||
using Content.Shared.Salvage;
|
||||
using Content.Shared.Weather;
|
||||
using Robust.Client.GameObjects;
|
||||
@@ -62,7 +62,7 @@ public sealed partial class StencilOverlay : Overlay
|
||||
{
|
||||
foreach (var (proto, weather) in comp.Weather)
|
||||
{
|
||||
if (!_protoManager.TryIndex<WeatherPrototype>(proto, out var weatherProto))
|
||||
if (!_protoManager.TryIndex(proto, out var weatherProto))
|
||||
continue;
|
||||
|
||||
var alpha = _weather.GetPercent(weather, mapUid);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
using System.Numerics;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.CloudShadow;
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.CloudShadow;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle;
|
||||
namespace Content.Server._CP14.CloudShadow;
|
||||
|
||||
public sealed class CP14CloudShadowsSystem : EntitySystem
|
||||
{
|
||||
@@ -1,134 +0,0 @@
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle;
|
||||
|
||||
public sealed partial class CP14DayCycleSystem : CP14SharedDayCycleSystem
|
||||
{
|
||||
public const int MinTimeEntryCount = 2;
|
||||
private const float MaxTimeDiff = 0.05f;
|
||||
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14DayCycleComponent, MapInitEvent>(OnMapInitDayCycle);
|
||||
}
|
||||
|
||||
private void OnMapInitDayCycle(Entity<CP14DayCycleComponent> dayCycle, ref MapInitEvent args)
|
||||
{
|
||||
dayCycle.Comp.IndexedCycle = _proto.Index(dayCycle.Comp.CycleProto);
|
||||
|
||||
Init(dayCycle);
|
||||
|
||||
if (dayCycle.Comp.StartWithRandomEntry && dayCycle.Comp.IndexedCycle.TimeEntries.Count > 1)
|
||||
SetTimeEntry(dayCycle, _random.Next(dayCycle.Comp.IndexedCycle.TimeEntries.Count));
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
var dayCycleQuery = EntityQueryEnumerator<CP14DayCycleComponent, MapLightComponent>();
|
||||
while (dayCycleQuery.MoveNext(out var uid, out var dayCycle, out var mapLight))
|
||||
{
|
||||
var entity = new Entity<CP14DayCycleComponent, MapLightComponent>(uid, dayCycle, mapLight);
|
||||
|
||||
if (dayCycle.IndexedCycle is null)
|
||||
continue;
|
||||
|
||||
if (dayCycle.IndexedCycle.TimeEntries.Count < MinTimeEntryCount)
|
||||
continue;
|
||||
|
||||
SetAmbientColor((entity, entity), GetCurrentColor(entity, _timing.CurTime.TotalSeconds));
|
||||
|
||||
if (_timing.CurTime <= dayCycle.EntryEndTime)
|
||||
continue;
|
||||
|
||||
SetTimeEntry((uid, dayCycle), dayCycle.NextTimeEntryIndex);
|
||||
}
|
||||
}
|
||||
|
||||
public void Init(Entity<CP14DayCycleComponent> dayCycle)
|
||||
{
|
||||
if (dayCycle.Comp.IndexedCycle is null)
|
||||
return;
|
||||
|
||||
if (dayCycle.Comp.IndexedCycle.TimeEntries.Count < MinTimeEntryCount)
|
||||
{
|
||||
Log.Warning($"Attempting to init a day/night cycle with the number of time entries less than {MinTimeEntryCount}");
|
||||
return;
|
||||
}
|
||||
|
||||
dayCycle.Comp.CurrentTimeEntryIndex = 0;
|
||||
dayCycle.Comp.EntryStartTime = _timing.CurTime;
|
||||
dayCycle.Comp.EntryEndTime = _timing.CurTime + dayCycle.Comp.CurrentTimeEntry!.Value.Duration;
|
||||
|
||||
Dirty(dayCycle);
|
||||
}
|
||||
|
||||
public void AddTimeEntry(Entity<CP14DayCycleComponent> dayCycle, DayCycleEntry entry)
|
||||
{
|
||||
if (dayCycle.Comp.IndexedCycle is null)
|
||||
return;
|
||||
|
||||
dayCycle.Comp.IndexedCycle.TimeEntries.Add(entry);
|
||||
Dirty(dayCycle);
|
||||
}
|
||||
|
||||
public void SetTimeEntry(Entity<CP14DayCycleComponent> dayCycle, int nextEntry)
|
||||
{
|
||||
if (dayCycle.Comp.IndexedCycle is null)
|
||||
return;
|
||||
|
||||
nextEntry = Math.Clamp(nextEntry, 0, dayCycle.Comp.IndexedCycle.TimeEntries.Count - 1);
|
||||
|
||||
dayCycle.Comp.CurrentTimeEntryIndex = nextEntry;
|
||||
dayCycle.Comp.EntryStartTime = dayCycle.Comp.EntryEndTime;
|
||||
dayCycle.Comp.EntryEndTime += dayCycle.Comp.CurrentTimeEntry!.Value.Duration;
|
||||
|
||||
var ev = new DayCycleChangedEvent(dayCycle.Comp.CurrentTimeEntry);
|
||||
RaiseLocalEvent(dayCycle, ref ev, true);
|
||||
|
||||
Dirty(dayCycle);
|
||||
}
|
||||
|
||||
private void SetAmbientColor(Entity<MapLightComponent> light, Color color)
|
||||
{
|
||||
if (color == light.Comp.AmbientLightColor)
|
||||
return;
|
||||
|
||||
light.Comp.AmbientLightColor = color;
|
||||
Dirty(light);
|
||||
}
|
||||
|
||||
private Color GetCurrentColor(Entity<CP14DayCycleComponent> dayCycle, double totalSeconds)
|
||||
{
|
||||
var timeScale = GetTimeScale(dayCycle, totalSeconds);
|
||||
return Color.InterpolateBetween(dayCycle.Comp.StartColor ?? Color.Black, dayCycle.Comp.EndColor ?? Color.Black, timeScale);
|
||||
}
|
||||
|
||||
private float GetTimeScale(Entity<CP14DayCycleComponent> dayCycle, double totalSeconds)
|
||||
{
|
||||
return GetLerpValue(dayCycle.Comp.EntryStartTime.TotalSeconds, dayCycle.Comp.EntryEndTime.TotalSeconds, totalSeconds);
|
||||
}
|
||||
|
||||
private static float GetLerpValue(double start, double end, double current)
|
||||
{
|
||||
if (Math.Abs(start - end) < MaxTimeDiff)
|
||||
return 0f;
|
||||
|
||||
var distanceFromStart = current - start;
|
||||
var totalDistance = end - start;
|
||||
|
||||
return MathHelper.Clamp01((float)(distanceFromStart / totalDistance));
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
using Content.Server.Administration;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.DayCycle.Prototypes;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle.Commands;
|
||||
|
||||
[AdminCommand(AdminFlags.VarEdit)]
|
||||
public sealed class CP14AddTimeEntryCommand : LocalizedCommands
|
||||
{
|
||||
private const string Name = "cp14-addtimeentry";
|
||||
private const int ArgumentCount = 4;
|
||||
|
||||
public override string Command => Name;
|
||||
public override string Description => "Allows you to add a new time entry to the map list";
|
||||
public override string Help => $"{Name} <mapUid> <color> <duration> <periodId>";
|
||||
|
||||
public override void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||
{
|
||||
if (args.Length != ArgumentCount)
|
||||
{
|
||||
shell.WriteError($"{Loc.GetString("shell-wrong-arguments-number")}\n{Help}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!NetEntity.TryParse(args[0], out var netEntity))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-entity-uid-must-be-number"));
|
||||
return;
|
||||
}
|
||||
|
||||
var entityManager = IoCManager.Resolve<IEntityManager>();
|
||||
var prototypeManager = IoCManager.Resolve<IPrototypeManager>();
|
||||
|
||||
var dayCycleSystem = entityManager.System<CP14DayCycleSystem>();
|
||||
var entity = entityManager.GetEntity(netEntity);
|
||||
|
||||
if (!entityManager.TryGetComponent<CP14DayCycleComponent>(entity, out var dayCycle))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-entity-with-uid-lacks-component", ("uid", entity), ("componentName", nameof(CP14DayCycleComponent))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Color.TryParse(args[1], out var color))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("parse-color-fail", ("args", args[1])));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!float.TryParse(args[2], out var duration))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("parse-float-fail", ("args", args[2])));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!prototypeManager.TryIndex<CP14DayCyclePeriodPrototype>(args[3], out var prototype))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("parse-prototype-fail", ("args", args[3])));
|
||||
return;
|
||||
}
|
||||
|
||||
var entry = new DayCycleEntry
|
||||
{
|
||||
Color = color,
|
||||
Duration = TimeSpan.FromSeconds(duration),
|
||||
Period = prototype.ID,
|
||||
};
|
||||
|
||||
dayCycleSystem.AddTimeEntry((entity, dayCycle), entry);
|
||||
}
|
||||
|
||||
public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
|
||||
{
|
||||
return args.Length switch
|
||||
{
|
||||
1 => CompletionResult.FromOptions(CompletionHelper.Components<CP14DayCycleComponent>(args[0])),
|
||||
4 => CompletionResult.FromOptions(CompletionHelper.PrototypeIDs<CP14DayCyclePeriodPrototype>()),
|
||||
_ => CompletionResult.Empty,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
using Content.Server.Administration;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using CP14DayCycleComponent = Content.Shared._CP14.DayCycle.Components.CP14DayCycleComponent;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle.Commands;
|
||||
|
||||
[AdminCommand(AdminFlags.VarEdit)]
|
||||
public sealed class CP14InitDayCycleCommand : LocalizedCommands
|
||||
{
|
||||
private const string Name = "cp14-initdaycycle";
|
||||
private const int ArgumentCount = 1;
|
||||
|
||||
public override string Command => Name;
|
||||
public override string Description =>
|
||||
"Re-initializes the day and night system, but reset the current time entry stage";
|
||||
public override string Help => $"{Name} <mapUid>";
|
||||
|
||||
public override void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||
{
|
||||
if (args.Length != ArgumentCount)
|
||||
{
|
||||
shell.WriteError($"{Loc.GetString("shell-wrong-arguments-number")}\n{Help}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!NetEntity.TryParse(args[0], out var netEntity))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-entity-uid-must-be-number"));
|
||||
return;
|
||||
}
|
||||
|
||||
var entityManager = IoCManager.Resolve<EntityManager>();
|
||||
var dayCycleSystem = entityManager.System<CP14DayCycleSystem>();
|
||||
var entity = entityManager.GetEntity(netEntity);
|
||||
|
||||
if (!entityManager.TryGetComponent<CP14DayCycleComponent>(entity, out var dayCycle))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-entity-with-uid-lacks-component", ("uid", entity), ("componentName", nameof(CP14DayCycleComponent))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (dayCycle.IndexedCycle is null)
|
||||
return;
|
||||
|
||||
if (dayCycle.IndexedCycle.TimeEntries.Count < CP14DayCycleSystem.MinTimeEntryCount)
|
||||
{
|
||||
shell.WriteError($"Attempting to init a daily cycle with the number of time entries less than {CP14DayCycleSystem.MinTimeEntryCount}");
|
||||
return;
|
||||
}
|
||||
|
||||
dayCycleSystem.Init((entity, dayCycle));
|
||||
}
|
||||
|
||||
public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
|
||||
{
|
||||
return args.Length switch
|
||||
{
|
||||
1 => CompletionResult.FromOptions(CompletionHelper.Components<CP14DayCycleComponent>(args[0])),
|
||||
_ => CompletionResult.Empty,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,84 +0,0 @@
|
||||
using Content.Server.Administration;
|
||||
using Content.Shared.Administration;
|
||||
using Robust.Shared.Console;
|
||||
using CP14DayCycleComponent = Content.Shared._CP14.DayCycle.Components.CP14DayCycleComponent;
|
||||
|
||||
namespace Content.Server._CP14.DayCycle.Commands;
|
||||
|
||||
[AdminCommand(AdminFlags.VarEdit)]
|
||||
public sealed class CP14SetTimeEntryCommand : LocalizedCommands
|
||||
{
|
||||
private const string Name = "cp14-settimeentry";
|
||||
private const int ArgumentCount = 2;
|
||||
|
||||
public override string Command => Name;
|
||||
public override string Description => "Sets a new entry at the specified index";
|
||||
public override string Help => $"{Name} <mapUid> <timeEntry>";
|
||||
|
||||
public override void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||
{
|
||||
if (args.Length != ArgumentCount)
|
||||
{
|
||||
shell.WriteError($"{Loc.GetString("shell-wrong-arguments-number")}\n{Help}");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!NetEntity.TryParse(args[0], out var netEntity))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-entity-uid-must-be-number"));
|
||||
return;
|
||||
}
|
||||
|
||||
var entityManager = IoCManager.Resolve<EntityManager>();
|
||||
var dayCycleSystem = entityManager.System<CP14DayCycleSystem>();
|
||||
var entity = entityManager.GetEntity(netEntity);
|
||||
|
||||
if (!entityManager.TryGetComponent<CP14DayCycleComponent>(entity, out var dayCycle))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-entity-with-uid-lacks-component", ("uid", entity), ("componentName", nameof(CP14DayCycleComponent))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!int.TryParse(args[1], out var timeEntry))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("parse-int-fail", ("args", args[1])));
|
||||
return;
|
||||
}
|
||||
|
||||
dayCycleSystem.SetTimeEntry((entity, dayCycle), timeEntry);
|
||||
}
|
||||
|
||||
public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
|
||||
{
|
||||
var entityManager = IoCManager.Resolve<EntityManager>();
|
||||
|
||||
switch (args.Length)
|
||||
{
|
||||
case 1:
|
||||
return CompletionResult.FromOptions(CompletionHelper.Components<CP14DayCycleComponent>(args[0], entityManager));
|
||||
|
||||
case 2:
|
||||
if (!NetEntity.TryParse(args[0], out var mapUid))
|
||||
return CompletionResult.Empty;
|
||||
|
||||
if (!entityManager.TryGetComponent<CP14DayCycleComponent>(entityManager.GetEntity(mapUid), out var component))
|
||||
return CompletionResult.Empty;
|
||||
|
||||
if (component.IndexedCycle is null)
|
||||
return CompletionResult.Empty;
|
||||
|
||||
if (component.IndexedCycle.TimeEntries.Count - 1 < 0)
|
||||
return CompletionResult.Empty;
|
||||
|
||||
var indices = new string[component.IndexedCycle.TimeEntries.Count - 1];
|
||||
for (var i = 0; i < indices.Length; i++)
|
||||
{
|
||||
indices[i] = i.ToString();
|
||||
}
|
||||
|
||||
return CompletionResult.FromOptions(indices);
|
||||
}
|
||||
|
||||
return CompletionResult.Empty;
|
||||
}
|
||||
}
|
||||
@@ -121,7 +121,6 @@ public sealed partial class CP14DemiplaneSystem
|
||||
JobMaxTime,
|
||||
EntityManager,
|
||||
_logManager,
|
||||
_mapManager,
|
||||
_proto,
|
||||
_dungeon,
|
||||
_metaData,
|
||||
@@ -218,13 +217,8 @@ public sealed partial class CP14DemiplaneSystem
|
||||
{
|
||||
var randomConfig = _random.Pick(suitableConfigs);
|
||||
|
||||
if (!generator.Comp.TiersContent.ContainsKey(randomConfig.Tier))
|
||||
{
|
||||
suitableConfigs.Remove(randomConfig);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!_random.Prob(generator.Comp.TiersContent[randomConfig.Tier]))
|
||||
//LevelRange filter
|
||||
if (generator.Comp.Level < randomConfig.Levels.Min || generator.Comp.Level > randomConfig.Levels.Max)
|
||||
{
|
||||
suitableConfigs.Remove(randomConfig);
|
||||
continue;
|
||||
@@ -265,36 +259,10 @@ public sealed partial class CP14DemiplaneSystem
|
||||
}
|
||||
}
|
||||
|
||||
//Tier filter
|
||||
//Levels filter
|
||||
if (passed)
|
||||
{
|
||||
var innerPassed = false;
|
||||
foreach (var tier in modifier.Tiers)
|
||||
{
|
||||
if (generator.Comp.TiersContent.ContainsKey(tier))
|
||||
{
|
||||
innerPassed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!innerPassed)
|
||||
{
|
||||
passed = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Tier weight filter
|
||||
if (passed)
|
||||
{
|
||||
var maxProb = 0f;
|
||||
foreach (var tier in modifier.Tiers)
|
||||
{
|
||||
if (generator.Comp.TiersContent.ContainsKey(tier))
|
||||
maxProb = Math.Max(maxProb, generator.Comp.TiersContent[tier]);
|
||||
}
|
||||
|
||||
if (!_random.Prob(maxProb))
|
||||
if (generator.Comp.Level < modifier.Levels.Min || generator.Comp.Level > modifier.Levels.Max)
|
||||
{
|
||||
passed = false;
|
||||
}
|
||||
|
||||
@@ -17,10 +17,10 @@ public sealed partial class CP14DemiplaneGeneratorDataComponent : Component
|
||||
public List<ProtoId<CP14DemiplaneModifierPrototype>> SelectedModifiers = new();
|
||||
|
||||
/// <summary>
|
||||
/// Generator Tier. Determines which modifiers and locations will be selected for this demiplane
|
||||
/// Demiplane Difficulty Level. By design, the plan so far is for a framework of 1 to 10, but technically could support more.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public Dictionary<int, float> TiersContent = new();
|
||||
public int Level = 1;
|
||||
|
||||
[DataField(required: true)]
|
||||
public Dictionary<ProtoId<CP14DemiplaneModifierCategoryPrototype>, float> Limits = new();
|
||||
|
||||
@@ -8,6 +8,7 @@ using Content.Shared.Gravity;
|
||||
using Content.Shared.Procedural;
|
||||
using Robust.Shared.CPUJob.JobQueues;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.Demiplane.Jobs;
|
||||
@@ -16,7 +17,6 @@ public sealed class CP14SpawnRandomDemiplaneJob : Job<bool>
|
||||
{
|
||||
private readonly IEntityManager _entManager;
|
||||
//private readonly IGameTiming _timing;
|
||||
private readonly IMapManager _mapManager;
|
||||
private readonly IPrototypeManager _prototypeManager;
|
||||
//private readonly AnchorableSystem _anchorable;
|
||||
private readonly DungeonSystem _dungeon;
|
||||
@@ -37,7 +37,6 @@ public sealed class CP14SpawnRandomDemiplaneJob : Job<bool>
|
||||
double maxTime,
|
||||
IEntityManager entManager,
|
||||
ILogManager logManager,
|
||||
IMapManager mapManager,
|
||||
IPrototypeManager protoManager,
|
||||
DungeonSystem dungeon,
|
||||
MetaDataSystem metaData,
|
||||
@@ -50,7 +49,6 @@ public sealed class CP14SpawnRandomDemiplaneJob : Job<bool>
|
||||
CancellationToken cancellation = default) : base(maxTime, cancellation)
|
||||
{
|
||||
_entManager = entManager;
|
||||
_mapManager = mapManager;
|
||||
_prototypeManager = protoManager;
|
||||
_dungeon = dungeon;
|
||||
_metaData = metaData;
|
||||
@@ -67,16 +65,12 @@ public sealed class CP14SpawnRandomDemiplaneJob : Job<bool>
|
||||
protected override async Task<bool> Process()
|
||||
{
|
||||
_sawmill.Debug($"Spawning demiplane `{_config.Id}` with seed {_seed}");
|
||||
var grid = _mapManager.CreateGridEntity(DemiplaneMapUid);
|
||||
|
||||
_mapManager.DoMapInitialize(_demiplaneMapId);
|
||||
_mapManager.SetMapPaused(_demiplaneMapId, false);
|
||||
var gridComp = _entManager.EnsureComponent<MapGridComponent>(DemiplaneMapUid);
|
||||
|
||||
MetaDataComponent? metadata = null;
|
||||
DungeonConfigPrototype dungeonConfig = new();
|
||||
|
||||
_metaData.SetEntityName(DemiplaneMapUid, "TODO: MAP Expedition name generation");
|
||||
_metaData.SetEntityName(grid, "TODO: GRID Expedition name generation");
|
||||
_metaData.SetEntityName(DemiplaneMapUid, $"Demiplane {_config.Id} - {_seed}");
|
||||
|
||||
//Setup demiplane config
|
||||
var expeditionConfig = _prototypeManager.Index(_config);
|
||||
@@ -104,9 +98,9 @@ public sealed class CP14SpawnRandomDemiplaneJob : Job<bool>
|
||||
}
|
||||
|
||||
//Setup gravity
|
||||
var gravity = _entManager.EnsureComponent<GravityComponent>(grid);
|
||||
var gravity = _entManager.EnsureComponent<GravityComponent>(DemiplaneMapUid);
|
||||
gravity.Enabled = true;
|
||||
_entManager.Dirty(grid, gravity, metadata);
|
||||
_entManager.Dirty(DemiplaneMapUid, gravity, metadata);
|
||||
|
||||
// Setup default atmos
|
||||
var moles = new float[Atmospherics.AdjustedNumberOfGases];
|
||||
@@ -115,10 +109,13 @@ public sealed class CP14SpawnRandomDemiplaneJob : Job<bool>
|
||||
var mixture = new GasMixture(moles, Atmospherics.T20C);
|
||||
_entManager.System<AtmosphereSystem>().SetMapAtmosphere(DemiplaneMapUid, false, mixture);
|
||||
|
||||
_map.InitializeMap(_demiplaneMapId);
|
||||
_map.SetPaused(_demiplaneMapId, false);
|
||||
|
||||
//Spawn modified config
|
||||
_dungeon.GenerateDungeon(dungeonConfig,
|
||||
grid,
|
||||
grid,
|
||||
DemiplaneMapUid,
|
||||
gridComp,
|
||||
Vector2i.Zero,
|
||||
_seed); //TODO: Transform to Async
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public sealed partial class CP14FarmingSystem
|
||||
private void OnTakeEnergyFromLight(Entity<CP14PlantEnergyFromLightComponent> regeneration, ref CP14PlantUpdateEvent args)
|
||||
{
|
||||
var gainEnergy = false;
|
||||
var daylight = _dayCycle.UnderSunlight(regeneration);
|
||||
var daylight = true;//_dayCycle.UnderSunlight(regeneration);
|
||||
|
||||
if (regeneration.Comp.Daytime && daylight)
|
||||
gainEnergy = true;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
using Content.Server._CP14.DayCycle;
|
||||
using Content.Server._CP14.Farming.Components;
|
||||
using Content.Server.Destructible;
|
||||
using Content.Server.DoAfter;
|
||||
using Content.Server.Popups;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.Farming;
|
||||
using Content.Shared.Chemistry.EntitySystems;
|
||||
using Content.Shared.Damage;
|
||||
@@ -23,7 +21,6 @@ namespace Content.Server._CP14.Farming;
|
||||
public sealed partial class CP14FarmingSystem : CP14SharedFarmingSystem
|
||||
{
|
||||
[Dependency] private readonly DoAfterSystem _doAfter = default!;
|
||||
[Dependency] private readonly CP14DayCycleSystem _dayCycle = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly TransformSystem _transform = default!;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using Content.Server._CP14.DayCycle;
|
||||
using Content.Server._CP14.GameTicking.Rules.Components;
|
||||
using Content.Server._CP14.Vampire;
|
||||
using Content.Server.Atmos.Components;
|
||||
@@ -22,7 +21,6 @@ public sealed class CP14VampireRuleSystem : GameRuleSystem<CP14VampireRuleCompon
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly TemperatureSystem _temperature = default!;
|
||||
[Dependency] private readonly SharedPopupSystem _popup = default!;
|
||||
[Dependency] private readonly CP14DayCycleSystem _dayCycle = default!;
|
||||
[Dependency] private readonly FlammableSystem _flammable = default!;
|
||||
[Dependency] private readonly BodySystem _body = default!;
|
||||
|
||||
@@ -68,8 +66,9 @@ public sealed class CP14VampireRuleSystem : GameRuleSystem<CP14VampireRuleCompon
|
||||
|
||||
vampire.NextHeatTime = _timing.CurTime + vampire.HeatFrequency;
|
||||
|
||||
if (!_dayCycle.UnderSunlight(uid))
|
||||
continue;
|
||||
return;
|
||||
//if (!_dayCycle.UnderSunlight(uid))
|
||||
// continue;
|
||||
|
||||
_temperature.ChangeHeat(uid, vampire.HeatUnderSunTemperature);
|
||||
_popup.PopupEntity(Loc.GetString("cp14-heat-under-sun"), uid, uid, PopupType.SmallCaution);
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
using Content.Server._CP14.MagicEnergy.Components;
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.MagicEnergy.Components;
|
||||
using Content.Shared.Damage;
|
||||
using Robust.Shared.Map.Components;
|
||||
|
||||
namespace Content.Server._CP14.MagicEnergy;
|
||||
|
||||
public partial class CP14MagicEnergySystem
|
||||
{
|
||||
[Dependency] private readonly CP14SharedDayCycleSystem _dayCycle = default!;
|
||||
|
||||
private void InitializeDraw()
|
||||
{
|
||||
SubscribeLocalEvent<CP14MagicEnergyDrawComponent, MapInitEvent>(OnDrawMapInit);
|
||||
@@ -67,7 +65,18 @@ public partial class CP14MagicEnergySystem
|
||||
|
||||
draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay);
|
||||
|
||||
ChangeEnergy(uid, _dayCycle.UnderSunlight(uid) ? draw.DaylightEnergy : draw.DarknessEnergy, out _, out _, magicContainer, true);
|
||||
var daylight = false;
|
||||
|
||||
//if (TryComp<MapLightComponent>(Transform(uid).MapUid, out var mapLight))
|
||||
//{
|
||||
// var color = mapLight.AmbientLightColor;
|
||||
// var medium = (color.R + color.G + color.B) / 3f;
|
||||
//
|
||||
// if (medium > draw.LightThreshold)
|
||||
// daylight = true;
|
||||
//}
|
||||
|
||||
ChangeEnergy(uid, daylight ? draw.DaylightEnergy : draw.DarknessEnergy, out _, out _, magicContainer, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
namespace Content.Server._CP14.MapDamage;
|
||||
|
||||
/// <summary>
|
||||
/// can take damage from being directly on the map (not on the grid)
|
||||
/// </summary>
|
||||
[RegisterComponent, AutoGenerateComponentPause]
|
||||
public sealed partial class CP14DamageableByMapComponent : Component
|
||||
{
|
||||
[DataField, AutoPausedField]
|
||||
public TimeSpan NextDamageTime = TimeSpan.Zero;
|
||||
|
||||
[DataField]
|
||||
public bool Enabled = false;
|
||||
|
||||
[DataField]
|
||||
public EntityUid? CurrentMap;
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.FixedPoint;
|
||||
|
||||
namespace Content.Server._CP14.MapDamage;
|
||||
|
||||
/// <summary>
|
||||
/// The map deals damage to entities that are on it (not on the grid)
|
||||
/// </summary>
|
||||
[RegisterComponent]
|
||||
public sealed partial class CP14MapDamageComponent : Component
|
||||
{
|
||||
//Damage every second
|
||||
[DataField]
|
||||
public DamageSpecifier Damage = new()
|
||||
{
|
||||
DamageDict = new Dictionary<string, FixedPoint2>()
|
||||
{
|
||||
{"Asphyxiation", 5}
|
||||
}
|
||||
};
|
||||
|
||||
[DataField]
|
||||
public float StaminaDamage = 7f;
|
||||
}
|
||||
@@ -1,88 +0,0 @@
|
||||
using Content.Shared.Damage;
|
||||
using Content.Shared.Damage.Systems;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Server._CP14.MapDamage;
|
||||
|
||||
public sealed partial class CP14MapDamageSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
[Dependency] private readonly DamageableSystem _damageable = default!;
|
||||
[Dependency] private readonly StaminaSystem _stamina = default!;
|
||||
[Dependency] private readonly MobStateSystem _mobState = default!;
|
||||
|
||||
private EntityQuery<CP14MapDamageComponent> _mapQuery;
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_mapQuery = GetEntityQuery<CP14MapDamageComponent>();
|
||||
|
||||
SubscribeLocalEvent<CP14DamageableByMapComponent, EntParentChangedMessage>(OnParentChanged);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
var query = EntityQueryEnumerator<CP14DamageableByMapComponent, DamageableComponent, MobStateComponent>();
|
||||
while (query.MoveNext(out var uid, out var damage, out var damageable, out var mobState))
|
||||
{
|
||||
if (!damage.Enabled)
|
||||
continue;
|
||||
|
||||
if (damage.NextDamageTime > _timing.CurTime)
|
||||
continue;
|
||||
|
||||
damage.NextDamageTime = _timing.CurTime + TimeSpan.FromSeconds(2f);
|
||||
|
||||
if (damage.CurrentMap is null)
|
||||
continue;
|
||||
|
||||
if (!_mobState.IsAlive(uid, mobState))
|
||||
continue;
|
||||
|
||||
if (!_mapQuery.TryComp(damage.CurrentMap.Value, out var mapDamage))
|
||||
continue;
|
||||
|
||||
_damageable.TryChangeDamage(uid, mapDamage.Damage, damageable: damageable);
|
||||
_stamina.TakeStaminaDamage(uid, mapDamage.StaminaDamage);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnParentChanged(Entity<CP14DamageableByMapComponent> ent, ref EntParentChangedMessage args)
|
||||
{
|
||||
DisableDamage(ent);
|
||||
if (args.OldParent == null || TerminatingOrDeleted(ent))
|
||||
return;
|
||||
|
||||
var newParent = _transform.GetParentUid(ent);
|
||||
if (!TryComp<CP14MapDamageComponent>(newParent, out var mapDamage))
|
||||
return;
|
||||
|
||||
EnableDamage(ent, (newParent, mapDamage));
|
||||
}
|
||||
|
||||
private void DisableDamage(Entity<CP14DamageableByMapComponent> ent)
|
||||
{
|
||||
if (!ent.Comp.Enabled)
|
||||
return;
|
||||
|
||||
ent.Comp.Enabled = false;
|
||||
ent.Comp.CurrentMap = null;
|
||||
Dirty(ent);
|
||||
}
|
||||
|
||||
private void EnableDamage(Entity<CP14DamageableByMapComponent> ent, Entity<CP14MapDamageComponent> map)
|
||||
{
|
||||
if (ent.Comp.Enabled)
|
||||
return;
|
||||
|
||||
ent.Comp.Enabled = true;
|
||||
ent.Comp.CurrentMap = map;
|
||||
Dirty(ent);
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ public sealed partial class SunShadowCycleComponent : Component
|
||||
/// <summary>
|
||||
/// Time to have each direction applied. Will lerp from the current value to the next one.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
[AutoNetworkedField] //CP14 Remove DataField
|
||||
public List<(float Ratio, Vector2 Direction, float Alpha)> Directions = new()
|
||||
{
|
||||
(0f, new Vector2(0f, 3f), 0f),
|
||||
|
||||
@@ -6,12 +6,11 @@ namespace Content.Shared.Movement.Systems;
|
||||
/// <summary>
|
||||
/// Applies an occlusion shader for any relevant entities.
|
||||
/// </summary>
|
||||
public abstract partial class SharedFloorOcclusionSystem : EntitySystem //CP14 partial
|
||||
public abstract class SharedFloorOcclusionSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
CP14InitializeMapOccluder(); //CP14
|
||||
|
||||
SubscribeLocalEvent<FloorOccluderComponent, StartCollideEvent>(OnStartCollide);
|
||||
SubscribeLocalEvent<FloorOccluderComponent, EndCollideEvent>(OnEndCollide);
|
||||
|
||||
@@ -2,7 +2,7 @@ using System.Numerics;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Utility;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle.Components;
|
||||
namespace Content.Shared._CP14.CloudShadow;
|
||||
|
||||
/// <summary>
|
||||
/// If added to the map, renders cloud shadows on the map
|
||||
@@ -1,57 +0,0 @@
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.DayCycle.Prototypes;
|
||||
using Content.Shared.Storage.Components;
|
||||
using Content.Shared.Weather;
|
||||
using Robust.Shared.Map.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle;
|
||||
|
||||
public abstract class CP14SharedDayCycleSystem : EntitySystem
|
||||
{
|
||||
private static readonly ProtoId<CP14DayCyclePeriodPrototype> DayPeriod = "Day";
|
||||
|
||||
[Dependency] private readonly SharedMapSystem _maps = default!;
|
||||
[Dependency] private readonly SharedWeatherSystem _weather = default!;
|
||||
|
||||
private EntityQuery<MapGridComponent> _mapGridQuery;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_mapGridQuery = GetEntityQuery<MapGridComponent>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Checks to see if the specified entity is on the map where it's daytime.
|
||||
/// </summary>
|
||||
/// <param name="target">An entity being tested to see if it is in daylight</param>
|
||||
/// <param name="checkRoof">Checks if the tile covers the weather (the only "roof" factor at the moment)</param>
|
||||
public bool UnderSunlight(EntityUid target)
|
||||
{
|
||||
if (HasComp<InsideEntityStorageComponent>(target))
|
||||
return false;
|
||||
|
||||
var xform = Transform(target);
|
||||
if (!TryComp<CP14DayCycleComponent>(xform.MapUid, out var dayCycle))
|
||||
return false;
|
||||
|
||||
var day = dayCycle.CurrentPeriod == DayPeriod;
|
||||
|
||||
if (!TryComp<MapGridComponent>(xform.GridUid, out var mapGrid))
|
||||
return day;
|
||||
|
||||
var grid = xform.GridUid;
|
||||
if (grid is null)
|
||||
return day;
|
||||
|
||||
if (!_mapGridQuery.TryComp(grid, out var gridComp))
|
||||
return day;
|
||||
|
||||
if (!_weather.CanWeatherAffect(grid.Value, gridComp, _maps.GetTileRef(xform.GridUid.Value, mapGrid, xform.Coordinates)))
|
||||
return false;
|
||||
|
||||
return day;
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
using Content.Shared._CP14.DayCycle.Prototypes;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Stores all the necessary data for the day and night cycle system to work.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause, Access(typeof(CP14SharedDayCycleSystem))]
|
||||
public sealed partial class CP14DayCycleComponent : Component
|
||||
{
|
||||
[ViewVariables]
|
||||
public int NextTimeEntryIndex
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IndexedCycle is null)
|
||||
return 0;
|
||||
return CurrentTimeEntryIndex + 1 >= IndexedCycle.TimeEntries.Count ? 0 : CurrentTimeEntryIndex + 1;
|
||||
}
|
||||
}
|
||||
|
||||
[ViewVariables]
|
||||
public DayCycleEntry? CurrentTimeEntry => IndexedCycle?.TimeEntries[CurrentTimeEntryIndex];
|
||||
|
||||
[ViewVariables]
|
||||
public DayCycleEntry? NextCurrentTimeEntry => IndexedCycle?.TimeEntries[NextTimeEntryIndex];
|
||||
|
||||
[ViewVariables]
|
||||
public Color? StartColor => CurrentTimeEntry?.Color;
|
||||
|
||||
[ViewVariables]
|
||||
public Color? EndColor => NextCurrentTimeEntry?.Color;
|
||||
|
||||
[ViewVariables]
|
||||
public ProtoId<CP14DayCyclePeriodPrototype>? CurrentPeriod => CurrentTimeEntry?.Period;
|
||||
|
||||
public CP14DayCyclePrototype? IndexedCycle;
|
||||
|
||||
[DataField, AutoNetworkedField]
|
||||
public ProtoId<CP14DayCyclePrototype> CycleProto = "Default";
|
||||
|
||||
[DataField, ViewVariables, AutoNetworkedField]
|
||||
public int CurrentTimeEntryIndex;
|
||||
|
||||
[DataField, ViewVariables, AutoNetworkedField, AutoPausedField]
|
||||
public TimeSpan EntryStartTime;
|
||||
|
||||
[DataField, ViewVariables, AutoNetworkedField, AutoPausedField]
|
||||
public TimeSpan EntryEndTime;
|
||||
|
||||
[DataField]
|
||||
public bool StartWithRandomEntry = true;
|
||||
}
|
||||
|
||||
[DataDefinition, NetSerializable, Serializable]
|
||||
public readonly partial record struct DayCycleEntry()
|
||||
{
|
||||
public DayCycleEntry(Color _color, TimeSpan _duration, string _period) : this()
|
||||
{
|
||||
Color = _color;
|
||||
Duration = _duration;
|
||||
Period = _period;
|
||||
}
|
||||
/// <summary>
|
||||
/// The color of the world's lights at the beginning of this time of day
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public Color Color { get; init; } = Color.White;
|
||||
|
||||
/// <summary>
|
||||
/// Duration of color shift to the next time of day
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public TimeSpan Duration { get; init; } = TimeSpan.FromSeconds(60);
|
||||
|
||||
[DataField]
|
||||
public ProtoId<CP14DayCyclePeriodPrototype> Period { get; init; } = "Day";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Event raised on map entity, wen day cycle changed.
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public readonly record struct DayCycleChangedEvent(DayCycleEntry? Entry);
|
||||
@@ -1,13 +0,0 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle.Prototypes;
|
||||
|
||||
[Prototype("CP14DayCyclePeriod")]
|
||||
public sealed class CP14DayCyclePeriodPrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
[DataField(required: true)]
|
||||
public LocId Name = default!;
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.DayCycle.Prototypes;
|
||||
|
||||
[Prototype("CP14DayCycle")]
|
||||
public sealed class CP14DayCyclePrototype : IPrototype
|
||||
{
|
||||
[IdDataField]
|
||||
public string ID { get; } = string.Empty;
|
||||
|
||||
[DataField(required: true), ViewVariables]
|
||||
public List<DayCycleEntry> TimeEntries = new();
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Shared.Destructible.Thresholds;
|
||||
using Content.Shared.Procedural;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -13,10 +14,10 @@ public sealed partial class CP14DemiplaneLocationPrototype : IPrototype
|
||||
[IdDataField] public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// Location Tier. Can be generated only in demiplane keys with the corresponding tier
|
||||
/// The difficulty levels at which this location can be generated.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public int Tier = 1;
|
||||
public MinMax Levels = new(1, 10);
|
||||
|
||||
[DataField(required: true)]
|
||||
public ProtoId<DungeonConfigPrototype> LocationConfig;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Shared.Destructible.Thresholds;
|
||||
using Content.Shared.Procedural;
|
||||
using Content.Shared.Tag;
|
||||
using Robust.Shared.Prototypes;
|
||||
@@ -13,10 +14,10 @@ public sealed partial class CP14DemiplaneModifierPrototype : IPrototype
|
||||
[IdDataField] public string ID { get; } = default!;
|
||||
|
||||
/// <summary>
|
||||
/// Modifier Tier. Can be generated only in demiplane keys with the corresponding tier
|
||||
/// The difficulty levels at which this modifier can be generated.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<int> Tiers = new();
|
||||
public MinMax Levels = new(1, 10);
|
||||
|
||||
/// <summary>
|
||||
/// Each modifier belongs to specific categories. Used by the generator to determine what to generate
|
||||
|
||||
@@ -23,6 +23,9 @@ public sealed partial class CP14MagicEnergyPhotosynthesisComponent : Component
|
||||
[DataField]
|
||||
public float Delay = 3f;
|
||||
|
||||
[DataField]
|
||||
public float LightThreshold = 100f;
|
||||
|
||||
/// <summary>
|
||||
/// the time of the next magic energy change
|
||||
/// </summary>
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.DayCycle.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared._CP14.MagicRitual.Requirements;
|
||||
|
||||
/// <summary>
|
||||
/// Requires specific daytime
|
||||
/// </summary>
|
||||
public sealed partial class RequiredTime : CP14RitualRequirement
|
||||
{
|
||||
[DataField]
|
||||
public ProtoId<CP14DayCyclePeriodPrototype> TimePeriod;
|
||||
|
||||
public override string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys)
|
||||
{
|
||||
if (!prototype.TryIndex(TimePeriod, out var indexed))
|
||||
return null;
|
||||
|
||||
return Loc.GetString("cp14-ritual-required-time", ("period", Loc.GetString(indexed.Name)));
|
||||
}
|
||||
|
||||
public override bool Check(EntityManager entManager, Entity<CP14MagicRitualPhaseComponent> phaseEnt, float stability)
|
||||
{
|
||||
var transform = entManager.System<SharedTransformSystem>();
|
||||
var map = transform.GetMap(phaseEnt.Owner);
|
||||
|
||||
if (!entManager.TryGetComponent<CP14DayCycleComponent>(map, out var dayCycle))
|
||||
return false;
|
||||
|
||||
return TimePeriod == dayCycle.CurrentPeriod;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
using Content.Shared.Movement.Components;
|
||||
|
||||
namespace Content.Shared.Movement.Systems;
|
||||
|
||||
public abstract partial class SharedFloorOcclusionSystem
|
||||
{
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
private void CP14InitializeMapOccluder()
|
||||
{
|
||||
SubscribeLocalEvent<FloorOcclusionComponent, EntParentChangedMessage>(OnParentChanged);
|
||||
}
|
||||
|
||||
private void OnParentChanged(Entity<FloorOcclusionComponent> ent, ref EntParentChangedMessage args)
|
||||
{
|
||||
if (args.OldParent == null || TerminatingOrDeleted(ent))
|
||||
return;
|
||||
|
||||
if (ent.Comp.Colliding.Contains(args.OldParent.Value))
|
||||
ent.Comp.Colliding.Remove(args.OldParent.Value);
|
||||
|
||||
var newParent = _transform.GetParentUid(ent);
|
||||
if (HasComp<CP14MapFloorOccluderComponent>(newParent))
|
||||
{
|
||||
if (!ent.Comp.Colliding.Contains(newParent))
|
||||
ent.Comp.Colliding.Add(newParent);
|
||||
}
|
||||
|
||||
Dirty(ent);
|
||||
SetEnabled(ent);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Movement.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Applies floor occlusion to any <see cref="FloorOcclusionComponent"/> that reparent to this map entity.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class CP14MapFloorOccluderComponent : Component
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,8 +1,5 @@
|
||||
using Content.Shared._CP14.DayCycle;
|
||||
using Content.Shared._CP14.DayCycle.Components;
|
||||
using Content.Shared._CP14.DayCycle.Prototypes;
|
||||
using Content.Shared.Random.Rules;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Map.Components;
|
||||
|
||||
namespace Content.Shared._CP14.Random.Rules;
|
||||
|
||||
@@ -11,16 +8,20 @@ namespace Content.Shared._CP14.Random.Rules;
|
||||
/// </summary>
|
||||
public sealed partial class CP14TimePeriod : RulesRule
|
||||
{
|
||||
[DataField] private List<ProtoId<CP14DayCyclePeriodPrototype>> Periods = new();
|
||||
[DataField]
|
||||
public float Threshold = 100f;
|
||||
|
||||
public override bool Check(EntityManager entManager, EntityUid uid)
|
||||
{
|
||||
var transform = entManager.System<SharedTransformSystem>();
|
||||
|
||||
var map = transform.GetMap(uid);
|
||||
if (!entManager.TryGetComponent<CP14DayCycleComponent>(map, out var dayCycle))
|
||||
if (!entManager.TryGetComponent<MapLightComponent>(map, out var light))
|
||||
return false;
|
||||
|
||||
return dayCycle.CurrentPeriod is not null && Periods.Contains(dayCycle.CurrentPeriod.Value);
|
||||
var lightColor = light.AmbientLightColor;
|
||||
var medium = lightColor.R + lightColor.G + lightColor.B / 3f;
|
||||
|
||||
return medium > Threshold;
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ meta:
|
||||
time: 03/03/2025 20:01:58
|
||||
entityCount: 467
|
||||
maps:
|
||||
- 1
|
||||
- 2
|
||||
grids:
|
||||
- 2
|
||||
orphans: []
|
||||
@@ -28,7 +28,7 @@ tilemap:
|
||||
entities:
|
||||
- proto: ""
|
||||
entities:
|
||||
- uid: 1
|
||||
- uid: 2
|
||||
components:
|
||||
- type: MetaData
|
||||
name: Map Entity
|
||||
@@ -39,10 +39,24 @@ entities:
|
||||
- type: GridTree
|
||||
- type: MovedGrids
|
||||
- type: Broadphase
|
||||
- type: OccluderTree
|
||||
- type: Roof
|
||||
data: {}
|
||||
- type: CP14CloudShadows
|
||||
- type: CP14MapFloorOccluder
|
||||
- type: MapLight
|
||||
- type: LightCycle
|
||||
- type: SunShadow
|
||||
- type: SunShadowCycle
|
||||
- type: Biome
|
||||
forcedMarkerLayers: []
|
||||
markerLayers: []
|
||||
loadedMarkers: {}
|
||||
pendingMarkers: {}
|
||||
loadedChunks: []
|
||||
entities: {}
|
||||
decals: {}
|
||||
modifiedTiles: {}
|
||||
template: CP14SandOceanFill
|
||||
layers: []
|
||||
- type: MapAtmosphere
|
||||
space: False
|
||||
mixture:
|
||||
@@ -62,23 +76,8 @@ entities:
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- type: CP14DayCycle
|
||||
- type: Gravity
|
||||
gravityShakeSound: !type:SoundPathSpecifier
|
||||
path: /Audio/Effects/alert.ogg
|
||||
inherent: True
|
||||
enabled: True
|
||||
- type: Parallax
|
||||
parallax: CP14Ocean
|
||||
- uid: 2
|
||||
components:
|
||||
- type: MetaData
|
||||
name: grid
|
||||
- type: Transform
|
||||
parent: 1
|
||||
- type: BecomesStation
|
||||
id: Dev
|
||||
- type: Roof
|
||||
- type: MapGrid
|
||||
chunks:
|
||||
0,0:
|
||||
@@ -113,7 +112,6 @@ entities:
|
||||
ind: 0,-2
|
||||
tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
version: 6
|
||||
- type: Broadphase
|
||||
- type: Physics
|
||||
bodyStatus: InAir
|
||||
angularDamping: 0.05
|
||||
@@ -129,131 +127,12 @@ entities:
|
||||
- type: Gravity
|
||||
gravityShakeSound: !type:SoundPathSpecifier
|
||||
path: /Audio/Effects/alert.ogg
|
||||
inherent: True
|
||||
enabled: True
|
||||
- type: DecalGrid
|
||||
chunkCollection:
|
||||
version: 2
|
||||
nodes: []
|
||||
- type: GridAtmosphere
|
||||
version: 2
|
||||
data:
|
||||
tiles:
|
||||
0,0:
|
||||
0: 65521
|
||||
0,-1:
|
||||
0: 65535
|
||||
-1,0:
|
||||
0: 65535
|
||||
0,1:
|
||||
0: 61951
|
||||
-1,1:
|
||||
0: 65535
|
||||
0,2:
|
||||
0: 65519
|
||||
-1,2:
|
||||
0: 65519
|
||||
1,0:
|
||||
0: 65520
|
||||
1,1:
|
||||
0: 61695
|
||||
1,2:
|
||||
0: 65535
|
||||
1,-1:
|
||||
0: 65535
|
||||
2,0:
|
||||
0: 65455
|
||||
2,1:
|
||||
0: 65455
|
||||
2,2:
|
||||
0: 30591
|
||||
2,-1:
|
||||
0: 65535
|
||||
3,0:
|
||||
0: 4368
|
||||
0,-4:
|
||||
0: 61440
|
||||
0,-3:
|
||||
0: 65535
|
||||
-1,-4:
|
||||
0: 32768
|
||||
-1,-3:
|
||||
0: 65535
|
||||
0,-2:
|
||||
0: 65519
|
||||
-1,-2:
|
||||
0: 65519
|
||||
-1,-1:
|
||||
0: 65535
|
||||
1,-4:
|
||||
0: 12288
|
||||
1,-3:
|
||||
0: 65535
|
||||
1,-2:
|
||||
0: 65407
|
||||
2,-3:
|
||||
0: 4368
|
||||
2,-2:
|
||||
0: 29489
|
||||
3,-1:
|
||||
0: 272
|
||||
-4,-3:
|
||||
0: 65256
|
||||
-4,-2:
|
||||
0: 65535
|
||||
-5,-2:
|
||||
0: 35968
|
||||
-4,-1:
|
||||
0: 61439
|
||||
-5,-1:
|
||||
0: 8
|
||||
-4,0:
|
||||
0: 65535
|
||||
-3,-3:
|
||||
0: 65523
|
||||
-3,-2:
|
||||
0: 65535
|
||||
-3,-1:
|
||||
0: 65535
|
||||
-3,0:
|
||||
0: 65521
|
||||
-2,-3:
|
||||
0: 65534
|
||||
-2,-2:
|
||||
0: 65535
|
||||
-2,-1:
|
||||
0: 65535
|
||||
-5,0:
|
||||
0: 2176
|
||||
-4,1:
|
||||
0: 61166
|
||||
-4,2:
|
||||
0: 61166
|
||||
-3,1:
|
||||
0: 61951
|
||||
-3,2:
|
||||
0: 65535
|
||||
-2,0:
|
||||
0: 65520
|
||||
-2,1:
|
||||
0: 61695
|
||||
-2,2:
|
||||
0: 65535
|
||||
uniqueMixes:
|
||||
- volume: 2500
|
||||
temperature: 293.15
|
||||
moles:
|
||||
- 21.824879
|
||||
- 82.10312
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
chunkSize: 4
|
||||
- type: GasTileOverlay
|
||||
- type: RadiationGridResistance
|
||||
- type: GravityShake
|
||||
|
||||
@@ -50,7 +50,6 @@ entities:
|
||||
- type: Broadphase
|
||||
- type: OccluderTree
|
||||
- type: CP14CloudShadows
|
||||
- type: CP14MapFloorOccluder
|
||||
- type: MapLight
|
||||
- type: MapAtmosphere
|
||||
space: False
|
||||
@@ -71,13 +70,12 @@ entities:
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- type: CP14DayCycle
|
||||
- type: LightCycle
|
||||
- type: CP14WeatherController
|
||||
entries:
|
||||
- visuals: CP14Mist
|
||||
- visuals: CP14Rain
|
||||
- visuals: CP14Storm
|
||||
- type: CP14MapDamage
|
||||
- type: LoadedMap
|
||||
- type: Parallax
|
||||
parallax: CP14Ocean
|
||||
|
||||
@@ -25,7 +25,6 @@ entities:
|
||||
- type: Broadphase
|
||||
- type: OccluderTree
|
||||
- type: CP14CloudShadows
|
||||
- type: CP14MapFloorOccluder
|
||||
- type: MapLight
|
||||
- type: MapAtmosphere
|
||||
space: False
|
||||
@@ -46,7 +45,7 @@ entities:
|
||||
- 0
|
||||
- 0
|
||||
- 0
|
||||
- type: CP14DayCycle
|
||||
- type: LightCycle
|
||||
- type: Gravity
|
||||
gravityShakeSound: !type:SoundPathSpecifier
|
||||
path: /Audio/Effects/alert.ogg
|
||||
|
||||
@@ -25,7 +25,7 @@ entities:
|
||||
- type: OccluderTree
|
||||
- type: CP14CloudShadows
|
||||
- type: MapLight
|
||||
- type: CP14DayCycle
|
||||
- type: LightCycle
|
||||
- type: Gravity
|
||||
gravityShakeSound: !type:SoundPathSpecifier
|
||||
path: /Audio/Effects/alert.ogg
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
- type: CP14DayCycle #
|
||||
id: Default
|
||||
timeEntries:
|
||||
- color: '#754A4A' #Dawn
|
||||
duration: 145
|
||||
- color: '#E0BA87' #
|
||||
duration: 145
|
||||
- color: '#BFEEFF' #Day
|
||||
duration: 145
|
||||
- color: '#385163' #Evening
|
||||
duration: 145
|
||||
period: Night
|
||||
- color: '#060D12' #Night
|
||||
duration: 80
|
||||
period: Night
|
||||
- color: '#000000' #BLACK NIGHT
|
||||
duration: 160
|
||||
period: Night
|
||||
- color: '#120906' #Night
|
||||
duration: 80
|
||||
period: Night
|
||||
|
||||
- type: CP14DayCycle
|
||||
id: CP14DemiplaneEternalDay
|
||||
timeEntries:
|
||||
- color: '#754A4A' #Dawn
|
||||
duration: 145
|
||||
- color: '#E0BA87' #
|
||||
duration: 145
|
||||
- color: '#BFEEFF' #Day
|
||||
duration: 145
|
||||
- color: '#385163' #Evening
|
||||
duration: 145
|
||||
@@ -1,15 +0,0 @@
|
||||
- type: CP14DayCyclePeriod
|
||||
id: Sunrise
|
||||
name: cp14-daycycle-sunrise
|
||||
|
||||
- type: CP14DayCyclePeriod
|
||||
id: Day
|
||||
name: cp14-daycycle-day
|
||||
|
||||
- type: CP14DayCyclePeriod
|
||||
id: Night
|
||||
name: cp14-daycycle-night
|
||||
|
||||
- type: CP14DayCyclePeriod
|
||||
id: Evening
|
||||
name: cp14-daycycle-evening
|
||||
@@ -226,7 +226,6 @@
|
||||
weightlessAcceleration: 0.8 # Slow swimming
|
||||
weightlessFriction: 2
|
||||
weightlessModifier: 0.6
|
||||
- type: CP14DamageableByMap
|
||||
- type: Hunger
|
||||
starvationDamage:
|
||||
types:
|
||||
|
||||
@@ -73,13 +73,13 @@
|
||||
spawned:
|
||||
- id: CP14FoodMeatHuman # Replace it with silva meat, heh.
|
||||
amount: 5
|
||||
- type: CP14MagicEnergyPhotosynthesis # Silva special feature
|
||||
#- type: CP14MagicEnergyPhotosynthesis # Silva special feature #Disabled until sunlight fixed
|
||||
- type: CP14SpellStorage
|
||||
grantAccessToSelf: true
|
||||
spells:
|
||||
- CP14ActionSpellPlantGrowthSilva
|
||||
- type: CP14MagicEnergyDraw
|
||||
enable: false
|
||||
#- type: CP14MagicEnergyDraw #Enabled default mana regen until sunlight fixed
|
||||
# enable: false
|
||||
- type: Body
|
||||
prototype: CP14Silva
|
||||
requiredLegs: 2
|
||||
|
||||
@@ -21,11 +21,10 @@
|
||||
- type: entity
|
||||
id: CP14DemiplaneKeyT1
|
||||
parent: CP14BaseSubdimensionalKey
|
||||
suffix: T1
|
||||
suffix: Level 3
|
||||
components:
|
||||
- type: CP14DemiplaneGeneratorData
|
||||
tiersContent:
|
||||
1: 1
|
||||
level: 3
|
||||
limits:
|
||||
Reward: 1
|
||||
Danger: 1
|
||||
@@ -39,16 +38,14 @@
|
||||
- type: entity
|
||||
id: CP14DemiplaneKeyT2
|
||||
parent: CP14BaseSubdimensionalKey
|
||||
suffix: T2
|
||||
suffix: Level 6
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: core
|
||||
color: red
|
||||
- type: CP14DemiplaneGeneratorData
|
||||
tiersContent:
|
||||
1: 0.6 # We dont have lot t2 content now. In future, decrease to 0.33
|
||||
2: 1
|
||||
level: 6
|
||||
limits:
|
||||
Reward: 1
|
||||
Danger: 1
|
||||
@@ -57,31 +54,4 @@
|
||||
MapLight: 1
|
||||
selectedModifiers:
|
||||
- EntryRoom
|
||||
- Exit
|
||||
|
||||
- type: entity
|
||||
id: CP14DemiplaneKeyOmega
|
||||
parent: CP14BaseSubdimensionalKey
|
||||
suffix: Omega
|
||||
components:
|
||||
- type: Sprite
|
||||
scale: 2, 2
|
||||
layers:
|
||||
- state: core
|
||||
color: red
|
||||
- type: CP14DemiplaneGeneratorData
|
||||
tiersContent:
|
||||
1: 0.6 # We dont have lot t2 content now. In future, decrease to 0.33
|
||||
2: 1
|
||||
limits:
|
||||
Reward: 5
|
||||
Danger: 5
|
||||
Fun: 1
|
||||
Weather: 1
|
||||
MapLight: 1
|
||||
location: T1OmegaTest
|
||||
autoRifts:
|
||||
- CP14DemiplanePassway
|
||||
selectedModifiers:
|
||||
- EntryRoom
|
||||
- Exit
|
||||
@@ -1,6 +1,6 @@
|
||||
- type: entity
|
||||
parent: BaseStructure
|
||||
id: CP14FloorWater
|
||||
id: CP14FloorWaterOptimized
|
||||
name: water
|
||||
description: A trough of plain water. Clean enough for consumption
|
||||
categories: [ ForkFiltered ]
|
||||
@@ -48,6 +48,24 @@
|
||||
collection: FootstepWater
|
||||
params:
|
||||
volume: 8
|
||||
- type: Tag
|
||||
tags:
|
||||
- HideContextMenu
|
||||
- CP14AmbientWater
|
||||
- type: StepTrigger
|
||||
requiredTriggeredSpeed: 0
|
||||
intersectRatio: 0.1
|
||||
blacklist:
|
||||
tags:
|
||||
- Catwalk
|
||||
- type: TileEntityEffect
|
||||
effects:
|
||||
- !type:ExtinguishReaction
|
||||
|
||||
- type: entity
|
||||
parent: CP14FloorWaterOptimized
|
||||
id: CP14FloorWater
|
||||
components:
|
||||
- type: DrawableSolution
|
||||
solution: pool
|
||||
- type: SolutionContainerManager
|
||||
@@ -61,19 +79,6 @@
|
||||
solution: pool
|
||||
- type: Drink
|
||||
solution: pool
|
||||
- type: Tag
|
||||
tags:
|
||||
- HideContextMenu
|
||||
- CP14AmbientWater
|
||||
- type: StepTrigger
|
||||
requiredTriggeredSpeed: 0
|
||||
intersectRatio: 0.1
|
||||
blacklist:
|
||||
tags:
|
||||
- Catwalk # Если ты проходишь по мостику над водой, то ты не должен потушится
|
||||
- type: TileEntityEffect
|
||||
effects:
|
||||
- !type:ExtinguishReaction
|
||||
- type: RandomSpawner
|
||||
prototypes:
|
||||
- CP14GatherableChromiumSlime
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplanePlatingMaskBorder
|
||||
layers:
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 140, 140
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 1
|
||||
layers:
|
||||
- tile: Plating
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.010
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
@@ -1,139 +0,0 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1OmegaTest
|
||||
tier: 1
|
||||
locationConfig: CP14OmegaTest
|
||||
name: cp14-demiplane-location-cave
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
- CP14DemiplaneHerbals
|
||||
- CP14DemiplaneWater
|
||||
- CP14DemiplaneAnimalsSwamp
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14OmegaTest
|
||||
layers:
|
||||
#Masks
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneOmegaPlatingMaskBorder
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneOmegaCavesFloorMaskStone
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneOmegaCavesFloorMaskAir
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneOmegaCavesFloorMaskAir2
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneOmegaCavesFloorMaskAir3
|
||||
# Biomes
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesIndestructibleFill
|
||||
tileMask:
|
||||
- Plating
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesGeneric
|
||||
tileMask:
|
||||
- CP14FloorSand
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14Grassland
|
||||
tileMask:
|
||||
- CP14FloorGrass
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14LeafMaze
|
||||
tileMask:
|
||||
- CP14FloorSnow
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14SwampFill
|
||||
tileMask:
|
||||
- CP14FloorGrassTall
|
||||
|
||||
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneOmegaPlatingMaskBorder
|
||||
layers:
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 260, 260
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 1
|
||||
layers:
|
||||
- tile: Plating
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.010
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneOmegaCavesFloorMaskStone
|
||||
layers:
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 200, 200
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.9
|
||||
layers:
|
||||
- tile: CP14FloorSand
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.010
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneOmegaCavesFloorMaskAir
|
||||
layers:
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 100, 100
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.7
|
||||
layers:
|
||||
- tile: CP14FloorGrass
|
||||
threshold: 0.60
|
||||
noise:
|
||||
frequency: 0.020
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneOmegaCavesFloorMaskAir2
|
||||
layers:
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 80
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
- tile: CP14FloorSnow
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.030
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneOmegaCavesFloorMaskAir3
|
||||
layers:
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 100, 100
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.4
|
||||
layers:
|
||||
- tile: CP14FloorGrassTall
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.045
|
||||
noiseType: OpenSimplex2
|
||||
fractalType: FBm
|
||||
octaves: 5
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
@@ -1,27 +1,26 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1Caves
|
||||
tier: 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
locationConfig: CP14DemiplaneCaves
|
||||
name: cp14-demiplane-location-cave
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
components:
|
||||
- type: Biome
|
||||
template: CP14CavesIndestructibleFill
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneCaves
|
||||
layers:
|
||||
# Masks
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplanePlatingMaskBorder
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesFloorMaskStone
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesFloorMaskAir
|
||||
# Biomes
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesIndestructibleFill
|
||||
tileMask:
|
||||
- Plating
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesGeneric
|
||||
tileMask:
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1GrasslandIsland
|
||||
tier: 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
locationConfig: CP14DemiplaneGrasslandIsland
|
||||
name: cp14-demiplane-location-grassland-island
|
||||
tags:
|
||||
@@ -11,11 +13,12 @@
|
||||
components:
|
||||
- type: MapLight
|
||||
ambientLightColor: "#BFEEFFFF"
|
||||
- type: CP14MapFloorOccluder
|
||||
- type: CP14MapDamage
|
||||
- type: Parallax
|
||||
parallax: CP14Ocean
|
||||
- type: CP14CloudShadows
|
||||
- type: Biome
|
||||
template: CP14IceOceanFill
|
||||
- type: SunShadow
|
||||
- type: SunShadowCycle
|
||||
- type: Roof
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneGrasslandIsland
|
||||
|
||||
@@ -1,28 +1,27 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1IceCaves
|
||||
tier: 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
locationConfig: CP14DemiplaneIceCaves
|
||||
name: cp14-demiplane-location-ice-cave
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
- CP14DemiplaneCold
|
||||
components:
|
||||
- type: Biome
|
||||
template: CP14IceChasmFill
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneIceCaves
|
||||
layers:
|
||||
# Masks
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplanePlatingMaskBorder
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesFloorMaskStone
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesFloorMaskAir
|
||||
# Biomes
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesIndestructibleFill
|
||||
tileMask:
|
||||
- Plating
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14IceCavesGeneric
|
||||
tileMask:
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1SnowIsland
|
||||
tier: 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
locationConfig: CP14DemiplaneSnowIsland
|
||||
name: cp14-demiplane-location-snow-island
|
||||
tags:
|
||||
@@ -11,11 +13,12 @@
|
||||
components:
|
||||
- type: MapLight
|
||||
ambientLightColor: "#BFEEFFFF"
|
||||
- type: CP14MapFloorOccluder
|
||||
- type: CP14MapDamage
|
||||
- type: Parallax
|
||||
parallax: CP14Ocean
|
||||
- type: CP14CloudShadows
|
||||
- type: Biome
|
||||
template: CP14IceOceanFill
|
||||
- type: SunShadow
|
||||
- type: SunShadowCycle
|
||||
- type: Roof
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneSnowIsland
|
||||
|
||||
@@ -1,19 +1,22 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1CavesRing
|
||||
tier: 2
|
||||
levels:
|
||||
min: 3
|
||||
max: 6
|
||||
locationConfig: CP14DemiplaneCavesRing
|
||||
name: cp14-demiplane-location-cave
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
- CP14DemiplanePeacefulAnimals
|
||||
components:
|
||||
- type: Biome
|
||||
template: CP14LavaOceanFill
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneCavesRing
|
||||
layers:
|
||||
# Masks
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplanePlatingMaskBorder
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesRingFloorMaskStone
|
||||
- !type:PrototypeDunGen
|
||||
@@ -23,10 +26,6 @@
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesRingFloorMaskBorderCenter
|
||||
# Biomes
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesIndestructibleFill
|
||||
tileMask:
|
||||
- Plating
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesGeneric
|
||||
tileMask:
|
||||
@@ -96,9 +95,9 @@
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 50, 50
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.9
|
||||
blendWeight: 0.8
|
||||
layers:
|
||||
- tile: Plating
|
||||
- tile: Space
|
||||
threshold: 0.50
|
||||
noise:
|
||||
frequency: 0.010
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1SwampGeode
|
||||
tier: 1
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
locationConfig: CP14DemiplaneSwampGeode
|
||||
name: cp14-demiplane-location-cave-grass
|
||||
tags:
|
||||
@@ -14,17 +16,11 @@
|
||||
id: CP14DemiplaneSwampGeode
|
||||
layers:
|
||||
# Masks
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplanePlatingMaskBorder
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneGrassGeodeFloorMaskStone
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneGrassGeodeFloorMaskAir
|
||||
# Biomes
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesIndestructibleFill
|
||||
tileMask:
|
||||
- Plating
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14SwampFill
|
||||
tileMask:
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1GrasslandIslandRing
|
||||
tier: 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
locationConfig: CP14DemiplaneGrasslandIslandRing
|
||||
name: cp14-demiplane-location-grassland-island
|
||||
tags:
|
||||
@@ -10,11 +12,12 @@
|
||||
components:
|
||||
- type: MapLight
|
||||
ambientLightColor: "#BFEEFFFF"
|
||||
- type: CP14MapFloorOccluder
|
||||
- type: CP14MapDamage
|
||||
- type: Parallax
|
||||
parallax: CP14Ocean
|
||||
- type: CP14CloudShadows
|
||||
- type: Biome
|
||||
template: CP14SandOceanFill
|
||||
- type: SunShadow
|
||||
- type: SunShadowCycle
|
||||
- type: Roof
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneGrasslandIslandRing
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
- type: cp14DemiplaneLocation
|
||||
id: T1LeafMaze
|
||||
tier: 1
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
locationConfig: CP14DemiplaneLeafMaze
|
||||
name: cp14-demiplane-location-leaf-maze
|
||||
tags:
|
||||
@@ -9,22 +11,25 @@
|
||||
- CP14DemiplanePeacefulAnimals
|
||||
- CP14DemiplaneWater
|
||||
- CP14DemiplaneAnimalsSwamp
|
||||
components:
|
||||
- type: MapLight
|
||||
ambientLightColor: "#BFEEFFFF"
|
||||
- type: Biome
|
||||
template: CP14CavesIndestructibleFill
|
||||
- type: SunShadow
|
||||
- type: SunShadowCycle
|
||||
- type: Roof
|
||||
- type: CP14CloudShadows
|
||||
|
||||
- type: dungeonConfig
|
||||
id: CP14DemiplaneLeafMaze
|
||||
layers:
|
||||
# Masks
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplanePlatingMaskBorder
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesFloorMaskStone
|
||||
- !type:PrototypeDunGen
|
||||
proto: CP14DemiplaneCavesFloorMaskAir
|
||||
# Biomes
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14CavesIndestructibleFill
|
||||
tileMask:
|
||||
- Plating
|
||||
- !type:BiomeDunGen
|
||||
biomeTemplate: CP14LeafMaze
|
||||
tileMask:
|
||||
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Chasm
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
name: cp14-modifier-chasm
|
||||
generationWeight: 0.6
|
||||
categories:
|
||||
@@ -24,10 +23,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Lava
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
generationWeight: 0.3
|
||||
categories:
|
||||
Danger: 0.33
|
||||
@@ -47,9 +45,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Explosive
|
||||
tiers:
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 7
|
||||
max: 10
|
||||
name: cp14-modifier-explosive
|
||||
generationWeight: 0.25
|
||||
categories:
|
||||
@@ -63,9 +61,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: ShadowKudzuDebug
|
||||
tiers:
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 7
|
||||
max: 10
|
||||
name: cp14-modifier-shadow-kudzu
|
||||
categories:
|
||||
Danger: 0.3
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: EnemyZombie
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
name: cp14-modifier-zombie
|
||||
generationWeight: 1.5
|
||||
categories:
|
||||
@@ -17,9 +18,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: EnemyDyno
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 3
|
||||
max: 8
|
||||
name: cp14-modifier-dyno
|
||||
categories:
|
||||
Danger: 0.4
|
||||
@@ -35,9 +36,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MonsterMosquito
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
name: cp14-modifier-dyno
|
||||
categories:
|
||||
Danger: 0.2
|
||||
@@ -52,8 +53,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: SmallHydra
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
name: cp14-modifier-dyno
|
||||
categories:
|
||||
Danger: 0.3
|
||||
@@ -68,9 +70,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: EnemySkeleton
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 3
|
||||
max: 10
|
||||
name: cp14-modifier-skeleton
|
||||
generationWeight: 1.5
|
||||
categories:
|
||||
@@ -86,8 +88,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: EnemyMole
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 6
|
||||
max: 10
|
||||
name: cp14-modifier-mole
|
||||
categories:
|
||||
Danger: 0.4
|
||||
@@ -102,8 +105,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: EnemyIceSpectre
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 6
|
||||
max: 10
|
||||
name: cp14-modifier-zombie
|
||||
categories:
|
||||
Danger: 0.4
|
||||
@@ -118,8 +122,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: EnemyInvisibleWhistler
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 6
|
||||
max: 10
|
||||
name: cp14-modifier-invisible-whistler
|
||||
categories:
|
||||
Danger: 0.4
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
- type: cp14DemiplaneModifier
|
||||
id: RoyalPumpkin
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
generationProb: 0.1
|
||||
categories:
|
||||
@@ -24,10 +23,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: LucenTree
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 6
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
generationProb: 0.1
|
||||
categories:
|
||||
@@ -48,10 +46,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: StatueStoneHead
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 2
|
||||
max: 6
|
||||
generationWeight: 0.1
|
||||
generationProb: 0.1
|
||||
categories:
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MapLightDarkness
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 3
|
||||
max: 10
|
||||
generationWeight: 2
|
||||
categories:
|
||||
MapLight: 1
|
||||
@@ -14,9 +13,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MapLightDarkRed
|
||||
tiers:
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 5
|
||||
max: 10
|
||||
categories:
|
||||
MapLight: 1
|
||||
name: cp14-modifier-night
|
||||
@@ -26,8 +25,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MapLightDarkPurple
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
name: cp14-modifier-night
|
||||
@@ -37,8 +37,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MapLightDarkGreen
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
name: cp14-modifier-night
|
||||
@@ -48,10 +49,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MapLightDarkNight
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 1
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
name: cp14-modifier-night
|
||||
@@ -63,29 +63,13 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MapLightCycleDefault
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
categories:
|
||||
MapLight: 1
|
||||
generationWeight: 2
|
||||
requiredTags:
|
||||
- CP14DemiplaneOpenSky
|
||||
components:
|
||||
- type: CP14DayCycle
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MapLightCycleDay
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
categories:
|
||||
MapLight: 1
|
||||
generationWeight: 2
|
||||
requiredTags:
|
||||
- CP14DemiplaneOpenSky
|
||||
components:
|
||||
- type: CP14DayCycle
|
||||
cycleProto: CP14DemiplaneEternalDay
|
||||
- type: LightCycle
|
||||
@@ -1,8 +1,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CrystalNormal
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 3
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -19,9 +20,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CrystalFire
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -43,9 +44,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CrystalEarth
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -67,9 +68,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CrystalWater
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -89,9 +90,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CrystalAir
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -113,9 +114,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CrystalOrder
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -133,9 +134,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CrystalChaos
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.1
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Dayflin
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-dayflin
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: FlyAgaric
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-fly-agaric
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -46,9 +46,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: BlueAmanita
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-blue-amanita
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -67,9 +67,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: BloodFlower
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-blood-flower
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -88,9 +88,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WildSage
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-wild-sage
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -110,9 +110,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: AirLily
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-air-lily
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -133,8 +133,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: LumiShroom
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
name: cp14-modifier-lumisroom
|
||||
categories:
|
||||
Reward: 0.1
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: LootT1
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
generationWeight: 2
|
||||
categories:
|
||||
Reward: 0.35
|
||||
@@ -16,9 +17,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Rabbits
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-rabbits
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
@@ -34,9 +35,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Boar
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-boars
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
@@ -52,9 +53,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Frog
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
Reward: 0.2
|
||||
@@ -73,9 +74,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: Sheep
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-sheeps
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
@@ -93,8 +94,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: LootT2
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 5
|
||||
max: 10
|
||||
generationWeight: 2
|
||||
categories:
|
||||
Reward: 0.35
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: IronOre
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-iron-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -22,8 +23,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: IronOreUnderground
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
name: cp14-modifier-iron-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -42,8 +44,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CopperOre
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
name: cp14-modifier-copper-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -62,8 +65,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: CopperOreUnderground
|
||||
tiers:
|
||||
- 1
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
name: cp14-modifier-copper-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -84,8 +88,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: GoldOre
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 3
|
||||
max: 6
|
||||
name: cp14-modifier-gold-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -104,8 +109,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: GoldOreUnderground
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 3
|
||||
max: 6
|
||||
name: cp14-modifier-gold-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -123,9 +129,10 @@
|
||||
maxGroupSize: 6
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MithrilOre
|
||||
tiers:
|
||||
- 2
|
||||
id: MithrilOre
|
||||
levels:
|
||||
min: 5
|
||||
max: 10
|
||||
name: cp14-modifier-mithril-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -144,8 +151,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: MithrilOreUnderground
|
||||
tiers:
|
||||
- 2
|
||||
levels:
|
||||
min: 5
|
||||
max: 10
|
||||
name: cp14-modifier-mithril-ore
|
||||
unique: false
|
||||
categories:
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
- type: cp14DemiplaneModifier
|
||||
id: ArtifactRoom
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
generationWeight: 0.1
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
generationWeight: 2
|
||||
categories:
|
||||
Reward: 0.3
|
||||
Reward: 0.15
|
||||
layers:
|
||||
- !type:OreDunGen
|
||||
entity: CP14DemiplaneArtifactRoomSpawner
|
||||
|
||||
@@ -1,19 +1,11 @@
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WeatherNone
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
generationWeight: 3
|
||||
categories:
|
||||
Weather: 1
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WeatherMist
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
categories:
|
||||
Weather: 1
|
||||
components:
|
||||
@@ -29,9 +21,6 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WeatherRain
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
categories:
|
||||
Weather: 1
|
||||
requiredTags:
|
||||
@@ -49,9 +38,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WeatherStorm
|
||||
tiers:
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
categories:
|
||||
Weather: 1
|
||||
requiredTags:
|
||||
@@ -69,9 +58,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WeatherSnowLight
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
categories:
|
||||
Weather: 1
|
||||
requiredTags:
|
||||
@@ -89,10 +78,6 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WeatherSnowMedium
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
categories:
|
||||
Weather: 1
|
||||
requiredTags:
|
||||
@@ -110,9 +95,9 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: WeatherSnowHeavy
|
||||
tiers:
|
||||
- 2
|
||||
- 3
|
||||
levels:
|
||||
min: 5
|
||||
max: 10
|
||||
categories:
|
||||
Weather: 1
|
||||
requiredTags:
|
||||
|
||||
@@ -30,10 +30,7 @@
|
||||
|
||||
- type: cp14DemiplaneModifier
|
||||
id: TimeLimit10
|
||||
generationProb: 0.33
|
||||
tiers:
|
||||
- 1
|
||||
- 2
|
||||
generationProb: 0
|
||||
name: cp14-modifier-time-limit-10
|
||||
components:
|
||||
- type: CP14DemiplaneTimedDestruction
|
||||
|
||||
@@ -5,19 +5,6 @@
|
||||
threshold: -1.0
|
||||
tile: CP14FloorBase
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14CavesIndestructibleFill
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: CP14FloorBase
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -1
|
||||
allowedTiles:
|
||||
- CP14FloorBase
|
||||
entities:
|
||||
- CP14WallStoneIndestructable
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14CavesFloor
|
||||
layers:
|
||||
|
||||
77
Resources/Prototypes/_CP14/Procedural/fill.yml
Normal file
77
Resources/Prototypes/_CP14/Procedural/fill.yml
Normal file
@@ -0,0 +1,77 @@
|
||||
- type: biomeTemplate
|
||||
id: CP14CavesIndestructibleFill
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: FloorBasalt
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -1
|
||||
allowedTiles:
|
||||
- FloorBasalt
|
||||
entities:
|
||||
- CP14WallStoneIndestructable
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14ChasmFill
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: CP14FloorBase
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -1
|
||||
allowedTiles:
|
||||
- CP14FloorBase
|
||||
entities:
|
||||
- CP14Chasm
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14IceChasmFill
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: FloorSnow
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -1
|
||||
allowedTiles:
|
||||
- FloorSnow
|
||||
entities:
|
||||
- CP14Chasm
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14IceOceanFill
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: FloorSnow
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -1
|
||||
allowedTiles:
|
||||
- FloorSnow
|
||||
entities:
|
||||
- CP14FloorWaterOptimized
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14SandOceanFill
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: FloorDesert
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -1
|
||||
allowedTiles:
|
||||
- FloorDesert
|
||||
entities:
|
||||
- CP14FloorWaterOptimized
|
||||
|
||||
- type: biomeTemplate
|
||||
id: CP14LavaOceanFill
|
||||
layers:
|
||||
- !type:BiomeTileLayer
|
||||
threshold: -1.0
|
||||
tile: FloorBasalt
|
||||
- !type:BiomeEntityLayer
|
||||
threshold: -1
|
||||
allowedTiles:
|
||||
- FloorBasalt
|
||||
entities:
|
||||
- CP14FloorLava
|
||||
@@ -91,9 +91,9 @@
|
||||
id: NightForest
|
||||
rules:
|
||||
- !type:CP14TimePeriod
|
||||
periods:
|
||||
- Night
|
||||
- Evening
|
||||
#periods:
|
||||
#- Night
|
||||
#- Evening
|
||||
- !type:NearbyTilesPercentRule
|
||||
ignoreAnchored: true
|
||||
percent: 0.5
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
The Silva are a race of humanoid plants living in deep relic forests. Emerging from the mother tree in the centre of their cities, the Silvas do not travel the world very often.
|
||||
|
||||
## Magical photosynthesis
|
||||
## Magical photosynthesis (TEMPORARILY DISABLED)
|
||||
|
||||
Silvas regenerate [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] mana while in sunlight, but without it, mana regeneration is completely absent.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
Сильва - раса гуманоидных растений обитающих в глубоких реликтовых лесах. Появляясь в центре своих городов из материнского дерева, Сильвы не особо часто путешествуют по миру.
|
||||
|
||||
## Магический фотосинтез
|
||||
## Магический фотосинтез (ВРЕМЕННО ОТКЛЮЧЕНО)
|
||||
|
||||
Сильвы регенерируют [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] маны находясь под солнечным светом, но без него регенерация маны полностью отсутствует.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user