* DungeonData rework Back to fields, serializes better, just make new layers dumby. * wawawewa * Fix this * Fixes * Port the work over * wawawewa * zoom * Kinda workin * Adjust wawa * Unloading work * Ore + entitytable fixes Iterate every dungeon not just last. * Big shot * wawawewa * Fixes * true * Fixes # Conflicts: # Content.Server/Procedural/DungeonJob/DungeonJob.cs * wawawewa * Fixes * Fix * Lot of work * wawawewa * Fixing * eh? * a * Fix a heap of stuff * Better ignored check * Reserve tile changes * biome * changes * wawawewa * Fixes & snow * Shadow fixes * wawawewa * smol * Add layer API * More work * wawawewa * Preloads and running again * wawawewa * Modified * Replacements and command * Runtime support * werk * Fix expeds + dungeon alltiles * reh --------- Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
70 lines
1.7 KiB
C#
70 lines
1.7 KiB
C#
using Content.Shared.Procedural;
|
|
using Robust.Shared.Prototypes;
|
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
|
|
|
namespace Content.Server.Gateway.Components;
|
|
|
|
/// <summary>
|
|
/// Generates gateway destinations at a regular interval.
|
|
/// </summary>
|
|
[RegisterComponent, AutoGenerateComponentPause]
|
|
public sealed partial class GatewayGeneratorComponent : Component
|
|
{
|
|
/// <summary>
|
|
/// Prototype to spawn on the generated map if applicable.
|
|
/// </summary>
|
|
[DataField]
|
|
public EntProtoId? Proto = "Gateway";
|
|
|
|
/// <summary>
|
|
/// Next time another seed unlocks.
|
|
/// </summary>
|
|
[DataField(customTypeSerializer:typeof(TimeOffsetSerializer))]
|
|
[AutoPausedField]
|
|
public TimeSpan NextUnlock;
|
|
|
|
/// <summary>
|
|
/// How long it takes to unlock another destination once one is taken.
|
|
/// </summary>
|
|
[DataField]
|
|
public TimeSpan UnlockCooldown = TimeSpan.FromMinutes(75);
|
|
|
|
/// <summary>
|
|
/// Maps we've generated.
|
|
/// </summary>
|
|
[DataField]
|
|
public List<EntityUid> Generated = new();
|
|
|
|
[DataField]
|
|
public int MobLayerCount = 1;
|
|
|
|
/// <summary>
|
|
/// Mob layers to pick from.
|
|
/// </summary>
|
|
[DataField]
|
|
public List<ProtoId<DungeonConfigPrototype>> MobLayers = new()
|
|
{
|
|
"Carps",
|
|
"Xenos",
|
|
};
|
|
|
|
[DataField]
|
|
public int LootLayerCount = 3;
|
|
|
|
/// <summary>
|
|
/// Loot layers to pick from.
|
|
/// </summary>
|
|
public List<ProtoId<DungeonConfigPrototype>> LootLayers = new()
|
|
{
|
|
"OreIron",
|
|
"OreQuartz",
|
|
"OreGold",
|
|
"OreSilver",
|
|
"OrePlasma",
|
|
"OreUranium",
|
|
"OreBananium",
|
|
"OreArtifactFragment",
|
|
};
|
|
}
|
|
|