Key distribution system (#625)

* data restruct

* yay

* Update arenas.yml

* fixes

* auto labeling

* shuffle
This commit is contained in:
Ed
2024-12-03 12:34:07 +03:00
committed by GitHub
parent 7e6e4709c4
commit f6630e1ec9
40 changed files with 1262 additions and 724 deletions

View File

@@ -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<CP14LockGroupPrototype> Group = default;
[DataField]
public bool DeleteOnFailure = true;
}

View File

@@ -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<CP14AbstractKeyComponent, MapInitEvent>(OnMapInit);
}
private void OnMapInit(Entity<CP14AbstractKeyComponent> ent, ref MapInitEvent args)
{
if (!TrySetShape(ent) && ent.Comp.DeleteOnFailure)
QueueDel(ent);
}
private bool TrySetShape(Entity<CP14AbstractKeyComponent> ent)
{
var grid = Transform(ent).GridUid;
if (grid is null)
return false;
if (!TryComp<CP14KeyComponent>(ent, out var key))
return false;
if (!TryComp<StationMemberComponent>(grid.Value, out var member))
return false;
if (!TryComp<CP14StationKeyDistributionComponent>(member.Station, out var distribution))
return false;
var keysList = new List<ProtoId<CP14LockTypePrototype>>(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;
}
}

View File

@@ -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<ProtoId<CP14LockCategoryPrototype>, List<int>> _roundKeyData = new();
private Dictionary<ProtoId<CP14LockTypePrototype>, List<int>> _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<int> GetKeyLockData(ProtoId<CP14LockCategoryPrototype> category)
private List<int> GetKeyLockData(ProtoId<CP14LockTypePrototype> category)
{
if (_roundKeyData.ContainsKey(category))
return _roundKeyData[category];
@@ -79,7 +81,25 @@ public sealed partial class CP14KeyholeGenerationSystem : EntitySystem
return newData;
}
private List<int> GenerateNewUniqueLockData(ProtoId<CP14LockCategoryPrototype> category)
public void SetShape(Entity<CP14KeyComponent> keyEnt, ProtoId<CP14LockTypePrototype> 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<CP14LockComponent> lockEnt, ProtoId<CP14LockTypePrototype> 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<int> GenerateNewUniqueLockData(ProtoId<CP14LockTypePrototype> category)
{
List<int> newKeyData = new();
var categoryData = _proto.Index(category);

View File

@@ -1,19 +0,0 @@
using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.LockKey;
/// <summary>
/// A prototype of the lock category. Need a roundstart mapping to ensure that keys and locks will fit together despite randomization.
/// </summary>
[Prototype("CP14LockCategory")]
public sealed partial class CP14LockCategoryPrototype : IPrototype
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
/// <summary>
/// The number of elements that will be generated for the category.
/// </summary>
[DataField] public int Complexity = 3;
}

View File

@@ -0,0 +1,15 @@
using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.LockKey;
/// <summary>
/// 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).
/// </summary>
[Prototype("CP14LockGroup")]
public sealed partial class CP14LockGroupPrototype : IPrototype
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
}

View File

@@ -0,0 +1,32 @@
using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.LockKey;
/// <summary>
/// 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
/// </summary>
[Prototype("CP14LockType")]
public sealed partial class CP14LockTypePrototype : IPrototype
{
[ViewVariables]
[IdDataField]
public string ID { get; private set; } = default!;
/// <summary>
/// The number of elements that will be generated for the category.
/// </summary>
[DataField]
public int Complexity = 3;
/// <summary>
/// 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).
/// </summary>
[DataField]
public ProtoId<CP14LockGroupPrototype>? Group;
[DataField]
public LocId? Name;
}

View File

@@ -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.
/// </summary>
[DataField]
public ProtoId<CP14LockCategoryPrototype>? AutoGenerateShape = null;
public ProtoId<CP14LockTypePrototype>? AutoGenerateShape = null;
}

View File

@@ -5,10 +5,10 @@ namespace Content.Shared._CP14.LockKey.Components;
/// <summary>
/// A component of a lock that stores its keyhole shape, complexity, and current state.
/// </summary>
[RegisterComponent]
[RegisterComponent, AutoGenerateComponentState]
public sealed partial class CP14LockComponent : Component
{
[DataField]
[DataField, AutoNetworkedField]
public List<int>? 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.
/// </summary>
[DataField]
public ProtoId<CP14LockCategoryPrototype>? AutoGenerateShape = null;
public ProtoId<CP14LockTypePrototype>? AutoGenerateShape = null;
}

View File

@@ -0,0 +1,13 @@
using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.LockKey.Components;
/// <summary>
///
/// </summary>
[RegisterComponent]
public sealed partial class CP14StationKeyDistributionComponent : Component
{
[DataField]
public List<ProtoId<CP14LockTypePrototype>> Keys = new();
}

View File

@@ -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

View File

@@ -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 = Ядро, соединяющее реальный мир с демипланом. Используйте его, чтобы открыть временный проход в другой мир.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
node: CP14WoodenDoorMirrored

View File

@@ -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

View File

@@ -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

View File

@@ -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
- type: CP14LockGroup
id: Alchemist
- type: CP14LockGroup
id: PersonalHouse

View File

@@ -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

View File

@@ -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]
#CP14GuardCommander: [1, 1]
- type: CP14StationKeyDistribution
keys:
- TavernDorms1
- TavernDorms2
- TavernDorms3
- Alchemy1
- Alchemy2
- Blacksmith1
- PersonalHouse1
- PersonalHouse2
- PersonalHouse3
- PersonalHouse4
- PersonalHouse5
- PersonalHouse6
- PersonalHouse7
- PersonalHouse8
- PersonalHouse9
- PersonalHouse10

View File

@@ -14,4 +14,5 @@
- type: startingGear
id: CP14AdventurerGear
equipment:
keys: CP14KeyRingPersonalHouse
belt1: CP14WalletFilledTest

View File

@@ -81,6 +81,9 @@
},
{
"name": "ring-3"
},
{
"name": "vault_key"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

View File

@@ -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