diff --git a/Content.Server/_CP14/LockKey/CP14AbstractKeyComponent.cs b/Content.Server/_CP14/LockKey/CP14AbstractKeyComponent.cs new file mode 100644 index 0000000000..ed2af160e7 --- /dev/null +++ b/Content.Server/_CP14/LockKey/CP14AbstractKeyComponent.cs @@ -0,0 +1,15 @@ + +using Content.Shared._CP14.LockKey; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.LockKey; + +[RegisterComponent] +public sealed partial class CP14AbstractKeyComponent : Component +{ + [DataField(required: true)] + public ProtoId Group = default; + + [DataField] + public bool DeleteOnFailure = true; +} diff --git a/Content.Server/_CP14/LockKey/CP14KeyDistributionSystem.cs b/Content.Server/_CP14/LockKey/CP14KeyDistributionSystem.cs new file mode 100644 index 0000000000..6f444e8f12 --- /dev/null +++ b/Content.Server/_CP14/LockKey/CP14KeyDistributionSystem.cs @@ -0,0 +1,67 @@ +using Content.Server.Station.Events; +using Content.Shared._CP14.LockKey; +using Content.Shared._CP14.LockKey.Components; +using Content.Shared.Station.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Utility; + +namespace Content.Server._CP14.LockKey; + +public sealed partial class CP14KeyDistributionSystem : EntitySystem +{ + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly CP14KeyholeGenerationSystem _keyGeneration = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (!TrySetShape(ent) && ent.Comp.DeleteOnFailure) + QueueDel(ent); + } + + private bool TrySetShape(Entity ent) + { + var grid = Transform(ent).GridUid; + + if (grid is null) + return false; + + if (!TryComp(ent, out var key)) + return false; + + if (!TryComp(grid.Value, out var member)) + return false; + + if (!TryComp(member.Station, out var distribution)) + return false; + + var keysList = new List>(distribution.Keys); + while (keysList.Count > 0) + { + var randomIndex = _random.Next(keysList.Count); + var keyA = keysList[randomIndex]; + + var indexedKey = _proto.Index(keyA); + + if (indexedKey.Group != ent.Comp.Group) + { + keysList.RemoveAt(randomIndex); + continue; + } + + _keyGeneration.SetShape((ent, key), indexedKey); + distribution.Keys.Remove(indexedKey); + return true; + } + + return false; + } +} diff --git a/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs b/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs index a158e15559..5aab8135c1 100644 --- a/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs +++ b/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Server.Labels; using Content.Shared._CP14.LockKey; using Content.Shared._CP14.LockKey.Components; using Content.Shared.Examine; @@ -12,8 +13,9 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly LabelSystem _label = default!; - private Dictionary, List> _roundKeyData = new(); + private Dictionary, List> _roundKeyData = new(); public override void Initialize() { @@ -37,7 +39,7 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem { if (keyEnt.Comp.AutoGenerateShape != null) { - keyEnt.Comp.LockShape = GetKeyLockData(keyEnt.Comp.AutoGenerateShape.Value); + SetShape(keyEnt, keyEnt.Comp.AutoGenerateShape.Value); } } @@ -45,7 +47,7 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem { if (lockEnt.Comp.AutoGenerateShape != null) { - lockEnt.Comp.LockShape = GetKeyLockData(lockEnt.Comp.AutoGenerateShape.Value); + SetShape(lockEnt, lockEnt.Comp.AutoGenerateShape.Value); } } #endregion @@ -69,7 +71,7 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem args.PushMarkup(markup); } - private List GetKeyLockData(ProtoId category) + private List GetKeyLockData(ProtoId category) { if (_roundKeyData.ContainsKey(category)) return _roundKeyData[category]; @@ -79,7 +81,25 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem return newData; } - private List GenerateNewUniqueLockData(ProtoId category) + public void SetShape(Entity keyEnt, ProtoId type) + { + keyEnt.Comp.LockShape = GetKeyLockData(type); + + var indexedType = _proto.Index(type); + if (indexedType.Name is not null) + _label.Label(keyEnt, Loc.GetString(indexedType.Name.Value)); + } + + public void SetShape(Entity lockEnt, ProtoId type) + { + lockEnt.Comp.LockShape = GetKeyLockData(type); + + var indexedType = _proto.Index(type); + if (indexedType.Name is not null) + _label.Label(lockEnt, Loc.GetString(indexedType.Name.Value)); + } + + private List GenerateNewUniqueLockData(ProtoId category) { List newKeyData = new(); var categoryData = _proto.Index(category); diff --git a/Content.Shared/_CP14/LockKey/CP14LockCategoryPrototype.cs b/Content.Shared/_CP14/LockKey/CP14LockCategoryPrototype.cs deleted file mode 100644 index 1e2cbdcfc6..0000000000 --- a/Content.Shared/_CP14/LockKey/CP14LockCategoryPrototype.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.LockKey; - -/// -/// A prototype of the lock category. Need a roundstart mapping to ensure that keys and locks will fit together despite randomization. -/// -[Prototype("CP14LockCategory")] -public sealed partial class CP14LockCategoryPrototype : IPrototype -{ - [ViewVariables] - [IdDataField] - public string ID { get; private set; } = default!; - - /// - /// The number of elements that will be generated for the category. - /// - [DataField] public int Complexity = 3; -} diff --git a/Content.Shared/_CP14/LockKey/CP14LockGroupPrototype.cs b/Content.Shared/_CP14/LockKey/CP14LockGroupPrototype.cs new file mode 100644 index 0000000000..92a5ad9bc8 --- /dev/null +++ b/Content.Shared/_CP14/LockKey/CP14LockGroupPrototype.cs @@ -0,0 +1,15 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.LockKey; + +/// +/// Group Affiliation. Used for “abstract key” mechanics, +/// where the key takes one of the free forms from identical rooms (10 different kinds of tavern rooms for example). +/// +[Prototype("CP14LockGroup")] +public sealed partial class CP14LockGroupPrototype : IPrototype +{ + [ViewVariables] + [IdDataField] + public string ID { get; private set; } = default!; +} diff --git a/Content.Shared/_CP14/LockKey/CP14LockTypePrototype.cs b/Content.Shared/_CP14/LockKey/CP14LockTypePrototype.cs new file mode 100644 index 0000000000..936360c0ab --- /dev/null +++ b/Content.Shared/_CP14/LockKey/CP14LockTypePrototype.cs @@ -0,0 +1,32 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.LockKey; + +/// +/// A lock or key shape, pre-generated at the start of the round. +/// Allows a group of doors and keys to have the same shape within the same round and fit together, +/// but is randomized from round to round +/// +[Prototype("CP14LockType")] +public sealed partial class CP14LockTypePrototype : IPrototype +{ + [ViewVariables] + [IdDataField] + public string ID { get; private set; } = default!; + + /// + /// The number of elements that will be generated for the category. + /// + [DataField] + public int Complexity = 3; + + /// + /// Group Affiliation. Used for “abstract key” mechanics, + /// where the key takes one of the free forms from identical rooms (10 different kinds of tavern rooms for example). + /// + [DataField] + public ProtoId? Group; + + [DataField] + public LocId? Name; +} diff --git a/Content.Shared/_CP14/LockKey/Components/CP14KeyComponent.cs b/Content.Shared/_CP14/LockKey/Components/CP14KeyComponent.cs index ffa4b19f36..e63ff3666b 100644 --- a/Content.Shared/_CP14/LockKey/Components/CP14KeyComponent.cs +++ b/Content.Shared/_CP14/LockKey/Components/CP14KeyComponent.cs @@ -15,5 +15,5 @@ public sealed partial class CP14KeyComponent : Component /// If not null, automatically generates a key for the specified category on initialization. This ensures that the lock will be opened with a key of the same category. /// [DataField] - public ProtoId? AutoGenerateShape = null; + public ProtoId? AutoGenerateShape = null; } diff --git a/Content.Shared/_CP14/LockKey/Components/CP14LockComponent.cs b/Content.Shared/_CP14/LockKey/Components/CP14LockComponent.cs index fe4c9faf38..f33cde7ac3 100644 --- a/Content.Shared/_CP14/LockKey/Components/CP14LockComponent.cs +++ b/Content.Shared/_CP14/LockKey/Components/CP14LockComponent.cs @@ -5,10 +5,10 @@ namespace Content.Shared._CP14.LockKey.Components; /// /// A component of a lock that stores its keyhole shape, complexity, and current state. /// -[RegisterComponent] +[RegisterComponent, AutoGenerateComponentState] public sealed partial class CP14LockComponent : Component { - [DataField] + [DataField, AutoNetworkedField] public List? LockShape = null; [DataField] @@ -30,5 +30,5 @@ public sealed partial class CP14LockComponent : Component /// If not null, automatically generates a lock for the specified category on initialization. This ensures that the lock will be opened with a key of the same category. /// [DataField] - public ProtoId? AutoGenerateShape = null; + public ProtoId? AutoGenerateShape = null; } diff --git a/Content.Shared/_CP14/LockKey/Components/CP14StationKeyDistributionComponent.cs b/Content.Shared/_CP14/LockKey/Components/CP14StationKeyDistributionComponent.cs new file mode 100644 index 0000000000..8a14b6f8ed --- /dev/null +++ b/Content.Shared/_CP14/LockKey/Components/CP14StationKeyDistributionComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.LockKey.Components; + +/// +/// +/// +[RegisterComponent] +public sealed partial class CP14StationKeyDistributionComponent : Component +{ + [DataField] + public List> Keys = new(); +} diff --git a/Resources/Locale/en-US/_CP14/keyring/keyring.ftl b/Resources/Locale/en-US/_CP14/lockKey/keyring.ftl similarity index 100% rename from Resources/Locale/en-US/_CP14/keyring/keyring.ftl rename to Resources/Locale/en-US/_CP14/lockKey/keyring.ftl diff --git a/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl b/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl new file mode 100644 index 0000000000..d72802880b --- /dev/null +++ b/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl @@ -0,0 +1,30 @@ +cp14-lock-shape-bank-entrance = bank hall +cp14-lock-shape-bank-staff = bank offices +cp14-lock-shape-bank-commandant = commandant's house +cp14-lock-shape-bank-safe = bank safes +cp14-lock-shape-bank-vault = bank vault + +cp14-lock-shape-tavern-hall = tavern hall +cp14-lock-shape-tavern-staff = tavern staff quarters +cp14-lock-shape-tavern-dorm1 = tavern room №1 +cp14-lock-shape-tavern-dorm2 = tavern room №2 +cp14-lock-shape-tavern-dorm3 = tavern room №3 +cp14-lock-shape-tavern-dorm4 = tavern room №4 +cp14-lock-shape-tavern-dorm5 = tavern room №5 + +cp14-lock-shape-alchemist1 = alchemist's lab №1 +cp14-lock-shape-alchemist2 = alchemist's lab №2 + +cp14-lock-shape-blacksmith1 = forge №1 +cp14-lock-shape-blacksmith2 = forge №2 + +cp14-lock-shape-personalhouse1 = house №1 +cp14-lock-shape-personalhouse2 = house №2 +cp14-lock-shape-personalhouse3 = house №3 +cp14-lock-shape-personalhouse4 = house №4 +cp14-lock-shape-personalhouse5 = house №5 +cp14-lock-shape-personalhouse6 = house №6 +cp14-lock-shape-personalhouse7 = house №7 +cp14-lock-shape-personalhouse8 = house №8 +cp14-lock-shape-personalhouse9 = house №9 +cp14-lock-shape-personalhouse10 = house №10 \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl b/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl index a9654cccb4..6fdd34dc48 100644 --- a/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl +++ b/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl @@ -75,48 +75,6 @@ ent-CP14BaseKey = ключ ent-CP14BaseLockpick = отмычка .desc = Воровской инструмент, позволяющий с достаточными навыками и сноровкой открыть любой замок. -ent-CP14KeyTavernHall = ключ от таверны - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyTavernStaff = ключ от служебных помещений таверны - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyTavernDorms1 = ключ от комнаты таверны 1 - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyTavernDorms2 = ключ от комнаты таверны 2 - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyTavernDorms3 = ключ от комнаты таверны 3 - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyTavernDorms4 = ключ от комнаты таверны 4 - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyTavernDorms5 = ключ от комнаты таверны 5 - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyAlchemy = ключ алхимика - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyBlacksmith = ключ кузнеца - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyBankEntrance = ключ к входу в банк - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyBankStaff = ключ служебных помещений банка - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyBankVault = ключ банковского хранилища - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyBankCommandantRoom = ключ комнаты комеднанта - .desc = { ent-CP14BaseKey.desc } - -ent-CP14KeyBankSafe = ключ от банковских сейфов - .desc = { ent-CP14BaseKey.desc } - ent-CP14BaseSubdimensionalKey = ключ демиплана .desc = Ядро, соединяющее реальный мир с демипланом. Используйте его, чтобы открыть временный проход в другой мир. diff --git a/Resources/Locale/ru-RU/_CP14/keyring/keyring.ftl b/Resources/Locale/ru-RU/_CP14/lockKey/keyring.ftl similarity index 100% rename from Resources/Locale/ru-RU/_CP14/keyring/keyring.ftl rename to Resources/Locale/ru-RU/_CP14/lockKey/keyring.ftl diff --git a/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl b/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl new file mode 100644 index 0000000000..3a577d03a5 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl @@ -0,0 +1,30 @@ +cp14-lock-shape-bank-entrance = холл банка +cp14-lock-shape-bank-staff = служебные помещения банка +cp14-lock-shape-bank-commandant = дом комменданта +cp14-lock-shape-bank-safe = сейфы банка +cp14-lock-shape-bank-vault = хранилище банка + +cp14-lock-shape-tavern-hall = зал таверны +cp14-lock-shape-tavern-staff = служебные помещения таверны +cp14-lock-shape-tavern-dorm1 = комната таверны №1 +cp14-lock-shape-tavern-dorm2 = комната таверны №2 +cp14-lock-shape-tavern-dorm3 = комната таверны №3 +cp14-lock-shape-tavern-dorm4 = комната таверны №4 +cp14-lock-shape-tavern-dorm5 = комната таверны №5 + +cp14-lock-shape-alchemist1 = лаборатория алхимика №1 +cp14-lock-shape-alchemist2 = лаборатория алхимика №2 + +cp14-lock-shape-blacksmith1 = кузня №1 +cp14-lock-shape-blacksmith2 = кузня №2 + +cp14-lock-shape-personalhouse1 = дом №1 +cp14-lock-shape-personalhouse2 = дом №2 +cp14-lock-shape-personalhouse3 = дом №3 +cp14-lock-shape-personalhouse4 = дом №4 +cp14-lock-shape-personalhouse5 = дом №5 +cp14-lock-shape-personalhouse6 = дом №6 +cp14-lock-shape-personalhouse7 = дом №7 +cp14-lock-shape-personalhouse8 = дом №8 +cp14-lock-shape-personalhouse9 = дом №9 +cp14-lock-shape-personalhouse10 = дом №10 \ No newline at end of file diff --git a/Resources/Maps/_CP14/comoss.yml b/Resources/Maps/_CP14/comoss.yml index 076fc2dc0e..cd26e2ceb7 100644 --- a/Resources/Maps/_CP14/comoss.yml +++ b/Resources/Maps/_CP14/comoss.yml @@ -2696,6 +2696,16 @@ entities: parent: 2 - proto: CP14BarrelWater entities: + - uid: 458 + components: + - type: Transform + pos: -12.476003,-12.072022 + parent: 2 + - uid: 526 + components: + - type: Transform + pos: -13.032779,-11.464826 + parent: 2 - uid: 1369 components: - type: Transform @@ -2825,6 +2835,17 @@ entities: parent: 2 - proto: CP14BaseBroom entities: + - uid: 466 + components: + - type: Transform + pos: -12.288021,-11.065651 + parent: 2 + - uid: 481 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -12.46799,-10.357254 + parent: 2 - uid: 1049 components: - type: Transform @@ -2908,6 +2929,17 @@ entities: parent: 2 - proto: CP14BaseMop entities: + - uid: 491 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.349617,-11.234316 + parent: 2 + - uid: 507 + components: + - type: Transform + pos: -17.405857,-11.256805 + parent: 2 - uid: 1409 components: - type: Transform @@ -56511,7 +56543,7 @@ entities: - type: Transform pos: -18.5,27.5 parent: 2 -- proto: CP14IronDoorBlacksmith +- proto: CP14IronDoorBlacksmith1 entities: - uid: 1101 components: @@ -57859,65 +57891,20 @@ entities: parent: 2 - proto: CP14SpawnPointAdventurer entities: - - uid: 2374 + - uid: 536 components: - type: Transform - pos: -38.5,2.5 + pos: -30.5,-9.5 parent: 2 - - uid: 2382 + - uid: 593 components: - type: Transform - pos: 12.5,14.5 + pos: -32.5,-9.5 parent: 2 - - uid: 2383 + - uid: 690 components: - type: Transform - pos: 21.5,15.5 - parent: 2 - - uid: 2384 - components: - - type: Transform - pos: 7.5,4.5 - parent: 2 - - uid: 2385 - components: - - type: Transform - pos: 7.5,-6.5 - parent: 2 - - uid: 2386 - components: - - type: Transform - pos: 15.5,-5.5 - parent: 2 - - uid: 2387 - components: - - type: Transform - pos: -6.5,-5.5 - parent: 2 - - uid: 2388 - components: - - type: Transform - pos: -6.5,4.5 - parent: 2 - - uid: 2389 - components: - - type: Transform - pos: -15.5,3.5 - parent: 2 - - uid: 2390 - components: - - type: Transform - pos: -16.5,-30.5 - parent: 2 - - uid: 2391 - components: - - type: Transform - pos: -5.5,-41.5 - parent: 2 - - uid: 2392 - components: - - type: Transform - pos: -36.5,2.5 + pos: -34.5,-9.5 parent: 2 - uid: 2393 components: @@ -57931,17 +57918,15 @@ entities: parent: 2 - proto: CP14SpawnPointAlchemist entities: - - uid: 1380 + - uid: 445 components: - type: Transform - rot: 3.141592653589793 rad - pos: -4.5,-33.5 + pos: -38.5,2.5 parent: 2 - - uid: 2148 + - uid: 2390 components: - type: Transform - rot: 3.141592653589793 rad - pos: 16.5,5.5 + pos: -36.5,2.5 parent: 2 - proto: CP14SpawnPointBanker entities: @@ -57971,10 +57956,15 @@ entities: parent: 2 - proto: CP14SpawnPointBlacksmith entities: - - uid: 2321 + - uid: 586 components: - type: Transform - pos: -17.5,-2.5 + pos: -34.5,2.5 + parent: 2 + - uid: 703 + components: + - type: Transform + pos: -32.5,2.5 parent: 2 - proto: CP14SpawnPointCommandant entities: @@ -76400,147 +76390,150 @@ entities: - type: Transform pos: 3.5,14.5 parent: 2 -- proto: CP14WoodenDoor +- proto: CP14WoodenDoorPersonalHouse1 entities: - - uid: 445 - components: - - type: Transform - pos: 7.5,6.5 - parent: 2 - - uid: 458 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 5.5,1.5 - parent: 2 - - uid: 466 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,1.5 - parent: 2 - - uid: 481 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,6.5 - parent: 2 - - uid: 491 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 9.5,-2.5 - parent: 2 - - uid: 507 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-5.5 - parent: 2 - - uid: 526 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -9.5,-7.5 - parent: 2 - - uid: 536 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -5.5,-3.5 - parent: 2 - - uid: 586 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 13.5,-8.5 - parent: 2 - - uid: 593 - components: - - type: Transform - pos: 12.5,-4.5 - parent: 2 - - uid: 690 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -14.5,1.5 - parent: 2 - - uid: 703 - components: - - type: Transform - pos: -16.5,6.5 - parent: 2 - - uid: 735 - components: - - type: Transform - pos: 18.5,11.5 - parent: 2 - - uid: 744 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 19.5,17.5 - parent: 2 - - uid: 753 - components: - - type: Transform - pos: 13.5,11.5 - parent: 2 - - uid: 765 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,16.5 - parent: 2 - - uid: 1316 + - uid: 2383 components: - type: Transform rot: -1.5707963267948966 rad pos: -14.5,-32.5 parent: 2 - - uid: 1348 + - uid: 2384 components: - type: Transform rot: -1.5707963267948966 rad pos: -11.5,-27.5 parent: 2 - - uid: 1517 +- proto: CP14WoodenDoorPersonalHouse10 + entities: + - uid: 2232 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -2.5,-39.5 + rot: 3.141592653589793 rad + pos: 18.5,11.5 parent: 2 - - uid: 1520 + - uid: 2321 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 19.5,17.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse2 + entities: + - uid: 2385 components: - type: Transform rot: -1.5707963267948966 rad pos: -7.5,-39.5 parent: 2 -- proto: CP14WoodenDoorTavernAlchemy + - uid: 2386 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-39.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse3 + entities: + - uid: 1380 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,-3.5 + parent: 2 + - uid: 1517 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-7.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse4 + entities: + - uid: 2146 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,1.5 + parent: 2 + - uid: 2148 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,6.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse5 + entities: + - uid: 753 + components: + - type: Transform + pos: -7.5,6.5 + parent: 2 + - uid: 765 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,1.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse6 + entities: + - uid: 1316 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-2.5 + parent: 2 + - uid: 1348 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-5.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse7 + entities: + - uid: 1520 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,-8.5 + parent: 2 + - uid: 2009 + components: + - type: Transform + pos: 12.5,-4.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse8 + entities: + - uid: 735 + components: + - type: Transform + pos: 7.5,6.5 + parent: 2 + - uid: 744 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,1.5 + parent: 2 +- proto: CP14WoodenDoorPersonalHouse9 + entities: + - uid: 2374 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,11.5 + parent: 2 + - uid: 2382 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,16.5 + parent: 2 +- proto: CP14WoodenDoorTavernAlchemy1 entities: - uid: 1292 components: - type: Transform pos: -4.5,-29.5 parent: 2 - - uid: 2009 - components: - - type: Transform - pos: 16.5,6.5 - parent: 2 - - uid: 2146 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 12.5,2.5 - parent: 2 - - uid: 2232 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 17.5,3.5 - parent: 2 - uid: 2259 components: - type: Transform @@ -76553,6 +76546,25 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-34.5 parent: 2 +- proto: CP14WoodenDoorTavernAlchemy2 + entities: + - uid: 2387 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,6.5 + parent: 2 + - uid: 2388 + components: + - type: Transform + pos: 12.5,2.5 + parent: 2 + - uid: 2389 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,3.5 + parent: 2 - proto: CP14WoodenDoorTavernDorms1 entities: - uid: 1134 diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml index a59a8d51a5..b9d95b9d65 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml @@ -5,7 +5,6 @@ components: - type: StorageFill contents: - - id: CP14KeyRingAlchemist - id: HandLabeler #TODO custom cp14 labeler - id: CP14Syringe amount: 2 @@ -43,7 +42,6 @@ components: - type: StorageFill contents: - - id: CP14KeyRingBanker - id: HandLabeler #TODO custom cp14 labeler - id: CP14StampDenied - id: CP14StampApproved @@ -73,7 +71,6 @@ components: - type: StorageFill contents: - - id: CP14KeyRingCommandant - id: HandLabeler #TODO custom cp14 labeler - id: CP14StampDenied - id: CP14StampApproved diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/alchemist.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/alchemist.yml new file mode 100644 index 0000000000..227d1dd270 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/alchemist.yml @@ -0,0 +1,23 @@ +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernAlchemistAbstract + suffix: Abstract Alchemist + components: + - type: CP14AbstractKey + group: Alchemist + +- type: entity + parent: CP14BaseKey + id: CP14KeyAlchemy1 + suffix: Alchemy1 + components: + - type: CP14Key + autoGenerateShape: Alchemy1 + +- type: entity + parent: CP14BaseKey + id: CP14KeyAlchemy2 + suffix: Alchemy2 + components: + - type: CP14Key + autoGenerateShape: Alchemy2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/bank.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/bank.yml new file mode 100644 index 0000000000..4a2fbf894f --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/bank.yml @@ -0,0 +1,48 @@ +- type: entity + parent: CP14BaseKey + id: CP14KeyBankEntrance + suffix: Bank Entrance + components: + - type: CP14Key + autoGenerateShape: BankEntrance + +- type: entity + parent: CP14BaseKey + id: CP14KeyBankStaff + suffix: Bank Staff + components: + - type: CP14Key + autoGenerateShape: BankStaff + +- type: entity + parent: CP14BaseKey + id: CP14KeyBankVault + name: golden key + suffix: Bank Vault + components: + - type: Sprite + layers: + - state: vault_key + map: [ "random" ] + - type: RandomSprite + available: + - random: + vault_key: "" + - type: CP14Key + autoGenerateShape: BankVault + +- type: entity + parent: CP14BaseKey + id: CP14KeyBankCommandantRoom + suffix: Commandant + components: + - type: CP14Key + autoGenerateShape: BankCommandantRoom + +- type: entity + parent: CP14BaseKey + id: CP14KeyBankSafe + suffix: Bank Safes + components: + - type: CP14Key + autoGenerateShape: BankSafe \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/base.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/base.yml new file mode 100644 index 0000000000..f6508692c3 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/base.yml @@ -0,0 +1,59 @@ +- type: entity + parent: BaseItem + id: CP14BaseKey + abstract: true + categories: [ ForkFiltered ] + name: key + description: A small, intricate piece of metal that opens some locks. Don't give it to anyone! + components: + - type: Tag + tags: + - CP14Key + - type: Item + size: Tiny + - type: Sprite + sprite: _CP14/Objects/keys.rsi + layers: + - state: key1 + map: [ "random" ] + - type: RandomSprite + available: + - random: + key1: "" + key2: "" + key3: "" + key4: "" + key5: "" + key6: "" + key7: "" + key8: "" + key9: "" + key10: "" + key11: "" + key12: "" + key13: "" + key14: "" + key15: "" + key16: "" + key17: "" + key18: "" + - type: CP14Key + - type: EmitSoundOnLand + sound: + path: /Audio/_CP14/Items/key_drop.ogg + params: + variation: 0.05 + +- type: entity + parent: BaseItem + id: CP14BaseLockpick + name: lockpick + description: A thief's tool that, with proper skill and skill, allows you to pick any lock. + categories: [ ForkFiltered ] + components: + - type: Item + storedRotation: -90 + - type: Sprite + sprite: _CP14/Objects/keys.rsi + state: lockpick + - type: CP14Lockpick \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/blacksmith.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/blacksmith.yml new file mode 100644 index 0000000000..dfd9428500 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/blacksmith.yml @@ -0,0 +1,15 @@ +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernBlacksmithAbstract + suffix: Abstract Blacksmith + components: + - type: CP14AbstractKey + group: Blacksmith + +- type: entity + parent: CP14BaseKey + id: CP14KeyBlacksmith + suffix: Blacksmith1 + components: + - type: CP14Key + autoGenerateShape: Blacksmith1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/keyrings.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml similarity index 79% rename from Resources/Prototypes/_CP14/Entities/keyrings.yml rename to Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml index e915188602..02e7a2eef7 100644 --- a/Resources/Prototypes/_CP14/Entities/keyrings.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml @@ -46,11 +46,11 @@ contents: - id: CP14KeyTavernHall - id: CP14KeyTavernStaff - - id: CP14KeyTavernDorms1 - - id: CP14KeyTavernDorms2 - - id: CP14KeyTavernDorms3 - - id: CP14KeyTavernDorms4 - - id: CP14KeyTavernDorms5 + - id: CP14KeyTavernDormsAbstract # TODO: Move to main innkeeper + - id: CP14KeyTavernDormsAbstract + - id: CP14KeyTavernDormsAbstract + - id: CP14KeyTavernDormsAbstract + - id: CP14KeyTavernDormsAbstract - type: entity parent: CP14BaseKeyRing @@ -59,7 +59,16 @@ components: - type: StorageFill contents: - - id: CP14KeyBlacksmith + - id: CP14KeyTavernBlacksmithAbstract + +- type: entity + parent: CP14BaseKeyRing + id: CP14KeyRingPersonalHouse + suffix: Personal House + components: + - type: StorageFill + contents: + - id: CP14KeyPersonalHouseAbstract - type: entity parent: CP14BaseKeyRing @@ -68,7 +77,7 @@ components: - type: StorageFill contents: - - id: CP14KeyAlchemy + - id: CP14KeyTavernAlchemistAbstract - type: entity parent: CP14BaseKeyRing diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/personalHouse.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/personalHouse.yml new file mode 100644 index 0000000000..9b0204900e --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/personalHouse.yml @@ -0,0 +1,87 @@ +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouseAbstract + suffix: Abstract Personal house + components: + - type: CP14AbstractKey + group: PersonalHouse + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse1 + suffix: PersonalHouse1 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse1 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse2 + suffix: PersonalHouse2 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse2 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse3 + suffix: PersonalHouse3 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse3 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse4 + suffix: PersonalHouse4 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse4 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse5 + suffix: PersonalHouse5 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse5 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse6 + suffix: PersonalHouse6 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse6 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse7 + suffix: PersonalHouse7 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse7 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse8 + suffix: PersonalHouse8 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse8 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse9 + suffix: PersonalHouse9 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse9 + +- type: entity + parent: CP14BaseKey + id: CP14KeyPersonalHouse10 + suffix: PersonalHouse10 + components: + - type: CP14Key + autoGenerateShape: PersonalHouse10 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/tavern.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/tavern.yml new file mode 100644 index 0000000000..207e28bc5d --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/tavern.yml @@ -0,0 +1,63 @@ +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernHall + suffix: Tavern Hall + components: + - type: CP14Key + autoGenerateShape: TavernHall + +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernStaff + suffix: Tavern Staff + components: + - type: CP14Key + autoGenerateShape: TavernStaff + +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernDormsAbstract + suffix: Abstract Tavern Dorms + components: + - type: CP14AbstractKey + group: TavernDorms + +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernDorms1 + suffix: Tavern Dorms 1 + components: + - type: CP14Key + autoGenerateShape: TavernDorms1 + +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernDorms2 + suffix: Tavern Dorms 2 + components: + - type: CP14Key + autoGenerateShape: TavernDorms2 + +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernDorms3 + suffix: Tavern Dorms 3 + components: + - type: CP14Key + autoGenerateShape: TavernDorms3 + +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernDorms4 + suffix: Tavern Dorms 4 + components: + - type: CP14Key + autoGenerateShape: TavernDorms4 + +- type: entity + parent: CP14BaseKey + id: CP14KeyTavernDorms5 + suffix: Tavern Dorms 5 + components: + - type: CP14Key + autoGenerateShape: TavernDorms5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/alchemist.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/alchemist.yml new file mode 100644 index 0000000000..b8de4b1485 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/alchemist.yml @@ -0,0 +1,35 @@ +# Wooden + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernAlchemy1 + suffix: Alchemy 1 + components: + - type: CP14Lock + autoGenerateShape: Alchemy1 + - type: Lock + locked: true + +- type: entity + parent: + - CP14WoodenDoorTavernAlchemy1 + - CP14WoodenDoorMirrored + id: CP14WoodenDoorTavernAlchemyMirrored1 + suffix: Alchemy 1, Mirrored + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernAlchemy2 + suffix: Alchemy 2 + components: + - type: CP14Lock + autoGenerateShape: Alchemy2 + - type: Lock + locked: true + +- type: entity + parent: + - CP14WoodenDoorTavernAlchemy2 + - CP14WoodenDoorMirrored + id: CP14WoodenDoorTavernAlchemyMirrored2 + suffix: Alchemy 2, Mirrored \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/bank.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/bank.yml new file mode 100644 index 0000000000..ae42b5c3f9 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/bank.yml @@ -0,0 +1,75 @@ +# Iron + +- type: entity + parent: CP14IronDoor + id: CP14IronDoorBankStaff + suffix: Bank Staff + components: + - type: CP14Lock + autoGenerateShape: BankStaff + - type: Lock + locked: true + +- type: entity + parent: + - CP14IronDoorBankStaff + - CP14IronDoorMirrored + id: CP14IronDoorMirroredBankStaff + suffix: Bank Staff, Mirrored + +- type: entity + parent: CP14IronDoor + id: CP14IronDoorBankVault + suffix: Bank Vault + components: + - type: CP14Lock + autoGenerateShape: BankVault + - type: Lock + locked: true + +- type: entity + parent: + - CP14IronDoorBankVault + - CP14IronDoorMirrored + id: CP14IronDoorMirroredBankVault + suffix: Bank Vault, Mirrored + + +- type: entity + parent: CP14IronDoor + id: CP14IronDoorBankSafe + suffix: Bank Safe + components: + - type: CP14Lock + autoGenerateShape: BankSafe + - type: Lock + locked: true + +- type: entity + parent: CP14IronDoor + id: CP14IronDoorBankCommandantRoom + suffix: Bank Commandant room + components: + - type: CP14Lock + autoGenerateShape: BankCommandantRoom + - type: Lock + locked: true + +# Iron Windowed + +- type: entity + parent: CP14IronDoorWindowed + id: CP14IronDoorWindowedBankEntrance + suffix: Bank Entrance + components: + - type: CP14Lock + autoGenerateShape: BankEntrance + - type: Lock + locked: true + +- type: entity + parent: + - CP14IronDoorWindowedBankEntrance + - CP14IronDoorWindowedMirrored + id: CP14IronDoorWindowedMirroredBankEntrance + suffix: Bank Entrance, Mirrored \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/blacksmith.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/blacksmith.yml new file mode 100644 index 0000000000..a398642933 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/blacksmith.yml @@ -0,0 +1,33 @@ +- type: entity + parent: CP14IronDoor + id: CP14IronDoorBlacksmith1 + suffix: Blacksmith + components: + - type: CP14Lock + autoGenerateShape: Blacksmith1 + - type: Lock + locked: true + +- type: entity + parent: + - CP14IronDoorBlacksmith1 + - CP14IronDoorMirrored + id: CP14IronDoorMirroredBlacksmith1 + suffix: Blacksmith, Mirrored + +- type: entity + parent: CP14IronDoor + id: CP14IronDoorBlacksmith2 + suffix: Blacksmith + components: + - type: CP14Lock + autoGenerateShape: Blacksmith2 + - type: Lock + locked: true + +- type: entity + parent: + - CP14IronDoorBlacksmith2 + - CP14IronDoorMirrored + id: CP14IronDoorMirroredBlacksmith2 + suffix: Blacksmith, Mirrored \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/personalHouse.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/personalHouse.yml new file mode 100644 index 0000000000..342695187d --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/personalHouse.yml @@ -0,0 +1,101 @@ +# Wooden + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse1 + suffix: PersonalHouse1 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse1 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse2 + suffix: PersonalHouse2 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse2 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse3 + suffix: PersonalHouse3 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse3 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse4 + suffix: PersonalHouse4 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse4 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse5 + suffix: PersonalHouse5 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse5 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse6 + suffix: PersonalHouse6 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse6 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse7 + suffix: PersonalHouse7 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse7 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse8 + suffix: PersonalHouse8 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse8 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse9 + suffix: PersonalHouse9 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse9 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorPersonalHouse10 + suffix: PersonalHouse10 + components: + - type: CP14Lock + autoGenerateShape: PersonalHouse10 + - type: Lock + locked: true \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/tavern.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/tavern.yml new file mode 100644 index 0000000000..af069702c3 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/tavern.yml @@ -0,0 +1,87 @@ +# Wooden + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernStaff + suffix: Tavern Staff + components: + - type: CP14Lock + autoGenerateShape: TavernStaff + - type: Lock + locked: true + +- type: entity + parent: + - CP14WoodenDoorTavernStaff + - CP14WoodenDoorMirrored + id: CP14WoodenDoorTavernStaffMirrored + suffix: Tavern Staff, Mirrored + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernDorms1 + suffix: Tavern Dorms 1 + components: + - type: CP14Lock + autoGenerateShape: TavernDorms1 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernDorms2 + suffix: Tavern Dorms 2 + components: + - type: CP14Lock + autoGenerateShape: TavernDorms2 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernDorms3 + suffix: Tavern Dorms 3 + components: + - type: CP14Lock + autoGenerateShape: TavernDorms3 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernDorms4 + suffix: Tavern Dorms 4 + components: + - type: CP14Lock + autoGenerateShape: TavernDorms4 + - type: Lock + locked: true + +- type: entity + parent: CP14WoodenDoor + id: CP14WoodenDoorTavernDorms5 + suffix: Tavern Dorms 5 + components: + - type: CP14Lock + autoGenerateShape: TavernDorms5 + - type: Lock + locked: true + +# Wooden windowed + +- type: entity + parent: CP14WoodenDoorWindowed + id: CP14WoodenDoorWindowedTavernHall + suffix: Tavern Hall + components: + - type: CP14Lock + autoGenerateShape: TavernHall + - type: Lock + locked: true + +- type: entity + parent: + - CP14WoodenDoorWindowedTavernHall + - CP14WoodenDoorWindowedMirrored + id: CP14WoodenDoorTavernHallMirrored + suffix: Tavern Hall, Mirrored \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors.yml index 68863a1722..b62ecc136b 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors.yml @@ -42,80 +42,3 @@ #- type: Construction # graph: CP14WoodenDoor # node: CP14WoodenDoorMirrored - -#Blacksmith - -- type: entity - parent: CP14IronDoor - id: CP14IronDoorBlacksmith - suffix: Blacksmith - components: - - type: CP14Lock - autoGenerateShape: Blacksmith - - type: Lock - locked: true - -- type: entity - parent: - - CP14IronDoorBlacksmith - - CP14IronDoorMirrored - id: CP14IronDoorMirroredBlacksmith - suffix: Blacksmith, Mirrored - -# Bank - -- type: entity - parent: CP14IronDoor - id: CP14IronDoorBankStaff - suffix: Bank Staff - components: - - type: CP14Lock - autoGenerateShape: BankStaff - - type: Lock - locked: true - -- type: entity - parent: - - CP14IronDoorBankStaff - - CP14IronDoorMirrored - id: CP14IronDoorMirroredBankStaff - suffix: Bank Staff, Mirrored - - -- type: entity - parent: CP14IronDoor - id: CP14IronDoorBankVault - suffix: Bank Vault - components: - - type: CP14Lock - autoGenerateShape: BankVault - - type: Lock - locked: true - -- type: entity - parent: - - CP14IronDoorBankVault - - CP14IronDoorMirrored - id: CP14IronDoorMirroredBankVault - suffix: Bank Vault, Mirrored - - -- type: entity - parent: CP14IronDoor - id: CP14IronDoorBankSafe - suffix: Bank Safe - components: - - type: CP14Lock - autoGenerateShape: BankSafe - - type: Lock - locked: true - -- type: entity - parent: CP14IronDoor - id: CP14IronDoorBankCommandantRoom - suffix: Bank Commandant room - components: - - type: CP14Lock - autoGenerateShape: BankCommandantRoom - - type: Lock - locked: true \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors_windowed.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors_windowed.yml index 6abbdbf785..2beca49e70 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors_windowed.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/iron_doors_windowed.yml @@ -45,39 +45,3 @@ #- type: Construction # graph: CP14WoodenDoor # node: CP14WoodenDoorMirrored - -# Bank - -- type: entity - parent: CP14IronDoorWindowed - id: CP14IronDoorWindowedBankEntrance - suffix: Bank Entrance - components: - - type: CP14Lock - autoGenerateShape: BankEntrance - - type: Lock - locked: true - -- type: entity - parent: - - CP14IronDoorWindowedBankEntrance - - CP14IronDoorWindowedMirrored - id: CP14IronDoorWindowedMirroredBankEntrance - suffix: Bank Entrance, Mirrored - -- type: entity - parent: CP14IronDoorWindowed - id: CP14IronDoorWindowedBlacksmith - suffix: Blacksmith - components: - - type: CP14Lock - autoGenerateShape: Blacksmith - - type: Lock - locked: true - -- type: entity - parent: - - CP14IronDoorWindowedBlacksmith - - CP14IronDoorWindowedMirrored - id: CP14IronDoorWindowedMirroredBlacksmith - suffix: Blacksmith, Mirrored \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors.yml index bf3a19cd41..a59ec324d2 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors.yml @@ -42,92 +42,4 @@ closedSpriteState: closed_mirrored - type: Construction graph: CP14WoodenDoor - node: CP14WoodenDoorMirrored - -# Tavern - -- type: entity - parent: CP14WoodenDoor - id: CP14WoodenDoorTavernStaff - suffix: Tavern Staff - components: - - type: CP14Lock - autoGenerateShape: TavernStaff - - type: Lock - locked: true - -- type: entity - parent: - - CP14WoodenDoorTavernStaff - - CP14WoodenDoorMirrored - id: CP14WoodenDoorTavernStaffMirrored - suffix: Tavern Staff, Mirrored - -- type: entity - parent: CP14WoodenDoor - id: CP14WoodenDoorTavernDorms1 - suffix: Tavern Dorms 1 - components: - - type: CP14Lock - autoGenerateShape: TavernDorms1 - - type: Lock - locked: true - -- type: entity - parent: CP14WoodenDoor - id: CP14WoodenDoorTavernDorms2 - suffix: Tavern Dorms 2 - components: - - type: CP14Lock - autoGenerateShape: TavernDorms2 - - type: Lock - locked: true - -- type: entity - parent: CP14WoodenDoor - id: CP14WoodenDoorTavernDorms3 - suffix: Tavern Dorms 3 - components: - - type: CP14Lock - autoGenerateShape: TavernDorms3 - - type: Lock - locked: true - -- type: entity - parent: CP14WoodenDoor - id: CP14WoodenDoorTavernDorms4 - suffix: Tavern Dorms 4 - components: - - type: CP14Lock - autoGenerateShape: TavernDorms4 - - type: Lock - locked: true - -- type: entity - parent: CP14WoodenDoor - id: CP14WoodenDoorTavernDorms5 - suffix: Tavern Dorms 5 - components: - - type: CP14Lock - autoGenerateShape: TavernDorms5 - - type: Lock - locked: true - -# Alchemy - -- type: entity - parent: CP14WoodenDoor - id: CP14WoodenDoorTavernAlchemy - suffix: Alchemy - components: - - type: CP14Lock - autoGenerateShape: Alchemy - - type: Lock - locked: true - -- type: entity - parent: - - CP14WoodenDoorTavernAlchemy - - CP14WoodenDoorMirrored - id: CP14WoodenDoorTavernAlchemyMirrored - suffix: Alchemy, Mirrored \ No newline at end of file + node: CP14WoodenDoorMirrored \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors_windowed.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors_windowed.yml index 31d95dc592..67f31a252c 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors_windowed.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/wooden_doors_windowed.yml @@ -46,22 +46,3 @@ - type: Construction graph: CP14WoodenDoor node: CP14WoodenDoorWindowedMirrored - -# Tavern - -- type: entity - parent: CP14WoodenDoorWindowed - id: CP14WoodenDoorWindowedTavernHall - suffix: Tavern Hall - components: - - type: CP14Lock - autoGenerateShape: TavernHall - - type: Lock - locked: true - -- type: entity - parent: - - CP14WoodenDoorWindowedTavernHall - - CP14WoodenDoorWindowedMirrored - id: CP14WoodenDoorTavernHallMirrored - suffix: Tavern Hall, Mirrored \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/keys.yml b/Resources/Prototypes/_CP14/Entities/keys.yml deleted file mode 100644 index d5010407be..0000000000 --- a/Resources/Prototypes/_CP14/Entities/keys.yml +++ /dev/null @@ -1,178 +0,0 @@ -- type: entity - parent: BaseItem - id: CP14BaseKey - abstract: true - categories: [ ForkFiltered ] - name: key - description: A small, intricate piece of iron that opens certain locks. Don't give it to just anyone! - components: - - type: Tag - tags: - - CP14Key - - type: Item - size: Tiny - - type: Sprite - sprite: _CP14/Objects/keys.rsi - - type: CP14Key - autoGenerateShape: Debug - - type: EmitSoundOnLand - sound: - path: /Audio/_CP14/Items/key_drop.ogg - params: - variation: 0.05 - -- type: entity - parent: BaseItem - id: CP14BaseLockpick - name: lockpick - description: A thief's tool that, with proper skill and skill, allows you to pick any lock. - categories: [ ForkFiltered ] - components: - - type: Item - storedRotation: -90 - - type: Sprite - sprite: _CP14/Objects/keys.rsi - state: lockpick - - type: CP14Lockpick - -# Tavern - -- type: entity - parent: CP14BaseKey - id: CP14KeyTavernHall - name: tavern hall key - components: - - type: Sprite - state: key1 - - type: CP14Key - autoGenerateShape: TavernHall - -- type: entity - parent: CP14BaseKey - id: CP14KeyTavernStaff - name: tavern staff key - components: - - type: Sprite - state: key2 - - type: CP14Key - autoGenerateShape: TavernStaff - -- type: entity - parent: CP14BaseKey - id: CP14KeyTavernDorms1 - name: tavern room 1 key - components: - - type: Sprite - state: key3 - - type: CP14Key - autoGenerateShape: TavernDorms1 - -- type: entity - parent: CP14BaseKey - id: CP14KeyTavernDorms2 - name: tavern room 2 key - components: - - type: Sprite - state: key4 - - type: CP14Key - autoGenerateShape: TavernDorms2 - -- type: entity - parent: CP14BaseKey - id: CP14KeyTavernDorms3 - name: tavern room 3 key - components: - - type: Sprite - state: key5 - - type: CP14Key - autoGenerateShape: TavernDorms3 - -- type: entity - parent: CP14BaseKey - id: CP14KeyTavernDorms4 - name: tavern room 4 key - components: - - type: Sprite - state: key6 - - type: CP14Key - autoGenerateShape: TavernDorms4 - -- type: entity - parent: CP14BaseKey - id: CP14KeyTavernDorms5 - name: tavern room 5 key - components: - - type: Sprite - state: key7 - - type: CP14Key - autoGenerateShape: TavernDorms5 - -- type: entity - parent: CP14BaseKey - id: CP14KeyAlchemy - name: alchemist key - components: - - type: Sprite - state: key8 - - type: CP14Key - autoGenerateShape: Alchemy - -- type: entity - parent: CP14BaseKey - id: CP14KeyBlacksmith - name: blacksmith key - components: - - type: Sprite - state: key8 - - type: CP14Key - autoGenerateShape: Blacksmith - -- type: entity - parent: CP14BaseKey - id: CP14KeyBankEntrance - name: bank entrance key - components: - - type: Sprite - state: key9 - - type: CP14Key - autoGenerateShape: BankEntrance - -- type: entity - parent: CP14BaseKey - id: CP14KeyBankStaff - name: bank staff key - components: - - type: Sprite - state: key10 - - type: CP14Key - autoGenerateShape: BankStaff - -- type: entity - parent: CP14BaseKey - id: CP14KeyBankVault - name: bank vault key - components: - - type: Sprite - state: key11 - - type: CP14Key - autoGenerateShape: BankVault - -- type: entity - parent: CP14BaseKey - id: CP14KeyBankCommandantRoom - name: bank commandant room key - components: - - type: Sprite - state: key11 - - type: CP14Key - autoGenerateShape: BankCommandantRoom - -- type: entity - parent: CP14BaseKey - id: CP14KeyBankSafe - name: bank safe key - components: - - type: Sprite - state: key12 - - type: CP14Key - autoGenerateShape: BankSafe \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/LockCategories/LockCategory.yml b/Resources/Prototypes/_CP14/LockCategories/LockCategory.yml index ef177bf919..070e7be9f5 100644 --- a/Resources/Prototypes/_CP14/LockCategories/LockCategory.yml +++ b/Resources/Prototypes/_CP14/LockCategories/LockCategory.yml @@ -1,66 +1,11 @@ -- type: CP14LockCategory - id: Debug - complexity: 10 +- type: CP14LockGroup + id: TavernDorms -# Bank - -- type: CP14LockCategory - id: BankEntrance - complexity: 3 - -- type: CP14LockCategory - id: BankStaff - complexity: 5 - -- type: CP14LockCategory - id: BankVault - complexity: 7 - -- type: CP14LockCategory - id: BankCommandantRoom - complexity: 7 - -- type: CP14LockCategory - id: BankSafe - complexity: 5 - -# Tavern - -- type: CP14LockCategory - id: TavernHall - complexity: 3 - -- type: CP14LockCategory - id: TavernStaff - complexity: 5 - - -- type: CP14LockCategory - id: TavernDorms1 - complexity: 3 - -- type: CP14LockCategory - id: TavernDorms2 - complexity: 3 - -- type: CP14LockCategory - id: TavernDorms3 - complexity: 3 - -- type: CP14LockCategory - id: TavernDorms4 - complexity: 3 - -- type: CP14LockCategory - id: TavernDorms5 - complexity: 3 - -# Mercenary - -- type: CP14LockCategory - id: Alchemy - complexity: 5 - -- type: CP14LockCategory +- type: CP14LockGroup id: Blacksmith - complexity: 5 \ No newline at end of file + +- type: CP14LockGroup + id: Alchemist + +- type: CP14LockGroup + id: PersonalHouse \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml b/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml new file mode 100644 index 0000000000..c487d21fc4 --- /dev/null +++ b/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml @@ -0,0 +1,156 @@ +# Bank + +- type: CP14LockType + id: BankEntrance + complexity: 3 + name: cp14-lock-shape-bank-entrance + +- type: CP14LockType + id: BankStaff + complexity: 4 + name: cp14-lock-shape-bank-staff + +- type: CP14LockType + id: BankCommandantRoom + complexity: 5 + name: cp14-lock-shape-bank-commandant + +- type: CP14LockType + id: BankSafe + complexity: 6 + name: cp14-lock-shape-bank-safe + +- type: CP14LockType + id: BankVault + complexity: 7 + name: cp14-lock-shape-bank-vault + +# Tavern + +- type: CP14LockType + id: TavernHall + complexity: 3 + name: cp14-lock-shape-tavern-hall + +- type: CP14LockType + id: TavernStaff + complexity: 4 + name: cp14-lock-shape-tavern-staff + +- type: CP14LockType + id: TavernDorms1 + group: TavernDorms + complexity: 3 + name: cp14-lock-shape-tavern-dorm1 + +- type: CP14LockType + id: TavernDorms2 + group: TavernDorms + complexity: 3 + name: cp14-lock-shape-tavern-dorm2 + +- type: CP14LockType + id: TavernDorms3 + group: TavernDorms + complexity: 3 + name: cp14-lock-shape-tavern-dorm3 + +- type: CP14LockType + id: TavernDorms4 + group: TavernDorms + complexity: 3 + name: cp14-lock-shape-tavern-dorm4 + +- type: CP14LockType + id: TavernDorms5 + group: TavernDorms + complexity: 3 + name: cp14-lock-shape-tavern-dorm5 + +# Mercenary + +- type: CP14LockType + id: Alchemy1 + group: Alchemist + complexity: 4 + name: cp14-lock-shape-alchemist1 + +- type: CP14LockType + id: Alchemy2 + group: Alchemist + complexity: 4 + name: cp14-lock-shape-alchemist2 + +- type: CP14LockType + id: Blacksmith1 + group: Blacksmith + complexity: 4 + name: cp14-lock-shape-blacksmith1 + +- type: CP14LockType + id: Blacksmith2 + group: Blacksmith + complexity: 4 + name: cp14-lock-shape-blacksmith2 + +# Personal house + +- type: CP14LockType + id: PersonalHouse1 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse1 + +- type: CP14LockType + id: PersonalHouse2 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse2 + +- type: CP14LockType + id: PersonalHouse3 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse3 + +- type: CP14LockType + id: PersonalHouse4 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse4 + +- type: CP14LockType + id: PersonalHouse5 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse5 + +- type: CP14LockType + id: PersonalHouse6 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse6 + +- type: CP14LockType + id: PersonalHouse7 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse7 + +- type: CP14LockType + id: PersonalHouse8 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse8 + +- type: CP14LockType + id: PersonalHouse9 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse9 + +- type: CP14LockType + id: PersonalHouse10 + group: PersonalHouse + complexity: 3 + name: cp14-lock-shape-personalhouse10 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Maps/arenas.yml b/Resources/Prototypes/_CP14/Maps/arenas.yml index 8da1d2ddf2..06699e8c6f 100644 --- a/Resources/Prototypes/_CP14/Maps/arenas.yml +++ b/Resources/Prototypes/_CP14/Maps/arenas.yml @@ -58,8 +58,26 @@ availableJobs: CP14Adventurer: [ -1, -1 ] CP14Alchemist: [ 2, 4 ] - CP14Blacksmith: [ 1, 1 ] + CP14Blacksmith: [ 1, 2 ] CP14Innkeeper: [ 3, 4 ] CP14Commandant: [1, 1] CP14Banker: [3, 4] - #CP14GuardCommander: [1, 1] \ No newline at end of file + #CP14GuardCommander: [1, 1] + - type: CP14StationKeyDistribution + keys: + - TavernDorms1 + - TavernDorms2 + - TavernDorms3 + - Alchemy1 + - Alchemy2 + - Blacksmith1 + - PersonalHouse1 + - PersonalHouse2 + - PersonalHouse3 + - PersonalHouse4 + - PersonalHouse5 + - PersonalHouse6 + - PersonalHouse7 + - PersonalHouse8 + - PersonalHouse9 + - PersonalHouse10 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml index a944a4417a..44781e8d85 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml @@ -14,4 +14,5 @@ - type: startingGear id: CP14AdventurerGear equipment: + keys: CP14KeyRingPersonalHouse belt1: CP14WalletFilledTest \ No newline at end of file diff --git a/Resources/Textures/_CP14/Objects/keys.rsi/meta.json b/Resources/Textures/_CP14/Objects/keys.rsi/meta.json index 28796a771d..45576eb7bd 100644 --- a/Resources/Textures/_CP14/Objects/keys.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/keys.rsi/meta.json @@ -81,6 +81,9 @@ }, { "name": "ring-3" + }, + { + "name": "vault_key" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Objects/keys.rsi/vault_key.png b/Resources/Textures/_CP14/Objects/keys.rsi/vault_key.png new file mode 100644 index 0000000000..2992388edb Binary files /dev/null and b/Resources/Textures/_CP14/Objects/keys.rsi/vault_key.png differ diff --git a/Resources/migration.yml b/Resources/migration.yml index 9e268bf8d9..2d9df7b053 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -51,8 +51,8 @@ CP14WoodDoorTavernDorms2Opened: CP14WoodenDoorTavernDorms2 CP14WoodDoorTavernDorms3Opened: CP14WoodenDoorTavernDorms3 CP14WoodDoorTavernDorms4Opened: CP14WoodenDoorTavernDorms5 CP14WoodDoorTavernDorms5Opened: CP14WoodenDoorTavernDorms4 -CP14WoodDoorTavernAlchemy: CP14WoodenDoorTavernAlchemy -CP14WoodDoorTavernAlchemy5Opened: CP14WoodenDoorTavernAlchemy +CP14WoodDoorTavernAlchemy: CP14WoodenDoorTavernAlchemy1 +CP14WoodDoorTavernAlchemy5Opened: CP14WoodenDoorTavernAlchemy1 CP14WoodenDoorOpened: CP14WoodenDoor CP14CuttingBoard: null @@ -63,7 +63,7 @@ CP14WoodenDoorTavernDorms2Locked: CP14WoodenDoorTavernDorms2 CP14WoodenDoorTavernDorms3Locked: CP14WoodenDoorTavernDorms3 CP14WoodenDoorTavernDorms4Locked: CP14WoodenDoorTavernDorms4 CP14WoodenDoorTavernDorms5Locked: CP14WoodenDoorTavernDorms5 -CP14WoodenDoorTavernAlchemyLocked: CP14WoodenDoorTavernAlchemy +CP14WoodenDoorTavernAlchemyLocked: CP14WoodenDoorTavernAlchemy1 #2024-09-24 CP14WallpaperPink30: CP14WallpaperPurple @@ -169,6 +169,14 @@ CP14BaseSword: CP14ModularIronSword CP14BaseShovel: CP14ModularIronShovel CP14BasePickaxe: CP14ModularIronPickaxe +#2024-02-12 +CP14WoodenDoorTavernAlchemy: CP14WoodenDoorTavernAlchemy1 +CP14WoodenDoorTavernAlchemyMirrored: CP14WoodenDoorTavernAlchemyMirrored1 +CP14IronDoorBlacksmith: CP14IronDoorBlacksmith1 +CP14IronDoorMirroredBlacksmith: CP14IronDoorMirroredBlacksmith1 +CP14IronDoorWindowedBlacksmith: CP14IronDoorBlacksmith1 +CP14IronDoorWindowedMirroredBlacksmith: CP14IronDoorMirroredBlacksmith1 + # <---> CrystallEdge migration zone end