Demiplanes redesign again (#1616)
* global demi refactor * rebalance, smaller demiplanes * remove outdated connections * audio design + room coords fix * Update CP14Rooms.cs * Update wastelands.yml * hotfixes * Update CP14SpellThrowFromUser.cs * Update sky_lightning.yml
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
using System.Threading;
|
||||
using Content.Server._CP14.Procedural.Demiplane;
|
||||
using Content.Server._CP14.Procedural.GlobalWorld.Components;
|
||||
using Content.Server.Procedural;
|
||||
using Content.Server.Station.Components;
|
||||
using Content.Server.Station.Events;
|
||||
using Content.Server.Station.Systems;
|
||||
using Content.Shared._CP14.Procedural.Prototypes;
|
||||
using Content.Shared.Procedural;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.CPUJob.JobQueues;
|
||||
using Robust.Shared.CPUJob.JobQueues.Queues;
|
||||
using Robust.Shared.Map;
|
||||
@@ -20,6 +22,10 @@ public sealed class CP14LocationGenerationSystem : EntitySystem
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
[Dependency] private readonly DungeonSystem _dungeon = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly StationSystem _station = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
|
||||
private ISawmill _sawmill = null!;
|
||||
|
||||
private const double JobMaxTime = 0.002;
|
||||
private readonly JobQueue _expeditionQueue = new();
|
||||
@@ -29,8 +35,31 @@ public sealed class CP14LocationGenerationSystem : EntitySystem
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<CP14ActiveJobGenerationComponent, ComponentShutdown>(OnGenerationShutdown);
|
||||
_sawmill = _logManager.GetSawmill("cp14_procedural");
|
||||
|
||||
SubscribeLocalEvent<CP14ActiveJobGenerationComponent, ComponentShutdown>(OnGenerationShutdown);
|
||||
SubscribeLocalEvent<CP14StationProceduralLocationComponent, StationPostInitEvent>(OnStationPostInit);
|
||||
}
|
||||
|
||||
private void OnStationPostInit(Entity<CP14StationProceduralLocationComponent> ent, ref StationPostInitEvent args)
|
||||
{
|
||||
if (!TryComp<StationDataComponent>(ent, out var stationData))
|
||||
{
|
||||
_sawmill.Error($"Station {ent} does not have a StationDataComponent, cannot generate location on it.");
|
||||
return;
|
||||
}
|
||||
|
||||
var largestStationGrid = _station.GetLargestGrid(stationData);
|
||||
|
||||
if (largestStationGrid is null)
|
||||
{
|
||||
_sawmill.Error($"No grid found for station {ent} to generate location on.");
|
||||
return;
|
||||
}
|
||||
|
||||
var mapId = _transform.GetMapId(largestStationGrid.Value);
|
||||
|
||||
GenerateLocation(largestStationGrid.Value, mapId, ent.Comp.Location, ent.Comp.Modifiers);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
@@ -44,8 +73,8 @@ public sealed class CP14LocationGenerationSystem : EntitySystem
|
||||
case JobStatus.Finished:
|
||||
if (job.JobName is not null)
|
||||
{
|
||||
var ev = new CP14LocationGeneratedEvent(job.JobName);
|
||||
RaiseLocalEvent(ev);
|
||||
var ev = new CP14LocationGeneratedEvent();
|
||||
RaiseLocalEvent(job.MapUid, ev);
|
||||
}
|
||||
RemComp<CP14ActiveJobGenerationComponent>(job.MapUid);
|
||||
|
||||
@@ -100,10 +129,3 @@ public sealed class CP14LocationGenerationSystem : EntitySystem
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[PublicAPI]
|
||||
public sealed class CP14LocationGeneratedEvent(string jobName) : EntityEventArgs
|
||||
{
|
||||
public string JobName = jobName;
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
using Content.Shared._CP14.Procedural.Prototypes;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.Procedural.GlobalWorld.Components;
|
||||
namespace Content.Server._CP14.Procedural;
|
||||
|
||||
/// <summary>
|
||||
/// Generates the surrounding procedural world on the game map, surrounding the mapped settlement.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14GlobalWorldSystem))]
|
||||
public sealed partial class CP14StationGlobalWorldIntegrationComponent : Component
|
||||
[RegisterComponent, Access(typeof(CP14LocationGenerationSystem))]
|
||||
public sealed partial class CP14StationProceduralLocationComponent : Component
|
||||
{
|
||||
[DataField(required: true)]
|
||||
public ProtoId<CP14ProceduralLocationPrototype> Location;
|
||||
@@ -1,118 +1,120 @@
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using Content.Server._CP14.Procedural.GlobalWorld.Components;
|
||||
using Content.Server.Station.Components;
|
||||
using Content.Server._CP14.Procedural.Demiplane.Components;
|
||||
using Content.Shared._CP14.Procedural.Prototypes;
|
||||
using Content.Shared.Interaction;
|
||||
using Content.Shared.Teleportation.Systems;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
using Robust.Shared.Timing;
|
||||
|
||||
namespace Content.Server._CP14.Procedural.GlobalWorld;
|
||||
namespace Content.Server._CP14.Procedural.Demiplane;
|
||||
|
||||
public sealed partial class CP14GlobalWorldSystem
|
||||
public sealed class CP14DemiplaneSystem : EntitySystem
|
||||
{
|
||||
private void GenerateGlobalWorldMap(Entity<CP14StationGlobalWorldComponent> ent)
|
||||
[Dependency] private readonly SharedMapSystem _map = default!;
|
||||
[Dependency] private readonly CP14LocationGenerationSystem _generation = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly MetaDataSystem _meta = default!;
|
||||
[Dependency] private readonly LinkedEntitySystem _link = default!;
|
||||
[Dependency] private readonly IGameTiming _timing = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
ent.Comp.Nodes.Clear();
|
||||
ent.Comp.Edges.Clear();
|
||||
base.Initialize();
|
||||
|
||||
//For first - check station integration, and put station into (0,0) global map position
|
||||
if (TryComp<CP14StationGlobalWorldIntegrationComponent>(ent, out var integration) &&
|
||||
TryComp<StationDataComponent>(ent, out var stationData))
|
||||
SubscribeLocalEvent<CP14DemiplaneRiftComponent, InteractHandEvent>(OnRiftInteracted);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
base.Update(frameTime);
|
||||
|
||||
var query = EntityQueryEnumerator<CP14DemiplaneRiftComponent>();
|
||||
while (query.MoveNext(out var uid, out var demiplaneRift))
|
||||
{
|
||||
var largestStationGrid = _station.GetLargestGrid(stationData);
|
||||
|
||||
Debug.Assert(largestStationGrid is not null);
|
||||
|
||||
var mapId = _transform.GetMapId(largestStationGrid.Value);
|
||||
var zeroNode =
|
||||
new CP14GlobalWorldNode
|
||||
{
|
||||
MapUid = mapId,
|
||||
LocationConfig = integration.Location,
|
||||
Modifiers = integration.Modifiers,
|
||||
Level = 0,
|
||||
};
|
||||
GenerateNodeData(zeroNode);
|
||||
ent.Comp.Nodes.Add(
|
||||
Vector2i.Zero,
|
||||
zeroNode
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
var zeroNode = new CP14GlobalWorldNode();
|
||||
GenerateNodeData(zeroNode);
|
||||
ent.Comp.Nodes.Add(Vector2i.Zero, zeroNode);
|
||||
}
|
||||
|
||||
//Generate nodes with random data until limits
|
||||
while (ent.Comp.Nodes.Count < ent.Comp.LocationCount + 1)
|
||||
{
|
||||
// Get a random existing node
|
||||
var randomNode = _random.Pick(ent.Comp.Nodes);
|
||||
var randomNodePosition = randomNode.Key;
|
||||
|
||||
// Find a random empty adjacent position
|
||||
var directions = new[] { new Vector2i(1, 0), new Vector2i(-1, 0), new Vector2i(0, 1), new Vector2i(0, -1) };
|
||||
var emptyPositions = directions
|
||||
.Select(dir => randomNodePosition + dir)
|
||||
.Where(pos => !ent.Comp.Nodes.ContainsKey(pos))
|
||||
.ToList();
|
||||
|
||||
if (emptyPositions.Count == 0)
|
||||
if (demiplaneRift.ScanningTargetMap is null)
|
||||
continue;
|
||||
|
||||
var newPosition = emptyPositions[Random.Shared.Next(emptyPositions.Count)];
|
||||
if (_timing.CurTime < demiplaneRift.NextScanTime)
|
||||
continue;
|
||||
|
||||
// Add the new node and connect it with an edge
|
||||
var newNode = new CP14GlobalWorldNode
|
||||
{
|
||||
Level = Math.Abs(newPosition.X) + Math.Abs(newPosition.Y),
|
||||
};
|
||||
GenerateNodeData(newNode);
|
||||
ent.Comp.Nodes.Add(newPosition, newNode);
|
||||
ent.Comp.Edges.Add((randomNodePosition, newPosition));
|
||||
demiplaneRift.NextScanTime = _timing.CurTime + TimeSpan.FromSeconds(5);
|
||||
|
||||
//Add connections to each other
|
||||
if (_proto.TryIndex(newNode.LocationConfig, out var indexedNewNodeLocation) && _proto.TryIndex(randomNode.Value.LocationConfig, out var indexedRandomNodeLocation))
|
||||
var targetQuery = EntityQueryEnumerator<CP14DemiplaneEnterPointComponent>();
|
||||
while (targetQuery.MoveNext(out var enterUid, out var enterComp))
|
||||
{
|
||||
newNode.Modifiers.Add(indexedNewNodeLocation.Connection);
|
||||
randomNode.Value.Modifiers.Add(indexedRandomNodeLocation.Connection);
|
||||
if (Transform(enterUid).MapUid != demiplaneRift.ScanningTargetMap)
|
||||
continue;
|
||||
|
||||
//Remove awaiting
|
||||
QueueDel(demiplaneRift.AwaitingEntity);
|
||||
|
||||
//Start connection
|
||||
var portal1 = SpawnAtPosition(demiplaneRift.PortalProto, Transform(enterUid).Coordinates);
|
||||
var portal2 = SpawnAtPosition(demiplaneRift.PortalProto, Transform(uid).Coordinates);
|
||||
_link.TryLink(portal1, portal2, true);
|
||||
|
||||
//Delete self
|
||||
QueueDel(uid);
|
||||
QueueDel(enterUid);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void GenerateNodeData(CP14GlobalWorldNode node,
|
||||
bool overrideLocation = false,
|
||||
bool clearOldModifiers = false)
|
||||
private void OnRiftInteracted(Entity<CP14DemiplaneRiftComponent> ent, ref InteractHandEvent args)
|
||||
{
|
||||
if (node.LocationConfig is null || overrideLocation)
|
||||
if (HasComp<CP14DemiplaneBlockInteractionsComponent>(args.User))
|
||||
return;
|
||||
|
||||
if (!ent.Comp.CanCreate)
|
||||
return;
|
||||
|
||||
var nextLevel = 1;
|
||||
var originMap = Transform(ent).MapUid;
|
||||
if (TryComp<CP14DemiplaneMapComponent>(originMap, out var demiplane))
|
||||
{
|
||||
var location = SelectLocation(node.Level);
|
||||
node.LocationConfig ??= location;
|
||||
nextLevel = demiplane.Level + 1;
|
||||
}
|
||||
|
||||
if (!_proto.TryIndex(node.LocationConfig, out var indexedLocation))
|
||||
throw new Exception($"No location config found for node at level {node.Level}!");
|
||||
_map.CreateMap(out var mapId, runMapInit: false);
|
||||
|
||||
var mapUid = _map.GetMap(mapId);
|
||||
EnsureComp<CP14DemiplaneMapComponent>(mapUid).Level = nextLevel;
|
||||
|
||||
var limits = new Dictionary<ProtoId<CP14ProceduralModifierCategoryPrototype>, float>
|
||||
{
|
||||
{ "Danger", Math.Max(node.Level * 0.2f, 0.5f) },
|
||||
{ "Danger", Math.Max(nextLevel * 0.2f, 0.5f) },
|
||||
{ "GhostRoleDanger", 1f },
|
||||
{ "Reward", Math.Max(node.Level * 0.3f, 0.5f) },
|
||||
{ "Ore", Math.Max(node.Level * 0.5f, 1f) },
|
||||
{ "Reward", Math.Max(nextLevel * 0.3f, 0.5f) },
|
||||
{ "Ore", Math.Max(nextLevel * 0.5f, 1f) },
|
||||
{ "Fun", 1f },
|
||||
{ "Weather", 1f },
|
||||
{ "MapLight", 1f },
|
||||
{ "Passage", 1f },
|
||||
};
|
||||
var mods = SelectModifiers(node.Level, indexedLocation, limits);
|
||||
|
||||
if (clearOldModifiers)
|
||||
node.Modifiers.Clear();
|
||||
foreach (var mod in mods)
|
||||
{
|
||||
node.Modifiers.Add(mod);
|
||||
}
|
||||
var nextLocation = SelectLocation(nextLevel);
|
||||
var nextModifiers = SelectModifiers(nextLevel, nextLocation, limits);
|
||||
|
||||
nextModifiers.Add("CP14DemiplanEnterRoom"); //HARDCODE, BOO
|
||||
|
||||
_meta.SetEntityName(mapUid, $"Demi: [{nextLevel}] - {nextLocation.LocationConfig.Id}");
|
||||
|
||||
_generation.GenerateLocation(
|
||||
mapUid,
|
||||
mapId,
|
||||
nextLocation,
|
||||
nextModifiers);
|
||||
|
||||
var awaiting = SpawnAtPosition(ent.Comp.AwaitingProto, Transform(ent).Coordinates);
|
||||
|
||||
ent.Comp.AwaitingEntity = awaiting;
|
||||
ent.Comp.ScanningTargetMap = mapUid;
|
||||
ent.Comp.CanCreate = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -171,12 +173,12 @@ public sealed partial class CP14GlobalWorldSystem
|
||||
/// <summary>
|
||||
/// Returns a set of modifiers under the specified difficulty level that are appropriate for the specified location
|
||||
/// </summary>
|
||||
public List<CP14ProceduralModifierPrototype> SelectModifiers(
|
||||
public List<ProtoId<CP14ProceduralModifierPrototype>> SelectModifiers(
|
||||
int level,
|
||||
CP14ProceduralLocationPrototype location,
|
||||
Dictionary<ProtoId<CP14ProceduralModifierCategoryPrototype>, float> modifierLimits)
|
||||
{
|
||||
List<CP14ProceduralModifierPrototype> selectedModifiers = new();
|
||||
List<ProtoId<CP14ProceduralModifierPrototype>> selectedModifiers = new();
|
||||
|
||||
//Modifier generation
|
||||
Dictionary<CP14ProceduralModifierPrototype, float> suitableModifiersWeights = new();
|
||||
@@ -305,3 +307,7 @@ public sealed partial class CP14GlobalWorldSystem
|
||||
throw new InvalidOperationException($"Invalid weighted pick in CP14DemiplanSystem.Generation!");
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CP14LocationGeneratedEvent : EntityEventArgs
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Content.Server._CP14.Procedural.Demiplane.Components;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14DemiplaneSystem))]
|
||||
public sealed partial class CP14DemiplaneBlockInteractionsComponent : Component
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
namespace Content.Server._CP14.Procedural.Demiplane.Components;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14DemiplaneSystem))]
|
||||
public sealed partial class CP14DemiplaneEnterPointComponent : Component
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
namespace Content.Server._CP14.Procedural.Demiplane.Components;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14DemiplaneSystem))]
|
||||
public sealed partial class CP14DemiplaneMapComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public int Level = 0;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.Procedural.Demiplane.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new map of the next level of the demiplane and connects to it via a portal.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14DemiplaneSystem))]
|
||||
public sealed partial class CP14DemiplaneRiftComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Blocks the creation of a new demiplane map, after the first one is created.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public bool CanCreate = true;
|
||||
|
||||
[DataField]
|
||||
public EntProtoId AwaitingProto = "CP14DemiplaneRiftAwaiting";
|
||||
|
||||
[DataField]
|
||||
public EntProtoId PortalProto = "CP14DemiplaneRiftPortal";
|
||||
|
||||
[DataField]
|
||||
public EntityUid? AwaitingEntity;
|
||||
|
||||
[DataField]
|
||||
public EntityUid? ScanningTargetMap;
|
||||
|
||||
[DataField]
|
||||
public TimeSpan NextScanTime = TimeSpan.Zero;
|
||||
}
|
||||
@@ -89,7 +89,7 @@ public sealed partial class DungeonJob
|
||||
{
|
||||
for (int y = 0; y < room.Size.Y; y++)
|
||||
{
|
||||
var pos = selectedTile + new Vector2i(x, y);
|
||||
var pos = selectedTile + new Vector2i(x, y) - new Vector2i(room.Size.X/2,room.Size.Y/2);
|
||||
if (reservedTiles.Contains(pos))
|
||||
{
|
||||
conflict = true;
|
||||
@@ -103,7 +103,7 @@ public sealed partial class DungeonJob
|
||||
if (conflict)
|
||||
continue;
|
||||
|
||||
_dungeon.SpawnRoom(_gridUid, _grid, selectedTile, room, random, clearExisting: true, rotation: true);
|
||||
_dungeon.SpawnRoom(_gridUid, _grid, selectedTile - new Vector2i(room.Size.X/2,room.Size.Y/2), room, random, clearExisting: true, rotation: true);
|
||||
|
||||
foreach (var pos in roomBounds)
|
||||
{
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
using Content.Server._CP14.Procedural.GlobalWorld.Components;
|
||||
using Content.Server.Shuttles.Systems;
|
||||
using Content.Server.Station.Events;
|
||||
using Content.Server.Station.Systems;
|
||||
using Content.Shared.Teleportation.Systems;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
namespace Content.Server._CP14.Procedural.GlobalWorld;
|
||||
|
||||
public sealed partial class CP14GlobalWorldSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ShuttleSystem _shuttles = default!;
|
||||
[Dependency] private readonly StationSystem _station = default!;
|
||||
[Dependency] private readonly ILogManager _logManager = default!;
|
||||
[Dependency] private readonly SharedMapSystem _map = default!;
|
||||
[Dependency] private readonly CP14LocationGenerationSystem _generation = default!;
|
||||
[Dependency] private readonly SharedTransformSystem _transform = default!;
|
||||
[Dependency] private readonly IRobustRandom _random = default!;
|
||||
[Dependency] private readonly IPrototypeManager _proto = default!;
|
||||
[Dependency] private readonly MetaDataSystem _meta = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly LinkedEntitySystem _link = default!;
|
||||
|
||||
private ISawmill _sawmill = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
_sawmill = _logManager.GetSawmill("cp14_global_world");
|
||||
|
||||
SubscribeLocalEvent<CP14StationGlobalWorldComponent, StationPostInitEvent>(OnIntegratedPostInit);
|
||||
SubscribeLocalEvent<CP14LocationGeneratedEvent>(OnLocationGenerated);
|
||||
SubscribeLocalEvent<CP14StationGlobalWorldComponent, CP14GlobalWorldGeneratedEvent>(OnGlobalWorldGenerated);
|
||||
}
|
||||
|
||||
private void OnLocationGenerated(CP14LocationGeneratedEvent args)
|
||||
{
|
||||
var query = EntityQueryEnumerator<CP14StationGlobalWorldComponent>();
|
||||
while (query.MoveNext(out var ent, out var comp))
|
||||
{
|
||||
//Theres no support for multiple GlobalWorld
|
||||
if (comp.LocationInGeneration.Contains(args.JobName))
|
||||
{
|
||||
comp.LocationInGeneration.Remove(args.JobName);
|
||||
_sawmill.Debug($"Location {args.JobName} generated successfully. Remaining: {comp.LocationInGeneration.Count}");
|
||||
}
|
||||
|
||||
if (comp.LocationInGeneration.Count == 0)
|
||||
{
|
||||
//All locations are generated, we can now spawn the global world map
|
||||
_sawmill.Debug("All locations generated, spawning global world map.");
|
||||
var ev = new CP14GlobalWorldGeneratedEvent();
|
||||
RaiseLocalEvent(ent, ev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnIntegratedPostInit(Entity<CP14StationGlobalWorldComponent> ent, ref StationPostInitEvent args)
|
||||
{
|
||||
GenerateGlobalWorldMap(ent);
|
||||
SpawnGlobalWorldMap(ent);
|
||||
}
|
||||
|
||||
private void OnGlobalWorldGenerated(Entity<CP14StationGlobalWorldComponent> ent, ref CP14GlobalWorldGeneratedEvent ev)
|
||||
{
|
||||
ConnectGlobalWorldMap(ent);
|
||||
}
|
||||
|
||||
private void SpawnGlobalWorldMap(Entity<CP14StationGlobalWorldComponent> ent)
|
||||
{
|
||||
foreach (var (position, node) in ent.Comp.Nodes)
|
||||
{
|
||||
if (node.LocationConfig is null)
|
||||
continue;
|
||||
|
||||
if (node.MapUid is null)
|
||||
{
|
||||
_map.CreateMap(out var newMapId, runMapInit: false);
|
||||
node.MapUid = newMapId;
|
||||
}
|
||||
|
||||
var mapId = node.MapUid.Value;
|
||||
var mapUid = _map.GetMap(mapId);
|
||||
var jobName = $"job_GW_{position}";
|
||||
ent.Comp.LocationInGeneration.Add(jobName);
|
||||
|
||||
_generation.GenerateLocation(
|
||||
mapUid,
|
||||
mapId,
|
||||
node.LocationConfig.Value,
|
||||
node.Modifiers,
|
||||
jobName: jobName
|
||||
);
|
||||
|
||||
// Avoid renaming the settlement
|
||||
if (position != Vector2i.Zero)
|
||||
{
|
||||
var newName = $"{position} - {node.LocationConfig.Value}";
|
||||
_meta.SetEntityName(mapUid, newName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ConnectGlobalWorldMap(Entity<CP14StationGlobalWorldComponent> ent)
|
||||
{
|
||||
foreach (var edge in ent.Comp.Edges)
|
||||
{
|
||||
var firstNodeMapUid = ent.Comp.Nodes[edge.Item1].MapUid;
|
||||
var secondNodeMapUid = ent.Comp.Nodes[edge.Item2].MapUid;
|
||||
|
||||
EntityUid? firstConnector = null;
|
||||
EntityUid? secondConnector = null;
|
||||
|
||||
//Get random connector from map
|
||||
var query = EntityQueryEnumerator<CP14GlobalWorldConnectorComponent>();
|
||||
while (query.MoveNext(out var uid, out _))
|
||||
{
|
||||
if (_transform.GetMapId(uid) == firstNodeMapUid)
|
||||
firstConnector = uid;
|
||||
|
||||
if (_transform.GetMapId(uid) == secondNodeMapUid)
|
||||
secondConnector = uid;
|
||||
|
||||
}
|
||||
|
||||
if (firstConnector == null || secondConnector == null)
|
||||
{
|
||||
_sawmill.Error($"Failed to find connectors for edge {edge.Item1} - {edge.Item2}. " +
|
||||
$"First: {firstConnector}, Second: {secondConnector}");
|
||||
continue;
|
||||
}
|
||||
|
||||
var firstPortal = Spawn("CP14LocationPassway", Transform(firstConnector.Value).Coordinates);
|
||||
var secondPortal = Spawn("CP14LocationPassway", Transform(secondConnector.Value).Coordinates);
|
||||
|
||||
_link.TryLink(firstPortal, secondPortal, true);
|
||||
|
||||
Del(firstConnector);
|
||||
Del(secondConnector);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class CP14GlobalWorldGeneratedEvent : EntityEventArgs
|
||||
{
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
namespace Content.Server._CP14.Procedural.GlobalWorld.Components;
|
||||
|
||||
/// <summary>
|
||||
/// The GlobalWorld system connects worlds by creating connecting portals at the location of these markers.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14GlobalWorldSystem))]
|
||||
public sealed partial class CP14GlobalWorldConnectorComponent : Component
|
||||
{
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
using Content.Shared._CP14.Procedural.Prototypes;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Server._CP14.Procedural.GlobalWorld.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Generates the surrounding procedural world on the game map, surrounding the mapped settlement.
|
||||
/// </summary>
|
||||
[RegisterComponent, Access(typeof(CP14GlobalWorldSystem))]
|
||||
public sealed partial class CP14StationGlobalWorldComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
public Dictionary<Vector2i, CP14GlobalWorldNode> Nodes = new();
|
||||
|
||||
[DataField]
|
||||
public HashSet<(Vector2i, Vector2i)> Edges = new();
|
||||
|
||||
[DataField]
|
||||
public int LocationCount = 5;
|
||||
|
||||
/// <summary>
|
||||
/// A list of jobName names that are waiting for generation to complete. This is a hack, but I don't know a better way to do it.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public List<string> LocationInGeneration = new();
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class CP14GlobalWorldNode()
|
||||
{
|
||||
public MapId? MapUid;
|
||||
public int Level = 0;
|
||||
|
||||
public ProtoId<CP14ProceduralLocationPrototype>? LocationConfig;
|
||||
public List<ProtoId<CP14ProceduralModifierPrototype>> Modifiers = new();
|
||||
}
|
||||
@@ -23,7 +23,11 @@ public sealed partial class CP14SpellThrowFromUser : CP14SpellEffect
|
||||
var xform = entManager.System<SharedTransformSystem>();
|
||||
|
||||
var worldPos = xform.GetWorldPosition(args.User.Value);
|
||||
var foo = Vector2.Normalize(xform.GetWorldPosition(args.Target.Value) - worldPos);
|
||||
var dir = xform.GetWorldPosition(args.Target.Value) - worldPos;
|
||||
if (dir == Vector2.Zero)
|
||||
return;
|
||||
|
||||
var foo = Vector2.Normalize(dir);
|
||||
|
||||
if (entManager.TryGetComponent<EmbeddableProjectileComponent>(targetEntity, out var embeddable))
|
||||
{
|
||||
|
||||
@@ -23,12 +23,6 @@ public sealed partial class CP14ProceduralLocationPrototype : IPrototype
|
||||
[DataField(required: true)]
|
||||
public ProtoId<DungeonConfigPrototype> LocationConfig;
|
||||
|
||||
/// <summary>
|
||||
/// This modifier will be added to all adjacent connected locations leading to this location.
|
||||
/// </summary>
|
||||
[DataField(required: true)]
|
||||
public ProtoId<CP14ProceduralModifierPrototype> Connection;
|
||||
|
||||
[DataField]
|
||||
public float GenerationProb = 1f;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -69,7 +69,6 @@
|
||||
- type: CP14AreaEntityEffect
|
||||
range: 1
|
||||
effects:
|
||||
- !type:CP14SpellThrowFromUser
|
||||
- !type:CP14SpellApplyEntityEffect
|
||||
effects:
|
||||
- !type:Electrocute
|
||||
@@ -77,7 +76,7 @@
|
||||
- !type:HealthChange
|
||||
damage:
|
||||
types:
|
||||
Shock: 15
|
||||
Shock: 0
|
||||
- type: CP14FarSound
|
||||
closeSound:
|
||||
path: /Audio/_CP14/Ambience/Lightning/lightning_close1.ogg
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
- type: entity
|
||||
parent: MarkerBase
|
||||
id: CP14SpawnerLocationConnection
|
||||
name: Location connection
|
||||
categories: [ HideSpawnMenu ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: _CP14/Structures/Flora/demiplane_cracks.rsi
|
||||
state: crack
|
||||
- type: CP14GlobalWorldConnector
|
||||
|
||||
- type: entity
|
||||
id: CP14LocationPassway
|
||||
parent: BasePortal
|
||||
categories: [ HideSpawnMenu ]
|
||||
name: location passway
|
||||
description: A gap in space that allows you to travel between worlds.
|
||||
components:
|
||||
- type: Sprite
|
||||
drawdepth: Effects
|
||||
sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift.rsi
|
||||
layers:
|
||||
- state: anom
|
||||
shader: unshaded
|
||||
- type: SingularityDistortion
|
||||
falloffPower: 1.5
|
||||
intensity: 50
|
||||
- type: AmbientSound
|
||||
volume: -3
|
||||
range: 7
|
||||
sound:
|
||||
path: /Audio/Ambience/Objects/gravity_gen_hum.ogg
|
||||
- type: Portal
|
||||
canTeleportToOtherMaps: true
|
||||
@@ -113,6 +113,7 @@
|
||||
templateId: CP14Human
|
||||
- type: TransferMindOnGib
|
||||
- type: GhostTakeoverAvailable
|
||||
- type: CP14DemiplaneBlockInteractions
|
||||
|
||||
- type: entity
|
||||
parent: CP14BaseSpeciesDummy
|
||||
|
||||
@@ -0,0 +1,111 @@
|
||||
- type: entity
|
||||
id: CP14DemiplaneRiftCore
|
||||
name: demiplane rift core
|
||||
description: Touch to open the door to a new world
|
||||
categories: [ ForkFiltered ]
|
||||
placement:
|
||||
mode: SnapgridCenter
|
||||
components:
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
drawdepth: Mobs
|
||||
sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi
|
||||
layers:
|
||||
- state: connective
|
||||
shader: unshaded
|
||||
- type: CP14DemiplaneRift
|
||||
- type: Clickable
|
||||
- type: InteractionOutline
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
color: "#8f42ff"
|
||||
energy: 1
|
||||
radius: 5
|
||||
|
||||
- type: entity
|
||||
parent: MarkerBase
|
||||
id: CP14DemiplaneEnterPointMarker
|
||||
name: demiplane enter point
|
||||
categories: [ ForkFiltered ]
|
||||
components:
|
||||
- type: Sprite
|
||||
layers:
|
||||
- state: green
|
||||
- sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi
|
||||
state: core1
|
||||
- type: CP14DemiplaneEnterPoint
|
||||
|
||||
- type: entity
|
||||
id: CP14DemiplaneRiftAwaiting
|
||||
parent: BasePortal
|
||||
categories: [ ForkFiltered ]
|
||||
name: unstable demiplane rift
|
||||
description: A gap in space that allows you to travel between worlds. It is still unstable, and entering it is hazardous to your health.
|
||||
components:
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
drawdepth: Effects
|
||||
sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift.rsi
|
||||
layers:
|
||||
- state: pulse
|
||||
shader: unshaded
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
color: "#8f42ff"
|
||||
energy: 1
|
||||
radius: 5
|
||||
- type: SingularityDistortion
|
||||
falloffPower: 1.5
|
||||
intensity: 50
|
||||
- type: LightBehaviour
|
||||
behaviours:
|
||||
- !type:PulseBehaviour
|
||||
interpolate: Cubic
|
||||
maxDuration: 2
|
||||
startValue: 0.1
|
||||
endValue: 1.0
|
||||
property: Energy
|
||||
isLooped: true
|
||||
enabled: true
|
||||
- type: AmbientSound
|
||||
volume: -3
|
||||
range: 7
|
||||
sound:
|
||||
path: /Audio/Ambience/anomaly_scary.ogg
|
||||
- type: Portal
|
||||
maxRandomRadius: 10
|
||||
- type: ConditionalSpawner
|
||||
prototypes:
|
||||
- CP14SkyLightningPurple
|
||||
|
||||
- type: entity
|
||||
id: CP14DemiplaneRiftPortal
|
||||
parent: BasePortal
|
||||
categories: [ ForkFiltered ]
|
||||
name: demiplane rift
|
||||
description: A gap in space that allows you to travel between worlds.
|
||||
components:
|
||||
- type: Sprite
|
||||
noRot: true
|
||||
drawdepth: Effects
|
||||
sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift.rsi
|
||||
layers:
|
||||
- state: anom
|
||||
shader: unshaded
|
||||
- type: PointLight
|
||||
enabled: true
|
||||
color: "#8f42ff"
|
||||
energy: 1
|
||||
radius: 5
|
||||
- type: AmbientSound
|
||||
volume: -3
|
||||
range: 7
|
||||
sound:
|
||||
path: /Audio/Ambience/Objects/gravity_gen_hum.ogg
|
||||
- type: Portal
|
||||
canTeleportToOtherMaps: true
|
||||
- type: EmitSoundOnSpawn
|
||||
sound:
|
||||
path: /Audio/_CP14/Effects/ritual_end.ogg
|
||||
params:
|
||||
variation: 0.3
|
||||
@@ -49,8 +49,19 @@
|
||||
- PersonalHouse8
|
||||
- PersonalHouse9
|
||||
- PersonalHouse10
|
||||
- type: CP14StationGlobalWorld
|
||||
- type: CP14StationGlobalWorldIntegration
|
||||
- type: CP14StationProceduralLocation
|
||||
location: ComossIsland
|
||||
modifiers:
|
||||
- DemiplaneArcTriple
|
||||
- RaidSpawners
|
||||
- SmallHydra
|
||||
- EnemyFlem
|
||||
- MonsterMosquito
|
||||
- Marble
|
||||
- CopperOre
|
||||
- CopperOre
|
||||
- CoalOre
|
||||
- CP14CrystalQuartzOrder
|
||||
- Quartz
|
||||
- FlyAgaric
|
||||
- BloodFlower
|
||||
@@ -15,5 +15,4 @@
|
||||
# - type: StationJobs
|
||||
# availableJobs:
|
||||
# #Mercenary
|
||||
# CP14Adventurer: [ -1, -1 ]
|
||||
# - type: CP14StationGlobalWorld
|
||||
# CP14Adventurer: [ -1, -1 ]
|
||||
@@ -45,8 +45,18 @@
|
||||
- PersonalHouse4
|
||||
- PersonalHouse5
|
||||
- PersonalHouse6
|
||||
- type: CP14StationGlobalWorld
|
||||
- type: CP14StationGlobalWorldIntegration
|
||||
- type: CP14StationProceduralLocation
|
||||
location: VenicialistFort
|
||||
modifiers:
|
||||
- DemiplaneArcTriple
|
||||
- RaidSpawners
|
||||
- CopperOre
|
||||
- CopperOre
|
||||
- CoalOre
|
||||
- CP14CrystalQuartzWater
|
||||
- Quartz
|
||||
- Ruins
|
||||
- EnemyZombie
|
||||
- MobSlimeIce
|
||||
- LumiShroom
|
||||
- SilverNeedle
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
- type: cp14Location
|
||||
id: ComossIsland
|
||||
locationConfig: CP14ComossIsland
|
||||
connection: ConnectionGrass
|
||||
generationProb: 0 #Special location for map only
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
- type: cp14Location
|
||||
id: VenicialistFort
|
||||
locationConfig: CP14VenicialistFort
|
||||
connection: ConnectionSnow
|
||||
generationProb: 0 #Special location for map only
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 1
|
||||
max: 2
|
||||
locationConfig: CP14Caves
|
||||
connection: ConnectionStone
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
@@ -17,7 +16,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 120, 120
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.9
|
||||
layers:
|
||||
@@ -31,7 +30,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 80
|
||||
size: 60, 60
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 2
|
||||
max: 10
|
||||
locationConfig: CP14IceCaves
|
||||
connection: ConnectionSnow
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
@@ -18,7 +17,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 120, 120
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.9
|
||||
layers:
|
||||
@@ -32,7 +31,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 80
|
||||
size: 60, 60
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 3
|
||||
max: 10
|
||||
locationConfig: CP14MagmaCaves
|
||||
connection: ConnectionStone
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
@@ -18,7 +17,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 120, 120
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.7
|
||||
layers:
|
||||
@@ -32,7 +31,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 110, 110
|
||||
size: 80, 80
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.8
|
||||
layers:
|
||||
@@ -46,7 +45,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 80
|
||||
size: 60, 60
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.7
|
||||
layers:
|
||||
@@ -60,7 +59,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 50, 50
|
||||
size: 30, 30
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.8
|
||||
layers:
|
||||
@@ -83,6 +82,6 @@
|
||||
tileMask:
|
||||
- CP14FloorGrass
|
||||
- !type:CP14BiomeDunGen
|
||||
biomeTemplate: CP14MarbleCaves
|
||||
biomeTemplate: CP14LavaOceanFill
|
||||
tileMask:
|
||||
- CP14FloorMarble
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 1
|
||||
max: 10
|
||||
locationConfig: CP14MushroomCaves
|
||||
connection: ConnectionMushroom
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneUnderground
|
||||
@@ -18,7 +17,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 120, 120
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.9
|
||||
layers:
|
||||
@@ -32,7 +31,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 80
|
||||
size: 60, 60
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 1
|
||||
max: 10
|
||||
locationConfig: CP14SwampGeode
|
||||
connection: ConnectionGrass
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneHerbals
|
||||
@@ -20,7 +19,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 120, 120
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.9
|
||||
layers:
|
||||
@@ -34,7 +33,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 80
|
||||
size: 60, 60
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.7
|
||||
layers:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 0
|
||||
max: 2
|
||||
locationConfig: CP14GrasslandIsland
|
||||
connection: ConnectionGrass
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneHerbals
|
||||
@@ -25,7 +24,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 160, 160
|
||||
size: 120, 120
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.7
|
||||
layers:
|
||||
@@ -39,7 +38,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 150, 150
|
||||
size: 115, 115
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.6
|
||||
layers:
|
||||
@@ -53,7 +52,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 110, 110
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 2
|
||||
max: 10
|
||||
locationConfig: CP14SnowIsland
|
||||
connection: ConnectionSnow
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneOpenSky
|
||||
@@ -25,7 +24,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 160, 160
|
||||
size: 120, 120
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.7
|
||||
layers:
|
||||
@@ -39,7 +38,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 150, 150
|
||||
size: 115, 115
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.6
|
||||
layers:
|
||||
@@ -53,7 +52,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 110, 110
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
min: 1
|
||||
max: 10
|
||||
locationConfig: CP14LeafMaze
|
||||
connection: ConnectionGrass
|
||||
tags:
|
||||
- CP14DemiplaneHerbals
|
||||
- CP14DemiplaneOpenSky
|
||||
@@ -26,7 +25,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 120, 120
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.9
|
||||
layers:
|
||||
@@ -40,7 +39,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 80, 80
|
||||
size: 60, 60
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
- type: cp14Location
|
||||
id: T1Wastelands
|
||||
levels:
|
||||
min: 2
|
||||
max: 2
|
||||
min: 3
|
||||
max: 5
|
||||
locationConfig: CP14WastelandsIsland
|
||||
connection: ConnectionStone
|
||||
tags:
|
||||
- CP14DemiplaneOres
|
||||
- CP14DemiplaneOpenSky
|
||||
@@ -23,7 +22,7 @@
|
||||
layers:
|
||||
# Masks
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 160, 160
|
||||
size: 120, 120
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.7
|
||||
layers:
|
||||
@@ -37,7 +36,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 150, 150
|
||||
size: 115, 115
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.6
|
||||
layers:
|
||||
@@ -51,7 +50,7 @@
|
||||
lacunarity: 2
|
||||
gain: 0.5
|
||||
- !type:NoiseDistanceDunGen
|
||||
size: 110, 110
|
||||
size: 90, 90
|
||||
distanceConfig: !type:DunGenEuclideanSquaredDistance
|
||||
blendWeight: 0.5
|
||||
layers:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
id: Lava
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
max: 5
|
||||
generationWeight: 0.3
|
||||
categories:
|
||||
Danger: 0.25
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
id: EnemyZombie
|
||||
levels:
|
||||
min: 0
|
||||
max: 6
|
||||
max: 3
|
||||
name: cp14-modifier-zombie
|
||||
generationWeight: 1.5
|
||||
categories:
|
||||
@@ -21,8 +21,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: EnemyDyno
|
||||
levels:
|
||||
min: 2
|
||||
max: 8
|
||||
min: 3
|
||||
max: 5
|
||||
name: cp14-modifier-dyno
|
||||
categories:
|
||||
Danger: 0.4
|
||||
@@ -40,7 +40,7 @@
|
||||
id: MonsterMosquito
|
||||
levels:
|
||||
min: 0
|
||||
max: 5
|
||||
max: 2
|
||||
name: cp14-modifier-dyno
|
||||
categories:
|
||||
Danger: 0.25
|
||||
@@ -60,7 +60,7 @@
|
||||
id: Fairy
|
||||
levels:
|
||||
min: 0
|
||||
max: 5
|
||||
max: 3
|
||||
categories:
|
||||
Danger: 0.20
|
||||
requiredTags:
|
||||
@@ -76,7 +76,7 @@
|
||||
id: SmallHydra
|
||||
levels:
|
||||
min: 0
|
||||
max: 5
|
||||
max: 2
|
||||
name: cp14-modifier-dyno
|
||||
categories:
|
||||
Danger: 0.25
|
||||
@@ -93,7 +93,7 @@
|
||||
id: EnemyFlem
|
||||
levels:
|
||||
min: 0
|
||||
max: 8
|
||||
max: 2
|
||||
name: cp14-modifier-flem
|
||||
generationWeight: 0.33
|
||||
categories:
|
||||
@@ -113,8 +113,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: EnemyMole
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
name: cp14-modifier-mole
|
||||
categories:
|
||||
Danger: 0.4
|
||||
@@ -130,8 +130,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: EnemyIceSpectre
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
name: cp14-modifier-zombie
|
||||
categories:
|
||||
Danger: 0.4
|
||||
@@ -150,7 +150,7 @@
|
||||
id: MobSlimeElectric
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
max: 5
|
||||
name: cp14-modifier-slime
|
||||
categories:
|
||||
Danger: 0.35
|
||||
@@ -165,7 +165,7 @@
|
||||
id: MobSlimeFire
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
max: 5
|
||||
name: cp14-modifier-slime
|
||||
categories:
|
||||
Danger: 0.3
|
||||
@@ -182,7 +182,7 @@
|
||||
id: MobSlimeIce
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
name: cp14-modifier-slime
|
||||
categories:
|
||||
Danger: 0.3
|
||||
@@ -199,7 +199,7 @@
|
||||
id: MobSlimeBase
|
||||
levels:
|
||||
min: 0
|
||||
max: 5
|
||||
max: 1
|
||||
categories:
|
||||
Danger: 0.25
|
||||
layers:
|
||||
@@ -213,7 +213,7 @@
|
||||
id: MobWatcherIce
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
max: 2
|
||||
name: cp14-modifier-watcher
|
||||
categories:
|
||||
Danger: 0.3
|
||||
@@ -232,7 +232,7 @@
|
||||
id: MobWatcherMagma
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
max: 2
|
||||
name: cp14-modifier-watcher
|
||||
categories:
|
||||
Danger: 0.3
|
||||
@@ -250,8 +250,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: MobSpiders
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
min: 2
|
||||
max: 4
|
||||
name: cp14-modifier-spiders
|
||||
categories:
|
||||
Danger: 0.3
|
||||
@@ -277,8 +277,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: MobBigBear
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
min: 3
|
||||
max: 5
|
||||
categories:
|
||||
Danger: 0.5
|
||||
requiredTags:
|
||||
@@ -295,7 +295,7 @@
|
||||
id: MyconideFlyagaric
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
categories:
|
||||
Danger: 0.3
|
||||
requiredTags:
|
||||
@@ -311,7 +311,7 @@
|
||||
id: MyconideLumish
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
categories:
|
||||
Danger: 0.3
|
||||
requiredTags:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
id: RoyalPumpkin
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
generationProb: 0.1
|
||||
categories:
|
||||
@@ -25,7 +25,7 @@
|
||||
id: LucenTree
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
generationProb: 0.1
|
||||
categories:
|
||||
@@ -48,7 +48,7 @@
|
||||
id: StatueStoneHead
|
||||
levels:
|
||||
min: 0
|
||||
max: 6
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
generationProb: 0.1
|
||||
categories:
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
id: EnemySkeletonT2
|
||||
levels:
|
||||
min: 4
|
||||
max: 10
|
||||
max: 5
|
||||
name: cp14-modifier-skeleton
|
||||
generationWeight: 2.0
|
||||
categories:
|
||||
@@ -35,7 +35,7 @@
|
||||
id: EnemyLurker
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
generationWeight: 0.33
|
||||
generationProb: 0.25
|
||||
categories:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
id: MapLightDarkness
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
max: 5
|
||||
generationWeight: 2
|
||||
categories:
|
||||
MapLight: 1
|
||||
@@ -15,7 +15,7 @@
|
||||
id: MapLightDarkRed
|
||||
levels:
|
||||
min: 3
|
||||
max: 10
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
name: cp14-modifier-night
|
||||
@@ -65,7 +65,7 @@
|
||||
id: MapLightCycleDefault
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
generationWeight: 2
|
||||
@@ -78,7 +78,7 @@
|
||||
id: MapLightCycleCold
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
generationWeight: 2
|
||||
@@ -93,7 +93,7 @@
|
||||
id: MapLightCycleHot
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
requiredTags:
|
||||
@@ -107,7 +107,7 @@
|
||||
id: MapLightCycleHot2
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
categories:
|
||||
MapLight: 1
|
||||
requiredTags:
|
||||
|
||||
@@ -1,10 +1,29 @@
|
||||
# TIER 1
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: Marble
|
||||
levels:
|
||||
min: 0
|
||||
max: 5
|
||||
unique: true
|
||||
categories:
|
||||
Ore: 0
|
||||
requiredTags:
|
||||
- CP14DemiplaneOres
|
||||
layers:
|
||||
- !type:CP14OreDunGen
|
||||
entityMask:
|
||||
- CP14WallStone
|
||||
entity: CP14WallMarbleStone
|
||||
count: 5
|
||||
minGroupSize: 5
|
||||
maxGroupSize: 10
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: IronOre
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 1
|
||||
max: 5
|
||||
name: cp14-modifier-iron-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -24,8 +43,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: IronOreUnderground
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 1
|
||||
max: 5
|
||||
name: cp14-modifier-iron-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -46,7 +65,7 @@
|
||||
id: CopperOre
|
||||
levels:
|
||||
min: 0
|
||||
max: 5
|
||||
max: 2
|
||||
name: cp14-modifier-copper-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -67,7 +86,7 @@
|
||||
id: CopperOreUnderground
|
||||
levels:
|
||||
min: 0
|
||||
max: 5
|
||||
max: 2
|
||||
name: cp14-modifier-copper-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -88,7 +107,7 @@
|
||||
id: CoalOre
|
||||
levels:
|
||||
min: 0
|
||||
max: 8
|
||||
max: 2
|
||||
name: cp14-modifier-coal-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -109,7 +128,7 @@
|
||||
id: CoalOreUnderground
|
||||
levels:
|
||||
min: 0
|
||||
max: 8
|
||||
max: 2
|
||||
name: cp14-modifier-copper-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -131,8 +150,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: GoldOre
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
min: 3
|
||||
max: 5
|
||||
unique: false
|
||||
categories:
|
||||
Ore: 0.25
|
||||
@@ -150,8 +169,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: MithrilOre
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
min: 4
|
||||
max: 5
|
||||
name: cp14-modifier-mithril-ore
|
||||
unique: false
|
||||
categories:
|
||||
@@ -171,8 +190,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: MithrilOreUnderground
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
min: 4
|
||||
max: 5
|
||||
name: cp14-modifier-mithril-ore
|
||||
unique: false
|
||||
categories:
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
- type: cp14LocationModifier
|
||||
id: DemiplaneArcTriple
|
||||
levels:
|
||||
min: 0
|
||||
max: 1
|
||||
generationWeight: 0.3
|
||||
categories:
|
||||
Passage: 1
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 3
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: DemiplaneArcDouble
|
||||
levels:
|
||||
min: 0
|
||||
max: 3
|
||||
generationWeight: 0.6
|
||||
categories:
|
||||
Passage: 1
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 2
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: DemiplaneArcSingle
|
||||
levels:
|
||||
min: 1
|
||||
max: 4
|
||||
generationWeight: 1
|
||||
categories:
|
||||
Passage: 1
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 1
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
@@ -2,7 +2,7 @@
|
||||
id: Quartz
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 2
|
||||
categories:
|
||||
Reward: 0.15
|
||||
layers:
|
||||
@@ -15,8 +15,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: CP14CrystalQuartzEarth
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneUnderground
|
||||
@@ -32,8 +32,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: CP14CrystalQuartzFire
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneHot
|
||||
@@ -49,8 +49,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: CP14CrystalQuartzWater
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneWater
|
||||
@@ -66,8 +66,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: CP14CrystalQuartzAir
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
requiredTags:
|
||||
- CP14DemiplaneOpenSky
|
||||
@@ -83,8 +83,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: CP14CrystalQuartzOrder
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.15
|
||||
@@ -98,8 +98,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: CP14CrystalQuartzChaos
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 2
|
||||
max: 5
|
||||
generationWeight: 0.1
|
||||
categories:
|
||||
Reward: 0.15
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
id: LootT1
|
||||
levels:
|
||||
min: 0
|
||||
max: 3
|
||||
max: 2
|
||||
generationWeight: 2
|
||||
categories:
|
||||
Reward: 0.15
|
||||
@@ -19,7 +19,7 @@
|
||||
id: Rabbits
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
name: cp14-modifier-rabbits
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
@@ -37,7 +37,7 @@
|
||||
id: Boar
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 3
|
||||
name: cp14-modifier-boars
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
@@ -55,7 +55,7 @@
|
||||
id: Frog
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 3
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
Reward: 0.1
|
||||
@@ -76,7 +76,7 @@
|
||||
id: Sheep
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 3
|
||||
name: cp14-modifier-sheeps
|
||||
generationWeight: 0.4
|
||||
categories:
|
||||
@@ -95,8 +95,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: LootT2
|
||||
levels:
|
||||
min: 2
|
||||
max: 10
|
||||
min: 4
|
||||
max: 5
|
||||
generationWeight: 2
|
||||
categories:
|
||||
Reward: 0.15
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: ArtifactRoom
|
||||
levels:
|
||||
min: 1
|
||||
max: 10
|
||||
min: 3
|
||||
max: 5
|
||||
generationWeight: 2
|
||||
categories:
|
||||
Reward: 0.15
|
||||
@@ -16,7 +16,7 @@
|
||||
id: Ruins
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
max: 5
|
||||
name: cp14-modifier-ruins
|
||||
categories:
|
||||
Reward: 0.2
|
||||
@@ -30,8 +30,8 @@
|
||||
- type: cp14LocationModifier
|
||||
id: Geodes
|
||||
levels:
|
||||
min: 0
|
||||
max: 10
|
||||
min: 1
|
||||
max: 3
|
||||
name: cp14-modifier-ruins
|
||||
categories:
|
||||
Reward: 0.15
|
||||
|
||||
@@ -19,3 +19,6 @@
|
||||
- type: cp14LocationModifierCategory
|
||||
id: MapLight
|
||||
|
||||
- type: cp14LocationModifierCategory
|
||||
id: Passage
|
||||
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
- type: cp14LocationModifier
|
||||
id: ConnectionStone
|
||||
generationProb: 0
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 2
|
||||
tags:
|
||||
- CP14LocationConnectionStone
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: ConnectionSnow
|
||||
generationProb: 0
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 2
|
||||
tags:
|
||||
- CP14LocationConnectionSnow
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: ConnectionMushroom
|
||||
generationProb: 0
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 2
|
||||
tags:
|
||||
- CP14LocationConnectionMushroom
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: ConnectionGrass
|
||||
generationProb: 0
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 2
|
||||
tags:
|
||||
- CP14LocationConnectionGrass
|
||||
@@ -29,4 +29,13 @@
|
||||
- CP14FloorSnow
|
||||
count: 8
|
||||
minGroupSize: 3
|
||||
maxGroupSize: 3
|
||||
maxGroupSize: 3
|
||||
|
||||
- type: cp14LocationModifier
|
||||
id: CP14DemiplanEnterRoom
|
||||
generationProb: 0
|
||||
layers:
|
||||
- !type:CP14RoomsDunGen
|
||||
count: 2
|
||||
tags:
|
||||
- CP14DemiplanEnterRoom
|
||||
@@ -0,0 +1,47 @@
|
||||
- type: Tag
|
||||
id: CP14DemiplanArcRoom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14DemiplanArcRoom_1
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_arc.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 0,0
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14DemiplanArcRoom_2
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_arc.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 8,0
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14DemiplanArcRoom_3
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_arc.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 16,0
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14DemiplanArcRoom_4
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_arc.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 24,0
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14DemiplanArcRoom_5
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_arc.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 32,0
|
||||
tags:
|
||||
- CP14DemiplanArcRoom
|
||||
@@ -42,24 +42,6 @@
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 0,8
|
||||
offset: 32,0
|
||||
tags:
|
||||
- CP14DemiplanEnterRoom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14DemiplanEnterRoom_6
|
||||
size: 9,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 8,8
|
||||
tags:
|
||||
- CP14DemiplanEnterRoom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14DemiplanEnterRoom_7
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 19,8
|
||||
tags:
|
||||
- CP14DemiplanEnterRoom
|
||||
- CP14DemiplanEnterRoom
|
||||
@@ -1,86 +0,0 @@
|
||||
- type: Tag
|
||||
id: CP14LocationConnectionStone
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionStone_1
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 0,0
|
||||
tags:
|
||||
- CP14LocationConnectionStone
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionStone_2
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 8,0
|
||||
tags:
|
||||
- CP14LocationConnectionStone
|
||||
|
||||
|
||||
- type: Tag
|
||||
id: CP14LocationConnectionSnow
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionSnow_1
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 16,0
|
||||
tags:
|
||||
- CP14LocationConnectionSnow
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionSnow_2
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 24,0
|
||||
tags:
|
||||
- CP14LocationConnectionSnow
|
||||
|
||||
|
||||
- type: Tag
|
||||
id: CP14LocationConnectionMushroom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionMushroom_1
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 32,0
|
||||
tags:
|
||||
- CP14LocationConnectionMushroom
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionMushroom_2
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 40,0
|
||||
tags:
|
||||
- CP14LocationConnectionMushroom
|
||||
|
||||
|
||||
- type: Tag
|
||||
id: CP14LocationConnectionGrass
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionGrass_1
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 0,8
|
||||
tags:
|
||||
- CP14LocationConnectionGrass
|
||||
|
||||
- type: dungeonRoom
|
||||
id: CP14LocationConnectionGrass_2
|
||||
size: 7,7
|
||||
atlas: /Maps/_CP14/Dungeon/location_connections.yml
|
||||
ignoreTile: FloorShuttlePurple
|
||||
offset: 8,8
|
||||
tags:
|
||||
- CP14LocationConnectionGrass
|
||||
@@ -438,6 +438,8 @@ CP14SpellScrollMonolithWarp: null
|
||||
CP14GuidebookDemiplanes: null
|
||||
CP14DemiplanePassway: null
|
||||
CP14DemiplaneCore: null
|
||||
CP14SpawnerLocationConnection: null
|
||||
CP14LocationPassway: null
|
||||
|
||||
# <---> CrystallEdge migration zone end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user