diff --git a/Content.Client/Entry/EntryPoint.cs b/Content.Client/Entry/EntryPoint.cs index 210720c45d..1b6041cdd8 100644 --- a/Content.Client/Entry/EntryPoint.cs +++ b/Content.Client/Entry/EntryPoint.cs @@ -122,7 +122,11 @@ namespace Content.Client.Entry _prototypeManager.RegisterIgnore("alertLevels"); _prototypeManager.RegisterIgnore("nukeopsRole"); _prototypeManager.RegisterIgnore("ghostRoleRaffleDecider"); - _prototypeManager.RegisterIgnore("candyFlavor"); // Delta-V + // Begin DeltaV Additions + _prototypeManager.RegisterIgnore("candyFlavor"); + _prototypeManager.RegisterIgnore("mappingCategory"); + _prototypeManager.RegisterIgnore("mapCategories"); + // End DeltaV Additions _componentFactory.GenerateNetIds(); _adminManager.Initialize(); diff --git a/Content.IntegrationTests/Tests/_DV/MappingCategoryTest.cs b/Content.IntegrationTests/Tests/_DV/MappingCategoryTest.cs new file mode 100644 index 0000000000..d55f4ff881 --- /dev/null +++ b/Content.IntegrationTests/Tests/_DV/MappingCategoryTest.cs @@ -0,0 +1,100 @@ +using Content.Server._DV.Mapping; +using Robust.Shared.ContentPack; +using Robust.Shared.EntitySerialization; +using Robust.Shared.EntitySerialization.Systems; +using Robust.Shared.GameObjects; +using Robust.Shared.Log; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Markdown.Mapping; +using Robust.Shared.Serialization.Markdown.Value; +using Robust.Shared.Utility; +using System.Linq; + +namespace Content.IntegrationTests.Tests._DV; + +/// +/// Checks that every mapped entity with is allowed to be mapped. +/// +public sealed class MappingCategoryTest +{ + private const string MapsPath = "/Maps"; + // dev map doesn't matter and don't want to change it + private const string TestMapsPath = "/Maps/Test/"; + + [Test] + public async Task NonGameMapsLoadableTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + var entMan = server.ResolveDependency(); + var resMan = server.ResolveDependency(); + var mapLoader = entMan.System(); + var catSys = entMan.System(); // meow + var mapSys = entMan.System(); + var sawmill = server.ResolveDependency().GetSawmill("mapping_categories"); + + await server.WaitPost(() => + { + Assert.Multiple(() => + { + var mapFolder = new ResPath(MapsPath); + foreach (var map in resMan.ContentFindFiles(mapFolder)) + { + if (map.Extension != "yml" || map.Filename.StartsWith(".", StringComparison.Ordinal)) + continue; + + var rootedPath = map.ToRootedPath().ToString(); + if (rootedPath.StartsWith(TestMapsPath, StringComparison.Ordinal)) + continue; + + if (GetCategory(map, mapLoader) is not {} category) + { + sawmill.Warning($"Map {map} is missing a category, skipping it."); + continue; + } + + var mapUid = mapSys.CreateMap(out var mapId); + var opts = new MapLoadOptions + { + MergeMap = category == FileCategory.Map + ? null // don't try to reparent maps + : mapId // needed or else grids will be de-orphaned which is bad + }; + Assert.That(mapLoader.TryLoadGeneric(map, out var maps, out _, opts), $"Failed to load map {rootedPath}"); + maps.Add(mapUid); + + var allowed = catSys.GetAllowedCategories(rootedPath); + var query = entMan.EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) + { + var ent = (uid, comp); + Assert.That(catSys.CanMap(ent, allowed), $"Entity {entMan.ToPrettyString(uid)} cannot be mapped on {rootedPath}"); + } + + foreach (var uid in maps) + { + entMan.DeleteEntity(uid); + } + } + }); + }); + + await server.WaitRunTicks(1); + + await pair.CleanReturnAsync(); + } + + // me when engine doesnt have this + private FileCategory? GetCategory(ResPath path, MapLoaderSystem mapLoader) + { + Assert.That(mapLoader.TryReadFile(path, out var data), $"Failed to read map file {path}"); + var meta = data.Get("meta"); + if (!meta.TryGet("category", out var node)) + return null; + + var valid = Enum.TryParse(node.Value, out var cat); + Assert.That(valid, $"Category for {path} is invalid"); + return cat; + } +} diff --git a/Content.Server/_DV/Mapping/MapCategoriesPrototype.cs b/Content.Server/_DV/Mapping/MapCategoriesPrototype.cs new file mode 100644 index 0000000000..6be70775f3 --- /dev/null +++ b/Content.Server/_DV/Mapping/MapCategoriesPrototype.cs @@ -0,0 +1,25 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server._DV.Mapping; + +/// +/// Defines what entity can be added to a certain map. +/// +[Prototype] +public sealed partial class MapCategoriesPrototype : IPrototype +{ + [IdDataField] + public string ID { get; set; } = default!; + + /// + /// The map path to apply these categories for. + /// + [DataField(required: true)] + public string Map = string.Empty; + + /// + /// The categories that are allowed for the defined map. + /// + [DataField(required: true)] + public HashSet> Allowed = new(); +} diff --git a/Content.Server/_DV/Mapping/MappingCategoriesComponent.cs b/Content.Server/_DV/Mapping/MappingCategoriesComponent.cs new file mode 100644 index 0000000000..ff62ad89da --- /dev/null +++ b/Content.Server/_DV/Mapping/MappingCategoriesComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server._DV.Mapping; + +/// +/// Component added to prototypes to prevent them being mapped on stations that do not allow them. +/// +[RegisterComponent, Access(typeof(MappingCategoriesSystem))] +public sealed partial class MappingCategoriesComponent : Component +{ + /// + /// The categories this prototype has. + /// + [DataField(required: true)] + public List> Categories = new(); +} diff --git a/Content.Server/_DV/Mapping/MappingCategoriesSystem.cs b/Content.Server/_DV/Mapping/MappingCategoriesSystem.cs new file mode 100644 index 0000000000..104c1cb23b --- /dev/null +++ b/Content.Server/_DV/Mapping/MappingCategoriesSystem.cs @@ -0,0 +1,89 @@ +using Robust.Shared.Containers; +using Robust.Shared.Prototypes; + +namespace Content.Server._DV.Mapping; + +public sealed class MappingCategoriesSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + + private readonly HashSet> _ignoreInsideContainers = new(); + private readonly HashSet> _emptyCategories = new(); + private readonly Dictionary _maps = new(); + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnPrototypesReloaded); + + CacheCategories(); + CacheMaps(); + } + + /// + /// Returns whether a category is ignored when inside a container. + /// + public bool IsIgnoredInsideContainer(ProtoId id) + { + return _ignoreInsideContainers.Contains(id); + } + + /// + /// Get the allowed categories for a given map path. + /// + public HashSet> GetAllowedCategories(string mapPath) + { + if (_maps.TryGetValue(mapPath, out var proto)) + return proto.Allowed; + + return _emptyCategories; + } + + /// + /// Returns true if an entity can be mapped. + /// + public bool CanMap(Entity ent, HashSet> allowed) + { + var insideContainer = _container.IsEntityInContainer(ent); + foreach (var id in ent.Comp.Categories) + { + if (insideContainer && IsIgnoredInsideContainer(id)) + continue; + + if (!allowed.Contains(id)) + return false; + } + + // all categories were skipped or allowed by the map + return true; + } + + private void OnPrototypesReloaded(PrototypesReloadedEventArgs args) + { + if (args.WasModified()) + CacheCategories(); + if (args.WasModified()) + CacheMaps(); + } + + private void CacheCategories() + { + _ignoreInsideContainers.Clear(); + foreach (var proto in _proto.EnumeratePrototypes()) + { + if (proto.IgnoreInsideContainer) + _ignoreInsideContainers.Add(proto.ID); + } + } + + private void CacheMaps() + { + _maps.Clear(); + foreach (var proto in _proto.EnumeratePrototypes()) + { + _maps.Add(proto.Map, proto); + } + } +} diff --git a/Content.Server/_DV/Mapping/MappingCategoryPrototype.cs b/Content.Server/_DV/Mapping/MappingCategoryPrototype.cs new file mode 100644 index 0000000000..ebb1d4a1f6 --- /dev/null +++ b/Content.Server/_DV/Mapping/MappingCategoryPrototype.cs @@ -0,0 +1,21 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server._DV.Mapping; + +/// +/// A mapping category that can be applied to items. +/// Maps can specify what categories they allow. +/// +[Prototype] +public sealed partial class MappingCategoryPrototype : IPrototype +{ + [IdDataField] + public string ID { get; set; } = default!; + + /// + /// Ignores checking items that are inside containers for this category. + /// Useful for stamps which are not allowed to be mapped directly, but spawn in head lockers. + /// + [DataField] + public bool IgnoreInsideContainer; +} diff --git a/Resources/Maps/_DV/Salvage/DV-asteroid-mining-chemlab.yml b/Resources/Maps/_DV/Salvage/DV-asteroid-mining-chemlab.yml index 1d207871e7..c8eca523e4 100644 --- a/Resources/Maps/_DV/Salvage/DV-asteroid-mining-chemlab.yml +++ b/Resources/Maps/_DV/Salvage/DV-asteroid-mining-chemlab.yml @@ -5486,7 +5486,7 @@ entities: - type: Transform pos: 8.5,9.5 parent: 1 -- proto: ToolboxElectricalTurretFilled +- proto: ToolboxElectricalFilled entities: - uid: 334 components: diff --git a/Resources/Maps/_DV/centcomm.yml b/Resources/Maps/_DV/centcomm.yml index 1954f561fb..31bc69bc6e 100644 --- a/Resources/Maps/_DV/centcomm.yml +++ b/Resources/Maps/_DV/centcomm.yml @@ -1,6 +1,17 @@ meta: - format: 6 - postmapinit: false + format: 7 + category: Grid + engineVersion: 247.2.0 + forkId: "" + forkVersion: "" + time: 03/04/2025 18:40:52 + entityCount: 7224 +maps: [] +grids: +- 1668 +orphans: +- 1668 +nullspace: [] tilemap: 0: Space 7: FloorAsteroidSand diff --git a/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml b/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml index 1b191d90f7..d7c5a4aaf7 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/syndicate.yml @@ -6,6 +6,9 @@ components: - type: SurplusBundle totalPrice: 50 + - type: MappingCategories # DeltaV + categories: + - Syndicate - type: entity id: CrateCybersunJuggernautBundle @@ -21,6 +24,9 @@ - id: ClothingHandsGlovesCombat - id: DoubleEmergencyOxygenTankFilled - id: DoubleEmergencyNitrogenTankFilled + - type: MappingCategories # DeltaV + categories: + - Syndicate - type: entity id: CrateSyndicateSuperSurplusBundle @@ -30,3 +36,6 @@ components: - type: SurplusBundle totalPrice: 125 + - type: MappingCategories # DeltaV + categories: + - Syndicate diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index 30bf24a43a..f9541634df 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -568,6 +568,9 @@ - Hardsuit - WhitelistChameleon - HidesHarpyWings + - type: MappingCategories # DeltaV + categories: + - Syndicate # Syndicate Medic Hardsuit - type: entity @@ -662,6 +665,9 @@ - type: HeldSpeedModifier - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitSyndieCommander + - type: MappingCategories # DeltaV + categories: + - Syndicate #Cybersun Juggernaut Hardsuit - type: entity @@ -701,6 +707,9 @@ newItem: ClothingOuterHardsuitJuggernautReverseEngineered recipes: - ClothingOuterHardsuitJuggernautReverseEngineered + - type: MappingCategories # DeltaV + categories: + - Syndicate #Wizard Hardsuit - type: entity @@ -733,6 +742,9 @@ - type: HeldSpeedModifier - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitWizard + - type: MappingCategories # DeltaV + categories: + - Wizard #Ling Space Suit - type: entity @@ -763,6 +775,9 @@ - type: HeldSpeedModifier - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitLing + - type: MappingCategories # DeltaV + categories: + - Changeling #Pirate EVA Suit (Deep Space EVA Suit) #Despite visually appearing like a softsuit, it functions exactly like a hardsuit would (parents off of base hardsuit, has resistances and toggleable clothing, etc.) so it goes here. @@ -795,6 +810,9 @@ clothingPrototype: ClothingHeadHelmetHardsuitPirateEVA - type: StaticPrice price: 0 + - type: MappingCategories # DeltaV + categories: + - Pirate #Pirate Captain Hardsuit - type: entity @@ -828,6 +846,9 @@ clothingPrototype: ClothingHeadHelmetHardsuitPirateCap - type: StaticPrice price: 0 + - type: MappingCategories # DeltaV + categories: + - Pirate #CENTCOMM / ERT HARDSUITS #ERT Leader Hardsuit diff --git a/Resources/Prototypes/Entities/Debugging/clicktest.yml b/Resources/Prototypes/Entities/Debugging/clicktest.yml index 7eb0a06330..b830922b04 100644 --- a/Resources/Prototypes/Entities/Debugging/clicktest.yml +++ b/Resources/Prototypes/Entities/Debugging/clicktest.yml @@ -17,6 +17,9 @@ - type: Sprite noRot: false sprite: Effects/clicktest.rsi + - type: MappingCategories # DeltaV + categories: + - Debug - type: entity diff --git a/Resources/Prototypes/Entities/Debugging/debug_sweps.yml b/Resources/Prototypes/Entities/Debugging/debug_sweps.yml index 9ba7c85e1e..00e32710c5 100644 --- a/Resources/Prototypes/Entities/Debugging/debug_sweps.yml +++ b/Resources/Prototypes/Entities/Debugging/debug_sweps.yml @@ -40,6 +40,9 @@ whitelist: tags: - CartridgePistol + - type: MappingCategories # DeltaV + categories: + - Debug - type: entity id: MagazinePistolDebug @@ -55,6 +58,9 @@ capacity: 1000 - type: Sprite sprite: Objects/Weapons/Guns/Ammunition/Magazine/Pistol/pistol_mag.rsi + - type: MappingCategories # DeltaV + categories: + - Debug - type: entity id: BulletDebug @@ -70,6 +76,9 @@ damage: types: Blunt: 20000 + - type: MappingCategories # DeltaV + categories: + - Debug - type: entity id: CartridgeDebug @@ -82,6 +91,9 @@ - Debug - type: CartridgeAmmo proto: BulletDebug + - type: MappingCategories # DeltaV + categories: + - Debug - type: entity name: bang stick gibber @@ -103,6 +115,9 @@ - type: Item size: Tiny sprite: Objects/Weapons/Melee/debug.rsi + - type: MappingCategories # DeltaV + categories: + - Debug - type: entity name: bang stick 100dmg @@ -116,6 +131,9 @@ damage: types: Blunt: 100 + - type: MappingCategories # DeltaV + categories: + - Debug - type: entity name: bang stick 200dmg @@ -129,3 +147,6 @@ damage: types: Blunt: 200 + - type: MappingCategories # DeltaV + categories: + - Debug diff --git a/Resources/Prototypes/Entities/Debugging/item.yml b/Resources/Prototypes/Entities/Debugging/item.yml index e3c8ffddd2..2af4449985 100644 --- a/Resources/Prototypes/Entities/Debugging/item.yml +++ b/Resources/Prototypes/Entities/Debugging/item.yml @@ -19,3 +19,6 @@ - 1, 4, 6, 4 - 6, 2, 6, 2 - 5, 3, 5, 5 + - type: MappingCategories # DeltaV + categories: + - Debug diff --git a/Resources/Prototypes/Entities/Debugging/options_visualizer.yml b/Resources/Prototypes/Entities/Debugging/options_visualizer.yml index 229ffa00cc..d720f4ab63 100644 --- a/Resources/Prototypes/Entities/Debugging/options_visualizer.yml +++ b/Resources/Prototypes/Entities/Debugging/options_visualizer.yml @@ -21,4 +21,7 @@ data: { state: motion } - options: [Test, ReducedMotion] data: { state: both } + - type: MappingCategories # DeltaV + categories: + - Debug diff --git a/Resources/Prototypes/Entities/Debugging/spanisharmyknife.yml b/Resources/Prototypes/Entities/Debugging/spanisharmyknife.yml index 023ba8c08a..d96733089d 100644 --- a/Resources/Prototypes/Entities/Debugging/spanisharmyknife.yml +++ b/Resources/Prototypes/Entities/Debugging/spanisharmyknife.yml @@ -38,3 +38,6 @@ - behavior: Anchoring useSound: /Audio/Items/drill_use.ogg changeSound: /Audio/Items/change_drill.ogg + - type: MappingCategories # DeltaV + categories: + - Debug diff --git a/Resources/Prototypes/Entities/Debugging/stress_test.yml b/Resources/Prototypes/Entities/Debugging/stress_test.yml index 72651cdaee..4f6c870d28 100644 --- a/Resources/Prototypes/Entities/Debugging/stress_test.yml +++ b/Resources/Prototypes/Entities/Debugging/stress_test.yml @@ -10,3 +10,6 @@ sprite: Effects/explosion.rsi state: explosion - type: StressTestMovement + - type: MappingCategories # DeltaV + categories: + - Debug diff --git a/Resources/Prototypes/Entities/Debugging/tippy.yml b/Resources/Prototypes/Entities/Debugging/tippy.yml index 7f149c3b5d..0ffc3ae0a5 100644 --- a/Resources/Prototypes/Entities/Debugging/tippy.yml +++ b/Resources/Prototypes/Entities/Debugging/tippy.yml @@ -28,3 +28,6 @@ backgroundPatchMargin: 16.0, 16.0, 16.0, 16.0 backgroundModulate: "#ffffcc" fontAccentColor: "#000000" + - type: MappingCategories # DeltaV + categories: + - Debug diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml index ecc57a03bd..7d73335ba3 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_misc.yml @@ -75,6 +75,9 @@ - type: Prayable sentMessage: prayer-popup-notify-syndicate-sent notificationPrefix: prayer-chat-notify-syndicate + - type: MappingCategories # DeltaV + categories: + - Syndicate - type: entity parent: BaseHandheldInstrument diff --git a/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml b/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml index d3f6088699..dfb8589a21 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/rubber_stamp.yml @@ -21,6 +21,9 @@ size: Tiny - type: StealTarget stealGroup: Stamp + - type: MappingCategories # DeltaV + categories: + - Stamps - type: entity name: alternate rubber stamp @@ -36,6 +39,8 @@ params: volume: -2 maxDistance: 5 + - type: MappingCategories # DeltaV - approved/denied are fine + categories: [] - type: entity name: captain's rubber stamp @@ -177,12 +182,12 @@ id: RubberStampQm categories: [ DoNotMap ] components: - - type: Stamp - stampedName: stamp-component-stamped-name-qm - stampedColor: "#a23e3e" - stampState: "paper_stamp-qm" - - type: Sprite - state: stamp-qm + - type: Stamp + stampedName: stamp-component-stamped-name-qm + stampedColor: "#a23e3e" + stampState: "paper_stamp-qm" + - type: Sprite + state: stamp-qm - type: entity name: mystagogue's rubber stamp # DeltaV - Epistemics Department replacing Science @@ -190,12 +195,12 @@ id: RubberStampRd categories: [ DoNotMap ] components: - - type: Stamp - stampedName: stamp-component-stamped-name-rd - stampedColor: "#1f66a0" - stampState: "paper_stamp-rd" - - type: Sprite - state: stamp-rd + - type: Stamp + stampedName: stamp-component-stamped-name-rd + stampedColor: "#1f66a0" + stampState: "paper_stamp-rd" + - type: Sprite + state: stamp-rd - type: entity name: trader's rubber stamp diff --git a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml index dd1f41e571..d45881110d 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/toolbox.yml @@ -99,6 +99,9 @@ max: 1 - type: StaticPrice price: 1350 + - type: MappingCategories # DeltaV + categories: + - Syndicate - type: entity name: artistic toolbox diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml index 8b4cbe5b96..2d127869f9 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/armblade.yml @@ -28,3 +28,6 @@ - type: SurgeryTool # Shitmed startSound: path: /Audio/_Shitmed/Medical/Surgery/saw.ogg + - type: MappingCategories # DeltaV + categories: + - Changeling diff --git a/Resources/Prototypes/Entities/Objects/base_contraband.yml b/Resources/Prototypes/Entities/Objects/base_contraband.yml index 3ad8d80492..dfbf29f2a5 100644 --- a/Resources/Prototypes/Entities/Objects/base_contraband.yml +++ b/Resources/Prototypes/Entities/Objects/base_contraband.yml @@ -48,6 +48,9 @@ components: - type: Contraband allowedDepartments: [ CentralCommand ] + - type: MappingCategories # DeltaV + categories: + - Centcomm - type: entity id: BaseCommandContraband diff --git a/Resources/Prototypes/_DV/Mapping/categories.yml b/Resources/Prototypes/_DV/Mapping/categories.yml new file mode 100644 index 0000000000..04ea3f5005 --- /dev/null +++ b/Resources/Prototypes/_DV/Mapping/categories.yml @@ -0,0 +1,28 @@ +# Stuff like bang stick that should NEVER be mapped +- type: mappingCategory + id: Debug + +# Only centcomm gets centcomm gear +- type: mappingCategory + id: Centcomm + +# Changeling stuff should probably never be mapped anywhere +- type: mappingCategory + id: Changeling + +# Pirate gear for the pirate ship +- type: mappingCategory + id: Pirate + +# Serious syndicate gear that stations should not have, like blood-reds. +- type: mappingCategory + id: Syndicate + +# Only the wizard shuttle gets wizard gear +- type: mappingCategory + id: Wizard + +# Stamps should not be mapped directly, their lockers should instead. +- type: mappingCategory + id: Stamps + ignoreInsideContainer: true diff --git a/Resources/Prototypes/_DV/Mapping/maps.yml b/Resources/Prototypes/_DV/Mapping/maps.yml new file mode 100644 index 0000000000..7dfcbd82d5 --- /dev/null +++ b/Resources/Prototypes/_DV/Mapping/maps.yml @@ -0,0 +1,109 @@ +# Central Command + +- type: mapCategories + id: Centcomm + map: /Maps/_DV/centcomm.yml + allowed: + - Centcomm + - Stamps # no CC official locker to put the btamp in + +# Stations + +- type: mapCategories + id: Chibi + map: /Maps/chibi.yml + allowed: + - Stamps # tiny station doesn't have lockers for everyone + +- type: mapCategories + id: Shoukou + map: /Maps/shoukou.yml + allowed: + - Stamps # greytide stamp is mapped on shoukou + +# Dungeons + +- type: mapCategories + id: SnowyLabs + map: /Maps/Dungeon/snowy_labs.yml + allowed: + - Centcomm # CC pen gamer loot + +# Nonstations + +- type: mapCategories + id: NukiePlanet + map: /Maps/Nonstations/nukieplanet.yml + allowed: + - Syndicate # obviously nukies can have syndicate gear + +- type: mapCategories + id: ListeningPost + map: /Maps/_DV/Nonstations/listening_post.yml + allowed: + - Syndicate + +# Shuttles + +- type: mapCategories + id: Dart + map: /Maps/Shuttles/dart.yml + allowed: + - Centcomm + +- type: mapCategories + id: Infiltrator + map: /Maps/Shuttles/infiltrator.yml + allowed: + - Syndicate + +- type: mapCategories + id: Instigator + map: /Maps/Shuttles/ShuttleEvent/instigator.yml + allowed: + - Syndicate + +- type: mapCategories + id: PirateShip + map: /Maps/Shuttles/pirate.yml + allowed: + - Pirate + - Syndicate # it has 2 turret toolboxes for some reason + +- type: mapCategories + id: RoboNeuroticistShip + map: /Maps/Shuttles/roboneuroticist_ship.yml + allowed: + - Syndicate + +- type: mapCategories + id: Striker + map: /Maps/Shuttles/ShuttleEvent/striker.yml + allowed: + - Syndicate + +- type: mapCategories + id: TravelingChinaCuisine + map: /Maps/Shuttles/ShuttleEvent/traveling_china_cuisine.yml + allowed: + - Stamps # Trader stamp + +- type: mapCategories + id: WizardShuttle + map: /Maps/Shuttles/wizard.yml + allowed: + - Wizard + +# Ruins + +- type: mapCategories + id: OldAiSat + map: /Maps/Ruins/old_ai_sat.yml + allowed: + - Centcomm # CC officer's jumpsuit + +- type: mapCategories + id: OldAiSatDV + map: /Maps/_DV/Ruins/old_ai_sat.yml + allowed: + - Centcomm # CC officer's jumpsuit