Guildmaster YML implementation + Clothing pack (#832)

* banker clothing resprite

* dinazewwr

* commandant cape resprite

* guildmaster cloak

* Guildmaster loadout

* guildmaster job icon

* key locks work

* map update

* guildmaster keys

* guildmaster stamp

* update guildmaster house

* track demiplanes

* player death track

* localization

* guildmaster objective

* Update empire_orders.yml

* fix

* fix map
This commit is contained in:
Ed
2025-02-01 17:52:01 +03:00
committed by GitHub
parent ca2e378c8a
commit 8e1d310a8e
91 changed files with 2463 additions and 1147 deletions

View File

@@ -2,11 +2,9 @@ using System.Linq;
using System.Threading;
using Content.Server._CP14.Demiplane.Components;
using Content.Server._CP14.Demiplane.Jobs;
using Content.Server._CP14.RoundEnd;
using Content.Server.GameTicking;
using Content.Shared._CP14.Demiplane.Components;
using Content.Shared._CP14.Demiplane.Prototypes;
using Content.Shared._CP14.MagicManacostModify;
using Content.Shared.Examine;
using Content.Shared.Interaction.Events;
using Content.Shared.Verbs;
@@ -158,6 +156,8 @@ public sealed partial class CP14DemiplaneSystem
SpawnRandomDemiplane(generator.Comp.Location.Value, generator.Comp.SelectedModifiers, out var demiplane, out var mapId);
_statistic.TrackAdd(generator.Comp.Statistic, 1);
//Admin log needed
EnsureComp<CP14DemiplaneDestroyWithoutStabilizationComponent>(demiplane);

View File

@@ -81,10 +81,20 @@ public sealed partial class CP14DemiplaneSystem
if (TryTeleportOutDemiplane(demiplane, uid))
{
if (!safe)
{
var ev = new CP14DemiplaneUnsafeExit();
RaiseLocalEvent(uid, ev);
_body.GibBody(uid);
}
}
}
QueueDel(demiplane);
}
}
public sealed class CP14DemiplaneUnsafeExit : EntityEventArgs
{
}

View File

@@ -1,3 +1,4 @@
using Content.Server._CP14.RoundStatistic;
using Content.Server.Flash;
using Content.Server.Procedural;
using Content.Shared._CP14.Demiplane;
@@ -25,6 +26,7 @@ public sealed partial class CP14DemiplaneSystem : CP14SharedDemiplaneSystem
[Dependency] private readonly FlashSystem _flash = default!;
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly SharedPopupSystem _popup = default!;
[Dependency] private readonly CP14RoundStatTrackerSystem _statistic = default!;
public override void Initialize()
{

View File

@@ -1,4 +1,5 @@
using Content.Shared._CP14.Demiplane.Prototypes;
using Content.Shared._CP14.RoundStatistic;
using Robust.Shared.Prototypes;
namespace Content.Server._CP14.Demiplane.Components;
@@ -23,4 +24,7 @@ public sealed partial class CP14DemiplaneGeneratorDataComponent : Component
[DataField(required: true)]
public Dictionary<ProtoId<CP14DemiplaneModifierCategoryPrototype>, float> Limits;
[DataField]
public ProtoId<CP14RoundStatTrackerPrototype> Statistic = "DemiplaneOpen";
}

View File

@@ -0,0 +1,26 @@
using Content.Server._CP14.Objectives.Systems;
using Content.Shared._CP14.RoundStatistic;
using Content.Shared.Destructible.Thresholds;
using Robust.Shared.Prototypes;
using Robust.Shared.Utility;
namespace Content.Server._CP14.Objectives.Components;
[RegisterComponent, Access(typeof(CP14StatisticRangeConditionSystem))]
public sealed partial class CP14StatisticRangeConditionComponent : Component
{
[DataField(required: true)]
public ProtoId<CP14RoundStatTrackerPrototype> Statistic;
[DataField(required: true)]
public MinMax Range;
[DataField(required: true)]
public LocId ObjectiveText;
[DataField(required: true)]
public LocId ObjectiveDescription;
[DataField(required: true)]
public SpriteSpecifier? ObjectiveSprite;
}

View File

@@ -38,5 +38,5 @@ public sealed partial class CP14TownSendConditionComponent : Component
public LocId ObjectiveText;
[DataField(required: true)]
public LocId DescriptionText;
public LocId ObjectiveDescription;
}

View File

@@ -0,0 +1,54 @@
using Content.Server._CP14.Objectives.Components;
using Content.Server._CP14.RoundStatistic;
using Content.Shared.Objectives.Components;
using Content.Shared.Objectives.Systems;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Server._CP14.Objectives.Systems;
public sealed class CP14StatisticRangeConditionSystem : EntitySystem
{
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IPrototypeManager _proto = default!;
[Dependency] private readonly MetaDataSystem _metaData = default!;
[Dependency] private readonly SharedObjectivesSystem _objectives = default!;
[Dependency] private readonly CP14RoundStatTrackerSystem _statistic = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<CP14StatisticRangeConditionComponent, ObjectiveAfterAssignEvent>(OnAfterAssign);
SubscribeLocalEvent<CP14StatisticRangeConditionComponent, ObjectiveGetProgressEvent>(OnGetProgress);
}
private void OnAfterAssign(Entity<CP14StatisticRangeConditionComponent> condition, ref ObjectiveAfterAssignEvent args)
{
var title = Loc.GetString(condition.Comp.ObjectiveText,
("min", condition.Comp.Range.Min),
("max", condition.Comp.Range.Max));
var description = Loc.GetString(condition.Comp.ObjectiveDescription,
("min", condition.Comp.Range.Min),
("max", condition.Comp.Range.Max));
_metaData.SetEntityName(condition.Owner, title, args.Meta);
_metaData.SetEntityDescription(condition.Owner, description, args.Meta);
if (condition.Comp.ObjectiveSprite is not null)
_objectives.SetIcon(condition.Owner, condition.Comp.ObjectiveSprite, args.Objective);
}
private void OnGetProgress(Entity<CP14StatisticRangeConditionComponent> ent, ref ObjectiveGetProgressEvent args)
{
var statValue = _statistic.GetTrack(ent.Comp.Statistic);
if (statValue is null || statValue > ent.Comp.Range.Max || statValue < ent.Comp.Range.Min)
{
args.Progress = 0;
return;
}
args.Progress = 1;
}
}

View File

@@ -26,7 +26,6 @@ public sealed class CP14TownSendConditionSystem : EntitySystem
_stealQuery = GetEntityQuery<StealTargetComponent>();
_stackQuery = GetEntityQuery<StackComponent>();
SubscribeLocalEvent<CP14TownSendConditionComponent, ObjectiveAssignedEvent>(OnAssigned);
SubscribeLocalEvent<CP14TownSendConditionComponent, ObjectiveAfterAssignEvent>(OnAfterAssign);
SubscribeLocalEvent<CP14TownSendConditionComponent, ObjectiveGetProgressEvent>(OnGetProgress);
@@ -72,12 +71,6 @@ public sealed class CP14TownSendConditionSystem : EntitySystem
}
}
private void OnAssigned(Entity<CP14TownSendConditionComponent> condition, ref ObjectiveAssignedEvent args)
{
//TODO: Add ability to create mindfree objectives to Wizden
//condition.Comp.CollectionSize = _random.Next(condition.Comp.MinCollectionSize, condition.Comp.MaxCollectionSize);
}
//Set the visual, name, icon for the objective.
private void OnAfterAssign(Entity<CP14TownSendConditionComponent> condition, ref ObjectiveAfterAssignEvent args)
{
@@ -86,7 +79,7 @@ public sealed class CP14TownSendConditionSystem : EntitySystem
var group = _proto.Index(condition.Comp.CollectGroup);
var title = Loc.GetString(condition.Comp.ObjectiveText, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize));
var description = Loc.GetString(condition.Comp.DescriptionText, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize));
var description = Loc.GetString(condition.Comp.ObjectiveDescription, ("itemName", Loc.GetString(group.Name)), ("count", condition.Comp.CollectionSize));
_metaData.SetEntityName(condition.Owner, title, args.Meta);
_metaData.SetEntityDescription(condition.Owner, description, args.Meta);

View File

@@ -0,0 +1,71 @@
using System.Text;
using Content.Server.GameTicking;
using Content.Shared._CP14.RoundStatistic;
using Content.Shared.GameTicking;
using Robust.Shared.Prototypes;
namespace Content.Server._CP14.RoundStatistic;
public sealed partial class CP14RoundStatTrackerSystem : EntitySystem
{
[Dependency] private readonly IPrototypeManager _proto = default!;
private readonly Dictionary<ProtoId<CP14RoundStatTrackerPrototype>, int> _tracking = new();
public override void Initialize()
{
base.Initialize();
InitializeDemiplaneDeath();
SubscribeLocalEvent<RoundRestartCleanupEvent>(OnRoundReset);
SubscribeLocalEvent<RoundEndTextAppendEvent>(OnRoundEndTextAppend);
ClearStatistic();
}
private void OnRoundReset(RoundRestartCleanupEvent ev)
{
ClearStatistic();
}
private void OnRoundEndTextAppend(RoundEndTextAppendEvent ev)
{
//TODO: Move to separate UI Text block
var sb = new StringBuilder();
sb.Append($"[head=3]{Loc.GetString("cp14-tracker-header")}[/head] \n");
foreach (var pair in _tracking)
{
if (!_proto.TryIndex(pair.Key, out var indexedTracker))
continue;
sb.Append($"- {Loc.GetString(indexedTracker.Text)}: {pair.Value}\n");
}
ev.AddLine(sb.ToString());
}
private void ClearStatistic()
{
_tracking.Clear();
foreach (var statTracker in _proto.EnumeratePrototypes<CP14RoundStatTrackerPrototype>())
{
_tracking.Add(statTracker.ID, 0);
}
}
public void TrackAdd(ProtoId<CP14RoundStatTrackerPrototype> proto, int dif)
{
_tracking[proto] += Math.Max(dif, 0);
}
public int? GetTrack(ProtoId<CP14RoundStatTrackerPrototype> proto)
{
if (!_tracking.TryGetValue(proto, out var stat))
{
Log.Error($"Failed to get round statistic: {proto}");
return null;
}
return stat;
}
}

View File

@@ -0,0 +1,14 @@
using Content.Shared._CP14.RoundStatistic;
using Robust.Shared.Prototypes;
namespace Content.Server._CP14.RoundStatistic.DemiplaneDeath;
/// <summary>
/// Tracks the destruction or full-blown death of this entity.
/// </summary>
[RegisterComponent]
public sealed partial class CP14DeathDemiplaneStatisticComponent : Component
{
[DataField]
public ProtoId<CP14RoundStatTrackerPrototype> Statistic = "DemiplaneDeaths";
}

View File

@@ -0,0 +1,35 @@
using Content.Server._CP14.Demiplane;
using Content.Server._CP14.RoundStatistic.DemiplaneDeath;
using Content.Shared._CP14.Demiplane.Components;
using Content.Shared.GameTicking;
namespace Content.Server._CP14.RoundStatistic;
public sealed partial class CP14RoundStatTrackerSystem
{
private void InitializeDemiplaneDeath()
{
SubscribeLocalEvent<PlayerSpawnCompleteEvent>(OnSpawnComplete);
SubscribeLocalEvent<CP14DeathDemiplaneStatisticComponent, EntityTerminatingEvent>(OnEntityTerminated);
SubscribeLocalEvent<CP14DeathDemiplaneStatisticComponent, CP14DemiplaneUnsafeExit>(OnDemiplaneUnsafeExit);
}
private void OnSpawnComplete(PlayerSpawnCompleteEvent ev)
{
EnsureComp<CP14DeathDemiplaneStatisticComponent>(ev.Mob);
}
private void OnDemiplaneUnsafeExit(Entity<CP14DeathDemiplaneStatisticComponent> ent, ref CP14DemiplaneUnsafeExit args)
{
TrackAdd(ent.Comp.Statistic, 1);
}
//For round remove variants, like gibs or chasm falls
private void OnEntityTerminated(Entity<CP14DeathDemiplaneStatisticComponent> ent, ref EntityTerminatingEvent args)
{
if (!HasComp<CP14DemiplaneComponent>(Transform(ent).MapUid))
return;
TrackAdd(ent.Comp.Statistic, 1);
}
}

View File

@@ -0,0 +1,12 @@
using Robust.Shared.Prototypes;
namespace Content.Shared._CP14.RoundStatistic;
[Prototype("statisticTracker")]
public sealed partial class CP14RoundStatTrackerPrototype : IPrototype
{
[IdDataField] public string ID { get; } = default!;
[DataField(required: true)]
public LocId Text;
}

View File

@@ -42,6 +42,14 @@ cp14-loadout-guard-spells = Guard's spells
cp14-loadout-bank-head = Bank employee hat
cp14-loadout-commandant-head = Commandant's hat
cp14-loadout-commandant-cloak = Commandant's cloak
cp14-loadout-banker-outer = Banker's waistcoat
cp14-loadout-bank-shirt = Bank Employee shirt
cp14-loadout-bank-pants = Bank Employee pants
cp14-loadout-bank-shoes = Bank Employee shoes
# Guildmaster
cp14-loadout-guildmaster-cloak = Guildmaster cloak
cp14-loadout-guildmaster-shirt = Guildmaster shirt
cp14-loadout-guildmaster-pants = Guildmaster pants
cp14-loadout-guildmaster-shoes = Guildmaster shoes

View File

@@ -14,9 +14,11 @@ 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-alchemist3 = alchemist's lab №3
cp14-lock-shape-blacksmith1 = forge №1
cp14-lock-shape-blacksmith2 = forge №2
cp14-lock-shape-blacksmith3 = forge №3
cp14-lock-shape-personalhouse1 = house №1
cp14-lock-shape-personalhouse2 = house №2
@@ -33,9 +35,12 @@ cp14-lock-shape-personalhouse12 = house №12
cp14-lock-shape-personalhouse13 = house №13
cp14-lock-shape-personalhouse14 = house №14
cp14-lock-shape-personalhouse15 = house №15
cp14-lock-shape-personalhouse16 = house №16
cp14-lock-shaper-guard-entrance = barracks, entrance
cp14-lock-shaper-guard-staff = barracks
cp14-lock-shaper-guard-commander = guardhouse
cp14-lock-shaper-guard-weapon-storage = weapons storage
cp14-lock-shape-guildmaster = guildmaster
cp14-lock-shape-guildmaster = guildmaster
cp14-lock-shape-demiplane-crystal = demiplane crystal

View File

@@ -4,4 +4,7 @@ cp14-objective-town-send-title = Extract { $count } { $itemName }
cp14-objective-town-send-desc = Your task is to mine and ship { $count } { $itemName } to the city on a merchant ship.
cp14-objective-bank-earning-title = Accumulate in the vault{ $coins }
cp14-objective-bank-earning-desc = There must be at least{ $coins } in the bank vault. You can use any methods of earning money that do not violate the law.
cp14-objective-bank-earning-desc = There must be at least{ $coins } in the bank vault. You can use any methods of earning money that do not violate the law.
cp14-objective-no-demiplane-death-title = Prevent deaths in the demiplanes
cp14-objective-no-demiplane-death-desc = I need to control the work of the adventurers so they don't die in the demiplanes. No more {$max} deaths!

View File

@@ -3,4 +3,5 @@ cp14-stamp-salary = Intendant of the Guard
cp14-stamp-denied = Denied
cp14-stamp-approved = Approved
cp14-stamp-bank = Commandant
cp14-stamp-guard-commander = Guard commander
cp14-stamp-guard-commander = Guard commander
cp14-stamp-guildmaster = Guildmaster

View File

@@ -0,0 +1,4 @@
cp14-tracker-header = Round statistic:
cp14-tracker-demiplane-open = Demiplanes opened
cp14-tracker-demiplane-deaths = Players died in demiplanes

View File

@@ -44,6 +44,14 @@ cp14-loadout-guard-spells = Заклинания стражи
cp14-loadout-bank-head = Шляпа работника банка
cp14-loadout-commandant-head = Шляпа коменданта
cp14-loadout-commandant-cloak = Накидка коменданта
cp14-loadout-banker-outer = Жилет банкира
cp14-loadout-bank-shirt = Рубашка работника банка
cp14-loadout-bank-pants = Штаны работника банка
cp14-loadout-bank-shoes = Ботинки работника банка
# Guildmaster
cp14-loadout-guildmaster-cloak = Накидка гильдмастера
cp14-loadout-guildmaster-shirt = Рубашка гильдмастера
cp14-loadout-guildmaster-pants = Штаны гильдмастера
cp14-loadout-guildmaster-shoes = Ботинки гильдмастера

View File

@@ -14,9 +14,11 @@ cp14-lock-shape-tavern-dorm5 = комната таверны №5
cp14-lock-shape-alchemist1 = лаборатория алхимика №1
cp14-lock-shape-alchemist2 = лаборатория алхимика №2
cp14-lock-shape-alchemist3 = лаборатория алхимика №3
cp14-lock-shape-blacksmith1 = кузня №1
cp14-lock-shape-blacksmith2 = кузня №2
cp14-lock-shape-blacksmith3 = кузня №3
cp14-lock-shape-personalhouse1 = дом №1
cp14-lock-shape-personalhouse2 = дом №2
@@ -33,9 +35,12 @@ cp14-lock-shape-personalhouse12 = дом №12
cp14-lock-shape-personalhouse13 = дом №13
cp14-lock-shape-personalhouse14 = дом №14
cp14-lock-shape-personalhouse15 = дом №15
cp14-lock-shape-personalhouse16 = дом №16
cp14-lock-shaper-guard-entrance = казармы, вход
cp14-lock-shaper-guard-staff = казармы
cp14-lock-shaper-guard-commander = дом главы стражи
cp14-lock-shaper-guard-weapon-storage = хранилище оружия
cp14-lock-shape-guildmaster = гильдмастер
cp14-lock-shape-guildmaster = гильдмастер
cp14-lock-shape-demiplane-crystal = кристалл демиплана

View File

@@ -4,4 +4,7 @@ cp14-objective-town-send-title = Добыть { $count } { $itemName }
cp14-objective-town-send-desc = Ваша задача - добыть и отправить { $count } { $itemName } в город на торговом корабле.
cp14-objective-bank-earning-title = Накопить в хранилище{ $coins }
cp14-objective-bank-earning-desc = В банковском хранилище должно находиться не меньше{ $coins }. Вы можете использовать любые методы заработка, не нарушающие закон.
cp14-objective-bank-earning-desc = В банковском хранилище должно находиться не меньше{ $coins }. Вы можете использовать любые методы заработка, не нарушающие закон.
cp14-objective-no-demiplane-death-title = Не допустить смертей в демипланах
cp14-objective-no-demiplane-death-desc = Мне нужно контролировать работу авантюристов, чтобы они не погибали в демипланах. Не больше {$max} смертей!

View File

@@ -3,4 +3,5 @@ cp14-stamp-salary = Интендант гвардии
cp14-stamp-denied = Отказано
cp14-stamp-approved = Утверждено
cp14-stamp-bank = Комендант
cp14-stamp-guard-commander = Командир стражи
cp14-stamp-guard-commander = Командир стражи
cp14-stamp-guildmaster = Гильдмастер

View File

@@ -0,0 +1,4 @@
cp14-tracker-header = Статистика раунда:
cp14-tracker-demiplane-open = Открыто демипланов
cp14-tracker-demiplane-deaths = Умерло игроков в демипланах

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -80,6 +80,7 @@
- id: CP14StampDenied
- id: CP14StampApproved
- id: CP14StampCommandant
- id: CP14PaperFolderBlue
- type: entity
parent: CP14SafeVault
@@ -167,4 +168,17 @@
- id: CP14EnergyCrystalSmall
- id: CP14CrystalLampBlueEmpty
- id: CP14StampGuardCommander
- id: CP14BookImperialLawsHandBook
- id: CP14BookImperialLawsHandBook
- type: entity
parent: CP14WoodenCloset
id: CP14WoodenClosetGuildmasterFilled
suffix: Guildmaster, Filled
components:
- type: StorageFill
contents:
- id: CP14StampGuildmaster
- id: HandLabeler #TODO custom cp14 labeler
- id: CP14StampDenied
- id: CP14StampApproved
- id: CP14PaperFolderBlue

View File

@@ -94,4 +94,18 @@
- id: CP14ClothingShirtGuardsChainmailShirtB
prob: 0.7
- id: CP14ClothingCloakGuardCommander
prob: 1
prob: 1
- type: entity
parent: CP14WoodenCabinet
id: CP14WoodenCabinetGuildmaster
suffix: Guildmaster, Filled
components:
- type: StorageFill
contents:
- id: CP14ClothingCloakGuildmasterCape
prob: 1
- id: CP14ClothingShirtGuildmasterVest
prob: 0.6
- id: CP14ClothingShirtGuildmasterVest2
prob: 0.6

View File

@@ -1,12 +1,11 @@
- type: entity
parent:
- CP14ClothingCloakBase
- ClothingSlotBase
id: CP14ClothingCloakCommandantJacket
name: commandant's jacket
description: the colors white and gold tell you that you're looking at a higher power.
id: CP14ClothingCloakCommandantJacket #TODO: Rename from Jacket to Cape
name: commandant's cape
description: The colors white and gold tell you that you're looking at a higher power.
components:
- type: Sprite
sprite: _CP14/Clothing/Cloak/Roles/Bank/commandant_jacket.rsi
sprite: _CP14/Clothing/Cloak/Roles/Bank/commandant_cape.rsi
- type: Clothing
sprite: _CP14/Clothing/Cloak/Roles/Bank/commandant_jacket.rsi
sprite: _CP14/Clothing/Cloak/Roles/Bank/commandant_cape.rsi

View File

@@ -0,0 +1,11 @@
- type: entity
parent:
- CP14ClothingCloakBase
id: CP14ClothingCloakGuildmasterCape
name: guildmaster cape
description: The colors green and gold tell you that you're looking at a higher power.
components:
- type: Sprite
sprite: _CP14/Clothing/Cloak/Roles/Mercenary/guildmaster_cape.rsi
- type: Clothing
sprite: _CP14/Clothing/Cloak/Roles/Mercenary/guildmaster_cape.rsi

View File

@@ -0,0 +1,22 @@
- type: entity
parent:
- ClothingSlotBase
- CP14ClothingOuterClothingBase
id: CP14ClothingOuterClothingBankerWaistCoat
name: "banker's waistcoat"
description: Stylish waistcoat made of expensive leather. A special uniform for bank employees that makes customers feel like beggars.
components:
- type: Sprite
sprite: _CP14/Clothing/OuterClothing/Roles/Bank/vest_banker.rsi
- type: Clothing
sprite: _CP14/Clothing/OuterClothing/Roles/Bank/vest_banker.rsi
- type: entity
parent: CP14ClothingOuterClothingBankerWaistCoat
id: CP14ClothingOuterClothingBankerWaistCoatOpen
name: "open banker's waistcoat"
components:
- type: Sprite
sprite: _CP14/Clothing/OuterClothing/Roles/Bank/vest_banker_open.rsi
- type: Clothing
sprite: _CP14/Clothing/OuterClothing/Roles/Bank/vest_banker_open.rsi

View File

@@ -147,25 +147,6 @@
- type: Clothing
sprite: _CP14/Clothing/Shirt/Roles/General/white_collar.rsi
- type: entity
parent: CP14ClothingShirtBase
id: CP14ClothingShirtCottonWhiteGreenVest
name: cotton white green vest shirt
components:
- type: Sprite
sprite: _CP14/Clothing/Shirt/Roles/General/white_green_vest.rsi
- type: Clothing
sprite: _CP14/Clothing/Shirt/Roles/General/white_green_vest.rsi
- type: entity
parent: CP14ClothingShirtCottonWhiteGreenVest
id: CP14ClothingShirtCottonWhiteGreenVest2
components:
- type: Sprite
sprite: _CP14/Clothing/Shirt/Roles/General/white_green_vest2.rsi
- type: Clothing
sprite: _CP14/Clothing/Shirt/Roles/General/white_green_vest2.rsi
- type: entity
parent: CP14ClothingShirtBase
id: CP14ClothingShirtCottonYellow

View File

@@ -0,0 +1,18 @@
- type: entity
parent: CP14ClothingShirtBase
id: CP14ClothingShirtGuildmasterVest
name: cotton white green vest shirt
components:
- type: Sprite
sprite: _CP14/Clothing/Shirt/Roles/Mercenary/guildmaster_vest.rsi
- type: Clothing
sprite: _CP14/Clothing/Shirt/Roles/Mercenary/guildmaster_vest.rsi
- type: entity
parent: CP14ClothingShirtGuildmasterVest
id: CP14ClothingShirtGuildmasterVest2
components:
- type: Sprite
sprite: _CP14/Clothing/Shirt/Roles/Mercenary/guildmaster_vest2.rsi
- type: Clothing
sprite: _CP14/Clothing/Shirt/Roles/Mercenary/guildmaster_vest2.rsi

View File

@@ -96,8 +96,7 @@
- type: Sprite
layers:
- state: green
- state: adventurer #TODO
color: red
- state: guildmaster
# Artisans

View File

@@ -337,15 +337,24 @@
- map: [ "enum.HumanoidVisualLayers.LArm" ]
- map: [ "enum.HumanoidVisualLayers.RLeg" ]
- map: [ "enum.HumanoidVisualLayers.LLeg" ]
- map: [ "shirt" ]
- map: [ "pants" ]
- shader: StencilClear
sprite: _CP14/Mobs/Species/Human/parts.rsi
state: l_leg
- shader: StencilMask
map: [ "enum.HumanoidVisualLayers.StencilMask" ]
sprite: Mobs/Customization/masking_helpers.rsi
state: unisex_full
visible: false
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
- map: [ "shoes" ]
- map: [ "shirt" ]
- map: [ "pants" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]
- map: [ "gloves" ]
- map: [ "shoes" ]
- map: [ "ears" ]
- map: [ "outerClothing" ]
- map: [ "cloak" ]
- map: [ "eyes" ]
- map: [ "belt1" ]

View File

@@ -132,17 +132,18 @@
sprite: Mobs/Customization/masking_helpers.rsi
state: unisex_full
visible: false
- map: [ "shirt" ]
- map: [ "pants" ]
- map: [ "enum.HumanoidVisualLayers.LFoot" ]
- map: [ "enum.HumanoidVisualLayers.RFoot" ]
- map: [ "shoes" ]
- map: [ "shirt" ]
- map: [ "pants" ]
- map: [ "enum.HumanoidVisualLayers.LHand" ]
- map: [ "enum.HumanoidVisualLayers.RHand" ]
- map: [ "enum.HumanoidVisualLayers.HeadSide" ] # Bark Before clothing
- map: [ "enum.HumanoidVisualLayers.HeadTop" ] # Bark Before clothing
- map: [ "gloves" ]
- map: [ "shoes" ]
- map: [ "ears" ]
- map: [ "outerClothing" ]
- map: [ "cloak" ]
- map: [ "eyes" ]
- map: [ "belt1" ]

View File

@@ -69,4 +69,17 @@
stampedColor: "#436a92"
stampState: "guard_on_paper"
- type: Sprite
state: guard
state: guard
- type: entity
id: CP14StampGuildmaster
parent: CP14StampBase
name: guildmaster stamp
suffix: DO NOT MAP
components:
- type: Stamp
stampedName: cp14-stamp-guildmaster
stampedColor: "#115c41"
stampState: "guildmaster_on_paper"
- type: Sprite
state: guildmaster

View File

@@ -0,0 +1,15 @@
- type: entity
parent: CP14BaseKey
id: CP14KeyGuildmaster
suffix: Guildmaster
components:
- type: CP14Key
autoGenerateShape: Guildmaster
- type: entity
parent: CP14BaseKey
id: CP14KeyDemiplaneCrystal
suffix: Demiplane Crystal
components:
- type: CP14Key
autoGenerateShape: DemiplaneCrystal

View File

@@ -124,3 +124,13 @@
- id: CP14KeyGuard
- id: CP14KeyGuardCommander
#- id: CP14KeyGuardWeaponStorage
- type: entity
parent: CP14BaseKeyRing
id: CP14KeyRingGuildmaster
suffix: Guildmaster
components:
- type: StorageFill
contents:
- id: CP14KeyGuildmaster
- id: CP14KeyDemiplaneCrystal

View File

@@ -89,4 +89,52 @@
suffix: PersonalHouse10
components:
- type: CP14Key
autoGenerateShape: PersonalHouse10
autoGenerateShape: PersonalHouse10
- type: entity
parent: CP14BaseKey
id: CP14KeyPersonalHouse11
suffix: PersonalHouse11
components:
- type: CP14Key
autoGenerateShape: PersonalHouse11
- type: entity
parent: CP14BaseKey
id: CP14KeyPersonalHouse12
suffix: PersonalHouse12
components:
- type: CP14Key
autoGenerateShape: PersonalHouse12
- type: entity
parent: CP14BaseKey
id: CP14KeyPersonalHouse13
suffix: PersonalHouse13
components:
- type: CP14Key
autoGenerateShape: PersonalHouse13
- type: entity
parent: CP14BaseKey
id: CP14KeyPersonalHouse14
suffix: PersonalHouse14
components:
- type: CP14Key
autoGenerateShape: PersonalHouse14
- type: entity
parent: CP14BaseKey
id: CP14KeyPersonalHouse15
suffix: PersonalHouse15
components:
- type: CP14Key
autoGenerateShape: PersonalHouse15
- type: entity
parent: CP14BaseKey
id: CP14KeyPersonalHouse16
suffix: PersonalHouse16
components:
- type: CP14Key
autoGenerateShape: PersonalHouse16

View File

@@ -32,4 +32,21 @@
- CP14WoodenDoorTavernAlchemy2
- CP14WoodenDoorMirrored
id: CP14WoodenDoorTavernAlchemyMirrored2
suffix: Alchemy 2, Mirrored
suffix: Alchemy 2, Mirrored
- type: entity
parent: CP14WoodenDoor
id: CP14WoodenDoorTavernAlchemy3
suffix: Alchemy 3
components:
- type: CP14Lock
autoGenerateShape: Alchemy3
- type: Lock
locked: true
- type: entity
parent:
- CP14WoodenDoorTavernAlchemy3
- CP14WoodenDoorMirrored
id: CP14WoodenDoorTavernAlchemyMirrored3
suffix: Alchemy 3, Mirrored

View File

@@ -30,4 +30,21 @@
- CP14IronDoorBlacksmith2
- CP14IronDoorMirrored
id: CP14IronDoorMirroredBlacksmith2
suffix: Blacksmith 2, Mirrored
suffix: Blacksmith 2, Mirrored
- type: entity
parent: CP14IronDoor
id: CP14IronDoorBlacksmith3
suffix: Blacksmith 3
components:
- type: CP14Lock
autoGenerateShape: Blacksmith3
- type: Lock
locked: true
- type: entity
parent:
- CP14IronDoorBlacksmith3
- CP14IronDoorMirrored
id: CP14IronDoorMirroredBlacksmith3
suffix: Blacksmith 3, Mirrored

View File

@@ -17,5 +17,15 @@
components:
- type: CP14Lock
autoGenerateShape: Guildmaster
- type: Lock
locked: true
- type: entity
parent: CP14FenceIronGrilleGate
id: CP14FenceIronGrilleGateDemiplaneCrystal
suffix: DemiplaneCrystal
components:
- type: CP14Lock
autoGenerateShape: DemiplaneCrystal
- type: Lock
locked: true

View File

@@ -147,5 +147,15 @@
components:
- type: CP14Lock
autoGenerateShape: PersonalHouse15
- type: Lock
locked: true
- type: entity
parent: CP14WoodenDoor
id: CP14WoodenDoorPersonalHouse16
suffix: PersonalHouse16
components:
- type: CP14Lock
autoGenerateShape: PersonalHouse16
- type: Lock
locked: true

View File

@@ -17,9 +17,20 @@
CP14Bank:
- CP14BankEarningObjectiveGroup
- type: CP14PersonalObjectivesRule
departmentObjectives:
CP14Mercenary:
roleObjectives:
CP14Guildmaster:
- CP14GuildmasterNoDemiplaneObjectiveGroup
CP14Adventurer:
- CP14PersonalCurrencyCollectObjectiveGroup
CP14Alchemist:
- CP14PersonalCurrencyCollectObjectiveGroup
CP14Apprentice:
- CP14PersonalCurrencyCollectObjectiveGroup
CP14Blacksmith:
- CP14PersonalCurrencyCollectObjectiveGroup
CP14Innkeeper:
- CP14PersonalCurrencyCollectObjectiveGroup
- type: entity
id: CP14SociopathsRule

View File

@@ -13,29 +13,25 @@
equipment:
head: CP14ClothingHeadBowler
- type: loadoutGroup
id: CP14CommandantHead
name: cp14-loadout-commandant-head
loadouts:
- CP14ClothingHeadBowlerGolden
- type: loadout
id: CP14ClothingHeadBowlerGolden
equipment:
head: CP14ClothingHeadBowlerGolden
# Cloak
# OuterClothing
- type: loadoutGroup
id: CP14CommandantCloak
name: cp14-loadout-commandant-cloak
id: CP14BankOuterClothing
name: cp14-loadout-banker-outer
minLimit: 0
loadouts:
- CP14ClothingCloakCommandantJacket
- CP14ClothingOuterClothingBankerWaistCoat
- CP14ClothingOuterClothingBankerWaistCoatOpen
- type: loadout
id: CP14ClothingCloakCommandantJacket
id: CP14ClothingOuterClothingBankerWaistCoat
equipment:
cloak: CP14ClothingCloakCommandantJacket
outerClothing: CP14ClothingOuterClothingBankerWaistCoat
- type: loadout
id: CP14ClothingOuterClothingBankerWaistCoatOpen
equipment:
outerClothing: CP14ClothingOuterClothingBankerWaistCoatOpen
# Shirt

View File

@@ -0,0 +1,26 @@
# Head
- type: loadoutGroup
id: CP14CommandantHead
name: cp14-loadout-commandant-head
loadouts:
- CP14ClothingHeadBowlerGolden
- type: loadout
id: CP14ClothingHeadBowlerGolden
equipment:
head: CP14ClothingHeadBowlerGolden
# Cloak
- type: loadoutGroup
id: CP14CommandantCloak
name: cp14-loadout-commandant-cloak
loadouts:
- CP14ClothingCloakCommandantJacket
- type: loadout
id: CP14ClothingCloakCommandantJacket
equipment:
cloak: CP14ClothingCloakCommandantJacket

View File

@@ -275,8 +275,6 @@
- CP14ClothingShirtCottonWhiteBrownVest2
- CP14ClothingShirtCottonWhiteBrownVest3
- CP14ClothingShirtCottonWhiteCollar
- CP14ClothingShirtCottonWhiteGreenVest
- CP14ClothingShirtCottonWhiteGreenVest2
- CP14ClothingShirtCottonYellow
- CP14ClothingShirtCottonYellowCollar
@@ -350,16 +348,6 @@
equipment:
shirt: CP14ClothingShirtCottonWhiteCollar
- type: loadout
id: CP14ClothingShirtCottonWhiteGreenVest
equipment:
shirt: CP14ClothingShirtCottonWhiteGreenVest
- type: loadout
id: CP14ClothingShirtCottonWhiteGreenVest2
equipment:
shirt: CP14ClothingShirtCottonWhiteGreenVest2
- type: loadout
id: CP14ClothingShirtCottonYellow
equipment:

View File

@@ -0,0 +1,50 @@
# Head
# Cloak
- type: loadoutGroup
id: CP14GuildmasterCloak
name: cp14-loadout-guildmaster-cloak
loadouts:
- CP14ClothingCloakGuildmasterCape
- type: loadout
id: CP14ClothingCloakGuildmasterCape
equipment:
cloak: CP14ClothingCloakGuildmasterCape
# Shirt
- type: loadoutGroup
id: CP14GuildmasterShirt
name: cp14-loadout-guildmaster-shirt
loadouts:
- CP14ClothingShirtGuildmasterVest
- CP14ClothingShirtGuildmasterVest2
- type: loadout
id: CP14ClothingShirtGuildmasterVest
equipment:
shirt: CP14ClothingShirtGuildmasterVest
- type: loadout
id: CP14ClothingShirtGuildmasterVest2
equipment:
shirt: CP14ClothingShirtGuildmasterVest2
# Pants
- type: loadoutGroup
id: CP14GuildmasterPants
name: cp14-loadout-guildmaster-pants
loadouts:
- CP14ClothingPantsAristocratic
# Shoes
- type: loadoutGroup
id: CP14GuildmasterShoes
name: cp14-loadout-guildmaster-shoes
loadouts:
- CP14ShoesAristocraticBlack

View File

@@ -108,17 +108,31 @@
- CP14CommandantHead
- CP14GeneralEyes
- CP14CommandantCloak
- CP14BankOuterClothing
- CP14BankShirt
- CP14BankPants
- CP14BankShoes
- CP14GeneralBack
- CP14GeneralTrinkets
- type: roleLoadout
id: JobCP14Guildmaster
groups:
- CP14GeneralSpells
- CP14GeneralEyes
- CP14GuildmasterCloak
- CP14GuildmasterShirt
- CP14GuildmasterPants
- CP14GuildmasterShoes
- CP14GeneralBack
- CP14GeneralTrinkets
- type: roleLoadout
id: JobCP14Banker
groups:
- CP14GeneralSpells
- CP14BankHead
- CP14BankOuterClothing
- CP14GeneralEyes
- CP14BankShirt
- CP14BankPants

View File

@@ -67,37 +67,56 @@
complexity: 3
name: cp14-lock-shape-tavern-dorm5
# Mercenary
# Artisans
- type: CP14LockType
id: Alchemy1
group: Alchemist
complexity: 3
complexity: 4
name: cp14-lock-shape-alchemist1
- type: CP14LockType
id: Alchemy2
group: Alchemist
complexity: 3
complexity: 4
name: cp14-lock-shape-alchemist2
- type: CP14LockType
id: Alchemy3
group: Alchemist
complexity: 4
name: cp14-lock-shape-alchemist3
- type: CP14LockType
id: Blacksmith1
group: Blacksmith
complexity: 3
complexity: 4
name: cp14-lock-shape-blacksmith1
- type: CP14LockType
id: Blacksmith2
group: Blacksmith
complexity: 3
complexity: 4
name: cp14-lock-shape-blacksmith2
- type: CP14LockType
id: Blacksmith3
group: Blacksmith
complexity: 4
name: cp14-lock-shape-blacksmith3
# Mercenary
- type: CP14LockType
id: Guildmaster
complexity: 5
name: cp14-lock-shape-guildmaster
- type: CP14LockType
id: DemiplaneCrystal
complexity: 5
name: cp14-lock-shape-demiplane-crystal
# Personal house
- type: CP14LockType
@@ -190,6 +209,12 @@
complexity: 3
name: cp14-lock-shape-personalhouse15
- type: CP14LockType
id: PersonalHouse16
group: PersonalHouse
complexity: 3
name: cp14-lock-shape-personalhouse16
# Guard
- type: CP14LockType

View File

@@ -28,13 +28,18 @@
mapNameTemplate: "Comoss island"
- type: StationJobs
availableJobs:
CP14Apprentice: [ 5, 5 ]
#Mercenary
CP14Guildmaster: [1, 1]
CP14Adventurer: [ -1, -1 ]
#Artisans
CP14Apprentice: [ 5, 5 ]
CP14Alchemist: [ 2, 2 ]
CP14Blacksmith: [ 2, 2 ]
CP14Innkeeper: [ 3, 4 ]
#Bank
CP14Commandant: [1, 1]
CP14Banker: [3, 4]
#Guard
CP14Guard: [8, 8]
CP14GuardCommander: [1, 1]
- type: CP14StationZLevels

View File

@@ -18,7 +18,7 @@
minCollectionSize: 5
maxCollectionSize: 10
objectiveText: cp14-objective-town-send-title
descriptionText: cp14-objective-town-send-desc
objectiveDescription: cp14-objective-town-send-desc
- type: Objective
- type: entity
@@ -87,4 +87,25 @@
id: CP14BankEarningObjectiveGroup
weights:
CP14TownBankEarningObjectiveMedium: 0.6
CP14TownBankEarningObjectiveBig: 0.3
CP14TownBankEarningObjectiveBig: 0.3
# No Demiplane death objective
- type: entity
parent: CP14BaseTownObjective
id: CP14GuildmasterNoDemiplaneDeathObjective
components:
- type: CP14StatisticRangeCondition
statistic: DemiplaneDeaths
range:
min: 0
max: 3 #TODO Adaptive to player count
objectiveText: cp14-objective-no-demiplane-death-title
objectiveDescription: cp14-objective-no-demiplane-death-desc
objectiveSprite:
sprite: /Textures/_CP14/Objects/ModularTools/Blade/Shovel/metall_shovel.rsi
state: tool
- type: weightedRandom
id: CP14GuildmasterNoDemiplaneObjectiveGroup
weights:
CP14GuildmasterNoDemiplaneDeathObjective: 1

View File

@@ -36,4 +36,4 @@
- type: weightedRandom
id: CP14PersonalCurrencyCollectObjectiveGroup
weights:
CP14PersonalCurrencyCollectObjective: 1
CP14PersonalCurrencyCollectObjective: 1

View File

@@ -28,4 +28,4 @@
- CP14EnergyCrystalSmall
equipment:
belt1: CP14WalletFilledTest
keys: CP14KeyRingInnkeeper
keys: CP14KeyRingGuildmaster

View File

@@ -0,0 +1,7 @@
- type: statisticTracker
id: DemiplaneOpen
text: cp14-tracker-demiplane-open
- type: statisticTracker
id: DemiplaneDeaths
text: cp14-tracker-demiplane-deaths

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 644 B

View File

@@ -0,0 +1,18 @@
{
"version": 1,
"license": "CC-BY-SA-4.0",
"copyright": "Created by TheShuEd",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "equipped-CLOAK",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

View File

@@ -0,0 +1,26 @@
{
"version": 1,
"license": "All right reserved",
"copyright": "Created by dinazewwr",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "equipped-OUTERCLOTHING",
"directions": 4
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

View File

@@ -0,0 +1,26 @@
{
"version": 1,
"license": "All right reserved",
"copyright": "Created by dinazewwr",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "equipped-OUTERCLOTHING",
"directions": 4
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 547 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

View File

@@ -1,7 +1,7 @@
{
"version": 1,
"license": "All right reserved",
"copyright": "Created by KBAS5",
"copyright": "Created by dinazewwr",
"size": {
"x": 32,
"y": 32
@@ -13,6 +13,14 @@
{
"name": "equipped-SHIRT",
"directions": 4
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -31,6 +31,9 @@
{
"name": "guard_commander"
},
{
"name": "guildmaster"
},
{
"name": "workman"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

View File

@@ -36,6 +36,9 @@
{
"name": "guard_on_paper"
},
{
"name": "guildmaster_on_paper"
},
{
"name": "denied_on_paper"
},

Binary file not shown.

Before

Width:  |  Height:  |  Size: 303 B

After

Width:  |  Height:  |  Size: 297 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

View File

@@ -18,6 +18,9 @@
},
{
"name": "guard"
},
{
"name": "guildmaster"
}
]
}